I was never happy with the battles in Dawn's Light. They just never came together like I had planned. Defense was too weak, a lot of the moves weren't worth using and I was limited by the existing scripts. I designed everything on paper first. I tried to give each character interesting moves and set up synergies so you could experiment and plan out attacks.
Towards the end of development it became obvious that the battle system was not shaping up as I had hoped. You ended up not using a lot of the moves because they weren't worth the trouble. The threat system didn't work out because of the defense being too low. We couldn't just increase the value of defense because that would have meant entirely re-balancing the game.
So the Dawn's Light battle system didn't live up to my expectations. I was happy with the technical side of it, I made a lot of changes to the default system but I realized no matter how much I changed it was always going to have those limits. I think we had some good skills and the boss battles were cool.
Planning the new battle system
When Dawn's Light was done and we started thinking about making a new game, I wanted to make a new battle system from scratch. I wanted to be free of the limits of the old system. Knowing that I could now do anything was exciting but also scary.
I spent some time looking at different battle systems in different games. I think that most RPG maker games have bad battle systems. They either have very few moves that you just use over and over or they have a whole bunch of different moves that all do the same thing. I always thought the Mario & Luigi RPGs on ds had good battles. I couldn't expect players to make timed button presses for extra damage (we learned that lesson on Dawn's Light) but there was still a lot there.
I find a lot of battle systems annoying. I don't like having to scroll through a list of moves every single turn and I don't like choosing every guy's move before any of them attack. I do like having more options available and I like having different solutions to the same problem.
I played a whole lot of different games and the idea of the battle system started to form in my head. You would have 3 active party members instead of 4 to make things quicker. You wouldn't have a list of skills to choose from but instead have each move available with a single press. Since you only had a small number of moves, each move had to be more interesting. That's how the rune system came about. I can't pinpoint exactly where I got the idea from, quite a few games use similar concepts. It just fit really well with what I was trying to do.
Programming
I knew it was going to be a big job so I wanted to make sure I kept things organized and clean from the start. I made a skeleton for the battle system on the first day that ended up working very well. Everything else was built around it and it held up, even when I started adding in terrible quick code at the end.
In the beginning we planned to either use static screenshots of maps or have some backgrounds drawn. Then one day I was looking at the map code and wondered if I could shove it into the battle system so we could use real maps. I thought it might end up being too hard so I left it for a while. Then one day I decided to just try it out and it was really easy. Pretty much everything just went into place right away. I think it's one of the best features of the battle system. We make the battle background just like a normal map. We can put anything on them that we could in a normal area. I can't wait to try out some new stuff in future games where we use the background as part of the fight. The shrine is an example of that.
I slowly put the battle system together. I would work on the hud for a while, then the character sprites, then back to the hud. There was however one major thing that I hadn't started. The Execute_Skill and Calc_Damage functions. These are the heart of the battle system and they are what makes it different to everything else. I split the Damage calculation into 8 steps.
1 - Calculate base damage and effects
2 - Add rune bonus damage and effects
3 - Adjust damage according to states
4 - Determine critical hits
5 - Apply new states
6 - Reduce damage by defense and dodge
7 - Adjust damage base on level difference
8 - Final adjustments
I added to these over time but once again it was helpful to have the skeleton figured out. There's another one of these for area attacks as well.
Skill Data
Once I had the battle system kind of working I started organizing skill data. RPG maker features a nice interface for filling data for skills, states, enemies etc but the data we needed was so different that I decided to just fill them in as text. It worked quite well and allowed us to search for things instead of looking through a list. Here's an example of a skill:
- Code: Select all
DATA[:combo_lilly_sasha] = {:desc=>"Light and Shadow", :cost=>60,:drain=>0.7,:scope=>:all_enemies, :base_dmg=>1, :pow_m=>1.7, :cast_anim=>0, :hit_anim=>49 }
There's many more options but the system uses defaults whenever you don't specify a value. States are similar, here's the state that gets applied for Poison I:
- Code: Select all
DATA[:r_poison_1] = {:desc=>"Poison Damage each turn",:dot_v=>3,:icon=>27,:fade_turns=>2}
It's easy to change values and it's pretty easy to add a new parameter when I need one. Overall I am happy with the way we handled data for the battle system. I don't have any big changes planned for this.
The last 10%
They say that the last 10% of the work takes 90% of the time and that sounds about right. Even after you could start a battle, use your attacks and defeat the enemy there was so much left to do. Things like having poison states being able to kill an enemy or making area attacks remove states from damage. You just don't realize how many of these kinds of things there are to do. All of the rune effects and trinkets had to be shoved in there as well.
I spent quite a while getting the damage and state pops to look good. I tried quite a few ways of having damage numbers appear, both the style and animation. I really like how they ended up with the bouncing and the delayed showing of states. Having 7 states show up after a move looks good but I don't think we'll ever have a skill like that.
When it came time to do bosses we decided to do something unique. We wanted to give bosses very unique moves so that beating them would be more of a puzzle than just a harder fight. They didn't work out as well as we had planned, just like Dawn's Light they looked better on paper. I also think that players are so used to just having a boss hit harder and have more health that they didn't really look for the solution. Lots of players didn't use the orbs in the last fight and just beat Donovan really slowly. We considered telling you to attack the orbs but that felt weird. It would be like having somebody standing at each puzzle telling you the solution.
Better Beta
Your skills are saved in your save file so during beta as I made changes, they weren't showing up for our beta testers. It was only later when they reported problems that I had fixed that I looked through the code and realized the problem. I have some ideas for fixing this for the next beta test but even with this problem I made quite a few changes to the battle system thanks to suggestions from testers.
Battle System Complete
The battle system is about 6000 lines of code. Some of it is pretty nice and quite efficient and some parts are horrid. I am very pleased with the final result and I'm already planning some upgrades for the next game. It's a vast improvement over Dawn's Light and I would say it's the best battle system in any RPG maker game. It was made to be exactly what I wanted so I guess I would like it.
It wasn't until near the very end that everything came together and worked. I think the time we spent balancing really paid off, especially in the hard mode. I'm particularly happy that we pretty much eliminated the need to grind enemies. If you're stuck on hard mode it might help you but in general you just don't need it.
Next Time?
Here's what I've got so far (just ideas, may or may not happen)
- More team power, maybe save up a triple team move
- More runes, upgraded and completely new
- More interaction with the background
- Kill off Enoch within the first minute ... jk ... or am I?
Anything you would like to see?
By the way, you can use the wasd keys to choose moves. Not sure why.

