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

Related Posts:

Each dawn a new hope, a new beginning

I now have a test version of The Lords of Midnight and Doomdark’s Revenge for Windows and OSX. The idea is that these can be tested in order to iron out some of the obvious issues while I now concentrate on getting the iOS version built properly. This is now the most pressing task as I would really like to get the App Store version working on the iPhone X range.

There will be some missing features, mainly small gesture shortcuts etc, but I can add these features back in as they don’t detract from playing the game. For example there is currently no Zoom on the Detailed Map page, and Post/Guard on the think page is missing.

Should you wish to test the games here are the download links. But downloader beware these are not finished products. There is no installer and for OSX you will have to override any popups about being untrusted.

The Lords of Midnight – OSX

Doomdark’s Revenge – OSX

The Lords of Midnight and Doomdark’s Revenge – Windows

If you have any issues then please contact me through this form. I will look at a better testing and reporting process later. You can also check the GitHub issues page for known issues.

Doomdark’s Revenge
The Lords of Midnight

Related Posts:

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!

Related Posts:

The Moon Ring lends us the power to change our plans

For those of you that do not follow my personal blog, I thought I’d update you on a few issues that have been plaguing me… for those of you who have, you can skim down to nearer the bottom…

About six months ago I received an email from Marmalade detailing their intention to withdraw from the SDK market. Marmalade is the system I used to develop The Lords of Midnight and Doomdark’s Revenge in order to facilitate the cross platform nature of it. Using Marmalade gave me the ability to target iOS, OSX, Android, Windows, Windows Phone, Kindle, and Blackberry.

A month or so later, Marmalade confirmed that the SDK had been sold to another company, and that further support may become available from them.

That process has now taken place. I have less than a month of my Marmalade licence left, and they have not turned off the Licence server to I can still build and continue to work. However no future support will come from them. The new company are offering a 12 month bridging licence at $100 more than my previous licence fees, but this also comes with no support. I’m also not convinced that they intend to be around for the long term. The main reason they appeared to by the Marmalade system was for internal development.

A few weeks ago I received an email from Google. Doomdark’s Revenge was now in breach of one of their policies and needed to be resubmitted or removed from the store. A quick recompile and the problem was solved.

A couple of weeks ago I received an email from Apple. The Lords of Midnight was due to be removed from the store in 30 days. This is due to them culling old apps that were not being updated and/or were not 64 bit. If the App is removed people who currently have it will still be able to play it and re-download it, it just won’t be able to go on any new devices or be updated.

In theory, a recompile would solved the problem, and as I had slowly added some new functionality, this should gain me a stay of execution for possibly another 5 years.

Over the last few weeks I’ve ben wrestling with a Marmalade SDK that is not supported and an inability to build a new version. Eventually, after a lot of heartache and pain, and getting close to just giving up, I have managed to get a working build, however, there is a catch, it doesn’t work on iPad1, iPad2, and iPad Mini 1. iPad1 is no surprise, I can’t target anything lower than iOS 6 anymore and iPad1 only goes to 5.1 The iPad2 and iPad Mini is more of a problem. The issue appears to be the Marmalade system incorrectly reporting those devices as Retina devices even though there are not. I’m still trying to fix this, but it’s proving difficult without current access to any of the devices. So, I might have to make a decision. The deadline is under two weeks now and in order to stave of the executioner, I might have to upload a version that doesn’t support those devices. And this is where the real catch is; I can’t exclude those devices without going iOS10 or purely 64 bit, or both.

Using iOS10 would allow me to target iPhone5 up, and iPod Touch6G, iPad4 up, iPad Mini2 up. Going 64bit would be much more restrictive.

It hurts to think I might lose iPad2, iPad3, iPad Mini1, and iPhone 4, it seems harsh, especially as I have an iPad3 which it does work on! I have no idea how many of these devices are currently playing the game, Apple don’t break down the numbers to devices with that amount of granularity.

To be fair, I don’t have a current enhancement plan for the games, so it’s not like people who currently have the game will be losing out much, but it just feels wrong.

I’ll have to make a decision early next week in order to upload LoM and DDR and at least stop the rot. However, once those versions are up, I don’t know how much longer I might be able to build them again for.

Long term, I need to look at porting the games to another platform, and this is something I have spoken about before…

Related Posts:

Many battles fought again by tongue

Strange day today. Not just because it would have been Mike’s birthday, but because for some reason I found myself fixing a bug in Doomdark’s Revenge. Back in January I had a bug reported to me by Simon Foston, I managed to get some save games from him and just needed to find some time to look at it. Now, it’s taken a little while for me to find that time, but for some reason I looked at it today. It wasn’t a conscious decision, I was just looking through some emails that needed dealing with and noticed Simon’s bug report.
A quick look through the code and with a tip off from Simon’s report, it became apparent that the ghosts of dead lords were continuing to take part in battles. I checked the original code and it looked as if the bug was there too, however, I then found that the isDead check was happening later in the process. Strangely what it means is that battles at a dead lords location are processed as part of a dead characters turn, and not as part of other characters in the location. In my case, I’d missed the later isDead check and therefore the dead lord actually took part in the battle.

 

So, it seemed strange to be working on a bug in Doomdark’s Revenge that included the dearly departed, today of all days. I’m sure Mike had a wry smile..

Related Posts:

In the forest, the trees grew tall and shady and bright flowers carpeted the floor

Screenshot 2016-01-06 23.01.13I finally got round to spending some time converting some Citadel data. On of the issues that I had was that I have the map data in LBM image format. It’s obviously not a great format for the terrain data, but this was given to me by the original programmer and I’m not sure how they were processed for the final game. The other issue is the difference in game styles. This data is for a 3d free roaming map and some of the maps are different sizes. The region map are 128×128, however I can’t believe that the citadel could be played out as a 2d landscaping game, without seriously playing with the time taken to move. Therefore, I decided to make the Citadel map 256×256, this is in keeping with the map that Mike drew up for Eye of the Moon, and therefore as the Bloodmarch was originally going to be the setting for EotM it seems fitting to go with the same size.

Last year I did some work on transferring The Lords of Midnight and Doomdark’s Revenge maps into Tiled. I figured that if I could create a tool chain from that, I could possibly edit the maps for future campaign updates to the games. I did all the work on converting to Tiled and coming up with data formats, but never did any work on the toolchain to get the data back into the game. This is something I still need to do.

With that in mind, I produced a draft Tiled version of the Citadel map which you can download to take a look at. It has layers for Realms and Regions, and then individual layers for each terrain type. The Citadel map was very sparsely populated compared to LoM and DDR, and although the current terrain types account for 19 different terrain, which is actually three more than both LoM and DDR, these terrain really are base landscape terrain. Land, Water, Trees, Mountains, Swamps, etc…. it is lacking anything remotely of interest. There are no Liths, Villages, Hits, etc…

If a game is going to come of the Citadel, this is something that is going to need to be rectified.

LoM and DDR pretty much share the following landscape terrain types: Mountain, Forest, Downs, Lake, Frozen Wastes, Plains, and Hills.

LoM adds: Citadel, Henge, Tower, Village, Keep, Snow Hall, Ruin, Lith, and Cavern, while DDR adds: Gate, Temple, Pit, Palace, Fortress, Hall, Hut, Tower, City, Fountain, and Stones.

The Citadel has landscape types of: Mountains, Craggy Mountains, Forest, Hills, Plains, Land, Valley, Lakeland, Swamp, River, Sea, Bay, Lake, Foothills, Isle, and Downs, and adds: Castle.

As you can see, there isn’t a great deal of variety in those none landscape terrains. Citadel, City, and Castle pretty much replace each other, as do keep and fortress. I seem to recall that Maranor is the Dark Citadel, but I am not aware of any cities.

So, apart from Snow Hall, I see no reason why the additional LoM and DDR terrain types could not be used within a Citadel scenario.

The question then becomes, should there be any new terrains?

My first process is to make sure the Tiled map all holds together. I needs a little tidying up which will need to be a visual process. I’m not sure if there were problems with the original, but I noticed things like trees in the sea. I never got that far in the game, so I don’t know if there were indeed trees in shallow water on the coast line, but a few things like that should probably be ironed out.

At this stage I would like to get some Terrain graphics so that I could drop the map into the engine, and start walking around. There are some issues here, as The Citadel introduces water in a way that LoM and DDR didn’t, so there will need to be engine changes to handle that.

Once a clean version of the map is available, the next stage would be to hand populate the map with the other terrain types. I don’t see this being a quick exercise because I think a lot of thought will need to go into this process.

Only at that stage, will I be anywhere near thinking about an ACTUAL game. There is a lot of underlying work do consider with how the game should work, how the AI in the original works etc. Without help this will also be a lengthy process.

So basically, don’t hold your breath, but slowly slowly catchy monkey…

Related Posts:

We must find friends as well as enemies…

A new bug came to light in Doomdark’s Revenge. I had a report of a crash bug that occurs after 138 days, that’s one hundred, one score, and eighteen days since the Moonprince rode forth into the Icemark.

The problem appeared to be that an AI character’s liege was getting set to himself. This causes a problem in the AI logic for a character choosing to follow their liege. The AI goes something like this…

I want to follow my liege, but my liege is dead, so I need to follow my liege’s liege and this character will become my new liege. The code ripples up the liege tree until it finds someone to follow, or bails and decides to hunt down Luxor instead. When the bug occurs it follows the tree and finds a liege who is dead but they are also their own liege, and thus we get stuck in an infinite loop.

Once I found this as the source of the crash, I needed to work out WHY it occurs.

There are only two places where the liege can change, the aforementioned follow liege routine, and being recruited.

I stuck some debug info on both cases and set the game to run on automatic to see if the issue triggered, and it did.

Here is the scenario…

Anvarorn starts with Fangrorn being his liege. Fangrorn’s liege is Shareth. Fangrorn gets recruited by Anvortheon the Barbarian, and thus his loyalty changes to the barbarians, and his new liege becomes Anvortheon. Anvarorn decides to follow his Liege, who is still Fangrorn. When he gets to the same location as him he notices that they are not the same loyalty and thus tries to recruit him. He succeeds. Thus Fangrorn’s liege becomes Anvarorn. So we now have a circular liege issue. This becomes a problem if Fangrorn dies, because in this instance Anvarorn decides to follow his liege, finds that his liege is dead so takes his liege’s liege as his new liege and therefore becomes his own liege!

I went back and checked the original code, and this issue can happen. The only place you would notice it would be on one of the description screens where it would say, Anvarorn’s liege is Anvarorn – or words to that affect. At worst the character would end up following themselves and end up not moving. This is something that has been mentioned as possibly happening in the current version.

When I implemented the liege tree walk, I did just that, I implemented it as a walk up the tree, and because of the circular issue, a dead lord who is their own liege will create a circular loop if they are someone else’s liege. The original code doesn’t do that, it only takes the next liege up the stack and therefore slowly makes its way up the liege tree over a number of nights. Thus no infinite loop.

This would possibly occur with characters following their foe. If their foe is dead it walks the liege tree of the foe to find the next foe.

Fix to follow soon…

Related Posts:

To Luxor, everything now grew clear

Clumping together...I’ve spent some more time looking at the AI for Doomdark’s Revenge, trying to work out why it doesn’t quite appear to be playing like the original. One thing I noticed is that I have completely misunderstood the recruiting logic when it comes to Loyalty and Treachery. I made changes in the last version, but I am going to need to revert them.

The approach algorithm

  • compare the the attributes of the lords and looking for matches gain +1 for each match.
  • If the character being approached is not loyal then +1
  • If the character being approached is treacherous then * 2
  • if the recruiting character is the liege of the character being approached then +3
  • If the recruiting character carries a crown of persuasion then +2
  • If the score is greater than 3 then the approach will succeed.

The basic concept that I have misunderstood is: Loyal characters are less likely to be recruited away form their current liege and un-loyal characters are more likely, therefore the algorithm gets a +1 for none loyal characters. And that treacherous characters are more likely to leave and thus the *2

The next thing I have missed is the lords following the objectives of their lieges.

It works like this.

If the lord has a liege and that liege is following their liege or their foe, then we must follow our liege. Otherwise pick a new objective.

There is a 32% chance that we will pick a new objective. Although that should be 25% because we could pick the objective we already have. That leaves a 68%/75% chance that we continue doing what they were already doing.

The problem for me is the first check. If we use Shareth as an example. She has a 12.5% chance that she will choose to follow either her foe or leader. As she has no leader she reverts to Luxor, which is her foe. So she has a 12.5% chance that she will follow Luxor. All the lords that follow her now have a 100% chance of following Shareth, and this ripples all the way down the stack of lords. Which at the start of the game means that 47 Icelords will disregard what they are doing and follow her.

The mistake I had made is that I had made the following lords take the objectives of their liege when their liege was following their liege or foe. What this means is that when the liege is following their foe the lord follows their own foe. So using Shareth again as the example, when she is following her liege ( Luxor by default ) then all her minions will head to her location, but when she is following her foe ( Luxor ), then all her minions are heading to their foe and not to her location. So as an example, Imgaril the Icelord would be heading to Imgorthand the Fey, who, is likely the the other direction of Shareth.

Hopefully this fix should make the game more like the original, but it bothers me that it is a flawed AI. I ran the game for the first ten days, up until the first battle took place, I ran it on the emulator too to compare notes. Here is what Shareth did over those days.

  1. Head Home
  2. Head Home
  3. Head Home
  4. Follow Luxor
  5. Head Home
  6. Follow Luxor
  7. Follow Luxor
  8. Follow Luxor
  9. Search for object
  10. Head home

Now Talormane does this

  1. Head Home
  2. Head Home
  3. Search for object
  4. Search for object
  5. Follow Lorelorn
  6. Follow Lorelorn
  7. Follow Lorelorn
  8. Follow Lorelorn
  9. Follow Lorelorn
  10. Follow Asorthane

The reason for the delayed follow on day 4 is because Talormane is following Lorelorn who is following Shareth, but Lorelorn is lower in the processing order than Talormane, and thus Talormane doesn’t know that Lorelorn is going to follow Shareth in that turn.

The final thing that I changed was that there is a 6.25% chance that the change of objective will be DO NOTHING. This is especially important for being in a battle with someone who is not the lords foe, because it means that without this the lord will always leave the battlefield. The mistake I had made was that I persisted the do nothing as an objective, i.e.. The lords objective becomes do nothing. But it shouldn’t, it should stay the same as the previous objective, and this turn that objective is ignored.

Going back to Shareth. If she chose to DO NOTHING then her objective would no longer be follow liege or foe, which means that her followers would be able to perform whichever objective they chose. However, if her previous objective had have been follow liege or foe, then her followers should still be heading towards her when she chooses to do nothing. This would have the affect of allowing them to catch up on her.

Related Posts:

First week snagging…

20140220-084247.jpgRelease week is always frustrating. On Android I just cannot test on enough devices, so I know that something is always going to bite me, and Monday morning it did. None of my Android testers had had any problems with the game loading, but Monday morning a number of devices were reporting that the game wouldn’t load. Later that night I spent a few fraught hours fighting with hotel WiFi trying to get an update tested by the affected customers, and then released.

In this instance it was an easy fix. In fact, I had already addressed the issue the previous week for the Windows release. Some last minute testing on my Mac Desktop running a windows VM, full screen, highlighted an issue of loading the splash screen. At the high resolution the splash screen was larger than 2048. When this image was being loaded, it was converted into a power-of-two texture and thus a 4096×4096 texture. The texture loader I was using was choking on that. A quick change to the affected images, across all resolutions, resulted in a fix, and a 5mb reduction in app size to boot!

This was the problem that affected some Android devices. So all I needed to do was rebuild the current version for Android and send it back out. In the end, the Android release was probably a lot smoother than The Lords of Midnight.
Continue reading

Related Posts:

Shading the night sky…

One thing that got carried over from the original Midnight Engine was the shading of the landscape depending on the time of day. The original Lords of Midnight, has a different colour for night which is basically that all the white becomes black, but the blue remains the same.

In TME and therefore the remake, I have a tint colour for each time of the day, and the images are tinted toward that colour. That colour is generally a shade of grey and it is used to darken the dawn, brighten up to normal colours around midday, and then dark off fully to night. In reality, this is one area of the remake that I left in that I don’t like. Only because, it doesn’t really look like the original. The night view has a very distinctive look, and as you can see though, the remake doesn’t look the same. It’s fine as things goes, but I would have much rather made it look more like the original.

Doomdark’s Revenge however has a completely different approach. There is a dawn visual, and day visual, and a night visual.

I knew therefore that when I got around to releasing Doomdark’s Revenge, I was going to have to deal with this issue. The tinting method just didn’t cut it. Because I could tint to red, or tint to yellow, but not combine them.

To give you a little background. The colour changing was relatively easy on the ZX Spectrum. Partly because the images were very simple and were constructed, but also because of the way that the spectrum only had two colours in a 8×8 grid – known as the paper and ink. So all the effects were done by just changing the paper and the ink. These colours were not stored with the bitmap either, it was a different memory area. So in fact, what Lords of Midnight does is, clear the screen with paper and ink both white, draw all the pixels to the screen, which you can’t see, and then fills in the paper and ink colours which makes the screen appear.

Now, the choice I made when porting the game was to use full 24bit alpha’d bitmap images. I can discuss the merits, and the whys, and possibly the mistakes, of this decision. But, it’s not been one I can change easily.

The upshot is: changing colours on the fly isn’t easy. It’s much easier with 8bit palletised images. But believe it or not, despite the fact that the terrain images only use two colours, they actually use at least 255 colours in order to get smooth edges, as well as being alpha’d. Changing to palletised images just made it look awful.

Once solution that I knew could work would be to write a custom shader. Shaders are dark voodoo magic that happen on the graphics card. And I’ve never written one in my life. Had Mike been around, he would have knocked one out very quickly. But obviously he wasn’t, and as I was heading toward the original release of The Lords of Midnight, I didn’t have time to look into them.

Now however, I couldn’t ignore it any longer. With the latest update of The Lords of Midnight sat awaiting approval from the platform holders, I turned my attention back to Doomdark’s Revenge, and the next thing to address, was making the dawn landscape look proper. I was going to have to learn to write shaders. And that’s what I spent yesterday doing.

The end result is that I now create all my terrain images as being black and white. These two colours will be replaced by the shader as the image is being drawn to screen. However, I can’t just replace the two colours, I need to make sure that I where the two colours meet they get blended.

mountain_fragmentIf you click on the Mountain fragment you will see a blow up of the image, and see how this would work. Affectively the image can be considered thus; all black, all white, mixed. The mixed part always being where the two meet. So if we consider that we will replace all black (0,0,0) with new colour_a and replace all white (255,255,255) with new colour_b, the other colours will be a shade of grey from (1,1,1) to (254,254,254). What we actually do is  use the value of one of the colour components to work out the mix of our two new colours. so 0 is 100% colour_a and 255 is 100% colour_b. A value of 153 for example would be 40% colour_a and 60% colour_b.

Now, it’s not rocket surgery, there’s nothing particularly clever going on here, but for me I had to turn this into a shader, and that was new territory.  However, working within the Marmalade SDK and using the OpenGL ES shader reference manual, and a little bit of google… the process turned out a little easier than I expected.

Here is the landscape without the shader active.

Screen Shot 2013-10-27 at 02.07.47

 

But with the shader active, and the two colours adjusted depending on the time of day, we  get the following.

And, if we now revisit The Lords of Midnight, we get the resulting night landscape that I always wanted.

Screen Shot 2013-10-27 at 01.10.33

 

Not sure when this will make it back into the current release, probably after Doomdark’s Revenge is released and I’ve been able to fully test the shader across multiple platforms. But it will make it back.

Related Posts: