30 December 2008

Final Fantasy Mystic Quest Battlefield System Tutorial

FFMQ Battlefield Demo
Notice: As of 12 November 2009, this entry has been modified for use with RM2K3 (v1.08). It should be easy to adapt for earlier versions or RM2K. A demo is also available (as requested by Drake) from the panel on the right.

This tutorial teaches how to set up a multi battle system similar to the one used in Final Fantasy Mystic Quest, where you can clear out certain areas (represented by crossed swords in the game). It's a simple method that can easily be adapted for your game.

Knowledge Base

  • Common Events
  • Switches
  • Variables

Variables

Set up 3 Variables: Randomize, Num Battles and Battles Left. In this example, the variables are set to 1, 2 and 3 respectively.

Common Events

We will only need one Common Event for this (set up in the Database). Let's call it "Battle Check" and set its "Trigger" to "Call".

In the "Events Conditions":
  • Create a Conditional Branch (with an Else Handler) to check if the variable "Battles Left" is set to zero.
  • Under the Conditional Branch, create a message stating that the monsters have been cleared out.
  • Change the Switch "Cleared Out 1" to ON.
  • Then, under the Else Handler, create another message to display how many battles are remaining. We do this by adding the variable switch, \V[x], where x is the number of the "Battles Left" variable (in this case set to 3).
<>Branch if Var [0003:Battles Left] is 0
  <>Message:Monsters cleared out!
  <>Switch Operation:[0001:Cleared Out 1] ON
  <>
: Else Handler
  <>Message:Only \V[3] more battles left.
  <>
:End
<>

The Map

On the map (where you'd like the multi battles) to take place, we'll need to create several events. For this tutorial we'll only use one battlefield event, but you can modify it for more than one battlefield event.

Events


Inn Event
The first is called "Inn" for this tutorial. This is so that you can save or restore HP in between battles. Set the "Trigger Condition" to "Action Key" and the "Event Layer" to "Below".

  • Create a message saying, "What would you like to do?" or something similar.
  • Show Choices, with the options set as "Restore", "Save" and "Exit".
  • Under the "Rest Handler", set the screen tone to all zeroes with a wait time of 0.3s, Complete Healing, create a message that all HP and MP have been restored, and set the screen tone back to normal with a wait time of 0.3s.
  • Under the "Save Handler", open the Save Menu.
  • For the "Exit Handler", just leave blank.
<>Message:What would you like to do?
<>Show Choices: Rest/Save/Exit
: [Rest] Handler
  <>Tint Screen:[R000,G000,B000,S000],0.3 Sec (Wait)
  <>Full Heal: Entire Party
  <>Message:HP and MP Restored.
  <>Tint Screen[R100,G100,B100,S100],0.3 Sec(Wait)
  <>
:[Save] Handler
  <>Open Save Menu
  <>
:[Exit] Case
  <>
:END Case
<>

Battle Event
The next event is "Battle 1" (or something else to your liking), which is where the battles will take place until the monsters are cleared out. Set the "Trigger Condition" to "Touched By Hero" and the "Event Layer" to "Below Hero".

  • Change the variable "Randomize" to a random number between 1 and 3.
  • Next we will create 3 Condition Branch, each with a different number from 1 through 3. This is to make random monster parties. For this tutorial, we'll use the default Monster Groups: Plains 1, Forest 1 and Desert 1.
  • In the first Conditional Branch, which is based on the variable "Randomize" being set to the "same" as 1, start a combat with Plains 1 being set, with the "Defeat Handler" set to "Execute Custom Handler".
  • Under the "Victory" condition, set the variable "Battles Left" to subtract 1, then call "Battle Check".
  • Under the "Defeat" condition, set a message to display the final score, using the \V commands for the values stored in the "Battles Fought" and "Battles Left" variables. Also create a "Game Over" command here.
  • Finally, create a new page and make the &quout;Event Conditions" so that the Switch &quout;Cleared Out 1" is ON. This way, once all the monsters have been defeated there won't be any more.

Do the same thing with the other two Conditional Branches, changing the monster party and increasing the value of Randomize each time. The full code should look something like this:
<>Variable Oper: [0001:Randomize] Set, Rnd [1-3]
<>Branch if Var [0001:Randomize] is 1
  <>Enemy Encounter: Normal, Plains 1
    : Victory Handler
      <>Variable Oper:[0003:Battles Left] - , 1
      <>Call Event: Battle Check
      <>
    : Defeat Handler
      <>Message: Final Score
      :       \V[3] left out of \V[2]
      <>Game Over
      <>
    :END Case
    <>
  : ELSE Case
    <>Branch if Var [0001:Randomize] is 2
      <>Enemy Encounter: Normal, Forest 1
      : Victory Handler
        <>Variable Oper:[0003:Battles Left] - , 1
        <>Call Event: Battle Check
        <>
      : Defeat Handler
        <>Message: Final Score
        :       \V[3] left out of \V[2]
        <>Game Over
        <>
      :END Case
      <>
    : ELSE Case
      <>Branch if Var [0001:Randomize] is 3
        <>Enemy Encounter: Normal, Desert 1
        : Victory Handler
        <>Variable Ch:[xxxx:Battles Left] - , 1
        <>Call Event: Battle Check
        <>
      : DEFEAT
        <>Messg:Final Score
        :  :\V[3] left out of \V[2]
        <>Game Over
        <>
      :END Case
      <>
    :END Case
    <>
  :END Case
  <>
:END Case
<>

Set the "Event Graphics" to whatever you want for the Inn and Battlefield.


Pre-Define Event
The final event is to pre-define the starting variables.

Make a blank event in one corner with 2 pages. Set the "Trigger Condition" to "Auto-Start".

Page 1
In the "Event Commands":
  • Change the "Num Battles" variable to "Other" then the number of battles.
  • Change the "Battles Left" variable set to 5 (although you can increase or decrease this amount according to your preference).
  • Change the Switch "Battle Setup" to ON.

Page 2
Change the Switch (under "Preconditions") to "Battle Setup" and make sure the "Trigger Condition" is set to "Action Key". That way it won't keep repeating the event.


Modifications

Since this is only a one multi-battle event, you could easily add more by adding more variables (Battle 2, Battle 3, etc.) and changing the command preferences for each.

Rather than having an autostarting event that predefines the variables, you could make it a "Call Event" instead. That way, you can call it after a victory rather than having to rely on a switch to toggle it on/off.

You could also add a reward after all the monsters have been defeated, such as gold or a "special" item.
23 November 2008

Resource Templates

Here are some resource templates to make it much easier to design your own graphics for RPG Maker 2000 and 2003.

Character Set Template

Character Set TemplateEach charset comprises 12 squares, divided into 4 rows of 3 columns, representing the 3 animation frames for each direction.

The top row is where the character is moving upwards (north), the second row is moving right (east), the third is moving down (south), and the bottom row is moving left (west).

Charsets must be 288x256 in size and can contain up to 8 characters.


Chipset Template

Chipset Template -- Missing - No thanks to Image Sh**!Chipsets must be 480x256, comprising all of the components for maps.

The dark blue and black squares are where the water autotile animations go (an example of which is already present).

The orange and gray squares are used for additional animations, such as a flickering torch or lamp. Each row is one set of animations.

The blue and black squares are where the autotiles go, as for things like forest, grass, desert or carpet. Each individual autotile set comprises a 3x4 grid.

The red and dark blue squares are where the background tiles go, such as bushes and cities on a world map or furniture and decorations on an interior map.

Finally, the pink and blue squares are for the transparent foreground tiles go, such as windows, doors or pictures, which are also used for events. Note that the first pink square on the left must be kept as this is used for blank events.


Faceset Template

Faceset TemplateFacesets must be 192x192 in size. They are for providing a graphical "face" for message box conversations or items found.

Each square contains a single face, which can also be expressions representing surprise, anger, etc. This adds an extra dimension to the game.




These are the basic templates for RPG Maker, which are intended as a rough guide for creating your own templates. They are compatible with RM2K and RM2K3.
22 November 2008

RM2K3 Character Sets #1

These are a few charsets I created for RPG Maker 2000/3 using Character Maker 1999.

Click on the charset image (opens in a new window), then right-click and "Save Image As" to the hard drive. Do NOT save the images into your Project Charset folder. Import them instead.



Chara 1a
Chara 1a - RM2K3 Charset
Chara 1b
Chara 1b - RM2K3 Charset
Chara 1c
Chara 1c - RM2K3 Charset
Chara 1d
Chara 1d - RM2K3 Charset
Chara 1e
Chara 1e - RM2K3 Charset
Lunacy 1
Lunacy 1 - RM2K3 Charset
From a game I was working on.
Lunacy 2
Lunacy 2 - RM2K3 Charset
From a game I was working on.
Lunacy Chars
Lunacy Chars - RM2K3 Charset
From a game I was working on.



These are free to use. Credit would be appreciated, but it's really not necessary. No credit is required, though you can if you want to if you use any of these.

Blue Mage Skill -- Random Target

This is an expansion of the Blue Magic tutorial, but instead of targeting monsters in sequence (i.e. starting with the first monster then going onto the next after that monster is slain) we can create a routine where the target is randomly chosen.

Knowledge Base

  • Switches
  • Forks
  • Skills
  • Events Commands


Setting Up

  • Create the Blue Magic system as normal.
  • Create a suitable Battle Animation (optional).
  • Set up 2 variables: Mon1 HP and Mon2 HP.
  • Set up 2 switches: Mon1 and Mon2.


Random Target Setup

For this tutorial, there will need be two monsters in the Monster Party, preferably two different ones. We'll be using one Slime and one Spider for the purposes of this tutorial. Create 3 pages in the Battle Events commands.

Page 1

Trigger: Switch Learning ON

<>Variable Ch:[V[0041]] Set, 1:Tangle Weed HP
<>Variable Ch:[V[0042]] Set, 2:Wyrd Vine HP
<>Variable Ch:[0001:Randomizer] Set, Randm[1*2]
<>FORK Optn:Varbl[0001:Randomizer]-1
<>Change Switch : [0041:Mon1]-ON Set
<>
: ELSE Case
<>Change Switch : [0042:Mon2]-ON Set
<>
:END Case
<>

This places the Slime's HP into one variable and the Spider's HP into another variable, and also sets up a random number between 1 and two. Then, if the random number is 1, set the switch for the first monster (the Slime) to ON, otherwise set the switch for the second monster (the Spider) to ON.

Page 2

Trigger: Switch Mon1 ON, Learning ON

<>FORK Optn:Varbl[0041:Mon1 HP]-0
<>
Messg:Learning failed...
<>
: ELSE Case
<>FORK Optn:1:Slime-ActionPsb
<>Select Face Graphic: Eras
<>Show Battle Anim.:Scan, 1:Slime(W)
<>Messg:Slime has no learnable skills...
<>
:END Case
<>Change Switch:[0041:Mon1]-OFF Set
<>Change Switch:[0021:Learning]-OFF Set
<>Variable Ch:[0001:Randomizer] Set, 0
:END Case

The first FORK Option checks to see whether the monster is dead, i.e. that its HP (from the variable) is zero, and give a "failure" message. Otherwise, scan for any learnable skills, using the pre-determined battle animation targeted on the Slime. After the scan, the the switches and "randomizer" variable are reset.

Page 3

Trigger: Switch Mon2 ON, Learning ON

<>FORK Optn:Varbl[0042:Mon2 HP]-0
<>
<>Messg:Learning failed...
: ELSE Case
<>FORK Optn:2:Spider-ActionPsb
<>Select Face Graphic: Eras
<>Show Battle Anim.:Scan, 2:Spider
<>Variable Ch:[xxxx:Randomizer] Set, Randm[1*3]
<>FORK Optn:Switch[0023:BodyBlow] - ON
<>Messg:\C[6]Body Blow\C[0] already learned.
<>Change Skill: Hero-Body Blow-> Forget
:ELSE Case
<>FORK Optn:Varbl[xxxx:Randomizer]-2
<>Messg:New skill learned...
<>Change Skill: Hero-Body Blow-> Memory
<>Change Switch: [0023:BodyBlow]-ON Set
<>
:END Case
<>
:END Case
<>
:END Case
<>Change Switch:[0042:Mon2]-OFF Set
<>Change Switch:[0021:Learning]-OFF Set
<>Variable Ch:[0001:Randomizer] Set, 0

The same principle applies here as on Page 2. The only difference is that the Spider has a learnable skill, in this case "Body Blow".


Final Note

This can be very time-consuming, as each monster in the monster party requires a separate page. To add more monsters, set up additional variables and switches for the additional monsters, add another FORK Option (with an ELSE Case), and follow the same procedures above.
21 November 2008

Blue Mage Skill -- Method I

The most common tutorial I'm asked for is for a "Blue Mage" skill. For those that don't know, it's a job class from the Final Fantasy series, where characters can learn enemy skills. Blue Mages were introduced in Final Fantasy V, which I absolutely love as much as I love the Blue Mage skill itself. I saw Momonja's tutorial from RPG2K Net (under redevelopment at the time of writing) on Blue Magic and decided to "tweak" it slightly and improve upon it.

So how do you emulate this job class?

Well, there are actually several methods. This is one of the methods on how to create a Blue Skill in RM2K/3.

Knowledge Base

  • Switches
  • Forks
  • Skills

Setting Up

Make a variable named "Randomize" (or something similar), which I'll refer to as 0001:Randomize.

Next, create a skill called "Blue Tech" (or something similar) in the Skills section of the Database. This will be referred to as 0001:Blue Tech (as a Switch). Also, create another skill/spell (for the monster) called, say, "Ooze" (referred to as 0002:Ooze).

In the Monsters tab, add the skill to the monster’s repertoire so that it will use it in battle.

Learning the Skills/Spells

In the "Monsters Party" tab, create a monster party with a single enemy, say a Slime.

Page 1
Change the "Blue Tech" Switch to ON, leaving the trigger alone.

<>Change Switch:[0001:Blue Tech]-ON Set

Page 2
  • Set the trigger as Blue Tech ON.

    <>Trigger:Switch[0001:Blue Tech]-ON

  • Create a FORK Option and set the Monsters to the Slime.

    <>FORK:Optn:1:Slime-ActionPsb

  • Inside this fork, erase the current face set.

    <>Select Face Graphic: Eras

  • Change the Randomize variable to a number between 1 and 2.

    <>Variable Ch:[0001:Randomizer] Set,Randm[1*2]

    This variable sets the difficulty of obtaining the skill. You can set its value to a higher or lower value, depending on the difficulty. Don't set the variable too high, unless you want to, otherwise it may take a while to acquire the skill/spell, which might kill the Blue Mage.

  • Add a message to indicate that the learning process is in progress. As an example:

    <>Messg:Learning\|...\|...\|...|\^

    The \| before the period is one of the "in-built" text command to delay for 1 second before viewing the next group of periods. The \^ is so that you don't have to press ENTER after the message is done.

  • Make another FORK, this time pointing to the spell/skill that can be learned from the monster and the switch to on. Check the ELSE box here too.

    <>FORK Optn:Switch[0002:Ooze]-ON

  • Under this FORK create a message saying that the spell/skill has already been learned.

    <>Mssg:Skill already learned!

  • Under the ELSE Case, create another FORK Option, using the "Randomize" variable and set it to 2.

    <>FORK Optn:Varbl[0001:Randomizer]-2

  • Under this FORK Option, create a message announcing that a new spell/skill has been learned.

    <>Mssg:Ooze skill has been learned.

  • Enable the Blue Mage to "Memorize" the spell by adding the new Tech Skill to the name of the monster's skill, i.e. "Ooze".

    <>Change Skill:*Hero*:Ooze->Memory

    *Hero* is the name of the character to give the spell/skill to.

  • Change the skill switch (Ooze) to on.

    <>Change Switch:[0001:Ooze]-ON Set

  • In the next ELSE Case, create a message stating that the attempt at learning the spell/skill has failed, and make the hero "forget" it.

    <>Mssg:Failed to learn the skill.
    <>Change Skill:*Hero*-Ooze->Forget


    Again, *Hero* is the name of the character who is the Blue Mage.

  • Under the second to last END Case, change the "Blue Tech" switch to off.

    <>Change Switch:[0001:Blue Tech]-OFF Set

  • Create similar, additional pages for each monster in the monster party if you add more monsters. Also, repeat the process for other monsters that you would like to have learnable skills/spells.

Finally, change the Hero skill in the Database to "Blue Tech" and set the Level at 1. This should be the only skill the hero possesses. All the "learned" spells/skills will now appear as they are learned.

Final Product

Below is the complete code:

Page 1
<>Change Switch:[0021:Blue Tech]-ON Set

Page 2

Trigger:Switch[0021:Blue Tech]-ON

<>FORK Optn:1:Slime-ActionPsb
<>Select Face Graphic: Eras
<>Variable:Ch:[0003:Randomizer] Set, Randm[1*2]
<>Messg:Learning\|.\|.\|.
<>FORK Optn:Switch[0041:Ooze]-ON
<>Messg:Blue Tech already learned!
<>
:ELSE Case
<>FORK Optn:Varbl[0003:Randomizer]-2
<>Messg:New skill learned!
<>Change Skill: Ooze->Memory
<>Change Switch:[0041:Ooze]-ON Set
<>
:ELSE Case
<>Messg:Learning failed...
<>Change Skill:Fenix-Ooze->Forget
<>
:END Case
<>
:END Case
<>Change Switch:[0021:Blue Tech]-OFF Set
<>
:END Case
<>

Modifications

As mentioned earlier, you can also increase the range of the "Randomize" variable to reflect the difficulty of obtaining the spell/skill. In the FORK Option, set the number to the highest number of the range and it will take the Hero several attempts before learning the spell/skill. As a general rule, the minimum value for the Randomize value should be 2 and the maximum should be 5. This way it doesn't appear as too difficult to acquire the skill/spell, otherwise it may become frustrating trying (and failing) to learn the skill for ages, and in the meantime the monster is whittling away the Hero's HP. The more powerful the skill/spell, the higher this number should be.

Another method is where certain monsters have multiple learnable spells/skills. To do this, add another FORK Option with a different number, spell/skill and switch, placing the spells/skills more difficult to learn with the higher numbers.

Another modification is randomly choosing a target for learning a skill or spell. By default, using this Blue Skill method will "scan" for learnable skills in sequence, starting with the first monster in the party. The way to do this is detailed in the Blue Magic Random Target.

Final Note

This might be very time-consuming, as it requires a lot of copy and pasting (one page per monster in the monster party), but it's fairly simple and it works! It could be considered more as an introduction and might easily be modified to a more effective method. You might consider using variables instead of switches, but that might be a little confusing and would need a lot of them.

One of the drawbacks with this method is that the monsters cannot attack the party while the Hero is learning the spell. In reality, the monsters are not going to wait until their spells/skills have been "stolen" from them.

Credits

Momonja - For his original Blue Magic tutorial, on which this entire tutorial is loosely based, and also for inspiring me to write my own. I can't actually take full credit for this guide, except for some of the "tweaks" I did do.
20 November 2008

What Is RPG Maker?

RPG Maker is a cool utility that allows gamers to create their own RPG games in the same vein as Final Fantasy, Chronotrigger and Zelda. It does this by allowing the use of graphics and predefined commands, which can easily be modified to suit the needs of the game being created.

The first in the series (at least for the well-known versions) was RPG Maker 95 (RM95), which was very limited but served its purpose. This was soon superseded by RPG Maker 2000 (RM2K), which was an improved version of its predecessor, including a renovation of features and commands. The next incarnation was RPG Maker 2003 (RM2K3), which again offered more improvements. The problem was that the programs were only available in Japanese, so the Western world was left out.

A Russian programmer and hacker named Don Miguel took it upon himself to translate RM2K into English, then circulated it around the Internet, along with a Sample Game that he had created. It actually took the world by storm and web sites dedicated to the RPG Maker were springing up all over the place. Translation of RM2K3 soon followed and the RPG Maker craze was in.

The problem was, though, that Enterbrain, the program creators, did not authorize the translation and eventually distribution of the program lessened substantially. There are still a few sites that actively support RM2K and RM2K3, but for the most part, they have been abandoned in favor of Enterbrain's newest incarnations:

RPG Maker XP (RMXP)

This was the first of the RPG Makers to be officially translated for the English-speaking world. I guess the demand was high enough that they could justify the action, especially given the history of the previous versions of their software.

RMXP is essentially the same, but has some vast improvements over the 2K series. To name a few of them:

  • It supports JPG images (for pictures), rather than just PNG and the proprietary XYZ formats.
  • It fully supports MP3s, without needing to download a patch, in addition to the old MID and WAV formats.
  • The graphics for the game - map tiles, characters, etc. - can be larger and in 24-bit color instead of 256 colors.

In addition, everything in the game is highly customizable, thanks to its built-in programming language, Ruby Gaming Script System (RGSS). This allows game creators to create new windows, add enhancements and customize virtually every aspect of the game itself to offer a more comprehensive game.

A downloadable 30-day trial version is available from Enterbrain's website, but after that you have to buy it, and it costs $60 to receive a license key for the "full" version.


RPG Maker VX (RMVX)

The followup to RMXP is RPG Maker VX. The official Japanese release date was December 27, 2007, and was eventually released worldwide on February 29, 2008.

It is essentially the same as its predecessor, RMXP, but its interface is much more user-friendly. The graphics are more compact, with multiple icons being available on one "sheet" instead of individually. It also has a feature to create random dungeons (a feature that was available in RM2K3, but was omitted in RMXP).

Again, it makes full use of the Ruby Script programming language, with a few enhancements implemented. It is usually referred to as RGSS2 to distinguish from scripts created for RMXP and those created for RMVX.

RMVX is also available as a 30-day trial from Enterbrain's website. The English version is available here, which is also purchasable for $60.

Indeed, RPG Maker itself has had a rich and successful history, from its earliest beginnings with the introduction of ASCII's Mamirin for the PC-8801 (Japan 1988) to RPG Tsukūru Super Dante for the Super Nintendo/Super Famicom (Japan 1995) to RPG Maker 3 for the PlayStation 2 (Agetec 2005) and finally to RMVX. In fact, some form of RPG Maker has appeared on a variety of computers and consoles, including the MSX2, Sega Saturn, PlayStation 1 and 2, Game Boy Color and Game Boy Advance, and of course the PC. For a more comprehensive list, visit Wikipedia's entry.

Hence the purpose of this blog. The focus of RPG Maker Times is more on RMXP and RMVX, but I've set up a separate blog for RM2K/3 (which is still my preferred RPG Maker), entitled RPG Maker 2K3 Master with updates on RM2K3 (not RM2K) as well. I will be listing tutorials, how-to's, scripts and resources here. Updates may be sparse, depending on how much free time I have, but the will be consistent.
Related Posts with Thumbnails
Template Design "Perfect World" by SkinCorner