Another sign of life

I’m sorry for the relatively infrequent updates lately but as it’s soon time for vacation (and as more or less every construction site of the company I work for aim to be done before the vacation…) I’ve been working quite a few extra hours a day so I simply haven’t had much energy left to mash my keyboard to provide you with any progress of LBKR.

Since my last post though, I’ve begun to add more minions that the player can summon. The minions fight for the player until they vanish, which they do as their lifetime has passed. (An example is the Minebot and Interceptor, Tech-abilities. Both of them summon a minion.)

This far I’ve fully implemented three of the minions, ‘Demon’, a small err… demon(?) that may be summoned if a certain exquisite gear is equiped. The ‘Fishman’ that is summoned by finding it’s lair in Oxygen Processing and the ‘Spirit of Nan-Ma’altxuuz’, can be summoned by holding a certain unique weapon. All of the minions can additionally be summoned on demand with a new consumable item called “Callstones”.

As for new items and gear, I’ve added four new weapons (whereas three of ’em are of exquisite/unique rating.) and three new exquisite armor pieces. Additionally there are four new super(unique) item modifiers:

2017175221225

Multi Healer > Restores health each time you are rewarded with a multikill bonus
Streak Feet > Increases your move speed for a short while after each kill streak bonus you are rewarded
Head Hunter> Provides a small chance that any master- or greater ranked monster that’s killed will drop a unique gear
Blood Gift> 5% chance that a demon is summoned when a monster is killed by the player

As for more common gear, there are 9 new item modifiers. Their effects range from reducing ability cooldown and costs or increase the amount of currency and resources dropped by monsters on death, to buff or modify the effects of specific player abilities.

201715220643

There’s also a new damage member/effect called “imprison”, victims can no longer move while under the imprison-effect but they can still use their attacks. As with the other damage effects (Bleed excluded…) this effect wears of after a few seconds.

As for the UI, I’ve still not quite found out why the main menu does not respond to actions when playing on Linux in fullscreen mode, I’m having a hard time trying to recreate the problem but I will keep trying. Meanwhile I’ve started to redesign the menu slightly, there are no major changes, merely regarding the layout.

For the in-game UI I’ve added new player debuff-state icons to the HUD that will be enabled whenever the player’s stunned or imprisoned, to make it more clear why the user can no longer move their character, and any minion that is summoned by the player will have their remaining lifetime displayed just above the player character’s health bar.

Blades & Chunks

nWpnsI’ve had a lack of time to work on LBKR the past two weeks but there has been little progress atleast! To start with, there are now 2 new exquisite weapons named “Sovereigns Bane” and “Spine Moiler”, accompanied by two new super modifiers.

Sovereigns Bane will steal health from your character, when it has stolen points worth your max health value it will summon the spirit of Nan-Ma’altxuuz, one of the first Forsaken emperors, to fight for you.

spirit

The Spine Moiler will make all monsters within 3.3 meters from your character to bleed for 2 – 5 % of your overall damage rating until the monster(s) die.

More items than these two will be implemented before 2.27 is released, both common gear and exquisites.

u_destructos

As mentioned earlier, alot more of the environment will be destructible- you can see some of the results on the screenshots below!

2017154225227

SEQ1SNAP0

Other than that, there have been some further code optimizations and I’ve created a few new world chunks for the Ch.8 [Highlands], Ch.7 [Caverns], Ch.6 [Wildlands], Ch.5 [The Bridge], Ch.3b [Armory]

chunks

2017157141945

Bumpy ride & AI Updates

I’ve received several messages and mails about the Main Menu GUI doesn’t work if playing v2.26 in fullscreen mode on Linux. I don’t know what cause this issue but I am looking into it and will make sure to release an update as soon as it’s sorted out!

Perhaps your curious just what I’ve got planned for next version (2.27)?

One of my primary goals has been to improve the AI, or to be more precise- have the AI evaluate combat situations more often and come to better decisions.

idea

But let’s start with the basics. The AI in LBKR meassure intelligence by what I call decisions per minute (“dpm”). The name sort of speak for itself but in any case, each time a monster reach the time to make a new decision it will try to re-evaluate its current situation and take the most preferrable approach.

This has already been implemented for a long time now actually, but the AI have only had two options to decide upon. If its health is low it will most likely try to run away and find friends that can protect him, else he will continue to fight. Ranged monsters have also been able to decide to step away from the player to get some range in between. There’s not been any major changes in this method though apart from some more decisions beeing available for each monster, one improvement worth mentioning though is that there is now support for ranged monsters to perform melee attacks properly if the player is too close, I’ll just have to add melee attacks for them- this could come in handy as for example to give the monster a chance to knock back the player with a melee attack in order to use his gun at a safe distance.

201714111439

On top of that, monsters could earlier only attack while standing still in it’s combat-state and when the player was in range, where range was a pre-defined value for the monster instead of having the value on the attack itself. I now define the range of the attack instead, this has allowed me to make the AI loop through all attacks at each DPM limit/hit and see if any attack is possible to use even if the AI is in any other state than it’s combat-state and even if the AI is further away than it’s preferred attack range.

Another part of the AI’s “intelligence” has been how to decide which attack to use next. Earlier this has been done simply by putting a penalty (“cast pen”) on the attack used most recent by the monster. The penalty has been predefined for each monster and the monster has not regarded how appropriate it would be to use the attack, which has made melee attacks pointless for ranged monsters as they would just try to strike air for no reason if the player was too far away. (This, due to the ranged monsters having a far greater attack range than melee monsters… obviously.)

20171450457

Furthermore this also forced the AI to attack in a certain pattern. I’ve decided to approach this problem with a more dynamic penalty system for the AI attacks, which continuously determine how appropriate the attack would be to use. As the AI use an attack it will still receive the “cast pen” as earlier, but on top of that there’s a fixed penalty determined by how powerful the attack is (“power pen”). This penalty is used for rating the attack so that the AI knows which one of his attacks that are the most desired. Then there’s the range penalty (“range pen”), it will be multiplied by the range between the player and the monster.
Certain attacks also have additional penalties that deal with properties more specific to the attack it belong to. In the end, when the AI is to choose the attack to cast next, the sum of all penalties will be split by the number of penalties that were added in order to get the average/overall penalty. The attack with least penalty will then be used.

Next, I’ve decided to remove the attack hit/miss dice-roll that occured every time either the player or a monster attacked. I felt it was kind of silly and not what I wanted, so as long as the attack hit it’s target physically in the game world it will inflict damage.

evade01 evade02

In order to keep the possability to evade attacks I’ve implemented a way for the player to jump away. The Tech and Soldier classes will perform a dodge-roll and the Cryptic class will teleport a short distance if the player’s moving in any direction while pressing the left Shift-key.

warp

I did bump into a problem though that’s been around all along, but I had forgotten about it completely. As a (melee)monster attacks, its attack will inflict damage the very instant that the AI starts to play the attack-animation, as this made it impossible to dodge attacks- therefore I’ve spent a few hours to sync all AI attacks so that they won’t inflict damage until a certain delay has passed from the moment the animation begins- giving the player a chance to roll away and avoid taking damage from the blow.

To wrap it up for this time, I’ve improved some of the visuals in the game further, alot of particle systems/FX have been tweaked, the blood splatter FX among others and some player animations have been overhauled.

splatter bash

stomp

The blood-stain textures have been updated with a bump-map to give it some nice depth although, I must admit that the bump map might be slightly to deep at this time. I’ll make sure to tune this down slightly before 2.27 release.

stains

Finally, I’ve optimized the AI attack behaviours, AI instruction (ie. pre-scripted “events” that force a monster to go to point A to press button B. This is mainly used for bosses and unique monsters.) behaviours has been optimized aswell and so has the entire Gore/Blood framework, and the Cryptic player-class first ability “Carrier” has been replaced with a new one:

SEQBarrage