• Welcome to Final Fantasy Hacktics. Please login or sign up.
 
March 28, 2024, 10:11:18 am

News:

Don't be hasty to start your own mod; all our FFT modding projects are greatly understaffed! Find out how you can help in the Recruitment section or our Discord!


TacticalRPG Engine

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

HowDoGameDev



Battle Engine
*Counter Skills - I've started brainstorming how to implement counter actions, which will be pretty simple methinks. There are some caveats, but it'll basically be the same as FFT: Server tells clients to cast initial skill, then the server walks through the affected units, checks if unit has a counter skill, calculate if the counter will occur, check if it is smart for the counter to occur and finally if the enemy is even in the counter skill's range. If these all come back positive, the server will send out a counter skill. This skill command will probably have a special flag to prevent a never ending chain of counters.
*Skill Visuals - Working on implementing the shading effect where units and the stage are dimmed out during certain skills. It helps give the skill a more cinematic feel. I have to implement a "tint" attribute to the characters to change their colors in the shader, but I needed to do that anyways for status effects like poison.
*Skill Sounds - Implemented, albeit not very flexible yet. The skill system executes things like "play sound", "animate character", "activate particle" in layers. This means the engine doesn't allow you to play a sound on x frame of an animation. Allowing that will not require a lot of restructuring, but I need to make sure I plan it out well.

Art
I don't think it's a secret that I'm bad at art. The characters, environments, textures and even the UI have been a big weak point of the game engine. The engine is far enough along that this is becoming an issue to me with the stages being especially bad. Don't hesitate to constructively point out that something looks like garbage.
Quote from: Angel on August 06, 2015, 10:05:50 pm
Oh god, the fisheye perspective X____X

The above is probably the most useful bit of feedback I've received and resulted in the most dramatic and appealing change. Don't worry about being blunt and don't hesitate to ask questions.

Demo Plans
Next demo will be fairly limited in that it'll just be a single battle between two identical monster teams. A bit of a step back, but I figure it's easier to limit the scope to get useful feedback. The squid will be usable, but his animations will be limited.

As always, thanks for the kind words.

Guru

I actually think you have done pretty good on the art, especially considering you suck at art lol. I know the feeling, artistic is just something I am not.
I think this map looks pretty damn good, besides the lack of texture at the moment, but I'm assuming you just haven't gotten there yet.

The only thing I can suggest from looking at all of your work so far...the trees need a bit of touchig up. Wish I could give you specifics. Maybe this will help?

Really, I think you are doing fantastic work man and not only that but you are improving too. I see lots of potential here. I'll pop back in soon and give more feedback on everything else new you've added ( when I'm not supposed to be writing a 8 page essay on VPNs  :roll: )

HowDoGameDev

November 14, 2016, 07:21:40 pm #102 Last Edit: November 24, 2016, 11:21:10 am by HowDoGameDev
I use a VPN for work, understand the concept, but would be utterly lost on setting it up. Good luck with that.

As for the trees, I agree, they're almost as bad as the hard angles. I will probably scrap the entire model and come up with something else. Stylistically, I'm trying to emulate Wind Waker. The textures do a phenomenal job at disguising that everything's low poly, looks good and matches my modeling skill.

This stage in particular has a lot of bland grass space. I've done a little bit of experimenting with particle systems and I wonder if I can use that to add a bit of shrubbery to liven it up.

First priority though will be softening up those edges. Something like below is what I plan on emulating.


Some topology changes


Coloring


Minor texturing, found some tricks with blender to assist in tiling. Probably need a wider cliff texture to add more variety.

HowDoGameDev

Most of the updates thus far are nothing to boast about, just small things like adding skills and effects. So instead of boring everyone with that, I'd like to gather input in regards to an SRPG AI.

"Tactician" is the name of my most intelligent AI. It makes decisions based on how dangerous moving to a location is and measuring the potential effects of an skills. Tactician assigns values to the effects of skills and picks the highest value actions. Tactician also takes map influence into consideration. Influence consists of assigning a value to a tile based on what units could theoretically move to it. So if a tile has a danger value of 5, it means that 5 enemies could move to that tile, meaning they could probably cause whatever is in that tile harm.

Assume that damaging an enemy for 1% of their health is worth 10 points. What values would you assign to these effects?
Move to tile with danger value of 1 (-5)
Move to tile with safety value of 1 (5)
+1% HP Enemy (-10)
-1% MP Enemy (5)
-1 Speed Enemy (50)
Inflict Poison Enemy (45)
Resurrect Enemy (-500)
Kill Enemy (500)
-1% Health Ally (-10)
+1% Health Ally (10)
Resurrect Ally (200)

These would be baseline values. Eventually I would add another layer that includes a "personality" aspect. Personality would contain values for things like "aggression". Units with high aggression would increase the value of certain effects that inflict harm upon the enemy. Units with high empathy would increase the value of certain effects that assist an enemy, such as increasing HP, MP or casting positive status effects. Additionally, I hope to allow the AI to keep track of the effect units are having on the battle. This could be used to modify the tile influence a unit has or if an enemy unit should be prioritized for having a positive effect on their team.

Kaijyuu

Ah, so you're making a heat map? Awesome.

I dunno about specific values, but I would put reviving ally above killing enemy. Maybe those can be weighted differently based on the current ratio of enemies:allies, too (more enemies meaning reviving more valuable and killing less).
  • Modding version: PSX

HowDoGameDev

Yep, it's basically just a heat map. As for weighing actions based on the current status of the battle, that's not a bad idea. I'd probably add some other attribute for the personality, maybe something like perception that would increase the unit's awareness and given weight for factors like enemies left.



Additionally, still not dead. Haven't had a lot of time to work on things with the holidays. Most of the progress isn't very visual. Standardized a few things related to actions/events and learned a few more things with blender.

Added static 3D models as an option for props. I apparently never implemented. The bushes in the screenshot are examples of a static prop. A skill or event can manipulate a stage prop or spawn their own props. Other examples of props are the particle emitters and the waterfall and water from the river map.

I have scripted out the first battle. It's all basically just dialogue between characters and then a battle. Nothing overtly complicated. I have rough drafts for most of the scenes necessary for chapter one. I'm dodging any graphical asset work as I'd like to just have something to play and share that's a bit more appealing than a random battle. Going to create another forest vegetation prop though as I enjoyed making the bush.

HowDoGameDev

January 11, 2017, 11:58:43 pm #106 Last Edit: February 23, 2017, 01:17:42 am by HowDoGameDev

Quick AI battle at the forest hut. Textures are still incomplete, but I got bored of working on them. Fixed a shader issue that was causing weird striping on some units and overall ruining the textures. Not featured in the video though.

Had to fix a few issues with the GUI code as well. I allow things to be positioned relative to designated sides of the screen. This was causing things to be positioned weirdly if the GUI control was something like an empty label. Completed further GUI updates as well.

I've also realized I never animated a basic punching attack for the human models. Going to have to put that together so battles don't look too goofy. Some of the bare minimum squid animations are also in. Received some feedback and suggestions for his gait. Going to see if I can get that working. That'd put me at 5.5 monsters. Mosquito's kind of crappy, so I barely count it. I've some basic sketches for a terror bird that I might pursue to bring it up to six. I know it's basically just a chocobo, but whatever. Animations should be simple and I think terror birds are cool.

====

Project is not dead. Taking a break while I discover the wonders of owning a house.

HowDoGameDev

From beyond the grave! I've nothing to really show, but wanted to provide an update on the status of the project.

Work on graphical assets such as stages and characters has been stopped for now. I was straying too far away from creating a "minimum viable product" and getting frustrated as I clearly lack skill and the quality doesn't improve much despite the time spent. Instead, I've refocused and am working on completing missing features or working on my own campaign by adding the necessary scenes and building very primitive stages.

Battle Module
Minimum required features implemented. Movement, skills, terrain, attacks and statuses are all working. AI is also competent enough to not be a complete pushover. Battles will end based on criteria that is defined. Battle events also work with support for quite a few different actions.

Story Module
A campaign can be loaded from a file and the scenes and story battles will play through. Scenes can be triggered automatically or based on entering a location. Scenes also product "scene" results based on how the scene comes to an end. This means someone could create branching story lines if they were inclined. I don't plan on using this myself. Progress through the campaign can also now be saved to a file and loaded on start up. No support for character/party progression though.

Overworld Module
The Overworld is functional. Locations can be revealed based on triggers and travel between locations is possible along defined paths. Random battles can be triggered based on location type. Random encounter enemies are defined for locations and allow only certain monsters to show up in certain areas.

Character Progression
Nothing really exists yet. Characters have stats and that's about the extent of it. I plan on implementing a sphere grid system similar to FFX where you move about a grid. A job consists of an area of a grid with stats and skills relevant to that job. This means a unit can use any and all skills that they learn in battle. I can recycle the overworld module as it is similar with movement being between nodes.

Equipment
Consumables are implemented. No work on armor or weapons completed yet. This should be fairly easy to add and allow things like items having innate statuses and stuff like that.

2D Sprite Support
Partially implemented. Monster sprites and character sprites in the FFT format can be loaded. Several animations haven't been defined yet, but it works. More work can be done on this if there's any interest.

Kaijyuu

Just posting to show support. It's a nice hobby project and you should be proud of it.
  • Modding version: PSX

snovlo

hey i'm new to FFH and after i reading your project and progress
i'm excited and this is just a great project
well if the goal can provide PVP system like you said it would be awesome
but you maybe need help about job statistic and etc from the others here.
keep up dude, respect!
  • Modding version: Other/Unknown

HowDoGameDev

Thanks both of you.

The PVP is certainly something I'd like to have, but it's down far, far, far down the road. The engine was designed from the ground up with multiplayer in mind, but there are a few additional features for battle that I'd like to make sure are implemented properly before I start working on the design for the necessary network packets.

Video below contains the necessary menus I've implemented for the overworld: Data, Items and Party


I was too lazy to remake the video with the updated party menu. This will be expanded later to allow equipment to be changed and to upgrade the character.


The necessary framework for equipment is mostly completed. Allowing weapons and armor to be equipped is currently missing. I need to figure out how I want them to affect damage and accuracy calculations.

Weapons
There will be a few different classes of weapons, albeit there will be little functional difference between them as far as code goes. The equipped weapon will dictate the "attack" skill used. Weapons will scale based off different stats. I'm thinking about also implementing different kinds of physical damage: piercing, slashing and blunt. Armor could then have different resistances to them and other standard magical elements. Since they can be treated the same as your normal elements (fire, electric, ice), implementing them is simple. The below weapon classes can all be implemented using the exact same system with no real changes. There will be sub classes for the below as well for things like magic rods along with ranged weapons like bows, crossbows, wands, etc.

*Swords - baseline for damage. Scales off strength with dexterity as secondary. Normal "cross" targeting with a range of 1.

*Knives - Less damage than swords, but higher crit chance based on angle of attack. Scales off dexterity and will use speed in some wayl. Normal "cross" targeting with a range of 1.

*Spears - Less damage than swords, but higher accuracy. Scales off dexterity and strength. Normal "cross" targeting with a range of 2.

*Axes - More damage than swords, but less accuracy. Scales on strength. Normal "cross" targeting with a range of 1.

*Halberds - Similar damage to swords. Scales off strength and dexterity. Requires two hands. Targetting will be "L" shaped, hitting the primary hand side, corner and front.

Additionally, I find that I can make a lot of progress when I'm not letting myself get bogged down with art. As far as I can tell, below are the last few things that I consider to be required for the minimum feature set. I'm certain a few other things will come up though.
*Shops
*Character Progression
*Make equipment usable



HowDoGameDev

May 02, 2017, 02:37:03 pm #111 Last Edit: June 28, 2017, 05:47:50 pm by HowDoGameDev
Shops
Shops are implemented and defined by an XML file. A location can then have either a custom shop attributed to it or use a "common" shop. Additionally, the shop has "levels" for inventory items. This allows better equipment to be unlocked as the player progresses through the campaign. Item management is also possible and uses the same menu. I'd like to make some presentation changes such as allowing for item icons and stuff like that, but it's not essential and thus cut. What is essential is displaying the party's current funds, but I derped that up and forgot to display the party's money somewhere, but that's a quick fix.


Character Progression
I've got a plan that I think will work. Instead of a job simply being a list of skills and passives, each character will have a single "skill" list that has all the skills they've learned available to them. Character progression and customization will instead be mapped to a tree composed of job branches. Job branches are composed of skill, passive and equipment access nodes that can be unlocked with experience points. Navigating this tree will also cost experience points and each job branch starts with a "gate node", which is essentially a node that costs more XP than normal to get through. Additional stat nodes relevant to a job will also be available in a job's branch, but will use their own currency.

A job branch will also grant a character passives, equipment access and a limited set of skills for being in its area. As an example, moving a mage character to the "Knight" branch would grant it access to heavy armor and the "defend" skill despite not having unlocked the equipment nodes. The trade off is that the unit would then have to sacrifice additional experience points to navigate back to the mage branch to unlock more skills.

Make Equipment Usable
Consumable items have been available for a while now. Actual equipment not so much. A unit can now equip armor and weapons, but they don't do anything as I don't have much equipment to work with. Generating new items is easy (more xml files with attributes). Weapons will dictate the "Attack" command skill and can grant passives, statuses, skills and modify a character's stats. Armor works much the same, minus the "attack" stuff. Torso armor, helmets and accessories are all the same thing with how they work, just with restrictions on where they can be equipped.

Current Focus
I'm working on the character progression right now. I can recycle the Overworld node system for this.

Update - 2017-05-13
* I've finished a skill builder to assist with generating skills. The application can't build the visuals, but it can let me generate a skill. This should make skill generation a bit faster and easier for anyone that wants to experiment with the engine.
* Weapons now dictate the "Attack" skill that's used. Can be set to any skill in the skill library. No support for dual wielding. Right hand takes priority.

Update - 2017-06-22

Got jealous of Koruten. Go check out what he's done.

Update - 2017-06-27
Wrote a quick and dirty importer for FFT maps. The wiki was a major help. Can currently import the basic geometry for the map with UVs and normals intact. I can also convert the texture to a usable format, but I'll have to experiment with the palette stuff to get colors to work. Character shading is also working again. Had to remember how to math.

HowDoGameDev

I've completed enough minor things to throw a post together.

Character Progression
I've started working on refactoring the "Overworld" classes to be based on generic "Dot" and "Connection" classes. This will make it easier to implement the node system for skills and avoid having duplicate code. I've made sure to maintain support for a job system similar to FFT. HP and MP are now calculated stats based on "Constitution" and "Spirit" stats. They can still be explicitly set if desired.

Menus
I've implemented support for "Panels". These are basically standard groups of controls that can be reused by menus. This probably should have been a feature from the beginning. This allows things like character stat information to be displayed and customized in the same way regardless of the game's current state.

Equipment
Equipment can now be equipped and does what you'd expect it to do. They can have passives and can modify a character's base stats. I'll also probably add support for them to grant unique skills to a character, but it's not done yet.

Graphics
I fixed an old shading issue that was causing light to basically rotate with the camera. This was originally caused by me being a derp and not understanding math and logic. Getting shading to work on a stage is a bit trickier. I'm trying to decide if I need to implement normal maps or want to deal with manually adjusting the weird normals that Blender spits out.

Network Multiplayer
No further work has been done. All of the important battle commands work fine. It's the client requests that aren't working yet. A request is something like "I want to move character A to X, Y". The server would analyze the request and send out a matching command if valid. Some of the requests don't have code in place to be converted into a network packet and converted back. So a person can only watch two AIs play. Finishing this would be pretty simple, so I'll probably complete it soon.

Current Focus
Resuming work on character progression and creating more skills and items to work with.


HowDoGameDev

Update: Graveyard Edition
Still working on this, just been very busy.

I had to revamp the item system to make it more flexible. The old method was untenable and not flexible. Items utilize the same "effect" system that regular skills do and the same skill display system. Instead of being complete skills on their own, they now piggy back off of three special item handling skills: "Throw", "Use" and "Apply". More options can be easily added using this method. Items can also limit which item handling skills they can be used with.

Next up is working out the display of weapons during an attack.


Please ignore awful texturing

3lric

Lookin good at always man, keep it up!
  • Modding version: PSX

HowDoGameDev

November 20, 2017, 08:16:34 pm #115 Last Edit: November 24, 2017, 09:22:45 am by HowDoGameDev
Thanks.



Work continues. Found time and fixed the particle sorting, added the ability to use sprites and implemented a few more methods to modify the particle emitter's behavior. I'm keeping weapon display simple and will continue to use key frames for the actors and will use a single bone for the weapons.


With some tweaks, the particle system also works to create grass.