7 ms·
Interactive 3D ASCII scenes
- Jenz 8y agoThis is something out of my wildest game-dev dreams
- khazhou 8y agoVery cool. But feedback in case developer is here: the jumping physics could easily be much smoother and prettier, and the surface feels icy and hard to control.
- guessmyname 8y agoGreat job! I’m amazed. The game reminds me of Monument Valley [1]. [1] https://www.monumentvalleygame.com/ https://www.monumentvalleygame.com/
- nielsbot 8y agoalso Edge Extended https://en.wikipedia.org/wiki/Edge_(video_game) https://en.wikipedia.org/wiki/Edge_(video_game)
- titanix2 8y agoWould be better if it supported arrows in addition to WASD for controls: it is literally unplayable internationally.
- brujoand 8y agoIt does support arrows though. Worked fine for me at least.
- deleted 8y ago[deleted]
- edhelas 8y agoWhy WASD ? A lots of people on the Internet doesn't have a Qwerty keyboard.
- scotty79 8y agoWait. What do you use for PC games by default in those countries?
- brujoand 8y agoYou just remap whatever keys are in that position. For me on Dvorak that would be ",aoe".
- hutattedonmyarm 8y agoWASD is fine in games if you listen for key codes, but not if you're comparing it to the key character
- realusername 8y agoThe keys exactly at the same place, normally it's done automatically by the game.
- valesco 8y agoBig games already have the right bindings, the others have to be configured. Sometimes it is not possible, and we just pass.
- detaro 8y agoIt supports arrow keys?
- aqi 8y agoIt's because I just changed the game to support arrow keys :)
- aliswe 8y agoWhat about mobile users?
- youwishboye 8y ago
- willvarfar 8y agoThe github user gave me hope it would somehow be a python-in-the-browser thing somehow. But I can quell that disappointment and say how cool and exciting this is (if your target gameplaying public is the kind of people who hang out on HN; those who haven't seen a terminal aren't going to grok the graphic style). Its years since I've done a game jam like ludum dare, but I hope some of HN get inspired to enter that kind of thing! Good luck and happy coding!
- daxterspeed 8y agoSince the movement speed is tied to requestAnimationFrame, the speed of the game changes with the update frequency of the user's monitor. Since all my monitors are at 144Hz this game is ridiculously fast for me.
- kakarot 8y agoTo clarify, there's nothing wrong with tying your movement to requestAnimationFrame() and it is in fact encouraged, but you must modulate it by the frame delta.
- giornogiovanna 8y agoThat is only true if you write your own physics. Otherwise, your physics framerate should be fixed, usually at 30FPS. Many physics engines don't support variable timestep, and in the ones that do, it can lead to instability and general weirdness.
- kakarot 8y agoI don't understand how not writing your own physics engine automatically negates what I said. If a developer has implemented a third-party physics engine, they should refer to that engine's documentation.
- giornogiovanna 8y agoTypically physics engines can't be "modulated by the delta" (which I assume means varying the dt when integrating), you just have to tick the physics world multiple times and keep the roundoff for next time. [0] gives a good example of implementing this kind of thing. If you implement your own, you can make dt a parameter instead of a constant, but this is more complicated, and can lead to tunnelling when the framerate is too low. [0]: https://gafferongames.com/post/fix_your_timestep/ https://gafferongames.com/post/fix_your_timestep/
- 8y ago
- leni536 8y agoAbout WASD controls and alternative layouts: apparently JS supports key codes. [1] https://www.w3schools.com/jsref/event_key_keycode.asp https://www.w3schools.com/jsref/event_key_keycode.asp [2] https://keycode.info/ https://keycode.info/ Edit: Apparently it is deprecated: [3] https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEve... [4] https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/which https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEve... Also there doesn't seem to be a way to detect the user's preferred layout before pressing any keys, that would make printing the instructions hard.
- Aardwolf 8y agoThe linked article [3] links to KeyboardEvent.code which is not deprecated and still supports physical layout
- codetrotter 8y ago> Also there doesn't seem to be a way to detect the user's preferred layout before pressing any keys, that would make printing the instructions hard I am using a programmable keyboard that I’ve set up with a Dvorak-based layout. Here: https://configure.ergodox-ez.com/layouts/ENb6/latest/0 https://configure.ergodox-ez.com/layouts/ENb6/latest/0 Games defaulting to WASD are fine as long as they allow changing the keybindings in the game. I prefer that games do not try to detect keyboard layout because they’d probably get it wrong anyway.
- idid 8y agowould love to see how this could transform into a rougelike (or a rougelike with the same aesthetics). really cool job! will poke at the source.
- all2 8y agoInventory, items, enemies, weapons, towns, crafting, destructible levels (could a voxel based system work in ASCII?), ... Someone farther up linked to Monument Valley [0], and that has a really pleasant rotating mechanic so that the player can have more than one view of a level / set-piece. A little wave-collapse [1] function for automated level building. I suppose I could go on. This does fall into the trap of "why don't we just ... ?" which I don't like. But I also like to dream a little.
- j1vms 8y agoNow multiplayer this gem à la agar.io/slither.io and maybe pull in a little revenue through ads.
- venuur 8y agoLooks cool, but I can’t try it out on mobile. Good job regardless!
- big_paps 8y agoThis is crazy cool. How do you create the maps ? After all, they are 3 dimensional not flat !
- miguelmota 8y agoWish it had mobile touch event support to experience it. Looks interesting
- ArtWomb 8y agoMind bogglingly awesome. I was just dreaming about a 3D ASCII engine. But I would have rendered to planes and used billboarding ;)
- deleted 8y ago[deleted]
- fatiherikli 8y agoLove it! Just a note, it is not actually 3D, it is an isometric representation of a 2d scene, as same as Monument Valley. Game devs call it 2.5D :)
- chrisseaton 8y agoWhy doesn't it count as 3D? I seem to be able to move the character in 3 dimensions. Some parts of the floor are higher than others. What else does 3D mean? Could you represent this map using just two components for each point? I don't see how.
- bscphil 8y agoI believe usually "3D" implies that some change of perspective is possible, e.g. by changing the orientation of the camera.
- Someone 8y agoThe libraries that generate(d) such graphics typically only could render such scenes because limiting all edges to the three major axes and discarding perspective (distances on the projection do not get smaller the further the line is from the viewer in the 3D scene) makes it computationally a lot easier to render scenes. To distinguish them from “true 3D” libraries, a name had to be found. 2.5D seemed fitting.
- TOGoS 8y agoIt seems to be a 3D world, projected onto a 2D screen, just like almost every other '3D' game. I think they're nit-picking because they think of isometric projections as being less "3D" than perspective ones.
- sangnoir 8y agoI'm not sure if second level is glitching for me, or if it is supposed to be a 3D representation of a hypercube - traveling in any direction shows more cubes with parts carved out
- starshadowx2 8y agoIt's supposed to be like that, just jump into one of the cubes.
- IvyMike 8y agoReminds me of the old C64 game "Realm of Impossibility" https://www.youtube.com/watch?v=LdGBA0FG7Gk https://www.youtube.com/watch?v=LdGBA0FG7Gk
- luminati 8y agoWoke up this morning feeling quite crappy. Then saw this. All faith in humanity (And the internet) has been restored. Thank you! [On a sidenote: How would one go about learning to build this? Any learning resources on understanding all the math and physics behind this?]
- aqi 8y agoThis was built through incremental edits from a Python proof-of-concept, which you can see here: https://github.com/yeahpython/ascii-renderer/blob/master/funblocks.py https://github.com/yeahpython/ascii-renderer/blob/master/fun... It doesn't have any real physics, but reading through it might help reveal how the rendering works. For the physics, I'm basically colliding against a grid of tiles, so this might be a helpful tutorial to do the same: https://jonathanwhiting.com/tutorial/collision/ https://jonathanwhiting.com/tutorial/collision/
- luminati 8y agoThank you!