While speaking with one of my classmates recently about programming, a few of us were thinking about good ways to do something interesting with programming that could fool us into practicing. One of the other students cut in and started talking about how he got better at Java. He began trying to design pieces of game engines from games he enjoyed. Game design, while scary if you consider the full scope of many triple-A titles back end engines, can be broken down to smaller parts. If put together right, these parts can seriously affect the fun of the games you enjoy, and explain why you don’t enjoy certain games.
Practice Your Game Design
His first point was that to get better, the best method is to simply program. After doing it enough, certain programming features become second nature, and will be reusable in many cases. The biggest issue, though, is finding things that are fun to program.
Starting with a game you enjoy, he said to pick out a feature you like, and try to make it in your chosen programming language. While working with it, you get experience with the language while starting to build an appreciation for what is involved in the creation of that feature in the development of the game design you picked.
Interesting (and Addicting) Features in Popular Games
Some features that are interesting are random loot cycles in games like World of Warcraft and Diablo. This plays off an addictive response that comes from a feature called variable interval and variable ratio systems. People who desire some sort of reward will keep doing an activity that may or may not give that reward This is especially true if they can’t figure out the number of times they need to do it in between rewards. This is what the variable ratio game design system works from. When running dungeons, killing mobs, or raiding in WoW or Diablo, you don’t know when the next piece of loot you can use will drop. However, you do know that it will at some point if you keep playing.
A similar effect is present in Minecraft, which makes the game addictive to the survival players. When mining, you never can tell when the next reward (ore or cave, or whatever you’re looking for) will show up. Something that I’ve found myself is that if you use hacks to show where everything is, the game loses a large portion of its luster. It simply becomes a basic building game design. While many find this to be a fun creative outlet, others simply find it meaningless if you can have everything you want with minimal effort. Moral of the story, rewards are good, random rewards are better.
The variable interval describes why people enjoy the collecting professions in WoW. Players, as they move through the regions, find nodes of ore or herbs pop up, seemingly at random. The only random thing about this (which you know if you use any sort of gathering profession addons) is the amount of time it takes for the nodes to come back. Hence the variable interval system.
Results of Practice
As you dig into more complex game features like combat engines and quest and inventory management, you start using basic features of the programming languages to delve into interesting combinations. Some combos are capable of making practically any feature you set your mind to. There are many resources online that can help you make the features you want in your game design. StackOverflow is a site for programmers to share all sorts of interesting code pieces, as well as ask for help from a large community of programmers of varying experience level. Other resources include manual pages from Microsoft and Java. These can explain how certain libraries and other programming elements can be used.
Finally, once some game design has been explored, play some more games. Think about how the features you enjoy were created. Learn to appreciate the fact that indie and triple-A teams alike are capable of producing games on a five year schedule that seem daunting to a single amateur, or even expert, programmer. Multi-million dollar budgets are reasonable when the scale of some modern games is considered.