Game Design, Programming and running a one-man games business…
Laser effect thingy:
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!
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
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?
I can’t be the only WW2 obsessed geek here? Anyway, I visited the huge Bovington tank Museum a few days ago (I was away a day, hence not much blogging).
Anyway, here are some gratuitous pics of the real life versions of tanks you normally see only in Company Of Heroes:
Treyarch Glider Tank
German Goliath (pesky things)
Tiger, with dorky indie developer to show scale