Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Nice job! The controls are pretty smooth and mimic the Final Fantasy ATB system quite closely. I am also trying to build something like this for an RPG project; using lots of state machines and objects for drawing the panels. What were some interesting things you encountered during your process?

(+1)

Hello I'm glad you like it, I'm a big fan of these old RPG. I don't know much about coding since I've never been good with math, I create the games in Construct since it uses an event programming system and it's much easier for me to understand programming concepts that way. 

A state machine seems a good way of doing it but the complexity can increase depending on the type of battle system. For me a classic turn based would have been easier to do, atb is slightly more complex since you have to determine who has the turn, stop the others until the turn is done..etc. 

I remember that programming the animations for the different attacks was the most time consuming since I was doing most of the movement manualy or copy/pasting each time since it was just a demo I just wanted a quick way of doing it. So for that I recommend creating the individual animations in functions so it's easier in the long run.

Another thing I would do differently is the combat menus and submenus, I would probably use more layers to make it easier to work and organize in the engine interface and events. 

Depending on how you do things, one thing that I would recommend is using a .xml or similar to parse the data for the game, it can mke it a lot easier to edit and keep track of things, for instance a list of all the magic spells in the game:  the id number for that spell in the engine, how much mana they cost, what type of magic is it, what name to display in the game, and anything you want. 

Very cool! I know of Construct, but not familiar with its framework. Nice that you've found a workflow that is suitable for your needs.

Interesting you mentioned the "stop others until the turn is done" because that's exactly one of the problems I knew I had to also solve. My approach used an integer variable "timer_is_paused" initialized to 0 that would increment whenever an actor needed to pause the timer, and decrement whenever an actor has finished their action. Before an actor performs an action, I do a check to see if timer_is_paused equals 0.

Ah yeah, I've done something similar for the animations. So each animation is stored as an object that shows specific frames of a sprite and plays sound effects at certain points of in its lifetime. And once its internal timer exceeds a duration, then the object is destroyed. So whenever I need to display an animation, I ask the object to create an instance of the animation at a specific location on the screen.

The XML approach sounds pretty logical. I am entertaining the idea of using something more human-friendly like a CSV opened in a spreadsheet editor.

Any future plans for this ATB system you have created?

No I never had any plans, I just wanted to see if I could do it. Even if I wanted to do a game with it I would probably redo it from scratch in a better way.