Game engines make creating games a lot easier. The Godot Game Engine is one such engine, and on Februrary 18th (a little less than two months before this proposal) Calvin started working on a 3D game in it (because why not, haha). We plan to expand this game, using some of the animation and visual techniques we’ve learned in the course (details in deliverables).
The major challenges of this project are that the engine is a bit lacking in terms of networking physics. This is because the physics engine for Godot (along with other engines such as Unity) are non-deterministic, so you’d have to send the position/velocity/etc. of each physics object every single frame for it to sync properly, for every object, which is terribly inefficient and also introduces visual jitter due to packet loss/corruption.
To avoid this, for any physics we want to be synced across all players, we need to write the physics ourselves. This poses a lot of work, but a lot of opportunity to learn about physics and the tricks that produce the relatively realistic yet fast physics simulations needed for real-time games.
Additionally, the 3D graphics engine is currently very scant; the current lighting/style is not as developed as we would like. To improve this, we would either need to write shaders or dive into the (mostly) C++ source code and change the rendering engine.
What we currently have (on top of a somewhat working game):
What we hope to deliver:
For the character:
As for performance, of course we can measure framerate of the game to ensure we keep the game playable, but also number of draw calls, function calls, etc. using the Godot profiler (the less, the better).
What we plan to deliver:
It may not be feasible to deliver on all of this, especially physics interactions since we’d essentially be rewriting the physics engine, and procedural/physically based animations in general may take a long time to first figure out how to manipulate meshes in the engine, then to do all the physics/math to get it working.
However, at a baseline we should do networked physics for the player, shaders, procedurally generated environments, and at least a single boss with some procedurally animations. Below is our planned schedule:
Week: