1. All Hail Temos
  2. News

All Hail Temos News

Anatomy of an Adventure - Devlog #7

The standard model for RPGs is to have a main quest and side quests. The main quest is usually a big epic world-ending problem, that the player is taking the part as a Chosen One to solve for a unique reason. There is a big bad guy, and they need to be stopped, and you need to stop them. Along the way, you can farm, collect items, and help people out in various ways.

It’s a good model, and it there are a lot of good games that use it. All Hail Temos is doing something different.

All Hail Temos puts you in the position of a non-Chosen One, so you are not foretold to solve the world ending problem, and the world is not ending. Instead there are many problems and situations in the world that create adventures and opportunities, and you can live heroically solving or taking advantage of those situations.

Side quests are usually very simple, and are also usually disconnected from other events in the world, but in All Hail Temos, many adventures are connected by some characters you could interact with on a previous adventure, changing your future outcomes.

So how does this work?


[h2]Anatomy of an Adventure[/h2]

Let’s start with a visualization, an adventure flowing from left to right:



The blue, green and red arrows represent different ways you found this adventure:

Maybe you are travelling with someone who wants to do something, and they introduce you to this adventure.

Maybe you run into a group of cultists performing some ritual and decide to introduce yourself, or sneak in and see what’s going on.

Maybe you are asked to rescue someone being held captive, and have to break into a fortified location.

There can be several or many ways into a given adventure, but once you start it, most of the situation flows forward from there. There can be different ways of dealing with the problems in the adventure, and then eventually the adventure will come to a close.

When the adventure ends, depending on how you started (blue, green or red), you will have a contextual ending to the adventure, which may open up new adventures, or resolve the issue.

In any case, the world is now changed, the characters you interacted with have changed, and the adventure is complete.

[h2]How will this affect the gameplay?[/h2]

If you previous made choices that block the red path into an adventure, maybe you can still find the blue or green path to finding it, or maybe choices you have made have cut you off from it.

Branching narratives mean that you get different results, and different results over time can create unique situations where something may or may not be available by the time you find it.

I think this will keep the situations feeling more natural and connected with your actions, and am hoping that this creates possibilities for replayability.

[h2]Conclusion[/h2]

This was a short introduction to the method I am using in All Hail Temos to create adventures that live out in the world, and giving you many ways to find them. I’ll write more about them in the future, once I figure out how to do it without too many spoilers.

If you’d like to learn more about All Hail Temos, or follow the development, please Wishlist and Follow.

No Carry Weight Limit - Devlog #6

In many RPGs, and specifically Scrolls-like games, carry weight is something that is there to add realism to the game. The items you pick up have a weight, and you have a limited amount of strength and endurance, so the more you carry, the slower you should go. Or, there should be a limit to what can be carried, because it is more realistic that way.

After you have reached your maximum carrying weight, you either can’t move anymore, or you move very slowly. There could be a smooth transition to slowing down, or it could have a staged effect, where you move normally until you reach a threshold and then it changes.

I think these are good hardcore features, and intend to offer them as difficulty options for players who want different sorts of limitations on their play, such as a later survival mode.

But for the default case in All Hail Temos, I don’t want carry weight to impact the player at all. They can carry as many things as they want, and it will not effect them in any way, besides having to deal with a larger inventory, which creates it’s own problems, but is a different design problem.


[h3]No Default Weight Maximum?[/h3]
But why remove this limitation for the default difficulty? It adds immersion, and it creates a sense of consequence for picking things up.

As stated above, I will have difficulty settings to enable or disable different options that can change the way the game is experienced, but I have a specific vision for the default experience that I want to achieve.

Removing the carry weight limit, and any penalties for carrying a lot of weight changes several aspects of the game, but let’s look at them first from what these effects are when a carry weight limit exists:

The player is adventuring, and hits the carry weight limit. They must now change their behavior, in the following ways:

  • Stop searching for and looting items, reducing progression
  • Start min-maxing cost to weight pickups, making looting more work
  • Eventually run out of min-max cost weight as well for their area, and stop looting


When a player wants a higher level of immersive difficulty, this can be fun, but in other cases this is not fun. This stops or slows down the adventure, because now the player has to go back to sell items, or know they are stopping progression, or know they have to come back later just to mule items around. None of this is fun for people not looking for this kind of extra work as part of their immersion.

So, I will just remove the carry weight as a limitation, and you can carry a nearly unlimited amount of items. I have made the world physics rules work to support this, so this is normal in the game world, due to normal things having magical properties, such as storage for items being a type of portal system putting items into a storage dimension.

Without a carry weight limit, you stop adventuring when you have a new goal you want, such as selling your loot to go buy something better, or returning to talk to NPCs about some quests, or a higher level goal you have, rather than because you ran out of carry weight.

[h3]Carry vs Equipped Weight[/h3]
I think a more interesting weight system is your equipped weight, which are all the items you are actively wearing or wielding.

These items do effect your character, based on your stats and skills, it will make your character move or act faster or slower, and may stop them from being able to wear or wield some items, because they do not meet the minimum stats for doing so.

In this way, for normal difficulty weight of items still matters, but it only matters for the items you are actively equipping.

[h3]Conclusion[/h3]
All Hail Temos’s design is attempting to focus on the fun of playing in an open world, with many adventures to take part in, and not stopping those adventures due to limitations that normally aren’t fun.

If you’d like to learn more about All Hail Temos, Wishlist and Follow the game on Steam.

First Person Melee Combat - Devlog #5

[h2]8 Directions & Combos[/h2]

Melee combat in All Hail Temos is based on two systems:

  • An 8 Directional Swing system, based on the direction you are moving.
  • A customizable combo system, the sequence of 8 directional swings you perform, while keeping a chain of hits.

The purpose of these systems is to provide different methods of attacking your opponent, and each directional will have a different Rock, Paper, Scissor type effect with various armor and actions of your enemy.



[h2]8 Directions[/h2]

For the sake of this article, I will refer to your movement direction as compass directions, so pushing forward on the keyboard or gamepad means north. Pushing left means west, down is south, right is east.

If you are moving west, then your attack will come from the east, travelling west. Matching the direction you are moving. If you are moving east, then you will swing from west to east, matching your movement.

Moving north east (up-right) means your swing will come from south west (bottom-left) to the north east, as you are moving.

If you move forward, it is a thrusting attack forward, and backwards is an overhead swing.

Per weapon type, such as one handed medium sized melee weapons, like a sword or an axe, these movement will always be the same, when you execute any given direction. This will allow you to learn how to move with respect to an enemy to strike them.

Strikes in this game are made with a collider close to the weapon, and fairly well-fitted colliders on all enemies, so to hit them, your weapon must actually collide with the area of their mesh… where you can see them.

This should improve the action portion of the game, as there is a high skill ceiling for hits and misses, as there are not large hit boxes, and hits only happen with a correct collision of the weapon.

Because of this, your movement must be based on making hits, not just aligning the enemy in front of you and attacking. You must know which 8 directional strike you will perform and then where you should be relative to the enemy to get a hit, so there is a lot of room for a high skill ceiling on movement, positioning and timing your strikes.



[h2]Customizable Combos[/h2]

Combos are meant to take this system further, so that if you can get consecutive strikes, in a particular pattern you get a critical strike for the next strike. If you can keep the chain going and complete another combination, then you can keep increasing the next critical strike.

Combos are customizable because you can pick your own combinations. There are defaults, but you can pick any pattern of combination that you want.

The trick to stacking combinations, is that you can never do the same combination twice in the same combination stack. So you must make and memorize new unique combinations, and then be able to land hits without missing to progress your combination.

[h2]The First Collision is the Hit[/h2]

Weapon colliders are fairly small so that you must actually strike the enemy with where your weapon is to land a hit, and the weapon will detect what it hits first and after it either hits a shield, or a body part, it becomes inactive, so the rest of the swing will not effect anything.

This means if the collider of your weapon first hits your enemy’s shield, or they are blocking you, then you will have to deal with that penalty, doing reduced or no damage to them.

If they are blocking or holding a shield, and your weapon hits their body first instead of the shield or blocking area, then you landed a full strike on them. So combat is based on making your weapon hits land, rather more reliant on stats and buffs. After hit has occurred, on a body or a shield, then there are normal RPG calculations to perform any damage reduction, and what damage is taken and any effects that are delivered, like electricity or fire.

[h2]8 Directions, 8 Effects[/h2]

Each directional hit has a normal effectiveness, and a special effectiveness. If you hit someone, you hit them. But the direction you swung from will have an additional effect on the opponent.

Attacking north is a thrusting attack with a sword (or a push-bash with a mace or axe), and has a Piercing force that has a Rock, Paper, Scissors interaction with the blocking type and armor type of the enemy.

If the enemy is blocking, there are 3 blocking type:

  • Wide: A wide block is like a shield.
  • Narrow: A narrow block is like using your sword, or a buckler.
  • Sticky: A sticky block is either using something like a chain, or it is a technique that follows the attack, and “sticks” with it, to capture the attack.

These work in Rock, Paper, Scissors fashion with the 3 attack types:

  • Lateral
  • Vertical
  • Diagonal

The Rock, Paper, Scissors formula goes like this:

  • Vertical beats Wide
  • Lateral beats Narrow
  • Diagonal beat Sticky

And secondarily, as R.P.S. does:

  • Vertical ties Sticky. Vertical loses to Narrow.
  • Lateral ties Wide. Lateral loses to Sticky.
  • Diagonal ties Narrow. Diagonal loses to Wide.

Thrust (north) and overhead (south) are vertical. East and west are lateral. NE, SE, SW, NE are diagonal.

Picking the correct attack can cause more damage to be delivered, by neutralizing the effect of the armor or the block. So knowing your enemy, and how to defeat them can make your combat more effective.

[h2]Sneak Attacks - Being Unaware[/h2]

When an NPC is unaware of you, you get a bonus because they are not defending their vital organs.

If you are performing a melee attack on an unaware enemy, you get a 2X damage increase, because it is assumed you can hit a more vital area due to them not defending themselves at all.

With a ranged attack damage is only 50% higher, as you hit will them but are not able to pinpoint vital areas.

There is an advantage to shooting unaware enemies, but it is not immediately a dominant strategy due to being out of balance.


A Feather Sword attacks from right to left. Feather swords make enemies float like zero-gravity.

[h2]Skill Level Ups[/h2]

Skills are leveled up by using them, which gains each skill independent XP, and an overall XP for the entire skill group. Each skill and skill ground can level up, granting them the ability to gain more skills.

To actually get the new skills, or increase the level of a skill. You need to visit a Shrine of Temos, and exchange the XP accumulated in your skill to either level that skill up, making it more powerful, or

Skills are sometimes tunable, so that you can choose to expand more stamina for more power. This way you can tune how you want to use your resources to deal with problems. Super Jump could be tuned to jump less far, but use much less stamina so it could be used more often.

[h2]Hit Colliders[/h2]

Hit Colliders are close to the meshes, so for the sword object, the hit collider will be close to the sword model, and the colliders for enemies will also target limbs fairly close to the model.



Sword Collider is wider than the sword to ensure a hit is detected when swiping past small objects.

The benefit of this, is that is makes the gameplay more possible to be precise with target strikes.

Gear and skills will determine your characters ability to strike through armor and blocks, but the configured for hit colliders is very near the visible mesh, so if your sword actually hits the shield, then that is the place of contact.

In Melee combat, the first collision found will be the hit, and if the animation takes the model through further collisions, those do not count towards the hit. So if you hit a shield, that is where the calculation is made. You may still break through the shield and cause damage, but it will be reduced, or you may be completely blocked by the shield.


Hit colliders on a spiders limbs and body so different targets can be hit or can block you

Same with whatever kind of clothing you are wearing, it will test the hit, and determine the damage that makes it through the clothing, such as metal or leather armor, versus fabric clothing.



[h2]Consistent Strikes[/h2]

When you swing an attack, depending on the skill and weapon a different animation will play in each of the different directions or combination attacks, but for a given weapon and skill level, you will always have consistent animations, so you can learn where your sword will land at a given time during the strike.

The strikes are designed to follow same path every time, allowing you to be able to learn where they will be, and when, so you can get a strike on the target you are aiming for.

It’s design is intended to fell “Analogue” like a pinball machine, everything is moving, the enemy and you are both changing your positions, and you are looking in different directions, and the timing of the swing must be matched the distance from the enemy, and your angle to the enemy, as the sword’s collider must physically touch the the leg collider first, before touching a shield collider, so that it will hit the leg. Otherwise it hits the shield

This gives the player ultimate action control over where the collision occurs.

[h2]Hit Stops[/h2]

Hit stops are a simple effect where the character hitting, and character being hit have an slight animation pause to add more weight to the strike, but making a tiny slow down.

This has actually been with us since one of the first video games ever, as Space Invaders had a pause to the player and invaders on a bullet striking an invader.

In All Hail Temos, the hit stop pauses the animation of the character doing the melee attack for a few frames, and the character being struck by the melee attack for double those frames. This gives weight to both characters, but with a larger penalty for the one being struck.

This also provides another strategic element of striking, in that all the enemies around that are not struck are not being stopped, and can still move and attack the player during those frames. This will not create any significant disadvantage, but it does slightly change the playing field as you strike or are struck, along with improving the feel of making contact.

[h2]Hit Window[/h2]

During the sword swing animation, there is a “Hit Window”, where in that time if the collider of the sword will hit the collider of the enemy. In this time there are different strengths of damage, so that in the early phase it may do less damage, and in a later phase it may do more damage, and this damage slides all the time, so getting a different timed hit will deliver a different force, again giving you control over whether the attack does more or less damage.

Feedback will be given in different sizes (ex: larger flash effect) the more damage is done, so the timing can be learned just by playing, without studying any information how when attacks are more powerful. It will be obviously when the hits occur which hit was more powerful.

As the player gets used to timing the strikes, the strikes will become more effective. The changes in damage is based on what the weapon is doing during that portion of the strike.

Like swinging a baseball bat, there is a time when the bat delivers the most power, and other times where it strikes but transfers less force. And there are times went hitting with the bat would effectively not transfer force, which is outside the “hit window”.

[h2]How does this affect gameplay?[/h2]

I think a lot of this is fairly straightforward in how it effects practical gameplay, so I will instead go into more foundation of how it effects gameplay as a structured design.

For instance, Combos require a kind of positioning and timing still, because to advance the combo, you must know what position you must be in for a given strike, and set up the strike with your stepping movement.

Since you can set up the combinations yourself, this allows you to figure out which stepping patterns work best for you against different enemies. The skill has a multiplier on stamina, so as you complete the combo, the moves regenerate stamina on combo complete and also do more damage, so that chaining a combination move builds up magical charge, which makes the attacks more devastating.

[h2]Conclusion[/h2]

These are the different factors and features of melee combat, which is designed to be a system for controlling the direction of your strikes, while having fairly precise colliders for weapons and enemy targets.

This can hopefully allow for a wide degree of skill to be developed at hitting enemies with weapons, and a very fluid feel to combat, as everything is about timing, and distance and direction, like any physical engagement would be, which should hopefully give a good depth to the combat, along with the item powers, magic, skills and progression that effect how the stats effect the outcome, and affect the health and stamina of the enemy.

For players less interested in deep actions, button mashing will still hit the enemy frequently enough, but they won’t get the benefits of chaining combinations of hits, with the damage increase and stamina regeneration.

If you’d like to learn more about All Hail Temos, please wish list and follow.

An Open World Branching Narrative System - Devlog #4

In my Scrolls-like first person open world RPG All Hail Temos, one of the most important systems is the Narrative System, which handles conversations between the player and NPCs, or NPCs and NPCs, or NPCs speaking out loud in exclamations, and is also in charge of managing the quests and a good deal of the world logic.

There are a lot of ways to approach this, and one popular way is to use the type of branching dialogue system that Skyrim or Fallout uses, in conjuncture with day-night job schedule system and a task based quest system. This is a popular method, and is used in a lot of RPG games with different kinds of setups. Some are more dynamic, and some are more statically scripted.

One of my primary concerns was that I want to be able to make the narrative content inside All Hail Temos (AHT) to be absolutely gigantic as the game development progresses, so that years and years of writing can all live together, and still maintain it’s logic and cohesion, and be able to be worked on and developed. And I also needed it to not be too onerous to make additions or understand what is going on.

Just describing a summary all the different design points I wanted inside this system would be a full blog post in itself, and I’m looking forward to writing about it, but first I should give examples of how the system actually works, and how I build it.



[h3]Interactive Fiction - Ink Lang.[/h3]

Here’s a list of talks about the Ink language developed by studio Inkle:



Ink is the language I decided to base my system on, because of their design goals of trying to keep writing the dialogue as close to writing a novel as possible, which is the most writer-friendly, and their very clever methods of using very simple data to control complex data in the massive chaos that a branching story creates.

The basic tenants of Ink’s data usage that interested me are:

  1. All data stored is just a named integer: ex: “times angered” = 0, 1, 2, 3…
  2. All data can be treated as either a “counter” or a “state”. A counter is just the above, a named value that goes up and down: angry = 6
  3. A state is a list of ordered named counters under a label, that can only be 0 or 1, and when a state is active (equal to 1), all previous counters in the ordered lists are set to 1. ex: lifespan: born, alive, dead. If I set the state to “alive”, then born and alive are both 1, and dead is 0. This can never go backwards, only forwards.


Example state group “lifespan” with 3 states, only flows one way.

That’s it. Those are the core data rules. Counters are named numbers. States are a list of names that are either 0/1 and can’t go backwards, and all previous items are set to 1.

This is simple and brilliant, as it is a toolbox that can do almost anything, but has the one important constraint that states only go 1 way, and anything in the order of the state items are always true (1) if a further along item is true.

But, Ink was created for writing interactive fiction, not a 3D open world. They have begun to expand what they use it for, and Heaven’s Vault has a 3D style movement interface, but it is ultimately reading very much more like a choose your own adventure book than something like Skyrim or Fallout: New Vegas, which have a lot more flexibility in where you are, and who you are talking to, and a very dynamic context.

[h3]My Narrative System - NAR[/h3]

NAR is what I’m calling the All Hail Temos narrative system, as it is good for the ending of text files (.nar), and it’s short and descriptive and doesn’t appear to be used by anyone else according to Google. I started trying to adapt what Ink was for an open world game, where there are often many different narrative threads or quests going on at any given time, and the player can pick and choose what they want to do now.

There’s a lot more to this freedom, and some of it is very similar to how Ink provides flexibility, but other aspects of it are quite different. For one, Ink is designed primarily to deliver a narrative and any other gameplay has to be tuned to work with this. I think Ink could be used for this kind of open world RPG game, but it is not purpose suited.


Here are the basic types of interactions that I want to allow with NAR:

  • Approaches: An NPC approaches the player, and starts the conversation.
  • Barks: An NPC says something to themselves or another NPC within earshot of the player. 2+ NPC might have a short conversation.
  • Replies: An NPC doesn’t have any conversations available, but can reply with a short response, which might be general or tuned to the context of an active situation.
  • Prompts: This is the primary method for starting a conversation, which a player can ask an NPC about a subject, get directions, get or progress a quest, or any other intros into a conversation. Prompts can link to Dialogues, or have a short question and answer directly.
  • Dialogues: When a player selects a Prompt and it is longer than question and answer, they are redirected into a Dialogue section. These can branch, go into depth, or redirect to other dialogues. In NAR, I call these “dialogues”, but I prefer to refer to them as conversations as they may have more than the player and 1 NPC. Any available NPCs could join in on the conversation, and they can trigger events in the game, which makes all dialogues a type of simple interactive cut scene.
  • Stages: This is where in the world an NPC is at the moment, and can have different Stage Stations they move between, such as doing a patrol, or working on a blacksmithing anvil, or standing at a sales counter. The NAR system handles the placement and activity of all NPCs that aren’t in combat or following the player as a companion.
  • Stage States: Every stage can have multiple states, such as a store having day and night states, such that in the day it has a sales person in it, and the door is open and chairs are available for sitting, and at night the door is closed and there isn’t a sales person and the tables are put on top of the tables. States can also be used for events, such as monsters attacking a town, then NPCs would be in different locations, doing different things (ex: defending the walls), or it could represent a change in the narrative, such as a store having had a fire, and now the inside is burned and the furniture is gone.


These are the core elements of the NAR system, so instead of having NPCs on dynamic schedules where at 8AM they go to work and 5PM they go home and eat and 10PM they go to sleep, I do essentially the same thing but with stages that use counters and states inspired by Ink.

[h3]An Example[/h3]


Let’s see an example of some NAR Prompt data to see some of the elements in action, I’ll crop it to 2 prompts to give the idea without getting too long:

== ENTARA_WORK_FARM == { AtStageState(protect_farm_intro, protect_farm_met) } #p:1
- (entara_work_farm)
* (entara_work_farm1) !{protect_farm_intro} [Your Farm?][House]
You: Nice to meet you, is this your farm? -> ENTARA_WORK_FARM_INIT_OPEN #line:5001
~ Advance(protect_farm_intro)
* (entara_work_farm2) !{protect_farm_intro} [Looking for work][Work]
You: I'm looking for work, do you need anything done? -> ENTARA_WORK_FARM_INIT_WORK #line:5002
~ Advance(protect_farm_intro)


To start with there is a == TOPIC_HEADER == which has a {condition} and a #tag. This tells me if we can use any of these prompts, based on whether all the conditions are true. The tag in this case gives me the default priority for all these topics, #p1, which is high priority. All prompts that meet the conditions are given to the player, and just sorted in order. If there is 1, or 3, or 30, the player will see them all.

I try to give 3-4 choices for any given topic, but there might be multiple topics active, such as asking for directions, which are lower priority. In practice, the list won’t get that long, but I don’t limit it, I just prioritize which are first based on priority and what you have been talking about or doing recently.

Once a topic has been selected, it will run it’s course and can’t be cancelled until you finish it, so I keep them fairly short, but once completed you will never see it again. The conversation element happened and is done. It’s recorded in your Journal so you can be reminded of it, but I don’t leave it as a grayed out option which is popular in some games. You can bring up your Journal at any time, and it will help you read relevant conversations in the past.

There is a bunch of markup here in the prompts, similar to Ink, but I also have this [Short Text][Icon] option for optional radial wheels for gamepad players, and I also always show the first link with “You:”, the player, so you don’t have to guess what you will say if you select this prompt, you can see it. Mouse and KB players will get a list of choices, which may get abbreviated, but also see the full option.

Both of these lines redirect to the same sub-topic (Prompt -> Dialogue) ENTARA_WORK_FARM_INIT_WORK.

There are also #line:5002 type tags which are used for playing audio files and translation into other languages, and a command line with ~ Advance(protect_farm_intro) that advances a state so we know we have started this line of conversation.

[h3]States and Conversations[/h3]

Here’s an example of the states related to the above prompts:

states:
protect_farm: protect_farm_intro, protect_farm_met, protect_farm_know, protect_farm_find_exploit, protect_farm_success, protect_farm_fail




The overall state name is “protect_farm” and it has 6 state values in it, which are all set to 0 when a new game is created. With one of the above topics selected, we advance the state to protect_farm_intro, which sets that to 1 (true) and the rest remain 0 (false). Once this is set, it can never be unset. We can trust that this state will always be true for any narrative test we want to do. If I were to advance to “protect_farm_fail” , then all the states with be 1 (true), and could never be changed.



There will be an art to ordering states such that it always makes sense which order they are in, as the flow of logic can only go 1 way. Should fail be last, or success? It will depend on if something could fail, but then be fixed and ultimately succeed. In this case, you can succeed, but ultimately somehow fail, or it could just stay at success and never advance to fail because the option isnt available or wasn’t selected.


Starting with 1 prompt, a trimmed example of branching dialogue.

Here is the conversation that continues, in part:

-- ENTARA_WORK_FARM_INIT_OPEN --
- (entara_farm_open)
- +
Hygara (pleased): Yes it is. Well, I rent it. You were just at the mansion of my land lord, did he ask you to come here? #line:5021
~ Set(offer_work_2)
~ Advance(keep_farmer_met)
* (entara_farm_looking_around) !{offered_work} [Fighter][Combat]
You: I'm just looking around. He asked me if I had a job and I told him I was already employed, so he told me to leave. #line:5022
Hygara: Where do you work? #line:5023
> (entara_farm_intro_myself) [Fighter][Combat]
You: I am a new recruit to the Lord Mayor's service. #line:5024
> (entara_farm_intro_myself2) [Explorer][Explorer]
You: I'm an explorer. #line:5025
Hygara: Do you always walk around the backwoods when you arrive somewhere new? #line:5026
>> (entara_farm_intro_myself2a) [Like Exploring][Explorer]
You: That's what I like to do. #line:5027
Hygara: I suppose I like farming about the same. #line:5028


This structure is basically the same as the prompt, but it starts with the NPCs talking, and in this case Hygara only has 1 line before you have more prompts.

Then it has sub-prompts, which indent inward, making it easy for me to write immediate replies without having to jump all over the place, and pretty easy to see which prompts go with with conversation section, and allows sub-sub-sub prompts inside a single sub-topic section.

As my design goals stated, I wanted to be able to have a very scalable system where a lot of dialogue and options could be written quickly. While there are a lot of little markup and formatting that need to be follow (really just indenting and the symbols), it reads similar to a screenplay, but with options.

[h3]How does this affect gameplay?[/h3]

The most important part is how this affects gameplay, as always.

This system will allow a lot of different narratives to be written, and simplifies the hardest part of branching narratives, which is making sure all the branches don’t get into a locked state where you can’t progress the story.

Because the state data can only flow in 1 direction, and all the previous states are always true when a further state is true, and remaining states are false, it is very simple to make tests and get answers that reflect the “state of the world”.

This also allows multiple ways to get to a state. I am only tracking what state something is in, not how it got there. So there may be many ways to set a state. In that case I would have counters or other states where I track how those went, and testing groups of conditions allows me to tell how you got to any situation so I can write custom responses to your actions.

This structure should lead to less bugs in the narrative and quests, as the Inkle folks have found, and the simplified writing will make it easier to write more content, as the standard node-based dialogue systems become very unwieldy as they grow. Text is the natural medium for writing, and the NAR system, following Ink, stays with text and remains similar to a screenplay, so more dialogue can be written, with different branching narratives.

The negatives of branching narrative for game development is more work. Every branch means another set of writing to do, and as branches increase, so does the amount of writing. But with this system, and by being methodical in how I write with it, I can write quickly and provide more choices for players than I would be able to do in a standard node-based narrative model that most games of this type use.

Comparison: How node-based dialogue is often displayed and written

Because NAR also integrates the NPC schedules, and special events and scripted scenes together means it can be more cohesive and all of these things are normal elements of writing in NAR, and not special events that can only be afforded to be added rarely. I can easily create another Stage State where a store has been damaged, and items are missing, and the NPCs around the store talk about the incident when appropriate.

[h3]Conclusion[/h3]

Open World branching narratives are always ambitious endeavors, but thanks to the pioneers at Inkle creating Ink and giving excellent talks about how it works, and how to write with it, I was able to create something which I think will make a good open world narrative system. I’m very much appreciative of how open they were and continue to be about this information and how much thought and refinement they put into it.

When All Hail Temos reaches 1.0 I will also release the full spec for the language and a C# API, and I hope my work will help someone else in the future!

If you’d like to find out more about All Hail Temos, please Wishlist the game, so you know when it’s coming out, or Follow to see more updates like this.

Balancing Skills From Stats - Devlog #3

Continuing on the discussion from my last post I am now going to describe how I am balancing what skills you can use based on the stats you selected.

Skills are things you can do, and I put them into skill groups named:

Combat: Related to fighting

Influence: Related changing peoples minds

Craft: Related to building things, understanding things

Experiment: Related to trying things out, testing things, understanding

Seduce: Related to changing peoples behaviors

These are used very loosely to map into all kinds of situations, so for example Seduce is used by Merchants and Bureaucrats to get things they want, and it’s used by military leaders to have people follow them. Seduce is related to Influence, but skills are separated so that the world of possibilities lies in only 1 of the skill groups, providing variety.

Skill groups are also used as a way to do skill checks. Such as you have to have at least Level 5 Crafting ability, to perform some action or dialogue.



[h2]Stat to Skill Group Distribution[/h2]

I want all my base data in the game to have relations to choices the player made about their character’s configuration, so skill groups are based on 3 sets of Stats, in varying amounts. Here is a table matching stats points to skill groups, which provides asymmetric balancing.

Note: I changed “Awareness” to “Aware” for formatting.

This table shows my mapping of how a stat (Strength, Agility, Wit, Awareness, Charm) gets mapped by value into each skill group.

In balancing my groups, I wanted a distribution of the skill groups that used more of a given stat to be balanced more in favor of that. So I went with all values were cubed. So if you have 2 points of Strength in a skill group, that is 8 points (2 * 2 * 2). If you had 3 points that was 27 points (3 * 3 * 3), creating a wide scale. That assignment looks like this:

Now differences are more obvious.

The end goal is that where you place your stat points gives you access to some high level skills in some areas, but not all areas. With the current balancing I see between 2.5 and 1.5 high level skill groups when assigning most of your points into 2 stats. You only have 25 points, and there are 5 stats, and 1 is the minimum stat value. So at most 2 stats can have 10 points assigned to them initially, leaving 2 more points to assign to make up the total of 25 points.

This is asymmetrical, and some distributions of points do give more high level skill group access, but because the stats also have individual meaning, just having more high skill groups may not yield better results for a certain build type. You can construct a character with high level skilled combat, but can only pick up light weapons like daggers, because their strength is too low. So more factors come into play for the big picture.

[h2]Testing it with different builds[/h2]

Here is a sample set of 10 characters with different distributions of stats. The numbers are assigned in extreme ways to test the boundaries, but there will be good builds with middle levels as well, bigger numbers does not mean better outcomes, just different skills available to work with:



And here is how they map to skill group max levels. Skills are available at different levels, and so the maximum level gives you higher level skills.

Max Skill Groups per Actor by Stat allocation

My goal was to have a distribution between max level 1 and max level 13. Some have 12 or 14 as the maximum, but otherwise the distribution is there. Dump stats get you a max level of 1, and putting 10 into stats gets you around 12-14.

This distribution doesn’t have to be perfect, because skills can be placed at any level to balance that progression properly, but having this range of 1-13 allows all the stat selection to map onto these skill groups. And skills will be selected both to make sure all the skill groups have good skills in them, and to map to the naming of the skill group, so that the world makes sense. When you look at the value of a stat, you can understand why a related skill group would be at that max level, so it makes sense you can’t use a high level skill with a low stat, and builds have differentiation.

[h2]How does this affect gameplay?[/h2]

The most important part of this, is how it affects gameplay. Let’s take a look at a couple of the tests and what they mean for gameplay.

[h3]Actor #10 Test Build[/h3]

Stats: Strength 10, Agility 10, Wit 1, Awareness 3, Charm 1
Skill Max: Combat 14, Influence 1, Craft 7, Experiment 3, Seduce 12

Actor 10 put everything into Strength (10) and Agility (10) and dumped the rest. This means they can get high skills in Combat (14) and Seduce (12) and mid-level skills in Craft (7), but only low level skills in Influence (1) and Experiment (3).

Being good at combat makes sense, and I mapped Strength as partially being “healthy” and a component of Beauty, which is part of the Seduce skill group.

However, Actor #10 has a Wit of 1 and Charm of 1, so even though they have high level Seduce skills, they could not use them in dialogue because they are incompetent at saying intelligent things or being charming. To use their high level seduce skill, they need to focus on non-verbal based seduction methods, which are skills I will add to the game, so that the play style is viable.

[h3]Actor #9 Test Build[/h3]

Stats: Strength 1, Agility 2, Wit 10, Awareness 10, Charm 2
Skill Max: Combat 7, Influence 3, Craft 8, Experiment 12, Seduce 1

Let’s compare actor 10 with actor 9. Actor 9 also has medium level Combat (7), but they dumped their Strength (1) and instead have high level Combat because of the other stats Agility (2) and Awareness (10). Because their Strength (1) is so low, they can’t wield axes, swords or hammers, and will be stuck with small weapons like daggers or cudgels. They are not strong enough to pull a bow. Casting spells usually does not require strength, and is mixed into Combat skills.

By specializing in something like daggers or casting, which meet their Strength maximum, while using their high level Combat skill to do larger damage with them.

So both actor 10 and 9 have high Combat builds, but they would have to approach their playstyles differently to maximize their advantages in combat.

Actor 9 also has high level skills in Craft (8), and Experiment (12), only having low scores in Seduce (1) and Influence (3). While these are high skills, the max only goes to 8 for 1 skill, still keeping them out of the elite skills of those groups.

So actor 10 can be an elite fighter, but actor 9 can be good at many things, yet actor 9 still can’t be elite at those things.

I like how this distribution sets up different possibilities that have viable explanations. The final balancing will be done per skill, so that applying the skill during gameplay feels right, and it reasons that the appropriate character build can use each skill or not, in a way that asymmetric balance to allow min-max but multiple dominant strategies.

[h2]Magic Numbers[/h2]

One of my goals for balancing is to have 1 or 0 magic numbers, which are used to help balance the stats. Having more than 1 magic number means the distribution will be complicated, and a person just thinking about it will probably not understand all the combinations. Having 1 number means there is a linear correlation between 2 values and players can understand that intuitively. Having 0 magic numbers means the map is what it says and it doesn’t change. This is the easiest to understand, if its small enough to remember, and is where I used the perfect balancing method I wrote about in the last blog.

In the case of mapping stats to skills, I needed to use 1 magic number, as just cubing the values and adding them together did not separate them into a distribution that met my above requirements.

Magic Scaling Numbers

I just multiplied these numbers to the end result of my calculation for mapping stats to skill group max level, and got the distribution I was looking for. To me, this is another good foundation for scaling the higher level elements of the game.

Goals
When the foundations are in place, then future tuning is more cohesive, because the tuning itself is built on the assumptions of how the world is being divided up in it’s design. Each piece of the game I design is mapped to these skill groups, and uses these stats, so their relationships together weave throughout the game.

Decisions you made in the beginning of the game will matter throughout the entire game, but there is viable play in many areas, but also room to min-max better outcomes. The goal being that the total space of outcomes is high enough that there should be multiple dominant strategies, and then how you play is more your preference, even taking min-maxing into account.

If you’d like to find out more, please Wishlist the game, so you know when it’s coming out, or Follow to see more updates like this.