Making a Legend of Zelda / Final Fantasy Style Hybrid.

GBJackson

Veteran
Veteran
Joined
Dec 11, 2016
Messages
71
Reaction score
80
First Language
English
Primarily Uses
RMMV
If you wish to view this tutorial series offline, I am also making it available as a PDF..This file will be updated as new chapters are posted, so the newest revision will always be available.

Images in this post are contained in spoilers due to overall length

A shout-out to MushroomCake28 for advice on improving post quality.


Introduction
Two of the games that I remember most from my childhood are the original Legend of Zelda for the NES, and Final Fantasy II for the SNES. And while the latter has been represented in many different games for both console and PC over the years, very few games have managed to capture the thrill of exploration and discovery of the former. For that reason, I have decided to create a hybrid of the two within RPG Maker MV with an intent of producing a series of adventure games using the resulting style.​

For the experimentation and implementation process, I have recreated a portion of the original Legend of Zelda overworld, and the first dungeon. For obvious reasons this project will not be released to the public and serves only as an in-development example. The content I will release will use entirely original maps and story elements. But as a case study of mechanics and design style, a pre-existing game, as a reference, has proven useful.​

This document is not intended to take you on a step by step journey of creating an actual working game, but rather to teach you the process I came up with to produce the elements which you can use to create a game of this style. If you wish to follow along, you will need to download GIMP, or some other graphics editing program that allows you to create and edit .PNG files. Starting in Chapter 2, we're going to be creating new tilesets, as many of the tiles needed to accurately honor the visual style of Legend of Zelda do not exist in the default asset library for RPG Maker MV. But to make the process easy to follow, all of the new tiles we will be creating will use elements that DO exist. And since we are allowed to use these assets as we see fit for our RPG Maker MV projects, I figured it would be good to also demonstrate how these assets can be used to make more personalized elements.​

Before we get into that, We need to tackle a fundamental element that will exist through every part of the game that will result. The Navigation System.​

Be advised that I am writing this documentation for everyone, regardless of their level of experience with RPG Maker MV. The first time I touch on something, I will explain the steps involved. I'm not going to tell you to look somewhere else to find out how. If this is the first tutorial for RPG Maker MV you read, It is going to tell you what you need to know.​

Having said that, as we head deeper into the subject matter, I will be assuming that you have been following along, and have an understanding of what has been covered up to that point. It is on me to share mission-critical information. It is on you to decide to make use of it. Now if I miss something you feel is critical, then please, by all means, send me a private message or reply in this thread with your question, and I will be more than happy to address the issue, both directly with you, and in a revision to this documentation. If, however, I have covered the issue already in this document, I will reply only with the statement, “Please re-read Chapter X,” where X is the chapter I cover the issue. This will not be me being rude or condescending. I simply do not have enough time to re-explain things when the information is already available. But I WILL tell you where you can find the answer.​

Now that we have that out of the way, let us begin...​

Chapter 1
The Navigation System

The First thing you want to do, obviously, is create a new RPG Maker Project.
malozffh-1-1.jpg

Name it whatever you want.
malozffh-1-2.jpg

Go to a fine restaurant and have a three-course meal while the files copy.
malozffh-1-3.jpg

When you get back, you should be ready to begin.
malozffh-1-4.jpg

The navigation system will use one single parallel event to manage player transfers between maps that are meant to be adjacent to each other. This will be achieved through the use of region Ids. I use regions 2, 3, 4 and 5 to represent North, West, East and South, respectively. Select the R tab under the tileset and paint in these regions like so:
1-5.png

This map now has what is needed to handle the player transfers. Now all we have to do is set up the Parallel event that will manage the process. In Event Mode, double-click on the top left tile to create a new event, and name it NavSys.
1-6.png

Make sure that Priority is set to Below Characters, and that Trigger is set to Parallel.
1-7.png

For those new to Event design, This means that the event will be below the characters in the game and so will not block player movement, and that this event will run constantly as long as the player is in the same map with it. This allows it to do its thing behind the scenes and the player won't even be aware of its existence.

A word of advice when setting up Parallel events. While they allow some pretty powerful stuff to be done, you do not want to have a whole bunch of them running at any given time, as when added to the global events that run constantly game-wide, and interactive events, they could cause the game to run slow. All active events run once every frame. By default there are 60 frames per second. Too many parallel events running could push the frame rate down, so just be mindful of that.

One other thing you need to know about events: The order they are processed is based on their ID value, from lowest to highest:
1-8.png

For this project, it is very important that NavSys is the first parallel event that is placed on a map. The reason being that some of the data it will generate may need to be called by other parallel event at the moment the player enters the map. If those events were to be processed first, they would not be getting the most updated information and their process could break. So even if all of the coding for all events is 100% correct, especially for parallel events, not having them run in the right order could cause undesirable issues. Knowing this little tidbit early on may save you a lot of debugging later on. I learned it the hard way. So when it comes to event processing, commit this concept to memory: First Placed, First Priority.

Now, let's get to the fun part.

Before we can make this event send a player to another map, it needs to know what maps are meant to be adjacent to the current one. We need to go ahead and set those up.

Right-click on the project root and then click New to create a new map.
1-9.png

Under General Settings, change the name of the map to “0 -1”
1-10.png

Really, you can name it whatever you want, but since we are going to be dealing with maps that will be the same size and will be occupying specific locations on an overall world map, it is useful to adopt a naming convention based on the individual map's X and Y coordinates. The maps themselves can be renamed later, if desired.

Like events, Maps have an ID number. It stays the same, no matter how many times you rename the map.
1-11.png
This is very important. The ID number can also be found at the very bottom of the RPG Maker MV program window. I advise making a note of map names and IDs for easy reference.
1-12.png

Now, Create three more maps, naming them -1 0, 1 0 and 0 1 respectively. While you are at it, Right-click on MAP001 and then click edit so you can go ahead and change its name to 0 0, for the sake of consistency.
1-13.png

So now you should have a total of five maps, all with a consistent naming convention.
1-14.png

Now let's edit their layout. You can make them look however you want, as long as they only have one exit as follows:

0 -1 South
-1 0 East
1 0 West
0 1 North​

I'm going the very simple route:

0 -1
1-15.png

-1 0:
1-16.png

1 0:
1-17.png

0 1:
1-18.png

I also went ahead and added the region IDs to only the borders that have exists, using the values we established for the first map. North border = 2, West border = 3, East Border = 4 and South Border = 5.

Also, go ahead and modify 0 0 to look like this:
1-19.png

In Event mode, Double-click on the NavSys event. We're ready to move forward with it.

The first thing we need to do is define the maps the exits link to. This is where the map IDs come into play. Double-click on the first line under Contents, or right-click on it and select New, to bring up the Event Commands window. Under Game Progression, click Control Variables...
1-20.png

This will bring up the Control Variables window.
1-21.png

We have not yet created any variables to control, so we will go ahead and do that now. Under Variable, make sure that Single is selected, and then click the button to the right, currently labeled 0001 with no name after it. This will bring up the Variable Selector window:
1-22.png
RPG Maker MV allows up to 5000 variables to be created. They are displayed in groups of 20. The column to the left lists the groups. The column to the right lists the variables in the selected group. By default, the first 20 variables are allocated, but are not named. You can click Change Maximum to increase or decrease the number of allocated variables. This cannot be increased beyond 5000, and if you decrease it so that named variables would be removed, then they would need to be allocated and named again if you need them back.

Selecting a variable and then entering a name will define the variable, so you can know what it is used for. One thing you need to know about this is that you can rename the variable all you want. The name itself doesn't matter. It is the ID number that all event scripting references when working with variables. I say this because if you plan to do a sequel to your game and you want to just copy and paste events, If you have already defined variables those events reference, then it is going to reference THOSE variables. This will require you to make sure that your new project has the variables defined and then you will have to go through your event script and select the correct variables. I ran into this issue when I copied the NavSys event from my experimentation project and pasted it into the actual work project. I just wanted to warn you about it in advance in case you do the same. An ounce of prevention is worth a pound of cure.

What you need to do now is define the first nine variables as follows:
1-23.png

Yes... there's a lot of stuff to set up. But once it is all in place, the completed NavSys event will just simply WORK. It can be copied and pasted onto any map in the same project, and the only thing you will need to change is the map ID numbers, for the maps that the exists will lead to.

Now that the above variables are defined, we can go ahead and do the event scripting.

Select nmap and click OK You will see that it is now showing up under Variable in the Control Variables window.
1-24.png

Under Operation, make sure that Set is selected.
1-25.png

This is for the adjacent map to the north, which we named 0 -1. This is why I advised making a note of the map names and their ID numbers. Under Operand, make sure that Constant is selected. In your notes, find the ID# for map 0 -1. If you've been following along exactly, it will be 002. Set that as the Constant value and click OK.
1-26.png

Now repeat the process for the other three maps. Once done, this should be what you have in the event script:
1-27.png

At this point, NavSys knows the ID numbers of the maps to reference when transferring the player. But it does not know how to reference them and when, and it also does not know how to determine if the player needs to be transferred. The next step is to make NavSys keep track of the player's position on the map, and the region ID at that location.

You will thank me for this later. The next line of code would do well to be a comment with dashes in it to serve as a script segment divider. You can put some descriptive text in if you want to. The important thing is being able to visually chop up the script so it is easy to identify the different segments. It is not mandatory, but I find it useful, and you may as well. So get to the Event Commands window, and under Flow Control, click Comment.
1-28.png

Now enter 80 dashes. Your script should now look like this:
1-29.png
In the rest of this document, I will refer to what we just did as a Dividing Line. So if I say, “Put a dividing line” somewhere in an event script, this is what I mean. Comments are ignored by event processing and serve as notes about what a script segment does, or for organizational purposes, as in this case.

Add another Control Variable command, and select pxpos as the Single Variable. With a Set Operation. But this time, instead of Constant, we are going to select Game Data as the Operand.
1-30.png

Map ID is the default. That information will be of use in a later chapter, but it is not what we are looking for at the moment. Click on it and select Character. There are two buttons next to this selection. The first needs to be Player, and the second needs to be Map X. Once these options are selected, click OK.
1-31.png

Operand should now look like this.
1-32.png

Click OK, and repeat the above step for the pypos variable, but select Map Y as the Player Game Data. The event script segment we are working on should now look like this:
1-33.png

Now we just need to get the Region ID info for the player's position.

Add a new Event Command. On Page 3, under Map, Click the Get Location Info button.
1-34.png

This brings up the Get Location Info window.
1-35.png

Variable is where the location information will be stored. Info type is the type of information to be obtained. Location can either be direct designation, or designation with varriables. The former will let you select a position on the current map, and the latter will use variables to designate the X and Y coordinate on the current map.

Set Variable to regid.Set Info Type to Region ID. Under Location, select Designation with variables. For X, select pxpos and for Y select pypos and then click OK.
1-36.png

Here is how the event script segment should look now:
1-37.png

At this point, NavSys knows the Map ID numbers the current map's exits will reference, and it knows how to get the player's current X and Y coordinates and the Region ID at those coordinates. But it still doesn't know what to do with this information. That's about to change. But first it's time for a little more explanation.

To approximate, Legend of Zelda's style, we make it so that the player moves around the gmeworld one screen at a time. By default, an RPG Maker MV map is 17x13 tiles in size. I have decided to stick with this size, as if played in full screen on a standard monitor, that size map fills the screen and will not scroll. To understand how the next part of this tutorial works, it is important to understand how the game defines X and Y coordinates on a map. For a 17x13 tile map, the left-most column of tiles is X=0. The top-most row of tiles is Y=0. The right-most column of tiles is X=16 and the bottom-most row of tiles is Y=12. So the Y value is greater towards the bottom and lesser towards the top, and the X value is greater towards the right and lesser towards the left. Keeping this information in mind will prove useful as we move forward.

Put a dividing line after the Get Location Info command. This will mark the start of the current segment, which will process player transfers to the designated map ID in the nmap vriable. When the player loads into nmap, the character will be at the bottom of the screen, 1 tile up, but in the same column they were in when leaving the first screen.

This can be achieved with just regular transfer player events, but you would need one for every tile along the edges of the map, each one pointing to a relative position along the edge of the opposite side of the screen in the new map. By using NavSys, we eliminate the need for so many events, and you only need to copy NavSys onto every new map and change the values for the nmap, wmap,emap and smap variables to the Map ID values of the maps that need to be loaded. So when we are done with this lesson, only 4 numbers need to be changed, and the rest of the process handles itself.

You won't need to place region IDs on map borders that will not lead anywhere else. And you don't have to place them on tiles that you know the player will not be able to enter. Furthermore, you can omit lines in NavSys for designating a map ID if you know that border of the map cannot go anywhere else, and the following segments can be omitted for the same reason. It all depends on how clean you want your script to be. Leaving these elements in, even if not needed, is not going to hurt anything.

So now you know about how a map's X and Y coordinates are processed, and what we are aiming to accomplish in the next step. And I've given you some idea of what you can do without when working with this system.

Now, let's make the system work.

First, we need to check to see if the player is at the north border of the map. So we need to add a new Event Command. On Page 1, under Flow Control, click Conditional Branch...
1-38.png

A conditional branch is RPG Maker MV's way of saying “If something is this, then do that or else do something else.”

Let's look at the Conditional Branch window:
1-39.png
It's got 4 pages to it, each all about designating what “SOMETHING” and “THIS” are in “If SOMETHING is THIS.” After selecting and/or setting these elements, the event script will insert a blank line followed by an End line. The blank line is where we can tell the game what the “THAT” is in “then do THAT.” The End line tells the game where that conditional branch ends and it can move on to the next part after it. If the “Create Else Branch” box is checked, before the End line, an Else line is inserted with a blank line for more Event Commands. This is where we tell the game what the “SOMETHING ELSE” is in “or else do something else” To give you an idea of how powerful this can be, “Then do that” can be another conditional branch. “Or else do something else” can be as well.

If you are new to all of this, I promise you that you will be using conditional branches a lot. Now that you know how they work, let's continue.

On Page 1, select Variable, set it to regid is equal to a Constant of 2
1-40.png
We don't need an Else branch, because we only want something to happen if the player has entered a tile with a Region ID of 2. But what do we want to happen?

We want the game to transfer the player to map 0 -1 one row above the south border but in the same column. We need to add a Control Variable command, where the Variable is transx, the Operation is SET and the Operand is Variable pxpos. And then we want to click OK
1-41.png

Then we need another Control Variable command to set transy to a constant of 11. Remember, the bottom most row of tiles is Y=12, so the row above it is Y=11.

At this point, the current segment we are working on should look like this:
1-42.png

Now we need to transfer the player to the new map. Add a new Event Command below the control variable command for transy. On Page 2, under Movement, click Transfer Player...
1-43.png

Under Location, select Designation with variables, set ID to nmap, X to transx and Y to transy. Set Direction to Up. Leave Fade set to Black. Then Click OK.
1-44.png

Now, based on what you've learned so far, make the next three segments look like this:
1-45.png

Click OK to save the event.

If you test the game now, you can exit the start screen in any direction and you will arrive at the destination on the correct side of the screen but still in the same row if you went West or East, or in the same column if you went north or south... But... Now you can't go back the way you came. That's because the new maps don't have a NavSys parallel event running on them.

Create a new map from the project root. Name it Events. Don't do anything to it. Leave it completely empty. Now go to your map 0 0, right-click on the NavSys event and click Copy. Now go back to the Events map, right-click somewhere and then click Paste.

Double-click on the event to edit it. Change the values for nmap, wmap, emap and smap to 0. Leave everything else alone and click OK. Now you have a template event that you can copy into any new map, asign the correct map ID values, and the system will automatically work on that map. When designing maps to be adjacent to each other, take care that you do not put any kind of barrier in tiles that NavSys will send the player to, unless there is a gameplay/plot-related reason for doing so. You do not want the player to get stuck due to design mistakes.

This is how the complete NavSys template script should look:
◆Control Variables:#0001 nmap = 0
◆Control Variables:#0002 wmap = 0
◆Control Variables:#0003 emap = 0
◆Control Variables:#0004 smap = 0
◆Comment:--------------------------------------------------------------------------------
◆Control Variables:#0005 pxpos = Map X of Player
◆Control Variables:#0006 pypos = Map Y of Player
◆Get Location Info:regid, Region ID, ({pxpos},{pypos})
◆Comment:--------------------------------------------------------------------------------
◆If:regid = 2
◆Control Variables:#0008 transx = pxpos
◆Control Variables:#0009 transy = 11
◆Transfer Player:{nmap} ({transx},{transy}) (Direction: Up)

:End
◆Comment:--------------------------------------------------------------------------------
◆If:regid = 3
◆Control Variables:#0008 transx = 15
◆Control Variables:#0009 transy = pypos
◆Transfer Player:{wmap} ({transx},{transy}) (Direction: Left)

:End
◆Comment:--------------------------------------------------------------------------------
◆If:regid = 4
◆Control Variables:#0008 transx = 1
◆Control Variables:#0009 transy = pypos
◆Transfer Player:{emap} ({transx},{transy}) (Direction: Right)

:End
◆Comment:--------------------------------------------------------------------------------
◆If:regid = 5
◆Control Variables:#0008 transx = pxpos
◆Control Variables:#0009 transy = 1
◆Transfer Player:{smap} ({transx},{transy}) (Direction: Down)

:End

The following is what the Map ID segment should look like on all 5 maps:
0 0:
◆Control Variables:#0001 nmap = 2
◆Control Variables:#0002 wmap = 3
◆Control Variables:#0003 emap = 4
◆Control Variables:#0004 smap = 5
0 -1
◆Control Variables:#0001 nmap = 0
◆Control Variables:#0002 wmap = 0
◆Control Variables:#0003 emap = 0
◆Control Variables:#0004 smap = 1
-1 0
◆Control Variables:#0001 nmap = 0
◆Control Variables:#0002 wmap = 0
◆Control Variables:#0003 emap = 1
◆Control Variables:#0004 smap = 0
1 0
◆Control Variables:#0001 nmap = 0
◆Control Variables:#0002 wmap = 1
◆Control Variables:#0003 emap = 0
◆Control Variables:#0004 smap = 0
0 1
◆Control Variables:#0001 nmap = 1
◆Control Variables:#0002 wmap = 0
◆Control Variables:#0003 emap = 0
◆Control Variables:#0004 smap = 0

Edit - Images placed in spoilers due to post length. Fixed some spelling errors.

Continure to Chapter 2
 
Last edited:

MushroomCake28

KAMO Studio
Global Mod
Joined
Nov 18, 2015
Messages
3,615
Reaction score
4,618
First Language
English
Primarily Uses
RMMV
Good tutorial overall! This is a nice way to achieve the Zelda map transition.
 

GBJackson

Veteran
Veteran
Joined
Dec 11, 2016
Messages
71
Reaction score
80
First Language
English
Primarily Uses
RMMV
Good tutorial overall! This is a nice way to achieve the Zelda map transition.
It seems to be the most straight-forward approach without the need for any third party plug-ins. Though I will be making use of Yanfly's self Variables and Self Switches plugin to accomplish some of the goals connected with the encounter system, which I will cover in a future chapter of this series.
 

GBJackson

Veteran
Veteran
Joined
Dec 11, 2016
Messages
71
Reaction score
80
First Language
English
Primarily Uses
RMMV
Hello, everyone.

I'm working on the second chapter of this series, which is going to focus on creating the tilesets we will be using as we progress. But I wanted to go over some of the concepts that will be applied to the series as a whole, so we will all be on the same page as we go forward. In as much as this will be me sharing my overall plan for the system, it is also me opening up the floor for your opinions and suggestions. We are a community, and I do not want this project to exist in a vacuum.

First of all, I refer to the project as a Legend of Zelda / Final Fantasy hybrid.I want to clarify what that means. By the time we are finished, this will be a system designed around the notion of creating adventure games where the player spends a great deal of time exploring a gameworld, finding hidden dungeons to explore, collecting pieces to a treasure that is needed before taking on the final dungeon. That's the Legend of Zelda style gameplay I'm aiming for.

The Final Fantasy side will be about bringing story progression to things in a way that the original Legend of Zelda'a limited design did not readily allow for. All we had to go on was that a princess was captured by the bad guy who possessed a powerful artifact, and that to save her, you needed to find 8 pieces of a second artifact to be able to confront him. After that, we just sort of got thrown into the game, not even knowing where to go. And yet Legend of Zelda has become one of the most beloved games in gaming history. Imagine what we could do with the ability to add deeper narratives to the adventure aspect.

Regarding Combat... This will be a random encounter combat system done a little differently. I've already designed the system on a rudimentary level to the point where I know it works. Essentially, all encounters will be specific encounter events. They will be invisible and below characters. Their position on the screen will be randomized every time the player enders that screen. Their status will potentially reset at the same time as well. I say potentially, because the encounters will use YanFly's Self Varriable plugin to set a random number of screen re-entries before the reset occurs, so some enemy encounters will take longer to respawn than others.

Why not just use regular encounters? Because in Legend of Zelda, some enemies were "masters" that could cause all other enemies on the screen to be killed if defeated. Sometimes an enemy would be carrying an item and to get it, you only needed to kill that enemy. Sometimes doors would remain closed unless all enemies in a room were killed. Now while it is possible to approximate these elements in the normal encounter system, the only way to guarantee the specific results is to be able to apply them on a per-encounter basis. I will be demonstrating how to set that up. Nevertheless, I would like your thoughts on the concept and will be happy to explore alternative approaches, or additional options for setting up encounters.

Regarding character advancement...

There will be no leveling. Character advancement will come in the form of finding power-up items. Skills and abilities will become available if you possess the items that apply them. No special scripting or plugin will be used to circumvent the pre-existing leveling system. Instead, the XP reward value for killing enemies will simply be set to zero. If you cannot receive XP, you cannot level up, allowing the special values and conditions we will be adding to gear and power-up items to take priority. Your thoughts and suggestions are most welcome.

Special interactive screens to replace the typical RPG Maker menu screens. Hitting escape will load a map that will change the object of control to a cursor that will occupy specific spots on that screen. This will allow selecting active auxiliary items like, bombs, torches, sledgehammers, shovels, etc. The screen will also show what power-ups have been found. Exiting these screens will return the player back to the game on the map and at the coordinates they were at when bringing up the "menu" screens. Some elements of this feature are already figured out and just have to be hooked up via a parallel common script switched on at game start, thus overriding the basic system. As before, your thoughts and suggestions are welcome.

Well, I'm going to leave it here for now. I don't have a specific timetable for Chapter 2, but I am working on it and will share it once it's ready.

Thank you for your interest and I look forward to discussing any of the above topics.

Be blessed...
 
  • Like
Reactions: J-G

GBJackson

Veteran
Veteran
Joined
Dec 11, 2016
Messages
71
Reaction score
80
First Language
English
Primarily Uses
RMMV
Chapter 2
Tileset Creation with GIMP

In this chapter, I will demonstrate how to create some seamless for use in map creation to get a more Legend-of-Zelda-like style than RPG Maker MV's unmodified assets do not offer. As in the previous chapter, the first time I cover something, I am going to assume that the reader has never seen it before, so regardless of experience with RPG Maker MV or GIMP, everyone should be able to follow along. And as before, I am going to assume that the reader IS following along and can keep up. Mine to teach, yours to listen. Okay... Enough of that... Let's get started... Class is in session.

If you have not already done so, go to www.gimp.org and download GIMP for your operating system. It's completely free. If you do not wish to download it, then make sure that you have a graphics program that allows you to work with .PNG files, and ideally allows you work with layers. I recommend GIMP because it is free and let's you do almost anything with a very wide variety of image formats. It is what I will be using for this project. And if you have it, it should be very easy to follow along, and going forward, I will assume that this will be the case.

Now that you have GIMP, there are a couple of things that you need to do in preparation for what I am about to cover.

In GIMP, click File and then click Open
2-1.png

Browse to where the tilesets in our RPG Maker MV project were copied to.
2-2.png
Mine may differ slightly from yours, depending on where you told RPG Maker MV to create the project.

Right now, we want to open Outside_B.png. Before doing anything with it, using Save As, we need to save it in a new directory under your project directory. I called mine “Work”.
2-3.png
You will notice the file will be called Outside_B.xcf. That is the file format for GIMP projects and it keeps track of a lot of useful things such as layers and grid configuration. It is this .XCF file we will use to grab elements from.

Next go to File, click New.
2-4.png

In the Create New Image window, click the + next to Advanced Options to expand, and set “Fill with” to “Transparency.”
2-5.png
This is very important, so that GIMP will treat all the transparency and fading information correctly. Do not change anything else.

The result will be a blank 768x768 pixel image:
2-6.png
This is exactly what we want.

Before doing anything else, using Save As, we want to save this in that Work directory as “X_Outside_B.xcf,” where X is whatever you want to show that this Outside_B tileset is the one we are building for this project.

Now that we have the XCF files for both the tileset we will be working with and the one we will be working on, We need to configure the grid for both.

You can see that above the editing area, both of these files are represented by tabs.
2-7.png
This makes switching between them, and any other individual images you have opened or created very easy. And as we get further into this process, we will find ourselves with several images open.

With either of these tabs selected, click “Image,” and then click “Configure Grid”
2-8.png

Under “Spacing,” change both the Horizontal and Vertical to 48 Pixels and click OK:
2-9.png

Now do the same thing to the other image, and then save them both. From this point on, both of these XCF files have a grid setting that complies with RPG Maker MV's tile size, and that will make selecting and placing tiles a lot easier.

Now click on View.
2-10.png
Note the two options “Show Grid” and “Snap to Grid.” Turn them on for both XCF files.

From this point on, Outside_B will be referred to as “original tileset,” and the one we will be building will be referred to as “our tileset.” With that understanding we are ready to make our first group of tiles.

With the original tileset selected, click on the “rectangle select tool”.
2-11.png

This will allow us to select a rectangular region from the image. Because grid snapping is on, clicking close to the grid lines will cause the selection area to snap to it, and as you drag the mouse to expand the selection, when it gets close to the grid lines, it will also snap...

We are going to start by creating a 3x3 tile brown rock face group that will approximate the rock tiles in Legend of Zelda. By following this, you will learn how to create a seamless tile group using any singular graphic element that by default, remains within the 48x48 pixel tilespace.

This is the base tile we want to work with:
2-12.png
So find and select it. Do a CTRL+C to copy it, and then do a SHIFT+CTRL+V to paste it as a new image. Save this as a new XCF if you want. I picked this because it is already mostly gray, which will make recoloring it very easy, cause we aren't dealing with some parts being a different color. The simpler an image is to begin with, the less work needs to be done with it to get it to conform to what we want.

I only mention recoloring because Legend of Zelda had three different colored rock face tile groups: Green, Brown and Gray. And when we are done with this chapter, we will have those three, plus a new one: Blue-gray, for the sake of variety.

This is the only original tileset element we are going to work with, and now that we have it as its own image, we can go ahead and close the original tileset. To do so, select its tab and click the X. Never save changes to the original tileset XCF. We want it to stay a pure source of assets to work with, so we don't want any unwanted modifications to accidentally creep into it.

With that rock tile still copied, go ahead and paste it into our tileset with CTRL+V and then click and drag it into the second tile on the top row. Always leave the first tile empty, as by default RPG Maker MV will want to treat this tile as the empty tile allowing you to erase any non-region/event you may have put on the map. Any other tile is usable.

Click off to the side of the rock tile to anchor it. This is how our tileset should look:
2-13.png

We are going to use the top left 8x8 tile area (quadrant) for single objects like this, and the rest of the tileset for grouped tiles. We have to remember that RPG Maker MV parses tilesets into 8 columns, so we want to think along those lines when we start filling up the tileset, that way tile groups will appear correctly grouped in the editor.

Now as we create some groups, there will be a few empty tiles. If the top left quadrant gets filled up with single objects, feel free to use these empty tiles. It's just a good habbit to reserve enough space for our tile groups.

Now before we build the rock face tile group, let's look at how to actually get our tileset into the database so we can actually use it.

With our tileset selected, do a SHIFT+CTRL+E to Export As. Or you can select that from the File menu. Browse to your project's tileset folder.
2-14.png

By default, the file should be set to export as a PNG. If you see something different, then look down to the bottom of the window and click the + next to “Select File Type (By Extension).” Find PNG in the list and select it.
2-15.png

Now click “Export,” and this window will open:
2-16.png

I'm in the habit of using lowest compression and highest quality options when exporting images to different formats, so for my PNGs, I set “Compression level” to 0. All the other settings here are okay to leave as-is. So we click Export again, and that's it... Our new tileset, which currently has only one tile, is ready for in-game use.

Switch over to RPG Maker MV with our project loaded.

Click the gears icon to to bring up the database editor.
2-17.png

Click on the Tilesets button.
2-18.png

Below the list of tilesets, click “Change Maximum”, set it to 7 and click OK.
2-19.png

You should now see 0007 in the list. Click on it and under General Settings, name it “X Outside,” or whatever you want in order to identify the tileset.
2-20.png

Under Images, set A1 (Animation) to Outside_A1, A2 (Ground) to Outside_A2, A3 (Buildings) to Outside_A3, A4 (Walls) to Outside_A4, A5 (Normal) to Outside_A5 and finally B to our tileset. It should now look like this:
2-21.png

There's not much we can do with this tileset at this stage, but this tutorial is about RPG Maker MV, so I wanted to make sure that the moment we had something in the tileset, we would see how to get it into the project. Now let's use that base tile to actually build the tile group.

Back in GIMP, Select the tab for the single rock tile and do a CTRL+SHIFT+J to zoom in to the whole image.
2-22.jpg
Look carefully at the bottom and lower right areas and pay attention to the darker places where you can see the checkerboard pattern behind them. These areas are where the rock tile, by itself, would cast a shadow on or blend with the background. This needs to go away for what we are about to do. Otherwise, because the shadow effect would carry over, the result would be dark splotches that will draw attention to the repetition of the source image in our seamless tile. When using the method I am about to demonstrate, it is not always possible to completely eliminate visible repetition, but with a little effort, it can be made a lot less intrusive.

To achieve this goal, select the Fuzzy Select Tool and set its threshold to 0.
2-23.png
Now click on the offending areas to select them and hit the delete key. You can hold Shift while doing this to add areas to the selection. Only click on the areas you can see the checkerboard pattern behind. You will notice that a few solid areas may automatically hilight. Don't worry about that. You'll see why in a minute.

Now using the Rectangle Select Tool, select everything but the outermost transparent areas like so:
2-24.png

Copy this selection and paste it as a new image.

You will notice that it is no longer 48x48 pixels.
2-25.png
We need to fix that.

Click “Image” and then “Scale Image.:
2-26.png

Click the link icon to the rigt of the width-height area under Image size to unlock aspect ratio, set both width and height to 48, under Quality, set Interpolation to None. and then click Scale.
2-27.png

Do a SHIFT+CTRL+J to zoom to full. The result should look like this:
2-28.png
It is now 48x48 pixels. Now go ahead and save this as an XCF. You can replace the single rock tile XCF ig you want to. We've got that in the tileset already, and we won't be doing anything else with it.

Now here's where it gets a bit tricky, so please pay close attention.

Create a new image with transparency with a resolution of 144x144

Then configure its grid to hve a spacing of 24 wide and 24 high. Save this as “3x3 Tile Group.xcf” This will be the main template for creating our most commonly occurring tile groupings. Now turn on show and snap to grid for it.

Below is an enlarged version with numbers added to indicate positions for pasting in the source object.
2-29.png
For what we are about to do, it is important to know that for the tiling to work as we want it to, we need to work from the top down, and the object needs to be placed in a specific order. I would suggest practicing this as many times as you can so you can get the hang of it.

Now, with the rock tile selected, do a CTRL+C to copy it. Switch to the 3x3 Template and do a CTRL+V to paste it. Cow click and drag it to position 2. Do CTRL+V again. You probably don't see a change. That's because you just pasted the rock tile on top of where the last one was dragged to. Go ahead and drag it over to position 4. Do it again and drag to position 3.

Right now you should have this:
2-30.png

Now continue the pasting in the rock tile and dragging it to positions in this order:

7, 9, 6, 8, 10 to get this:
2-31.png

For the remaining rows, use these positions in this order:

12, 14, 11, 13, 15
17, 19, 16, 18, 20
22, 24, 23

We now have our 3x3 Rock tile group:
2-32.png

Save it as “3x3 Rock Group Gray.xcf” in your Work folder. We will use this again to make the brown, green and blue-gray versions.

With the rock group's tab selected, do a CTRL+C. Now go to your X_Outside_B XCF file, do a CTRL+V and drag the group to this position:
2-33.png
Remember, we are reserving the upper left quadrant of the tileset for single-tile objects. The empty space to the left of the 3x3 rock group is going to be used by another tile group which will be demonstrated later.

Save our tileset's XCF, and then export it as a PNG into the project's tileset folder, replacing the previous version. We are about to put what we just did to use.

In RPG Maker MV, swith to the events map and then to the 0 -1 map.

Right-click on the 0 -1 entry and click Edit. Then change the tileset to our tileset and click OK.
2-34.png

Oh, NO! What just happened!?

Don't panic. This happens when you change tilesets. We just need to redo the map using the desirable tiles.

Switch to Tileset Tab A and make everything grass.
2-35.png

Now, using the tiles from our 3x3 rock tile group, make the screen look like this:
2-36.png

When you check the region tab, you see that everything still lines up the way we originally set it up.

Now edit the other maps the same way so everything is using the same tileset

After doing that, test the game. You may notice that the characters walk on top of our rock tiles. That's because we have not defined them as being solid to the player. The same is true for the entries in Tileset Tab A. We are just using the graphical elements at this point. Getting the tileset truly game-ready requires a little bit of work.The important thing is that we now have our new tiles visible in the game.

In the next chapter we will add more tiles to the gray rock tile group, and then we will duplicate and recolor it to get the other color rock tile groups we want. After that we will do the tree tile group. There will be a few extra steps to that, so I want to cover it in its own chapter.

A little note about making custom tile groups. Because I am using existing assets that have shading already added, even after removing those shadowed areas, we are clearly seeing obvious pattern repetition. There are techniques in GIMP for reducing shadows, and if you do a YouTube search for “GIMP remove shadows”you will find a bunch of tutorials on how to do so. Different techniques are demonstrated so if you want to experiment with them on your XCFs, feel free to do so. A general rule of thumb when building tile groups in the manner I have demonstrated, try to use source images that are more or less uniform in color and do not have areas with noticeably different light levels. This will reduce obvious pattern repetition even further.

So here's a challenge for you. Using what we've covered so far, go ahead and try to expand the gray rock tile group to look like this in our tileset:
2-37.png

The next chapter will give the actual positions in the template to use, but the more you practice with the process, the better you will get, and you may just discover little creative tricks of your own.
 
Last edited:

GBJackson

Veteran
Veteran
Joined
Dec 11, 2016
Messages
71
Reaction score
80
First Language
English
Primarily Uses
RMMV
I realize there is a lot to take in with Chapter 2, so please, if you have any questions, ask me.

I do not want to make a habit of deviating from actual RPG Maker MV workflow, so it is my goal to get the heaviest parts of working with GIMP out of the way. As I said, the next chapter will give you all the paste-and-drag positions you will need to finish out the Gray Rock tile group, and instructions on how to recolor the entire group so we can have our four rock colors. That part is going to be easy and quick.

Tree tiles will be a little trickier, because while we will want different colored trees, we only want the leafy areas to be recolored, so I'll show how to accomplish that in Chapter 4

Chapter 5 will be the last of the GIMP-heavy chapters. In it, I will go over how to create the tiles needed for dungeon room screens, as well as how to make pick-up items.
So the first five chapters are meant to establish the framework for world building.

In Chapter 6, We'll be creating the EncSys parallel event which will manage the Encounter System for every screen.

Chapter 7 will have us revisiting GIMP briefly to set up an element that will be a part of the in-game item selection screen, which will replace the usual RPG Maker MV menu system. Specifically, I am going to show how to create a segmented objective object, similar to the 8-piece Triforce in Legend of Zelda.

So that's the current road map for the next five chapters. I will try not to deviate from it.

I really want your feedback on this, if you are following the lessons.

Thank you for your interest.

Be blessed...
 
  • Like
Reactions: J-G

GBJackson

Veteran
Veteran
Joined
Dec 11, 2016
Messages
71
Reaction score
80
First Language
English
Primarily Uses
RMMV
Well folks, today I learned that due to the coronavirus crisis, I'm being put on temporary furlough from my job. But always one to look for the silver lining in every dark cloud, this does free me up to work on my own projects. I intend to have chapter 3 if this tutorial posted soon.

I've got some music I need to finish writing as well, and I a couple of goals I need to reach in the actual game project I am collaborating on as well.

I had hoped to deliver chapther 3 a lot sooner, but I have needed downtime from having to stare at a computer screen so I took the past few weeks off days as personal recharge time. But without having to go to to my regular job for at least the next few weeks, I'll go stircrazy if I don't thow myself into something productive.

My next post here, unless it is a response to something, will be the next chapter of the tutorial.

Be blessed...
 

Martin

Veteran
Veteran
Joined
Apr 8, 2015
Messages
191
Reaction score
46
First Language
swe
Primarily Uses
RMMV
images not working :/
 

GBJackson

Veteran
Veteran
Joined
Dec 11, 2016
Messages
71
Reaction score
80
First Language
English
Primarily Uses
RMMV
images not working :/
It seems to be an issue between the forums and certain web browsers. Try right-clicking and then "Show Image" or "Load Image". If it is still not working for you, I have provided a link the PDF for the tutorial series in the first post of this thread. Hope that helps
 

GBJackson

Veteran
Veteran
Joined
Dec 11, 2016
Messages
71
Reaction score
80
First Language
English
Primarily Uses
RMMV
Hello folks...

Based on observation and reports from others, I have determined that using the forums to post tutorial documentation with images is proving to be problematic, as many images are inconveniently not displaying. Because of that, all future additions to this series will be in embedded YouTube video form.

the previous two entries will be updated accordingly at the same time I release part 3.
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Posts

Latest Profile Posts

I FINALLY DID IT! 5 years making my very first game and I just officially released it on STEAM..... OMG..... I can say I finished a game! The feelings!!!!!
Stream will be live shortly! I am going to be playing some Among Us! Feel free to drop by!
Ami
tv program always get the ratings (it's the reason why drama series has 1000+ episode),also full and nonsense of censorship (weird blur, a scene getting cut because the unconvenient viewer,but it unconvenient to me either. you never see what the original is)

i know the reason is to take cover the viewer from the negative thing,but i just laughing and mocking of them that they're always suck :guffaw:
Star Chart Idea - Just something I am working on.
My sister learned spanish the old fashioned way and saw my way of conjugating. I don't use the formal method and just wing it. I thought her heart might explode. Apparently, different words use different endings. Weird part is even though I never learned the difference, I still can tell when the endings "look wrong".

Forum statistics

Threads
104,456
Messages
1,006,407
Members
135,964
Latest member
Musixim
Top