Game Design and hacking? Huh, what? What is Adriaan talking about? I thought hacking was something exclusively for programming! Guess what?
I’m a way better hacker than Bas, and I’m proud of it too! I’m talking about hacking in the form of inelegantly approximating a goal. It’s actually the same as in computer science. I quote the almighty wikipedia:
In modern computing terminology, a kludge (or often a “hack”) is a solution to a problem, doing a task, or fixing a system (whether hardware or software) that is inefficient, inelegant, or even unfathomable, but which nevertheless (more or less) works.
What I will try to talk about is roughly the same, only for Game Design. And without the inefficient and unfathomable part :D. This sounds really bad, but I will defend hacking to the bone! Well, to a certain extend.
So, by our definition, hacking is a solution to a (design) problem that is inelegant but that works. For example, we want to make a game in which flamingos need to be fed in a space-zoo on mars. I know, very compelling. In design terms, we could say we are trying to make a “flamingo-feeder-in-space-simulation”. A few questions arise while designing the game: What do flamingos eat? How often? How do flamingos behave on Mars?
Why are we making this game? Our quest is to create a model for flamingo behavior in space, and we’ll try to make it look and feel convincing. For this we need to do some research, and decide how we will model our conclusions.
Now let’s say we got two disagreeing game designers, who both have their own idea of the model. Game designer one, let’s call him Haxxor, wants a model that is unfaithful to the actual behavior of flamingo’s in space. Instead, he wants a model where flamingo’s look like they’re acting naturally in space for the common folk, but on the inside flamingos are just doing something the designer tells them to do. There is no realism, the model is flawed and there is a chance that the flamingos will act unnaturally to a forgotten asset (like they forget to run away from a meteor). It’s ugly. It’s a hack.
Game designer two, he who shall be named professor Prof, wants a model that takes into account the environment, as well as some flamingo behavior formulas he found in his current space-flamingo research. He took a lot of time to research the things he wanted to simulate, and is trying to achieve a model that is as realistic as possible. If it works, it’s extremely elegant and correct, on the inside as well as on the outside. Science always wins!
However, I would probably go for Haxxor’s model. Why on earth would you do that?
One: realism is not the same as fun
I think it’s wrong to design from a perfect mimicking perspective. If you’re making a flamingo-feeding game, you’re probably doing that to capture something fun about feeding flamingos. “The Sims” is a good example. Going to the toilet isn’t fun, but it’s a vital part of what you’re trying to simulate. So they broke the rules: You only need to visit the toilet once a day. That obviously breaks some delicate models of human digestion process, but it just works better. It’s important to put emphasize on the gaming, and not on the model. if Prof’s model makes the player do some boring but important action often, it’s not so good, even though it might be realistic. Maybe the fun part of feeding flamingo’s in space is herding them towards the shrimps, even though they might be very capable of doing that themselves. More realism doesn’t automatically mean more fun.
Two: Elegant, realistic solutions tend to be really complex
Whatever you’re trying to simulate, it’s probably horribly complicated. Objects in the real world tend to work through strange and difficult patterns, and are influenced by many different objects and parameters. If you’re trying to achieve this elegance, you will surely lose a lot of time in studying the subject of simulation. Even worse, you will have to balance those elegant rules to fit your interaction model. A lot of these rule sets are fickle and prone to fall out of balance easily, something that might happen when a player interacts with the model. Effects might become way too strong or could be way too weak. In the Flamingo feeding game, you might want the player to give extra strong food that would make the flamingo more healthy, something realistic. But when you’re messing around with the diet of a living object, you’re messing around with a lot of internal models. What’s in the food? Would it affect the mood of the Flamingo, like chocolate does with people? Would it be poisonous after a certain number of times eaten? It’s way easier to say: “This food makes the flamingo more healthy but poisons him after 3 uses. I don’t know why a flamingo would react that way and I don’t care.”
Three: The inside doesn’t really matter
Contrary to what mothers all over the world tell their children, the inside doesn’t really matter. The inside of the model, or the dynamics of the model, I mean. For me there are just a few rules for designing a model:
– It must be believable. This is often easy because people tend to think in really simple models. We buy crap that isn’t correct at all, like mario falling so far without breaking his legs, or citizens not trying to evade laws all the time in Sim City. It’s the simple model that needs to be achieved. The rest we lable as: “meh, close enough”. The way lighting is simulated in computer games is a good example.
– It must be fun and easy to understand for the player. Duhuuuh. You can hide all the internal private variables and little hacks. Just show the player the information he needs to influence. If a Flamingo eats shrimps, I expect him to get more energy and turn more pink. I don’t care how it happens, as long as it happens.
– It must be easy to implement. If the programmer says:”THAT’S WAY TO HARD TO IMPLEMENT!” you need a simpler model (to program).
– It must be easy to expand and modify! I can’t stress this enough, but you’ll want to balance the crap out of your model someday, and you don’t want a million dependencies because it worked at the time. Make sure your model has few dependencies (For example, by introducing more autonomous variables.).
As long as the outside looks purdy, and it’s easy to tweak it from the outside, you got a champion!
Now don’t get me wrong. Thinking about your models to find elegant solutions is a good thing. But it must be in service of the game. Some things just don’t matter or even make the game worse. Other things might work really well, but might take way to much time to balance, research and to correct. If Haxxor’s model is fun, looks realistic on the outside, is implemented quickly and is easy to tweak and expand, I would only take Prof’s model if the model is more fun and just as clear and easy to tweak and expand. But before he would achieve this state, he probably would’ve lost a lot of time that he could have better spent doing his research on Deep sea-cucumbers for the next game.