A little non-Euclidean platformer
Quick links: "making of" blog post · source code
This is my entry for "Stop Waiting For Godot" jam!
I wanted to mess around with portals/non-Euclidean mechanics, and so I did, and you get this little first-person platformer.
Since I, well, spent most of my time messing around with mechanics (and trying to make everything render correctly), some things could be improved (e.g. there's no audio). Perhaps post-jam?
Click download now to get access to the following files:
YAL-nonEuclidean-win.zip 13 MB
Log in with itch.io to leave a comment.
This is pretty interesting. I played through the whole thing. Short and fun!
very cool, as usual !
Nice illusory balls! :) Somehow rotation does not work for me correctly in the Web version, it is constantly rotating, unless I set the rotation speed to 0 (but then I cannot rotate).
Please do not call it non-Euclidean though... non-Euclidean geometry is a completely different thing, portals change the topology, but the geometry remains Euclidean. Non-Euclidean geometry is so strange and cool that gamers will not even notice the strangeness (but they will still notice it is cool). Unfortunately some gamers recently have started confusing people by calling portals non-Euclidean :(
Thank you! It is not geometry (and I don’t call it geometry once), but portals allow for local violations of Euclidean geometry axioms - for example, there can be more than one straight line connecting two points. I was originally intending to do more things with portals (like passing through pairs of different-sized portals to adjust the player’s size or maintaining perceived gravity direction when exiting through a flipped portal), but ran into a lot of issues with getting portals to work well in Godot (see blog post).
As for rotation, hard to tell - ultimately that’s on Godot’s end. So long as you’ve clicked to lock the mouse cursor, should act normal.
Not sure what you mean -- with portals you still get locally Euclidean space -- "locally" usually means "in a sufficiently small neighborhood", and even if you are on a portal, you cannot tell from a small neighborhood, all the points in that small neighborhood will have only one straight line connecting them through the neighborhood, and all the small triangles will add to 180 degrees.
It does not make much sense to say that a game is non-Euclidean just because it violates some Euclid's axioms -- then you could say that any game taking place in a bounded world is non-Euclidean because Euclid's axioms say that lines can be extended infinitely, or any grid-based game, or any game with no space at all, or any 3D game because Euclid's axioms are for planar geometry, etc.
The interesting thing is replacing Euclid's parallel axiom while all the remaining ones remain unchanged. (Likewise when you say "irrational number" you still mean a real number, not anything that is a number and not rational.) Euclid thought that this was impossible (and that the parallel axiom actually follows from the other ones), so did people for 2000 years, and when it was discovered this was possible, this was called "non-Euclidean geometry". Later extended to other things similar in style, but portals do something totally different.
A non-Euclidean geometry is literally just a geometry in which not all Euclidean postulates are honoured. Wikipedia gives "replacing the parallel postulate" as an example, which is defied by this game: we can draw a straight line, have two other non-parallel lines intersect with it at different points, and yet manage to have them not intersect with each other by guiding one of them through a portal. It actually more closely resembles hyperbolic geometry under the right circumstances (i.e. at least one portal is present closer to the given line R than to point P).
Where did you get this from? The Wikipedia page you cite clearly disagrees with you:
His influence has led to the current usage of the term "non-Euclidean geometry" to mean either "hyperbolic" or "elliptic" geometry.
It does not say that "replacing the parallel postulate" is an example (it says this is what you do, and there are also kinematic geometries) and also "replacing the parallel postulate" means that you keep all the other postulates. If other postulates are not honoured either, it is in no way closer to hyperbolic geometry.
And I am still using non-Euclidean geometry wider than the Wikipedia line above, to mean "a geometry which is not Euclidean" like you want, i.e., including three-dimensional geometries like Solv and Nil. They are geometries i.e. they stretch the space, while portals do not stretch the space, they change the topology, not the geometry. For example, all triangles will still have angles which sum to 180 degrees, while in hyperbolic geometry, all have less.
Wow this is awesome!! Portals are so tricky, props for getting this to work in a weekend and making it fun at the same time. :) I love games that feel like they take full advantage of exploring 3D spaces. Looking forward to seeing more if you do continue to work on this idea!
If you have an integrated GPU, pressing F7 to disable shadows can be a good idea.
i dont know if it works but ok
Oh disabling shadows fixed everything for me, wow, thank you.
very cool mechanics. nice game.
I had a fun time playing your game ! I really loved the puzzle halfway in the game in the giant open room where you had to backtrack to see different perspectives from the crystal. Loved it !
the map has a cool fog going on at the bottom and I like the puzzles as well especially how the big space in front of the end was structured.
That was excellent - and thank you for providing a route out of the map at the end so we could run around the outside of the walls to get a good look at the map.
lol I did the same thing!
Wow, nice! I really dig puzzles in impossible maps, and this one is amazing! Are you using the new Godot portals or it's a hand-made implementation? Good job anyway!
Thank you! This is done with Viewports and shader materials (mapping a
SCREEN_UV). Do you have a link to any information about the new portals? I’ve ran into some issues with my approach due to difficulties with implementing efficient culling or timely updating viewports.
Nice solution! Really liked it. If you want to check the new portal implementation, it is already merged into 3.4 branch, and the details can be checked in this PR.
This is such a cool game with the use of invisible stuffs and non-Euclidean environment, nice and interesting game you developed I must say!
Btw, can you help me to playtest my game on this jam, and giving some comment or feedback?
Play in the browser option is available, but downloading desktop executables to play is recommended.
If you can, also help me to test the application is working or not, especially the platforms other than Windows. Will be much appreciated if you do!
Cool puzzle game. I liked the use of portals for some of the game environments, and the use of perspective to see where the invisible doors and platforms were.
I am not sure what "non-Euclidean" should feel like, but the game felt more about using perspective to find invisible paths and doors than about messing with non-Euclidean space.
That was fun! Thanks for sharing
Thank you! “non-Euclidean”-ness comes primarily from portals - like doorways leading the opposite side of the same room.
I suppose it’s slightly less mind-breaking for this game since the possible paths don’t twist too much.
Very nice experiment! I don't think I'd go too far with the invisible platforms idea in a full game, but non-Euclidean mechanics are always cool to mess around with.
Thank you! I was originally planning to focus more on the portals, but I’ve hit some limitations with the approach used (can’t have portals “loop” by looking at themselves). I’ll probably focus more on the interactive elements if I’ll be revisiting this idea later on (and likely remaking the project from scratch since I wasn’t able to achieve the art style that I wanted for it).