(Mis)adventures in roguelike development: why old-school RPG rules

I’ll briefly explain here why the roguelikes are the occasion for the renaissance of old-school pen&paper ruleset. Why I believe this match is perfect.

The fact is that with the latest generation of games we moved toward the “analog”. The evolution of the Elder Scrolls games makes this fairly obvious to notice. The biggest failure of Morrowind’s combat (as well as Daggerfall) was that there were to-hit rolls. You swung your weapon and the game would roll to figure out if you hit your target or not.

This way of resolving combat is an heritage of classic pen&paper RPG rules, but the problem is that they do not make sense in a game like Morrowind. Those rules were made to simulate the entirety of combat. AD&D rules, for example, were abstracted to simulate an entire minute of combat with just one die roll:

Advanced Dungeons & Dragons 2nd Edition
A round is approximately one minute long. Ten combat rounds equal a turn (or, put another way, a turn equals 10 minutes of game time).

But these are just approximations–precise time measurements are impossible to make in combat. An action that might be ridiculously easy under normal circumstances could become an undertaking of truly heroic scale when attempted in the middle of a furious, chaotic battle.

When making an attack, a character is likely to close with his opponent, circle for an opening, feint here, jab there, block a thrust, leap back, and perhaps finally make a telling blow. A spellcaster may fumble for his components, dodge an attacker, mentally review the steps of the spell, intone the spell, and then move to safety when it is all done. It has already been shown what drinking a potion might entail. All of these things might happen in a bit less than a minute or a bit more, but the standard is one minute and one action to the round.

So during one minute a lot could happen, many attacks, feints and moves. But you can’t simulate all that, so you abstract it and concentrate it in one to-hit roll, leaving aside the details.

But in a game where you control your character in first person and decide how to move, circle the enemy and swing your weapon, then all those details ARE PART OF gameplay. It’s not anymore an abstraction of combat as if you controlled your character from a overhead perspective and moved in combat turns. The in-combat time is analog. Finely grained. And so it’s not a good idea, design-wise, to mix abstract combat rules with analog combat gameplay.

That’s why in Oblivion and Skyrim the to-hit roll was discarded. If you are in range and swing you weapon, your weapon always hits. And then think that if technology was advanced enough that it could simulate a full body, with internal organs and everything, then it would render the abstraction of “hit points” also unnecessary.

A roguelike is a different type of game, almost entirely “digital” and abstracted. The game-world is made of discrete cells, space and time are stricter. Your character is just a single letter printed on screen. All this makes abstraction required. You can’t manually swing your weapon, dodge and parry with precise timing as in Skyrim or Dark Souls, so you need game rules that simulate all of this internally. You need statistics that define your character and what it can do, options as decision at a higher level.

That means that a roguelike is much closer to the nature of old-school RPGs than how modern, “analog” games can be. It’s not an issue of “new VS old”. The old-school way is not surpassed. It’s just that we deal with two different genres, kinds of games. Cultural trends simply made one more popular because abstraction is always a barrier to accessibility (and that’s why first person shooters are popular too: as little abstraction as possible, no layers between you and the simulated world).

And that’s why I believe that rediscovering those old-school rule systems is the interesting thing to do, for roguelikes, instead of writing roguelikes that also hide mechanics behind layers of complex math.

If you STILL think this only applies to old games, then I point you to Project Eternity. At this moment they are right about to hit $3,500k. That’s a lot of money and people involved. One of the ideas sitting at the foundation of this project is to go back at party-based, top-down fixed camera of Baldur’s Gate. The consequence of that choice is making all I wrote here relevant for that game too. We’ll see if their game design is savvy enough to properly deal with it.

Even the just released XCOM has overhead perspective and to-hit rolls.

(since you can’t post comments on this blog, use this just in case)

Posted in: Uncategorized | Tagged:

(Mis)adventures in roguelike development: Rule System

I’ve been silent here because I actually spent time doing stuff. I’ll eventually recuperate the “diary” but for now it already exists in a form: here.

That became a long thread.

In the meantime I wrote down some first high level design consideration that will direct toward the “system” I’ll use for the ruleset governing the game.

Following are a number of RPG classic systems that I consider interesting and whole mechanics I’m planning to integrate into my roguelike. So before moving on, I wanted to compile a simplified list of a standard type of attack in each of these systems. Just one attack, so not a whole combat turn.

(surprise roll d100)
– Initiative 1D10, subtract related speed component, add speed of action
– TO HIT: skill %. Succeeds if less than skill level. If lower than 10% of the skill -> critical. (plus modifiers due to cover/movement)
– (target can parry by spending one attack)
– Check for location. Roll another %. If under 40% multipliers to damage apply.
– Roll damage dice dependent on weapon. If critical, it does max damage the weapon can do, without rolling.
– Armor value is subtracted from damage (armor is locational and has values for different types of attack: cut, blunt, pierce, fire, chemical, stunning, electrical).
Note: if total damage exceeds a certain Wound Level (75% of total hit points), the target is dazed.

Considerations: two weak points. The first is I don’t like parry using attacks, since if you fight to win you’d rather try to kill the enemy as fast as possible instead of wasting attacks to parry. The other weak point is that location is random and can push damage quite a bit, so a bit too driven by chance.

(surprise, DM decides)
– Initiative 1D10 + agility bonus. Initiative is rolled only once for whole combat, same order for every round.
– Can set a “stance”, like all out attack, or defensive stance, that affect hit rolls.
– TO HIT: skill %. Succeeds if less than skill level. (some environmental variables may apply)
– (target has one “reaction” slot to use to parry or dodge)
– Check for location. This uses the same to hit roll, but with reversed order. so a 15 to hit, becomes 51 for location. Location is just location, doesn’t affect damage.
– Roll damage dice. If roll a 10, roll to-hit again, if successful, roll a 10 to add to damage. If you keep rolling 10s, they all add up to damage.
– Armor value is subtracted from damage.
Note: if damage surpassed a certain level, it’s a critical with consequences.

Considerations: it’s more streamlined and has a free slot to use to parry or dodge, instead of wasting attacks. Has the nice trick to use only one dice for both to-hit and location, though it won’t matter in a computer implementation.

(surprise happens after initiative, may need perception rolls)
– Initiative 1D20? + dex bonus. Initiative is rolled only once for whole combat, same order for every round.
– TO HIT: 1D20. Succeeds if above armor class of target. Base 10 + armor + other bonuses.
– Roll damage dice. Armor only counts for to-hit and doesn’t absorb damage.
Note: a to-hit of 20 is critical if another to-hit roll is successful. Weapon type says how many times to reroll damage, usually 2x.

Considerations: it’s fairly simple. It has the usual realism issues of D&D. There’s no “skill” since you only get bonuses through stats and new levels. Armor doesn’t absorb damage, which means that if you fight a guy in full platemail with a knife and hit, you do as much damage as if the guy was naked. If you fight the same guy with a knife or a long sword, there’s also no difference in being able to hit him. There are a few combat maneuvers, but parry doesn’t seem to exist.

– Initiative is fixed. No dices being rolled. It depends on various bonuses and conditions.
– TO HIT: % dice + attacker Offensive Bonus – defender Defensive Bonus. You check the value you get on a table with the defender armor value. Rolls are open-ended, so you keep rerolling and adding, as long you go above 95.

Considerations: that’s it basically. It all depends on HUGE weapon-specific tables that tell you if the attack fumbled, was critical, and how much damage it dealt. The good aspect is that attacks consider the defensive bonus of who is attacked, and before a turn you decide how to redistribute your Offensive Bonus to the Defensive. So there’s a granular type of defense where you decide how much to focus on defense and how much on offense. So “parrying” is just about relocating your bonus from offensive to defensive, and is not an active “action”.

(surprise, the DM decides)
– Initiative is a skill value. No dice rolls required.
– Attacker declares: target, weapon, (optionally) aiming (high, mid, low, -10 penalty), weapon aspect (if you want to exploit an armor weakness).
– Defender declares: Block, Counterstrike, Dodge, Nothing.
– TO HIT: BOTH parties have to roll % dice, and result is mapped on a simple chart. Simultaneous strikes are possible.
– Roll % dice for specific location (this can be slightly rigged by declaring a general aim above).
– For damage you usually roll 1D6 (regardless of weapon), add result to the fixed weapon damage, subtract armor absorption, and, if result is still positive, see on the Injury Table what kind of injury you get matching the value for the location.
– Injuries directly and immediately apply penalties to stats and skill checks.
– Death essentially comes from the target getting disabled or fainting.
– Healing, after successful treatment, is dealt for every single wound. Every wound has a chance of going down one level every five days.

Considerations: This is an odd beast. Armor not only just absorbs damage, but also makes one easier to hit. There are no hit points, and only wounds treated separately. Weapons can be used for different types of attacks, blunt/edge/point, and armor has different protection values against each. Which also opens the possibility to “Compound Layers”, meaning that you wear armor in overlapping layers and they all add up to the protection of that specific location. You could even attempt wearing a DOUBLE PLATE, this has some diminish returns, but would also give pretty huge penalties to attacks and defense. Classes are not restricted to certain weapon types. No levels. So it does a lot of things I like as a system.

After all that I’ll probably go with an hybrid system. I actually like Dangerous Journey general system as it seems well organized. For example every skill falls under some attribute. The attribute not only provides some basic value for the skill, or eventual bonuses to skill checks, but it also sets a maximum of expertise in that skill. So for example if you have Strength of 60 and use an attack based on strength, your skill won’t exceed 60. You can’t get better than that, if Strength is not improved first.

The hybrid I could make would be the character system of Dangerous Journey plus the combat system of Harnmaster. Since they both use % skill they integrate smoothly. I’d then have to simplify a lot the wound/healing system, since I can’t make a player wait idly for days for every small wound.

I was also considering a party system. Initially the idea was to have it abstracted. So you’d still only see one “@” on screen representing the whole party. Instead I thought that a real party isn’t much harder to do. The idea is: you still control one “@” normally, but as a monster is sighted you enter a combat phase. As the combat phase starts you get to “deploy” all your party characters in a small area around your main character. And during the whole combat you move the party members individually. Optionally, you can initiate combat even if no monster is around, and so you could split your party and move party members individually. So it’s a rather flexible system. I’m aiming to have up to four party members in total, including the main character.

I also started to deal with how progress happens. No levels. The characters earns XP points for successful actions like dispatching monsters, finding loot, completing quests, the usual. But there’s no level and XP points are used as “currency” (this is just one of the many mechanics I’ll borrow from Dark Souls). By spending these XP points you get chances to improve various aspects of your character (stats, skills). If the dice roll used to improve a stat is unsuccessful, you get no improvement but XP is still used up. If the dice roll is successful you get the improvement BUT the XP requirements across the board for further improvement go up. Still undecided about how to handle death, no permdeath, but there will be probably a way to lose XP, Dark Souls-like.

Only stats and skills that the character actively used can be improved, but you only need to use a skill once to be able to improve it (so you get enough flexibility to improve whatever you want, without having to “grind” skills).

In order to prevent save cheat mechanics, to avoid that one could reload the game if an improvement roll is unsuccessful, the game already rolls these improvements when an action is first made. And when the player decides to use the XP the game only “reveals” the dice roll it made long before. That way, reloading a game would only produce the same result. :)

(and there would be some time limits so that you need to wait at least a day before spending XP again to improve the same skill. Which means that the fasted path is to play the game normally instead of saving/reload scumming)

On iterative design development it is very likely, essentially guaranteed, that “wasting” XP on unsuccessful improvements is a frustrating rule that would be erased and the process streamlined. But we’ll see.

(since you can’t post comments on this blog, use this just in case)

Posted in: Uncategorized | Tagged: