Psychopomps Are Missing: An Introduction
Psychopomps Are Missing (working title, very subject to change) is an RPG I'm developing in RPG Maker MV that features a lot of custom code. The game itself focuses on a group of seven individuals who are the only people assigned to a specific psychopomp when various parallel realities all collapse down into one, resulting in catastrophic chaos.
By this point, I suspect most of you are wondering what a "psychopomp" even is. Psychopomps are beings that ferry the souls of the newly dead to the afterlife. Synonyms would include "reaper" and "envoy," and famous examples are Charon from Greek mythology and Valkyries from Norse mythology.
The game itself will deal with themes that are important to me: religion, sexuality, nonsexual nudity, and culture. I'm very aware that the game I make will say something, and I want to be very expressive of myself through it. However, it is very important to me that the game I make is fun and engaging first and foremost!
Before I go any further, I want to emphasize a couple of things. The first is that everything I'm going to discuss about this project is subject to change. At the time of writing, it's still very early on in the development cycle, and a lot can happen to change stuff up over the course of development—note that in any screenshots I might use here, that I have yet to modify the default window skin. Changing it is on my todo list, but it's a pretty low priority right now. The second is that I personally have to be very careful how much I plan. If I plan too much, I've found that my creative interest gets expended, leaving me with little motivation to actually implement those plans, which also begin to feel creatively stifling. Thus, many things about the game are still to be determined.
There are a lot of things I want to cover here, and figuring out an order is hard, so here's a list of what I'll talk about so you know what to expect from this article.
- Character Mechanics
- Battle Mechanics
- Game Structure
- The World
Character Mechanics
There are a lot of parts to a player character, mechanically speaking. They have stats, equipment, and skills. Most skills are learned from character classes, which is also an elaborate system. This is where choosing an order to present things becomes challenging, because most of these character mechanics are important for how battle works and vice versa. So, which should I discuss first? There's arguments either way, but I've decided to start with character mechanics!
Stats
There are a lot of character stats in Psychopomps Are Missing! Let's look at some screenshots and talk about what everything (currently) is.
This is the first of several status screens. The elements above that horizontal line are consistent across these screens. To go over them briefly:
- HP: The character's hit points, as expected. The character dies when these reach zero.
- MP: The character's mana points, used as a cost for many skills. This does not naturally recover, so it works as a sort of endurance mechanic between rests.
- Level and experience in the current character class. There will be more about character classes a bit further down, so I won't repeat that information here.
Note: Any changes made to maximum HP and MP are applied to the "bottom." What I mean by this is that increasing your maximum will give you more to your current values as well, while decreasing your maximum will also decrease your current values. Losing HP this way will not reduce your current HP below 1, and losing MP this way will not reduce your current MP below 0.
This brings us to a long list of stats! Let's start with the leftmost columns first!
- Attack: The character's effectiveness with physical attacks.
- Defense: The character's resilience to physical attacks.
- Magical Attack (M.Attack): The character's effectiveness with spells.
- Magical Defense (M.Defense): The character's resilience to spells.
- Agility: The character's speed. This affects who goes first in battle, but it also influences other properties which will be discussed later.
- Luck: This does a lot of different things! It affects damage ranges, chance for attacks against you to be glancing blows (more on this later!), and the chance to apply states to foes (such as conditions).
- Physical Evasion (Evade): Affects the likelihood to evade (completely avoid) physical attacks. It's presented as a percentage, but that might be a bit misleading in that it isn't an actual percent chance. I'll describe it more in the battle mechanics section.
- Magical Evasion (M.Evade): Like Evade, except for spells instead of physical attacks.
- Heal Power: A multiplier for healing skills. For example, 25% Heal Power would mean a healing skill would only heal for a quarter of the base amount, while 125% would heal for 25% more than the base amount. It does not affect healing items. Some skills may be more or less affected by this stat.
- Healed: A multiplier for healing used on this character. This is a sort of counterpart to Heal Power, in that the higher it is, the more effective healing skills (but not items!) are on this character and the lower it is, the less effective they are. Some skills may be more or less affected by this stat.
- Counter: The likelihood to counter physical attacks. I've currently restricted this to "melee" attacks; that is, skills (including standard attacking) that use your weapon or martial arts. I've done this because other types of physical attacks are presented as ranged moves, and I don't want those to be able to be countered. Unlike evasion, this is an actual percent chance.
- Reflect: The percent chance to reflect a spell that targets you back at the caster.
- Critical Hit Avoidance (Crit Avoid): This is also not technically a percent chance. Rather, it affects the critical hit calculations, making it harder to land a critical hit on this character. More on this in the battle mechanics section.
- Hit% Boost: This is hard to explain isolated from the battle mechanics, so go check that out for more information. In short, this makes it easier to land good hits, especially critical hits.
- Precision: This affects a type of accuracy, but particularly, damage rolls—go check out the battle mechanics section for a more detailed explanation of what precisions do. One of three types of precision, this one affects any skill that isn't a Weapon Skill or Spell.
- Weapon Precision (Wpn Precision): Precision, except for Weapon Skills.
- Spell Precision (Spl Precision): Precision, except for Spells.
- Mana Costs (uses the Mana icon, which is a blue triangle): A multiplier for the general mana cost of skills. (There are also multipliers for costs for specific types of skills, hence the "general" part.) 100% is full cost, more than that is increased cost and less is decreased cost.
- Stamina Costs (uses the Stamina icon, which is inspired by the Cloranthy Ring from Dark Souls): Like Mana Costs, except for general Stamina costs of skills.
- Flinch Chance (Uses the Flinch icon): How resistant this character is to flinching. If you flinch, you cannot perform any further actions this turn. The lower the value, the less likely it is that you'll flinch. You can also be Immune (Imm.) to flinching.
- Stamina Recovery: How much stamina this character restores at the end of each turn. The base recovery amount is 25. I'll break down stamina more in the battle mechanics section; however, it is important to know that stamina recovery is affected by equipment "weight" (more on this when discussing equipment) and itself affects some other things.
This brings us to the right column, which are type rates. These affect how much damage a character takes. So, a 25% Fire value means that this character reduces any fire damage she would receive by 75%. If this value is above 100%, the character takes increased damage. And yes, the 0% in Arcane means she takes no Arcane damage.
There are only two categories of things here. The first is Type Affinity, which affects how much damage this character will deal with a given type. A higher value means the character will deal increased damage with that type, while a lower value means the character will deal decreased damage with that type. 100% means that the damage is unaffected.
The other thing here are Condition Rates, which affect this character's chance to be affected by a condition. 100% is the base rate, less than 100% means the chance is reduced while more than 100% means the character is more susceptible to that condition. It should be noted that 0% means that a character can't be newly affected by the condition, while being Immune means that the character cannot be affected at all: they can't become affected, and if they are affected, then they are immediately cured of the condition.
This one sort of explains itself, as I wanted to make sure the player had good information for these rather odd stats. I should add that, generally speaking, a character can't miss with skills. States, such as the Blind condition, can change that, of course! So can low precision. I'll talk more about missing, as well as Glancing Hits, in the battle mechanics section. For now, I'll note that Glancing Prowess, like evasions, is not a percent chance.
Equipment
There is a lot to discuss when it comes to equipment, so I'll be intentionally glossing over some of it in this particular post. Specifically, I won't be going into much detail on class and character specific gear. Without further ado, let's look at the equip screen and discuss it!
This is Ioannes's equipment screen, as you can see given his name in the information panel on the left. That panel shows what stats will change if you change equipment. What is displayed there is dynamic, since I can't possibly show every single stat given how very many there are.
What I want to go over here are the different equipment slots, though—not how stats change with gear! Before I do, I should mention "weight." Strictly speaking, there isn't an actual weight value like Dark Souls; however, equipment can reduce your base Stamina Regeneration Rate. Some classes (and one character) ignore decreases to this value, usually heavier, more trained classes, such as the Fighter class.
- Weapon: As you'd expect, this is for the primary weapon that is used with weapon skills. Almost every character class can wield all weapon types. Different weapons have different "weights" by default (e.g. daggers don't negatively affect stamina regeneration, while something like a sword will). All of these are functionally melee weapons, and you'll probably want to use one, since punching with your bare hands isn't particularly powerful. As there are only six of these, I'll briefly go over them here. Note that I'll be discussing default properties; as you'd expect, these can vary with actual equipment! Also, weapons (and skills) are rated in "power," not damage, given how it filters through the damage formulas I'll discuss in the battle mechanics section.
- Daggers: Daggers are light and improve Hit% Boost and Weapon Accuracy. By default, they deal 30 Slashing power. They also hit twice when used. To compensate for the power this brings to Weapon Skills, they also increase the cost of Weapon Skills by 50%.
- Swords: Fairly light, swords deal 75 Slashing power by default.
- Spears: Heavier than swords, but not by much, spears deal 75 Piercing power and slightly boost Weapon Accuracy.
- Maces: As heavy as spears, maces deal 75 Striking power and dramatically increase Hit% Boost, though this is something I'm evaluating (they currently do this because of what Hit% Boost used to be in an older iteration of the combat system).
- Mage's Staves: Light, these staves reduce MP costs by 20% (though I may change this to spell costs; I'm uncertain, though, since that'd also reduce spell Stamina costs). They only deal 30 Striking power, though.
- Cleric's Staves: Light, these staves boost Healing Power by 25% and deal 50 Striking power.
- Tomes: Rather heavy (even when compared to Spears and Maces), Tomes boost Spell Precision by 50% and deal 60 Power—the type varies from tome-to-tome, but typically one of the types other than Slashing, Piercing, or Striking. They might need a buff?
- Offhand: There are twelve types of offhand items. Note that sometimes Weapons are two-handed, preventing the use of an offhand. Which ones a character can use is based primarily on their current character class, though each character has one they can always use, regardless of class. I won't go into high detail on these, but they can be grouped into loose categories:
- Ranged weapons: Bows, Slingshots, Trick Bombs, and Kunai
- Spells: Catalysts, Scrolls, and Cantrips
- Blocking: Shields and Charm Bracelets (Note: more on blocking in the battle mechanics section.)
- Miscellaneous: Offhanded Daggers, Torches, Gauntlets
- Armor: For the most part, this is a pretty catch-all category. There are some classes that use things other than standard armor (such as Enchantments), but for the most part, characters just wear...armor. Properties vary widely, though in general, armor has a mixture of increasing your defense stats, maximum HP stat, and/or affects your type rates. It also is one of the areas you're most likely to see higher "weights," as more potent armor often comes with severe stamina regeneration penalties.
- Personal: This is a slot for equipment specialized to each player character. As such, I'm not going to go into it in detail here, as I'm not ready to talk about the characters much yet.
- Accessory: There are a lot of accessories. Which ones you can use are predominately dictated by your character class, though there are some that are character specific instead. Given the variety here, I'm not going to discuss them today, either.
- Ring: Rings can do a lot of things! In general, they come in two varieties: passive rings and signet rings. Passive rings do something passive, such as grant health regeneration (which is what the one in the screenshot does). Signet rings grant Signet skills, which can also do a wide variety of things. I'll discuss skill types in the battle mechanics section.
- Omni Skill: This is a slot for, well, omni skills. These are skills that can be equipped and used regardless of class or character. The effects can vary greatly, as do the acquisition methods. As you can see from the screenshot, I haven't made icons for most of them yet!
Skills (The Brief Version)
I'll talk a lot more about skills in the battle mechanics section. For this section, I'll just briefly mention how you get skills for your characters to use!
Most skills will be acquired by gaining levels in a character class (see below). However, this isn't the only way to get skills! Many skills are attached to pieces of equipment, either as a way to represent using that item (such as bow attacks) or as a bonus effect. Of course, omni skills are simply a skill you can slot in. Some accessories are similar to omni skills.
There are also a few skills you get in other ways. Notably, each character has a skill they start with that represents them in some way. For example, Ioannes (mentioned previously) starts off with "Hug", which is a healing skill. My current plan is for each character to learn a new skill during pivotal moments in their personal development, which will largely be driven by their interactions with the other characters. Other events may also give skills. The current example of this is near the start of the game, when each character is randomly given a sort of spiritual gift skill from an early NPC. (The randomness of this was done to add variety to repeat playthroughs, both in-and-of themselves and by hopefully encouraging building characters in different ways.)
Character Classes
There are a lot of character classes in this game. Specifically, there are forty-two (42) character classes, which doesn't include the flavorful ones that each of the seven player characters start with. (These starting classes don't teach skills and have absolutely terrible stats; they exist entirely for narrative and flavor purposes at the start of the game.) Given this huge quantity, I'm not going to go over all of the classes now, but I will talk about them more generally.
Character classes are a significant determiner of a character's stats (there are other things that affect stats, of course, including the characters themselves, equipment, and another mechanic involving the missing Psychopomps that I'll discuss more in game structure) and what equipment you can use (primarily in the form of offhand items and accessories).
Each character class has six levels. You start at level one. Each level you gain gives you a new skill, for a total of five skills to learn per class. There are no stat differences per level within a class! A level 1 Fighter and a level 6 Fighter have the same stats.
Character classes are divided into three tiers: Base classes, Tier 1 classes, and Tier 2 classes. There are four base classes and 19 each of Tier 1 and Tier 2 classes. Tier 1 and 2 classes have requirements to be able to use them; each tier also has higher base stat totals (for maximum HP, maximum MP, Attack, Defense, Magical Attack, Magical Defense, Agility, and Luck; I've based my formula for determining these stats on the Pokémon stat formula, but with a locked level—I did this to make it easier for me to balance the game, since I understand Pokémon base stats relatively well due to playing Pokémon competitively in a college club).
You can see the interface for changing character classes in the screenshot below.
The base classes are Fighter, Rogue, Mage, and Cleric. Most Tier 1 classes require you to achieve specific levels in one or two base classes, though four of them must be unlocked by finding NPCs in the world to teach them to you. Tier 2 classes require you to reach maximum level in three Tier 1 classes.
One final note on character classes is that not all classes require the same amount of experience points to level! Base classes have relatively low requirements, while Tier 1 classes fluctuate wildly, depending upon how much experience you need in base classes to be able to use them. All Tier 2 classes require the same amounts of experience to level—naturally, these requirements are higher than the ones for lower-tiered classes.
Battle Mechanics
Psychopomps Are Missing uses a turn-based battle system. It uses the same fundamental core that RPG Maker MV uses, but with a lot of changes to the underlying mechanics. Structurally, this means you input commands for each character in the active portion of your party, then they and the enemies take turns performing those actions based on the speed of their action(s).
Let's dive into the steps and phases of a turn, discuss the complexities of the damage formula, take a look at conditions, briefly touch on buffs and debuffs, and go over the different types of skills!
How a Turn Works
If you choose Fight, you enter combat commands for your party. You can't choose to fight if all of your active party members are dead.
If you choose Swap, you can freely switch which characters in your party are on the front lines and which are in reserve. You can't swap if all non-active party members are dead. Once you're done swapping, you need to back out of this menu and choose to either Fight or Escape to continue.
Once you choose to Fight, you proceed to the next step, which is inputting commands for your party members. From here, you can choose to either use a skill (which includes Attacking with your weapon or attempting to Dodge, which dramatically boosts your evasions for the turn) or an item.
When you've inputted commands for each party member, then those actions and the enemy's actions get executed based on relative speeds. Final action speed is determined by Agility multiplied with Stamina Regeneration plus the move's speed. Weapon attacks are also affected by an attack speed stat.
Once all actions have finished, end of turn effects happen. This includes ticking down the durations of things that have turn-based durations (states, such as conditions, and buffs and debuffs) and applying HP regeneration, MP regeneration, and Stamina regeneration. Note that HP and MP regenerations are capped at 50% of their respective maximum values, both positive and negative (e.g. you can neither gain nor lose an amount of HP that is more than half of your maximum HP as a result of HP regeneration or degeneration).
Battle ends if you Escape or one side has no remaining surviving battlers. For the player's party, this means all seven party members (the four active members and three non-active members) are dead. If this happens, rather than a Game Over, the player's party is returned to the Crossroads of Reality. While there are lore reasons for this, I frankly really do not like handling player failure by asking the player to reload a save file, so for any game I make, I'm going to avoid doing that. I'll discuss the Crossroads of Reality later in the The World section.
The Damage (and Accuracy) Formulas
Get ready for some math! Because this section will have a lot of it! But first, here is the general process for determining the results of a damaging move: the first accuracy check, the second accuracy check, and then the damage calculations. Once I've explained the ideas behind each phase, I'll go over the math.
The first accuracy check determines whether or not a move hits or misses as well as the possible damage range (more on this in the damage formula section). Misses are an atypical result, and must either be caused by very low precision or some effect that lowers the hit-rate, such as the Blindness condition. I've chosen for misses to be unlikely because I find them very frustrating, particularly in a turn-based game like Psychopomps Are Missing. At the same time, I do find the ability to cause misses to be able to happen very useful.
The second accuracy check determines the type of hit, whether a critical hit, a normal hit, or a glancing blow. It's also where evasion is checked, which causes the move to fail to hit, and thus do nothing. As is to be expected, critical hits deal more damage and are more likely to inflict any states the move may cause (such as conditions); normal hits are...uh, normal; and glancing blows deal reduced damage and are less likely to inflict any states the move may cause.
Finally, we have the damage calculation itself. This functions as a sort of contest between the relevant attack and defense stats. Moves use a base power, similar to Pokémon—in fact, I started off with the Pokémon damage formula, but moved away from it for reasons that'll be easier to explain after showing the math. I did this because I have a solid grasp on how Pokémon moves and power values function, and I wanted to set up a system I'd be able to start balancing more readily by having a basis of starting knowledge.
It should be noted that you can also block attacks, most commonly by using shields or charm bracelets. While blocking, damage is dealt to your Stamina instead of your HP. However, if your Stamina drops to zero, then your guard gets broken, which prevents any actions during your next turn, cancels out a big chunk of Stamina regeneration, and halves your defense stats. Still, blocking is a more reliable way to prevent damage than dodging is!
And now, math! (Note: x^y indicates that x is being taken to the y power, for those unfamiliar with the notation).
Both accuracy checks are kind of complicated, because neither uses a simple formula. Rather, a lot of conditionals are involved.
Here are the steps the first accuracy formula takes:
- hitBase = 2^((Luck / 100) - 3)
- hitBase_Low = -hitBase
- hitBase_High = hitBase
- If the character's hit value is negative, add it to hitBase_Low, otherwise add it to hitBase_High.
- "Hit value" is a hidden stat that gets calculated into the accuracy ranges status screen, which is pictured above in the character section. That status screen effectively shows what the character's hitBase_Low and hitBase_High values are for each category of precision, as will be discussed in a couple of steps.
- Set hitRoll to a random value between hitBase_Low and hitBase_High.
- If hitRoll is negative, divide it by the precision relevant to this move. Otherwise, multiply it by the precision value. This means that precision will always improve your hit roll, either by mitigating a negative value or increasing a positive value.
- If hitRoll is less than -hitBase and the move isn't a Certain Hit (one of three move types; the other two being Physical and Magical), then it misses. Otherwise, it's a hit. Remember hitRoll, because it'll come up again later!
- accuracyLow = -Evasion - GlancingProwess
- Both evasion and glancing prowess are stored as positive values, so I need to negate them to make the lower end of the range I'm creating.
- GlancingProwess is a pretty gnarly calculation that looks like this:
- 2 / Ï€ • arctan(Agility / 200) • (2 / Ï€ • arctan(Luck / 400) + 1) • StaminaRegenerationRate
- StaminaRegenerationRate is not the amount of stamina gained at the end of each turn; rather, that value is calculated using the StaminaRegenerationRate. It consists of two parts, the base regeneration value multiplier and a secondary regeneration value that multiplies against the maximum stamina value of 100. The first of these can be affected by equipment "weight" while the latter is not.
- I use arctan here because of the reliable limits on its range.
- accuracyHigh = 1 + (0.1 + hitPercentBoost) • Precision
- This is where Hit% Boost comes in. By helping define the top end, it, combined with the relevant precision value, affect how likely critical hits are (and all hits in general, really).
- accuracyRoll is then determined. It finds a value in the range between accuracyLow and accuracyHigh, but it does not do this linearly! Instead, a piecewise function involving cubes is used. The result of this function will always be in the range 0 to 1 and is used to find a place between accuracyLow and accuracyHigh. Technically, accuracyRoll = translatedRandomNumber • (accuracyHigh - accuracyLow) + accuracyLow. This produces a result somewhere between accuracyLow and accuracyHigh.
- First, a random value is inclusively selected between 0 and 1, which in interval notation is written [0, 1].
- Next, the move accuracy value (which is in a range between 0 and 2—that is, 0% accuracy and 200% accuracy, or the interval [0, 2]) needs to be halved to translate it into the interval [0, 1].
- If the random number is less than the halved move accuracy value, the following formula is used.
- result = 1 / (halved_move_accuracy^2) • (random_value - halved_move_accuracy)^3 + halved_move_accuracy
- If the random number is greater than the halved move accuracy value, the following formula is used.
- result = 1 / (halved_move_accuracy^2 - 2 • halved_move_accuracy + 1) • (random_value - halved_move_accuracy)^3 + halved_move_accuracy
- If the random number and halved move accuracy value are the same, then the random number is used as the result with no further modifications.
- Note: I've done this because I wanted a function that would create a weighted distribution, where any possible result could happen, but results are more likely to cluster around the move's accuracy value. This produces that result. And yes, it did take a while to figure out! I started by determining what sort of function would produce the kind of results I wanted, where values would cluster vertically. Once I'd determined a cubic function would work, I then had to figure out how to get it to match the constraints 0 = 0 and 1 = 1. It turned out that any single cubic function could not do this; I could match either end, but not both. However, they shared a point in common where the random number and the halved move accuracy are the same, so I set up a piecewise function that joins at that point to create a continuous function with the properties I desired.
- Once accuracyRoll is determined (which, as a reminder, is between accuracyLow and accuracyHigh), it is evaluated to determine whether this move was evaded, a glancing blow, a normal blow, or a critical hit.
- If accuracyRoll is less than -GlancingProwess, the move is evaded. Note: If the move is a certain hit, then the result is a glancing blow instead!
- If accuracyRoll is less than 0, then it is a glancing hit. (Of course, evasion is processed first!)
- If accuracyRoll is greater than 1 + CritEvade, then the result is a critical hit, unless the move is set to not be able to be a critical hit, in which case it is a normal hit.
- As you can see from this, critical evasion raises the threshold for a hit to be a critical hit, which is how it helps characters avoid being critically hit. A high enough value will make it impossible for a move used against that character to result in a critical hit at all.
- Otherwise, the move results in a normal hit.
- RawDamage = MoveBasePower • ElementalEffectiveness • 2^((offense-defense) / 138 - 1)
- MoveBasePower is determined by the move, of course, and is very similar to a Pokémon move. For example, 100 base power on a move is fairly strong.
- ElementalEffectiveness is a combination of the attacker's Elemental Affinity (which affects the attacker's damage with a specific damage type) and the target's Elemental Rate (which affects how much damage the target receives from a given type).
- offense is either Attack or Magical Attack.
- defense is either Defense or Magical Defense.
- Note that, while Attack is usually paired with Defense and Magical Attack with Magical Defense, this does not have to be the case! I've set things up to allow me to mismatch offenses and defenses if I so desire. Note, however, that physical evasion is always paired with defense and magical evasion with magical defense.
- Once the RawDamage value has been calculated, I do some further processing based on what type of hit it was (provided it wasn't evaded or a miss, of course). This is where hitRoll from the first accuracy calculations returns, as it affects resulting damage ranges.
- NormalHitDamage = RawDamage • (0.9 + 0.2 • hitRoll)
- GlancingBlowDamage = RawDamage • (0.25 + 0.08 • hitRoll)
- CriticalHitDamage = RawDamage • (1.5 + 0.5 • hitRoll)
- Once these values are calculated, they do get further sent through other processing! However, that processing is based on effects—such as damage reduction—that is highly variable, and thus outside the scope of this (or probably any) article.
I mentioned previously that this damage formula was originally the Pokémon damage formula, set to a certain level, but that I'd changed it. Now that I've gone over all of this math, I want to talk some about why I made the change. For those unfamiliar with it, at its core the Pokémon damage formula functions as a ratio between the attack stat and the defense stat (which is a fancy way of saying attack divided by defense). There are some other multipliers in there that are modified by level differences, but if you separate things out, you end up with, as I said, a ratio between stats.
What I discovered as I was playtesting was that both large defense stats and large offense stats were very powerful and that I wanted to tone down both. I could increase the multiplier to weaken defense (but strengthen offense) or shrink it to weaken offense (but strengthen defense), but no matter what I did, I couldn't weaken both simultaneously—one would get stronger when I made the other weaker. I realized I couldn't stick with a ratio-based formula, and that that would have to change.
Thus, I returned to an old favorite, the exponential equation! I first encountered this sort of formula in Guild Wars 1, and it has several extremely useful properties—I'll discuss those more below after going over another use of them in Psychopomps Are Missing. For now, the important thing is that I can control the intensity of the difference between attack and defense simultaneous; that is, instead of making attack stronger and defense weaker or vice versa, I can either make both weaker or both stronger. This solved my problem by giving me a knob to adjust for balance that worked the way I needed it to.
And finally, we have a multiplier that affects the chance for moves to apply states (such as conditions). Note that this isn't the only factor, as there is also a chance built into each move (for example, a move might have a 30% chance to inflict Bleeding), but this does affect it further.
- ChanceMultiplier = 2^((Attacker_Luck - Defender_Luck) / 100)
- This is effectively a contest between Luck stats.
- If the move was a critical hit, then ChanceMultiplier is multiplied by 2.
- If the move was a glancing blow, then ChanceMultiplier is divided by 4.
You'll notice that both the RawDamage and ChanceMultiplier formulas use exponential equations (2^x). While these are generally known for their dramatic pattern of rapid growth, if you control the size of the exponent (the x which functions as an input), these functions have a lot of very useful properties, particularly for converting a difference into a multiplier. If the exponent is 0, then the result is 1—a multiplier that changes nothing, exactly what you'd want from two equal values. If the exponent is positive, then you get a value greater than 1, good for increasing whatever it is you are multiplying, while a negative exponent results in a value less than 1, which makes it decrease whatever it is being multiplied with.
That's all for the intense math portion. Please let me know if you have any questions, and I'll do my best to answer them!
Conditions
Conditions are a common group of negative states. There is another category of negative states called "curses" that have individual functionality; I'll discuss those later as a concept in the skill types section. Note that conditions are also different from buffs and debuffs, which modify stat values for maximum HP, maximum MP, Attack, Defense, Magical Attack, Magical Defense, Agility, and Luck and are an entirely different system that I'll touch on in the next section. Also, conditions all last some number of turns; this duration may be in a range, in which case the duration is randomly selected somewhere between the low and high end of that range (inclusive of either end) when the condition is applied.
Psychopomps Are Missing has ten conditions, as follows:
- Bleeding: You lose a flat 30 HP at the end of each turn. You're also ten times more likely to be affected by the Infection condition. Lasts 20 turns.
- Poison: You lose HP equal to 10% of your maximum HP at the end of each turn. Lasts 12 turns.
- Burning: You lose a flat 93 HP at the end of each turn. Lasts 1-3 turns.
- Note: I'm considering modifying this one to be a combination of flat and percentile damage, but I've got enough going on that I haven't tried such a thing out yet at the time of writing.
- Infection: You lose 5% of your maximum HP, 1% of your maximum MP, and 7 Stamina at the end of each turn. Healing you receive is halved. Lasts 10 turns.
- Dazed: Your MP costs are doubled. Lasts 5 turns.
- Exhausted: You lose 10 Stamina at the end of each turn. Lasts 7-9 turns.
- Snared: Your Agility and evasions are halved. Lasts 5-6 turns.
- Blinded: -100% to your hit value (see first accuracy formula calculations above). This doesn't guarantee you'll miss, but it makes it very possible. Lasts 2-5 turns.
- Chilled: -75 to both your Agility and Luck. Your Stamina costs are increased by 150% (for a total cost that's 250% the normal value). Lasts 6-9 turns.
- Severe Wound: Your maximum HP and any healing your receive are both decreased by 20% and you lose 3% of your maximum HP at the end of each turn. Lasts 3-7 turns.
Buffs and Debuffs
Buffs and debuffs affect the following stats: maximum HP, maximum MP, Attack, Defense, Magical Attack, Magical Defense, Agility, and Luck. Buffs and debuffs exist on a scale from -2 to 2. By default a stat is at 0 on this scale. Receiving a buff to a stat increases its position on the scale, while a debuff decreases it; thus buffs and debuffs effectively cancel each other out. The value of a stat is modified by 40% per position on the scale; that is, at -2 the stat is at 20% of its base value, at -1 it's 60%, at 0 it's 100%, at 1 it's 140%, and at 2 it's 180%.
The duration (in turns) is set by whatever is causing the buff or debuff effect. They always clear at the end of battle or upon death.
Skill Types
Psychopomps Are Missing has twelve skill types. Note that some skill types are logically treated as subtypes of other skill types. All skills are considered Skills, the base type, with the exception of the generic Attack and Dodge actions.
Note that it is possible for skill costs of specific types (and all of their subtypes) to be modified. For example, if all Spells have their costs reduced by 20%, this would decrease both the MP and Stamina costs of all skills with the Spell, Blessing Spell, Curse Spell, and Aura Spell types.
Most skills cost either Stamina, MP, or both. You start combat with full Stamina (100 is maximum Stamina for everyone) and some is recovered at the end of each turn (the base value is 25, but many effects can modify this either higher or lower). MP does not regenerate and persists in value between battles. Note that food (a very simple category of item in this game—there is no cooking system) provides a low amount of long-lasting MP regeneration. There are also other ways of recovering MP, including items and healing services.
The vast majority of skills cannot be used outside of battle, though there are exceptions. All Preparations (a skill type) can be used out of battle, as can most resurrection skills. Some other skills may be able to be used out of battle as well. Skills with Stamina costs cannot be used outside of battle.
- Skill: The default type. If a skill doesn't belong to one of the other types, it receives this type.
- Weapon Skills: These skills all use your weapon, including your weapon's base damage value. They often use your weapon's damage type(s) as well. (If your attacks have multiple damage types they can deal, the most effective one for your target will be used.) Weapon skills may be restricted to certain weapon types. For example, the Fighter Weapon Skill Sever Artery can only be used with Swords and Daggers.
- Martial Art: These are generally physical attacks that represent performing some sort of martial art on a foe. As such, these are considered melee skills.
- Spell: These are generally magical attacks. They can have all kinds of effects.
- Blessing Spell: These are spells that apply a blessing, which is a state applied to one or more allies. Blessings all have unique effects.
- Curse Spell: These are spells that apply a curse, which is a state applied to one or more enemies. Curses have unique effects.
- Aura Spell: These are spells that apply an aura. Some auras can be applied to allies and others to enemies. Critically, any given character can only be affected by one aura at a time—if a new one is applied, the previous one is removed.
- Signet: These skills are always attached to a Signet Ring, a piece of equipment. They never cost any MP to use.
- Stances: These skills represent being in some sort of battle stance. They activate extremely quickly and typically end at the end of battle. A given character can only be in one stance at a time—if a new one is applied, the previous one is removed.
- Preparation: These skills represent preparing oneself (or one's weapon) for battle in some way. They activate extremely slowly, but can be used outside of combat (as such, they never cost Stamina to use). You can only have one Preparation active at a time—if a new one is applied, the previous one is removed. Unlike most other state-applying skill types, Preparations all last for 200 steps, rather than having a duration based on turns. This means a Preparation will last you for an entire battle. Note that some items may apply a Preparation! These will overwrite any other Preparation you may have active, and any Preparations you apply afterwards will overwrite the item's Preparation.
- Block: These are skills that cause you to block. See the Damage (and Accuracy) Formulas section above for more about blocking—it's touched on just before the portion with all of the math.
- War Cry: These skills represent yelling and can have a wide variety of effects. They activate very quickly.
Game Structure
I'm using Game Structure here to refer to player goals and mechanical ideas about the world. The ideas I have for these two things serve as a part of the foundation of the game's design, since they guide how I actually build the game world. There are a few other principles that go along with this, too, that I'll touch on, particularly dealing with things like currencies and consumable items.
The Player's Goals
One of the things that's given me a lot of trouble in past games I've attempted to make in RPG Maker MV was not having a clear sense of what the player's goals should be. In other words, if asked the question, "How does the player win; what triggers the end credits?" I often wouldn't have a clear answer. Furthermore, I also typically didn't have a clear vision for progression—how would the player advance through the world?
When I started working on Psychopomps Are Missing, I wanted to make sure I addressed this very real issue first; in particular, I started it while working on my previous, now aborted project, Astral Collision, which suffered from these problems. I'd previously mentioned that I used the Pokémon battle formulas when setting up my combat system to make balancing easier to do, since I have a deeper understanding of how those formulas practically work thanks to my time playing competitive Pokémon in college. I'd done this in response to the huge issues I'd had with trying to balance Astral Collision, and I didn't want to have to muddy through trying to figure out how to balance Psychopomps Are Missing like that. I did the same thing when it came to the player goals problem for Psychopomps: I looked to Pokémon for inspiration.
Most Pokémon games follow the same high level structure: Beat eight gym leaders, then conquer the gantlet of the Elite Four and Champion. I decided I'd do something similar with Psychopomps Are Missing. I'd have eight bosses you need to defeat, then you can enter the final challenge of some sort of equivalent to the Elite Four and Champion fights.
I've refined this structure some since then, but the basic concept is one I plan to carry through the entire game, since it's how I've decided to define the player's primary goal and major sub-goals. However, I have added one thing to it, which are the (currently) titular psychopomps themselves.
You see, fairly early on, I liked the idea that the player could find the missing psychopomps. I actually based this concept off of Gold Skulltulas from The Legend of Zelda: Ocarina of Time, at least loosely. My plan is that there will be 100 missing psychopomps. When you find one, you can talk to it, and it'll return to a sort of hub area. If you talk to it there, it'll give a permanent boost to a random stat (that is, maximum HP, maximum MP, Attack, Defense, Magical Attack, Magical Defense, Agility, or Luck) for each member of your party; this happens once for each psychopomp. (As an aside, this is a primary way of increasing your characters' stats.)
I think maybe I'm getting a little too historical here, so to skip to the point, one of the game world regions is The Abyss. To get access to this region, you have to rescue 30 psychopomps. To gain access to the region of The Abyss where the final bosses will be, you have to find a total of 60 psychopomps. At least, these are my currently planned numbers. If this sounds like Power Stars and Super Mario 64, well, I definitely was thinking about that some as I came up with these ideas!
Thus, the player's requirements to beat the game are to rescue 60 of the 100 missing psychopomps and defeat eight world bosses to get access to the final boss encounters. I'm really happy about finding a way to tie the missing psychopomps into this requirement (it wasn't there when I first was thinking about the design, if that wasn't clear).
World Mechanics
I decided that I wanted the world to be composed of eight major regions, one for each of my eight "gym leaders," as mentioned in the previous section. Because I can't seem not use this concept, each of these is supposed to be a different reality (like Astral Collision, except about half as many). Therefore, they all have different mechanical ideas and concepts. Another thing I've done to differentiate world regions is to assign different battle music to each one. However, I'll discuss world regions more in the next major section, which is dedicated to the world.
It is worth knowing that there are a few world areas in addition to the main eight! There is the Pocket Dimension, which serves as a home base for your party; the Crossroads of Reality, which is where rescued psychopomps go (and where your party is resurrected if all members die); the Wandering Wood, which serves as a sort of major connective tissue for a bunch of areas; and The Abyss, which, in addition to being the place where the final boss encounters will be fought, is also a major connective area between world regions (even more so than the Wandering Wood).
Another important world mechanic are locked chests. These manifest differently in different world regions, but generally speaking, they require a key to open and contain randomized loot. Chests get reset upon reloading a map (this is a little complex, as not every spawn location will have a chest spawn every time a map loads), thus providing a consistent reward for exploration, provided the player is stocked up on keys. The mechanic is taken directly from Guild Wars 1, though I intend for my chests to be more rewarding than the ones from that game!
I also want to briefly discuss fast travel. At the start of the game, the player is given the Pocket Dimension Portal, an item that can be used (for a nominal fee of Crystallized Energy—I'll talk about currency shortly) to return to the Pocket Dimension. When used, your current location on the map is saved such that when you leave the Pocket Dimension, you'll return to wherever it was you last used the portal. Notably, however, you can have the portal redirected to the Crossroads of Reality, where a different portal can take you to any fast travel destination you've unlocked. After rescuing three psychopomps, that functionality is added to the Pocket Dimension Portal.
Currencies
Something I wanted to do with Psychopomps Are Missing is model the way different cultures develop different currencies. I developed a system for this game to enable me to do just that! There are some repeats, as I had limited space on the main menu interface that displays currencies; for example, gold coins are used in multiple places. That UI, by the way, looks like this:
You'll notice that, in addition to all of the lovely icons for various currencies, there is the differently aligned, iconless "CE". CE stands for Crystallized Energy, and it serves as a sort of core currency. There is a device in the Pocket Dimension inspired by a Star Trek replicator that can make various things for your party using crystallized energy—things such as the other types of currencies. You can also sell stuff to this replicator to get CE back out.
Consumables
There is a delicate balance to be found between consumable items and skills, especially when it comes to healing. It's very easy for healing skills to obviate the need for healing consumables and vice versa. I've ended up doing several things with Psychopomps Are Missing that help with this issue.The vast majority of healing skills simply cannot be used outside of combat. This immediately opens up space for healing items to be useful, since you'll want them for healing up between battles. Healing items are also useful in battle, as they generally activate very quickly. However, I've also set pretty strict limits on the maximum quantity you can carry of any given healing item (think Bloodborne's blood vials).
Another big difference between healing skills and healing items is that healing skills are affected by the Heal Power and Healed stats, while items are not. While this typically advantages skills, sometimes it's an advantage for items; for example, a character with a poor Heal Power stat would be better served by using items to heal.
Making sure healing items are useful, but not to the exclusion of skills, is something I'll be keeping an eye on throughout the development process. Of course, I'll also be paying attention to how useful other types of consumables are, such as foods (which give low amounts of long-lasting MP regeneration).
The World
Originally, there were several different realities, all with their own peoples and rules of functioning (though, all with the same language, because I don't want to worry about language stuff here). The events that lead up to the start of the game culminate in a collapse of the barriers between realities, resulting in everything mashing together. If this sounds a lot like Astral Collision to those familiar with that project, it seems this idea is a common theme for me when working with RPG Maker MV—likely because I want to be able to maximize my use of the provided assets.
I'm not going to get too much into the plot here, though. Rather, I want to touch on the various world regions a bit. Note that I haven't started working on many of these regions just yet! As such, I haven't yet worked out many details for them.
The world regions are: The Pocket Dimension, the Crossroads of Reality, The Abyss, The Wandering Wood, Ashdala, The United Streets, Ghymnipolis, Avarei, Bowan, the Kingdom of Dolfy, Cybernight City, and the mangled remains of Eidemonuth and Anorrophraj. Note: If there's any reason you know of why one of these names should be changed (e.g. offensiveness), please let me know!
The Pocket Dimension
This is a small region that functions as a main hub for the player's party. From here, you can change your party members' classes, use the only full-heal service in the game (not that there aren't other services elsewhere that can heal you, but this one cleans up everything), buy various consumables and equipment, and have conversations between your characters. This latter feature will be important for progressing characters' relationships with each other, which will lead to them learning new skills. Note that this aspect is still very much in the concept phase.
The Crossroads of Reality
This is where the last psychopomp to not go missing resides. His primary job is to maintain the Crossroads of Reality, which serve as a foundation to all realities. When the collapse happened, the connections the crossroads had to other locations were mangled. Fixing these by locating the nexus points is the lore explanation for fast travel locations getting unlocked.
There isn't actually much for the player to do here, aside from speaking to rescued psychopomps to get stat points. I'll add something for that last psychopomp to do at some point, I just haven't figured out what yet.
As previously mentioned, this is also where the player's party will wind up if everyone dies—narratively, the last psychopomp rescues them. Relatedly, this is also where the party initially forms and sets off on their adventure.
The Abyss
This serves as a sort of prison for the souls of...OK, I can't explain this without getting into the theology of the game, and I think that's beyond the purview of this particular article. The important thing to know is that a lot of villains were trapped here, but when the various realities collapsed into each other, that basically enabled a jail break.
There are a lot of abyss gates scattered throughout the world, but they are non-functional until the player rescues enough psychopomps, as touched on previously. I like interconnected worlds, and this is one way for my to facilitate that!
The Wandering Wood
Inspired by the Lost Woods from many Legend of Zelda games, The Wandering Wood is a twisted, dark forest that connects to many parts of the world. At the heart of the woods dwells a group that hunts demons. They're rather inspired by Bloodborne.
Ashdala
This is a world region that contains one of the eight "gym leader" bosses. It also serves as the initial area for the player to really explore, as everywhere else is blocked off (mostly—the player technically starts in Avarei, but can only explore a small section of it). Based heavily on Pre-Searing Ascalon from Guild Wars 1, this area also serves as a bit of a tutorial section. Players familiar with that location will likely find a lot familiar in Ashdala, but there are plenty of differences, too!
The United Streets
This world region is the one most based on the United States of America (the shared abbreviation of U.S. is not a coincidence). A couple of the party members are from here, as I wanted a perspective more like the one I'm familiar with from the real world represented in the party. Of course, this is a game, so things are pretty messed up here! The boss plaguing this world region is warping the area, leading to streets that wrap east-west and north-south. Also, a number of buildings have been plunged into a shadowy, distorted version—these are the primary places where monsters will be fought, as the streets themselves are mostly monster-free (this makes the worldbuilding work more cleanly).
Ghymnipolis
This is one of my least-developed world regions. I don't even know if "Ghymnipolis" will be the final name for this area or if it'll be the name of a city in a broader region. My current notes on it are that it uses the "sci-fi" tile set along with a question: "How do I make this distinct from The United Streets?"
That said, one of the party members is from here, so while I haven't yet figured out any of the mechanics that'll make it distinct, I do know a bit about its culture—the residents here don't wear clothing (the name is taken from the Greek for "naked city"); rather, they're masters of creating enchantments for any protection they need (e.g. from cold weather). In fact, they find the wearing of clothing not only weird, but somewhat unnerving, as to them it makes it seem like the person has something to hide.
Avarei
As mentioned, the player party technically starts here. Furthermore, one of the player characters is from here. I've not developed it all that deeply yet, but I do know it's a modern setting with a lot of ruins scattered about outside the cities. I'm currently strongly considering using a mechanic for those ruins similar to the Sacred Realm segments of The Legend of Zelda: Skyward Sword, at least in concept: I don't want forced stealth sections in my game—I hate those!
Bowan
This land is a snowy, post-apocalyptic setting. In their distant past, some sort of magically induced catastrophe wrecked their world. These days, it is led by a High Princess, who serves as the representative of what is functionally a magical supercomputer dedicated to keeping everyone alive.
That's about the extent of my development of this region, though I'm looking forward to exploring it more when I do get to it!
The Kingdom of Dolfy
This world region draws inspiration from the Legend of Zelda series, especially Ocarina of Time (though I've researched other Zelda games for general inspiration as well). Two of the party members are from here. The player's goal in this region is to find six dungeons and defeat the fragmented aspects of an ancient evil that was once sealed away. Those seals are getting really leaky (or in one case, have broken entirely) thanks to the collapse that kicked off the game.
This region features empty bottles you can collect, which serve to store potions, and bombs and bomb bags. These bombs can be used to blow up specific cracked walls or as a consumable offensive item in combat!
There will be a bunch of other Legend of Zelda references scattered throughout. I'll note that the connections are a lot looser than the ones Ashdala has with Guild Wars 1.
Cybernight City
This is the final location that a party member is from. It does at least have a clearly distinct theme from the other modern locations, though it's also rather undeveloped at present. The main thing I know about it is that it's a highly sexualized area, but also very anti-nudity. In this way, it serves as a strong contrast with Ghymnipolis, which is not sexualized but very pro-nudity.
The Mangled Remains of Eidemonuth and Anorrophraj
This is a mashed blend of a fantasy setting (Anorrophraj) and a sci-fi one (Eidemonuth). It's also ground zero for the catastrophic events that initiated the collapse of reality that kicks off the game. I want this place to feel a bit like an entrance randomizer. By the time the player gets here, a group of angels is attempting to clean up the mess of monsters that resulted from the aforementioned catastrophe.
That's It For Now!
I'll have more to share later, but I think this has been a pretty hefty introduction, so I'm gonna wrap up here. If you have any questions, you can ask me on my Discord server. Additionally, I post updates about what I'm doing in the game as part of the Dear Patrons... daily diary I do over at my Patreon, so you can go check that out if you'd like more regular news about what I'm doing in the game.
Thanks for reading!
WOW
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDelete