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.


Popular posts from this blog

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…

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…

Sometimes, The Cat Skins You

The formula for cat girls is simple enough: young girls are cute, cats are cute, so young girls who are also cats are cute times two, right?  ... Cat Planet Cuties (a.k.a Asobi ni Iku yo) does not stop there, it includes girls with guns, nudifying weaponry, and even failed romantic comedy that shows lots of skin.  Cat's out of the bag: Cat Planet Cuties is basically straight up wish fulfillment.

The overall plot is pretty simple.  The Catians are a race so advanced that they have not changed in over 70,000 years.  They discover Earth, a planet whose people have uncanny resemblances, right down to speaking the same language!  Desiring an escape from their cultural stagnation, they rename their own planet from Earth to Catia and dispatch a scout to assess the viability of first contact with this new Earth inhabited by humans.  High jinks ensue.

Other than an excuse to see some fun sci-fi devices, the plot sucks. Let me count the ways:
Kio Kakazu - The male center of our harem, a 1…