Does your IGMC Game party have a home base? What if they could update it? Let’s take a look at a few ways we can make that house a home by having it change depending on story progression and player choices.
Want to put the new skills you learn in this tutorial to the ultimate test? Why not enter the IGMC: Rebirth, a massive RPG Maker game jam with over $10k in prizes! Need some new materials to build your customizable hero base with? Then check out the RPG Maker Resurgence Bundle, featuring over $800 in RPG Maker Engines and Materials all for one low price!
We’ll be using multiple maps to show the changes in these examples, but there are other options such as storing copies of the house on large maps where the other houses can’t be seen or by using a plugin to help modify the map data, so choose the option that works best for you. We’ve also talked about how to add trophies to a room in a previous tutorial, which can be another way to add little details to your hero’s home if you want to make the home feel even more unique for your players.
The first way we can upgrade the home is by having it change depending on the story. Let’s say our game starts when our hero moves into a new place which is full of cardboard boxes. After the first hour of gameplay, weeks have past in-game so our hero has settled in and unpacked. To get that effect, we’ll need two maps for the home. The first will be our box-filled new place:
And the second is decorated and mostly cleared of the moving boxes:
An important thing to keep in mind is that all of our home maps will need events for stuff like exits, comments, and cutscenes, so it can be easier to set up one map with all the required shared events first and then copy-paste it before redecorating the new map.
Of course, these maps won’t do anything without a door that leads to them, so let’s set up a door on the city map. To make things easier we can use the door quick event creation as a base. Then we can remove the Transfer Player command from the end of the event and replace it with conditional branches that check our game progression (in the case of this example, using a variable) and send our player to the right interior map.
With our door ready to go, we can playtest and make sure the home changes properly. If we wanted to add more changes to the home as the game moves forward we can by adding another branch for each change.
Having our heroes’ home upgrade as the story progresses is nice, but what about giving our player the choice on adding new rooms to their home. Let’s have the game start with a single room.
And end the upgrades after adding a brand-new bathroom and kitchen.
We’ll need to add a way for our player to buy the new rooms, so for this example we’ll stick a guy who owns a construction company in a nearby alleyway.
Our upgrade event is going to take a bit of thinking from us to make sure that things work properly and we don’t leave a way for our player to accidentally spend gold on an upgrade they already bought. We’ll use a variable to keep track of the home status, with the base home being 0, the home with bathroom being 1, the home with kitchen being 2, and a finished home being 3.
Since we’re letting our player buy the rooms one-by-one, we need to make two more maps, one with only the bathroom:
And one with only the kitchen:
If our player has already bought the bathroom and tries to buy it again, we need a conditional branch to catch that and make sure that our player can’t spend their gold on it again. If the home still needs a bathroom, we also need to check if the kitchen was purchased before this. If not, then we can simply set the home status variable to 1. But if the kitchen was already purchased, then the variable will equal 2 and we can increase it to the finished home amount of 3.
Once we set up the kitchen option the same way, our event’s first page is ready.
Back to our upgrade event, we can add a second page to let our player know that there aren’t any more home upgrades to buy.
With our upgrade event and different maps finished, we can move onto the door event. Much like the earlier door event, we’ll use conditional branches to check which home map our player should be sent to.
For our last way to upgrade the home, we can let our player choose what decorations appear in the home. You can include as many decorative events as you want, but for this example we’ll stick with two objects: a table decoration and a bed. Since we want to make sure it’s obvious that the objects can be changed, let’s have a single event control all the changes (the Butlerbot event).
Our table decoration event will be three pages controlled by its self-switch. We could include special commands that happen when our player interacts with it depending on the page, but for right now the main thing is seeing the visual change.
The Butlerbot event can control our table decoration with nested Show Choice commands, so our player needs to choose the table decor option before they can choose which thing to display. Since we’re using the table decoration’s self-switches to track which is displayed, we’ll need to use the script call
$gameSelfSwitches.setValue([mapId, eventId, switchId], value); to turn self-switch A and B On or Off depending on what needs to be displayed. If we want to turn the table decor’s self-switch A On, we can write the script call as $gameSelfSwitches.setValue([$gameMap._mapId, 4, 'A'], true); .
Once we’ve set up each option, we can playtest and make sure our table decorations are appearing properly.
Our bed events (since they will be split into a top and bottom by default) can be set up like our table decoration, though this time using a normal variable.
For our bed we could set it up the same way as our table decor, but for this example let’s leave it up to Butlerbot by setting the bed variable to randomly choose which bed we’ll get.
Then we can see which bed our Butlerbot thinks we need in-game.
We can add as many customizable pieces as we want, but we should keep in mind that our player may not care about choosing which pieces of art hang on the wall. So if we want to let our player customize without it being tens of choices, we could connect most to a variable and have the room’s decorations change based on themes, such as having the bedding and curtains change color or change the dressers from modern to futuristic. That way our player can still make the room feel more like their own, without having to change every little thing themselves (and letting them get back to the main gameplay sooner).
Now we can add some upgrades to our heroes’ home! What type of upgrades will you add to your game?