Hello everyone, I've been working on my game for a while and I was hoping to get someone to develop the battle system for the game from the ground up. I've been trying to give it a shot on my own a few times but it's been easily growing into a pretty complex system every time and before I noticed it, I was spending less and less time actually developing the game.
The battle system itself is a classic JRPG Turn Based system written in GDScript similar to what you'll find in games like FF, Earthbound, Persona, Omori, etc. Here's a rundown of the system + features that I'm going for:
Party Management
- Between 1 - 4 party members at a time (There can be more on standby outside of battle).
- The status of all possible party members is always accessible via an autoload (to allow the use of items or skills outside of battle, for example).
- The ability to cancel/go back to a previous party member actions while still in the process of choosing actions for the following party member.
Battler Status
- Both party members and enemies share the same stats: Level, EXP (really only relevant to party members) HP, FP, Attack, Defense and Speed.
- Stat modifiers and conditional stat modifiers (For example increasing an enemy's Attack stat if they're close to death)
- Status conditions (I'll come up with specific names & effects later, or just implement them myself)
Battler Actions
- Both party members and enemies have access to these actions: Attack (single-target), Skills, Items, Guarding and fleeing.
- Different skills and consumable items that are able to either:
-
- Deal damage
-
- Modify stats for a number of turns
-
- Heal
-
- Revive a downed ally
- Valid targets:
-
- Self
-
- A single ally
-
- A single enemy
-
- Entire party
-
- Entire enemy party
-
- Everyone in the battle
Battle Flow
- No limit to the number of enemies in a single battle.
- If a party member flees successfully, the entire battle ends. If an enemy flees, only that one enemy will flee and the battle continues (This means a variable success rate, depending on the battle).
- The ability for some enemies (like bosses) to execute two or more actions in a turn/in a row.
- Speed determines which battler goes first in the turn. However there are actions that take priority before orders. In the following order:
-
- Fleeing
-
- Guarding
-
- Items
-
- Priority skills
-
- Everything else.
- If two battlers with equal speed use an action from the same category, then party members are prioritized before enemies (Random with allies)
- Rewards upon winning a battle (EXP, money, items..)
- When an enemy is defeated, they are removed from the battle. When a party member is defeated, they are not removed but become "Downed", meaning they can't use actions at all, be targeted by the party's skills or items (with the exception of a revive still), and cannot be targeted by enemies.
Enemy AI
- Allow for creating and easily swapping different behavior AIs for enemies (For example attaching a behavior AI for an enemy to just randomly attack party members, or more specific ones such as targeting party members with specific skills, or during-battle deterministic like targeting a specific party member if they took a certain action during battle, and so on).
Battle States and UI
- Battle states (Player choosing party's actions, selecting a target for a party member's action, turns taking place, dialogue playing (via DialogueManager), victory/defeat screens, etc.).
- Connecting the battle system to a UI (Can be as simple and barebones as it needs to be for the sake of focusing on the backend of this system).
These are all I can come up with now. The requirements may slightly change further down the line (But nothing unreasonable).
If you think this is something you're able and willing to make, feel free to shoot me a DM with your info and we can talk terms and details from there! 