I’m at one of those points now where I just have to stop and get some things clear in my head before I start writing more code. I just competed writing and debugging the code which controls the Move To Point function of the Heroes command tab. (for both groups this time)
Now both, Team A and Team B, can move to the point specified by the “gamer”, plus, the “gamer” can single out a specific Hero and move them alone to a point.
Ok…
What I have to decide on now is the strength of user control versus that of CPU control. For instance, if I told one of my Heroes to move to point (10, 25, 0) and on the way there that Hero gets attacked by an enemy, should the Hero finish the move or engage the enemy?
That’s one of the questions I had in my head but then I looked at my tab and saw that I did include a passive and aggressive mode. I mentioned in a previous post that the game Final Fantasy 12 has used a similar battle system style, but mine is my own thought and I’ll explain –
In FF12, it’s pretty much a turn based battling system in which you can control your characters or let the selected AI control them. If you controlled a FF12 Character, you could select which moves or abilities to use on an enemy. You could also tell a character that was being control by AI to do something specific if you wanted to, or just let them do their thing.
With my system, for starters…
It has a passive and aggressive mode, similar to the pet controls of an MMORPG. If you have played World of Warcraft as a hunter, then you can relate to how your pet controls were designed.
The passive and aggressive will work the same way within my combat system. Going back to that situation of telling a Hero to move to a point and an enemy comes and attacks –
If passive mode was set at the time, then the Hero would ignore the attacks from the enemy and continue to move towards the specified point until reached. If aggressive mode was set at the time, then the move to point would cancel and the Hero would start kicking enemy butt.
A similar scenario would be if I were to send Hero group B back to the city (retreat) with aggressive mode on and they run across some enemies. They would stop going to the city and start stomping enemies. If passive was on, they would indeed go back to their city.
That’s how the passive and aggressive modes can alter the out come of some commands.
As far as attacking goes –
The “gamer” will be able to tell a Hero to attack a specific enemy, but that command may not stick. What I mean by that is this…
Suppose you select a Hero who is a “Shieldmaiden” and you tell her to go attack Enemy C. Now lets say the number one AI slot for that Hero is filled with the ability “Taunt Enemy” and the requirement for the AI is set to “Boss.” Each slot in my AI setup will number from 1 onward, with number 1 being the top priority and number 2 being the next and so on.
In the scenario with the “Shieldmaiden” Hero, rather or not she actually attacks Enemy C depends on what’s going on around her. If she goes to attack Enemy C, but realize a Boss type enemy is within reach, she will Taunt the Boss. Why? Because Taunt Boss is set as the highest AI priority within her AI build. If a Boss was not in the area, she would indeed go and attack Enemy C.
The thing is, the “gamer” will never really have to tell a Hero to attack an Enemy because Heroes will do it any way if they are set to aggressive and enemies are within their range.
You can see how I want to design the combat system…
Very flexible.
Going back to attacking for Heroes; you can specify a specific enemy to attack if you wanted to, but what attack moves trigger is entirely dependant on your Heroes levels and AI builds. The higher level a Hero, the more abilities will become available, which means you have more things to build an AI around. No Hero will automatically do skilled attacks if you don’t set them. Heroes will only perform basic auto attacks on their own; which is also the case with a lot of MMORPGs.
Lets say you have a Healer Hero in your group. Your Healer will not just heal the members of his or her group. This is where the “gamer’s” IQ comes into play. Lets say the Healer has the ability Heal Level 1 for a Single target set to AI slot 1 –
Your requirements will also be different little pieces of the AI which can be acquired during gameplay. Lets say your Healer has the requirement HP90% and the requirement HP40%. If you add requirement HP90% as a requirement for slot 1, which has Heal Level 1 set, your Healer would indeed heal one of their members when that member’s health drops at or below 90 percent.
That’s how the AI building system will be constructed; with an ability/skill and a requirement placed at a slot. Going back to the “gamer’s” IQ….
Sure, healing at 90% seems fine, but think about how fast your Healer will burn through Magic Points. Setting the requirement to HP40% may be the smarter choice. If your Heroes are not taking over sized damage per hit, then why waste Healer magic points by healing them at 90% remaining health? They’re not in a danger zone for health or anything.
In fact, lets set HP40% to slot one’s Heal level 1 ability and lets set Heal level 2 to slot two, but lets add the requirement HP25% to slot two’s ability/skill. With this new AI build, your Healer will now cast a much bigger heal on a member when that member’s health is at 25 % or less, which makes sense. Cast the bigger heal in a more critical situation, which will preserve magic points.
That’s what my AI building system will do, it will leave you hanging. It will not take you by the hand and lead the way; it is up to you to decide what your Heroes will do and when they will do it and in what priority.
Given the fact abilities and ability requirements both have to be gained through game play, setting a really good AI can be hard if you’re lacking the requirement types. This is where I’m thinking about using the Third Game Genre style.
RPG + RTS + ???
Players will have to earn the “requirement types” for skills and abilities through out the game. I may not give every skill and ability through Hero level gain. Those are things I have to consider as I bring my combat system to life.
All this code writing day after day is tiring… The good thing for me is, I can code anything I want to code; which means, I can bring any ideal I have to life. It’s just a matter of wanting to do the programming work.
That’s why I try not to overwhelm myself and do things that are more simple and practical.
(As if coming up with my Path Finding AI for an engine I’m new to was practical… That was down outright ingenious.
)
Regards