Variety in the weather

Even arid mountain cities get rain.

Pyr is going to have ash falling most of the time. But there’s a 4% chance of a rain happening for a little while.

Screenshot of game character outside in the rain

It’s tough to see the rain in a still image. Take my word for it.

New menu layout


Full EXP and JP:


This new layout is very dense with information. But as someone who has spent many hours grinding in Final Fantasy 5, checking the menu to see my character’s current JP is very convenient.

I’m debating whether or not to keep the larger text for the current HP and MP. Technically it’s not very important to draw the player’s eye to these values, since they are refilled after each battle. I may put this layout into the battle UI, and change this menu to have a current-only value.

The job tree – iterations

A job (aka class or role) is a specification used to define a player character’s skills, abilities, and stats.


Iteration 2

Earlier draft of the job tree. Freelancer was a separate job with no antecedents. Apparently I planned to have Necromancer related to Alchemist.

The freelancer became a prereq job.

The magic jobs were renamed to emphasize their similarity.

The magic jobs got a third stage in their tree.

Stareomancer became the much less magical-sounding Ranger.

Iteration 3


Freelancer became Adventurer, which shifted over to a prereq for the magic jobs. Their third stage was removed. (The fewer exclusive jobs, the better.)

All jobs were normalized to have a level 3 prereq.

Iteration 4


Merchant and Alchemist lost their Mir-exclusive status, and became part of the Adventurer tree. (Again, the fewer exclusives, the better.)

Page was a new job added as the first stage of the magic tree. It then branches simply with each player character getting their own variety of Channeler.

Copycat became Sage.

Halving the player’s HP

Recently I’ve been playing Final Fantasy Tactics Advance A2, and I’ve been appreciating their relatively low numbers. The highest HP I’ve seen in the game is around 700 total.

So, for FCA, I’ve reduced all of the playable character’s max HP by half.

It’s much too early to balance the game, but the original values were clearly off. End-game bosses needed to take three turns to kill a completely unequipped player character. That’s far too much.

Examining damage to HP ratio

The formula for most damage in the game is:

Math.power(a.atk, 1.5)

Or, in English:

The battler’s attack stat to the power of 1.5

That means, even at the soft cap of 99 ATK, an enemy’s skill would deal 985 damage against an unarmoured target.

In the early days of development, the highest HP class in the game had 5300 HP. That’s now down to 1300, and the lowest HP class now has 540. Now we’re looking at the possibility of characters being tanks or glass cannons.

Creating more varied gameplay

Lowering HP should have the effect of increasing the value of armour, which is good. I don’t want players to have to grind too much for anything in particular. So I’ll split the burden of empowerment between gaining levels and gaining gold to buy equipment. It’s not much, but it’s a start to increasing diversity of the standard gameplay loop.

Skills targeting friend or foe

A lot of skills in this game fall into both of these categories:

  1. Can target friend or foe
  2. Hit multiple targets at once

… which is more complicated that it seems. By default the engine lacks support for the player changing targets between friends and foes.

Attempt one

At first I used Yami’s Invert Target. It’s a buggy mess. A community-created compatibility patch fixed it for a while, but eventually it started to give me errors again.

Yanfly to the rescue

I recently switched to Yanfly’s Selection Control. It’s a solid plugin, compatible with Yanfly’s other works. But it still doesn’t support both of the conditions I mentioned. You can either have a skill toggle between friend and foe, OR have it hit multiple targets.

I compromised by writing this block of code for each of my multi-target skills:

for (var i = 0; i < target.friendsUnit().aliveMembers().length; ++i) {
 var member = target.friendsUnit().aliveMembers()[i];

After the player selects a target, all of the target’s allies are added into the scope of the attack.

It’s still not the most elegant solution – the selection cursor only appears over one target at a time – but it’s stable and it works.

Bravely Default menu


Final Fantasy 5 Menu


RPG Maker MV default menu

FCQ menu V1


Bravely Default, and the job-based Final Fantasy series before it, is a big influence on this project. The way their menu organizes information is a lot more elegant than what I have now, so I’m going to have to move in that direction.

FCQ menu V2 (Updated December 2016)

Automating pixel art


Using filters to turn full-colour illustrations into pixel art usually results in a sloppy final product.

But… it’s much less time intensive than drawing each sprite by hand. I’ve iterated on my automated Photoshop action many times, and it really fits the style I’m going for. In lieu of a budget and artists, it’s a good fallback.

I appreciate how the low fidelity of pixel art allows your imagination to fill in the details. Of course, my opinion is overwhelmingly coloured by nostalgia.

Image from RPG Maker MV. A low-resolution version is used for the purposes of education and commentary.

Iterating on the enemy design

Iteration 1


Iteration 2


Notably, the palette has been restricted to match the rest of the game. True black no longer exists.

Shadows have been removed, since they’re difficult to do manage consistently, especially if characters will be floating/jumping.

Iteration 3


Between iterations, the average sprite size became a little larger, then scaled back down again. I’m trying to keep them all relatively the same size. Larger = psychologically more threatening, so I’m saving larger sprites for boss monsters.