Game Design, Programming and running a one-man games business…

Update at last

It’s been a while since I blogged, because a lot has been going on. Firstly there was a lot of patching and changes and so-on involving Gratuitous Space Battles. Then I grew another year older (boo!) which involved going away for a day and playing with tanks. I ended up sitting in the gunners seat of a British Challenger II tank, which was surreal, awesome, and when the guide starts talking about its planned role in nuclear war, kinda scary.

Then… I went away another night to nottinghame game city, met up with various people from game dev that I’ve met over the years, and bizzarely took part in a panel-discussion thing with feargal sharky and phil oliver from blitz games. I’d link to a video of it, but I haven’t seen it on the web yet (pls post a link if you find one).

In between all this GSB got updated to version 1.20, which was buggy, and immediately afterwards today to 1.21, which I trust is less buggy.

That version is very very very close to what I hope is the ‘final’ release version of the game. I have a playable demo setup running already (although it needs work). Don’t panic, that doesn’t mean the game will not continue to get updates and improvements, and expansions blah blah, it absolutely definitely will.

Also, in about a weeks time, I move house and knowing the incompetence of UK companies, I’ll lose internet access for a few days. It’s a busy time!

A not so trivial change

When you think about adding a feature to an existing game, it often sounds much simpler than it will be. Here is an example from today.
After a lot of consideration, I decided to add new ‘carrier support’ modules to cruisers. These would act as mobile repair yards for fighters. If you gave fighetrs the ‘cautious’ order, when suitably damaged, they will seek out the closest cruiser with a carrier module, head there, dock, get repaired, and return to battle.

Now there is a lot of code associated with the AI for doing that, and the UI for displaying it etc, but that’s all the code you factor-in and expect to write, so that isn’t the problem. The extra work, comes from all the stuff you hadn’t considered.

I needed code to prevent docked ships shooting, being tractored, being affected by shock waves, or targeted by enemy ships. That’s all pretty reasonable. Then I needed code so that on docking, the fighters would choose the most sensible module for multi-bay carriers where one was damaged, or had a big queue of fighters, plus handle exploding carriers and damaged carrier modules.

But then I started looking at the visuals. The fighters were just flying on top of the cruisers, then vanishing whilst docked. Clearly this sucked, and it would look cooler if the fighters flew ‘under’ the cruisers and re-appeared there. This would look like they docked in hangers under the ship.

BUT! in GSB ALL the fighters fly over the top of cruisers. It’s a rendering optimisation, which nobody notices. So I had to code a newer system where fighters *could* fly under as well as over the cruisers. This just means putting them into two groups randomly, looks cool, and is still pretty fast. And this is where it gets interesting.

With this cunning new system, as a fighter approaches a cruiser I can just ‘force’ it to toggle to an ‘underneath’ group, and thus it will look cool. However, it may not already be an underneath one, and it *may* be on top of a cruiser at the point at which I realise I need to do that. So there is a danger it may suddenly ‘ping’ underneath a ship horribly as I’m watching.

I can set a flag that means the change is pending, and only do it when its offscreen, but that might not always be possible. At some point I need to either just risk it, or do a lot of intersection tests to ensure its ‘safe’ to jump underneath. Ideally I flag this as something to do in a frame where there is some CPU headroom (existing code in the game checks this, and does other similar tasks in those gaps)

And there is one final hiccup. Over time, as every fighter gets repaired, they will eventually all end up ‘underneath’ cruisers. Which will not look right. I need to tag fighters as ‘needing to toggle above’ when they are next offscreen, just like I did the other way around.

This is all the code people forget about, and is why game programmers suck so badly at putting together schedules :D

Future Possibilities in the world of Gratuitousness

Some ideas I’m thinking about:

1) Carriers. Basically ships would have a carrier module that would let them repair fighters. the fighters would get a new order to return to base after X damage, and after Y time docked underneath the parent cruiser, the fighter could launch totally repaired. Probably an expensive or heavy module. This needs new orders, module and of course lots of balancing.

2) Scenario-Limits. A mission can be defined where there are more complex restrictions on the fleet other than pilots and cost. A crew limit, or a limit on the number of missile modules or plasma turrets. Maybe a mission where there can only be one third of the budget spent on cruisers, etc…

3) Drones. A module launches not dumb missiles, but active drones that hunt down and shoot enemy fighters, or clamp onto enemy armor and drill through it slowly over time. They can be shot down by point defence weapons.

4) Increased area of effect rule. Missiles in-flight can be vaporised by the blast waves from exploding ships

5) Anti-Missile Missiles. Another form of anti-missile defence.

6) Shielded Missiles. (take multiple PD hits)

7) Gravity Bombs Ultra slow missiles which drift transparently through enemy shields.

8) Multi-source beam weapons (several beams converge on one point, allowing multiple hardpoints to join forces to fire a single more deadly beam).

9) Decoy transmitters. Allows a fighter to impersonate a cruiser or frigate for short periods to draw enemy fire.

I doubt any of this will make it into the games release. I suspect a lot of it will end up in the game eventually, either through expansion packs, modding or just extra free content. Thoughts?

Possible unlock changes

I’ve been considering a few changes to the way stuff is unlocked in GSB. Currently, winning a game with a small fleet earns you honor (based on the margin between your fleet cost and the budget) and you can spend that honor unlocking new ship modules.
In addition to that, you start the game with just one unlocked race (The federation), and you unlock an extra race when you beat every mission on normal, then another at hard, and another at expert.

There are many problems and potential solutions

Firstly, you have to play every single mission before you get to choose a new race, and I suspect people may be sick of the federation as a playable race by then.

Secondly, the survival missions don’t count towards this, which is hard to explain.

Thirdly, some really l33t players earn tons of honor easily, and have nothing to spend it on.

So I’ve been thinking about this a lot, and reading peoples views on it, and I’m still slightly on the fence about how to improve it. My gut instinct is that I should roll a whole bunch of other stuff into the current honor-unlock system. Right now, missions get unlocked by beating the previous mission, and when you unlock a race, you get all it’s ship hulls at once. I could easily make all this unlockable too, and could scale the current unlock prices to compensate for it.

That still gives me the eternal problem that some real hardcore players can unlock it easily, and there is a danger that casual players are stuck unable to unlock parts of the game that they have, after all, paid for.

Ideally, the game would find some cunning way to scale honor so that this doesn’t happen, effectively giving away some bonus honor to any players that get really stuck. OR, I could add some totally superflous crap that can be unlocked with excess honor by the hardcore (maybe slightly different ship hulls, with no gameplay implications, or something else visual, maybe an icon for their profile name on submitted challenges?)

Anyway, it’s not an easy decision.

Challenge Browser

I’ve decided to improve the challenge browser for the game before I release it. It looks a bit crap right now, and I’m currently thumbing through a bunch of server browser screenshots from other games to get inspiration.
So far my fave is this one: (overgrowth)
I wish I had a nice html style rendering UI that made this easy. Doing a whole game this size on your own is insane.