We recently reached out to Dean Razavi of Razbury Games with the idea of him providing us with five tips on using RPGMaker. Dean is the developer behind Vidar, and has taught/is currently teaching RPGMaker and Quest Design through PlaycraftingNYC. We figured that if there was someone to gain insight from on what goes into an RPGMaker game, it was Dean.
The following are Dean’s Five Essential Tips for using RPGMaker
So you’ve bought RPG Maker, you’ve played around with it, and maybe you’ve even made a few maps and a new custom monster to fight. But you’ve got some really big ideas for a game, and already you can tell that the engine is trying to limit what you can do. Fear not! For those RPG Makers looking to push the envelope just a little bit more, here are my five tips that will help you take the next step.
If you’ve opened up a recent version of RPG Maker and started clicking around in the map editor, you’ll notice pretty quickly that tiles seem to change out from under you. More frustratingly, borders around certain tiles will appear out of thin air. This happens because of a feature called “autotiling,” where tiles like ground, road, walls, and roofs are automatically modified to take into account the tiles around them.
Most of the time, this is helpful for defining edges and appearing to blend tiles together. But if you ever want to avoid it, you can use “shift-click” mapping. First, find a corner of your map where you can do a little drawing (or use a second map with the same tileset loaded up). Draw using the autotile until you’ve created the exact square you want to copy.
So let’s say you have a small path that looks like this:
We want to clean up the path below the stairs, and the blending between the stairs and top level. Draw a little bit of path below to play with, then shift + right click on the square you want to copy. We want to copy the red tiles here:
Now shift + left click on the square you want them to go, and just like that, we’ve gotten rid of some of the inappropriate borders:
RPG Maker traditionally uses two forms of data storage – “switches” which store Booleans (that is, either ON or OFF), and “variables” which store integers. When tracking progress in a quest, you might be inclined to use switches to control the logical flow of your game. Your fetch quest might look something like this:
Switch 1 – “Retrieve the Sword Quest Received”
Switch 2 – “Entered Dungeon of Time”
Switch 3 – “Found the Sword; Discovered You Need a Gem of Power”
Switch 4 – “Acquired the Gem of Power”
Switch 5 – “Acquired the Sword”
Switch 6 – “Returned the Sword to Soldier”
And then you’d check various dialogues, events, etc. against those switches. But that’s 6 switches to keep track of, and unless this is your only quest, you can see that this might spiral out of control quickly.
Instead, assign a quest to a single variable, and then increment that variable along the way. So I know that, if Variable 3 is my “Sword Quest”, and Variable 3 is equal to 4, then you’re on the “acquired the gem of power” step. When you reach the next step of your quest, rather than controlling yet another switch, just increase the variable by 1. Now all of your logic is more self-contained and easier to manage. Curious to know where you are in a quest while debugging? Hit F9 and you can see the values for all of your variables.
One of the awesome things about RPG Maker is that it doesn’t require any coding experience at all, but you can use it if you got it. There is one script that you can implement that will make your life so much easier, and it has to do with “self-switches.”
Every event in RPG Maker has four self-switches, “A” through “D”, and they are simply localized Booleans – they’re either on or off. But unlike regular switches, which are used globally through your game, these switches are unique to an event. Self-switches are often used for events like chests. When you interact with a chest, the event checks to see if self-switch “A” is on; if it’s not, the chest gives the player the item inside, and then sets “A” to on so it can never be engaged again. It’s an incredibly useful tool, so long as all of your logic is inside a single event.
But what happens when we have two events? Here’s a good example: a lever that opens a door. The lever and door are separate events; when we interact with the lever, we don’t want it just to set its own “A” to on, we want it to set the door “A” to on as well. Typically, these scenarios are handled with global switches, so the lever sets “Switch 1 – Door 1 is Open” to on, and the door event checks that switch. If you’ve got more than 20 doors in your game, though, you’ll quickly find yourself scrolling through so many one-time-use switches.
So don’t do that! Instead, by using a single bit of code, we can have the lever actually set “A” in the door event. How you do it depends on which version of RPG Maker you’re using:
The code you want to run in your lever event is:
$game_self_switches[[mapid, eventid, “A”]] = true
Where mapid and eventid are the numbers of the target event (in our example, the door). You can replace A with B, C, or D depending on what you’d like to achieve, and if you do “= false” at the end instead, you’ll set the self-switch to off.
The code you want to run in your lever event is:
var key = [mapid, eventid, “A”];
$gameSelfSwitches.setValue(key, 0 or 1);
Don’t forget the semicolons! Just like above, mapid and eventid refer to the target event, and “A” can be replaced with any self-switch. In the second line, you’ll want to choose either 0 or 1. 0 for off, 1 for on.
This single technique will clean up potentially hundreds of one-time use switches that get in the way of understanding a complex RPG Maker game. Use it liberally.
RPG Maker gives you a long list of default skills, and most of them use the exact same battle formula. In the top right of the skills window, you’ll see something that looks like this:
a.atk * 4 – b.def * 2
This is used to calculate how much damage the skill will do when used in battle, and it translates to “(attacker’s ATTACK stat * 4) – (defender’s DEFEND stat * 2).” Simple enough, but you can actually do a lot more here with these attacks.
You can easily replace attack or defense with any of the other stats (like luck, agility, or even maximum MP). To find out the abbreviations for all of them, just click on the “classes” tab in the database. You can also eliminate one or both of the actors here; if you want a damage that always does 1000 damage, then just write “1000,” and if you want a skill that ignores enemy defense, something like “a.atk*2” doesn’t take into account the defender at all.
You can also write code to be evaluated in that box! For example, a popular skill in Final Fantasy was a “traveler” attack which did more damage the more steps you took. In RPG Maker VX Ace, if the formula box simply read:
It would do damage equal to the number of steps you’ve taken for the whole game. You might want to seriously decrease that, though (maybe divide by 4?) because players can rack up steps pretty quickly!
A “state” in RPG Maker is like a condition, typically a buff or debuff, so think of things like poison, regen, sleep, etc. But they can also be used to track information, even if the state doesn’t do anything. Completely blank states with no effects, no icons, etc. are called “dummy states” and they can fix two important problems.
First, when developing a unique skill, in certain circumstances you may have noticed some text appear at the top of the screen when using the skill in battle that says “The skill had no effect!” or something similar. It may be doing what you want, but man that text is annoying. Have the skill you’ve created also apply a dummy state to the caster, and that text is gone.
Second, we can use dummy states to track previous activity. Suppose, for example, our ranger has a “hunter’s mark” skill that will increase the damage an enemy takes, but only from the ranger. We can’t just lower the monster’s defense, because that will make the monster take more damage from everyone. Instead we apply a hunter’s mark state that doesn’t do anything, and note it’s ID number. Then in the damage formula for our ranger’s attack, we can write:
b.state?(x) ? a.atk*6 – b.def*2 : a.atk*4 – b.def*2
Ok there’s a lot to unpack there. The first part of this phrase is “b.state?(x) ?” where we will replace x with the ID of our hunter’s mark state. That asks, does the defender have the state? If so, evaluate everything before the : and if not, evaluate everything after. So if so, we’re going to do more damage – multiplying our attack value by 6 rather than by 4 – and if not, we’ll do the normal amount of damage. You can also use dummy states to limit what skills an enemy can use when. If your boss has more than one “form,” track those forms with dummy states, and limit ability use by state.
Our thanks to Dean for sharing his knowledge of RPGMaker and his experience in finding these five tips that are sure to help other Indie Game Developers using RPGMaker out there!
Want to know more about Dean’s journey in Independent Game Development, how he’s implementing Vidar’s Alpha, or how Vidar has changed over the two and half years it’s been in development? Check out our Interview!
Are you an Indie Game Developer? Have some tips you think other Indie Developers might find helpful, interesting, or even life savings? Let us know! We’d love to help share the stories of your successes, failures, and innovations! Contact Editor-in-Chief Jacob Wood at firstname.lastname@example.org