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

Working through the levels

Almost all of today has been spent going through each mission in the game and constructing AI fleets (in three levels of difficulty) for you to fight against. Obviously each fleet will need tweaking and re-visiting many times before release, but this week I’m at least hoping to get every fleet in and working so the game is playable throughout all it’s missions.

There are a finite number of ship hulls for each race, and it’s pretty clear that I can’t get away with just the 12 or so ship designs for each opponent. In other words, the AI ships will have different variants of each design, so you won’t be able to just see a silhouette of the enemy ship on the mission screen and go ‘ah yes, it’s the one with lots of pulse lasers’. Which is cool.

Screenshot for today:

Playing through the game, and occasionally using the speed controls, I’m happy that there is enough going on, and enough you need to keep an eye on, to ensure that the battles are worth watching for more than just visual appeal. It really does help to observe exactly why your fighter squadron got destroyed without inflicting a single point of damage. There is a stats screen post-battle, but it’s more helpful to watch it happen to see who did it :D.

My current plans are for a few more weeks of play testing, and bug fixing and tweaking, and then to start thinking about my beta plans. I’ll probably get a few fellow game devs and friends to try it out to catch anything really obvious, then I’ll consider how to handle pre-orders and beta testing. My gut instinct is to go with a closed beta that’s only open to people who pre-order, because I think you get some decent feedback then. Feedback from people who have put money down on a game is always more accurate than feedback from random surfers who probably wouldn’t buy it anyway :D

I haven’t really thought about prices and publishers yet, although several are interested. People who own big web portals, feel free to get in touch :D

Fighter Hulks and some aborted stuff

I spent most of Saturday wasting my time on code that I reverted. Long long hours were spent working on bloom effects and shadows for ships passing over each other.  Eventually both were rejected. The bloom code simply didn’t look that good, and the shadow stuff proved to be hideously involved and likely very slow. I know people might assume you can do it simply by just rendering the ships to a separate render target complete with shadows, then slotting in the background later, but you can’t, due to laser and particle effects lying ‘between’ ships and also needing to be blended with the map background at render time.

Anyway… who cares :D

What I *have* got working is hulks for fighters. Previously a destroyed fighter was just obliterated by a fairly low res particle effect. The effect still needs improving, but now destroyed fighters linger as debris. Crucially, the fighter hulk maintains its momentum for a while, so they look like their engines just got shot out, and they also drift faster than the big lumbering cruiser hulks. This all looks a bit nicer than before where they just vanished. I also went through and got 4 variants of hulk done for each fighter.

Now I’m rendering out a few more loading screens, and later I’ll work on some improvements to particle stuff. Monday onwards will be ai-fleet design and general game balancing.

Taking Direct Control

I’ve had a lot of people saying they love the hands-off battle idea, and a sizeable minority expressing concern that this will get old fast. In addition, when playing the game, I’m realising that no pre-battle orders are ever going to be fine enough to prevent you feeling occasionally frustrated at your AI captains, so I’ve decided to give-in and add some element of mid-battle control.

Now this would normally break the play-by-email style challenge system, but in challenge games (where you are playing against another player’s downloaded fleet) direct-control is simply disabled, and the battle reverts to view-only.

I’m not going overboard in terms of making an entire RTS out of the game, but currently you can single select or drag-select some ships, and then right click an enemy ship, or a position on the map and they attack/move as instructed. Green overlaid ships are selected, the red one is the current target. You can issue orders whilst the game is paused, for extra fine control.

Most of the battles have enough ships that you will not play it like an RTS, but just use the direct control stuff to fine tune your general battle plan. Sometimes ships come under more intense fire than expected, and you might want them to beat a hasty retreat to engage auto-repair modules. Sometimes you spot that a specific enemy ship is kicking interstellar ass and you may want to concentrate your fire there.

I’ve also been improving the AI. Weapons that fire >4 times in 7 seconds at a target and have no effect, will automatically select a different target for a few seconds. This prevents the dilemma where you have a set of ships just facing each other and blasting away ad-finitum achieving nothing. The chances of hitting a shop have also been skewed so that big ships are easier to hit, meaning fighters and frigates should last longer into the battle than they currently do.

Wireframe/ 3D render

The load times in GSB are very short. It’s one of my pet hates in big 3D games, and I never understand why they don’t put more effort into it. I remember spending days optimising the loading for ‘The Movies’ at Lionhead.

Anyway, regardless of that I’ve decided to stick in some fun 3D/wireframe renders to the loadscreens for the game. Like this sort of thing:

One of the best things about 2D games is you can say to the 3D artist “go mad, I don’t care how many polys you use.” And he used lots :D

Another gratuitous day

7.10am Awoken to sound of suicidal duck crashing into bedroom window and leaving comical imprint. AGAIN.
8.00am Arguing with banks on the phone. very annoying
8.30am checking games news websites and dealing with emails
9.00am decided that today I will fix this crash bug that gives me a ‘corrupted heap’ error
9.25am I have reproducible steps to identify the bug, and know its to do with deleting ships before starting a new battle. It’s less clear whether or not its a specific thing being deleted, because in typical heisenbug fashion, nothing seems to trigger it when I step through the code.
9.29am Aha, if I quite the battle immediately before restarting, it doesn’t happen, so its the deletion of some memory allocated at some point mid-battle. but what? I should have used smart pointers (C++ thing)
9.45am Fixed! There was code when a repair module was deleted for it to grab the module it was repairing and tell it that it was no longer repairing it. The problem was that the target module may have been deleted before the repair module was, so when they both get deleted when the fleet is deleted, it caused a crash.
10.00am Fixed some layout issues on the deployment interface, now working on a better ECM beam effect
10.10am Discussing music with my musician over MSN, explaining the different alien races.
10.46am Everything works fine, but when ships with ECM turrets cloak, the ECM turrets don’t cloak with the ship. hmmmm….
11.00am Croissants
12.50pm Still tweaking and fiddling trying to get an ECM beam that looks ok. Resorting to normal beam laser effects now.
1.05pm Thats enough on ECM beams. I spotted some badly placed turrets on federation eagle cruiser, so moving those.
1.30pm The ECM shock weapon doesn’t seem to work, in that affected ships still fire weapons. Investigating…
3.30pm Investigating a sound bug.
4.10pm Working on better visual debugging data for my sound system, to track down what is going on here.
4.25pm Some sound channels do not seem to update, and some seem to be ‘mystery’ sounds which I have no idea where they came from. bah..
6.25pm Still working on the sound code. Debugging has led me to find all sorts of things that were not set up right, but I still have some sounds that ‘linger’ or don’t play.
7.10pm Everything looks like its working now, following some serious re-writing and tidying of the way sound channels get allocated and re-used. I need food and maybe a game of company of heroes.