Skill Casting Guards!

Wed 13 Apr 2016, 17:24 by bencelot



Today I'm going to code in a very cool new feature - skill casting guards! We've got 33 skills to play with and can have all sorts of awesome new enemy types to fight against. You'll be dodging enemy plasma balls, shooting through the cracks of enemy force fields, using your skills to reveal sneaky invisible enemies and more! Not only will this make Stealth significantly more diverse and entertaining to play, but it will also teach players how to fight AGAINST skills in PvP, which is just as, if not more important than using the skills themselves.

Image

Automatic Skill Casting
In the map editor I will have the ability to add skills to the guards. I'm thinking you will be able to customise a few things. The skill itself, the skill level, what difficulty levels the skill will work in, the casting rate, a damage multiplier and a few other things. There will then be an add skill button which adds the skill to the list. Here is a very ugly mockup of how it will look:

Image

So down the bottom I'll have a skill dropbox, you select a skill like Force Fields. Then you configure the level and what difficulties this will work in. Then there are a few specific properties just for Force Fields. I'll need to code these in on a skill by skill basis. Here you could have a damage multiplier on the explosion, an enemy range the guard must be within before he casts the skill, and a timer which makes him cast the skill every 15s. You then click the Add Skill button and it appears up the top left in a list, with numbers underneath showing what difficulties this skill will be used in. Lots of configuration here!

Next up I need to think of how each of these skills are going to work. Of course the skills in MF are very complex and I'll never code an AI that can cast the skills as well as a human player will, but that's ok. The guards don't need to cast the skills in a super smart way, they just need to do something interesting so we have lots of varied enemies to fight. Now skills in MF can be broken into 3 main categories:

Pure Passive Skills
These skills will be very easy for me to code in. I won't really have to add any specific AI for these skills, simply give the guard the passive and let them play as normal. If they have Final Focus they will simply gain accuracy when it triggers, if they have Disabling Drop they will disable you if they happen to land on you (which a map maker can configure with way-points), and if they have Static Charges they will naturally gain mana as they shoot at you (and give you a very nice positive penalty to exploit too!). Easy stuff!

Add-On Passives
These skills are also going to be quite easy to code in. A skill like Stagnation isn't really going to change the AI behaviour of the guard, he's still going to cast Radiate when an enemy is within range regardless. There are a few skills in this category which need special attention though, such as Spike Trap and Smoke Bomb (which are really more like actives that happen to cast at the same time as their base). So I can treat these like the proper actives.

Active Skills
This is the tricky bit and I'd love some ideas here. There are a lot of active skills which need specific AI to determine exactly WHEN to cast the skill, and perhaps WHAT to do once the skill is cast. This has to be done on a skill by skill basis, so give me your ideas! Again the guards don't need some super amazing AI here, just to cast the skill at an interesting time based on a few conditions. The whole point here is to create a diverse and fun bunch of enemies to fight. Let's go through these active skills and see what sort of AI could be used for the casting:

Force Fields: Simplest approach would be to cast this as soon as they enter combat, which would effectively make them harder to aim at. Plus Bouncing Bullets would passively bounce bullets back at the player and the explosion would hurt anyone nearby.
Radiate: Once they get within 50% of the Radiate range they auto-cast it.
Frenzy: Just cast as soon as they enter combat and keep it on till they die or run out of mana (or maybe the casting frequency could toggle it off after a configurable Xs?)
Assault Armor: Cast once their health gets below X%.
Mana Leech: Very simple, aim at the enemy and spam spam spam!

Invisibility: Hoo boy how do this one? There's really no point doing this unless they're moving. But in general it could be fun if the guards keep toggling invis on and off and moving around, popping into and out of view and taking you by suprise. Maybe they cast it as soon as they spawn and it will automatically disable as soon as they start firing at you. On these guards you could give them 9999 mana so it doesn't run out. Thoughts welcome here.
Venom Shot: Spam that shit!
Blade Fury: Tricky one! They need AI for when to cast it on and when to cast it off. They should cast it on when they get within a certain range, and then cast it off as soon as the burst becomes available (and they're in range). Would be fun to time their bursts and dodge the attacks.
Spike Trap: Basically needs to be treated as a separate active to BF. If a guard has BF they should cast it from a further range and aim the spikes 10m infront of the player. Alternatively just aim them directly at the player as thsi would still reduce the players movmeent options.
Teleportation: This one will be sick. I reckon they just choose a random spot within a 10m radius of the player and teleport to it, taking the player by suprise and requiring quick reflexes to dodge.
Black Hole: Same logic as Radiate, cast once within a sufficient range to slow you down. Probably some sort of smart AI like don't cast on a player if anothe guard already has them locked in a BH, but wait till that expires then take turns.
Smoke Bomb: Like Spikes it's pretty much a separate skill. But maybe the behaviour should still be the same, just cast it when an enemy is in range of the Smoke Bomb instead of the BH? They should probably be smart enough to leave the smoke bomb after casting it though!

Self Repair: When the guard's health goes below 30% turn SR on. Once it reaches 100% turn it off again.
Plasma: Point and click baby!
Energize: Easy one, just cast it once as soon as they spawn.
Shockwave: Lots of options here but the simplest is simply to cast it on a player when they are A) in range and B) holding barrier. The revealing property isn't really necessary for the AI anyway, and in doing this they will probably freeze a few of the player's incoming bullets which will be nice. Smart players could even exploit this by holding barrier very quickly just to get the positive penalty damage reduction.
Lasing Orb: I'm thinking simplest approach here is to simply cast it when they spawn and barrier everywhere to drag it around. Dealing more damage and moving in barrier nice and fast. The Orb itself will need to be deleted either when the guard dies or when the next stage begins.
Bullet Time: This one is a bit tricky as there are so many ways to use the skill. But I think a fun mechanic to play against would simply be a guard who toggles BT on when they enter combat, and then toggles it off after Xs (configured in the casting time). This will routinely unleash a giant blast of seeking bullets at the player which you need to dodge. These sort of enemies would be great to have in Filtration for example so your Shockwave has an extra nice use to freeze these bullet blasts.
Stolen Seekers: This is an add-on to BT but I think if a guard has this coded in the AI could be tweaked to instantly toggle BT off as soon as they have 5 bullets inside the BT.

Of course I welcome ideas and suggestions for how these skills will work, but even with these simple rules it's gunna be great! Even something as simple as having 2 venom guards in the back, 2 Force Field guards in the front, and a dude with Static Charges in the middle would make for some very interesting mechanics. How do you play it? Before you just killed them all in whatever order you wanted. Now though? Maybe you try and kill the 2 Force Field guards first before their FF explosion triggers. Then you intentionally get hit by a venom shots for the seeking positive penalty, then finish the venom dudes off to avoid too much DOT damage. Then finish off all the normal unskilled guards and save the Static Charges guy for last because his positive penalty is sooo sweet and you want the free mana regen. Then from out of no where a boss teleports behind you and you gotta run run run!! Great fun!

Waypoint Skill Casting
In addition to these automatic skill castings, I will add the ability to cast skill at specific moments determined by the guards waypoint system. Just as you can already configure a waypoint to start firing automatically at a certain spot, I will have the ability to automatically cast a skill at a certain time when they reach that waypoint. This way map makers can script more advanced skill usage if they need to. This might be best used with skills like Invis, where they cast it on at a certain waypoint, move to another waypoint and then cast it off again. That sorta thing. I'll have to think about how this will work with each specific active skill though and might need to provide a few additional customisation options.

Anyway gimme your ideas and feedback! This will probably take a week or two to code in but it will totally be worth it. After this maybe I'm confident enough to tackle AI vehicle driving and chemical placement.. but one thing at a time ;)


6 Comments


STM1993 says:

Wed 13 Apr 2016, 18:16


Notes/Suggestions:
Active in green if I have a completely different suggestion.

Force Fields: I have a more interesting behavior to suggest. When the guard isn't shooting at you, he will actively face one of the plates towards his target - very useful behavior if you pair it with firepattern/delay, a weapon like knife or if guard is reloading.

Frenzy: The latter is preferable; 0 means keep it on forever, timer will determine how long he keeps frenzy on.


Invisibility: A few ways I want to use it: waypoint invisibility, turning on invisibility when disengaging like my above suggestion with Force Fields (timer sets how long to stay invisible instead of strictly by firepattern, useful for making the guards escape/chase with dash), becoming permanent invisible and waiting for the player to come. I can imagine this being really good for advertising sonar cells' usefulness.

Blade Fury: I think whether they should burst or not should be determined by the "cooldown" setting - 0 means leaving the blades on(permanent, maybe even no durability loss).

Spike Trap: I note that Spike Trap should override BF if both skills are ever used together because they'd conflict too much.

Teleportation: It should simply teleport to the side of the player(left or right determined by guard's hand), offset by about 5m. It would be incredibly silly if my guard teleports into the ground below instead of on the player, especially when something requiring accuracy like Disabling Drop is being used. Using lead-target and no-lead target determines if the guard teleports ahead or directly on the player's last seen location.

Smoke Bomb: You could make the guard leave the smoke bomb if their firepattern tells them that they are not shooting, and just continue shooting at last seen location if they are shooting.


Self Repair: I'd actually like to have a lot more control for Self Repair if possible - I'd want the guard to SR at a HP I want and not just 30%, how long he SRs for(both for timer & HP value) - this is something that can't be done with waypoints. I might even want a guard who is permanently in SR.

Plasma: Use lead target behavior based on their guard setting.

Energize: If guard has "Phasic Bullets", I think you should code in allowing guards to continue shooting if they can find a way to ricochet the bullets to hit you.

Shockwave: Would be nice if there is a way to just make a guard spam Shockwave 1 non-stop regardless of range though...

Lasing Orb: I think a better way to code it in is to make them cast the orb when they first enter Barrier and then drag it around - no difference if you make the guard barrier from the start, but a really good way to make sure the guard isn't bogged down until he enters combat. The orb itself should fade away overtime like if the player leaves the game rather than last the rest of the stage. Remember to make orb's position reset if players fail the stage.

Stolen Seekers: Replace "5" with "X" as indicated by the cooldown setting. Since BT & SS settings may clash, you'll have to make calculations to make sure BT will be in rest state and be in the correct cooldown.


Waypoint casting is certainly excellent.
(edit: formatting)

edit2: As discussed in chatbox, give guards who have skills mutant arms to indicate they have some special ability, since heads are already used to indicate HP.


bencelot says:

Wed 13 Apr 2016, 18:53


Good ideas STM, I agree that some skills might need more customisation to maximise the diversity. So I'll rework the proposed system to include specific configurations on a skill-by-skill basis. For example Force Fields could have a casting range, Self Repair could have a custom min/max health range, and Teleportation could have a custom range for how close to the enemy he should teleport. I've edited my original post with a very ugly mockup example of how this could look in the editor.

Btw I agree that giving the guards mutant arms would be a great way to indicate that they have some special ability (wonder if it should show for passive skills too or just actives).


bencelot says:

Sat 16 Apr 2016, 23:32


Oh hellllls yeah!!!


Image


Asterparity says:

Mon 18 Apr 2016, 04:53


I imagine a few neat tactics that an organized regime might employ, using these abilities.

First off is teleporting knifers with abilities such as Radiate and Smoke Bomb. They could use Bullet time too, if using knife. Asylum comes to mind with this strategy.

Force Field roman shield formation.

Invisibility is a really trolly ability. Could have a sentry guarding an area, and you'd never know!

Hooo boy, if you have 3 guards, with alternating delays for using it in the player's vicinity, you could have a wall of bullet proof. Probably with Lasing too, that mana regen.

Well that's all my ideas for this topic. Sounds it'll be one heck of a feature. Especially if Knickers can copy abilities you use, like Invisibility.


bencelot says:

Mon 18 Apr 2016, 17:04


Good ideas. Especially Knickers copying your abilities.. I'll have to think of a smart way to do this. It could be as simple as knickers automatically copying you when you go Invis. Just gotta think of how it would work in coop. Perhaps whoever controls Knickers determines his behaviour.


Speculation says:

Fri 22 Apr 2016, 02:49


Keep at it, ben

Blog Posts For Geneshift


Version 1.04: Geneshift Miami!

(0)


Version 1.03 Adds New Camera!

(0)


Version 1.02 Adds Three New Skills!

(0)


Geneshift has launched on Steam Early Access!

(3)


Geneshift v1.00 Released!

(0)


Play the Multiplayer Demo on Steam Today!

(1)


Geneshift hits Steam on May 23rd, 2017

(0)


Official Discord Chatroom

(0)


Geneshift v0.997 Released!

(0)


Geneshift Launch Trailer is Live!

(7)


Server Downtime

(0)


Geneshift v0.996 Released!

(1)


Steam Store Page is now Coming Soon!

(0)


Steam Integration & Achievements

(12)


Geneshift v0.995 Released!

(1)


Geneshift - new game name!!

(4)


3D Vehicle Models!

(36)


3D Player Models!

(34)


Time for Graphics!

(10)


Skill Casting Guards!

(6)


Campaign Stage 6: Inferno

(6)


Updating the particle system

(2)


Stealth speeds by Outbreak in Speedruns!

(1)


Version 0.994 released! Introducing Stealth mode!

(0)


Graphics fun

(2)


Trigger music with bombs and text zones

(1)


Making Music!

(22)


Version 0.994 test build is available!

(22)


Started work on the third campaign stage: Driving Downtown

(4)


Just fixed an 8 year old bug with MASSIVE performance gains!

(2)


Guard Waypoints!

(59)


Version 0.992: Speedrun Leaderboards and new skill scaling!

(0)


Leaderboards are done!

(2)


New Version, new trailer, new year!!

(17)


Finished the new trailer!

(3)


Hooray! My laptop can take video!

(0)


Version 0.99 Released!! Amazing graphics and new chemicals!

(6)


Rewording all the skills

(8)


Working on team chemical vision!

(15)


FINALLY finished map making! Thank god.

(3)


Free skill resets on mutants under level 30!

(11)


Reworked Barn, Canal and Asylum

(9)


Reworked Downtown

(0)


Added the Newbie Checklist!

(7)


3D Models!! Mutant Factions has finally gone 3D baby!

(19)


Just rented an apartment in Peru!

(0)


Update on plans and Menu Music!

(9)


Massively expanded the in-game tutorial guide

(0)


Textured, Animated, Layered and 3D Fog!!

(5)


Specular Highlights!!

(6)


Added Ambient Occlusion!

(5)


Sexy Soft Shadows!1

(11)


Version 0.98: Some nice balance changes

(1)


A little bit of graphical goodness!

(0)


Brasil trip is over, back to coding!

(2)


Version 0.97: Chemical Warfare polish and skill queues!

(0)


Introducing Chemical Warfare!! Version 0.96 is here!

(0)


Chemical Warfare is finished!

(1)


Chemical Warfare: Graphics finished, coming out soon!!

(0)


Chemical Warfare: super sexy chemical graphics

(5)


Chemical Warfare: Today I finished coding all gameplay!!

(1)


Chemical Warfare: buy menu icons and descriptions

(2)


Chemical Warfare: carrying a chemical graphics

(0)


Chemical Warfare: buying chemicals

(0)


Chemical Warfare: compound graphics!

(5)


Chemical Warfare: HUD, networking and compounds

(0)


Chemical Warfare: point scoring and compound discovery

(6)


Chemical Warfare: menu, networking and compound locations

(0)


What's this blog business??

(0)


Version 0.95! New cash system!

(3)


Version 0.94!! FLAMETHROWERS!!!

(16)


Version 0.936 is out! Superweapons galore!

(7)


Please tell your friends and vote on Steam Greenlight!

(2)


Wooot Woot! Version 0.935 is here! No longer in alpha!

(10)


Check out the new main page!

(8)


Version 0.93!! Brand new ranked servers and CC system!

(3)


Rescaling of Respect Ranks

(2)


Version 0.92 is out! Sexy new maps and Outbreak changes!

(3)


4 new custom-maps servers

(3)


I'm going to be working on Mutant Factions full time again!

(10)


Mutant Factions v0.91 is out! Introducing Respect Rankings!

(4)


Outbreak has been released! Introducing Mutant Factions v0.9

(4)


Subvein has changed names to Mutant Factions!

(7)


12 Official New Servers!

(7)


Mutant Factions Madness: Official Play Sessions!

(12)


Subvein version 0.74 has been released!

(2)


Like Subvein on Facebook!

(8)


Subvein version 0.73 released!!

(13)


Let's Play Together!

(1)


Explosions now dynamically light up the map!

(5)


Subvein is on Steam Greenlight!

(54)


An amazing optimisation!

(12)


Version 0.71 has been released!

(1)


Version 0.7 is out! Translations, Unicode, and New Skills!

(5)


Today I'm going to add translations (переводы)

(34)


Version 0.698 is out! Vehicle netcode and skill changes

(2)


Version 0.697 is out! Restructured weapons, skills, missions

(6)


Version 0.696 released! Improved netcode, AI and skills!

(30)


Playing with pathfinding

(30)


Playing with netcode

(8)


Version 0.695 is here :D

(21)


Subvein v0.694 is rockin' OUT!

(6)


Subvein v0.693 is LIVE!!

(15)


Latest developments: In-game quick levelling!

(41)


Version 0.692 is out!

(9)


New version is out! Introducing v0.691

(7)


Yehaaa!! Version 0.69 is out!

(4)


Woo hoo! We now have new hosting :D

(10)


Woohoo!! Over 5000 members!

(4)


Subvein is back up and running!!

(8)


2000 members. Let's make it 20000!!

(36)


Subvein version 0.6 has been released!

(13)


New promo video!!!

(12)


Added a new Community page!

(6)


Just added camera shake :)

(3)


Updated the news page!

(3)


Start earning community credits today!

(16)


A war is coming..

(6)


Account system coming to Subvein v0.6!!

(29)


First ever demo of Subvein vehicles is up!

(5)


Version 0.551 Released :)

(4)


Subvein version 0.55 Released!

(8)


Version 0.541 is out. Thank god!

(5)


Version 0.54 is different. Experience it now!

(9)


Version 0.54 comes out in 24 hours!!

(9)


Subvein v0.53 is OUT!!

(3)


Subvein v0.53 will go up within 24 hours!!!!

(9)


Added a new SHARE button!

(2)


Added a new FAQ section to site!

(5)


Subvein version 0.52 is HERE!!!

(13)


Subvein v0.52 will be released in 7 hours!!

(13)


Development towards version 0.52:

(70)


Version 0.51 is OUT!

(6)


Welcome to Geneshift!

(167)