Carnegie Mellon grad • Software engineer • Video game composer (commissions open!) • RPG liker


not a whole lot on bandcamp but ig
skelothan.bandcamp.com/

pmd-audino
@pmd-audino

Some folks on the discord have pointed out how various changes in PMDO have made RNG more enjoyable or easier to deal compared to other roguelikes or main series Pokemon.

  • Critical Hits have a base chance of 0.
  • Additional effects never have less than a 25% chance of triggering
  • Sleep ticks down with every hit, and expires immediately if from a damaging hit
  • Paralysis causes inaction every other turn, for 3 turns
  • Confusion randomizes your direction to front and sides
  • Poisoning ends after 5 turns, always taking 5/8 HP (5/16 if the player stands completely still)
  • Statuses in general always end on your turn, guaranteeing your turn to act.
  • Traps are visible, but not always revealed.
  • You can never miss twice.

These design choices arose from my experimentation and playtesting of PMDO over the years and the formation of my own philosophy with how to handle luck factors. The factors I keep in mind for my personal RNG design roughly comes down to three things:

Boundedness of Outcome

What's the worst thing that could happen? Is it possible for a truly demonic RNG to carry a player into disaster from the start to finish? I came to look at these random outcomes as bounded or unbounded.

  • An RPG where every single attack could miss, from the weak starting attack to the emergency nuke, could result in you missing all 5 turns against an enemy that 5HKOs you. The number of misses you could get is unbounded.
  • A roguelike that consists of only straight consecutive rooms, each with either an enemy or a healing item, could give the player nothing but enemies until they collapsed from attrition. The number of enemies they could face before obtaining necessary resources is unbounded.
  • Tetris, implemented with naive RNG of piece spawning, could theoretically give the player all snake pieces, which will cause a player to top out as they have no way to put them all together in rows. The number of bad pieces the game could hand them is unbounded.
  • A more conceptual example: an infinite deck of playing cards has infinity of every card. The number of unwanted cards a player could consecutively get is unbounded.

In earlier days of PMDO development, I approached RNG from the lens of input vs output randomness. I experimented with purist views and removed factors like missing or additional effects entirely. But with testing these things on and off I found that this model broke down in increasingly noticeable ways. The above examples feature both inputs and outputs, but their chance of dealing catastrophe to the player were equal. Output randomness is just input randomness delayed to the next turn, and it seemed better to view the role of luck in a continuum than fixating on single instances. And what seemed to matter here is the capability for the RNG to be continuously adversarial from start to finish.

  • A finite deck will guarantee odds of cards that werent yet drawn, with more reliability the smaller the deck. This RNG is bounded to the number of cards in the deck. Modern cardlikes tend to have significantly smaller decks than traditional card games, and often benefit from this smaller possibility space.
  • The standard Tetris RNG enforced by the Tetris Guidelines generates one of every piece in grouped bags. It is bounded to once per 7 drops. This provision was made specifically to allow the player a manageable even-ness of probability to play with.
  • A roguelike that consists of only straight consecutive rooms, with healing items placed at every 4 or 5th room, is guaranteed to allow the player to keep going assuming the monsters in between are a survivable gauntlet up to that point. It's bounded to a mnimum of 1 item per 5 rooms. This is used in practice: Brogue and numerous other roguelikes use this to properly pace out their food spawns to ensure the player doesn't starve. PMDO follows this in its apple and leppa spawn.
  • An RPG where the player can never miss twice is bounded to 1/2 their average attack effectiveness. If the player missed their first swing, they are now in a situations where it's better to use the strongest attack on the next turn to make up the DPS. If they landed their first swing, maybe it's better to conserve resources.

PMDO can never miss twice. If I wind up in a situation where I have to gamble life and death on an unguaranteed attack, there's usually something in my last 4 turns that tells me I messed up somewhere. Additionally, chained applications of crowd-controlling status effects such as flinch simply cannot work: since players recover from the status on their turn, they always have a window of time to respond. From my journey in iterating this game, I've found bounded/unbounded categorization to serve me better than input/output in quantifying satisfying risk management and adaptation.

Severity of Consequence vs Warning

How random an outcome can be is only part of the equation to making a player upset or satisfied. The other part is what's at stake.

  • Getting hit with an instant death that sends you back to the beginning of an 8 hour endeavor is severe. Getting hit with instant death that costs you 5 seconds to next respawn less so.
  • Losing a long 6v6 ladder game of Pokemon Showdown is severe, at least compared to losing the RPS-like 1v1 ladder.
  • A status condition where you cant do anything but take damage is severe, but status condition where you cant do anything until you take damage is less severe. And this is even less severe when your ability to act is spread across multiple units on the field instead of one (Singles, Doubles, PMD's 4-team simultaneity).

Games can be enjoyable tests of skill with immense amounts of luck intertwined so long as it's easy to recover and try again. This can apply to recovering between sessions, or recovering between events occurring in the same game session.

The more severe a consequence or outcome I introduce, the more I make the game warn the player about it, the more opportunities I give to the player to avoid it. This also bleeds into the practice of telegraphing threats ahead of time in completely RNG-less settings.

  • In PMDO, status effects are much easier to deal with, and so their chance of occurrence is much higher. There will always be a chance of burn with Ember. Always a chance of poisoning with poison sting. These are things the player must always keep in mind, but this demand is made more reasonable by the larger amount of backup plans available to deal with them. The awkward situations that enemy procs could land the player in create the varied challenges to serve as the input randomness of any given turn thereafter. Factor in their own team's likelyhood of scoring these effects on opponents, and you have a setup that breeds surprise and encourages adaptation. This is also a strong point of battles of main series Pokemon's ingame campaigns- the inconsistency of additional effects drives much of the situational variety seen in battling.
  • This also affects trap philosophy: Traps that are guaranteed to hit up to 1 tile away for a recoverable status effect or damage are unidentified, while autotargeting traps with severe or long-term consequences (item destruction, PP-zero) are all revealed.

The Demand for Presence of Mind

I often try to keep the rng outcome tree relatively tame within a round of the game. In my playthroughs, thinking several turns ahead has proved satisfying when each of those turns results in two or three possible outcomes. Thinking several turns ahead when each of those turns can lead to seven leads to multiplicative game trees that demand a presence of mind beyond my grasp. This is also something that can happen with purely RNG-less games.

It is possible to take a step back and analyze every possible outcome on every possible set. Moments like these are intense in their own right even when spending 10 minutes on attack selection. However, I chose not to design for this pace of gameplay.

  • This is why the base crit rate is 0, and also why your heart rate spikes when super luck absol enters your screen to temporarily reintroduce that demand for playing around the crit range.
  • It's also why moves with additional effects often have high accuracy, as their ability to miss can add an extra layer of complication to the effects that already need consideration. Moves that have multiple possible effects- such as Fire Fang- also make their effects mutually exclusive: Flinch or Burn or nothing. Not Flinch, Burn, Flinch+Burn, or nothing.
  • Enemies' movesets to begin with are also limited often to 2, to moderate the preparation demand on what attack they might choose (and also helps give them their own identity).
  • Pertaining to trap detection, this demand for presence of mind was something I experienced in other roguelikes. In Zero Isle South and some of the more stressful Shiren dungeons, the optimal approach for such trap laden torture chambers was really to move forward, swipe to reveal trap, move forward, swipe to reveal trap, etc. The alternative was to simply move forward and accept a lingering paranoia. When I played these dungeons, I swiped paths through all rooms, all the way through. For Destiny Tower, which prevented swipe reveals, I even threw rocks to test the tile 2 spaces ahead (if it's a trap, the rock will bounce off). This was simply not something I wanted my own players to experience.

Hope this helps for aspiring modders to understand the idea behind the mechanics they're working with, and also to inform decision of their own changes.

This content is marked with CC0 1.0