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

Today’s worklog

8.00AM: Clement Freud has died. He gave me an award at my secondary school many years ago. He was very short. Also he was very funny

9.10AM: All the business email stuff is dealt with, time to start work on putting one of the new ships into the game, one I have declared to be the ‘Imperial Centurion Cruiser’. It looks badass

9.50AM: Most of the graphical stuff is done and dusted. Now I just need to add in the data defining this ships damage textures and module slots, and get it tested and in game

10.30AM: The Centurion cruiser is done and looks great in game. Took a screenshot to give feedback to the artist. Everything seems to look ok, so I don’t need to go back over any artwork. Plus the multiple beam lasers look fantastic. I’m pleased

11.10AM: There is definitely a shutdown problem with the game. Dev Studio churns for ages. Must be a huge and new memory leak somewhere. Damn.

11.50AM: It’s definitely a bug with the main battle screen. But where? The sound? graphics? AI?

12.00AM: Interrupted by door to door salesman, thus killing my efficiency. Time to release the hounds.

12.20PM: I suspect this isn’t a memory leak, but just my debug output backing up bigtime because every time I create a blast glare effect (also used for non-penetrating shield impacts), I tell the debugger about the texture I used. Clearly this code is inefficient anyway, because with dozens of the smaller glares I need to have that texture cached, not be looked up so often. The game now shuts down fine in debug, but I need to fix the underlying inefficiency. In fact, it’s worse than I thought. I need a newer, efficient system for shield impacts

12.35PM: Works fine but forgot the original texture was a quadrant and this one needs not to be. redoing it… Also just spotted a graphics glitch with the con  trails pulsing on and off.

12.45PM: Having crash issues when trying to do some profiling, Grrrr. I will mull it over some wii-jogging and a cup of tea.

1.30PM: Still can’t get profiler to not crash. Time for tea.

2.20PM: it now crashes somewhere else. progress?

2.50PM: Sod it, I have a workaround, and bugs to fix. some lights in the wrong places, and an idea on how to make drawing running lights faster if they are zoomed out. (check rendered size > 1 pixel BEFORE checking if onscreen, which takes longer).

3.30PM: The debug copy no longer links. some obscure ANNOYING linker error to do with debug and not debug Microsoft crap. Very tedious and I’m not getting actual game stuff done :(

4.14PM: Think it’s fixed, plus I tracked down the flashing con trials bug. It was me not setting the render mode correctly before I drew them, and them getting drawn early if they filled up a vertex buffer before I was ready to render them all. Good old Nvdia perfHUD was my saviour. Now back to coding fun stuff.

6.25PM: Finally got the linking stuff fixed by a total wipe and rebuild. Grrrr. Next on the agenda is adding some better parallax effects, which are a nightmare with 2D + zoom + variable screen res and scrolling.

Initial thoughts on game AI

I’ve thought about the AI for Gratuitous Space Battles a lot. I have a lot of ideas, some of which I’ll sketch out, and some I’m keeping secret for now.

When I say ‘AI’ I’m being pretty nebulous. I don’t use AI in the trad comp-science limited sense of it. I’m talking about the whole matter of computer-controlled opponents. Who they are, how they are selected etc. Because GSB is a ‘hands-off’ battle game (for now), there is an element of determinism about how the battles work. In other words, if you design a fleet, in theory the AI can design one that it is assured of kicking your ass with.

There are many ways it could do this. The most obvious bruet force method is to randomly design fleets and pick the one that beats yours. Another would be to have some initial ‘seed’ fleets and do a genetic mutation – evolution algorithm to deduce the ultimate fleet against yours.

However, while I want a challenge, I don’t want you to be beaten every time. Plus, the ‘problem-space’ is colossal, way beyond chess, because there are maybe 40 hull designs, maybe 100 ship modules, near infinite combinations of ships and modules, and that’s before ship placement or ship-behavior/instructions. It’s not possible for the AI to beat your fleet using deep-blue style iteration of possibilities.

So there is a good chance the final AI will be some mixture of pre-designed (by me) AI fleets, combiend with an element of letting the AI battle several thousand slightly randomly mutated sample player fleets, and improving on my initial design.

I’m sure everyone has lots of ideas of where else to go with this, such as machine learning, copying player fleets etc. Needless to say, I’m mulling over them all :D

Aiming at laptops

One of the big problems with Kudos and Democracy (my two best selling games so far) is that they are basically fixed resolution games. Democracy 1 supported two resolutions, and you can always hack them by fiddling with config files, but basically those games assumed a certain size screen and didn’t scale up or down.

With Gratuitous Space Battles, I’m aiming to support both people with huge monitors, and hopefully people with small laptops, running 600 pixel high screens.

That will mean some major fiddling with the ship and fleet design screens, and the pre-battle deployment screen too. The big probloem will be those 600 pixels. Of course, I could do some super-dynamic scaling thing, but it’s not nice reading text designed for 1900×1200 on a 600 pixel height laptop.

What I probably need is a number of different windowed layouts for different size monitors. The battle screen will be easy, because it already happily scales without any issues.

So if the fixed resolutions of Democracy 2 and Kudos 2 bugged you, don’t worry, I’m fixing it this time :D

BTW, I released a free add-on mini-patch to Democracy which adds a new dilemma for banking bonuses:

Turrets

I’ve finally got code written that supports the same ship module having different sprites on different spaceships. What this means is that the same weapon (fast pulse laser) can look different on a rebel ship to a federation ship, so hopefully they don’t ever look too out of place.

This works fine, but right now I’m assuming I’m using the same hi-res 3d image for the weapon on the ship design screen, regardless of which ‘race’ the ship hull is from. I have several ways to fix this, none of which are ideal…

I could have different 3d renders for each turret on the ship design screen, depending on the race of the ship hull. This is a lot of work, and also might be confusing. Shouldn’t the player be able to recognise a pulse laser icon regardless what race he plays?

I could have a generic 3d image for the design screen, but represent it differently on each ship, which is easier, but it means breaking the visual connection between the 3d render and the 2d sprite which might be confusing.

I could scrap the idea of the turrets representing individual variations, and just have 3 or 4 turrets for the battle screen, and tons of different 3d ones for the design screen.

I really like the idea that placing a turret in the design screen reflects exactly what the ship will look like in battle. However, it doesn’t really matter in gameplay terms, and ease of use on the design screen is the most important thing. Maybe I keep all the data the same, but have different sprites and 3d renders depending on the selected ship hull. In any case, there is tons of 3d modelling, rendering and data entry to do…

Sex discrimination and who works on games

My eye was drawn to this story, because it refers to where I used to work. Short summary is that a game developer is claiming compensation for discrimination at work for being gay. I won’t go into the actual case, because I don’t know the guy and haven’t worked there for ages, so it’s not fair to comment. However,I would like to extend the issue it covers to a wider call for action:

The games industry needs to grow up and stop acting like kids.

We act all high and mighty and start huffing and puffing the minute anyone suggests that ‘video games are for kids’, whilst at the same time doing very very little to change that perception. With a few very notable examples (the nintendo wii, games like Civ and some of the more complex sims) games ARE aimed at children, either deliberately, or aimed at the ‘inner child’.

It may be true that most people playing GTA and Call of Duty and World Of Warcraft are NOT 13 year old boys, but if so, that’s a triumph against the odds. Everything about mainstream gaming seems to aim at that demographic. Think about how to make a product attractive to a 13 year old boy, and how many games incorporate this stuff:

  • Guns (enough said…)
  • Big Tits (“phwoarr! etc”)
  • Scoring points (“I’m better than you!”
  • Achievements (“like gold stars on a school report”)
  • Bragging rights and taunts (“You suck!)

Outside of video gaming, most of us grow out of obsessions with these. (well most of them..ahem). Of course, you can make adult-aimed (non-sexual) games that contain guns too, but a hell of a lot of games just use guns as pure gun porn. Show me a game that contains a female elf that looks like anything but a supermodel. Show me a soldier in a game that doesn’t have biceps like zeppelins. They are few and far between. Alyx in HL2 is a wonderful exception to all this, but she is the exception, not the rule.

Anyway, my reasoning here is that these sort of games are what we make, because that’s the kind of people we are. Game developers are overwhelming male, overwhelming white (scarily so), overwhelmingly middle class, and overwhelmingly under 40. I have no idea what proportion are straight, but given the amount of artists that spend all day modelling buxom elves, I assume 99%. (Given the amount of time artists spend modelling men’s biceps and chests, I assume 99% of the 99% are just in denial :D)

I’m 40 this year. I’ll still be making games, but I’ll be unusually old for a developer then.  Normally by this age you ahve left and got a real job, or you run a big studio and employ the same young white rich kids to do the work.

What the games industry needs, in order to grow up, and to grow in size, is more women, more black and asian people, more gay and lesbian developers, and people from different backgrounds. And that absolutely means that it needs to crush with huge force, ANY discrimination in the workplace.

Maxis apparently have more women that usual for a game dev, no surprise they are doing well.

Now before you slag me in the comments for doing a game called ‘gratuitous space battles‘, take note that I entirely include myself in this. I am white, under 40, came from a borderline working/middle class home, straight and male. (plus surely I get points for doing intellectual games?) I like buxom elves and spaceships exploding too. This is why people who are not like me should get into the industry. Save us from ourselves.