I finally gotten around to posting my work in progress game:
Still a lot of work to be done but I’m excited by the progress I’ve been able to make. It’s been a rash of challenging work with various starts and stops, as well as trying to make time away from my day job.
One of the big changes for me has been moving from the relative safety and familiarity of web development paradigms back to freeform OOP. The code you see running in the video was a morass of state and interdepent C# classes that all talked to each other in really bad ways. It’s been refactored already, and I’m beginning to learn that game development requires you to really think about the bounded contexts of each system the game uses and what those API’s should look like.
As far as using Unity goes, I’m actually quite happy with it. Being able to manipulate game objects so easily and the drop in way you can either use the editor environment or simply stick with code is excellent. I recently was able to tackle some more Unity tutorials at catlikecoding.com and got a feel for profiling the game and writing my own shaders (my experience with the tinyrender series using Rust helped my a great deal here). While I don’t fully understand the math behind 3D engines, I’ve got a rudimentary understanding of how modern 3D engines work, and if I needed to write my own shaders I probably could eventually mash one together.
While it’s technically playable, it’s got a long way to go from being fun. Since this is my first game and to make things easy on myself, I decided to really pick one game mechanic and stick with it rather than try to invent something novel. I’m sticking with the “programmer art” right now and the next steps are to try and get a simplistic AI together (right now the enemy tank just fires randomly at you), and putting an end to end experience together (splash screen, start new game, save games, etc). After that, I’m going to try and distribute to some friends and see what kind of feedback I get.