Impulsing: #devtober Day 1

I decided to give the #devtober game jam on itch.io a try this year. It popped into my inbox, and it sounded like it might be a good experience. You can read more about it here: https://itch.io/jam/devtober-2020. Basically, you just work on your game each day of October and blog about it. Then in the end you write a post-mortem. I have been working on it almost every day anyway, but this makes me write about it, too, and maybe some people will read along.

This is day 1.

A month to go.

Given that this is the first real Impulsing posting, I probably should give a little information about it. I would love to post images, talk all about it, and get everyone excited (or bored) by what I’m doing. However, part of the game is figuring out what it all means, and talking about it too much could spoil that sense of discovery. So I need to be a bit guarded.

Impulsing is a puzzle game I have been creating off and on for over two years. Probably closer to three now. Part of that length of time is that I’ve been working only on it in my spare time. Another part of it is that I have been working on another project as well at the same time that has been taking priority. Another part is that I actually gave up on it for a while before a mental “eureka” moment happened, which provided a breakthrough to a tough design problem and got me back into it with real energy.

It went through a number of (crude horrible) prototypes in HTML and JavaScript before I began to cause my CPU usage to go through the roof. Time to get more real.

I dabbled in Unity for a while before my struggles to do simple things put me off it. I am now using Godot, and I’m much happier with it, though it too has quirks that drive me bonkers at times. (One example: I’m using resources to read and write levels, and there have been times where the game crashing has trashed the current level resource file. And the Godot editor/system seems to still have it open – if I restore it from git, it just overwrites it again whenever I do anything. I have to shut down the Godot editor before I can restore the file.) However, there is a lot I really like about Godot, like its nested scene/component model.

The game started off life in 2D, and I sent around a small prototype to some people I know. For various reasons, I decided to move to 3D.

One reason I did is that I’m “better” at making 3D art than 2D, even though I was using Inkscape to create SVGs. I enjoy using Blender, I can produce some nice (if simple) assets, and I want to get better at it. Also, the 2D game was top-down, and it was just too limiting to try to make things look good and interesting looking straight down. Now with 3D (really 2.5D), I can have more depth and make things easier to understand. And lots of interesting 3D assets to use, if desired.

Original 2D game:

Current 3D look:

Another reason I switched to 3D is just to experience using 3D. I don’t know if this game will ever amount to anything, so I’m really using it just to learn about a wide variety of things.

That’s a brief overview. That’s all I’ll say for now. What did I do today?

I’m working on a new component called “Owen”. All right, that’s not what it’s really called. That’s just its code name. I just made it up.

This is what it looks like, so far. It feels too bulky, but… get it working first. tweak later.

I have made a point of using TDD to drive at least the complex parts of the game, like the graph and nodes. I’m using GUT in Godot for my unit tests. Today was working test by test to drive the component’s code. As often happens with TDD, suddenly it was just working. And I had the tests as a testbed to show me it working, outside of the complexities of the game. Faster turn around. Faster development. A bit more code in the end, but probably less typing. And I know, at least for the test cases I have so far, it works.

Time to step back from the screen before heading off to bed.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.