I’ve reached a point in my code where I must make a decision.
I’ve been reading alot lately about game engines and shaders and data oriented design rather than object oriented design and all that jazz. And one particular presentation kind of struck a chord. It had nothing to do with game design mind you, but it basically boiled down to design around data not around world description. You can read about it here. It’s an interesting read and he definitely makes some excellent points about the whole data orientation design concept. But that wasn’t my point. The point was, it got me thinking and my train of thought went something like this:
* Design the engine around data.
* Design the game around worlds.
* The discrepancy between the need for a “cutting-edge” game technology and a fun and engaging experience.
* What is more important to me as a developer?
And as a single developer with only two hands and one keyboard I was struck by the fact I’ve never actually thought about it that way. So I mused some more.
A “good” game is more than the sum of its technology. A game must provide an engaging interactive experience, an environment where players learn. This is not to be confused with the term educated. A game does not need to overtly teach players about something. An engaging world is one which players would want learn about and learn of. Challenges teach us as we overcome them and the sense of achievement we feel from both “winning” and learning is sublime.
But this relationship can also be reversed. Without the technology in place to display, update and make the game interactive on computers/consoles there is no game. Games are “driven” by technology, they need it. As a programmer it has been far too easy for me to fall into believing that the code is more important than the world and its rules. But the truth is, it isn’t. Code and the engine technology are companions to the experience of the game [much like sound and graphics] but they are not its masters. The game is not defined by the code which runs it. It is the game itself which should determine what the code should do, what the data should be and what things look like and sound like.
That said games are still bound by the platforms [hardware] which run them and these in turn determine the data and code structure. The only conclusion I can reach from here is that in order to design a game one must be painfully aware of the target platform intricacies as well as the complexities of making beliveable worlds.
This still doesn’t answer my original question however. And I will do so now.
What is more important to me as a developer?
I care about technology and I love programming; I tried to write interfaces and generalize and use all the best software engineering practices I’ve learnt over the years and you know what, a couple of months down the line and I’m still nowhere near a game. I am close to starting a game engine but no game. I don’t want to write a game engine, the Unreal people have done it better than I, the Unity team have done it better and I’m sure out there there are many many game engines. I want to develop and release games… Technology will emerge but the game is the important drive.
So I’m shifting focus.
“Planet Earth is blue and there’s nothing I can do”