Skip to main content

Making Games Is More Convenient Than Ever (But Still Hard)

Following an investigation of last entry's roundup of interesting game engines and APIs, I eventually decided to go for broke.
 I've basically narrowed it down to two platforms:
  • C# - (That's C Sharp, not C number sign, but I'm not going to go pecking around for the ASCII code for that.)  Probably using the free Microsoft Visual Studio Enterprise IDE.

    Sure, I said there'd be no "option 3" of programming my own engine, but I have to say that the idea of C# has entranced me.  Like JAVA, it's an interpreted language that does its own garbage collection, but has many unique advantages of its own.

    Where other languages make me think of mechanical linguistics, C# makes me think of a symphony.  C is on the violins.  JAVA is on the violas.  A dozen other interesting language paradigms make up the other instruments in the orchestra.  What a romantic envisioning.

    Souring this romance is the knowledge that C# is very much married to the .NET framework.  If this is an orchestra, then it's Microsoft's orchestra, and don't you forget it.  I don't dislike Microsoft, I think they're a fine company despite the occasional fault, but having a program language belong to an independent entity rubs my inner academic the wrong way.  Yet, you would be hard-pressed to find any popular programming language that was not originally developed at a company.

    Despite being a Microsoft invention, C# is not limited to the Windows platform.  Thanks to things like the Monogame framework, C# is completely cross-platform in ways JAVA is not.  Perhaps unsurprisingly, one of C#'s first platforms was the XBox using the Microsoft XNA API (which is perpetually rumored to have ceased all development tomorrow).
  • Unity

    When it comes to having a graphical IDE-driven game development platform, Unity is doing ridiculously well for itself.  There are a lot of graphical game development IDEs out there, but Unity would seem to have the greatest overall combination of power, accessibility, cost, and cross-platform capability (they don't call it "Unity" for nothing).

    I have a lot to learn.  GameMaker was drop dead simple for me to use.  Unity is more on the level of learning how to get good at a professional-grade Adobe application, recursively so, because chances are you will be using several such applications to generate content for Unity.
An honorable mention goes to NetGore, which actually allows you to create your own tilemap-based MMORPG, so if that's really what I wanted to do, I still could.  I don't know how NetGore stacks up to  BYOND, exactly - is it still limited to 65535 of certain kinds of instantiated things?  But I believe it does not require registering an account to login to it.  Personally, I passed on NetGore because it required installing a MySQL server to run, and I'm paranoid about running additional hosting services on my home computer that I'm not actively using.  That might change later because, after all, it's developed in C#, a language I've recently taken a fancy to.
MonoGame is perhaps the foremost API for C# game programmers.
(Though I question the wisdom of promoting "getting Mono.")

Damn, do we spoiled 21st century game developers have it easier than our forebears.   Could I have actually fathomed I would feel up to the task of being able to use engines capable of fantastic 3D visuals?  Engines like Unity make it as easy as using Adobe Flash.  Thanks to that, garage hobbyists can now bang together games that would formerly require teams of around a hundred people.

I'm just doing game development for a hobby, and I have this much power at my fingertips?!  Maybe I aught to wait another 20 years for when software is developed to directly read my game concept from my brain.

Cognitive dissonance, thou art I.

If I'm going to play with nifty software like this, clearly I have a lot to learn.  But where to start, C# or Unity?  (Bear in mind that, due to my dabbling with BYOND in the past, I'm not a rank novice when it comes to programming C derivatives in an interpreted, event-driven environment, so no need to worry about me agonizing over typecasts or relying on goto statements.)

Part of me thinks I should start with an existing C# roguelike, and tinker.   Something like Amaranth might be a good start here.  Of course, given my dabbling with tilemaps in BYOND, even writing my own A* routine, do I really need to worry about a roguelike framework?  Probably not, but this would at least save me the effort of recoding the basics   Tinkering with existing games is not setting the bar unreasonably high; that's where all the Angband variants came from.

Part of me says I can do better than that.  If  just followed Quill18Creates' tile-based game tutorial in Unity, I would learn quite a bit about using the environment, and then I could take the results of what I was guided to create and basically have the beginning of a roguelike engine in unity.  Using an advanced 3D engine to render a roguelike - how bourgeois is that?

The main sticking point that prevents me from going with the latter option is a little quote from the developer of RimWorld.
RimWorld uses the Unity framework, though I created my own custom object and time handling systems because RimWorld is a tile-based 2D game with thousands of objects, while Unity is better suited for smooth-space 3D games with hundreds of objects.
For the scope of the project I'm thinking of making, Unity's "smooth-spaced 3D games with hundreds of [active] objects" might not be enough.  In that case, all my effort spent getting used to Unity may go to waste.

Alright, so go with the first option?  Not necessarily.  I've developed such "custom object and time handling" systems before, it just means your own scripts drive the action instead of the default engine's timing mechanism.  I know that when you do thousands of operations per iteration, you're going to bottleneck your CPU in short order unless you're smart about it, and so the real question is if the chosen platform is efficient enough to get a reasonable rate of operations done for the needed game application.

It's a silly argument, really.  Unity may not be as simple to use as my experiences in GameMaker, but working purely in C# is several factors slower for any solo developer, except perhaps the coding maverick with the perfect API.

Where is everybody?

I'm kind of surprised.  It seemed to me as though the supply side of gaming is in excess, driving prices down everywhere.  I hear from industry veterans about all these young hopefuls banging to get into game development, a glut of talent to be unfairly exploited.  If you look at the Android or iOS stores, there would seem to be no lack of software.  The symptoms would seem to support that more people are trying to make games than there are needed.

Yet, I've been looking through a lot of resources off of the Roguebasin wiki, such as libtcod, and many of the game engines mentioned on the game programming wiki page, and what I've seen is mostly a handful of abandoned API that have not been touched for years.  Even the monogame API apparently comes bundled with a 2010 copy of Visual Studio Express.

If there's really so much talent floating around there, why have none been attracted to utilize these open-source code repositories?  There might actually be a lot less people capable (or willing) of working on games than I thought.  Have I been squandering a skill set that there is dire need for?
Regardless, I'm somewhat stuck right now. 

I've got a custom built PC, nothing too fancy, but it'll run anything I need it to.  Lately, it's been looking like a damn expensive paperweight.  I've been dabbling with Minecraft, Dwarf Fortress, Crawl, but they all feel played out to me.  I thumb through Steam, where I've hundreds of games bought on past sales, unplayed, and think, "Ugh, when did I think I'd ever want to play these?"  On the Steam store, thousands more games just look like they're made for other people.

I'm not blaming the PC platform.  I've got three GameFly rentals for my Wii U going ignored.  My Nintendo 3DS fares little better.  Basically, it feels like no game in the world is worth playing for me right now.

Maybe I'm very subtly depressed, "Loss of interest in activities you previously enjoyed," being a symptom of that, but my knowledge of mindfulness meditation should keep that in check.  I'm inclined to think that the greater buck of this is simply, "Been there, done that."  I'm facing overwhelming apathy for tired old game formulas I have no interest in.

Creating games, however.  Now, that is potentially interesting.  A game you make yourself is essentially custom tailored to you, and it only stops expanding when you stop adding to it.  Not only that, the very process of creating a game is very stimulating, usually even more so than the game itself.  I just have to get over my cold feet and commit, and I think I'll find progress a lot easier than I fear.
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…

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…

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…