Friday, July 8, 2022

How to scaffold a game in RPG Maker

I'm so glad you've decided to join us on this merry adventure this month. The place to start when you begin making any RPG is to create a scaffolding for you to hang content on. You can't paint the walls of a house without first putting up the drywall. It's the same with an RPG. If you are really excited about the story or the battle system or the character art and you start there, neglecting the bones of your game, then chances are you'll burn out with something that isn't actually playable. Therefore, the first thing we need to do is make our game playable from start to finish.

The Structure of an RPG

Isn't it a lot of work to make an RPG playable from start to finish? Not at all! It's actually very easy. We're going to make a Minimum Viable Product (MVP) before we do anything else. We arent' going to concern ourselves with battles or map design or anything else. So what is the bare minimum that you need for an RPG? Let's think about it.

Pick your favorite JRPG and think about it. They all follow the same basic pattern:

First you find yourself in a town or a dungeon. This is the beginning of the story. Where we introduce characters and get excited about the journey we're about to go on. We'll call this the "Opening".

Next, you'll find yourself in a place to catch your breath, gather yourself, retreat to if you run into trouble. It might not be a town per se, but it's a safe place where you aren't in danger. We'll call this a "Town" because areas like this usually end up being towns.

Then, you'll need to leave that town to go be challenged by something. Monsters, new game mechanics, etc. These are "dungeons" through and through. They may not be a proper dungeon under a castle, but that's what we're going to call them for convenience.

Then you'll repeat this cycle, moving from Town to Dungeon to Town to Dungeon and so on until finally you reach the "Ending" where the conflict is resolved and the heroes go off to their rest at the finale of the story.

These are the bones of any RPG and they look like this:




Creating Your Maps

I'm going to start up RPG Maker and create a new project. I'll be using RPG Maker MV for the pictures, but I'll try to shout out differences to XP or VX Ace where I can. Don't feel like you need to do this yourself right now, but when you do start your own project I would recommend starting your own project this way.

Creating a new project is easy!
Ah, a new project! Endless possibilities.


If you look down in the lower left corner you'll see a small list with one entry in it called New Map. This is our list of maps in the game. To add more maps, we need to right click on the name of our project and select "New" or press the "Enter" button. 

Adding a new map is easy.
The only things we care a lot about right now will be the Name and the Tileset options.

You can rename a map by right clicking and selecting the "Edit" option and then changing the name of the map. I'm going to add and rename maps until my project looks like the one below. These are all the maps we'll need to play our game from start to finish.

These are all you need to have a complete game. Really!

Add the Opening

First, let's open the "Opening" map by double clicking on it. Pick a spot in the map and right click and over over "Set Starting Position" and then choose "Player". This is how the game determines where the player starts the game at after selecting "New Game".

Events are their own large topic for another time, but for now you need to know that they're how our game is glued together. Events are how you make things happen in the game. I'm setting up a simple event that displays a text box that says "This is the opening" and sends us to the next area. In the photo below, I've added some map features to help remind me where the exit is.



Adding the Town

Next, I'll go into the "Town 1" map and set that up. I'm going to include an NPC (he's implemented with an event) and when you talk to him, he'll give you a key. I don't need much on the map to make the bones of our game here, but I've included a bit of a path from one side of the screen to the other and a door to use the key on. If you try to open the door without the key I'll show a little message that says the door is locked, but if you have the key then it will open. We'll look at how to set this up exactly in a later article. For now, it's enough to know that when you open the door it takes you to the dungeon.



Adding the Dungeon

With the town taken care of I'm ready to set up the dungeon. Now normally there's a whole lot of thought and consideration that goes into this, but for now the important part is that there is an end to the dungeon and we can get to that end. Therefore, I'm going to set an NPC down on the map (I'm not even picking a new character, I'm reusing the same old man from Town!) and make it so that when you talk to him he says "Blargh! I'm dead!" and then the game takes you to the Ending map.



Add the Ending

Finally, I'm at the ending. This would be where all the resolution happens but I'm going to set this up to be more or less like the opening. A message appears that says "Ending" and then the game takes you back to the title screen.



Our game is now complete from start to finish. It isn't much, at all, true. However, the game has a beginning, middle, and an end. It has one "puzzle" even! This is not interesting, fun, or compelling, but it is a complete game. You could sit down and play it from start to finish. I didn't customize the characters, the art, the music, or the game systems. This is about as barebones as it can get. To prove it is complete though, you can watch my thrilling playthrough in the youtube embed below.

What Comes Next?

Now that I have the bones of my project I can pick an area of the game to improve and start fleshing it out. Some ideas might need their own bones made (like, if I wanted to make a crafting system or a mini-game or whatever) but each one falls somewhere into the flow of the game that I've already made. In the coming articles we'll explain some of the things we glossed over here and show how to expand upon them. How do you design a map? What exactly is an event and how does it work?

Stay tuned.

Wednesday, July 6, 2022

Final Dantasy I

 Welcome to Final Dantasy I!

In this month, we will be using RPG Maker to create a short JRPG. The goal of this event is to encourage people to explore the RPG Maker tool of their choice and build experience and confidence. Building the next great JRPG is hard, but building a JRPG that someone can get 10-60 minutes of enjoyment from is easy!

Let's define our terms and scope. What do we mean when we say "JRPG"? I'm referring to a 2D game with a top down view for exploring towns, dungeons, and other maps with random encounters that handle conflict resolution via a turn based battle system. You can do a lot with RPG Maker tools and almost all of it is editable if you dig deep enough and are willing to learn, but RPG Maker will let you do a lot for you if you let it. There are built-in graphics packs, battle systems, characters, and even a few items and monsters. We'll leverage all of these in the coming month to create similar, yet distinct, small games.

Each group build needs a theme and the theme for this one is "One Dungeon"! Or, "One Dangeon" if you prefer. In order to keep us all roughly on the same page while still allowing for creativity we're going to each make a short game with the following rules:

  1. Your game must have one hub.
    • A hub is a map where the player is not presented with challenges to overcome. Any resources that the player needs to complete your game should be found here.
    • The hub might be a town, a field, a campsite, a spaceship, a cave, an item store, the town square, or anything else you want. You are limited only by your art assets and imagination.
  2. Your game must have one dungeon.
    • A dungeon is one or more maps where the player is challenged and presented with new mechanics to learn and overcome.
    • The dungeon might be a cave, a volcano, a forest, an abandoned ruin, a modern office building, or anything else you want. You are limited only by your art assets and imagination.
  3. Your game must include one major character named "Dan" and they must use the provided Dan sprites (modifications are allowed).
    • We're in Dan's server so we should pay him homage. You can make him the main character, the villain, or perhaps event a damsel in distress.
    • I will provide you with sprites and a portrait for this character. You may have more characters with the same or similar names, but everyone having this one common element will help tie things together and will be fun.
  4. Your game's title must begin with "Final Dantasy: "
    • For example:
      • Final Dantasy: DANger Zone
      • Final Dantasy: The Godhands Within
      • Final Dantasy: Day of the Jegan
That's it! If you're familiar with RPG Maker already, this might sound a bit slim. It is! I could knock this out in a few hours of improvisation and then a couple more hours of testing. Even if you're unfamiliar with the tools, this might be a fun weekend project. If you do an hour each week then with the help of myself and your fellow Final Dantasy participants then you, too, can accomplish this!

You may be thinking "This sounds great, but I would like to incorporate this effort into my epic, sweeping fantasy setting that I want to develop" and if so I am here to tell you NO. In a creative project like a video game, it is easy for things to get out of hand and not be finished. We're going to practice the absolute basics in this group build and set our sights on a finished product, no matter how small and limited it might feel. 

If you truly feel like you can do more, then that's great! I don't want to stop you; nor can I! However, please first finish a version that meets the requirements for the group build and submit that. After that, go on and expand upon it to your heart's content. Or start over and make a second entry (a month is a lot of time)! There's no wrong way to go about this except to not submit anything because you got too ambitious.

In the lead up to the start of the event I will be giving out free advice on how to make your entry. With my years of fiddling and concerted effort and dramatic failures, I would like to impart to you the fruits of my labor. I'll be going over, in brief, the following topics:

  • How to scaffold a game in RPG Maker
  • How to make a map
  • How to make events
  • How to design a dungeon
  • How to use the database editor in RPG Maker
  • How to balance enemies and battle encounters

In addition to all of this, I will be around weekly in voice chat on Tuesday nights to answer questions, troubleshoot and provide advice and guidance. I will also be available to respond to private messages over discord all week.

And that's it! The group build beigns on Friday July 15th and runs until Monday August 15th.

This means you have a few days to get your tools ready and ensure the program boots up. Please do not leave this until the last minute!

The Humble Bundle with RPG Maker is here: Humble Bundle RPG Maker Resurgance

  • For $25 you can get RPG Maker MV (my preferred version) and a ton of art and music assets via Steam.
  • For $1 you can get RPG Maker VX Ace (my previously preferred version) and a couple of art and music bundles for use in making games.

If you want to participate but aren't sure if you can get a copy of the tool, please get in touch with me and we'll see what we can do.

I hope you'll join me on this exciting adventure into the world of RPG making and I look forward to seeing what you can create!

Sunday, December 6, 2015

New Project: Unnamed RPG Maker MV Game!

It's been a while since I last posted anything on this blog and a lot of projects have come and gone in the meantime. The simple fact of things is that I've been busy (getting a new job, moving, having a baby, etc). But it's time to start a new project, this time in RPG Maker MV!

RPG Maker Again?

When I was a kid, I went over to my buddy Drew's house a lot. One day, Drew showed me some weird, half-translated program he'd downloaded somewhere called RPG Maker 95. From there, my life was changed forever.

This past October, Degica released the new RPG Maker MV! It boasts a number of improvments over previous iterations, most notably replacing RGSS3 (their proprietary Ruby build) with JavaScript (something I'm much more familiar with as a web developer) and mobile app export capabilities (though as it turns out there are some significant downsides to this).

To get used to the application, I've decided to make a small game in it. If possible, I'd like to release it on my new (upcoming) website. I figure I'd like to document the steps I'm taking as a way of thinking through things a bit more.

Oh, So The Game Makes Itself For You With RPG Maker?

No. No, no, no, no, no. It vastly lowers the barrier to getting started, sure, but making a good RPG Maker game is hugely more difficult than what people typically expect when they hear about this tool for the first time. With this lower barrier to entry, lots of people pump out low-effort games and perpetuate this other weird perception that games made with RPG Maker can't be good (some Steam releases sure haven't helped with this). It would be more accurate to say that games made with RPG Maker can more easily be bad. If you look at good RPG Maker games you'll see that not only are they possible, but they can be downright amazing! They just take a lot more effort.

What Makes Your Game So Good?

The games I linked above are both VERY customized. They have custom art assets, custom music, and a lot of time and effort poured into their mechanics. As evidenced elsewhere on this site, I am not great at spriting or drawing and it may surprise you to discover I am not good at making music either. The most I can hope for is to make a game with some interesting mechanics and then to make it available for little or no money (this is a complicated topic that I'll expand on later as the game draws closer to completion).

What Mechanics Are You Offering Then?

I'm going to be combining things I've learned from past projects documented on this blog and elsewhere to create a short, open-ended adventure with the following neat ideas:

  • Multiple paths story paths
  • Class based skill system
  • Monster ecosystem and population modelling
  • Light supply & demand modelling

This is all subject to change, of course, and I'll be expanding upon these ideas more later, but I think this is a good starting point. Please look forward to my next entry where I'll discuss the game's critical path.

How to Enhance an SNES Game With the MSU-1 - Part 3: Failure and Success

Previous entries in this series are part 1 and part 2!

Utter Failure

In my first post in this series, I said I was going to document my foray into the world of SNES romhacking and I did. I learned a lot of assembly and had fun for the most part. But did I successfully create a patch for Zelda 3 to use MSU-1 music? As you may have guessed by the 2+ years between the last entry in this series and this one, the answer is a resounding "no." And that's okay.

It's Not So Bad

Frankly, I just didn't know enough about what I was doing. I didn't know enough about the MSU-1. I didn't know enough about the implementation of it in the SD2SNES. I didn't know enough about the SNES assembly language. I still don't know enough to do this sort of thing! That's okay, I've got plenty of other interests to pursue.

So why am I posting again after all this time? Well, I did want to document what has happened since I wrote the last entry in this series since those two posts are by far the most popular on this blog (and rightly so). I feel obligated. It's just taken me a while to get around to it. If you're reading this to attempt writing your own MSU-1 patch, perhaps I can offer you just a bit more guidance.

What Little Advice I Can Give: Ask For Help

The one thing I didn't do enough of was asking for help. There are plenty of people in the romhacking community who have already done this sort of thing. There are forums where you can post and ask them questions. There is absolutely no guarantee that they'll respond, and nor should there be. I didn't ask for help almost exclusively because I didn't want to bother these people. What right did I, a total newbie, have to ask for help if I hadn't tried myself first? Well, I did try and I wasn't getting anywhere. I should've asked for help. 

I want to stress that I am not one of the people you should ask for help. Everything I know about the MSU-1 I've documented here in these articles. I've provided links to everything I found. Ikari_01, developer of the SD2SNES even reached out to me on the comments offering to help. I should've taken them up on it, but by the time they reached out to me, I was already fed up with romhacking and had moved on to other things. If you're reading this, Ikari, thank you for your offer. If I ever try this sort of thing again, I'll not pass up such opportunities. As it stands, though, I got so frustrated with my lack of knowledge and progress that there's no way I can bring myself to try again.

A Link to the MSU-1

So where does this leave Zelda 3? It's gotten the patch that I always hoped it would, actually! Back in October 2014, Conn79 got in touch with me over GitHub where I'd posted my patch source code telling me that he'd been working (with others) on a similar patch. Luckily for everyone, he had succeeded where I'd failed! You can check out the thread about his patch here!

It turns out that all my work wasn't entirely pointless though, as it gave him the clue they needed to get SD2SNES working. You can read our discussion, with a bit more technical details of how it was accomplished as well as a link to the disassembled patch that was finally produced. And did you catch that bit at the end of our discussion? They asked for help.

Final Thoughts

Romhacking is super cool and I'd love to learn more about it and give it another shot some day, but for now I'm happy to sit on the sidelines as folks who have more experience than I do crank out great translations and cool patches. I'm perfectly happy to focus more on my programming craft for my day job and my hobby game development that I've covered elsewhere on this blog.

If there's any questions I can answer or any notes I can publish from my romhacking attempt, please let me know and I'll make it happen.

Good luck, all you MSU-1 folks! Please make lots of great music patches for me to play!

Monday, August 11, 2014

End of July Progress Report: I have taken a break

My goal for July was to take a break from programming my game and not do any programming outside of work! I was tired every day from my day job and forcing myself to work on the game was getting more and more difficult, so I wanted a break.

Did I meet my goal?

Yes! I did almost zero programming in July outside of work!

What did I learn?

I learned quite a few things, actually. First, I was reminded of the importance of pacing myself and being flexible with my schedule. I've actually delayed making this post for so long because I was going to Otakon this year and it just seemed like I didn't have the time for writing this up until today. Going forward, I intend to set myself a flexible schedule that still has some hard requirements that'll force me to keep making progress.

Also, by taking a break I allowed myself a lot of time to reflect on my project and consider it from different angles for a long period of time without having to fret about whatever I was changing that week. It has made me reconsider the worth of the voice mimicking in my game and later this month I'm planning on reviewing the code for it entirely and either removing the feature or streamlining it further.

Finally, I was reminded of the importance of doing things other than playing and making games. I haven't watched a lot of TV or read books lately. Being at Otakon and sitting down to watch some shows I hadn't seen before reminded me of how much you can learn just by doing things that aren't "working on your project." I need to block out time specifically for this each week as well as blocking out time for working on my game. It feels awkward, or even wrong to be spending time on "frivolous" things that don't contribute to my project goals, but it's super helpful overall.

Goals for August

This month, all I want to do is focus on level design. When I think about how to make a level for my game right now, I'm frankly just not sure where to start. How do I keep levels from feeling boring? How do I make levels interesting? How should I make levels at all? By the end of August I want to have some sort of answer for those questions, however incomplete, and also have at least started working on 5 different levels for my game.

Tuesday, July 1, 2014

End of June Progress Report: I'm taking a break

This'll be a short post.

I'm taking a break from game development for the month, even though it's killing me to do so. My day job has been really stressful and consequently I haven't had a lot of time to do game development in my free time. This has really sucked, but there's been no way around it and I keep beating myself up about not doing more, but that really doesn't help with my stress levels (and I would like to note here that I feel I am typically quite good at dealing with stress).

I'm feeling burnt out and work isn't going to be less stressful for another month at least, so I'm giving myself permission to not work on game development. In fact, I'm going to force myself not to work on it with the assumption that this break is just for the month of July and that this will help me be more energized to do the work in August.

No small part of me worries that not being able to handle this all at the same time means that I could never make it in the games industry. However, I've been reminding myself that if I were in the games industry, I (probably) wouldn't be working literally all day for six days of the week.

I don't know. Guess this is just another part of my grand experiment. Feeling kind of down this month.

On a positive note, I finished my first playthrough of Analogue: A Hate Story tonight and it was great! Also, I'll have some more things to post about the MSU-1 soon, so hopefully people will look forward to that; especially the people who have been posting in the comments of part 2 of that article series!

Sunday, June 1, 2014

End of May Progress Report: Core Features

Earlier in the month, I made a decision to really challenge myself and make my Ludum Dare 29 entry ready for a full release on PC and/or Android by the end of June. I also posted a list of things I wanted to do to the game before I released it. I've reorganized my list into several categories of descending importance: Essential, Secondary, Polish and Dead Last items.

What's done

I don't have as much done this month as I'd like because of things at my day job cropping up and causing a ton of stress. However, here's what I do have done (and keep in mind that I've omitted a lot of technical detail and additional notes under each of these items):

Essential

  • Make rooms you can go into from the hallway
  • Add suspicion for the NPCs when you are in an infected host
  • Add voice mimicing mechanics
Adding rooms (and a method of travelling between rooms) is a big upgrade for my game since the ludum dare version is nothing but a series of hallways. Now I can make much more interesting mazes that can be more convincing as a science facility.
NPCs will now act with suspicion when they see you. If you're outside of a human host, you get recognized as an escaped alien parasite instantly and they will react appropriately (Scientists will attempt to run away and call guards and guards will attempt to murder you on sight). However, if you're inside a human host when you're spotted by an NPC they'll stop and consider you. Perhaps your eyes aren't aligned quite right, or perhaps your human host is twitching oddly, but eventually any NPC looking at you will notice something is wrong, assume you're an alien, and react appropriately.
The coolest feature, in my opinion, that I've added is the ability for the player to hear certain phrases spoken by NPCs and then, when inside a human host, parrot those phrases back. So, for example, early on you can learn to say "Hello." This comes in handy when a guard or scientist is suspicious of you but has not yet decided you are an alien in disguise, you can say "Hello" to them and they will respond back with something like "Oh, hey Jim." and their suspicion is eased.

What's left to do

There's plenty left to do from my list, but near the top of the list is creating a method of deciding what thing the player wants to say when they're inside a human. I've been working on this, but Unity's GUI tools have a long history of not being great. Recently, however, there was an announcement about new GUI tools that are coming out some time this summer. In light of that, I'm going to write a quick hack to get around not having a UI and then try to put it off for as long as possible in the hope that I can use the new GUI system.

Here's the rest of the to do list (again, abridged):

Essential

  • Make a menu or something to set the voice clips
  • Add switches that toggle doors on and off
  • Remake the first two levels with the new stuff (e.g. rooms)
  • Add at least three new levels

Secondary

  • Clean up my code base
  • Make new art for all the new levels
  • Fix the resolution on the windows build
  • Add touch screen controls
  • Make an animation for background doors opening and closing
  • Make an animation for hall doors opening and closing
  • Make animations for characters walking into and out of doors in the background and make them play

Polish

  • Add music
  • Add sound effects
  • Add a menu
  • Add an ending
  • Fix movement bugs
  • Fix guard animations
  • Tighten up the elevator script
  • Make new art to make the levels feel lived in
  • Add more voice work
  • Maybe add a sound effect and a start-up time to bursting so that you can't do it on accident?
  • Fix Bugs

Dead Last

  • Test all my new levels and mechanics
  • Release the game for $1 on PC
  • Release the game for $1 on Android and iOS

Goals for June

I'm going to stick to my guns for now and try to knock out all of these things by the end of June. I am, however, very doubtful that this will happen. I may miss my deadline and this will take until sometime in July. Releasing this game is an important step in my quest to get a job in game development.

Next month should also have screenshots since, as soon as I'm done with this post, I'm starting on reworking levels. The changes this past month weren't very visual.