• Welcome to Final Fantasy Hacktics. Please login or sign up.
August 13, 2020, 10:19:50 pm


Please use .png instead of .bmp when uploading unfinished sprites to the forum!

TacticalRPG Engine

Started by HowDoGameDev, August 06, 2015, 08:45:17 pm


No prob, I can't wait to see more of the battle system.
  • Modding version: Other/Unknown


2D Sprites
Doing some restructuring on the code related to character rendering and figured I'd see how difficult adding a class for 2D characters would be. Is there a guide on how sprites are put together? I think I can decipher it on my own if need be, just didn't want to do redundant work.
2D Sprite Test

As far as visualizing skills are concerned, I have a fairly simple system in place that can replicate some of the more basic skills such as "Fire". There's certainly a lot of room for improvement though.

Changing Priorities
I'll probably be refocusing and start looking at content as opposed to the engine. That ship from a previous video desperately needs texturing and I'd like to rig the human character that's in the above video. I think once I have a basic human rig, I can start playing dress up with the base human model and start creating characters for my game.



You can get a good idea by loading up a disc image of FFT or WotL in Shishi. Type1 and Type2 sprites are spliced together as required by ability and set by SEQ. Arms and legs have independent positions, layered onto the body for ability animations and statuses and so forth. CYOKO (chocobo) is similar. For the human sprites, at least, all animations are represented in Shishi frame by frame with red boxes indicating which tiles are in use to draw each frame. Lirmont has tools for other sprite type animations, if needed.

Other monster and zodiac demon sprites mostly have no splices; they are what they are. Worker 8 is an exception, with hard coding. ARUTE and KANZEN have some portions tiled, as well.

Your sprite test isn't bad at all, just not quite centered, as you mentioned. Transitions happen when they should (in battle, at least; event camera spins are smoother since units aren't in walking loop yet, but I'm sure that's not exactly the focus at the moment). You're very much on the right track.
  • Modding version: PSX
* Angel should quit being a lazy bitch
<@Elric> I agree to that as well

nyanyame nyanyajuu nyanyado no nyarabide nyakunyaku inyanyaku nyanyahan nyanyadai nyannyaku nyarabete nyaganyagame
At the end of the day, are we not all trapped inside lemons?


Thanks Toshiko. That tool helped me partition the spritesheet correctly.

Still working on 2D support. Can currently create new animations in XML pretty quickly, but need to add layering support.

Working on some heavy refactoring of the battle module. I didn't like how fractured and specialized the stage class and its children were getting. Adding actors/props was also getting bothersome since you have to pay attention to the rendering order in OpenGL.

Also started working on the "overworld" module. World navigation will be the same as Tactics. It seems like the best method in this situation because it's simple, works well and doesn't require loads of content to be created for it.


Just wanted to say that I continue to be really impressed by this project and I hope to see future updates.
Current Projects:


Thanks Cheetah. I'm trying present some sort of update every one or two weeks. I'm afraid this update will only consist of words. Major goal is to make the game more tester friendly. Even started working on some primitive documentation with TiddlyWiki.

Graphics related work has been temporarily put on hold as I work through various battle engine bugs that I've encountered. When I get back to work on this, my focus will be on 2D character support.

I refactored the code related to charged skills and how they work and what happens if they fail. Code has been put in place to eventually allow a failed skill to result in a different skill being cast on a different target. Such as a mage blowing themselves up for not meeting skill requirements.

Refactoring for stages is mostly complete. There are now just two stage classes: "Stage" and its child "GraphicalStage". How important do you all feel about support for dynamic stages? I'm by no means planning on implementing it as it is currently out of scope, but was curious. An example would be a bridge collapsing. Probably nothing as dynamic as skills deforming a stage.

Currently planning out basic controller support as well. Game currently just supports keyboard. I will just do something basic for now and have the game look in the user directory to load custom controls that map joystick input to the keyboard. OpenTK has some degree of support for joysticks, but I'm not familiar with it. Should hopefully be simple.

As always, let me know if you have any questions.


October 03, 2015, 12:42:37 pm #26 Last Edit: October 04, 2015, 08:16:02 pm by HowDoGameDev
Stage Select

I've implemented a stage select screen that scans all available stages and scenes, then lets you select a scene by cycling through the stages. Will probably have it display additional information such as a stage description in one window and scene information in another. A few annoying bugs identified by testers have also been fixed. I'm not currently aware of anything outstanding, but I'm sure there are more issues to shake out.

The video also contains the first recording of a complete battle between two teams controlled by AIs: Berserk and Tactician. Berserk is mindlessly aggressive, but Tactician is aware of its other skills and of more complicated decision making, such as picking one target over another if it can eliminate the 2nd target. Personality for Tactician is not yet implemented.

Current Focuses

  • Gamepad Support - Primitive Support For XBox 360 controllers added. (2015-10-04)

  • 2D Sprite Support

  • Overworld Module


I don't have anything meaningful to contribute to your project, but I can compliment you, at the very least.  I can't imagine how much time and effort you must have put into this thus far.  I'm very impressed!  It's becoming more and more like FFT with each update.  I look forward to future posts.
  • Modding version: PSX


October 11, 2015, 09:37:33 pm #28 Last Edit: November 07, 2015, 12:33:37 am by HowDoGameDev
Thanks Andrew. Compliments are certainly helpful. Also, feel free to provide any feedback on stuff or ask any questions. I know graphically I'm not presenting much yet to look at, but I'm working on it.

2D Sprite Support
Animated Sprite Test
A character can be linked to an image file and a "flat" file. The flat file contains the animations, frames and rectangles that define everything in regards to representing a character as a sprite.

The following code segments contain snippets from one of the "flat" files. This block defines a required "idle" animation and contains a sub anim for when this animation is viewed from a 45 degree angle.
<animation id="idle" >
<anim angle="45" flipFrame="true" >
<frame id="3150100" time=".125" /> <!-- Neutral -->
<frame id="3150101" time=".125" /> <!-- Front 1 -->
<frame id="3150102" time=".2" /> <!-- Front 2 -->
<frame id="3150101" time=".125" /> <!-- Front 1 -->
<frame id="3150100" time=".125" /> <!-- Neutral -->
<frame id="3150103" time=".125" /> <!-- Back 1 -->
<frame id="3150104" time=".2" /> <!-- Back 2 -->
<frame id="3150103" time=".125" /> <!-- Back 1 -->

Frame Definition
<frame id="3150100">
<rect id="14"/>
<rect id="33" x="0" y="11"/>

Rect Definition
<rect id="14" x="160" y="40" width="32" height="40" />

I did most of this by hand to get something working. Anyone familiar enough with ShiShi's source to point me to where it's reading the rects and offsets from the iso? Figure I might be able to modify ShiShi to do this work automatically. I'm dropping this a bit further down on the priority list for now.

Gamepad Support
Currently only an XBox 360 controller is tested. I suspect it probably won't work with much else for now. But I think I add future support later.


Overworld Module
Project isn't dead! I've been busy with some work and life stuff. Certainly nothing negative, but too busy to provide much of a look on what I've been up to. Overworld module is coming along nicely. Currently supports:

  • Displaying PNG format map with auto scaling.

  • Locations/Places - Currently cities are not differentiated from wilderness.

  • Links between locations. Includes support for bezier curves to make things look nice.

  • Basic cursor support. Can't really click on locations yet.

Art is a bit rough and a work in progress. But I figured I'd throw something together and record it. Switching to the overworld module has been a nice change of pace since this stuff is a lot easier than the battle module. There is still a lot of work to do such as events, random encounters and shops.

My character modelling skills require a lot of work still. I think I have a base human model down as far as proportions, but I need more experience in the fields of rigging and designing a riggable mesh. I plan on taking a break from the human model and designing another enemy monster to use for battle. Here's a slightly out of date example of the humanoid template. I have a much easier time with stage creation than character modelling, but I'm sure I'll get faster and better at both the more I do it.

For 2D support, I've done zilch. If I have time this weekend I'll revisit it and see what I can figure out.

As always, feel free to let me know what you think, good or bad.



Looking great. I'm particularly impressed that you already have support for curves on the map. Are you going to add a mode to use direction buttons to move directly between map points and not just scrolling? How is the auto scaling working and will it include zooming?

The model looks fine, but that must be a huge amount of polys on that little guy to be so smooth. There lots of decent free 3D assets out there that you could use while testing and not take away from programming dev time. Keep up the great work.
Current Projects:


I'm not quite done with the curves yet. The curves are broken up into segments/rectangles, which result in the straight lines that you can see in the curved path. There are gaps that appear when using more extreme curves without enough segments. I have read about on how to fix that, but I haven't tried to look into it quite yet. Luckily there is quite a bit of material to read about bezier curves, so it wasn't too bad to figure out.

I have thought about adding button controls to navigation in addition to the fake mouse cursor, but it gets a bit tricky if you have a location with more than 4 connectors coming out of it, also the relative angle between your start and end add more complications. As an example, the bottom right city of that triangle of locations, which path do I assign to "Left"? What if there's a third connector from that segment that runs up? I'd worry that I'd have a difficult time making it not only intuitive, but also accurate.

The map scaling needs to have a bit more intelligence added to it since it makes some assumptions like your map image being larger than your resolution. I'll eventually fix that, but it works for now. The code identifies which dimension of the image is smallest and then scales it to 1.5 times of the matching resolution dimension. I think there are some cases where this won't work correctly, but I'll fix those as I encounter them.

Zooming is in its early stages and has a few bugs, but is overall pretty simple. Despite being a 2D map, it's still essentially in a 3D world. I just have the camera zoom out and all the locations and connectors stay in place.

For the character model, it's hard to say on how much is too much at the moment. The model I uploaded has a subdivision modifier applied, bringing it to 4128 triangles. Without, we're at 1032. The slime man is at about 3092 with the subdivision modifier. I've not noticed any performance issues yet with 10 of them on the field. It is certainly something I'm keeping my eye on though.

Thanks for the feedback.


Overworld Module
Not much has been done. I'd like to add random encounters to the wilderness areas. They would link to whatever scenes and stages I have on hand as opposed to anything that makes sense, but it's progress. It might give me a reason to look at implementing a very simple party system and deployment. Shops/towns/castles are at the bottom of my priority list. I need to actually implement items before I bother with that.

Battle Module

Finally implemented 3D animation to some degree. Video is pretty brief, but wanted to have something to show. The major thing that's missing in the code is support for transitions between states, such as falling down after dying and stuff like that. I use keyframe animation as opposed to skeletal for simplicity, but adding support for skeletal might be something I do in the future.

Current Focuses

  • Documentation - The game is getting increasingly complex, complex enough that I'm needing to take a look at the code when writing things like scenes or character definitions. This also needs to be done if anyone's going to experiment with it.

  • Art Assets - Need more content to work with. If anyone has an idea for another simple monster to make, let me know. Slime will probably act as a medium range caster and the mantis is a glass cannon. Need something to be the slow, hard hitting tank and a healer.

  • Demo - I have a few friends already testing some things, but figured it might be a good idea to put something small together. Current idea is to just package the slime version of the church battle from Tactics after getting some more animations done.

Stage Design
What qualities of a stage do you guys think are most important? I think the scenario and enemies play a major role, but ignoring that, I'd have to pick a stage like Barius Valley as my favorite. It has an interesting layout with a deep river splitting it in half. This allows for tactics more complicated than just running at the enemy to be used, such as establishing fronts and choke points. The changes in elevation mixed with the aforementioned choke points give ranged units a bigger role. You can actually defend an archer with a single knight and not worry as much about a chocobo just circling around and murdering the archer. Anyways, just wanted to see what other people thought.

As always, if you have any questions, feel free to ask.



I'm liking the nice smooth progress. Related to stage design, one of the most unique aspects of FFT's battle system is the verticality of the levels. I think it really sets it apart from other strategy RPGs and is an aspect missing from many of the more modern games in the genre. FFT did weird stuff with character to building proportions to pull it off, making the buildings relatively small compared to the characters. The related elements of vertical movements and obstructing the trajectory of projectiles is also important.
Current Projects:


November 29, 2015, 07:27:51 pm #34 Last Edit: November 29, 2015, 07:45:05 pm by Kaijyuu
I always felt FFT could do with more chokepoints. The game's maps have a rather open feeling, which is only exacerbated later by people having access to move +2 and +3. Spells not requiring LOS also add to this.
  • Modding version: PSX


Quote from: Kaijyuu on November 29, 2015, 07:27:51 pm
I always felt FFT could do with more chokepoints. The game's maps have a rather open feeling, which is only exacerbated later by people having access to move +2 and +3. Spells not requiring LOS also add to this.

I first read "checkpoints" and I disagreed, but yes "CHOKEpoints" do add to the mix. I do disagree somewhat in that I think when you are first learning the mechanics that there is already a fair amount of chokepoints in FFT already. In a variety of ways too, such extreme height changes, doorways, and dangerous terrain (poison bogs and lava). It's just that as advanced players we know all the tricks and how to get to the good skill quickly to avoid these hazards (move +3, fly, etc.).
Current Projects:


Overworld Module

Battle Module
More of an overall engine improvement, but I've started moving a majority of rendering to shaders, with an example being 3D animation. Originally I'd taken the lazy route and let the CPU handle the tweening between keyframes and streaming to the video card. This worked okay with a handful of units, but began to experience intermittent performance hits with anything above 7 units. I decided to let the GPU do its job after discovering that...

Now I can apparently handle this many. I don't know what the upper limit is, I got bored and stopped adding units before reaching it. The outline shader is temporarily broken, but that's a pretty easy fix that I didn't have time to get to tonight.

Current Focuses

  • Documentation - Made some headway on this. I have something to use as a quick reference for Events and the actions related to said events now. Still needs a lot more detail.

  • Art Assets - Did some experimentation and managed to recreate the "Sanguine Blade/Night Sword" attack that Gafgarion uses within the game. I need to add some additional support for actions, such as dimming the stage and units. Not much done for 3D models. Will finish working on some of the slime stuff and maybe add an idle animation to the mantis. Human template could also use some love.

  • Demo - I've got some life stuff that's going to delay this, nothing bad by any means, but time consuming. I'll see what I can do and aim for sometime in December.

Stage Design
I agree with both of you on most everything.

The more vertical stages were very fun to play, such as the church level with Delita where that religious jerk is up on top of the building. It did seem to be utilized a lot though with your party needing to fight uphill. I'd like to see about doing the opposite and giving the player the higher ground while giving the AI near overwhelming material to work with. Such a dynamic is kind of broken by what Kaijyuu mentioned with the lacking LOS spells. I think that's also part of why archers sucked in comparison to mages in FFT. When I get to the point where stage geometry is more defined to where I can check for LOS, it's something I'd like to look at.

The character to building proportions are off, but I understand why they did it and it's probably something I'll also use since it minimizes the scale that a stage has to be if it features part of a city.

I think having maps with multiple floors could also be interesting. I don't recall FFT having many levels that took advantage of this. I don't currently support multiple stories on a map, but I've written all the pathfinding code to be agnostic about, so it should hopefully require minor modifications to add support. Fighting through and clearing a tower floor by floor would be interesting and would naturally offer choke points at stairwells. It'll be interesting to see what does and doesn't work.


December 02, 2015, 11:22:57 pm #37 Last Edit: December 02, 2015, 11:31:06 pm by HowDoGameDev
I don't have a demo ready, but I have an older game I made using the same build of the engine. Would anyone be willing to test it?

It's just a simple pacman clone as seen here.

Does it run?
Does sound work?
What does the FPS counter say?
What does the MSPF counter say?

If any errors are encountered, take a screenshot if possible and PM me a brief description of the error.

Requires .Net Framework 4.5 or Mono for Linux/Mac. I've only tested a little bit on linux. My linux laptop died recently so I'm not expecting it to work well.


December 16, 2015, 12:16:18 am #38 Last Edit: December 24, 2015, 06:14:04 pm by HowDoGameDev
Minor update today. Fixed the outline shader and restructured some minor things for it. I'd wanted to just change the shader program and reuse the same code for rendering an object, but that wouldn't have been as pretty as I wanted. So stage objects such as characters, props, etc now have a "Render" and "RenderOutline" method.

Worked on the mantis animations briefly and added a rather lazy idle animation. As you can see it has some clipping issues. I'll throw together the rest of the critical animations when I have time.


First, apologies for quadruple post. Second, a demo is now available on Itch.io
I expect a lot of issues to be uncovered, so please be sure to report them. There's a discussion board on the page or you can PM me whatever problems you encounter. I expect quite a few people to be entirely unable to run it, but with enough information, I'm sure I can fix it.

Thanks to all of you for your interest thus far and have a merry Christmas.