A lazy day, for a change

June 14th, 2008

Great, I’ve got a completely free weekend with my girlfriend away, perfect chance to get some work done on CITS… but I’m not in the mood, so I’ve only done some minor tidying work (programmers like me love making code pretty) and finished up some bits to do with people falling off the island that I should have done before (they get ‘tidied up’ like the buildings do now). The rest of the day was taken up cleaning my bike, sorting out insurance, calling estate agents and other boring but necessary things like that. Tomorrow will be better, I promise!

Now I’m relaxing with a bottle of Tanglefoot, listening to some Frank Zappa (I’m trying new musics… can be quite good if you listen to the right albums. Lumpy Gravy, Hot Rats and Apostrophe are my favourites so far), and probably playing some more GTA4 and Trackmania.

Note: Trackmania is great with retro red-and-blue 3D glasses. Cheers Joe :)

Cuboid fear

June 8th, 2008

The little cuboid people now have something to fear. If they get hit by a building, they fall off the island to their doom. By “doom” I mean “negative infinity in the Y axis”, and by “fall” I mean “get launched upwards for comedy effect”.

In other news I’ve been out and about in Loughborough looking for a new place to live. Seems like a lovely place, if you ignore the North and the South and the East of it.

People are a lot like cuboids

May 29th, 2008

Well would you look at that. The island seems to have become inhabited by tiny cuboid people, who stick rigidly to its surface and vibrate rapidly for locomotion. What a crazy world we live in.

Next up is better physics integration for people, more interesting behaviour/AI, and a bit more of a gameplay tie-in.

Professional Crastination

May 26th, 2008

Well, I just made myself laugh. I went to see the new Indiana Jones film with my girlfriend today (it was pretty good). We had to get there very early since Odeon’s online booking system broke whilst I was using it (refusing to load any pages at all just after I’d tapped in my credit card details, my favourite kind of broken), so we didn’t have seats reserved.

So we were sat there watching the ads and one came on for the new Mini Clubman - a little ’short’ entitled procrastination. It was this charming hand-drawn animation about a guy wanting to get his ‘things’ done, but who keeps finding other things to do. It ends up with him noticing his chair is squeaky, and going to buy some oil to stop it squeaking and distracting him from doing his things.

I hadn’t thought about it much until a few minutes ago, when I caught myself kneeling by my upside-down deskchair with a can of WD40. I guess it’s made even more ironic by the fact that I’m now writing a blog post about it.

Anyway, progress has been roughly zero these past few weeks, but I have plenty of excuses - getting wrongly sued for copyright infringement and having to write a series of cheeky but serious letters to very non-technical lawyer-types, dealing with a car company that went bust after we handed over Ł8000 of our hard-earned cash then having to travel to somewhere north of Manchester to rough them up, a week-long trip to France, recovering from a dislocated shoulder gained doing something you should just assume is very manly and heroic, and of course major internal deadlines at work. And GTA4.

I shall get back to working on CITS as soon as I’ve reformatted my PC and reinstalled everything - I’m telling myself it’s so I can get the game compiling and running on 64 bit platforms and on Vista, but you and I both know it’s just another bout of severe procrastination.

Cities in the Sky *is* a game

April 24th, 2008

It’s not just an experiment in software engineering, I promise. I’ve done the last of what I needed to do now - finished up unit test integration with a couple of extensions to UnitTest++, re-wrote the build script to allow debug and release builds to be called in the same ant invocation (which has unfortunately shown me just how ugly XML can get when used for conditional logic…), and a load of other minor tweaks and fiddles to get things running as smooth or smoother than they were before in terms of day-to-day development.

I also spent a good long while upgrading this website’s Wordpress installation and playing around with the wp-cache plugin, as I’ve noticed it takes a stupidly long time to load most of the time. This broke everything though so I’ve now uninstalled it. Perhaps I’ll just change hosts once my two year stint with StreamlineNet is up. It took a fair while to do all this since at the same time I was trying to get a local mirror of the site set up on my file server, to allow me to cock around with a local copy and upload changes once I’m happy with them. Again this didn’t work out too well, but since it’s not so important I was clever and gave up.

So, now I’m all set to make some tangible progress with CITS. Trac is telling me people are important. It probably knows best. Then again, it’s telling me I’m 55% done so perhaps it doesn’t.

Tools count as progress too

April 16th, 2008

Okay, so I lied. I haven’t actually done any more on the game, I’ve worked on the build tools and server some more instead. I do have a reason though: the in-house tools we use at work are terrible, and I like to think that if I put together my own stuff in a spiffy enough way we can swap over to doing things my way instead!

Since I’m feeling guilty about not having any new screenshots, here’s one of my Trac roadmap page, showing a lovely progress bar for each version of the game. I shan’t show you the tickets page lest I give away too many tasty secrets!

Here’s a slightly more tasty shot showing my Pulse project overview. This makes me happy. Things to note are that there are lots of green bars (I like green bars), and that the recent builds (tied to checkins, or versions) have numbers of tests next to them, which will be increasing rapidly! You can also spy a couple of commit messages at the bottom, indicating that I have indeed been farting around with build-related stuff recently. There are a few nice graphs showing changing build times, numbers of tests and so on, but two non-game related screenshots are enough for now!

You’ll probably also notice the ‘Deluge’ and ‘Fuppes’ bookmarks in the browser too - I’ve been spending a little time pimping out my file server with some nifty toys. It’s now got bittorrent running as a service, with a web UI, which is very nice. Also I’ve been wanting to stream video to my 360 for a while now, but I don’t want to have a Windows PC turned on solely to grab stuff from the Linux file server and forward it on, so I set up Fuppes to do this. It’s all a bit complicated (as is Deluge, what with compiling from source), but very configurable and after a lot of tweaking does exactly what I want. All in all I’m actually quite liking doing things like this in Linux-land, the way it does a lot of things is very sensible, and I think Windows could learn a lot from it.

Thank you, Internet

March 31st, 2008

Wow, what a great week it’s been for my website! On the 28th of March I had a whopping 7 unique visitors according to good ol’ Google Analytics. Let’s have a look at what people searched for to get here:

  • “Cities in the Sky”. Well, that’s reassuring.
  • “Creating clouds with libnoise”. I only wrote about it once, but still, topical.
  • “Is there a motorway in the sky?”. That’s a bit of a tenuous link. I suppose it’s possible to add motorways into CITS though.
  • “Crap cities”. Thanks google, I’m honoured that you associate CITS with ‘crap cities’.
  • “big hairy cits”. I think we all know what this guy was really searching for. You need to get a girlfriend, or a less disgusting fetish.

The ironic thing is that by posting these search terms on my site I’m only making it more likely that people will arrive here by searching for them. Hooray for positive feedback.

In other news, I haven’t had much time to work on CITS, but I now have Pulse set up and merrily building anything I commit, and I have to say that I’m really quite impressed. I’ve also migrated over to Trac, which is great since I now have a nice little progress bar for the project. Once it reaches the end, out pops a release of the game. You’ll be glad to know that it’s at about 40% :)

Good news for geeks that like sky cities

March 3rd, 2008

So, I’ve done a lot of things since I last wrote here. Here’s a waffly overview:

I’m refactoring like a beast (a beast that’s good at refactoring), and the code is now looking rather spiffy. It builds super-fast too. Though I haven’t that much time available to work on the game, my time at work is helping me spot all sorts of new opportunities to clean things up, and increasing my C++ experience massively. I’m now at a point where I’m actually giving advice to others, and people come to me for my opinions and advice on coding matters. Yay!

A few months back (I probably should have blogged this) I added in a few new input methods just for fun, since tapping an arrow key once per square was getting tedious. It’s now continuous over a grid, which is nice. I tried continuous over a grid where the island spins with the left/right movement of the cursor too, but that just felt weird. I’d like to go back to that some time soon since it means you can use a much lower camera angle and expose more of the beautiful sky, rather than having ugly grey clouds in the background.

I’ve also been getting rather geeky as of late; it all started when I bought a new PC (with the wads of cash I have lying around nowadays) and set up my old one with Ubuntu Linux to use as a server. I first set up SVN, served to the rest of my network via Apache. That was pretty easy, and didn’t really offer much more than I was getting already with a local SVN installation, so I added issue tracking in the form of Trac and Retrospectiva. I’m mostly using Retrospectiva since it’s a bit more simple and pretty, but the installation was a bitch and I’m finding Trac is more customisable to my needs. I’m definately regretting this now, since it seems that Retrospectiva->Trac migration is non-existant. Anyways, this has helped me properly document and catalogue ideas, tasks and so on, which is great. Instead of farting around for ages and ultimately implementing something completely unnecessarily, I can sort by priority and get on with whatever’s most important. If I encounter something whilst coding, I can log it and carry on with what I was doing, rather than going off on a tangent and getting lost as usual.

Next, since I could see where I was heading with all this, I decided to change the build process. I needed something cross-platform, fast, elegant, and able to support what I’m doing fully. I went through absolutely loads of possibilities, which all fell short for one reason or another - it seems that there’s no clear winner when it comes to C++ build systems. Noel Llopis’ articles were of great help in weeding out some otherwise tasty-looking options (SCons for example - my team used this for a university project, but Noel’s articles show it as painfully slow, which I’d agree with). I almost went with Jam, but decided against it as the documentation is rather bad, and it’s completely dead now so there’s no hope of getting any support for it. In the end I chose Apache Ant with the cc task from ant-contrib, which is cross-platform thanks to Java, relatively fast despite this, has plenty of useful features and the possibility to add more via extensions, and has a nice (if very verbose) syntax - XML. I like the idea of using XML to specify the build declaratively, but I find that with a C++ project there are plenty of options that would be much better specified using a proper programming language. For example, the directories where external libraries can be found are different depending on the platform, and the names of those libraries are different depending on whether you’re compiling in debug or release, which can result in a lot of conditional logic, something XML does in a very clunky manner. Anyway, the Ant buildscript is now working, and working well.

The next thing I did was fix things to build CITS on Linux. This turned out to actually be quite straight-forward, even a little enjoyable. I found myself really getting to grips with the command line, so much so that in the end I was working remotely via SSH rather than using Gnome on the server to do things. It’s quite nice that if you discover you don’t have some piece of software required for something that you can just use apt-get and have it in seconds, rather than loading Firefox, finding the project website, downloading it, extracting, installing, configuring and finally getting back to what you were doing beforehand. Also, ./configure, make and make install is more elegant than I’d assumed, and I like the idea of things installing to common locations such as /usr/local/include. Nice. So anyway, I made some minor changes to the code, fiddled around a little with building dependencies (OGRE was a bit of a pain, though building from scratch was *far* quicker than on Windows), and now CITS builds and runs on Linux!

So, what I’m doing now is setting up a continuous integration server in the form of Pulse from Zutubi. It looks to be a very simple, clean, yet fully-featured continuous integration environment, which provides exactly what I need and not a lot more, which is great. Once that’s done the next system-ish thing I’ll be doing is setting up automated testing (both unit and functional tests), hooked into the build and integration systems, and then I’ll have pretty much my ideal setup!

Now, you’ll probably have noticed that this post has been one long geek-fest without any mention of real progress in terms of the game itself. Another thing work has made me realise is what a fool I’ve been so far - since I didn’t have these systems set up to aid me I’ve only been able to see two feet in front of my nose and have been implementing all the unimportant things first. Really I should be tackling the high-risk, high business-value features first, to see whether the game is going to be any fun. As such, the next thing I do won’t be to check out bloom again or add particle effects or revamp the state system, it’ll be to get some people on the island. No more farting around :)

Day 1 of real life! - Tuesday 21st August

January 26th, 2008

We got up at 2pm and I finally had a cup of tea. We filled Ben’s mum in on our trip, then I came home to surprise my Mum.

All in all we had an amazing time. A trip of a lifetime. We had highs and lows, most of which were on the last day! It was a wonderful adventure which shall not be forgotten. I am looking forward to the slide show to tell everyone what happened.

This is the end of our holiday journal! Au revoir, Auf wiedersehen, Ciao and Goodbye!!

Day 30 - Monday 20th August

January 26th, 2008

Well, our holiday has not ended on a high I am afraid to say! We lounged around in bed until 9:30ish as it was still raining and we knew we didn’t have all that far to travel. After getting up and packing our soggy tent away, we were off, only to stop 100m down the main road for Ben to put his rain covers on.

The journey this morning was wet, cold and slow as we were driving cautiously on the slippery roads. We stopped for lunch at a Champion, the inside of which was colder than being outside as they had their air conditioning on full blast!

After eating out sandwiches and some yummy caramel slice things we were on our way again. But not for long; Ben pulled over as his steering felt funny, and we found out he had a flat back tyre! We panicked a bit, not knowing what to do in the middle of nowhere in the drizzle. Then Ben remembered that my Dad kept an emergency tyre kit thingy under sit seat. This pumped foam into the tyre which re-inflated it and glued the hole shut. He definitely had a hole in the tyre as foam came bubbling out of it. We limped into the nearest town only to find the motorbike garage was closed for the holidays! After a quick phone call to Dad to see how far he thought we could drive, we decided to head for the nearest big town – Abbeville. It was 20km away and we stuck to 50km/h so it took a while. When we got there, Ben went into a pharmacy to ask for direction, and we found a garage! To our relief they said they could do it. Unfortunately it cost €195 but we couldn’t go any further and by this time is was 5:30ish so we had it changed.

With the shiny new wheel attached, we got on the non-toll motorway to Calais and arrived at 8ish. We were just looking for somewhere to eat dinner when disaster struck again. I was following Ben around, when he went through what I thought was a red light. I paused and was just about to radio to say what I thought when the crash happened. A car pulled out as his light went green and Ben drove into his bonnet. It was scary to watch, but no-one was hurt. The indicator broke off Ben’s bike but it was already only gaffer taped on. The car didn’t fare so well with a large dent in its bonnet. Luckily the owner of the car was very cool and collected. He phoned his parents who arrived on their motorbike, to advise which forms needed filling out. They spoke good English which was fortunate. We exchanged details then left with me leading as I think the crash had left Ben feeling a bit shaky.

After all this it was getting on for 9:30ish. I lead us around the seedier bits of Calais before finding the main restaurant area. We strolled around looking at the menus before deciding on an Italian place in our price range! We had a really yummy Parma ham starter and 2 cocktails “sans alcohol”. Then Ben had a steak and I had a chicken thing; all very lovely.

By the time we had eaten it was getting close to check in time so we hopped back onto the bikes and did the three minute journey over to the ferry port. We had a queue there as they only had one kiosk open for checking EU passports! Then we were into lane 86 behind a massive American house thing. It was a cold wait as we had no-where to shelter so we sat on the tarmac in the dark!

We were loaded first onto the ferry. I was much happier this time as we left the bikes on the side stands and strapped down to the boggles.

The ferry journey was brief and choppy. I felt sad as we watched the lights of France fade away; our holiday was ending.

The journey from Dover to Fareham was cold, wet and dark. I didn’t feel sleepy as I needed all my wits about me! It took 3 hours, and we were back at Ben’s at 4am. We hastily unloaded and dumped everything inside. Then, what luxury! We crawled into an already made-up bed which was so comfortable and warm, and were asleep within seconds.