Druidstone goes full deterministic
Druidstone goes full deterministic
Game News - posted by Infinitron on Wed 13 February 2019, 22:46:01
Tags: Ctrl Alt Ninja; Druidstone: The Secret of the Menhir ForestDruidstone started out as a procedurally generated game, but in a new update published today Ctrl Alt Ninja reveal that even its combat mechanics are now fully deterministic. The goal is to make each encounter feel like a mini-puzzle. Enemy decision-making will be the only random element in Druidstone's combat, although right now even that is deterministic. The update explains:
Ok, that thing sorted out, let’s talk about today’s subject, which is randomness as a game design concept and how it affects Druidstone. Randomness can be found in many places and in many forms in a game. For example, are levels fixed or randomly generated (tried that, didn’t work for us)? Are combat values such as hit chance, damage, damage reduction and so on random numbers or fixed? Are enemies in levels randomized? What about loot drops and items? Is enemy AI based on random behavior or do they follow strict deterministic rules? Each of these questions can be answered independently, so you end up with a design space with a large number of different combinations, each with their own feel and effect on gameplay.
Even if it would be feasible to test every possible combination (it’s NOT), it’s not clear cut which particular combition is the best. So at this point it’s the job of the game developer to put the game designer hat on and apply some good game design principles… which usually really means making “intelligent guesses” based on the game designer’s preferences and experiences!
One interesting thought experiment is how far can you push on the extremes. What if everything was purely random? That would probably be a very chaotic experience, and a poor match for our goal of making a deeply tactical game. A more appropriate question in our case would be: what would a game without any random factors be like, where everything except the players input is basically predetermined? On the surface several games seem to be like that. For example, games like Into the Breach (an absolute masterpiece btw!), chess and Solitaire seem to have no randomness. But looking deeper even these games have randomness. In Into the Breach enemy moves seem to be randomly determined, which leads to surprising moments. In chess the decisions of the opponent, how he or she moves the pieces, while not necessary determined by a random process, provide unpredictability for the other player. In Solitaire the deck of cards is in a random order. The point of randomness in games is to produce unexpected events because unpredictability and being surprised is fun. I believe all games have some sort of randomness built in. If they don’t they cease to be games and become pure puzzles. In fact, a definition of a puzzle could be “a game without random elements” (this definition is problematic though: defining a game is even harder problem).
Ok, what does this all got to do with Druidstone? Hold on, we are getting there! For Druidstone the most important design decisions we have to make regarding randomness are:
1. Are the levels fixed or randomly generated?
2. Combat values (hit chance, damage, etc.): fixed or not?
3. Fixed or random loot?
4. Should enemies follow strict rules or be based on random numbers?
There are others but I think these are the most important ones, which have the biggest impact on gameplay.
Random level generation we have already scrapped and this has been covered in previous blog posts.
For the combat rules, we have actually tried both random and fixed variations. The initial design, following our initial gut feeling, was to make combat values, like damage and to-hit, randomly varying like in most RPGs. But once we tried constant values and set hit chance to always be 100%, the nature of the combat changed. Most importantly combat without random modifiers support planning and tactics better and using hero abilities in combos is more practical because you know the outcome of your actions. Druidstone does not have an initiative system, so you can activate your heroes in any order and interleave actions of your heroes any way you want. This combined with the no random numbers approach to combat rules turns the battles into sort of mini-puzzles, which we find more interesting than statistical approach. Using your limited resources and abilities becomes an integral part of solving these puzzles. For example, the thought process while playing could be “Ok, gee, there’s no way I can defeat that Dark Knight with high armor value… Hmm… maybe if Leonhard first charges and pushes him to Oiko’s range, then Oiko can teleport the Dark Knight on that trap, which explodes at the end of heroes round. But wait! To do that Aava needs to clear these critters first because they are blocking Oiko…” And so on. Written like this it may sound complicated, but with aids such as visualizing the outcome of attacks, enemy statistics being open information and being able to see enemy reaches, it becomes intuitive and natural.
I’ll leave the question on “fixed or random loot” for another blog post because explaining the design process of the items warrants a blog post of its own.
Finally should enemy behavior be deterministic or random? Currently enemy behavior in Druidstone is pretty much deterministic, because of the way how the AI is currently structured. And I actually think this is not ideal and we made a wrong decision somewhere along the way when designing enemy AI. Enemies should do unexpected things (the enemies are monsters, not robots following directives!) and ideally you’d have to react to and change your tactics based on what the enemies do. So this is something we are still going to fix. Fortunately the fix isn’t necessary that involved — adding randomness here and there to the decision making should do wonders. We look at board games for inspiration (more than computer games actually), and many co-op board games use cards to implement their enemy AI. So what we’re currently thinking is a system with a small random deck of monster actions per monster type. Each turn the enemy AI would draw a card for each monster and use that action or tactic this turn. Essentially we already have all those actions, it’s just a matter of making changes to the high level system which chooses when to use these actions. This could be the right ingredient we are missing to make the enemies even more interesting and varied.
This brings me to another great design tool for randomness: cards vs. pure random numbers. Both can be used to generate random values. A random number generator is pretty much like a die: every time you roll the die you get an independent random value. But a deck of cards has memory: as you draw cards the options will be gone until all the cards have been drawn, at which point you shuffle the cards to form a new deck. Most often this is exactly how you’d like randomness in games to work: you don’t want a long stream of misses or a long stream of hits, after all. For this reason, Druidstone is using virtual ‘card decks’ internally for many things.
Good stuff. All they have to do now is announce that loot is fixed and this will be lukaszek's game of the decade.Even if it would be feasible to test every possible combination (it’s NOT), it’s not clear cut which particular combition is the best. So at this point it’s the job of the game developer to put the game designer hat on and apply some good game design principles… which usually really means making “intelligent guesses” based on the game designer’s preferences and experiences!
One interesting thought experiment is how far can you push on the extremes. What if everything was purely random? That would probably be a very chaotic experience, and a poor match for our goal of making a deeply tactical game. A more appropriate question in our case would be: what would a game without any random factors be like, where everything except the players input is basically predetermined? On the surface several games seem to be like that. For example, games like Into the Breach (an absolute masterpiece btw!), chess and Solitaire seem to have no randomness. But looking deeper even these games have randomness. In Into the Breach enemy moves seem to be randomly determined, which leads to surprising moments. In chess the decisions of the opponent, how he or she moves the pieces, while not necessary determined by a random process, provide unpredictability for the other player. In Solitaire the deck of cards is in a random order. The point of randomness in games is to produce unexpected events because unpredictability and being surprised is fun. I believe all games have some sort of randomness built in. If they don’t they cease to be games and become pure puzzles. In fact, a definition of a puzzle could be “a game without random elements” (this definition is problematic though: defining a game is even harder problem).
Ok, what does this all got to do with Druidstone? Hold on, we are getting there! For Druidstone the most important design decisions we have to make regarding randomness are:
1. Are the levels fixed or randomly generated?
2. Combat values (hit chance, damage, etc.): fixed or not?
3. Fixed or random loot?
4. Should enemies follow strict rules or be based on random numbers?
There are others but I think these are the most important ones, which have the biggest impact on gameplay.
Random level generation we have already scrapped and this has been covered in previous blog posts.
For the combat rules, we have actually tried both random and fixed variations. The initial design, following our initial gut feeling, was to make combat values, like damage and to-hit, randomly varying like in most RPGs. But once we tried constant values and set hit chance to always be 100%, the nature of the combat changed. Most importantly combat without random modifiers support planning and tactics better and using hero abilities in combos is more practical because you know the outcome of your actions. Druidstone does not have an initiative system, so you can activate your heroes in any order and interleave actions of your heroes any way you want. This combined with the no random numbers approach to combat rules turns the battles into sort of mini-puzzles, which we find more interesting than statistical approach. Using your limited resources and abilities becomes an integral part of solving these puzzles. For example, the thought process while playing could be “Ok, gee, there’s no way I can defeat that Dark Knight with high armor value… Hmm… maybe if Leonhard first charges and pushes him to Oiko’s range, then Oiko can teleport the Dark Knight on that trap, which explodes at the end of heroes round. But wait! To do that Aava needs to clear these critters first because they are blocking Oiko…” And so on. Written like this it may sound complicated, but with aids such as visualizing the outcome of attacks, enemy statistics being open information and being able to see enemy reaches, it becomes intuitive and natural.
I’ll leave the question on “fixed or random loot” for another blog post because explaining the design process of the items warrants a blog post of its own.
Finally should enemy behavior be deterministic or random? Currently enemy behavior in Druidstone is pretty much deterministic, because of the way how the AI is currently structured. And I actually think this is not ideal and we made a wrong decision somewhere along the way when designing enemy AI. Enemies should do unexpected things (the enemies are monsters, not robots following directives!) and ideally you’d have to react to and change your tactics based on what the enemies do. So this is something we are still going to fix. Fortunately the fix isn’t necessary that involved — adding randomness here and there to the decision making should do wonders. We look at board games for inspiration (more than computer games actually), and many co-op board games use cards to implement their enemy AI. So what we’re currently thinking is a system with a small random deck of monster actions per monster type. Each turn the enemy AI would draw a card for each monster and use that action or tactic this turn. Essentially we already have all those actions, it’s just a matter of making changes to the high level system which chooses when to use these actions. This could be the right ingredient we are missing to make the enemies even more interesting and varied.
This brings me to another great design tool for randomness: cards vs. pure random numbers. Both can be used to generate random values. A random number generator is pretty much like a die: every time you roll the die you get an independent random value. But a deck of cards has memory: as you draw cards the options will be gone until all the cards have been drawn, at which point you shuffle the cards to form a new deck. Most often this is exactly how you’d like randomness in games to work: you don’t want a long stream of misses or a long stream of hits, after all. For this reason, Druidstone is using virtual ‘card decks’ internally for many things.