Oh, hello. You were making a candy crush game or something?
Yeah, yeah, I know. It’s been two and a half years since there was any update at all. A lot has happened since then. So, I went on secondment up at Bristol, which was cool. I learnt a lot, and everything was delivered on time and on budget, so that was good. Unfortunately, with bouncing back and forth between Bristol and Yeovil, I had very little time to work on Project Icarus. Then, I was made redundant (Or rather, I took voluntary redundancy). Fortunately for me, I got a new job and was back at work within a week of leaving BAE.
So you then had loads of time, right?
Not exactly. I was sent (literally) to Coventry for three months on a software project that I had literally no clue or grounding in. Fortunately for me, I managed to get a firm grip of it and got it (more or less) working. Then I got sent to Ireland for three months to install it on the customer site. Ignoring a few little hiccups, it works fine.
So then you had loads of time, right?
Well, still, not quite. Work was very busy, and with one thing and another, Project Icarus slipped from my radar. As part of the redundancy package with BAE, I got a training course to become a Microsoft Certified Professional Developer. Something which I achieved in March of this year. Unfortunately for my available timings, I’d also asked my wonderful Jojo to marry me in the previous October, so all things were cracking ahead with organisation for that. So, we got married on November 2nd 2013, and everything was wonderful, and I had spare time again!
So you’ve now got spare time?
Well, that’s the plan. I’ve come a very long way since I started PI, and I’ve learnt so much. I still have plenty to learn, but that was always the purpose of PI. So, with January 1st and new years resolutions, I thought, what better thing to resolve to do then to get PI going again. Of course, all the space opera books I’ve been reading lately have helped and given me some inspiration…
So what’s the plan?
Ok, I’ve got a few things I want get in place:
*Fix the server <-> client comms. From what I remember, the last big change I introduced made this laggy as hell.
*Fix the entity model. The way I currently implement the entity model on both server and client is pretty strongly typed. Whilst this provides good compile time safety, it really hinders the creative process, and causes a lot of boiler plate code to have to be written. I plan on completely re-working this to allow a much less restrictive model.
*Re-implement Database Backend At some point in the development of PI, I dropped the database part of the server for performance reasons (I was getting “springy” lag). I have a few ideas on how to resolve this, so would like to try!
*Fix the server model Currently, the server is configured to be a service. This is great for instance based gaming, but not so good if I want the server to start-up on its own.
*Developer Modes. I want to implement some sort of developer framework. This will allow remote access to the currently running client/ server. It will enable turning on and off of certain features (for example, turning on hit-boxes and clipping helpers)
*Full glitch free system wide travel. Previously, I was having significant issues with floating point numbers causing precision issues when reaching far-flung corners of the system. Not good!
*Scaling Issues. The scale of planets and the sun was wrong. This needs to be fixed.
Gameplay/ Functional Changes:
*More ships. At the moment, there is one ship, with one model, with one set of characteristics. I want more.
*Gravity. Quite a simple concept, I want gravity back on.
*Full keyboard UI. At the moment, there is no attempt to capture “key-press” events from the keyboard. Not helpful!
*AI. Pretty simple, I want ships to fly themselves.
*Flotilla. A flotilla of ships, flying from place to place, using the AI.
*Some sort of menu. I’m grasping a little bit here, but I do want some kind of in-game menu, to allow configuration and selection of objects. This is a monumental piece of work. There are frameworks out there to do exactly this kind of thing, but I’ve no experience using them, or even what my requirements would be. Instead, I could write my own, but that’s also a minefield! One thing at a time!