Greetings! Welcome to the 5th Galactic Warfare: Rise of Drones milestone! A lot has happened since the last post, so let us begin!
Winter Break & Semester Roadmap
Winter Break
Over Winter Break, I wanted to take time to do several things, but of those I primarily wanted to do two things: research and learn advanced rendering techniques and (potentially) start applying them to a Vulkan ray tracer, and gather materials so I could start recording video dev logs and other content.
On the front of learning advanced rendering techniques, I found a great resource in the book Physically Based Rendering: From Theory To Implementation. I have not gotten all the way through it due to the brevity of my break, but it is a good read! You can read it here!
With regard to gathering video making materials, I have made good progress. I almost have all that I need to record dev logs. I require a few more physical materials and will eventually need to develop video editing skills. If and when I start creating dev log videos I will disclose what resources I have used to learn the process of video editing as well as what software I use.
Semester Roadmap
As with last semester, the first objective of the semester was to design a roadmap for the rest of the semester. What follows is what I created at the beginning of the semester:
Milestone 5
- Collisions tested and fully functioning. Use of an acceleration data structure (binary partitioning, octrees, etc.) to achieve real-time collision detection.
- 3D model suitable to collide with (asteroid, enemy combatant) in-game.
- (OPTIONAL: beginning of a raytracing rendering engine using Vulkan)
Milestone 6
- Physics engine tested and fully functioning. Objects in-game react to collisions in a physically accurate manner.
- 3D model for enemy combatant in-game.
- (OPTIONAL: continuation of a raytracing rendering engine using Vulkan)
Milestone 7
- Implement core game mechanics. This includes shooting, dogfighting, manual and automatic space flight control, and more.
- Implement an animation system for 3D GLTF models.
- Model and/or create additional assets and UI graphics (bullets, menus, etc.).
- (OPTIONAL: convert to a raytracing rendering engine using Vulkan)
Milestone 8 / Final Milestone
- Polish and finish remaining features.
With that prologue finished, I can start telling the story of my first milestone of the year: Milestone 5.
Milestone 5
Milestone 5 began with a rocky start: when I returned back to campus, the two monitors I used for my desktop were broken. Since my desktop was my only development environment at the time, I could not work on my project at all. Due to snowstorms closing the university (and effectively delaying the reception of my replacement monitor) and my replacement monitor malfunctioning, I lost 3 or so weeks of development time. This, while a string of unfortunate circumstances, could have been mitigated if I had prepared for such a case. Since getting my replacement monitor (for my replacement monitor) I have used a sturdy, mobile USB flash drive to carry a current backup of all of my files.
Once I finally booted up my project and looked at my code, I recognized a new problem: my code was unintentionally coupled. After all of my research into rendering backends over Winter Break, I realized that my current code was coupled to the assumption of using OpenGL as a rendering backend. For the flexibility of my future code and systems, I decided to pivot and restructure my code:
Milestone Goals
Programming
- Decouple data structures.
- Decouple game engine infrastructure.
Art
- N/A
Milestone Review
The milestone, with only a few weeks remaining, was moderately successful: I was able to recreate all but one of the basic data structures I use. I was unable to begin decoupling the game engine infrastructure.
One addition to my data-structure-authoring process is a file that contains Unit Tests for each data structure. This helps me stress test each before they are used in the game engine.
Milestone Correction
For the things I was not able to complete this milestone (the DBA data structure and the restructuring of the game engine) I will have to complete them in the next milestone. Since they are critical to the functioning and future success of my game engine, they cannot be avoided. My next milestone will be dedicated to finishing this milestone’s objectives as well as completing the original objectives for the 5th milestone (adding in collisions). In effect, this means that the original roadmap has been delayed by an entire milestone, and content for the final milestone may be modified or lessened.
Thank you for reading this post and joining me for GW:RoD development in 2024! Leave a comment below if you have any comments or questions!