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

Gratuitous Deployment Interface

I’ve just made a change to the games deployment-screen UI, so I thought I might as well share it’s current look: (click to enlarge)

I used to have an icon ‘picker’ on the right hand side when you loaded an un-deployed fleet, and you had to drag and drop the ships into position on the left hand side. This was a bodge and tedious with huge fleets and big monitors.

Now the game will auto-deploy the fleet as you load it, and then you can slide them around and fine tune it. This is the same sort of system used by the Total War games, and I think it works much better. I’ve spent a few days working on some heavy duty re-organising of code for it to render faster, and things are much much more efficient now. Even with bazillions fo ships and things going zap everywhere, it seems to run pretty well. My next big challenge is getting it to run on my laptop…

Any thoughts on the design?

Back to optimising

So the fullscreen / windowed toggling is still shaky, but the game now runs in both windows and fullscreen and in pretty much any resolution, including my own 1920×1200 res. Listening to music from star wars whilst testing the game fullscreen at that res with a big battle is a flipping joy.

I’m in ‘lets minimise the number of textures used’ mode. Even at the start of a battle before much fighting, I have this, and it’s not pretty. (click to enlarge).

The problem is the running lights use a different ‘blend mode’ so putting them in the same texture as the ship saves me nothing :(. Lots to think about here. SetTexture() can be pretty slow, and you ideally don’t want to be doing hundreds of them every frame. Of course, in games programming, everything is a compromise. The good news is I’m only using up 70% of the CPU to do this stuff, given a minimum 60 FPS.

Insane days work just to swap screen res :D

Today, I was awake at 6am as it was holiday morning. Not for me, I’m staying here, but it means I was awake at 6am, and naturally, ended up programming by 7.30am.

Sooo… I thought I’d get the screen res code done today, and here it is at 11.55PM and it’s still not 100% what it should be. I’ve stopped for food twice, and didn’t linger over it. Bah.

Now granted, I spent maybe two hours dealing with the upcoming German translation of Democracy 2, but the rest of the time I’ve had my head buried in the directx documentation trying to find out just how the hell it’s supposed to handle a screen res change under directx9. I finally got there, and I’m still ironing out the bugs in certain circumstances, but my main objective now at least looks doable, which was to retain the feature all my games have of ‘in-game’ resolution toggling.

I HATE it when games ship with a separate ‘launcher’ app that you use to set the screen res. It’s just so fiddly. I much prefer being able to fiddle with such things, especially windowed / fullscreen toggling ‘on the fly’. I doubt it will be possible mid-battle, but at least it will be a part of the main app itself. Plus it makes it trivial for me to test that the GUI works in all resolutions. 768 really pushes it height wise, but I’ll sort it.

Today was not fun, it took longer than it should had, and it was seriously frustrating and involved. The idiot who knocked on my door to try and doorstep-sell me energy supplies got told where he could shove his special offer :D

changes to ship design system

Today I got totally distracted and put in 90% of a system (I’ll finish it tomorrow) where not all slots will take all modules. Most sci-fi games with ship design adopt this system, and I think it’s a good idea. Eve has (at it’s most basic) three different categories, low mid and high. I’ve decided to go with a much more basic two-stage system where you have turrets and standard modules. This means that a ship with 10 slots (like a frigate) will have maybe 3-5 turrets. You will be free to put anything in a turret slot, but weapons can *only* go in turret slots.

I also beefed up my crappy hacky editor so I can easily designate which is which.

 In gameplay terms, this will allow for greater distinction between ship hulls. Some hulls will have a greater proprtion of their modules as turrets than others. You might use these for lots of small weapons like point defense lasers or  anti-fighter weapons. The other ships will lend themselves to small numbers of big beam lasers.

All good fun :D Time for a bottle of wine and the apprentice final. I think yasmina will win. Kate is too safe and steady and ‘sir’ alan is more like yasmina in personality terms.

I wouldnt employ her though. She clearly has no business sense. yasmina.com is not even registered, despite her currently being the most famous yasmina on the net. Someone else even got her full name domain: http://yasminasiadatan.com/

explosions, texture swaps, allsorts…

I spent part of today adding new explosion effects to the game. Until now, all my particles have had random rotation. This makes them look natural, but for some explosion effects you want the particles to be ‘stretched’ and thus for them to be angled in the direction they face. Anyway, that’s in and looking good.

Also today I added some basic physics to debris so that when there is a big white explosive flash, it’s applied as a force to the debris which makes the explosion seem more 3D and impressive.

I’ve also been thinking about techniques to reduce the number of texture-swaps per frame, which is currently scarily high in some cases. I can’t easily use z-buffers for the game because the huge amount of alpha-blending that I do. (I tried it, and its slower). One thing I’m considering is more use of (manually assembled) texture atlases, another is to make greater use of concurrency by scheduling some tasks for processing by the CPU while the GPU is busy swapping textures.

I havent implemented resolution changing yet, but I’ll be taking everyone’s suggestions for doing so on-board on monday when I do it. I suspect I’ll display all options above a certain minimum height.