I fear Doomdark may get untimely warning that the Wise are awake

So it’s no secret that I have struggled with development of The Lords of Midnight and Doomdark’s Revenge since the release of the remakes in 2012/13. Part of this because at the time I think I was driven by a sense of duty to get the games released in honour of Mike. The amount of work I did on those two games in such a short amount of time in order to support seven different platforms was frankly quite astonishing.

After the release of Doomdark’s Revenge I took a short break and developed a children’s game Timbles – which never got released. I then supported the two games for the next couple of years but never really got in to any swing and was unable to move them forward. This then became exasperated by the whole Marmalade SDK fiasco which stopped the games in their tracks.

I slowly started moving toward a new SDK and picked Cocos2dx. I then spent a few months rewriting many aspects of the UI to make it work. I finally put the project back down because I was struggling under the new SDK to make it work across multiple screen resolutions.

Last Christmas after over a year of not working on it, I picked it up during my one work break of the year. The reason for this is that I suddenly realised how I could solve the resolution issue. Inspired I got a test release together for iOS, OSX, Android, and Windows. However by mid January I was back working and even more busy than the year before. Another problem that cropped up is that the Cocos2dx SDK appears to have a bug with its Metal implementation that means its either leaking memory or causing a threading issue. This appears to be a random issue that I am some how triggering and have been unable to find.

Over the following few months I spent more time working and eventually I found myself in a situation where I could can no longer sit at my computers without working. I made an association  with my study and my computers with work and haven’t touched any none work projects through the majority of 2021.

At the beginning of October I changed my main client to Sky. What this means is that I am no longer working additional hours whereas working with PureGym I found myself working longs hours or working later and intermittent through the day.

A few weeks after joining Sky, I found myself slowly spending more time at the computer… and I started finding a rhythm.

So here is where I am. I am not making any promises because I don’t want to break them, but I am back on a plan. I have been rewriting the Midnight Engine in c# – part of this is to facilitate a move to Unity which will open up better long term support for LoM, DDR, and facilitate Citadel. I just don’t believe that I can stick with the c++ engine and Cocos2dx anymore – I am already bothered that their c++ SDK hasn’t been updated in 2 years and their time milestone release is also 2 years overdue. 

Mentally I have committed myself to The Citadel in 2d and some campaign changes. I also have a list of features that I want to add to allow a few game variations. My intention is to get a Unity project up and running “The Midnight Chronicles” and LoM, DDR, and the Citadel will all be campaigns within the one game. I also have my eye on Nintendo Switch and some other things which I won’t discuss here yet.

The new engine also means that I am getting closer to having better tools to handle the data allowing me to start modifying the maps etc for alternate campaigns. The original data was held in an Access Database with a binary export. As I’ve been Mac based for so long now, Access is no longer part of my work flow. So I’ve been using the unmodified binary files for some time. To give you an example in order to release Revenge the first thing the code does after loading the binary database is modify all the data that was incorrect previously. I can’t continue that way.

Where I am right now is that I have what I call “The Midnight Engine Database”. This is all the core objects required for the games. This is in a slightly more open format. Shortly I will be able to load the binary data and export/import to a more open text based format. The map is stored in Tiled format and all the other data is just CSV files.

I have also started exploring a new architecture to allow the engine to be even more open. I am trying to move away from the current object oriented approach because ultimately it’s too limiting and confining. I am also resisting the text so that it can be better localised.

So, where does that leave the current c++ game… well I intend to get LoM and DDR released I just don’t know when I am going to start on it. I am hoping that I can use the momentum of working on the new engine to get me through a release. So please bear with me a little longer…

The building of a new citadel upon the ashes of the old had already begun.

I thought I’d take the opportunity to briefly discuss the Lords of Midnight rebuild particularly for those people who have found their way to the blog more recently. I have spoken a number of times over the last few years about the loss of the Marmalade system that I was using as the underlying cross platform support for LoM and DDR, and that I would need to rebuild the project under a new system in order to at least keep supporting it, and better add some new functionality. The rebuild has almost been a full UI recode with very little backend game changes other than to get code compiling on various platforms. During the UI rebuild I have taken the opportunity to change the way a few screens might work, but nothing too drastic. In many cases the rebuild has simplified the code in certain areas.

I know this process has taken a frustratingly long time, but happily that process is now almost complete. Both The Lords of Midnight and Doomdark’s Revenge are up and running, and they now both completely share the same code base. I have placed the skeleton versions of the Desktop in test so that I can see if there are any glaring issues with the new build, and will now focus on getting them released for Mobile before coming back to Desktop and tidying up the few features I chose to drop in order to get me to a Minimum Viable Product.

Availability

The first thing to point out is that none of the following versions will be released as a new purchase, so if you already have the game, you should be able to pick up the updates for free as long as your device is supported. And in theory over the last six years most people will have updated to new devices anyway.

iOS

The reason for the iOS focus is that The Lords of Midnight currently does not work at all on the iPhoneX range of phones and essentially it is the version most endanger of being pulled from the store. I’ve had a few reports of the games not working on Android, and none at all for OSX and Windows.

This week I will be testing the game across all the current resolutions for iOS devices to make sure they all work as expected. I will then take stock and the end of the week to see if I can release both iPhone and iPad versions together or not. Either both or one of those versions will go into public beta through Apple, and then I will look and OSX.

OSX

The reason for OSX focus is due to 64 bit support. The next version of OSX – Catalina, due in September, will remove support for 32bit apps. I can honestly say that I have no idea if the versions on the App Store were built 64 bit or not, but I suspect not. Under the current development system, all I need to do is build and submit – in theory!

Android

Android needs a little bit more work. Firstly just getting the new code base building. I have not focused on this at all just because I’m Mac based, using iOS, and needing a Windows version for Drew. However, I have not been concerned at all that it will not build, it will just take a short time going through the motions. The I need to test against a number of screen resolutions. This is the area that will probably cause me more work if it hasn’t already as part of the iOS process. It is likely that the rewritten landscaping technique does not hold up across a number of different aspect ratios. And of course, 64bit will soon raise its ugly head across the Google platform.

Windows

Windows version is already building and the only real work required is Fullscreen and Resolution support. There will also be a little bit of Desktopification required as I look back at all the features and make sure I am not too Mobile centric.

There is currently no real urgency on the Windows version other than wanting and needing it to generally be released as soon as I can. The only real consideration I am having with Windows is whether to consider Steam or Epic Games store as a new mechanism of distribution.

Feature Parity

During the process of getting all the versions released and then immediately after I will take time to make sure that all the features that I have removed in order to hit a release, are put back. Most of these are small things like a few touch gestures and shortcuts.

Gameplay

There are technically no gameplay changes. However, there are a few bugs that have been fixed over the last few years that some or all of the versions have not been updated with.

The Future…

New things can now start to happen… 🙂

Reference:
  1. This time you’ve got me to help you
  2. The Moon Ring lends us the power to change our plans
  3. The way was obscure but he moved onwards
  4. We cannot spare more than a few for such a perilous task
  5. Above the towering clouds simply melted away and the bright stars gleamed in the sky once more
  6. Only Luxor remained with a thousand riders of his houseguard waiting for news

Only Luxor remained with a thousand riders of his Houseguard, waiting for news.

Just an update of how things are progressing at the moment.

The move to Cocos2d-x is now almost complete. I have the full Lords of Midnight running with every screen implemented. Which means it is fully playable, however in order to hurtle through to completion I chose to priorities and simplify certain things.

For example. The select screen allows you to do just that. What is missing is the grouping functionality. Which means you can play the game and select all the recruited characters, you just can’t utilise grouping.

Here is my current TODO: list…

  • Landscaping – armies
  • panel_look – direction arrows
  • panel_map_detailed
  • Mouse Images
  • panel_look – shortcut keys
  • panel_look – show following character
  • panel_look – compass
  • panel_think – select character
  • panel_think – Post/Recruit
  • panel_look – help pending
  • panel_look – Landscape – keyboard control
  • Load XML Project Config
  • landscaping – mist
  • landscaping – grafitti
  • panel_select – Grouping
  • panel_select – shortcut keys
  • panel_select – drag and drop
  • DDR panel_gameover
  • DDR uicommandwindow – give text
  • DDR uicommandwindow – select face with name
  • DDR panel_look – Tunnel View
  • panel_advert – multiple adverts

I’ve been doing all this work with the MAC build because it’s easier. The next step was to make sure I could get the project working on iPhone, again because that’s the next easiest most logical step for me. I fixed up some cosmetic issues caused by multi-resolution support and added in support for the Safe Area of the iPhoneX range of phones – basically the notch, the curved corners, and the home indicator. This will also help with any potential AppleTV version that might come later. With the safe area I chose to allow the background to fill the full screen, but make sure any UI components are within the safe area.

The next thing is to get Windows32/Windows10 variants building, which for me unfortunately means spending time in a Windows VM. I also enjoy using Visual Studio less and less… but hey, needs must.

Once the windows version is building, at least the win32 version, I will swap back to Doomdark’s Revenge. I will make the changes required to get DDR running in the same way LoM is. The main thing will be tunnels, mist, landscaping and ui differences. The reason for this is so that I can have a version to give to Drew that will help him with the novel research.

After that, I will start pulling on the straggly strands together. I haven’t decided for definite yet, but I am thinking of releasing this version under the monicker “The Midnight Chronicles” and having both LoM and DDR as selectable campaigns, rather than releasing them as two separate apps. This wasn’t really possible when I first released LoM 6 years ago!

I am also considering In App Purchases. The idea is that the main game will be free, but you can pay for additional scenarios and graphic sets. It is likely that The Citadel will be released as a scenario rather than a new game. Some other scenarios might just be playing with the map or the game conditions. I like the idea of a scenario that more closely resembles the way the Novel plays out. I don’t intend to add IAP for functionality or gameplay, so there will be no in game currency for example!