Skip to main content

Learning A New Gamelage

I've been trying to get back into game development again, but have been struggling to decide what platform to use.  After a prudent amount of deliberation, it came down to three 2D game platforms.

Primary Niche: The best engine I know of to quickly make persistent-state, multiplayer environment games.  Yet, flexible enough to make pretty much any 2D game you want.

Pros: Pretty much free, up to the point where you want to host what you make.  Online gaming support is completely native, and facilitated through the BYOND hub on their website and proprietary software.

Cons: Due to multi-player latency being built into the core of the engine, it's a poor choice for fast action games.  Games generally feel very clunky in it, circa 1980s but with better graphics.  Although the developers are working on making it better for faster-paced, more actiony games, if you ask me, they're just catering to the wrong crowd while diluting what the platform was supposed to be good at, persistent multiplayer environments.

Main Deciding Factors (Against): I guess I don't have to make a persistent-state multiplayer environment game.  Potential users of BYOND apps have to install BYOND to run a BYOND app (there is a stand-alone .exe producer but you lose some capabilities).  The developers bumped up the subscription cost to host your games' hubs (it's $24/yr now) but I don't feel comfortable doing that because I did not get much use out of the previous few years.  The last big project I did seemed to encounter an issue with heavy file Input/Outputs, and it seems to be an issue core to the platform... it was very much a "last straw," but perhaps one I could have worked around?

JAVA, Eclipse

Primary Niche: Fast, 2D games.  Offline, but can be made online with enough coding.  Some 3D capability is implemented.

Pros: Completely free, open-source, donation supported (but this says nothing for any tools you may use along with it).  JAVA may be an interpreted programming language, like DM (BYOND) or GML (Game Gamer), but a lot more man-hours went into the standards and practice of making JAVA a real programming language.  Consequently, Eclipse (a JAVA-based game making platform) is extremely powerful; of the three platforms mentioned here, Eclipse will be the most flexible and capable of realizing radical game ideas  The Eclipse code IDE is top-notch, allowing for inline function reference and other nice features that the DM code IDE did not have.

Cons: Technically more difficult to get any one thing done in a game than a graphical IDE, such as BYOND, GameMaker, Adobe Flash, or even Visual Basic.  People have to install JAVA to run a JAVA app and, though JAVA was built to run on a multiplatform interpreter so it can be used in all sorts of devices, I'm pretty sure JAVA games are not iOS native.  (This is mitigated somewhat because many users will already have had JAVA installed: it's how they get Minecraft to work, after all.)

Main Deciding Factors (Against): Despite being a high-level, interpreted language, getting anything done in JAVA still requires quite a bit of low-level, brass tacks coding even with an IDE like Eclipse.  This runs contrary to my personal needs, as I'm trying to avoid struggling overmuch with the technical side of things, and want something considerably more user-friendly to develop in.  Also, I'm entertaining the idea that, if I get really into the game development scene, I'd want to be able to make iOS apps, and iOS has rejected supporting JAVA.

Primary Niche:  Fast, 2D games.  Offline, can be made online with enough coding.  Some 3D capability is implemented.  Unprecedented user-friendliness to develop games in.

Pros:  Extremely user friendly IDE support, you can translate thought to action in the game quite quickly and easily, there's simply no easier way to make a graphical 2D game from scratch.  (Granted, there are better choices if  you are specifically making JRPG games or point-and-click adventure games.)

Cons: Of course, the more graphical front end support you put in an IDE, the more it gets in the way to do something technical that the IDE yet supports, and this can make it more difficult to pull off radical ideas.  GameMaker was originally very specialized as a 2D game making interface, and this is what it's best at even though 3D capability has been introduced.  Eclipse is probably a bit more flexible in what it can do (being based on JAVA), and BYOND is better for online persistent-state games, but Game Maker's GML puts it somewhat in between the other two in terms of overall power to realize radical ideas.

Both A Pro And A Con: GameMaker is not free, but still relatively cheap.
  • The free version is essentially a crippled trial.  With limitations such as "maximum of 15 objects," you can't seriously create much of a game in it, but you do get free run to see what GameMaker can do, and it should be good enough for most tutorials.
  • The $50 "standard" license removes all the "free" version limitations, which lets a hobbiest create the game of their dreams, but lacks certain features related to creating and selling a game in a professional environment. 
  • The $99 "professional" license is still a lot cheaper than a lot of professional IDEs, and provides all the features you need to make professional games.  
  • There's $200 for each "multi-platform" license, which enables Game Maker to create games for things such as iOS device, HTML5, and so on.
To put this in comparison, you'd have to pay $1,800 (without a student discount) for the cheapest version of the latest Adobe CS6 to include Flash (which is required to be capable of making games).  Unity Pro would cost $1500 plus $400 for iOS support.  So $300 for a $99 copy of GameMaker Professional and an iOS exporter is a steal, as long as you're looking to make the kind of apps GameMaker is good at making.

Main Deciding Factors (In Favor):  Spelunky, Drone, Immortal Defense, Magi, and Dustforce - five great games made in GameMaker, the latter three being actual commercial ventures (though Dustforce was just prototyped in GameMaker).  Yet, I never heard of a game from BYOND or Eclipse, I think NESTalgia would be the only one that really escaped the BYOND hub.  GameMaker being so very multi-platform is a pleasant surprise: this is the only of the three platforms that can be used to make HTML5 and iOS games (albeit at a pricy $199 per platform).

Alright, so now I need to learn Game Maker.

Technically, this is not hard to do.  Game Maker is designed to be so easy to use that even rank amateurs can put together something in a couple weeks.  Having had a few years (albeit mostly slacking) of experience with BYOND, I'm actually pretty comfortable with the idea of developing within an interpreted environment, it will mostly just be a matter of learning GameMaker's individual idiosyncrasies for me.

There's a pretty good tutorial resource to be found here, on the GameMaker forums.   I also happen to own The Game Maker's Apprentice, a great book full of tutorials on using GameMaker and it even discusses some rudimentary game design concepts.  Another book I own is The Art Of Game Design, which is much more thorough along the line of game design.  A great book on programming GML would be nice, but I don't think such a thing exists.  Well, GML is just a collection of programming functions, that's not exactly something a paper resource would do me much good at, anyway.

However, I need to do more than learn to use Game Maker, I need to learn how to become eloquent at using Game Maker to produce some fairly epic ideas.  The kinds of things I want to develop fall into the realm of being as open-ended as roguelikes and with few standard gaming conventions.  That takes a bit more than making a shooter, which Game Maker does fine by default.

Learning a programming language is a lot like learning a foreign language.  Study is necessary, but not enough, you need to practice a lot get good at speaking the language.  The tutorials are a form of study that works by doing, and that's a good start, but it's still a whole different world than doing it on your own.

Learning the language is only half the battle.

Many young game development hopefuls believe that, should they only learn how to use a programming language extremely well, great games will follow.  What they don't realize is knowing a language well is just mastering a tool of communication.  Knowing how to communicate is useless unless you have something to communicate.

BYOND did not trip me up because DM is a hard language to learn: it's not, albeit all languages have their own idiosyncrasies, and I had to wrap my head around a hard-coded object oriented structures and functions that made the whole thing work.  I mostly tripped myself up because I could not quite get a game into "playable" state before cognitive dissonance struck and I had brainstormed I'd rather do something else entirely.  In other words, though I had learned to speak in DM, I was perpetually changing my mind about what I wanted to say.

I might have a chance with GameMaker wholly because you get a playable game right away, it's a SHMUP almost right out of the box.  Projectiles and collision modeling, for example, is built right in.  That's a very rudimentary something I would need to hunt through community libraries to find in BYOND.  (In Eclipse, I'm not entirely sure, but I'm guessing they'll tell you to code your own.)

Alright, so lets say I did know how to speak the language, what am I going to communicate?  An idea, of course.  For example, what about the idea, "ASCII Sector, in a 4X Game, while maintaining a Roguelike trapping."  Cool idea?  It certainly seems that way to me but ideas are a dime a dozen.  No, the real challenge is in the implementation; the devil is in the details, and this will make the difference between a great game and a good idea gone horribly, horribly wrong.

Fighting a battle at all requires tremendous motivation.

Implementation is hard, it requires a willingness to painstakingly iron out every little thing that goes wrong, even take it back to the drawing board as needed.  Chances are, you will get it wrong the first time, and several times afterwards, because there's a great difference between what you imagine and what you get.  So how do you keep the will to go on?

Perhaps the greatest technique to master motivation comes down to rendering something down into tiny milestones.  The milestones should be so very tiny that embarking upon the next is something you're willing to start doing.  Starting is important, the longest journey begins with a single step.

The follow through is trickier, and it's a lesson I have to learn over and over again:
  • If you have a great project to work at, before you're going to see the end result, you need to be content with writing one line of code at a time.  The mind must be on the individual chips of the marble, not the finished statue.
  • If you play an MMORPG intending to be level 50, you're going to get upset that you're only level 5 and you have to keep killing stuff over and over again.  Why not enjoy the game you're playing right now, instead?
  • If you have a new platform to learn how to use, you cannot immediately embark upon trying to create a masterful project on the platform, you must first understand how that platform works.
It's the same lesson: focus on the present task at hand, not the long term end goal, or you'll just make yourself miserable.

Take the analogy of being a sculptor making a statue out of marble.  If you do anything at all, you've chipped one piece of the marble away to reveal the statue underneath.  On the other hand, if you fume that it may take 250,000 such chips to finish the statue, looking at the entire project without breaking it down at all, you'll only find yourself too cowed by the greater scope of the thing to even start.  Never do the present task at hand, and there will never be 249,999 chips left to do.  Start, do a little every day, and there will eventually be enough chips out of the way that enough statue emerges for everybody to enjoy it.  (Don't aim for "finished," you'll never be finished, there's always one more thing to add, but there is "good enough.")

The length of this blog entry is me feeling too intimidated to continue.

I know the way, but I'm bad at this.  Maybe it's my tendency to want to think in broader terms that game me in trouble.  However, whether it be that or sheer youthful impetuousness, my tendency to feel bored and impatient is the greatest danger of all to stymieing all my progress.

I have to say, though, when I have a game of my own shaping up nicely, and the flow seems to be going well, it's quite the rush.  "Programming is the most fun you can have with your clothes on, although clothes are not mandatory."  Doing it while creating an artifact you're genuinely excited about, even more so.  In other words, when things go well, making games can be quite a bit more fun than playing them.

If that's the case, then what is there for me to be worried about, really?  This is supposed to be fun.
Post a Comment

Popular posts from this blog

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…

Empyrion Vrs Space Engineers: A Different Kind Of Space Race

In my quest for more compelling virtual worlds, I have been watching Empyrion: Galactic Survival a lot this bizarro weekend, mostly via the Angry Joe Show twitch stream.  What I have concluded from my observations is Empyrion is following in Space Engineers' shadow, but it is nevertheless threatening the elder game due to a greater feature set (the modding scene notwithstanding).

Empyrion is made in Unity, whereas Space Engineers is built on a custom engine.  While this does put Empyrion at a disadvantage when it comes to conceptual flexibility, its developers nevertheless have a substantial advantage when it comes to adding features due to a savings of time spent that would have gone into developing their own engine.  Examples include:
Planets.  Empyrion already has planets and space to explore between them, whereas in Space Engineers planets are in the works but still awhile away (so you just have asteroid fields to scavenge).Enemies.  Space Engineers' survival mode boasts onl…

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…