Lunar Panda Optimisation

Written by Dean Edis on .

The technical development of Lunar Panda is now coming to an end. We're getting near to being feature complete, and now have to concentrate on level design, artwork, and sound effects. It is time to put on my 'Optimisation hat' (or 'Optimization hat', for the non-Brits :o).
This typically means I'll start up my code profiler of choice, run various parts of the application, and analyse the results to identify and resolve performance bottlenecks. And I am always surprised at what the profiler tells me! In my earlier coding days I used to try and write the most optimised code I could, as I was writing it. Using lookup tables, inline assembly code, etc - It was all done throughout the development of whatever app I was working on. A lesson I've learned now is DON'T OPTIMISE EARLY! More often than not the 'optimised' code would either be refactored out of existence (Removing the need for code is always the best sort of optimisation), or it would be called so (comparatively) few times it was not worth it.
Of course this doesn't mean you should write sloppy code - Just don't go over the top with optimisation until you really know where the bottlenecks are. Having a highly efficient routine might give you a warm feeling inside, but if making it so is at the expense of readability and maintainability it's just not worth it.
So, when you are ready to optimise, there are always a few good techniques to keep in mind.


Written by Adrian Killens on .

We're still hard at work on the next instalment of Lunar Panda but I thought I'd take a bit of time out from testing Mr Panda's ability to collide with space debris and update you on our latest shenanigans.

Dean "Carmack" Edis has just worked out a way of injecting lightning into the levels using his immense brain power, check out the screenshot! So now along with various other obstacles Mr Panda will have to contend with lightening forcefields. I'd almost feel sorry for the fuzzy little space hero if he wasn't such a thrill seeker.

Oh and we also changed the way he dies. Check out the speech bubble, if you recognise the retro gaming reference then drop us an email at This email address is being protected from spambots. You need JavaScript enabled to view it. you won't win anything but you will gain our respect ;-)

Music For Pandas

Written by Adrian Killens on .

Since Dean was good enough to provide us some insight into his latest coding endeavours on the new Panda chat screen, I thought I'd make some effort and talk about the new music I've composed for Mr Panda to chat to. If you've played the Raspberry Pi version of Lunar Panda then you'll have already heard the existing soundtrack, but I have a slight confession to make. I play in a band and spend a lot of my free time composing and musically "doodling" and so I've got hours and hours of music on my computer that I was able to cypher through in order to find a few loop-able segments for the title screen and landing sequences.

When it came to the new chat screen though none my existing material really seemed to gel and so I was forced to put Visual Studio to one side (much to Dean's relief) and open up Reason, which is the app I generally use for all my midi and synth stuff. I was going for a "It's 1991. I've just got my new Sound Blaster 16 and a copy of Space Quest 4! Let's see what this bad boy can do!" vibe.

Chattering Panda Preview

Written by Dean Edis on .

Development on Lunar Panda is now happening thick and fast, and it's a testament to the XNA framework that we are implementing some nice features with not-too-much hassle. (It's a pity Microsoft are retiring it!)

One such feature which is now nearing completion involves Mr Panda 'chatting' about the planet he's about to attempt to land on. This is a deliberate nod to many 'retro' arcade games which use similar techniques to describe the game story, and is also useful for explaining some of the goals of the gameplay.

In our implementation Mr Panda will open and close his mouth, and occasionally blink, as he relays his story. It was a simple but rewarding coding exercise to make his mouth move in combination with the words being displayed, and to make him blink at believable intervals. It would have been easy to just make his movements random, but where's the fun in that, eh? His mouth movement coincides with the distribution of vowels in the text strings, and blinks are based on punctuation - Mimicking something which people unconsciously do too.

Watch this space for more news! And in the meantime enjoy this clip of Mr Panda in action. (Note: The artwork is temporary!)