Once I had a very nice conversation with a web developer about the differences between application development and game development. He also did some game programming, web browser games to be specific, which are technically closer to web development than they are to game development. At some point I told him that I couldn’t write application code if my life depended on it. The paradigm of game development is just different. I’m not saying it’s more or less difficult, more or less complex, just different.
Here are some challenges from off the top of my head:
- Packing as much as possible in each frame. Game developers walk the extra mile to have high frame rates. This is not only about graphics. AI and physics are big in this context too. A game loop is this ethereal entity in every non-static game. The game loop needs to be carefully managed or the game will go slow. This has improved dramatically in the past years with nice engines like Unity, Unreal and CryEngine abstracting most of it.
- Animation is another pain. Breaking an animation to start another looks at the very least, odd. This was part of the video game culture in the 80’s but almost completely unacceptable nowadays. The player in me sees many advances in this but I don’t know how they are being managed.
- Managing resources is another pain. How many applications have gigabytes of resources that are dynamically loaded and unloaded from memory? Video games and data applications and some other exceptions. More powerful hardware simply allows more resources to be put in. Managing resources will always be a pain I guess.
- Everything is user experience. Although almost all application development has some degree of understanding of user experience, game development takes it to another level. Everyone in the pipeline is concerned with user experience. From the most dramatic things like design to stuff that doesn’t even cross people’s minds like the animation of a button. Each and everything you see in a game has been carefully crafted to create a well thought user experience. It’s overwhelming how everyone involved in a game contributes to it.