1. The Hand of Merlin
  2. News

The Hand of Merlin News

Dev blog 98 - Gathering of the Gods

This post is written by Mat, our gameplay designer.

Hello again! Mat back to introduce everyone to our next patch - Gathering of the Gods!

We are introducing two major content items here.

First and foremost, we got two new Guardians: Oberon and Atlantes.

Oberon, The Fey King, can be attained by making good deeds across the continents, calling the attention of his court. He features wondrous nature/fey-type effects, including the ability to absorb damage, creating flowery covers, and increasing movement based on the amount of buffs you have.

Atlantes, on the other hand, is a more recluse sorcerer. You already met him during your travels where he explained your fate, but there’s far more to be discussed with him. As you visit more Arcane nodes, you’ll know more about his stance in the Struggle, and eventually will be able to wield his technological powers, including removing enemy passives, applying global buffs, and even summoning a friendly automaton to fight for you!

But that’s not all! Introduced in the previous blog post, the Nourishment System is ready to be played with. Now supplies are a running resource that will increase your characters health and armor, if you can keep everyone fed. Standby for adjustments and updates on the exact numbers, and let us know what you think!

Of course, enemies received small attribute boosts across the board to account for the power creep - so play it safe as you get to know the new system.

We’re closer and closer to 1.0! Let us know what you think of the new update on our Discord server, and good luck out there!

Mat

Dev blog 97 - Nourishment!

This post is written by Mia, our gameplay designer.

Hello there!

This time Marko’s Wednesday post is being usurped by Mia. Hello! I’m the other game designer (other than Mat, that is) that is working on The Hand of Merlin!

Today I bring you news on what else is coming up in the next big content update, along with the two new Guardians. It is the “Nourishment System” which is an overhaul on how the supplies worked till now.

Supplies are one of the resources that you can gain, lose, and trade in the game. While having supplies (other than in easy mode) would virtually mean nothing, not having supplies would cost all of your heroes one health point for each node visited without supplies. It was apparently something that was easily ignored and not that impactful on the game. The damage may have been a bit more brutal in hard mode but it was still just not rewarding or interesting enough.

So, we sat down and brainstormed on what would make the supplies more impactful and actually make you want to go out of your way to buy or pick them as a reward. A lot of ideas were thrown around but what we settled for in the end is…

[h3]The Nourishment System![/h3]

It’s based on the idea that if your heroes are (or not) fed, their physical capabilities change. A well nourished person is stronger, faster, and has more energy than a person which is malnourished and/or has not been fed properly for days.
As character attributes such as power, speed, and range are meddled with in so many different ways (status effects, abilities, relics…) we decided to tap into an area which we have not touched yet - influencing max health (and armor).

There are 5 stages of nourishment:
Deep Negative - decreases max health and armor by 30%*
Negative - decreases max health and armor by 15%*
Neutral
Positive - increases max health and armor by 15%*
High Positive - increases max health and armor by 30%*

*The exact percentage is suspected to change for balancing purposes



Starting on neutral, the hero's current stage of nourishment changes depending on supplies.
Traveling with supplies will gradually bring you up the scale towards “High Positive” and traveling without supplies will gradually bring you down the scale towards “Deep Negative”.
It’s not possible to skip a stage, so just as the body needs time to gain back strength that was lost so will you have to slowly make your way back up through each stage should you reach the deep negative state of nourishment.

Changing just the max health while keeping the current health unchanged was more often punishing rather than rewarding, so the current health changes along with the max health while keeping the ratio static.
This did bring along a number of issues, the main one being that should someone go up and down the scale they could see the original number change. Rounding up numbers does that, and it seems to be unavoidable. However, at least you can rest easy knowing that these changes will always be in your favor. So if you happen to gain that 1 health point, good on you! MarkoP hates me for it, I’m sure…(no, just unstable systems :) - MarkoP)

Do come join us on our Discord server to share your thoughts or ask any questions you may have!

Mia

Versus Evil Autumn Sale Going on Now!

Hello, everyone!

Black Friday is almost upon us once again, which means discounts galore across our entire catalog!

Earlier this month, First Class Trouble left Early Access and launched into Version 1.0! Not only that, but First Class Trouble also launched on PlayStation platforms, and with the power of cross-play, you can play with PlayStation users! Check out the new elements and improvements in Version 1.0 if you haven't yet!

In other Versus Evil news, UnMetal won "Most Fun" by Indie X Online 2021's Award Ceremony! Huge congratulations to the UnMetal team! Why not play the game to see what's so fun about it for yourself?

We're offering some of the biggest discounts ever on our titles, so go and snag them while you can!

https://store.steampowered.com/app/953880/First_Class_Trouble/

https://store.steampowered.com/app/1203710/UnMetal/

https://store.steampowered.com/app/600610/The_Hand_of_Merlin/

https://store.steampowered.com/app/1206600/Almighty_Kill_Your_Gods/

https://store.steampowered.com/app/1222340/Sockventure/

https://store.steampowered.com/app/888530/Yaga/

https://store.steampowered.com/app/904400/Cardpocalypse/

https://store.steampowered.com/app/1003120/Hitchhiker__A_Mystery_Game/

Dev blog 96 - The Undo improvement

Hi all!

I’m back with a story about how we improved the undo functionality.

To give a bit of background, the skirmish portion of our game is implemented so it can be simulated in advance of actually using an ability. Every time the hit tile changes, we make a copy of the relevant game state, and run the whole game logic through it, with some flags set to make the end result usable for other things. The output of that process is a list of actions that change the original state to essentially match the simulated one.

The original reason why we did it this way was that we wanted to have a spell like “revert time” which would play the last sequence of actions in reverse. This obviously never went in because of lack of time and some additional tech issues, but the general infrastructure is still proving to be useful. Since we have a copy of the game state with all the changes an action would do, we can query differences between the original and the cloned state. This is how we implemented exact previews of how much health a unit would lose and whether it would die from the hit, where a unit would get pushed or pulled to, which covers would get destroyed, etc.

The only way this can work consistently is if all relevant objects are referenced with an equivalent ID. Since the codebase is in C++, the option of pointers is there, but is not useful because there’s no easy way to translate/map pointers to between two copies of an object that are considered equivalent or “the same”. Thus, we use handles. Pretty much every important thing is mostly referenced to with its handle, which is in practical terms just an index into an array. Each “thing” would be an element in an array, and if we ever needed to destroy the “thing”, we would just mark the slot as “no longer in use”. This means we could reuse slots when, say, status effects expired and a new one got created, it would just be placed into the same slot as an expired one.

This was the main issue with the system to prevent full undo functionality. Undoing a sequence of actions where one status effect expired and another one got created in the previous ones slot means information loss. There is no easy way to restore the information about the previous status effect in that slot because the new one overwrote that information. This is why creating and destroying things in those arrays wasn’t able to be undone.

The change we did was to no longer reuse slots. Each “thing” that gets created has its own slot which is forever owned by that thing and nothing else. When a status effect expires, its slot is marked as retired, but the information it had is still there, untouched. If we wanted to revert/undo the expiration of that effect, we’d just undo the retire operation on that slot and that’s it, the “thing” is back just as it was before.

Ofcourse, each action has a set of micro operations that need to happen to fully restore the state back to where it was. A status effect tracks the units it’s affecting, the units which are considered the affector of that effect, both types of units also track which status effect is affecting them and which effects they caused, the creation and removal of status effects can cause unit attributes to change, etc. Each change to any of these things is a micro operation that has to be fully revertable for the system to work properly.

To prevent everything to actually be undoable, abilities will define whether their use can be undone or not. All position changing abilities are currently undoable (Run, Sprint and upgrades, Translocation, and a relic or two). And the whole point of this was to fix Tariq from being unable to undo his Run ability use, because his passive effect is implemented as an aura that has a feedback loop with the status effects created on enemies to increase Tariqs power.

And there you have it. A sneak peek of how we do stuff with code!
If you want to ask questions or comment on something you read, you can find us on our Discord server.
Cheers!

MarkoP

Patch Notes - Early Access Build 676113

New features:
• Improved the visuals of several of Merlin's Spells.

General fixes:
• Encounter state is now saved at every page turn, preventing cheesing random outcomes by restarting the game.
• Fixed a possible exploit for infinite Supplies through encounter interactions.
• Fixed a bug that could cause a rare scenario where you only needed to kill two Pylons in Jerusalem to win the skirmish.
• Rana's passive (Primal Presence) should no longer trigger after she dies.
• Far Striker (gained via Hunnic Arrow relic) should now only trigger from ability use.
• Wyvern and Dire Wyvern can no longer trigger their passives out of each other.
• Stasis status effect should no longer expire if a unit took damage from Poison/Burn/Bleed type effects.
• Fixed a bug when using the gamepad where tile grid could remain visible in the world even when not in tile picking mode (i.e. targeting an ability).
• Fixed a bug when using the gamepad where the tooltips could remain visible during enemy turn.
• Fixed several typos.

Optimizations:
• Optimized AI, reducing its think times by up to 50%.
• Optimized many meshes without loss of visual quality, reducing the game's memory requirements and increasing its performance on lower end hardware.
• Optimized light sources on some combat maps, offering substantial performance gains on lower end hardware.
• Optimized away the stall/freeze that could happen when first starting a game, after loading is complete and just before entering Lobby.

Quality-of-Life improvements:
• Added a loading progress when transitioning between game states (lobby / overworld / skirmish) in case it isn't instant (such as on low end PCs with slow disks).
• While targeting a unit with a damaging ability, a skull icon will now be shown if the target would die from the damage dealt.
• Changed visualization rules for Decoy, Desecrate and Volley skills, making their effect area clearer to read.

Gameplay balancing:
• Changed the status effect granted in "Castle of the Moons" to grant 1 AP in next combat (instead of extra damage dealt to large enemies).
• Disable effects (Rooted, Staggered, Stasis and Stunned) now decay at turn end (instead of at turn start), making their exact duration clearer.
• Green version of Oozing Singe+ (upgrade of Mystic's Singe) now deals Rooted instead of Slow.
• Reduced the base cooldown of Ranger's Hunter's Mark skill (and its upgrades) from 3 to 1.
• Mystic's Scavenging Singe skill (upgrade of Singe) now only refills ability uses once per match on a kill, instead of on every kill.
• Removed friendly fire from all versions of Warrior's Cleave skill. Now, players can choose between 'Wider Area + Pull', 'On-kill effects', and 'Debuff effects' variants. Renamed Judicious Cleave into Carving Cleave.
• The debuff inflicted by Warrior's Dueling Slash skill (upgrade of Slash) no longer reduces damage dealt only to the attacking Warrior, but to anyone.
• Basilisk's Toxic Buildup and Dire Basilisk's Toxic Reserves are no longer passives. Instead, they're regular status effects, meaning they can be purged via skills or spells.
• Basilisks now have to spend their first turn gaining the initial stacks of Toxic Buildup.