Since the last update, I completed celebrating my 20th wedding anniversary with my wife. She may not like me very much, but she sure likes trips, so I predict another 20 years for us!
Meanwhile, Daniel completed his training regiment and started working on integrating the 3D dungeons tech into the main game. In this video we show the start of it actually working!
I think it is fair to say Archmage Rises has lots of tech but little content. With Daniel focused on integrating the tech, this allows Thomas to focus on content. A pattern we hope will continue!
The Training Regiment
For those interested in what it takes to be a solid game dev programmer at Defiance Games here is a synopsis of the post mentioned in the video. It came out of discussion about what has been the most valuable resource as a game dev programmer.
1. C++ for Dummies
Learn real low level-ish coding and Object Oriented Programming principles in the raw. I have read other books that teach OOP, but this is the one that really made it click for me. Suddenly, in a moment, the veil dropped and the power of a whole new world was revealed. From this book I was then able to understand what the heck Stroustrup and Don Box were talking about! Well, almost… :-p
2. Learning C#
There are plenty of C# books out there, but this one by Jesse Liberty is my favorite. It’s funny, it’s thorough, it’s straight to the point: Learn C#. Not learn C# as you build websites, not learn C# as you make games, just straight forward C#. It covers OOP, LINQ, Events, Delegates, Interfaces, Visual Studio, debugging, everything one needs in their toolbelt. Because game dev is hard, you never know what it will throw at you, it’s so important to know the main language well. It is also interesting to see how C# differs from C++ above, what is nicer about it and what it cannot do. C# lies on top of C++ concepts. Like .Dispose() is really just a C++ Destructor.
3. Design Patterns
The difference between a junior (novice or noob) programmer and an experienced (veteran) programmer is the veteran sees problems as similar to other problems he’s solved before. Meaning, the junior sees every problem as completely new and requires it’s own unique solution. And they are paying me to program around here, not to sit and think, so let’s just start coding!
A veteran knows there is probably some version of a generic solution that applies here. Design Patterns are the distillation of decades of programming into a nice set of common solutions to most problems.
I really appreciate how it begins making it’s case with a dungeon generator even though it is targeted to business software devs.
4. Game Programming Patterns
A former EA systems developer decided to write a book about Game design patterns, because games are unique and require their own kinds of solutions. This book takes the knowledge from above and expands and extends on how to apply it to game dev. Best of all is the price: Free! How un-EA of him! Love it and refer to it often.
As a professional you have to write professional code. But what does that mean? My definition of professional is:
Concise code that makes its purpose clear to others
Code that is easy to change or extend
Simple and elegant (as opposed to convoluted and complicated)
Refactoring by Fowler puts developers on the right path to concise elegant code that can be understood by others. He gives rules of thumb for how to sniff out bad code and turn it into good code. Like if you are cutting & pasting, you’re already doing it wrong. Or if you have more than 3 if conditions, you probably have the wrong object model. This sort of stuff isn’t normally taught, just caught.
There you have it. A firm foundation from which to become a game dev programmer. If you have read and understood (grokked) the above, and want to work in the quiet Canadian wilderness, give me a shout. I may have a job for you!