[This article has been originally posted on the blog of 1 Weekend Studio: http://www.1weekend-studio.net/kings-maker-game-jam-grande-confiture-de-jeux/ ]
The weekend of the May, 2nd, there was the first edition of a national French Game Jam mixing an online participation and physical gathering in a few cities (Nancy, Nantes, Paris), co-organised by a few jams lover association. The games made during this week end can be found here, however the website is in French, and some games too. This jam was the occasion for the 1 Weekend Studio to work together for the first time since last year, and to verify if we were rusty. The jam theme was Throne. What an inspiring theme! A lot of people started to think Games of Throne, political intrigue, or toilet, as in France, throne is used as a slang word which means toilet. Fast enough, we started to be interested by the throne itself, and asked the question: who made those things? What is a throne maker, and why does (s)he do that?
First we wanted only to focus on how to make a throne concretely but after thinking we wanted more, to add a long term challenge for the player. So, as a lot of games, we went back to Kingdom politics. By making throne to the Kings & Queens, the player is going to influence their nature and provoke changes in their kingdom and their relationships with their neighbors.
That seemed cool but, well, it meant to build a world simulation even a simple one, and that was the challenge we actually were looking for ourselves without assuming it. And that’s the part I’ll focus on now. To spoil the end of the story, we finally skip the actual gameplay of making a throne as we lacked of time but we plan to add it in a post jam version of the game.
How to build a relevant simulation while keeping it simple?
As the Throne Maker the player is going to play will influence how the sovereigns rule, we needed to settle a world in which Kingdoms grow, split, disappear. We decided to base the game simulation on two types of object: Sovereigns and Kingdoms. The first is going to define how the second will evolve.
To make it, we needed strong guideline:
- Limit the number of parameters as low as possible;
- Display all the important information to the player and explicit how they are computed;
- Use realistic data which are going to echo with the common sense of the player, kinda.
The first step was to define the different properties we wanted for each element. The first step was to define the different properties we wanted for each element.
- The Sovereigns needs properties which define how they’ll act;
- The Kingdoms needs properties which define how they’ll evolve; they are only computed depending on the sovereign and the neighbours.
For the sovereign properties, we wanted something that will affect both its own kingdom and others. We rationalized that to simplest:
- a Kingdom can grow by capturing neighbours. So we needed a parameter reflecting the will to expand of the sovereign: its belligerent nature;
- a Kingdom can split if the population revolts. Here, we needed something to measure the well-being of the kingdom: the kindness of the sovereign.
However, two properties is too minimalist to build an interesting simulation. We then decided to implement a third property:
- the charisma: it reflects the respect due to the sovereign, both by its people and its neighbours.
For the kingdom, we stated to the simple properties:
- The risk of invasion, depending on the aggressiveness of the neighbours;
- The risk of internal crisis, depending on the kindness of the sovereign.
Now we touch the core of the question: how to put together the different properties to shape the simulation? Until now, we have a world, divided into Kingdoms, ruled by Sovereign. Before developing the formulas, we need to decide how the game will run (turn based or real time?) and how is divided a Kingdom, as we want them to be able to split in several Kingdoms in case of internal crisis. To keep the game simple, and because it was more relevant with the whole game system we decided to go for a turn-based game. If we had chosen to go for real time, it will have change all the following formulas and I’ll propose some alternative at the end, to see how it could have been if did this choice. Regarding the Kingdom, we had two main choices: dividing the world into region, or using an influence system which define the zone under the kingdom’s control. Both solutions are interesting; here are their pros and cons. Region system This choice will make sense if the region count is kept low; else it’ll become a grid which simulate an influence system.
- Rigid, structured;
- Easily countable;
- Readable common frontiers and potential evolution;
- Size doesn’t matter, don’t reflect Sovereign’s power.
This system is easier to grasp and to feedback, however it may lack of freedom; the formulas based on this system are going to involve big consequences, even if it will still be depending on the quantity of Region within the world. Influence system This choice will make sense if the influence allows perpetual change and smooth progress, which is going to give dynamics to the map.
- Smooth, organic
- Hard to quantify
- Hard to identify frontiers and potential map evolution
- Size does matter, reflect Sovereign’s power.
This system allows a livelier game, by sacrificing accessibility, or at least will require more work to reach the same accessibility level. However, regarding formulas, it offers more flexible treatments and results on how the frontiers evolve or the kingdoms split. Eventually, we decided to use the region system because of the lack of time. It allows to go straight to the point faster, and remove a lot of complication regarding technical and visual integration. So, it’s a design choice based on the project constraint, rather than a design choice made for the system’s elegance.
So, turn-based and world divided in regions, but what about the formulas and that stuff?
When you build a simulation system, you need to find the balance between predictability and chaos. If you reach one of the extreme, the game won’t be fun. And, if you’re right at the middle, it won’t be neither. The game need a predominant feel, either readability or chaos, all depending on the experience you are trying to build.
For King Makers, we wanted something readable as the player will have to do projection and influence parameters and events over time. The world needed to be predictable more than chaotic. However, there is still a bit of chaos to counter player’s plan! So, the player can read odds for the different kingdom for the current turn, see how the King is going to evolve in the upcoming turns, and how it will affect the odds.
A game I’d make using a chaotic system rather a predictable one is for instance: simulating a WW II soldier. Some elements related to the soldier would affect the odds but in the end, chaos will choose who live or die.
Thanks to that, the player can build conjuncture and prepare a strategy. however, the resolution of the two game events which allow the world to evolve are still based on a dice roll; even if the formulas allow situation in which the required result will be lower than the lowest face on the dice.
The simulation is then ruled by those rules:
- A Kingdom can only do one action per turn: trigger an internal crisis and split OR try to invade an adjacent region.
- Only one invasion can be made per turn. The invaded Kingdom will skip its turn.
- The actions are solved as following: 1) Internal crisis first; 2) Try to invade Thus, the new born Kingdom can immediately invade, and potentially eat each other.
- At the end of the turn, the properties of each King tends to the throne’s property; the step is equal to the Throne lifetime.
The following formulas has been done thanks to the collaboration between the game designer and the developers. The designers give the rational, the meaning behind the formula while the developers help with their mathematical skills. Designers tend to unnecessary complicate their formulas. Moreover, the developers help the designers to step back on how the different properties are interacting and to refine the formula to go straight to the point.
Internal crisis formula
In two days, it’s certainly the formula which evolved the most. At first, it was:
Random.Range(0,50) – kindness > 0
Such a formula involved that over 50 Kindness, you’ll never suffer an internal crisis, and after that, the odd increases drastically. Moreover, binding this event to only 1 parameter allowed the player too much control, and reduces the potential hard choices that could emerge when crafting a throne. First, I made a mistake to answer the issue by adding chaos in the formula:
Random.Range(0,50) – Random.Range(0, kindness) > 0
Indeed, the world was livelier but the player had loss all predictability on how stable a Kingdom was. Even if 100 Kindness, the kingdom could split because of bad luck on a dice roll. In a second time, I then added new parameters to make the formula more consistent and creating new levers. And at the same time, I reduced the chaos by using successive operation:
Random.Range(0,10 + 5 * Kingdom’s region count) – Random.Range(kindness,kindness + charisma / 5) > 0
With this new formula, the new parameters brought interesting dynamics:
- The player had two new levers to play with kingdom stability 1) Forcing the kingdom to expand increases the odds of a crisis 2) The Charisma opened new room for dilemma when crafting a throne
- The player recovered control on stability by opposing the kingdom size to the kindness: a safety easy to read and to manipulate.
Still, the chaos could become high as the kingdom grew. Even if it leaded to interesting dynamics, it was to hard to manipulate the game. So in the end we reworked the formula to this:
Random.Range(0,100) > [25+ (3 * Kingdom's region count)] – [kindness + charisma / 10]
By removing a random, the chaos was lowered, and then we balanced the number to increase the high-risk threshold while keeping a readable safety. In the end, the result allow to have really stable Kingdom that can last for quite a long time, and the game offer enough levers to manipulate a sovereign to bring its kingdom to dust.
The process is divided in two steps:
- For each adjacent region, decide if it’s worth it to attack the owner.
- When a region is defined as a target: test the result of the invasion.
To define the will to attack a neighbour, we started with the following formula:
belligerent + (charisma – target.charisma) > 100
Thus, the charisma is reinforced as a defensive property (help to have a stable country, and to lower the chance to be invaded) as well as starting to be an offensive one too. Using both belligerent and charisma to trigger invasion opens different strategy to build an expansionist kingdom. However, it makes the belligerent property less important, even negligible I would say because focusing on charisma offers more advantage. We could add belligerent to the formula defining the chance of the invasion success but it would be really terrible for our game: using the same property for two consecutive steps will provoke a snowball effect that we’d like to avoid. It would cause that an expansionist will certainly win its invasion. Yet, we want the player to be able to « forge » an expansionist sovereign that always fail to keep the world in a certain shape. So, we ended with this formula:
belligerent – (0.75 * target.Charisma) + (50 / Targeted Kingdom’s region count) > 0;
We kept the same basis, but removed the Charisma of the invader from the formula. We decided to rather use it in the success formula. So, if the Kingdom need to expand, the player can either influence the belligerent aspect of the sovereign, or lower the charisma in the neighbourhood. The region count gives « realism », or rather commonly accepted feeling, that a small kingdom will be favoured as the target of an expansionist than a bigger one. For the invasion success; we started with the following formula:
belligerent – target.kindness + Random.Range(charisma – target.charisma), charisma) > 75
As I said earlier, the use of the same property for both the will to invade and odds of success. But it was interesting to oppose the two charisma properties, reflecting how good leader the sovereign were on the battlefield. With a higher charisma than the invader, the target could even « demoralize » its opponent. The use of the kindness is important in this formula to strengthen the defensive and stability aspect of the property. A well-being nation will be eager to defend its lands. Regarding the charisma, it gave even more power to the charisma, so it was definitely wrong! Still, we didn’t realise it immediately and we went for the following formula:
(belligerent * Kingdom’s region count) - (target.kindness * Targeted Kingdom’s region count) + Random.Range(charisma – target.charisma), charisma) > 75
Adding the region count seemed to be interesting and we though it would fix our issues. But, we just added a new parameters that gave more power to huge kingdom, making new born from a crisis too weak and ephemeral. At this point we thought that issue went from the power of the charisma, being both very effective for offense and defense. So, we kept the same formula but removed the charisma from it.
(belligerent * Kingdom’s region count) - (target.kindness * Targeted Kingdom’s region count) > 0
This formula didn’t last for long. Removing the charisma didn’t change a lot of thing, so we noticed the issue involved by involving the kingdoms’ size for both the invader and the target. So, we decided to throw away this basis and to rebuild a smarter formula:
charisma + (belligerent / 5) - [target.kindness * (1 - (Targeted Kingdom's region count / 18f) )] > Random.Range(0,100)
With this formula we gave back offensive power to the charisma, and belligerent was more a complementary bonuses as we only consider a small part of it. Regarding the target, we focused on the kindness to make this property the real factor of stability of a kingdom. And we kept the size to make a big kingdom harder to defend and a smaller one hard to kill: it seemed way more logical. If you want to invade a country similar to Switzerland, they will easily move their troops to the conflict point, while it’s really hard for a country such as China to defend all its borders. So, with all those final formula, here are how the sovereign’s property affect the kingdom evolution.
Before concluding, here is some leads on how I would have done if we had chosen to go for a real-time system:
- Implement the frequency in the formulas, and bind it to a sovereign’s or kingdom property. For instance, a huge kingdom would have been slower to act than a small one. It could have been done in some way with the turn based system by giving more or less action to each kingdom, but it would have hurt the clarity and the game’s readability.
- Reworked the throne crafting (that I didn’t evoke in this article) and the parameters to build up a throne. In the game, the player build a throne for a sovereign, and depending on the chosen elements, the making will take a certain time. The more time it takes, the more turns pass. With a real-time system, I would have focus on making the element selection harder, and the time spent making the throne would have simply been the time spent in the world.
- Reworked the game interface and player’s interaction to fit with the running time. For instance we would need to do a projection of the simulation evolution to help the player taking quick decision. The more I think about it, the more I see potential for a fast-paced arcade game!
In this article, I focused on the different formulas, one by one but during the development, they evolved at the same time. Certain steps may seems weird but when we were focused on the project, we didn’t have that much perspective on our work. Anyway, to conclude I’ll just sum up the main point to work on:
- Keep it simple: a few properties are enough to build a funny simulation;
- Use references to real life systems or commonly accepted phenomena;
- Predictability versus Chaos: find your place;
- Iterate on the dynamics between the different properties and the formulas.
- Formulas is a team work which involve both the game designers and the developers. Exploit their specific strengths!
I hope you enjoyed the read and learned something. Don’t hesitate to comment and open a discussion on the subject, I’ll be glad to hear from you as I’m just offering a feedback on my personal experience and some people may have other interesting approaches! Cheers,