Games?

Hobby development was a lot more fun before I was trying to make full games, when I was just messing around with random tech demos. Sure, there was always some distant goal of eventually turning one of these into a game, but it almost never happened. And I kind of think I should embrace that.

The path to v1.6

Sometime last month (or was it September? I’ve lost track of time…), I undertook a large engine refactoring task. After a few weeks of intermittent work, I had a 73-file changelist that didn’t compile and would have taken a good deal more work to finish. I made a local copy of the changes and then reverted them.

A couple days ago, I began this refactoring process a second time, but with a couple of clear goals to avoid another disaster. I would keep my changelists to a minimum, changing one thing at a time, and resolving any issues it created, and insofar as I were able, I would not make changes that would require me to rewrite large amounts of game code, unless the rewrites were to simplify the implementation.

So far, this is going well. I’ve implemented the concept of instanced renderables without requiring each renderable to be instanced, so existing code can remain intact. The next step will be to implement a system by which things which set shader parameters can defer to other things which set shader parameters. In this way, I’ll be able to decouple the renderable from its physical state. This will in turn allow me to move the renderable and the physical state each into its own component. The collision code I wrote for Antikythera and later brought over to The Understory is already built in a way that should be conducive to an entity/component model, so I don’t anticipate much work there.

Once I have the visual and physical elements split out into components, I should be able to deprecate my old “world object” class. This class was derived from the renderable, but it also contained physical information, as it was necessary to have these elements localized to the same object in the past. I don’t intend to delete this class, as many of my existing projects depend on it, but it will no longer be the correct supported path for game objects in the future.

I’ll need to revisit some changes I was making to the component-based entity system in my local copy. The version that’s checked in is mostly a stub; I had done some work to improve the interface for creating and accessing components. One of the issues I’m still looking into is whether I want to allow entities to have more than one component of a given type, as this could cause ambiguities if I try to get components by type.

I’ve been working on most of these changes in Drome, since that gives me a decent amount of test cases so I can make sure I’m not breaking stuff, but once I get into the new tech that won’t affect old projects, I’ll probably switch over to something else. I’m kind of liking the idea of a simple platformer…

On development paralysis and other fun things

So, obviously, I haven’t done any work on The Understory in some time. I think I’ve sort of lost sight of why it was cool and fun. I don’t even know what the next actionable item would be. And that sucks, because I really want to be involved in a hobby project right now. I just sort of have development paralysis; I find myself repeatedly opening the project, looking through the code, compiling and running the game, and then never making any changes. I was working on an epic engine-level refactoring change that I ultimately reverted, and that really killed my momentum. (Fortunately, I kept a local backup of the changes before I reverted them in case I ever get the urge to go down that road again.)

But in the meantime, I’ve been thinking about other projects I could work on. I have a backlog of works-in-progress that I could theoretically go back to (Arc Aether Anathema, Antikythera, Club Providence, etc.), but most of these were stalled because they were overscoped or had some bottleneck that I couldn’t overcome (typically art), so there wouldn’t be much point in going back to them. So I’ve been mostly thinking about simple games that would avoid my usual pitfalls.

I could go full indie and do a platformer. I haven’t done that yet, and I’m not sure why not. I have some concerns I’d end up overscoping any platformer I tried to make, but it would be a good test run of a component-based entity system, and I could potentially reuse my CRT sim tech for this. I think an early 80s arcade-style one-screen platformer could be fun, but I don’t have any specific ideas. Mostly I’m wary of falling into the trap of wanting to build a full-fledged editor from scratch and stuff like that.

I could do a shmup. I already did a small joke-game shmup for the AGBIC compo last year, but I’ve had another idea for something I’m calling “Bullet Hellion” that I think could be pretty fun and at least a little bit original. It would be part shmup, part resource management strategy game. Again, an editor would likely be a bottleneck here, as well as AI.

I could do a goalless space exploration game. That’s something I’ve been wanting to do for a while, since before Arc 1 even. There would be plenty of room for shiny shader effects, and most of the art could be procedurally generated, but I’m just not sure there’s enough meat to this idea to make it anything more than a nifty little tech demo.

I’ve also started to realize that I’ve been thinking a little too much about the indie scene and about what other developers are doing, and it’s getting in the way of just having fun with programming. I need to get back into that Guildhall mentality of isolating myself from everything and blitzing through one interesting problem after another until I have something to show for it.

In that vein, I could even put games away entirely for a little while and just work on some funky tech demos or something, since that’s usually what I enjoy the most. Maybe work on Gaia v2.0 or something.

We’ll see.