I have been doing massive changes to the basic combat mechanics the recent months. This is the first part where I talk about melee combat. In later posts I will talk about missile combat and magic combat respectively.
I want TGGW to be a complex and rich game while having extremely easy and understandable rules. This is something that I think I have succeeded with, but it is possible to do better.
Let’s start by the melee attribute. For example, how good is a melee attribute of 3? How about 10? Obviously 10 is better than 3, but it is hard to get a grasp on how much better until you are more experienced with the game. Even though you may know that each point is increasing your to-hit chance by 10%, it still has to be evaluated in terms of who you are fighting and how high block attribute that monster has. A melee attribute of 3 might not be so much different than 10 against some monsters (e.g., a fungus), while for others it would make a world of difference (e.g, a wasp).
The old D&D-like to-hit
The actual chance to hit is computed from the attackers melee attribute and the defenders block attribute. The formula for this is simple enough:
50% + 10*(attackerMelee - defenderBlock)% where particularly high or low percentages are tapered down. This is actually almost identical to the modified d20 roll used in Dungeons & Dragons to determine if a blow is a hit or not (hit if
d20 + toHitBonus is larger than the defenders AC).
The D&D-like to-hit works very well because it scales. As you get stronger, monsters get stronger to so the to-hit bonus scales roughly at the same pace as AC in D&D. However, TGGW is not a game in which attributes scale. Attributes are merely used to differentiate characters and monsters. You may meet a low level monster with a high block attribute (e.g, a shimmering slime) and a high level monster with a very low melee attribute (e.g, a giant). In addition, attributes generally stay in the 1-10 range so there’s not much scaling to talk about in TGGW. TGGW doesn’t need a scaling system.
So in contrast, how good would it be to have a melee attribute of say 60%, as in “you will hit 60% of the time”? This is immediately intuitive. You could see that a 90% hit rate would be very good while a 20% hit rate would be very bad even if you are not familiar with the game (compare again to a melee attribute of 3 or 10). In addition, such a measure would be consistent no matter which monster you are fighting: 90% is clearly better 60% both against a wasp and a fungus, and in equal amounts.
The New Melee Attribute
The new melee attribute is expressed just like that: as a plain percent to-hit chance. It is your chance to hit any monster. A melee bonus of +1 will now translate to +10%. You will start with a melee attribute of 60%, which corresponds exactly to the to-hit chance you would have had against a block 0-monster which leads us to:
What about blocking?
Blocking will work the same way! You’ll start with a block attribute of 0% and any bonus to blocking will increase it. The to-hit mechanics will then be very simple: first a melee-check is done to see if the hit lands, if it does, then a block-check is done to see if it is blocked. This has the benefit that a buckler will be quite bad regardless of your opponent and a tower shield will be really strong regardles of the opponent.
The game will tell you both graphically and in the message log whether a blow was a hit, a miss or blocked (there are three options now).
Ironically, the actual chance to land a damaging blow to an opponent is harder to compute than before:
attackers-melee% × (100 - defenders-block)%. However, it is still quick and easy to get an understanding on the likelyhood to damage your opponent.
I see a number of benefits with this new system:
More Intuitive Mechanics
Percentages are universally understood, no calculations required to understand how good you (or a monster) is at hitting or blocking things. No longer do you need the manual for the formula or get the tutorial explanation that one melee points roughly is worth 10%. Open/closed melee will say +30% melee instead of (+3), flanking will say -20% to block instead of -2.
A lot of clutter can be removed from the interface: the actual to-hit number next to the melee-attacks of a monster (since it is just the melee attribute), the to-hit number in the message log (same reason).
The game will graphically tell you whether a blow is a hit, miss or block. This will quickly let you know if your problem is a low melee attribute or if the monster has a high block attribute. This was not easy to see before. It also feels more satisfying to see that a lot of misses on you is because of your shield and not that the monster is clumsy!
This system is more logical since you and monsters don’t scale with raw power much. If you are good at blocking, you are good at blocking regardless of opponent. If you are good (or bad) at hitting you are. Knowing that you will always block an average of 30% of melee hits is better information to use than knowing that you have “2 block” and have to examine each monsters to determine what that actually means.
More Hits for Everyone! (less luck based)
Melee attributes are now generally in the 60%-90% range and blocking is usually around 0%-40%. This means that even with a very low melee attribute (say 50%) against a very high block attribute (say also 50%) still would mean an effective to-hit of 25%. The not-so-uncommon phenomena in the current version of an to-hit chance of less than 20% is almost non-existent in the new system. That is a good thing. Some fights would be very long for no particularly exciting reason (sewer slimes come to mind). It also means less reliance on pure luck.
I think #7 was an amazing game, and now this version is great too. I think the feature that could raise the game to the next level now, would be similar level codes as in brouge. It would be great to play tournaments. we could share the level codes and lets see who can go the distance 😀
Yes, this has become the most common request lately! I agree it would be very nice to have. However, there are several things in the game that currently makes it difficult (but not impossible). One thing is that container content is generated when opened, which would mean different content even with the same seed.
But since it is requested so much I will really think about if it might be worth the effort to get to work 🙂
I think people ask this, because it is super rare when a roguelike fits well for tournaments. And I feel that tggw is super suited for this 😀
This is a good change. Straightforward, easy to interpret, and with a possible cherry on top in the form of possibly shorter fights.
My question is – what happens if you get melee/block to 100% or even higher? A certain hit/block? Perhaps higher values could scale down similarly as the current chance to hit, if they are too high?
I have not decided yet, I have three ideas:
1) scale down as you say, just like to-hit did previously for values over 90%
2) no scaling, and values over 100% becomes a bonus attack. So a melee of 120% would mean one attack at 100% and one free bonus attack at 20%.
3) no scaling, and values over 100% would be reduced from the opponents block attribute. 120% melee would mean an attack at 100% and reduce the opponents chance to block by 20%.
Out of these three options, the first one would serve as an incentive to not invest into Melee past a certain point, while the third one could, on the other hand, bring in guaranteed hits (or do nothing if a monster has 0% block anyway).
I like the second one the most for Melee – it helps translate your high Melee into (possibly) higher damage without affecting the monsters block chance.
For Block, the default scaling would probably work best, to easily avoid guaranteed blocks.
Thanks for your opinions! Agree that extra attacks are probably the most exciting effect. I’m a bit hesitant because of other things that gives extra attacks: dual wielding and counter attack. However, I think it would stay reasonable for most characters. Dual wielders would get only one extra attack for high melee skill.
Is this a bug? Shouldn’t that blow moved me back in the corridor?
It is kind of a bug yes. Or more of a limitation in the implementation. The direction of a knockback on the player is not entirely predictable, that’s something to remember.
It would be better if it was though, so I will see what I can do. Thank you for reporting!
Firstly: what happens when a character has a negative block %?
Secondly: Block gives an X% chance to prevent an attack that would otherwise hit; armor gives an X% chance to prevent each individual point of damage. Will there be an effort to differentiate more between the two stats, or do you think that this is enough?
A negative block currently have the same effect as having 0% block. I am considering maybe giving the negative part of block as bonus to the opponents melee%. But I think that might be a bit too complicated.
Block and armour still have quite a lot of differences even though they are slightly fewer now when you can block missile attacks:
* Armour only blocks physical attacks (no elemental attacks or special effects)
* Block can not block magic attacks, only melee and missile while armour still would help against magic attacks causing physical damage.
* As you mentioned: block is binary for the whole attack while armour will absorb some of the (physical) damage
I think these differences are sufficient right now, but I am thinking about refining combat rules further.