Devlog 3/20/2019: Post-Computerpocalypse- We’re on Hold, but Not Forever

Since my last post, Astra Terra has largely been on hold, mostly for reasons outside of our control. About two weeks ago, I finally felt like I was able to fully get back into programming, but after all of the delays and the lost work and such, Grish was feeling pretty demoralized, and I wasn’t sure I wanted to dive right back in. Then, last week an issue with (I think?) my Linux computer’s version of OpenGL caused the game to not be able to display anything for awhile, so all hope of working on the game completely dropped away for a time.

Just today, I opened up the game, and it was able to display and run. I ran some tests and the last few changes I made before the OpenGL issue happened seemed to have recovered most of the work on the AI that I lost in the post-concussion computerpocalypse, but there are a few bugs that I had fixed prior to this that I need to re-fix. The live-updating drone view has not even begun to be reimplemented, unfortunately. Luckily I do, in fact, remember how to fix the bugs the tests reveal, and also why they’re happening.

That doesn’t mean we’ll be working on it immediately, though, as much as part of me wants to dive back in again. As a team, we’ve decided to put Astra Terra on hold for a bit, mostly because this whole experience has put a lot of existential questions in our minds and we need a while to find our groove and get back into the swing of things, and also because I’m a little burnt on AT, Grish is now very demoralized, and Govind is incredibly busy. Because of this, we’ve decided to start a new game which is temporarily named Cyborg Demon Omega. It’s a simple cooperative twin-stick shooter with tower-defense elements, which we think should be done pretty quickly. In fact, the twin-stick shooter aspect, including ammo, health, switching and acquiring guns, inventory management, shooting, enemy AI, and death on both sides, are all completed, and I’ve begun working on the tower-defense aspect today. We chose to go for as simple a game premise as we could make ourselves excited about, and use the easiest tools to get this done (we’re using Godot 3.1), and we hope to finish it up soon and use it as a learning experience for releasing things on Steam and doing marketing. We’ll use any/all of the profits from it to fund work on Astra Terra going forward.

An interesting thing to note about Rust that I noticed looking through the AT code today is that it’s pretty self-documenting, so I can still look at my code and remember what it does and how to use it– an experience I’ve actually rarely had in other programming languages I’ve used. I think the combination of declared types and verbose(ish) syntax where its really important (in type and function definitions) and inferred types and fairly terse syntax where it actually helps readability (in the bodies of things, where the overall idea of what’s getting done is easier to parse out in a more expressive syntax) is perfect. It’s similar to Haskell in this way.

Now that I’ve spent some time in a game engine who’s design and philosophy I can really respect (Unity 2D is pretty terrible, in fact Unity in general is, although that’s an entire post in and of itself), a part of me regrets not just using an engine for Astra Terra. It would’ve made Grish much more able to participate in game design and development, and probably sped some aspects of development up. On the other hand, not only has working without a full engine been a great learning experience, but much of the benefits of Godot’s UI-based tweak-able knobs and premade things would’ve been completely useless to us, and most of the existing engines would’ve been more of a hindrance than anything, since the kind of AI that we need to do is not really supported by most engines, and isometric graphics would’ve left us re-implementing rendering anyway. Plus, since our game wouldn’t need or be able to use almost any of the existing engine’s faculties, the extra bloat and size from the engine’s weight would’ve made it more necessary to spend time refining and optimizing our code before it was even completed, to make the game playable. Using Rust and Piston, we’ve barely had to worry about optimization.

Back to Cyborg Demon Omega, I’ve already learned two things from working on it:

  • I need to work on making TOML config files for most tweakable game mechanics as quickly as possible, having Grish be able to mess with game mechanics and feel without having to program is a huge benefit
  • Most games work best with an engine. I was luck that wasn’t true for Astra Terra, but in the future, I should keep more of an open mind to using game engines.

On a side note, Godot theoretically supports Rust using GDNative scripts. I’ll have to play with that and post here how it goes.

Since image posting doesn’t work here anymore (I should fix that!) here’s a link to a Google Drive of screenshots from Cyborg Demon Omega. We’ve just implemented game phases, the build phase is when you use blueprints you’ve acquired to build giant fans, barricades, turrets, and the like to aid you in defending the bastion. We’ve balanced the game so its basically impossible to win without a little help, although you can get reeaaaally close to making it through a wave. By the way, it’s really hard to use Print Screen to take screenshots while also playing a fast-paced game. Forgive the bad shots.

Leave a Reply

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