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

Have a gift

I started redoing the code for gifts in Kudos 2 today. The original game had a simpleĀ  single ‘gift’ which you could only buy if you had a ‘romantic partner‘, and went straight to them. There was some pretty cool code regarding ‘gift cynicism’ in there, but to be honest it was put into a post-release patch and not properly thought through. I’ve set aside tommorow to code a better, slightly deeper system for Kudos 2. A day doesn’t sound long, but remember I do everything, and there are a lot of areas to polish and get finished.

My first thought is whether gifts should still be just romantic. Shouldn’t I be able to buy a gift for a friend? Maybe… but perhaps code is needed to handle how this is a different matter to romance. Would it be fair to suggest that friends feel more uncomfortable getting gifts, than romantic partners would? If You are my “significant other “and I buy you a box of chocs, thats cool, but if you are my pal and I buy you an ipod, would you not think it a bit weird? maybe feel like I’m showing off, or that I must want something. I think there is a lot of complex contextual stuff needed to handle how friends react to being given gifts. Some of this is already in Kudos (friends track how in debt they are to you in terms of offers to pay for entertainment), but it would still require a lot of extra complexity. Gifts also bring up the possibility of tracking friends and partners birthdays, and thus birthday social invites etc etc.

At the very least, the new system will have multiple gifts, at different price points, and let you buy them in advance and hand them to people later, maybe just after you turned down their invite to a romantic candlelit dinner so you could spend the night reading a book on software engineering. This sounds like it’s autobiographical now doesn’t it?

In unrelated news, I’m reading a book on ‘supercrunching‘ and andrew marrs ‘history of britain’. both are good reads. My knowledge of the Korean war, or the Attlee government was minimal. I didn’t even realize Churchill was voted out, then in again. I guess I was good at maths and crap at history as a kid…

Lack of Interaction

The internet happened, and in some ways, nobody noticed. We get very excited about things like YouTube and Facebook, but 99% of the time 99% of the opportunity for interaction afforded by this new medium is wasted.

I just watched an episode of Doctor Who on the BBC. My interaction with the content producers is amazingly limited. Did I like the show? Did I find it boring? was the music annoying? did the doctor overact? did it drag a bit? I have my personal answers to all of this, and yet I can’t get them to the BBC with a few mouse clicks. Why not?

Why don’t TV shows like doctor who allow you to REALLY make a total mashup or re-edit of the entire series? Why not ship DVDs of the series containing every single shot that was filmed. Not just what got past the editors, but the deleted scenes, extra takes, the raw studio footage without the CGI… Ship those CGI models too. If a bunch of fanboy geeks want to take the model of a sontaran spaceship and extend that scene, adding their own extra SFX, why not let them? Ditto the music, the sound effects…

Dalek

Why doesn’t my fave band (Dream Theater) release their next album with every single track split apart into wavs for me to recombine and mix myself? Maybe I want the guitar louder, maybe I hate that intro and want to cut out the drum solo. Why not let me?

Games allow modding a lot more than these other media, but in terms of interaction with the content creators, they are still limited. How many games actually ask you what you thought of each level? outside of beta testing. Games are especially well placed to solicit user feedback and improvements, because we can change our product instantly. If 74.2% of the first 500 people to play Kudos 2 think that commuting is too expensive, I can patch it immediately, and the next person to buy it is already getting a superior product.

You have to be careful here, relying on the people who are most vocal about a product to help you tweak it’s design can result in pandering to that self-selecting niche with strong views. The aim should be to massively lower the barrier to entry for giving content feedback to the creators. Bands trying out new songs live can tell instantly what the crowd thought. Game developers trying out new mechanics are still relying on very crude methods (reading forums and counting sales) to get feedback on their new ideas. We can do better than that. How would you feel if a game popped up a question at he end of playing asking you to rate that play session (and insist on pinging that data anonymously to the web)?

Sequelitis

I’m currently working on Kudos 2. It’s a sequel to my earlier game, not amazingly called Kudos. Before this, I did Democracy 2, the same applies. One the one hand, I’m a bit worried that people might think I keep churning out the same games (hopefully not, as the sequels add considerably to the originals), and I’m also very slightly worried that maybe these 2 games are my ‘big ideas’ which I won’t beat. (I have a ton of other ideas, but ideas are not completed, working fun games).

On the other hand, Kudos was a great idea that could have been done a LOT better, just as Democracy was. The really scary thing, is that reading several books recently has got me thinking about a potential Democracy 3, and how THIS time, I could really do the concept justice and kick major ass with it.

I don’t know what I will do next, and I’d like to think I would try something new, but it’s far too early to tell. When I finished D2, I started doing a totally new game, two of them in fact, but neither game idea really seemed to ‘gel’ in the way a sequel to kudos did, so they remain very empty basic frameworks for now.

There are worse things to do with your life than constantly work on a series of games that are popular, sell, and people enjoy. Civilization has made it to 4 games. There are 3 age of empires (and 3 expansions), and Sim City has already made it to SC4.

I’d just like to make as many different games as I can.

I’ve been away on holiday, only got back today.

Reducing OverDraw

When you make 2D, rather than 3D games, the two things that can slow your game down on older video cards (forgetting CPU limitations for now) are State Changes and Overdraw. State Changes are basically texture changes (drawing a different image). Doing this too often can really slow down older cards. Overdraw is the problem I was looking at yesterday on Kudos 2.

Kudos 2 is fixed at 1024 by 768 res. thats roughly 768,000 pixels, in 32 bit color, or just over 3MB to draw the whole screen. Because of the way video cards work, you have a front buffer, a backbuffer and the source art itself, so this equates to around 9MB in practice. Given that even the most wonky video cards have 32MB of RAM, this is no big deal, but this is assuming you just load up a 1024 x 768 texture and copy it to the screen.

The first problem is you can’t have a 1024 by 768 texture. DirectX prefers things to be ‘power of 2’ in each dimension, so you have to have 1024 by 1024, and as a worst case, waste a lot of space anyway. That’s only a minor problem though. The real problem is what happens if we end up drawing the same pixel too many times a frame. This is called overdraw, and its quite easy to let it slow down your game.

The best way to see how bad overdraw can be is to code a version of the game that draws every image as a fairly transparent white box. See below:

That’s kudos 2, AFTER I optimised some of it. The lighter the colour, the more times that same pixel is being redrawn. Sometimes, this is legit, because I am blending two images together, so you can’t just draw the top pixel, but in the majority of cases, it’s just inefficient. You can tell that one of the worst areas of overdraw (apart from the avatar, which is pretty inevitable) is the dialog boxes. These are a pain.

My dialog boxes are drawn on top of an existing background, theoretically giving me the opportunity to ‘punch a hole’ in the background and save some rendering. The dialog itself then has a ‘client area’ drawn using an additional image, which wastes space behind it. Any buttons on the dialog then add a third level of overdraw, and of course the text, or button icons are a fourth layer on top of that. If a tooltip pops up, we are at level five, and six for the tooltip text, seven if the cursor is above that! :D.

For video cards like mine, with an insane ‘fill-rate‘, it’s pretty irrelevant (The game runs at around 200 FPS right now), but I’m determined to make Kudos 2 easily usable on a low spec laptop with an Intel video card. I don’t lose *that* many sales due to poor performance with my existing games, but I’ve never made a game that looks casual enough for many owners of low spec PC’s to play before.

A Short History Of Positech

Ok, as it’s sort of a new blog, lets start with an introduction explaining how the hell I got to be doing this…

I first started coding in 1981 at age 11 on a Sinclair ZX81 with 1k of RAM. There was a long break after that when I went to university (LSE : Economics) and tried to become a rock star, then gave up and decided to work with computers. I had no degree in CS or programming experience so had to get an IT job instead (that’s how I ended up working in the city with trading software). I did that for 5 years, and while I was there, I started writing games and selling them online through my IT services company name (That’s why Positech is such a dire name, it’s an off-the-shelf company name). After a while, I tried to do it fulltime (around starship tycoon time) but failed to make enough money and desperately needed a job.
Because I had written about 5 finished games by then (various genres, and a bit amateurish), it was very easy to get interviews at games companies. I worked at Kuju for one day before realising it was NOT for me, and eventually took a job at Elixir Studios, where I did some brief work on Republic (yes! the infinite poly engine!), but mostly on an xbox launch title which we worked on for a year before they canned it. Bah.

From there, I had a brief stint at home again (wrote planetary defence) and then got a job at Lionhead. I was the AI guy (as well as various other stuff, save/load, optimising, copy-protection, GUI stuff etc). To anyone still at Lionhead reading this, the donuts was my idea. I apologise. Also, that cheap toaster is mine, be kind to it. I worked for 3 years on ‘The Movies’, but left just before it shipped. Ever since then I have been working for myself at home full-time. In the last year, I actually finally got around to converting a bedroom into an office so it seems much more professional now.

Some people who read the blog know me from the indie development scene, where I’ve been hanging around for a very long time. Some are people who enjoy my games, and do a fair bit of modding to them (I love making games moddable). And some are people who have read articles by me on the web, or ranted with or against me in various forums. Some might remember me as ‘the helpful one’ on the Lionhead forums, where I was often told off for talking openly about the game. It’s so cool to be able to say anything I want about the games I’m designing, even to post source code when it helps people.

I’ve worked for two people who are very good at game design and very good at PR. Hopefully, some of it rubbed off.

Anyway, that’s who the hell I am. Welcome!