u/Dry_Try_8365

Thoughts on game balance

Typically I have seen balance be used as like that ideal standard that any game designer should strive for, and in the case of this subreddit specifically, I have mostly just seen like "only do this" with no consideration as to intended player experience. And that's mostly just stats and parameters, with the economy side largely left in the dust.

So here's what I have thought about when it comes to the fundamentals.
First you need to understand the question, "What do I want combat to feel like?"
There's a lot of variation even in the typical JRPG dungeon crawler. In every fight, do you want to feel like you're barely pulling through by the skin of your teeth? or do you want the fights to more broadly be a task of attrition between safe points?

There's a very rough core primitive formula. For each unit, there's a rough Time-To-Kill, where it's how many turns it takes for the opposing team to kill them.
TTK^(Enemy,Party) = HP^(Enemy)/DPT^(Party)

TTK^(Actor,Troop) = HP^(Actor)/DPT^(Troop)
DPT being the effective damage that can be dealt, including things like hit chance, crits, mitigating factors like defense and healing, multipliers. This is influenced by the action economy. This can vary massively depending on the choices made, of course. A party that does nothing but their weakest attacks will have a very large TTK compared to the sweatiest playstyle.

This Feeds into the Time-To-Wipe, which is the amount of turns it takes for the parties involved to wipe each other out. These are the fuzzy boundaries of any given encounter's possibilities, as they represent the sum choices that can be taken.

TTW^(Troop) = ∑ HP^(Troop)/DPT^(Party) ≈ ∑ TTK^(Troop)

TTW^(Party) = ∑ HP^(Party)/DPT^(Troop) ≈ ∑ TTK^(Party)

Relationship Feel
^(Party TTW >> Troop TTW) Steamroll, Power Fantasy, boredom.
Party TTW ≈ Troop TTW Tension, especially if variation is high.
Party TTW < Troop TTW Survival
Both High Grind/Sluggish
Both Low Rocket tag/gunslinger duel. Whoever goes first wins.

Then there's attrition.
Loss per encounter = HP lost + MP spent. If the player has access to healing spells, then HP lost can be rolled into MP spent to an extent.

Survivability = Total Resources/Average Loss per encounter.

The economy layer can act as either a multiplier or a buffer for this depending on the items available, whether they're restorative or preventative for the purposes of attrition. Bear in mind that economy includes shops, items found in and out of combat, as well as currency. Typically, though, currency as a not immediately useful resource can be a bit wishy-washy. I may have to find a way to pin this down more concretely. You can tack it on as part of attrition, though, if you have a money gun in essence.

That is not to say that you have to pick one part of this cascade over another, or choose any part at all and go another direction, but the principle is to pick an area that you want to hard focus on balancing to emphasize what you want to go for for your game.

reddit.com
u/Dry_Try_8365 — 9 hours ago

I have recently dove into another project. a pseudo roguelite that breaks up multiple traditional dungeons into individual rooms to be pieced together by javascript.
The idea is that each dungeon is a theme, the connections between the rooms are scrambled for each run until the core room is reached and the dungeon that the theme comes from is reassembled and taken out of the random dungeon pool.

What I have thought of the backend is that the maps consisting the theme are children of the core, and each of the maps has metadata in the notes corresponding to the exits the room can have with the format <[tags],Event ID, EntranceX, EntranceY>
The only tags that have hardcoded behavior are the orientation tags East, West, North and South, while any other tag forces the scrambler to match any given exit with one that has a matching tag. The script would set the transfer event of the exits to send it to where a separate piece of metadata points it to.
And in the plugin parameters, all that needs to be done is to plug in the ids of the core rooms as well as the switches that controls their availability and stabilization.

However, I barely have a working knowledge of JS and RMMV, and I feel incredibly gross about vibecoding the plugin using SlopGPT. Any advice?

reddit.com
u/Dry_Try_8365 — 6 days ago