Skip to main content

Before The Single Step, There Must Be Ground

I'm back on the independent game developer wagon... sort of!  In truth, after nailing the most important aspects of the game I wanted to develop, I now knew that I wanted to make a sort of an RPG with a simulated environment, with the geeky satisfaction to be found in a roguelike, Dwarf-Fortress-like game, and even city management simulators to some extent.  (Basically, the kinds of games I've been playing lately.)  This may have resolved a great deal of the cognitive dissonance I had for months now that has been preventing me from getting to work: I feel as though I actually know what I want to make!
Just in case you didn't get what that title is referring to...

On top of that, it turns out I had come up with a rather effective concept in the past that I partially developed on BYOND before giving up because of platform limitations.

So, knowing exactly what I wanted to make, I tried to create that in GameMaker, and immediately ran smack-dab into a core limitation that caused me to question my use of this platform again.

The trouble?  GameMaker's room editor has no way to cut and paste multiple objects at once.  These objects are the tiles that make up my maps, so making modifications can take a very long investment of time as I move each tile, one by one.  Even if I was using a text editor to create a map, it wouldn't take that long!

Actually, I think the greater problem I have with GameMaker is that it's surprisingly bad at procedural generation.  There is a very limited set of functions for performing operations outside of the current room.  Only the current room is simulated.  So, basically, you have to go to a loading subsection of a room and spin your wheels for a room to get built at all.  Also, the way the IDE is built, you keep getting directed to "drag and drop" game building which is incapable of procedural generation.

Pondering this, I wondered at my alternatives.  I looked to Unity, which is equally not bound by tiles.  How does it do in terms of procedurally generating tile-based games, I wondered?  So I did a bit of YouTube searching, and found something that make me realize just how important tiles were.
It was in watching the above video that some unexpected (and unintentional) genius came down from the 'bove.   At the very start of the video, quil18creates points out that creative type people who enjoy programming really like strategy/simulation type games that are tile map based.

This lead to a minor epiphany on my part.  I was thinking of tile-based games in terms of just being a technical consideration: tiles are easier to work with,.  However, hearing it from someone else, I thought that maybe there's actually something of ever greater significance than that: a tile-based game actually suits my mindset better!  It's no wonder I'm attracted to this kind of game, it's just the kind of guy I am, and I shouldn't expect it to sell to people who aren't.

It's time for me to find a new platform.

So now I realized that I absolutely need to put possession of an effective, tile-based engine as my first step in developing my game.  There's a couple ways I can go about this:
  1. Find a tile-based engine.
  2. Find a non-tile based engine, and define such rules in that engine that it becomes tile-based.
Option 1 is a lot less work, but option 2 has the potential for greater flexibility.  Option 2 would seem the wiser choice, but consider that a tile-based engine may exist that already has all the flexibility I need while possessing preexisting tile based function calls (for things like pathing, line of sight, and so on) in which case option 2 would be an unnecessary waste of time.

Today, I took a bit of a walk around the Internet.  Here's how I'm currently looking at some of the major offerings out there:
  • GameMaker - Just to be clear, I certainly could make the game I want to make in GameMaker, it's definitely flexible enough.  However, lately it's seeming like where GameMaker starts is actually a step away from where I want my game to be; this is great software if what you want to make is a single-room action game, but I've learned that my concept is bigger than that.

    It's the rooms that bother me the most: I can't modify multiple objects simultaneously in the room edit, and in-game I can't do much with rooms that are not currently being played on.  Besides, that user-friendly GUI just gets in the way of somebody with a little more experience, like myself.
  • Unity - I barely even know anything about Unity, but I saw the above video enough to get a basic impression. Compared to GameMaker, Unity is just as flexible, is 3D native, has a higher price tag, definitely requires a bit more technical expertise to use, but the IDE does not get in the way of coding as much.

    Is Unity appropriate for a procedurally-generated, tile-based game?  Well, RimWorld certainly proves that you can create one in Unity, but Spelunky already proved it's possible in GameMaker, and I'm honestly not sure it's any easier to do in Unity.  I'm not yet sure how Unity's scene-based approach compares to GameMaker's rooms.  I have learned that you can download effective tileset editors made by other Unity users, and this addresses the concern I had with GameMaker's tileset editor.
  • Torque - From what I gather, you have to recode fairly extensively to make Torque do something other than a first person shooter.  I don't want to make a first person shooter, so this is the long route for me.  There is a 2D Torque project, but it's fallen somewhat behind the 3D.  Of all the engines here, Torque and Unity are the most powerful, in sheer polygon-pushing capability.
  • LÖVE - Here's a cool, pretty-much-free, LUA based engine I found for making 2D games.  It's cross-platform between Windows, Mac OS X, and Linux.  No fancy IDEs here, but it's still easier than compiling your own engine.
That's option 2, the "Find a non-tile based engine, and define such rules in that engine that it becomes tile-based" option.  I sort of like the looks of Unity, it could be fun to play with, but this is no minor undertaking.  But then, none of the engines from option 2 are a minor undertaking because they basically start with no game rules defined, that's why they're so flexible.

Option 1, the "Find a tile-based engine" option has the advantage that it's already closer to being the type of game I want to play.  The main question is whether or not that engine does everything I want to do.  Here's a few choices I found:
  • BYOND - You know, BYOND is really, really cool.  It's not only a great tile-based game engine with a great IDE, but it's also a multi-user dungeon right out of the box, so I could pretty much shoehorn in a persistent state multiplayer environment into my game concept, and largely effortlessly.  That's huge

    I also learned a lot about object oriented programming within an interpreted environment while playing with BYOND, and this is probably why GameMaker is just too simple for me to use anymore.  It's unfortunate I was unable to complete a game in BYOND, because I sort of felt I owed it a debt of gratitude for what I learned using it.  (Perhaps the year or two of subscription I had paid will suffice.)

    However, I have two big reasons not to want to use BYOND anymore.  First, because faulty file I/O, fuzzy large value handling, and the limitation of 65535 mobs and objects has broken my heart.  Second, because playing a BYOND game generally requires the BYOND interpreter and account, and the audience willing to install that is rather small; this is why you usually never hear of a BYOND game.  Maybe later versions of BYOND will resolve these issues and I'll be back on board.
  • RPG Maker - When I tried out RPG Maker, I was rather impressed with it.  It really is a marvelous creator of tile-based role playing games, and has flexibility to be other things, to boot.  Why am I not still using it?  Mostly because of that damn resolution limitation.  Seriously, Enterbrain, who's going to want to play a 544x416 resolution simulator on the PC?  I guess it's not impossible for me to create something on it, but that resolution limitation makes me want to do something else!
  • T-Engine - I haven't used T-Engine, but you know that this is the kind of engine that has the support to do everything a fancy roguelike can do because it is the engine of one of the fanciest of roguelikes, ToME.  Now, what I don't yet know is just how flexible T-Engine is: can it only be used to create games that are roguelikes, or can it do something like Dwarf Fortress? 
  • Libtcod - If T-Engine isn't flexible enough for my needs, this would be a pretty good way to go.  It's basically "a free, fast, portable and uncomplicated API for roguelike developers providing an advanced true color console, input, and lots of other utilities frequently used in roguelikes."  Like in T-Engine, map generation, line of sight, pathfinding, map handling, and things like that are already done, and that would save me a ton of time. 

    The down side?  This is no already-compiled engine, but rather a code API, which means I'll need to hunt down and install an IDE for C, C++, or Python and modify the code directly for it to suit my needs.  (Granted, if you're a programmer, you're probably disappointed in me that I haven't already.)
Looking at these choices, I'm pretty sure that, if I went with option 1, libtcod is probably the most likely direct solution for the kind of game I want to make, but it would require enough technical expertise that I'm honestly not sure if knocking up a Unity tile-based engine from scratch would be harder.  I should at least give T-Engine a look, first.

Of course, this is far from the only choices on the face of the Internet.  It could very well be that a better option exists that I have yet to find.  Here's a list of all sorts of cool game development environments, many of which I've yet to investigate.  Note that it's not a complete list, as it does not mention some of the environments mentioned here.

You could mention there's a third option: coding your own engine from scratch.  The main trouble with that solution is I want to be a content developer, not a code monkey.  If you start with the programming language IDE and little else, you're going to spend months - even years - just creating the engine that runs your game.  If you want to make an engine, that's great.  If you want to make a game, find an existing engine, or at least an API.  Let somebody who wants to make an engine make an engine, and then you can promote their engine by creating a cool game in it: this is the power of the Internet.

Still, I learned something today.

Even if I made this game on GameMaker or Unity, I'm still going to have to go up to my elbows in coding to teach the computer what it needs to know to realize the game I want to make.  Consequently, there's no way to know before the fact whether or not there's a genuine speed benefit to going with option 1 or option 2.
Post a Comment

Popular posts from this blog

Ancient Warfare - What Is It Good For?

The Ancient Warfare mod for Minecraft threw me for a loop.  I was looking for "villagers" that would perform useful tasks while simultaneously resolving the glut of food with a need to eat, thereby turning Minecraft into a bit of 4X game you can play from the inside.  Millenaire wasn't quite there, partly because recent updates to Forge had broken its compatibility with Minecraft 1.7.10, and Minecolony's development is not quite fast enough to keep up with the state of mods in general (they probably need to make a core API).
In comes Ancient Warfare, which does indeed provide workers and soldiers who need to eat, you can even order around a little army of them to defeat your enemies.  It has working waterwheels and windmills, something I thought was awesome in Resonant Induction.  It has a warehouse with a built-in sorting system, as well as courier NPCs that can move things from building to building, and crafting NPCs that can create things for you automatically - w…

Resonant Induction Really Grinds My Gears... In A Good Way

From about 2pm yesterday until 8pm today, I've been dabbling with my latest custom mod mix for Minecraft 1.6.4, which is this time very much Universal Electricity focused.
Aside from the usual GUI enhancers and Somnia, the primary contenders in this mix were:
Calclavia Core - Of course: this is the base of the Universal Electricity system.Resonant Induction - This seems to be largely focused on increasingly more advanced methods of refining ores divided across 4 ages of technological progression.  It also includes some really cool things such as assembly lines.  I'll primarily be talking about just a few blocks out of this mod today.Atomic Science - A mod dedicated to generating more of those lovely universal electricity volts via the power of splitting the atom.  Build your own nuclear reactor!  Deal with nuclear meltdowns!  You maniac!ICBM - A mod dedicated to generating more destruction using those lovely universal electricity volts (and more than a little gunpowder), it cer…

Not Getting Over It

One of the recent fads to go through YouTube recently is Getting Over It With Bennett Foddy, a game about a man sitting in a cauldron filled with his own sweat dragging himself up a mountain of societal detritus with nothing more than a huge staking hammer.
As can be expected from the creator of QWOP, the game is extremely hard to control, requiring great precision on behalf of the player's mouse skills in order to propel the man up the mountain.  It is known as a "rage game" because it is deliberately engineered to punish the player.

I think I figured out a significant chunk of the source of that rage.  Basically, by investing our time and energy into trying to figure out how to get the little man on the screen up the mountain, we come to care about it.  Even though there's nothing important waiting for us at the top of our trash mountain, even though it's a ridiculous little game about mountain climbing, we care about it because we are trying.

By wanting to win…