This post has been mirrored from our site.
Another Devlog, this one super late! Luckily it is also packed full of content! In the past month, the AI and Quest system has been worked on, making more and more quest types possible. We’ve also added new creatures, attacks types, clothing, and even an overworld Dungeon! If you missed the devlog, be sure to check it out here. Otherwise, let’s get poppin!
Location: Gar-Kai Ruins
This location was designed for a demo in a few days – we’ll be repurposing it later on!
New Clothing / Armors
A bunch of new clothing assets have been made! The most exciting is a set of mage robes, but we also made some blueish “thief” clothes.
We also got a nice demo menu, allowing the player to pick from three characters. Demo mode can be toggled in a file, allowing for easy debugging!
New Creature – Yanaki
I modeled, rigged, and animated a simple creature called the Yanaki. Lore-wise, the creature is naturally benign, unless provoked. They are often hunted for their tusks, but also invaluable for their ability to carry huge loads, and are often used as pack animals in Ardenfall.
Several new attacks and new features on existing attacks have been added.
The Projectile Attack now includes options to shoot multiple projectiles at once, with whatever count and spread the developer desires
This isn’t technically an attack, but rather an addition to various characters. This adds a small complexity to ranged enemies, who now have to time their attacks to the shield’s rotation.
A teleport attack does exactly what it sounds like – teleports the npc to wherever it thinks best. There are several options on what location the npc should choose – whether it’s near their target, behind their target, or far away from their target. This will also be used for “digging” monsters, similar to mole rats in Fallout 4.
A simple system is being built, to allow “liquids” to splatter onto surfaces. This will be used for attacks (a monster spewing acid), environmental hazards (a pipe with flowing lava), and breakable potions. The system uses a particle system for simple decals, and Unity’s Job system for collision checks.
Package System Additions (Technical)
I’ve also been at work on the AI Package system, implementing important features. Quests and Dialog can now add or remove AI Packages to characters, which allows overriding how the character acts in certain situations.
In the above example, this is a dialog topic that allows the player to “purchase” a tamed Yanaki. Choosing this option adds a “follow” package to the Yanaki’s Idle Stack, with the “follow character” value being the player. Note that in a real use case this would be much more complex, with having to check if the yanaki is alive and nearby, having a cost, and only being able to do it once, features which I have now added. However, the image displays several of the new features – mainly, the ability for packages to declare their variables (in this case they are “enable”, “followPosition,”followCharacter”, and “markAlly”), and the node will automatically register the necessary ports. Another important feature added was graph containers, which allows graphs to have “external variables” which can be modified on a per-character basis.
Status Effects (Technical)
For quite a while a system called CharacterEffects has been used to apply various effects onto characters. These effects were individual Scriptable Objects, and were used to do fire damage, poison damage, and health boosting, as well as various stat modifiers, such as speed boosts.
However, this system was rather clunky and just not fun to use. Handling all sorts of individual character effects per type was a pain, and just wasn’t working for me. Plus, there was no way to see what effects were affecting the player, which isn’t very transparent and could be confusing, as well as limiting experimentation on the player’s part. Thus… I built the Status Effect System!
This system functions quite similarly to the old system, however instead of having various CharacterEffect assets that modified a single thing, there is a StatusEffect asset that holds a lists of Effects that are applied when the status effect is applied.
All sorts of Effects are planned to be added. Currently, there are two: ModPerSecond, and ModStat. ModPerSecond modifies Health, Stamina, or Mana per second, either multiplying or adding. This can be used to hurt the player’s health, or boost their stamina over time. Many potions will use these. ModStat is used to modify a stat (attribute or skill) by either multiplying or adding to the value. This can be used to temporarily (or permanently) modify the player’s stamina skill to be 10%, or modify the player’s speed by -1.
Example of a Status Effect’s list of Effects
Another big feature is the “Blacklist Status Effects” list, which allows a status effect to remove other status effects. For example, a “Wet” status effect would probably remove a “Fire” status effect. This instantly makes logical systems that function across the board without fancy programming!
Quest System Additions
I’ve added a new object type – a location. This allows the developer to simply add a location, which can be used as a marker position, or something else.
Quest Object Visual
One annoying issue I’ve had is knowing the locations of various quest objects when I’m editing a quest. I implemented a super simple solution, which simply marks the selected quest’s objects in the scene view!
More Save System Integrations
Getting systems to use the save systems has always been something I put on the backburner. This was simply not possible due to us showing a demo in a few days, so I managed to get the save system integrate both AI systems and Quest Systems! This was a huge amount of work, but was absolutely worth it!