So phase one of the new release is almost complete. Version 2.0.2 (36) of The Lords of Midnight is now available for iPhone, OSX, and Windows. You can download OSX from the App Store or you can get it from here along with the Windows version.
On iOS there is one known issue and that is a random crash caused by the move from OpenGL to Metal – a requirement enforced by Apple. You never lose any data and a restart of the game will take you right back in to where you were. If you are experiencing this problem then it is possible that turning off transitions in the options may solve or delay the problem.
Unfortunately it seems that the Cocos2dx has an issue here and the SDK has not been updated in two years, which makes me think it is nearly as good as dead – which leaves me in another tricky situation.
The suggestion is that I can move to a more updated Fork of Cocos2dx called ADXE. In theory it should be a small migration, but I’m just not up to it right now. Maybe I will give it a quick go one weekend when the mood takes me.
So I have made the decision to move on for now to phase two which is to get Doomdark’s Revenge release. Hopefully this shouldn’t take too long as it was already running in the new engine, I just need to check over a few things. I have pushed test version for iOS and OSX and will follow with Windows and Android real soon.
This does leave me vulnerable as the crash bug is probably frequent enough that I might start to get complaints and review ratings will start to decrease. However until I see how bad the crash is in the wild across multiple devices and os versions, it’s hard for me to gauge. I just hope that those of you have been following my progress and are therefore reading this will just take the crash on the chin for a while.
As later phases of my plan involve a complete re-write of the engine to c# and the potential move to unity (which is already under way), then I feel compelled to get Doomdark’s Revenge released and then focus on the rewrite. Because with the new engine will come many many new and shiny features…
3,287 (or 164 score and 7) days have passed since I released the first version of The Lords of Midnight remakes on the Apple Store. Over the next few days, weeks, year I would release both The Lords of Midnight and Doomdark’s Revenge for iOS, OSX, Android, Amazon Fire, Amazon Underground, Windows, Windows Phone, and Blackberry.
As you all know the choice to continue the remakes was difficult after the loss of Mike, but in the end I felt the need to keep these games in some way alive on modern devices. To that end I chose to keep the game look and feel very similar to the original and just apply a light refresh or paint job.
You will also know of the issues I have had with the SDK that the games are built on. Without going too technical, the games are native c++ but in order to reduce the workload for me, I used a thin amount of an SDK called Marmalade to help facilitate the cross platform support that I needed. But Marmalade got out of the business and I had to move to another SDK, Cocos2d-x, which has taken some time.
About this time last year I almost finished the migration after having bitted at it over the previous few years and I was making really good progress until life kicked in and completely floored me when it came to any personal projects and development. Basically the increase in workload brought about by the Pandemic just made sitting in front of a computer in my spare time – a misery.
I finally started picking up again recently, and here we are…
So I am glad to say that The Lords of Midnight is now available again for iOS, OSX, and Android. Windows will be available just as soon as I work out the best way to distribute it as currently the old versions are still available on GoG. These games are now completely free and will remain so. (I may add other purchasing options later for additional content). Doomdark’s Revenge will follow very shortly. The game is fully running I just need to do a lot more sanity checking.
The frontend of the games have been completely rewritten so some things may feel a little different.
There some known issues…
There appears to be a random crash bug that I have been chasing down for a while. As far as I can see it has something to do with the graphics rendering of the SDK but as of yet I have not been able to pin point it. I will keeps chasing this down.
Incorrect sizing of filter buttons on mobile
Android back button doesn’t give option to close the game from the main menu
There are some missing features…
The compass has been removed. This will be replaced shortly.
Some of the gestures have not been recreated yet.
Pinch and Zoom on the map
Quick access to the Map from the look screen
Drag to move
Button to revert scale to normal on map screen
Use of haptic feedback on mobile
Next and Previous buttons for desktop on think and select screen
Cursor image on desktop
Escape key usage on desktop
Shortcut keys on desktop
And a few features I wanted to add which I will try to get in soon…
Add filter for ‘Hidden’ on Map and Select screen
Add option to disable ‘Are you sure” for night prompt
Add in game option on Tutorial popups to mute/unmute tutorial
There will likely be a new build in the next few days as I made a couple of changes during the Android release that needs to ripple through to all versions, I just didn’t want to mess with the current release schedule by submitted the latest changes to all variants.
Moving forward I am not 100% sure what approach I am going to take. I am already aware that Cocos seem to have downgraded the importance of their c++ engine as there hasn’t been any updates in the last two years. I’m already starting to move to a new system – this time Unity – I think this might have more future proofing. The only problem is, this becomes a complete rewrite in c#. In the end this opens up much more opportunities for the future direction of the games. It may be that the current versions are kept ticking over as they are as I focus all my energy on rebuilding the new system.
Anyway, apologies for the delay, but I hope you can all enjoy The Lords of Midnight and look forward to Doomdark’s Revenge in the New Year.
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…