Reach the end of the level by shooting portals every 10 seconds. Passing through a portal will also teleport you 10 seconds back in time, making it possible for your older self to help your current self.
🕹️ How to play
You can shoot portals on the white parts of the walls/floors/ceilings. Passing through a portal will cause your older self (from up to 10 seconds ago) to be played back in the level. Use this to your advantage, as you might need help from your older self with pressing a button.
| ⌨️ |
|---|
| Walk | W A S D |
| Jump | Space |
| Shoot Portal A | Left Mouse Button |
| Shoot Portal B | Right Mouse Button |
| Retry Level | R |
* ⚠️ You might need to click the screen multiple times before entering first person mode!
* ⚠️ Download the
Desktop version for better performance/graphics/less glitches.
🎥 Gameplay video:
If you're stuck in the game, you can watch the video to see how it should be played:
👨💻 Technical details:
| Tool |
|---|
| Game Engine | Own made using C++/OpenGL with Lua Scripting and PBR shading |
| 3D modeling | Blender 3.3 |
| SFX | Audacity |
Game Engine
This game was made using my custom C++/OpenGL engine (
Engine source/
Game source).
This is an Entity-Component-System based engine. Entities and their Components can be created and updated in Lua scripts (through
Sol3, and the engine's automatic Lua API generation) upon specific events or time intervals, while systems programmed in C++ can do the heavy calculations. An example of such a system is the `PhysicsSystem` that links the Physics related components with the actual Physics simulation done by
Bullet and fires Lua events on collisions.
|
|---|
| Screenshot of the Engine with debug visualization and inspection GUI |
The graphics in this specific game are rendered with a PBR renderer that I made using the help of
LearnOpenGL. 3D models & (rigged) animations are imported from Blender through glTF. With the `CustomShader` component I can render certain entities with an alternative shader: The swirl effect on the Portal Guns is a good example of this.
Art/Graphics
Even though the 3D models and shaders were made by me, I opted out of the Graphics category because I downloaded PBR materials from
textures.com.
| | |
|---|
| Render the 'other' side of the portal | Apply fancy swirl shader | Magic |
Audio
All sound effects were downloaded from freesound.org. (
List with attributions)
All feedback is welcome!
Twitter
Comments16
I really appreciate that you made this game using your own engine in c++ and opengl, really rare in these times. Especially it's nice because I didn't know that you can export it to webgl. I hope that you will make more levels :)
@oliver-richmeier Yeah, I agree. I had too little time to design less linear levels, because there were a lot of technical challenges; ranging from visuals to physics. That was a very nice learning experience, though. I'm considering making a post-jam version with better level design :)
@cybek Haha yeah, the fourth level experiences a great lack of proper level design, because when I introduced the bananas to the game, I also introduced some very nasty physics-related bugs that took a lot of time to solve. :dizzy_face:
And yeah, you can export C++/OpenGL games to WebAssembly/WebGL using Emscripten!