Saturday, September 25, 2010
The Game Programmer's Trap
What is a game programmer's trap? Let me first state that generally, game designers are programmers than artists. Programmers are naturally curious about applying mathematics into their games so once they learn something, they eagerly want to make a game or a game feature that implements it. That is what I call a game programmer's trap.
We sometimes forget what games are meant for and become solely interested in showing our technical skills. Games have only one purpose: To create experiences for the player, or to put it into simpler terms, to let the player have fun. Mathematics and code are just means of achieving this goal. Ultimately, the most important thing is the content.
I believe that the designers should let the design of the game drive the code and not vice versa. This may seem obvious, but it's so simple to forget. It should not be the case where you learn ray-casting and you want to make a game that utilizes it. No, it should be the case where you want to make a game, and research on ray-casting when you happen to need it. Showing off technical aspect does not make a game; it makes a technical demo.
I cannot emphasize how important content is to a game. You can have 2 fundamentally same games with different content and still capture the attention of the audience. Look at the newer Mario and Kirby platformer games. The player have to go from point A to point B, so fundamentally, they are exactly the same, but what sets them apart is the content and features. Anyway, the point here is that consumers don't care about your technical showcases. Others might, I might, my classmates might, your future employers might, but a regular salaryman most likely don't.
Of course, this doesn't mean that you should abandon all hope in technicality in games. That's not the point I'm driving at here. Yes, having better technical skills allow more options of games to make. The point I'm driving is NOT to let your curiosity on all things mathematical and technical decide the game and its features.
For example, I have a simple Mario-like game. One day I learnt ray-casting and I want to implement line-of-sight to the game. Take a step back and think it through first. Does the game really need it? Don't do it because you CAN. Do it because you NEED it in the game design. Piling up too many unnecessary features to a game will simply destroy it.
It may seem like a really trivial thing to some. I might seem like I'm stating the obvious of the obvious, but when you are learning or formulating implantations as a programmer, it's hard to ignore it because you just figured it out and you want to put it into practice. Go ahead, do it in a separate tech demo. Just don't add it into the game itself unless the game demands it.