Lords of Midnight – iOS

When the iPhone SDK first came out, I signed up as a developer, downloaded the SDK and started playing around. One of the first projects I started was to port TME to the iPhone. I played around for a while, started converting from c++ to objective-c, and then decided that as it would never be an official project then I should use my time more wisely and work on something else – which I never really did.

I briefly discussed the concept of an IOS port for Lords of Midnight with Mike Singleton, but we never really got anywhere.

I actually felt passionately that Lords of Midnight could be developed on modern technology and reach out to a whole new market. The new demand in casual games on portable devices, means that now is its time. And the platform that Apple have developed has allowed games that are about their gameplay to get out to a large non gamer centric audience. I believe that a lot of people would love to get lost within the world of midnight. The gameplay is simple but effective, and as engrossing as the game is, it’s a good pickup and putdown game. Perfect for the portable game player.

When Mike contacted me four weeks ago to discuss the concept of bringing Lords of Midnight to iOS, it pretty obvious that I was excited, but I was also suddenly very nervous. It was now time to put up or shut up. It’s time to actually do it.

Lords of Midnight is a much loved game. It was pretty revolutionary in its time. It’s an amazingly atmospheric experience. And I know a lot of people who would lynch me if I helped to produce another Citadel! My number one concern for this project is – to not f*** it up! My number one item at the top of the design document is – to not f*** it up!

So with that in mind, what are we going to do?

Continue reading

Lords of Midnight – 2011

In 1984, maybe 1985, my brother Darren, introduced me to a game on his zx spectrum – Lords of Midnight. It’s a wargame/adventure game which was revolutionary in its time. Written by Mike Singleton. You can read much about the history of the game on its wiki page.

In about 1990 I was playing around with a new Spectrum+3 that I had bought and decided to reverse engineer Lords of Midnight. I just wanted to know how it worked.

After performing the reverse engineering, I ported the game to the PC. This indirectly led me to getting a job in the games industry when another industry legend Jon Ritman saw the project and suggested I should think about joining the games industry, and thus everything else that has followed in my career over the last 20 years.

My port was released along side Mike’s official 3rd part of the game. Lords of Midnight:The Citadel in 1995.

In 1999 I started work on an updated version of Lords of Midnight and Doomdark’s Revenge. A project that was never finished and over the years has fallen by the wayside. But much good came out of it.

My website ICEMARK.com ( Icemark being the land that Doomdark’s Revenge was set in ) was setup and covers much Lords of Midnight material. It has become the unofficial central site for midnight related material.

My reverse engineering of Lords of Midnight and a number of other spectrum titles that followed, led to me performing some work for a New York law firm on 3d Patent Case 4,734,690

In 2004 I wrote a 10 page article about Lords of Midnight in which I also interview Mike Singleton. It was my first piece of published work. Which in turn led to a number subsequent articles.

I host a website for the game Midnight/MU developed originally Jean-Yves Rouffiac, a multi-user take on the Midnight games, and have been involved in the development in some small way over the years.

Needless to say, that Lords of Midnight has played a major part of my life for the last 27 years.

So, taking all the above into account, you can imagine my jubilation, when Mike emailed me at the end of January to discuss the concept of us collaborating on a Lords of Midnight project….

… further details of this new project to follow…

The Midnight Engine – iPhone

So I’ve taken, to porting The Midnight Engine to the iPhone. This is a task that I started 3 years ago. But as many of you loyally Midnight followers will know, time is not a friend to my projects.

I have been playing with getting the engine up and running under AirPlay SDK as this will hopefully give me a little more scope. It kinda goes against my normal philosophy with development, in that an engine must offer just the right amount of assistance to your project but not bog you down with far too many features that you don’t need nor want. There are reasons to consider AirPlay which I won’t go into here, but one of the advantages is that it allows me to keep development in C/C++ which is how TME was written. This is a bonus as I can just port the engine without having to rewrite – well that was the theory.

First I had to scrap my porting attempt from 3 years ago. A because there were an awful lot of errors, and B because I had no idea where I was at.

Creating a new project under XCode and Airplay, I had some 20,000 errors and warnings – mainly errors. Part of this problem was that the codebase had been written to cross-compile across OS’s. And it used to. Not any longer.

It’s been nearly 5 years since I did any proper work on TME, and things have moved on. The compiler didn’t like my code anymore. New keywords had been reserved. Warnings popped up for things that I’d never had warnings for before. eg. Comparing signed and unsigned variables. The Compiler was having different affects on areas of the code that previously compiled fine. The GNU compiler doesn’t appear to be as happy with namespaces as Visual Studio used to be. (that said I can’t get the old project to compile under VS2010 anymore!)

So I had to strip it back. And bit by bit put the code back into the project and painstakingly change everything that needed to be done to make it compile.

After a week – I’m done.

Now I need to do some testing and recoding. First is to get the project loading in the LOM database. This will allow me to wrinkle out some of the OS/Hardware issues in the TME libraries. After that I need to painstakingly test large chunks of the code to make sure they are still doing what I want them to…