Game Development

Blog 736: The Crimbo List

Oh yes, it’s the most productive time of the year!

Well, maybe last year I got ahead of myself. The 36-feature plan I gave myself three weeks of holiday to complete in the end took more than six months (bar one remaining feature, the Towers of Hanoi puzzle, for which I have some lovely ideas). Plans, it seems, are not really my strength.

What, then, shall this festive period hold for my still-unnamed magnum opus?

The Crimbo List

I have started by ramping up with a lot of smaller, niggly things that have been annoying me over the years. It seems that I’ve finally (fingers crossed) stopped needing to rebuild the level generator, which means that most of my systems are now stable enough for me to solidify the edges and start to adding bits of extra content.

It also helps to build up momentum by doing small but achievable things. Post-work evening time gives me between one and two hours of spare time, which is not really enough time to get stuck into anything, which makes doing larger pieces of work a bit of a slog. So until the festive break opens up for the big guns, it’s time to do some house cleaning.

Kill messages are also back on the menu after a long hiatus!

1. Bot or Not?

First up, I fixed up the bot pathing system. Aron Granberg’s A* Pathfinding Project is a truly fantastic library (such that it is one of the few things I’ve laid down real money for), but needless to say I wasn’t using it very well in the beginning.

The major change here is that I’ve finally stopped the bots from juddering when they’re going around corners or moving short distances. They can also now comprehend when a point is unreachable and stand there properly instead of vibrating their turrets.

2. The Colour of Magic

I made the user interface re-colourisable. This might seem pointlessly superficial, but it was an important step because I’ve started to thrash out how I will structure the options menu. Besides, colour schemes will eventually be linked to the scenario you’re currently playing to add a bit of thematic consistency to the whole experience, so it’s ultimately necessary.

Bloody hell though, Unity drop-down menu controls are monstrously complex.

3. Push the Button

This one had been on my list for ages — reworking the door controls. It was recently re-highlighted by a bit of genuine user feedback, when one of my edindies pals asked to have a go and I spontaneously agreed.

He was reassuringly able to get to grips with the control scheme fairly quickly, so I am now less worried that the Nox-style mouse controls are going to be too much of a stumbling block (I will be making a full-scale Deus Ex-style tutorial assault course anyway, but that’s not on the short term plan). He did, however, note that the hitboxes for the door controls were a bit small.

See? I can take constructive criticism!

4. Chain Reaction

This one was a simple thing that had been on the list for longer than I remember. Hell, it was in Project Y4 back in Warcraft III so despite knowing full well how to do it, I never quite got around to putting it here… until now. It took barely a couple hours to roll up but it’s hella worth it.

What am I talking about? Explosion damage delays. Rather than everything dying instantly from an explosion, they will take reduced damage depending on their distance from the epicentre, an appropriate fraction of a second after the blast began. Hot damn, but it looks good when you line up some explosive barrels (not that the level generator does this yet, but it will be easy enough) and set the end one off…

5. Scale Fail

It might still be hard to tell at the moment, but all my 3D models and worlds are built to scale. A Delta mech is approximately 5 metres tall, which isn’t actually all that large; we’re talking the size of a double-decker bus or a couple of building storeys. Giant robots on a scale comprehensible to their citizens, as it were. But I haven’t done much to indicate that scale so far, beyond the windows in your mech’s cockpit which can sometimes be hard to see (and are naturally absent from drone opponents).

So I replaced the laser grid generator switches with little control consoles that are just right for my reference character (which would be Lara Croft from Tomb Raider 3 until such a time as I dare to attempt to build my own). These are not the only planned human-scale elements, but they do get the ball rolling. The control panel is a real photograph from, but mushed down to the resolutions I’m working with you can hardly tell it wasn’t procedurally generated like the walls.

6. Forge of Shaders

The other thing I have laid down real money for is Shaderforge.

I did make a brief attempt to write my own shaders, but I quickly realised that I just couldn’t be bothered learning a whole new world of insanity (employers constantly nag me about learning and development, but my allegiance belongs solely to the end product; learning is undertaken only as necessary to achieve the end goal, not as an end of itself).ShaderForge is an excellent node-based editor where you just drag things together until the magic happens — shazam, I have my 10-layer mega-shader (that supports camouflage, colourisation and electrocution overlays and much more) for the mechs and props.

I’ve known since fairly early on that, due to some stylistic choices, my game has basically zero impact on the graphics card. Even my overuse of dynamic shadows is mostly confined to the CPU because I build my characters out of lots of discrete blocks. Which means that anything I can shift into a shader, I really should. I started off by adding some gentle wavering distortion to the boost gate exhausts that makes them sweetly flame-like.

I followed this up with a more subtle optimisation. My laser beams look so damn lovely because they constantly waver even while they’re winking in and out of existence, giving them a bit of flair instead of hanging motionless in the air. I was doing this in code and it was more awkward than difficult — having to modulate the width changes of appearing and disappearing with that consistent waver. No more, I say, no more! That baseline wavering has been delegated to a new beam shader and I can promptly delete the code.

The Festive Plan

Which brings us right up to the present day.

The game has changed and settled a lot since I did the last full-on video, so I reckon once I’m finished work for the year I’ll do a gameplay vid with commentary to reset where the game is at and where it came from. Then we open up the can of worms that is where it’s going.

Have a proper crimbo everyone!

And you tell me...

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

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