Engines NIFE Roadmap Shatterloop Game Projects
Deprecated Saepes Mundi Other Projects Blog

Game Projects

Monster Maze Combat System

Posted March 23, 2024 by Xhin

Not sure if this is more of a Notes post or a Checklist.

There are 6 Replies


Basic Stuff

A fight is a series of entities categorized into teams "player" and "enemy". Entities can be several different types:

  • AI -- has moves data and picks them randomly or according to certain conditions

  • Controllable -- also has moves data but when their turn arrives you can make a choice(s) for them.

  • Player -- based on player data and the Stamina/Mana system. If there's more than one of these there's some kind of doubling happening which could be pretty interesting as a mechanic because of how the turn system works.

    Other entity types (such as multiplayer) could be integrated into this system at a later date.

    The entities system here allows for multi-enemy battles (which I definitely want) as well as monster capture/summon/control which might also be a worthwhile mechanic. It also seems like a pretty good system for text-based combat in games in general moving forward (for example XIFNET)

    Turns

    Turns move back and forth from one team to the other. On each team's turn, all entities inside it take their turn, and if it's some kind of attack, the attacked entity might have the option to dodge, whose behavior depends on the data therein.

    Move Types

  • AI -- Uses Moveset data (more on that in a moment) and picks a move accordingly. The team here doesn't matter.

  • Controllable -- has Moveset data but the player picks a choice. There might also be an amt variable that allows you to pick more than one move.

  • Player -- The player can do anything they're capable of doing on their end (the list of actions is pretty large so I won't cover it all here).

    Dodges

    To simplify the design here, only player entities can dodge. Otherwise this whole thing gets way too complicated way too fast.

  • Dodges are typically tied to an AI attack, for example a "swoop" might allow "ducking" or "rolling". These have some chance of working and have different effects (generally avoiding or reducing damage). They might also increase the damage or add more or whatever.

  • Dodges can also be tied to equipment. These are generally conditional, like "Parrying" might apply only to attacks with a "sword swing" tag. However there might be armor that allows you to jump over most attacks.

  • March 23, 2024
    Xhin
    Sky's the limit

    Move Properties

    Moves are objects that are either grouped in a "Moveset" for AIs or are added to a battle mechanistically for a player based on what a player has equipped / effects they're under / whatever. In any case they're always the same kind of data and have the following properties:

  • Option Chance -- the chance that the move will even appear at all.

  • Conditions -- The set of conditions that need to be true in order for the Move to be available. This covers a vast spectrum of things -- more information available in that section.

  • Priority, Weight -- these properties dictate how likely an enemy is to choose the move. "Priority" makes certain moves (like those with important conditions) take priority, so like if an AI has one priority 3 move and five Priority 2 moves it will pick the priority 3 one. If there's more than one in the top priority it'll instead do a weight distribution on them.

  • Name, Desc -- should be obvious. Names are slugged and AIs don't have descriptions.

  • Tags -- moves are given tag(s) which conditionals of various kinds can target.

    Target Type -- Can be several things:

  • Self -- targets itself.

  • Teammates -- targets other entities on its team.

  • Us -- targets its team, including itself.

  • Them -- targets the other team

  • Others -- targets everyone but itself

  • All -- targets everyone including itself

  • None -- has no target as it's a series of events instead that presumably target the environment or maybe just target a bunch of stuff. I am however declaring it explicitly as the object would be confusing otherwise.

    More

  • Target Amount -- Once the above property pulls a group out, this property tells how many targets to pull out. It's always a range that gets calculated, with 0 meaning that the move doesn't do anything other than its events, and "all" meaning it affects everything in the group. Otherwise it's numbers. "Self" will have [1,1] as the value.

    Move creation will presumably have shortcuts that bypass some of these hard-coded properties.

  • Damage type -- "fixed" means the amount is a number, while "percent" means it's a percentage of their maximum.

  • Damage -- the amount of damage to deal to the target(s). If this is negative the effect is instead healing. This variable is represented as a range, with "max" being a potential variable -- with "fixed" it represents their max health and with "percent" it means 100. ["max","max"] would instantly kill the target(s).

  • Chance -- The chance that the move actually works. Defaults to 100.

  • Events -- A set of events that fire after the move happens, assuming there is one and also assuming it's successful. Events can target anything (including #targets) and can also have individual chances. So NIFE rules basically.

  • March 24, 2024
    Xhin
    Sky's the limit

  • Near/far mechanic

  • Team attacks (spec amt, not necessarily all)

  • Possible environment triggers to close near/far gaps on all or one, based on the enemy and/or the environment

  • monster aggression / seeking favorable environments might follow you to other rooms

  • The above definitions are definitely too technical and complicated -- as I sketch out actual battles, something like the above points make more sense (though tags and events and conditions/etc still make sense too)

  • March 29, 2024
    Xhin
    Sky's the limit

  • Hand and offhand definitely make sense, particularly since melee weapons can potentially be thrown (and retrieved via magic, though this presumably costs a lot of stamina as a special move).

  • March 29, 2024
    Xhin
    Sky's the limit

    Skill bar

    Both attacks and dodges can have a Skill bar, which is a real-time mechanic where you have to time it out so some particle arrives within a range within some bar that it moves through. The different variables here (like range size, speed, bar size, how many chances you have, etc) vary.

    For Dodges and attacks that aren't 100% accurate (or status conditions that create these conditions), the skill bar determines accuracy. Otherwise it can affect damage or special moves, etc.

    This vague description of things will be hammered out more as I get deeper into the actual project.

    March 30, 2024
    Xhin
    Sky's the limit

    Summons Mechanics

    Any monster with the exception of Bosses and Labyr can be summoned. Capturing creates a copy of the enemy, and multiple copies of the same one can be captured (though there are *other* limits).

  • Each monster has an element corresponding to where it appears. It also has a "crystal cost" and a "summon cost", which for sanity will probably be the same except for harder or elemental enemies.

  • There are six potions for capturing monsters, corresponding to the six elements that they can be. These can obviously be turned onto spells.

  • These potions require that the monster be dead but before it rejoins the mana stream (so basically you're operating on its corpse, which disappears after battle). You need the right amount of crystals as well to put them into corporeal form. Alternately it can be captured mid-battle since it is just a copy but won't become active until next battle. Though I like the idea of you having to beat an enemy before you gain the right to use it in combat.

  • Another six potions will summon the appropriate element of monster. Again these can also become spells. When summoned they consume the appropriate amount of mana and get added to the battle as a teammate.

  • Summons can either be free (where they pick their own moves at random) or controlled (where you pick their moves for them). Obviously the latter is preferable, so some kind of system should allow them to transfer over, though idk what it is yet. Maybe you just have to double the amount of crystals used on them or a backpack fixture does this.

  • Summons can be Fractured, allowing you to reclaim the crystal spent on them.

  • If a Summon dies it can't be resummoned that battle. Additionally you have to wait a few battles before you can summon it again. Or something else. It definitely shouldn't be automatic though -- letting your Summons die should have temporary consequences.

  • you can also dismiss Summons from battle so they don't die -- this prevents you from summoning them again in that battle, but next battle they'll be at full health again.

  • Potions will obviously target all of the above, allowing you to break the game in all sorts of fun ways.

  • Summons can be chimera'd. Not sure how this plays out exactly.

  • March 30, 2024
    Xhin
    Sky's the limit

    Reply to: Monster Maze Combat System

    Username
    Password