Development Tools

Hello again everyone! This time I’ll be talking about development tools and how they’ve helped me as both a game designer and programmer.

Development tools can be, simply put, amazing (but they can also be terrible). My first experience with development tools included a level editor for Super Mario World called Lunar Magic, created by a programmer known as FuSoYa. It was a truly revolutionary editor and took the ROM hacking scene to new heights. To this day, Super Mario World remains one of the most hacked (recently termed as “modded”) games, and it’s all thanks to Lunar Magic.

So, how was Lunar Magic? Check out the picture below for the editor menu for levels:

Lunar Magic’s Level Editor Interface

At first look, it seems rather complex, but it’s actually very simple and easy to use once you’ve fiddled around with it for a few minutes. You can easily see where each enemy will spawn, as well as the spawn point of Mario and the contents of ? Blocks. Taking and placing objects is as easy as opening the object window (the flip block icon next to the Baby Blue Yoshi icon), clicking on an object to place, and right-clicking on the level to place it. This also automatically copies it, so you can place as many as you want easily! Once an object is selected on the level, you can move it around by dragging it. Furthermore, if you hover over the object on the object window, it tells you information about the object, such as special properties that it may have. For example, certain X values will cause a flying ? Block to give out a Fire Flower instead of a Cape Feather.

Lunar Magic’s Object Placement Window

I could go into more detail about Lunar Magic, but it would take far too long since it’s packed with too many features to count. However, we can learn what makes Lunar Magic such a good development tool and apply that to our own tools.

I’ll make this brief. Lunar Magic has a visual layout, which makes it extremely easy to see what you’re doing when you’re modifying levels. It also has simple controls, a simple UI, and flexibility, meaning that performing an action such as placing objects is easy to find, easy to perform, and allows you to easily repair your mistakes (Ex. press Delete and simply click on the object window again if you accidentally placed a different object than the one intended). Looking at this, it’s easy to see why Lunar Magic has been so successful.

For Streets of Peril, I originally thought that I didn’t need a tool such as a level editor. That is, until I started designing levels in code. In all honesty, it was pretty terrible since I had to compile each time and go to the level only to find out that an enemy spawned too late or something similar and I had to revise it. It was trial and error programming on a large scale, which I dislike (yes, this means I dislike HTML). Eventually I realized that I can’t design levels like this and went on to make my own level editor, which was both a great learning experience and tool. It served its purpose for a while, until I could no longer deal with its lack of flexibility. If say I messed up what Status Effect an enemy had, I’d have to fill in all the changeable values again with just that minor change. The worst part by far, though, was that each object had a separate spawn point, difficulty level, and minimum number of players required for it to spawn. If I forgot to change one of those values after placing an object, I’d have to either remove the object and place a new one or fill in all its values again, remember the hotkey to change the value I need, and place it on the level again. Not to mention, all of the editing features were hotkeys that I memorized, so no one else on the team can actually use the editor, and the editor was built into the game itself inside a single class, making the game larger than it needed to be and making the editor extremely hard to modify.

So in short, I’m currently in the process of redesigning my level editor. Here’s a mockup of how I want it to look:

The layout plan for Streets of Peril's new Level Editor

The layout plan for Streets of Peril’s new Level Editor

And here’s how it looks so far:

My current progress on the Level Editor. So far it's pretty faithful to the mockup, but it's not fully functional yet.

My current progress on the Level Editor. So far it’s pretty faithful to the mockup, but it’s not fully functional yet.

It’s nowhere near as good as Lunar Magic, as that editor was made for public use and had a development cycle of 5+ years, but it’ll be good enough for me, Nick and Bek to use. One notable difference is how I have things organized. For one, it’s actually a separate application this time, so I’m free to do whatever I want without cluttering the game itself. Instead of each object having its own offset and etc, I can now create a Spawn which has those properties. Inside the spawn, I can create as many objects as I want and offset their locations relative to the spawn’s so I don’t have to go through the tedious process of moving each object in the spawn separately and instead just move the spawn itself. I also have editing menus with my own custom controls (textboxes, drop downs, etc.) that will make editing easier, faster, and more flexible. I’m going to have a lot of fun using this when it’s complete.

So to wrap this up, development tools can make creating a game fun and enjoyable, especially when they’re well designed and offer much creative freedom. Notable examples, aside from Lunar Magic, include the StarCraft/StarCraft II map editors and Garry’s Mod. I hope that editors such as these inspire more game developers to develop their own tools. The experience gained from doing so helps you familiarize yourself further with your own game, and who knows; those tools may even be reusable in a future project!


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: