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

Email day

I made some silly config mistakes today and sent an email to some people who I wasn’t intending to email. There is no ‘harm’ done, but some people who bought Democracy and Democracy 2 got an email from me on the basis of them *not* having bought the sequel.

I screwed up.

Nobody has really complained, which is great, because the minute I realized what had happened, I worried I had committed email sin by effectively spamming. I guess I just have to put it down to experience.

Like a lot of developers, I don’t handle the sending of emails myself. You might wonder why not, and ironically the answer is spam. If you try and send more than 100 or so emails, many ISP’s will block your ability to send emails for a few hours or more. This is a GOOD idea, because it prevents you unknowingly being part of a spammers botnet. It’s also good, because there is no chance of any paranoid, badly configured ISP’s anywhere assuming you are a spammer and blacklisting you (nightmare!).

I use this company:

YMLP

To send my emails. It’s not free, but it’s a worthy investment. I don’t mind paying to send an email to a bunch of people, because it makes you think about the content. I read some wise words from a respected marketing guru, saying that you should only email someone from your business if you would still have sent the email if it had cost you $0.42 (per recipient). Despite my balls up today, this still holds. The number of companies that send me pie-in-the-sky bullshit every week on the sad misunderstanding that I am interested in their megabucks 3D engines, are recruiting Animators, want a job in IT support etc etc, is sad proof that *most* businesses who send email (not spam, but ‘targeted’ emails) wouldn’t send most of it even if it cost $0.01.

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.