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

User Interface

Today was day one of working on th proper UI for GSB. Until now, it’s been a GUI that I put together using my rubbish coder-art. Doubtless a lot of coder-art will make it into the final game, but I have at least some decent artist-drawn l33tness going in now. The general ‘look’ reminds me a bit of the mechwarrior games. I’m pretty happy with it, and am looking forward to transferring all the old placeholder GUi over to this new and better style.

There’s no point in showing screenshots of a half-implemented UI when everyone is watching coverage of E3 and the big corporate console games. It seems that it’s now official that the new Lionhead games main character is called milo. If you peak around the config files for Kudos and Kudos 2 you will see that the player is referred to as MIlo internally by the game. In fact, Kudos was originally called Milo.

Plus my second cat (who died) was called Milo.  Co-incidence? It must be something they put in the lionhead donuts.

How the (sort-of) multiplayer will work

Ok, I need some feedback on this, and I can’t shut up about it any longer. Here are my plans for multi player GSB, and they are going quite nicely in terms of being almost playable already…

GSB is a single player game with a number of scenarios each of which has a normal, hard and expert AI fleet to fight against. You will probably play each scenario several times, trying to reconfigure your fleet each time to beat the opposition. You will also gradually unlock new races, so there will be the urge to beat every scenario with every race eventually.

However, nothing beats going up against the brains of another player. The problems with a mutiplayer version are:

  • This isnt a real-time game, so you would sit there for ages waiting for the other guy to design his fleet.
  • Indie games dont have big sales, so finding people to play against is hard.

The solution is PBEM (play by email) but WITHOUT the email. Basically it works like this:

You load up a scenario as usual, having selected your race, and probably already with a big bank of pre-designed ships from battles against the AI. You probably have an uber-fleet that kicks ass against the expert AI already. You then click the ‘challenge’ button. This takes you to a screen where you type in the username of the other GSB player (someone you know, who has the full game), and a taunt to tell them how their pathetic space fleet will be ground to dust by your mighty lasers. You click send.

That uploads a tiny data file onto my server, where it’s stored in a database. The next time your friend launches the game, and clicks ‘refresh challenges’ he/she will see your challenge, with taunt in all its glory. He/she can then download that challenge file and play against your fleet in their own free time. Eventually, they should find a fleet that beats your fleet, and no doubt they will then challenge you back.

Obviously its possible to see how many of your challenges have been beaten, and to even track how many attempts it took. There are also tons of high score and metagame possibilities, as are the theoretical possibility of me posting ‘open’ challenges’ which get sent to everyone.

This is tons of work, especially for a net-coding n00b, but it’s in and working at the server side, I’m just tweaking client-side UI code to get it to work smoothly.

Thoughts?

Space Hulk particle test video

Now that the hull editor for the game actually does something, I managed to put it to the test by adding some particle emitters to the drifting ‘hulk’ from one of the federation cruisers. This short youtube video shows the ship being destroyed, and then you can just about make out the flickering particles on the damaged hulk. It look much better not in crappy youtube resolution.

Right now they all flicker off at a fixed LOD, but I’ll sort that out so it’s less obvious, then I can add them to all of the ships. I’m aiming for a look where people can zoom in during a battle and be impressed with the amount of silly detail I went to in order to make it all look cool.

This is fun bank-holiday-weekedn stuff. Tomorrow it’s back to php and MySQL. bah!

Reflecting beam lasers

My recent design thoughts and today’s tweaks make it clear I needed a way to see visually that lasers were just bouncing off enemy shields and achieving nothing, so I added a sort of ‘bounce’ effect to the lasers (see video below). I didn’t bother doing any fancy maths for the collision reflection, it just skews off at a slightly random angle. Does this look ok? (also there is some quite cool shooting of rockets by a point defence laser going on in the second clip).

Spaceship speed

I’m having balancing issues with some of the existing game mechanics. One of the things that I use to differentiate weapons is their tracking speed. Some smaller weapons track fast but do less damage, and vice versa. Basically the tracking speed is compared to the targets current speed, and this gives some multiplier for the ‘hit chance’.  Obviously big cruisers are slower than small fighters.

So far so lovely.

The problem is that in general, you want your ships to position themselves at a certain optimum range, and pound their enemies from a distance. In the case of the big cruisers, that means move into range, sit there and go zap until you or the enemy dies. The problem is, the minute you sit still, tracking speed becomes irrelevant. This means that when fighting against cruisers, tracking speed is basically no big deal, and the weapon with the highest damage-per-second, range and penetration of armor/shields wins.

The solutions are many and varied:

1) Have an optional ship ai-behavior of ‘keep moving’ where your ship basically spins in circles at a certain range (clunky and difficult to get a reasonable turning circle)

2) Always assume the ship is at max speed for hit purposes (might look silly)

3) Introduce a new mechanic to compensate (maybe ECM resistance?) and ignore tracking speed for weapons aimed at the bigger ships.

4) Just make greater use of balancing the existing mechanics to still make the choices interesting

I’m currently drawn mainly to 3) and 4). Any thoughts?