In spent the last 2 weeks creating the battle-system for Condorra from scratch. It’s a turn-based system that gives players as much time as they need to decide on their action.

The MiniRaptor monster attacking itself

The MiniRaptor monster attacking itself. There is no AI for the enemies right now, so you select their actions.

 

Here is a list of things that are already working + details:

  1. Turn Order
    Because the system is turn-based, you have to somehow determine a way who’s turn it will be next. At first I implemented a modified version of Final Fantasy X’s CTB system. I won’t go into detail here, but it’s a system that allows the player to plan ahead his actions.
    It turned out though this system was not a good fit. Condorra’s system put’s counters at center stage. Having a mixed turn-order (hero1 -> monster2 -> hero2 -> hero3 -> monster1) with counters thrown in just seemed random and confusing. So now the system is round based: first the heroes will take their action, then the enemies, then the heroes, etc.
  2. Selecting an Action
    I just put all available actions for a character into a menu panel. They then select what they want to do.
    Screen Shot 2016-06-09 at 23.20.00
  3. Selecting a Target
    For now you can select everyone with every action. That might change in the future.
  4. Executing the Action
    I would say this took the most time to get done. Players can counter all actions, enemies on the other hand only counter them under certain conditions. There is also what I call the “sweetspot” system: whenever a hero attacks an enemy, you have the chance to hit the sweetspot for extra damage. When an enemy attacks the player, you again get the chance to hit the sweetspot: If successful you can counter the enemy action. Hitting the sweetspot is as simple as hitting a key at the right time.
  5. Damage Calculation
    I will admit that I stole borrowed most of my ideas from this FFX stat guide on gamefaqs (thanks). Once you execute an action, damage is based on your stats (attack, defense, magic, magic-defense), weaknesses against elements (fire, water, wind, earth) and the power of the action itself.

The state of this system is still very much in flux right now, but I think it’s a good foundation.

Tech Stuff

Condorra will have lots of content: Monsters, Actions, Battles, Maps, Animations, … So it’s important to create a structure that supports easily adding new content. Ideally without touching the code.

The answer to this is to make your content data-driven. Instead of hardcoding how things work and how they look, you allow a bit of room for customization. This is the folder structure in Condorra:

Screen Shot 2016-06-09 at 23.49.15

It’s a reoccurring theme: Each “thing” has it’s own folder.

Let’s take the attack action as example: It has it’s own folder in actions/. In there are 2 files: config.ini and script.mc. The config.ini contains details about attack, such as power, element, info. The script.mc is a script file. The game will call the script to know if the animation has finished, if a sweetspot was hit or simply to update it’s animation. So when I want to add that awesome screenshake effect (and I will) this is the file to write it in.

Interestingly this way of structuring works very well for a lot of things. The maps are structured this way as well. The config has the map-data, the script the behavior. Monsters will decide which action to take by calling it’s script. The Battles config.ini stores monsters, their position and the background image.

I hope you enjoyed this weeks game update. If you want to hear about development news as soon as they happen please follow @frameland or subscribe via RSS.