For many hours they rode in silence, Luxor lost in his thoughts, the boy watching the forest in a mixture of fear and fascination. He had heard the tales men told and couldn’t quite believe they were only tales. “Why does the Solstice trouble you, my Lord?” asked the boy.
Luxor turned his head slowly towards Morkin. For a few moments he said nothing and then, as though he had suddenly remembered, he began to speak. “Our world wasn’t always white, Morkin. You’ve heard the legends of Summer when the land was green and teeming with life. Ten thousand moons ago it was, so long that men barely believe such a time ever existed. Yet the Wise remember. They have scrolls that tell of the first snows falling and the first carpets of ice covering the land. Suddenly, all the lands of Midnight were plunged into this winter of ours. Then came famine, a great famine that ravaged our people, and with famine came war.”
When Mike Singleton originally developed The Lords of Midnight, he did so with his love of telling tales. After creating the initial Landscaping technique which made the game so revolutionary, he immediately switched to creating a map, one that he thought would be fun to explore, and then used that to help drive the narrative of the Novella, the back story included with the game. He populated the map with people, creatures, and places, assigning them names and purpose. Mike’s son Jules told me about sitting on his father’s knee watching and suggesting, while he played the god of Midnight and created new locations and terrain for his people to live in. The story and the world of Midnight is so important to the game and one cannot be without the other. In just five small chapters, Mike filled our minds in a way that we were able to fill in the blanks while playing a game on what by todays standards, was nothing more than dishwasher controller.
Mike once told me that he had hoped to to write a full novel, but game development and life just got in the way. He kept driving forward with new games and new stories, Doomdark’s Revenge, Midwinter, Ashes of Empire, to name but a few. All born out of his storytelling instinct.
As players, we all remember the competition that launched with the game. A novel prize – print out the screens as you make your way through Midnight, and the first person to complete the game would have these screens turned into a novel by a fantasy author. Alas, the game was complete too quickly, and beyond was never able to fulfil it’s promise of the prize.
Over the years and have read a few fan-fiction starts to novels, none of them every got past a few chapters, and none of them really had the potential to go all the way. I’ve also discussed the idea of a novel with one or two authors, who all showed interest, but never got off the drawing board.
It is with all that in mind, that I am happy to announce that, the novelisation of The Lords of Midnight is finally underway.
It happened like this…
On the 8th April, Drew Wagar (@drewwagar) made a tweet comment to Tom Fahy (@fifthfayh) with reference to his Doomguard Twitter avatar.
And that was it. We had an email conversation over the next few hours, and by the end of the weekend Drew’s publisher was on board, and I had an initial thumbs up from Mike’s family. I put a few ground rules in place and a few small hoops for Drew to jump through. Over the next few weeks we batted a few things back and forth to get a feel of the type of story Drew wanted to tell, and by the end of the month we met up to talk about the project, did some contract type stuff, and agreed, that this was something worth doing.
I’m not going to talk much more about the novel here, I will leave you with an interview with the author Drew Wagar. You will also be able to follow updates on this blog and on Drew’s blog over the next few months.
I leave it there, other than to fill in the details.
I finally managed to push out the update to Lords of Midnight. All platforms have been updated to 1.11
This is the first time that all platforms have shared the same code base, and it’s the first time I have updated all platforms on the same day. It’s quite a big day as I’ve been trying to get this update out for a while, and I feel this marks the proper hand over to Doomdark’s Revenge. So, I really hope I haven’t missed something massive somewhere!
This will likely be the last update this year, unless of course I’ve messed something up. For the next 6 months I suspect all my focus will be on Doomdark’s Revenge. Not only getting it released, but those first few updates that will happen to it early next year after the initial release.
I full list of changes can be found here….
But I thought I might pickup and summarise a few of the items.
Big change was adding new grouping controls. You can now scroll around lords that are grouped making it easier to select lords from the select screen when they are grouped. You can also merge groups, disband with one click, change the leader of the group, and drag a lord from one group to another. You can also disband a group or leave a group from the think screen. Video of it working here…
There is more keyboard support on screens. This is for the desktop version and hopefully Android where it has keyboard support.
Mouse wheel support is there for the desktop version.
The scaling on the map is now available to the mobile versions. You can scale with pinch and spread, but I have also left in the scaling gadget on the mobile versions too.
Selecting lords on the Map screen has had a little work. You can now select the multiple lord icon in order to gain access to all the lords.
For iOS I have added an option to toggle between an ebook novella and pdf novella. I hadn’t considered that people might not have iBooks installed. But I have also added ebook support to the OSX version now that Mavericks is shipping with iBooks.
Two biggies that will make a difference to the game. You can no longer select a lord from the map screen when Luxor is dead and Morkin does not have the Moon Ring. This was a bug that would have allowed you to still control your lords even though you didn’t have the Moon Ring – sorry that exploit has now been plugged!
And, armies were fighting double at night. Which means battles would have been quicker than they should have been because double damage was being dealt out. This would have meant that you could have lost a fight without the chance of escaping, because you should have had a turn between the two battles. Or the armies on both sides are unable to get reinforcements between the two battles.
I hope you enjoy…
I’ve been working away for the last few weeks, which has meant that my development has had to take into account that it is being done primarily in bars an restaurants. I know many of you are waiting for the latest version of The Lords of Midnight, but although I have spent some time fixing bugs and adding a few new features, I am not in a position to Build a release version. I have to have access to my desktop to do that, and the few days I’ve spent at home with my family, I hope you can understand that spending time in my study on my computer is not the highest order of the day.
After declaring an end to any changes to Lords of Midnight, I spent some time merging the codebases of the different versions that have been branched out over the the year. Namely, Mobile version, Desktop Version, and Doomdark’s Revenge. I now have a unified code base which means that when I release a update for LoM soon, it can be across all formats.
Once the merge was complete I decided to spend some time working on Doomdark’s Revenge. I am hoping to release a test version soon. The night AI will not be activated but you will be able to wander around the map, above and below ground. And generally check out the UI differences between the games etc. This will then give me a good base to slowly turn on AI features and test them thoroughly up to release later this year. For the record that would be in about 12 weeks!
Once area that I have been working on this week, is tunnels. Tunnels are one of the new features that Doomdark’s Revenge implemented. So I have been slowly working my way through the code base, adding in all the little things that need to be there in order for them to work.
It’s a little different with The Midnight Engine, ( which by the way is the underlying code that powers both The Lords of Midnight and Doomdark’s Revenge ), over the original games, in that there is one code base. Doomdark’s Revenge was released as completely new game, and therefore much of what didn’t remain of The Lords of Midnight was just removed and the new code was added. This is a big issue with my codebase, as my original brief for creating The Midnight Engine was to be able to play both games and in theory create a game that mixes the features from both LoM and DDR. So, if we take tunnels as an example, I could just turn tunnels on in LoM, and everything would just work.
Now, let me try and give you an example of why that thought process gives me a nightmare when implementing something like tunnels.
In LoM a map location is split up into [ Terrain, Area, Object, Flags ], in DDR it is just [ Terrain, Flags ] – both area and object are generated. TME uses an expanded format [ Terrain, Variant, Area, Climate, Flags, Object ]. So the generated areas in DDR are stored, as are the objects. ( For the record, objects change every night ). For both, objects are classed as things you find or things you see. So Guidance, Cup of Dreams, Dragons, etc…
Now tunnels are a flag. A location has a tunnel beneath it or it doesn’t. If the terrain is GATE, PIT, PALACE, CITY, then the tunnel is an entrance/exit. If the terrain is PLAINS, FOREST, HILLS, MOUNTAINS, then it is considered a passageway. Now, this is where things start to get messy.
A tunnel location can only have a critter ( dragon, wolf, skulkrin, trolls ), when it is a passageway. And the location directly above ground can only have a critter when there isn’t a passageway below. So affectively you have two locations sharing the same space but only one critter at the location who could be in either of the two locations.
It seems a pretty straight forward thing to think about, but when your code base works on the concept of a single location, suddenly everything changes.
When drawing the landscape, the frontend asks the backend for the information about a given location. It draws the terrain graphics and any critter imagery that is required. The backend has just told the front end that there is a critter at this location. However, now it has to consider if we are above or below ground, and the type of below ground we are on. Based on that information the frontend can decide if that critter is visible or not.
When at a given location the frontend asks the backend for all the lords that are at a given location. But now it has to consider if that lord is above or below ground. The list of these types of checks goes on and I’ve found myself having to work through the engine making sure that I am always using the correct context. More importantly I am trying to make sure that any logic is in the backend and not in the frontend. Therefore the backend now returns the information in the form of, here is the information at the location requested, this critter is above ground and this critter is below ground. It doesn’t matter that there can’t be a critter in both, that is a backend problem not a frontend one.
A similar thing happens with the discovery map. There are flags on a location to say that it has been seen, looked at, or visited. Seen is a distance thing. Two locations away may have been seen, and you know what terrain is there because you can see it on the landscaping view in front of you, but you might not know what it is called. Looked at is for locations directly in front. You know the terrain and the name. Finally, visited is exactly that, you have stood on that piece of ground. But, you might not have stood under that piece of ground. So now we have to introduce the concept of tunnel visited and tunnel looked at. How about, we have walked down a tunnel and got to the end, and we know the tunnel finishes, as opposed to not quite making it to the end, so we have looked at the tunnel location in front, but because we didn’t visit it, we don’t know if the location after that continues as a tunnel, or this is indeed the end of the tunnel.
That one bit flag in DDR ‘tunnel’ suddenly becomes so much more when you are trying to keep a flexible engine. That one bit flag also creates limitations. Two tunnels adjacent to each other must be connected. You can’t run a tunnel under a palace because a palace is always an exit/entrance. This is used to create a one way tunnel in the game.
I have considered removing the bit flag, and replacing it with the concept of layered maps. You would then have a map for all the terrain above ground and then a map for all the terrain below ground. Following that approach would me that the limitations could be removed and it would allow things like different critters above ground than below. Or types of tunnels. But for now, I’ll leave well alone!
Other things have crawled out of the subterranean landscape… For example, two characters at the same location are not actually at the same location when one is above ground and one is below ground. Thus, the newly added grouping functionality suddenly needs to take into account tunnels!
Demo of new grouping features from the upcoming update. See here for list of changes…
Register on the game site and on the forum. It’s a very friendly community. There are usually plenty people around to help you with training games, although it might be a little quieter than usual at the moment due to holidays.
For those of you who have been waiting for it, the Windows version of LoM is now available at www.gog.com
Seven moons from now I, Shareth, Empress of the Icemark, will ride forth to avenge Doomdark, my beloved Father. The Frozen Gates I shall tear down. Midnight I shall lay waste and through the portals of Xajorkith I will pass, triumphant. All shall adore me and despair! Or, if the Moonprince prefers, let him ride to hammer at my door and find defeat more swiftly!
Last night I took a moment to branch the current Lords of Midnight desktop project, and create the Doomdark’s Revenge source tree. The reason I took the desktop project and not the released 1.6 mobile version, is purely because the Desktop and v1.6 Mobile needs to be merged anyway, and I thought that this separate project would be a good opportunity to find out what I broke for mobile in the desktop version. As it happens, not that much!
Jure had already sent me most of the graphics, so this would also act as a good opportunity to create a list of missing art resources. I plugged all the artwork in and created a ddr.tme file. This is the file that links up data from the backend database to the frontend presentation layer. Once I’d made my first pass through that I built the project and ran it… boom! No surprise really! First issue was the Doomdark’s Revenge database. I last generated this about 2004 I think, so the binary format was a little out of date because of a few changes I made while making the iOS version of the engine. Few changes to the export script, and that was all working ok.
Next thing to resolve was some graphical issues. There are no shields in Doomdark’s Revenge, and I used small versions of the shields for the select icon. Jure and I had not come to a decision on how this was going to work, so I created a temporary solution and quickly cropped the characters faces.
On the main look screen, then shield needed replacing with the character graphic. So the engine now detects a lack of shield graphic and uses the character graphic instead.
And that was that…
That was just stage one. I can wander around the map using any of the three main characters. It randomly crashes, and obviously there is a distinct lack of AI. But, all in all, not bad for a few hours work.
The Lords of Midnight
by Mike Singleton
The Eye of the Moon
Comrades of the Prince:
The Marches of Valahar
Time itself was sleeping. There was utter stillness even in the air. The drops of rain hanging from the leaves gleamed but did not sparkle for not even the light trembled. The silence was so deep it made him feel deaf but when he breathed out it seemed like a roar. The storm had passed.
Dominykas turned his eyes to the horizon. Over the forest, misted by distance, the far peaks of Valahar floated in a milky blue haze, sharp white shards cutting at the sky. Then the light subtly changed and one of them, the tallest, suddenly suncaught, began to glow at the very tip, brighter and brighter until it glowed with golden fire.
The Wilderhorn, he thought, it must be. That’s where I must go, to the roof of the world, to the gate of the heavens. The boy couldn’t imagine the road that led there. It was impossible. How could he ever reach it? For a moment, black despair rose, seeping into him, but then he wrenched away from it. I’m not a boy any more. I can do it if I must and I must, so I will! He gazed at the mountain with its golden crown of fire.
It was simple after all. Bright as a beacon, there was the torch that would light his path. However long and twisted the journey, a peak that soared so high would be with him like the sun or the moon, sometimes hidden, sometimes in darkness, but always reappearing as he turned a corner and found the open sky again or as the world turned and darkness fled.
His heart filled with joy. Nearly forty moons had passed since they left Coromand and now their journey’s end was at last in sight, blazing with fire. Smiling, he turned to his friends. He flung his arm out to point wildly at the mountains.
‘There! The roof of the world! The gate of the heavens! The Horns of Valahar! Look! The Wilderhorn!’ he shouted and the fire that touched the far off crest blazed within him. His young comrades looked. They gawped. They gasped. They looked at one another. One by one they grinned. Then at last they cheered.