Sponsored By

The Craft of Game Systems: Powerful, Flexible Systems

In this reprinted <a href="http://altdevblogaday.com/">#altdevblogaday</a> piece, Microsoft game designer Daniel Achterman examines what developers should keep in mind when attempting to build powerful and flexible -- yet simple -- game systems.

Daniel Achterman, Blogger

December 2, 2011

10 Min Read
Game Developer logo in a gray background | Game Developer

[In this reprinted #altdevblogaday piece, Microsoft game designer Daniel Achterman examines what developers should keep in mind when attempting to build powerful and flexible -- yet simple -- game systems.] Welcome back! My last article introduced my take on the craft of game system design. I identified the goals I believe designers should strive for, and broke down the component parts of systems. This article covers the process I use for designing powerful and flexible systems for games like RPGs and strategy games, and offers tips for each step. Recap Once again, the goals for system design are based on helping you design a consistent system that lets you create game content efficiently. A system should be:

  • Comprehensible: The parts of the system and how they interact should be understandable.

  • Consistent: Rules and content should function the same in all areas of your game.

  • Predictable: Designers should be able to predict how the system will behave in new circumstances.

  • Extensible: It should be easy to extend the system with new rules and types of content.

  • Elegant: Systems should strive to create rich situations from simple components.

The three components of game systems are parameters, rules, and content. The most intimidating part of designing a game system is getting started. I recommend breaking the task into the following steps:

  1. Choose the parameters that your game uses.

  2. Design rules that are no more complex than necessary to implement your game vision.

  3. Define the progressions for how parameters change throughout the game.

  4. Design content types that are as complex and interesting as you can manage.

  5. Add new parameters, systems, and content types in layers as needed.

Let's walk through each of those steps in more detail. Choosing Game Parameters The golden rule of choosing what parameters to put in your game is to focus on parameters that impact the interesting choices players make. This is why it's so important to start by clarifying your gameplay – it informs the parameters your game should have. If your RPG has different combat styles, make statistics to allow players to define how their character fights. Starcraft has two resource types because when to start mining gas and how heavily is an interesting choice that players make.

  • Start with character statistics. Players view games through the lens of their characters. All other content revolves around how it effects characters, such as items, skill trees, and research bonuses.

  • Start with a small number of basic stats. Create only enough stats for players to define themselves within your intended gameplay. Lots of stats are not necessary for interesting gameplay.

  • Consolidate parameters that don't matter. Don't include something like "Physical Defense" and "Magic Defense" if players aren't meaningfully manipulating them to specialize their character or defeat content. "Defense" will suffice.

  • Be transparent. Ideally, players should be able to figure out what a value does and how it's determined from its name alone. "Armor" and "Strength" are transparent stats to today's players. "Attack Power" and "THAC0" are not.

The Legend of Zelda is a great example of a game with minimal, transparent parameter design. Its only character statistic is "health", which is represented by the simple visual of hearts. A classic example of minimal, transparent parameter design. Making Simple Rules Rules use the values of parameters to determine what happens in your game. To keep your system comprehensible and predictable, design the simplest possible rules that are sufficient to implement your game visions. For instance, many games don't have damage reduction from armor at all. In D&D, armor simply reduces your chance to get hit. The formula for damage reduction from armor in World of Warcraft is much more complex, but it's necessary to make high armor values scale correctly in the end game.

  • Keep formulas basic. Formulas should be more multiplication and addition and less exponents and logarithms. This makes it easy for your players to understand how things work, and makes it easy for you to model how your game works.

  • Don't use a single parameter for too many things. If "Strength" affects both attack damage and health, it becomes more difficult to comprehend its value in different situations, and it will make it more difficult to balance your game, because adjusting one stat will have repercussions in multiple place.

Good rule design is crucial for creating consistent game systems. It's a difficult challenge to create rules that serve all the needs of your game and are still simple and elegant. Creating Parameter Progressions Parameter progressions refer to stat values that tend to change over the course of a game. For instance, character statistics increase and they get gear with higher damage and armor ratings as they level up in RPGs. In strategy games, advanced structures often have increased benefits and costs. Progressions are crucial to game balance. For a game to be balanced, related values should change at similar rates, like a player's power in battle and the strength of the monsters he fights. High level things like "player power" are often aggregates of a number of parameters, like armor, weapon damage, stats, and character stats. Understanding how the progressions of those parameters interact is key to making a game system predictable and extensible.

  • Define the rate that you expect stats to increase as players progress. Some stats may increase naturally as players level up (health, core stats) and others may increase as a result of getting better equipment (armor, weapon damage).

  • Use the simplest necessary progressions and formulas. Values can increase linearly, quadratically, exponentially, or in some horrifying combination. Use the simplest progression that does what you need.

  • Make related values change at similar rates. For instance, monster power and player power should increase at similar rates, as should monster power and monster XP value. Don't make one linear and one exponential, or your game will be unbalanced.

  • Avoid switch statements. If weapon damage increases at one rate from levels 1-10 and a different rate from levels 11-30, it'll be more difficult to make other content match. Resist the desire to make special case solutions, and focus on consistent systems.

Types of Progressions There are many kinds of value progressions with different properties. The most common are linear, polynomial / triangular, and exponential. Linear progressions are the simplest type of progression. Their formula structure is Ax + B, causing the value to increase at a constant rate. They're simple and easy to understand, and I try to use them wherever they're appropriate. One downside is that as x increases, the difference between terms becomes less significant. When you have 10 armor, +5 armor is awesome. When you have 500 armor, +5 armor barely matters. A linear progression The most common type of polynomial progression is the quadratic progression, which has the structure Ax2 + Bx + C. The rate of change increases as x increases, which gives it many uses in games. It shows up commonly because the product of linear progressions is a polynomial progression. So, if the amount of gold monsters drop increases linearly with level, and the number of monsters players need to kill to level up also increases linearly with level, then the amount of gold players earn from monsters each level increases quadratically.. A polynomial progression Exponential progressions have the structure C * Ax. They grow slowly at first, then extremely rapidly. They can be difficult to use because they explode so quickly, but they have some interesting mathematical properties that make them a great fit for certain systems, such as experience progressions. An exponential progression Creating Interesting, Manageable Content Content is where the magic happens. Content includes everything from the weapons that players can find and use to the skills and powers they can learn. The golden rule for content is to design content that is as complex and interesting as you can manage. Content can be simple or complex. For instance, an item bonus that increases the wielder's chance to get a critical hit by 1% is simple. Its value is immediately obvious to the player and is always the same. An item bonus that increases the wielder's attack speed by 50% for 5 seconds after he gets a critical hit is complex. Its value is not immediately obvious, and its value is conditional on the character's chance to land a critical hit.

  • Start simply and add content types iteratively. Don't start with your amazing idea for a blacksmithing system that lets players reassemble weapons from their component parts. You'll just be creating complication at the time you most need simplicity. As you build your game and clarify its needs, add new content types, systems, and parameters, and define how they interact with the basics you have.

  • Ensure you can roughly calculate the value of your simple content. For instance, what is the value of 2 points of strength, or a 1% increase in crit chance? Those are both examples of simple content, and being able to estimate the value of something will simplify tuning and balancing.

  • Decide what options players will have for modifying various statistics. In Diablo II, numerous items affect stats like strength and dexterity, but bonuses to skill levels only appear on a few types of items.

  • Don't allow players to overspecialize. Highly specialized characters can trivialize aspects of your game, so don't give players the ability to do it excessively. In World of Warcraft, all epic items have bonuses to core statistics like agility and stamina, but there are almost no other sources of those statistics, preventing players from stacking them.

It's easy to want to design iteratively, but often very hard to do it. Maybe your team's programmers and artists are busy making the engine and concepting, and you have plenty of time to write a massive a design document that details your entire game. You must resist! Don't design too far ahead of your game. Find a way to prototype your design, whether in a primitive version of the engine or Flash or XNA or with cards, and put that prototype in front of playtesters. It will pay off down the road. Content Complexity And The Cost of Balance The simpler your content is, the more you'll be able to use math and exact process to balance your game. If it's complex or conditional, it can be difficult to use math to calculate its value, and the more playtesting and intuitive hands on tweaking you'll have to do to balance it. Complex or conditional content can offer players deeper, more interesting choices. If your team has the resources and time to dedicate to balance, make your content interestingly diverse and complex. If it's just you, be aware of your limitations and keep your content's complexity in check. Final Word: References I got an e-mail from a reader asking for suggestions for more articles or books about the craft of game systems. I'd like to offer a couple links and put out a call for more: It's my opinion that Mark Rosewater (@Maro254), of Magic: the Gathering, is doing the best game design writing on the internet today. Many of his columns are specific to Magic, but many are extremely thoughtful articles about design in general. As an example, here's part one of a two part series on The 10 Principles of Good Design. Ian Schrieber (@IanSchreiber) wrote an excellent online course about a variety of design concepts. Here's the section on Game Balance. In fact, he wrote an entire course about game balance, at gamebalanceconcepts.wordpress.com. If you have an article to recommend, please add it to the comments, e-mail me, or send me a message on Twitter (@DanielAchterman). [This piece was reprinted from #AltDevBlogADay, a shared blog initiative started by @mike_acton devoted to giving game developers of all disciplines a place to motivate each other to write regularly about their personal game development passions.]

Daily news, dev blogs, and stories from Game Developer straight to your inbox

You May Also Like