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

Sim City 4 rekindles my inner stats geek

I’ve got totally addicted to Sim City 4. The new version will have to be something very special to make me prefer it to this classic. I enjoyed it thoroughly upon release, but have recently rediscovered it’s charms. Weirdly, it’s performance on my PC is not great. I strongly suspect that this is because it is a game running on an assumption of single-core PC’s, in a single thread, or maybe running on an assumption of low polygon-throughput, given it’s interesting approach to hybrid 3D-2Dness. I would truly love to wade through it’s source code.


One of the things I find most interesting about SC4 is the extent to which it is sandbox and freeform driven. The player is given a toolkit for city building and left to get on with it. It really is a (pleasant) throwback to ‘make your own fun’ which I find thoroughly refreshing after playing so many modern games, which amount to a checklist of ordered tasks, and a booming voice saying ‘hit this key’ ‘now hit that key’ ‘well done, have 1,000 gold stars for hitting the key we just told you to hit’.

I hate that.

Sim City 4 has no achievements or high scores, or todo lists or much in the way of targets or quests, and I find myself remarkably capable of setting my own. My first city has floundered a bit financially due to my insistence on building an entire metropolis powered by wind turbines. (Annoyingly there are no economies of scale with them :(). My second city is achieving an almost OCD level of sadness with it’s ordered grid system and widespread use of monorails. I didn’t need a ‘wind energy badge’ or a ‘monorail achievement’ to encourage me to play or have fun in this way.

It’s also helping me to understand how some players get REALLY into optimizing their fleets and ship designs in Gratuitous Space Battles. You have no idea how much bulldozing and re-designing I’ve carried out to get the optimum layout for my monorail system :D

Stuck in a world of legacy code

I use the odd bit of code that has char* in it. There I’ve said it. It feels like a big confession. I bet some programmers just sprayed their coffee everywhere. I’m sorry. They say the first step is admitting that you have a problem.

I’m a very very productive game developer. I churn out a lot of very very big and ambitious games. One of the ways I manage that is that I don’t change my ways unless I can make a really good argument for doing so. I never learned what on earth .Net was, no I don’t mind it’s passing. I don’t really know C#. I have no idea what design patterns exist other than singleton. I have no idea what a UML diagram is (is that even a thing? I don’t know…)

You have no idea what a huge big deal it was for me to switch from directx7 to directx9. That took some doing*, and it’s why I still use DX, not OpenGL (which would make apple mac ports far easier and cheaper).

While I’m in confession mode, here are a few other howlers you might be amused by:

  • I manually type out for() loops without using for_each()
  • I use FILE* not the stream stuff
  • I use my own GUI library, and Input code, not third party stuff. In fact I wrote my own hash table code too. The only stuff I rely on is STL, and only partially use std::string

Scary huh?

Why am I such a luddite? Well it comes down to time. If I had regular bugs that I could attribute to passing around char* now and then rather than a std::string, then things would be different, but I know all the functions that handle chars better than I know STL, so I code much faster that way. I have a slight niggling doubt that for_each() is as fast as it should be. I can’t remember the iostream syntax, so I use FILE*, because frankly my file handling code was written years ago and still works fine, so why change?

I see a lot of coders jump on every code bandwagon, and learn new stuff all the time. They are constantly rewriting their whole engine, and constantly going back and changing the code they wrote a month ago. They rarely ship games, and very rarely ship large ones. To me, it always makes sense to make occasional big jumps, rather than constantly fight to keep up with the latest stuff. I have no idea what was in Directx8, it passed me by totally. I’ll maybe move to directx12 (more likely opengl).

It may make me seem old fashioned, but it’s incredibly productive.

*it’s not learning the API, but building a bug-free FAST engine that correctly encapsulates the API that takes time.

The pre-holiday crush

Wow there is a lot going on. Redshirt, the game I’m publishing but developed by a different company, is heading onwards, with some final art in place here and there (hurrah!) I am working today on the trailer for the ‘outcasts’ expansion for Gratuitous Space Battles, and also grabbing the opportunity now and then to work on my next game.

Between all this, somehow I really badly hurt my shoulder, not by doing anything manly like archery or log-splitting (I am SO outdoorsy, I am), but by painting a ceiling. How annoying.

For a while i had a single sentence written in huge letters on the chalkboard behind my office chair which said


Because that makes a HUGE difference to my productivity and it’s a lesson I keep forgetting. I have taken to using google calendar to set aside some days to work on some projects, and try heavily not to be distracted by other stuff, which rarely works. Normally, I wouldn’t be too bothered, it’s nearly Christmas! there are presents to wrap and mince pies to eat etc, but my calendar AFTER Christmas looks like I’m in charge of the Olympics, or some-such, with a huge crush of things all about to hit my desk all at once. I need to get ahead of myself a bit now so I don’t get crushed then.

As a result of all this, I have not been gaming as much as I would like. I’ve totally changed my Battlefield 3 strategy to be playing only in Rush games, rather than conquest. I also eagerly await the opportunity to buy the aftermath DLC, despite me not owning the ‘premium’ membership, which I’m not really a big fan of. Oh, and the next two days are likely to be interrupted by flooring guys coming in and replacing the attic floor, which isn’t likely to result in long periods of uninterrupted programming.


Stock Market Fun

As a hobby, i invest some money on the UK stock market. My interest comes from when I used to work up there for datastream/ICV. Plus it’s a strategy game with spreadsheets, why wouldn’t I love it?

I recently managed to offload a share I’d been sitting on for ages: Renishaw. (RSW). I bought in July 2011 and sold this morning for an (eventual) 11% profit. Not bad, but I’m clearly not warren buffet. Possibly my best ever investment was Autonomy, which I held for a month then sold for a 47% profit. Oh yeah! I also did very well out of admiral (ADM) at 36% and ARM at 7%, 6% then 7% again (bought and sold 3 times). In some ways my most mediocre trade was Aggrekko at 0.4% but that was over 5 hours, so I’m not complaining :D. I can’t be too smug about admiral, as I’m currently holding them at a huge loss and twiddling thumbs hoping to get it back some time… I’m also annoyed at Domino printing, at to some extent Dunelm, which has been a multi-month ‘quick-trade’ opportunity gone wrong :D

Any other share dealers here? Anyone play for fun with one of the virtual sites that lets you practice?  What are your tips / strategies? I’m always wary of losing too much to fees so try to own a few shares at high amounts rather than spreading too thin.

ironically easy to ‘game’ tax breaks

Just reading here:

And considering how it would apply to my game Democracy 2…

Up to 4 points depending on the percentage of the video game that is set in the following locations

ok…how? how are we allocating percentages? What if there are 4 missions, and 1 is the tutorial mission which is 1/10th the size of the others? is that 25% of the setting? or less? How do we decide how big a level is anyway? by size? What if one level is a huge 16km square empty room with a union jack and the word ‘tax breaks’ written on the floor, and an arrow pointing to the door to the next level. does that count?

set in the United Kingdom or another EEA state

when? Now? how about during medieval times? or how about in the year 3000, with jet packs and robots and laser guns?

if there are more than three characters depicted in the video game, 4 points if two or three of the three lead characters are from the United Kingdom or another EEA state or from an undetermined location

What? I hardly know where to begin. If someone has an American accent but we don’t say where he is from, can we say he is from the UK? What if the game is set in an alternate history where Nazis have occupied London, are the Nazis from the UK? no? what about the Normans? how long ago must a culture have conquered the UK for it’s descendants to qualify? What is the definition of ‘lead’ characters? What if (like Democracy 2) the game has no characters, but has profile pictures of typical citizens? How do we decide which of them are lead? What if the game contains sentient robots, are they characters?

up to 4 points depending on the percentage of the original dialogue that is recorded in the English language or in a recognised regional or minority language as follows

What if the entire recorded dialogue for the game is one sentence, a strong American accent saying ‘tax breaks’. American accent, but English language. Do I still get my points there? If I was planning on zero recorded dialog, can i include some just to get the points? How vital is it that the player hears the dialogue? can it be bound to a cheat code? or only played over the end game credits?

It also doesn’t say if I’m allowed to be lead designer, programmer, composer and scriptwriter all by myself and get points for all of them.

This is a mess, as you would expect. Bureaucrats should no more be evaluating video games than they should be picking hit pop songs. This nonsense is entirely due to silly EU laws which conveniently forget the fact that the majority of video games are mad in countries where their laws do not apply. Absolutely bonkers.

Also, I haven’t even touched on engine development. What if you work on code that is enhancing the engine you will use for your next game. Is that work covered? What about time spent giving interviews? is that time covered?

Totally unworkable.