Flash-tastic

November 8th, 2008

Well, I sorted out a new Simul license so the sky is back to normal (and so I can post screenshots again!). I’ve also done a load more work on the UI. It’s still not totally functional, but the high scores screen displays high scores and the in-game UI shows points and tilt like it did before, so I’m back to normal functionality at least. I also did some clever-but-not-really things like learning a bit of Actionscript, and scaling the Flash output based on viewport resolution.

The high scores screen you see is the result of several hours of tweaking and fiddling. I’m fed up with temporary graphics so I thought I’d try to create something a bit more permanent. It turns out I’m not so good at this though - it looks a little boring to me. It’s not abysmal, but it’s not good either. There’s a chap at work who’s marvellous when it comes to interface graphics, maybe I’ll ask him to sketch something up for me, so I can at least get a nice theme and colour scheme going.

I’ll probably improve the UI functionality next, though there’s another little side-project I’ve been dying to get my teeth into for the past few weeks, so we shall see… yes, we shall see…

Into my face

October 28th, 2008

I had a little time to play with Hikari, a UI library for Ogre that effectively wraps a Flash control and adds some C++ interoperability. This means that I can make a little Flash application and have it run in-game as the user interface, which is much more flexible, easy to modify and generally nice than the Ogre overlay system I’m using at the moment.

I’ve made a Flash file for the menu, in-game UI and high-scores table and they’re being displayed in-game instead of the ugly temporary overlay graphics I had before (that you never did and never will see!). They’re not functional yet since I haven’t really had the time to learn Flash, and the input code I wrote doesn’t keep track of cursor position yet which would make buttons useless. That’s next on the agenda though.

I shan’t give you a screenshot since I still haven’t sorted out a Simul Weather license, so everything looks very ugly!

Typical “I’m not dead” post

October 20th, 2008

Honestly, I’m not dead, I’m just being quiet. I haven’t posted for a while because the Simul Weather evaluation ran out so I haven’t got anything pretty to post screenshots of!

I just thought I’d update you with some of the goings on, however uninteresting they may be to anyone but me.

Game-wise, I’ve been fixing up some bugs that have been around for a while. I finally got annoyed by them enough to kill them off. For example, previously you could only play the game once; if you chose ‘play’ from the menu a second time the game would crash. That’s because Ogre rather annoyingly requires you to give a unique string identifier to everything, and throws a wobbly if you use the same name twice. There are no other options. So I implemented the simplest and most effective solution I could think of: using the ‘this’ pointer converted to a string as the name.

Programming-wise I’ve been improving the quality of the code (I just got Effective C++ by Scott Meyers and it looks like there are one or two things I didn’t know!). I’ve also been writing some more unit tests, which has been surprisingly fun. I like seeing the number of tests slowly rising in Pulse. It’s like a little safety-ometer.

System-wise I’ve been investigating another build tool (partly because I need to for work, partly because I’m still unsatisfied with every other tool out there). I’ve always known Jam has been a good tool, but haven’t tried it myself since I know it’s unsupported and out-of-date. Recently though there was a discussion on the sweng-gamedev mailing list about resurrecting Jam, and one kind soul, Joshua Jensen, has started maintaining a modified version of Jam called JamPlus. I’ve tried it out a little and found it to be blazingly fast, and it scales excellently with the number of processors you have, which beats Visual Studio’s project-level parallelism hands-down. I’ll be seeing if I can write some Jam scripts for CITS soon.

Since JamPlus uses git for source control, I’ve also been investigating that, and it sounds pretty interesting. I can’t see it improving things for me since my project has only one author, but for larger teams it’d be great, and would solve a lot of the problems I’ve experienced at work (mostly due to the awkwardness of branching, and some terrible diff tools).

So, next on the agenda game-wise will be a new UI. That’s more than it sounds, as it’ll also make the current ‘menu’ (press ‘p’ to play…) and the highscore entry (you’re always Anonymous…) usable, as well as improving the in-game information display both in looks and functionality. Should be an interesting and worthwhile change, anyway.

Hmm. That’s a surprisingly large amount of text for such a small amount of information.

Clouds (really)

September 7th, 2008

Clouds are just about more or less sort of done. There are just a few loose ends to tie up (for example, at the moment there’s no ground, just a big black square if you look down, and the lighting is messed up at close range, hence the zoomed-out shot) and some tweaks to be done (it’s all looking rather over-exposed, for a start), but they’re in there, working, billowing their way across the screen in a cloudy fashion. Brilliant!

I just noticed when I went to upload the screenshot that I haven’t given you anything since June, so I’m very sorry about the delay! I’ll try to snap things a bit more often, since pictures are worth a thousand words and all that.

Now that the sky is super-spiffy, I should probably work on making the rest of the awful graphics nicer! I’ll see what I can whip up.

Clouds

September 4th, 2008

Well, I’ve nearly got Simul Weather’s nice clouds and sky in the game. I had a day off because the cable guy was coming to give us TV (sadly he turned out not to be Jim Carey), so I had a good go at integrating it with CITS but it’s not quite working yet. Well, it’s working, it’s just not working quite the same way the game is expecting it to work. I need to do some tweaking and fiddling, basically. The bits that look right are looking gorgeous though!

Sadly it’s looking like Linux support isn’t going to happen any more, since both Simul Weather and the library I’m hoping to use for the GUI are very heavily Windows-oriented. Looking at Google Analytics though, 94.44% of the visitors over the past month use Windows so I don’t know if that’s such a huge deal. I’ll keep it building and running on Linux since that’s what my build server is using, it just may not have nice sky or GUI!

Shouldn’t be long before I have some shiny new screenshots for you all!

Tests, clouds, and wasted time

August 29th, 2008

I managed to get loads done on Wednesday, but it’s all under the hood stuff (I wanted to ease myself back into development by writing something not too important). Basically I wrote some bits of maths code to remove a dependency on OPAL from some code that shouldn’t need it. The nice thing is that I wrote unit tests for everything as I went, so the new code has 100% test coverage and since I wrote the tests first it has a nice, simple and easy to use interface. This pleases me.

Thursday was not so successful - I started by streamlining the game a bit by removing some unnecessary screens and removing some crusty old graphics I had as placeholders, just to make it feel a bit more like a proper game. After that I tried making some half-decent graphics for the menu and in-game HUD, not to be totally functional but to get the look and feel right, and whilst I came up with something that looks good in Photoshop I didn’t manage to get that into the game too well - Ogre seems to like blurring textures a lot when not displayed at the exact original size, making text quite ugly. I haven’t solved that yet, but hopefully I won’t need to if the eventual UI system I use is good enough!

I also tried to improve the look of the sky - I went on holiday recently and took loads of photos from the plane so I could use them to get the feel of the environment right. I stumbled across Simul Weather (formerly Simul Clouds), which I’d seen screenshots of before, and decided it looks exactly how I want the environment to look, so I set about integrating an evaluation version with the game, but encountered many problems (probably my fault) and ended up with not a lot to show for my efforts. Ah well. I got some nice-looking mock-ups done though.

So, I’m back at work today and probably won’t be able to work on CITS again properly for another week and a bit. I’ll keep you posted on anything new though!

Interface in your face

August 27th, 2008

After a fair old bit of research and tinkering, I’ve decided to hold off on getting cracking on improving the interface since the GUI libraries available for Ogre just aren’t mature enough yet, and I have super-secret insider information that the solution I’m waiting for is in development. Once that reaches maturity I’ll be sure to start using it straight away as that’s the main area for improvement at the moment - the menus are horrible and the in-game interface is lacking things I want to show, and the current system makes this very time-consuming to change. I’ll eventually be using a Flash-based GUI system, which will allow me to develop interfaces in Flash (which is perfectly suited to the job) then send and receive messages to and from it from the game. Trust me, it’ll be beautiful!

It was my Birthday a few days ago (I’ve been around for 23 years now!), and my lovely girlfriend bought me a Wacom Bamboo Fun. I’ve been doodling away ready to try my hand at some concept art, with a view to getting a bit of direction art-wise, rather than the borrowed models and textures in use at the moment.

Right now though, I’ve got two days off work, so I’m going to be working on improving general gameplay - making it feel even more fun and making it just work as a game. That’ll involve improving the controls, tweaking the physics and other simulation parameters some more, and controlling the camera sensibly. After that I’ll post up another video, which will hopefully show that I haven’t just been sat on my arse this whole time!

It’s only fair to giveth back what you taketh away

August 7th, 2008

I just allowed people to be born, to balance out all the people that get sent screaming (in a silent fashion) to their doom. The birth rate is linked to the number of buildings you have. Hopefully this will prevent the game feeling like it’s slowing down as you get further in (which is exactly the opposite of what I want!).

I also changed the lose condition from “angle > 25″ to “people == 0″, partly because it’s much more fun the second way and partly because it’s really difficult to stop the island tilting, which makes debugging things very difficult!

Incidentally, I felt something different when I played CITS last… fun. It’s actually starting to feel like a fun game, despite being painfully simple. Huzzah! Next up is getting some UI up to show the state of things, which will probably require a bit of effort since the overlays system in Ogre is terrible, and I’d rather use a proper GUI library (even if I have to write one myself).

Pies

July 31st, 2008

Allo!

Well, I figure I should probably get back into the swing of things now. I should probably also explain why I haven’t been in the swing of things too.

A month and a bit ago I thought it’d be a great idea to reformat my main computer to install a couple more operating systems and to clean out the crap that always seems to have accumulated in Windows after about half a year or so. It should have been dead straight-forward, but instead resulted in hair-pulling frustration and a lot of CDs in the bin. After several nearly-working installations of XP and Vista I discovered (through use of the helpful little tool memtest86+) that my RAM had somehow become broken, at the exact same time that my DVD drive broke. This wiped out about two weeks through experimenting, waiting for things to arrive, experimenting again, waiting for more things to arrive, and finally setting up four (yup) operating systems.

Then once I’d gotten my development environment all up and running with the latest versions of my dependencies (Ogre, UnitTest++ etc.) I found out that, in a nutshell, Ant is rubbish for C++ projects. I already suspected this since after making the build scripts work cross-platform they looked quite grotesque (XML doesn’t express logic well…), but the final nail in the coffin was the ridiculous bug that causes builds to continually slow down until they eventually stop. After asking on the project’s forum, I was directed to a patch written in 2003 that would fix it. Having to apply a patch from half a decade ago to get things back to their previous level of slowness is just stupid, so I spent a while setting up some different MSVC project files and rejigging the way CITS is built. That all took about a week (spare time only, remember).

Then the new version of Dwarf Fortress came out.

Then my lovely girlfriend and I went on holiday to Vienna for four days, which was nice.

Now we’re back though, and I’m ready to get on with things. Since in the plane I saw a lot of clouds and decided they were awesome, I may well go about revamping the sky a bit since it still looks rubbish to me. I know it’s not very important, but you guys have been deprived of screenshots for so long!

Clumsy cuboids

June 15th, 2008

The little cuboid people can now trip over if staying upright is getting too tough for them. I had to do some proper maths-y stuff to get it working, which flummoxed me for a while - who would have thought that the maths I learnt at uni would ever be needed in real life?? I needed something that would allow a continuous random chance of something happening based on some measure of ‘continuous probability’. Turns out a Poisson process is ideal for this, and though the equations look scary I realised that they can be simplified greatly in some cases, including mine.

So, when the island is tilting a lot, people trip up and fall off more often, which is nice (for me, not for them). It looks slightly funny at the moment since it’s only taking into account the island’s tilt, and not the gradient of the terrain each person is on or their proximity to the tilting edge, which would make things look cooler. That’s on my to-do list, but it’s not terribly important right now.

Also, I’ve made the people wander a bit more interestingly - they walk (glide) across the island and turn around when they meet a building or an edge, rather than vibrating about. It’s looking good. I’ll probably put together a video once I’ve done a few more of these tasks I’ve got scribbled on my notepad.

Next on my list is getting buildings to detach properly. Currently they never get detached, and it looks like OPAL isn’t going to be smart enough to do this in a physically-based manner (accumulating joint damage, for example), so I’ll do it in a similar way to how it’s done for people. For now it’s the mechanic that counts, not how good it looks or how smug it makes me feel as a software engineer.

That’s it for today though, I need to clean the flat before my better half gets back, else she’ll beat me or refuse to make me lunch or worse.