A Unity ID allows you to buy and/or subscribe to Unity products and services, shop in the Asset Store and participate
in the Unity community.
Discussion in 'Assets and Asset Store' started by silvematt, Feb 12, 2019.
@silvematt , sorry, gotta ask, how is this asset coming along?
I'm currently working on the new AI and tools to work with it. Making a lot of progresses but a bit far from showing it off.
I'll keep you all posted!
@silvematt - Excellent! More strength to your arm! I imagine you have this covered but hope you're implementing pets, followers, NPCs, quest givers and merchant AI, utility AI for villagers NPCs, MOBs, bosses etc. Also profile AI - stupid to smart, aggressive to defencive, DPS to kite, tank to support, healer, that sort of thing too? Reputations/factions?
Of what you've written is planned:
NPCs & mobs & bosses
About the 'profile AI', I plan to use behavior trees for the AI, that should make you be able to implement your AI logic and behaviors as you wish.
There is a Reputation/Faction system already on the schedule
And you can configure your weapons/gear to have more/less aggro on the AI, so the DPS/Tank/Healer roles can be made by your character or followers.
@silvematt - Pets (which I suppose are sort-of a Follower)? Mounts?
I'll keep an eye on the pets thing, they may be implemented easily within the follower system but I do not assure them to be 'ready' in game but surely develop-able with a behavior tree.
Mounts will not be available at launch but likely they'll come as update/add-on.
@silvematt , good to know. Hoping I can persuade you to earlier implementation of item enchanting, socketing and affixes/prefixes etc....
That would push the release even more, I'm planning to release the RPG Creation Kit in a state where you can build your game, to then implement add-ons to enanche it such as magic, crafting/enchanting, mounts, etc.
Once the asset is releasable, it will be much quicker to work on add-ons.
@silvematt ... yeah, makes sense...
Other than whishing you all happy holidays, I just wanted to update you a bit on the project.
The AI is proceeding extremily good, I'm very satisfied with the results I'm having, still this is taking a bit more time than planned because I've tested a variety of ways of developing it to see which one suits the most the needings, and because the university is sucking a lot of my time, but I'm almost there.
I plan for the end of January to complete the AI and everything that rounds around it, after that the next and last big feature is the Save System.
Once that is completed too and the little things will be finished/polished, the Demo should not take too much time, and we'll have the RPG Creation Kit live on the asset store.
As always thank you for all the support and patience you've had over the last year, you guys rock!
I'll make sure it was worth.
@silvematt , hey! You're getting there, making leaps and strides, looking forward to some screenies on the AI (not the easiest to show in screen captures!) in the early New Year...
@silvematt , Hi there, thought I'd check in and see how this is coming along? Any screenies or updates?
I'm at the end of the exams session, the university leaves me about an hour or maybe an hour and half of free time and it just isn't enough, but it should be over soon.
There's still a bunch of stuff to do for the AI but the base is already there, I think I got something that works very well, built from the ground up specifically for the RPG Creation Kit. As crucial as the AI is in a RPG I want to make sure it's good.
A big challenge was the integration of the NavMesh with how the world works, each cell has its own terrain and NavMesh, and for how hard I tried it wasn't possible to connect the different NavMeshes without having to rebuild them at runtime, when the player reaches a new cell, doing so would result in a very visible drop of performance (even if the generation was async), and the default NavMeshLinks didn't helped. And I really wanted to use the Unity's Navmesh System as it's easy, doesn't require you to buy additional plugins and it's the most widely used.
So I had to code an extension of the Agents where they switch from the NavMesh system to this custom movement system I built, and the results are great! I can't wait to show them off. You can even have obstacles between cells (a thing that generally is avoided, even for the big RPGs as Oblivion/Skyrim) and this custom system will continue to follow its path/its target while avoiding obstacles.
Another great thing I think I did was coding the movements even for the NavMesh system, I've implemented a bunch of custom Steering Behaviours that will surely help and there's the possibility to build as many behaviours as needed. Not only, I've created a bunch of settings that allows you to have all the power of the AI (typically used when the NPCs are near the player), or 'downgraded' versions uses much less performance.
Obviously you can switch them at runtime, let's say when the player gets near.
As for the other features, I've already integrated all the features the RPG Creation Kit currently has with the new AI system, the Equipment/Inventory, Trading, Dialogue, Essential and Respawnable AI and Ragdolls. I still have a bit of work to do on the Combat System for them and enclosing every feature in the Behaviour Trees.
Then It's about closing everything together and build tools to help you deal with that.
@silvematt - thanks for the update and good luck with your exams!
Hello everyone! Here is an update for the AI.
As mentioned in my last post the AI makes use of the Unity's Navmesh System in cohesion with (currently) two movement systems I've developed.
The first one is obviously the Unity's Navmesh System, obviously it works as it should with some twist like different Steering Behaviours (Seek, Flee, Pursuit, Arrive,Evade, Wander, or your own!):
The main problem with Unity Navmesh System is that there is apparently no way to connect two chunks of Navmesh, the built in "Navmesh Link" does not provide a stable, determined or reliable solution and since the RPG Creation Kit worlds are divided in scenes for obvious reasons, I had to write a custom solution to this problem:
When you see the green line (path) updating, that means the NPC is using the Unity's Navmesh system, when he moves but the path doesn't update, we're in the TraversingLink mode.
Since usually things aren't always easy, for force of reason you could need to place an obstacle between a link. This is a terrible thing to do and you shouldn't, I've never found an object between links in Oblivion, Skyrim or Fallout, because the solution to this problem is simple, you just place that house or that obstacle a bit more forward/backward and the problem is solved.
Nevertheless, the NPCs using TraversingLink mode are able to avoid obstacles. The current gifs represents the worst thing you could ever do, placing an object right inside the link with the Navmeshes completely plain on both sides just before it.
Simulating the player being chased by the NPC:
Heading right in the middle of the obstacle (Shouldn't happen unless the target teleports or pass through the wall):
In this other simulation there is an house placed between the links, the Navmesh has some data and the for the obstacle avoidance it's easier to get the job done, still this is not a good practice!
You can setup levels of precision for the obstacle avoidance.
[Full] -> 3 raycasts from the head, 3 from the body, 3 from the feet
[Good] -> 3 raycasts on the body, 3 from the feet.
[Minimum] -> 3 raycasts from the feet.
[Null] -> No obstacle avoidance
This is done to improve performances, you can switch those at runtime (for example when the player gets near the NPC). You may want Full/Good when the shape of the obstacles can be strange (they can occupy the body but not the feet, or the head but not the body/feet).
Anyway, the Obstacle Avoidance's checks only lasts while we're crossing that link, so it shouldn't be a problem.
Another new thing for the AI are NPC Actions, those are spots or interactions that the NPC can use, for example he can sit on a chair, idle on the wall, lean on the counter, pull a lever, etc.
An NPC Action (in the Editor) can make use of Dummies, which are lightweight models that represents the initial and final position of the animations that will be played in order to interact with the object. Those will be super useful as they will show you, while designing your levels, the spots that needs to be clear in order for the NPC to interact.
It's super important to note that you can use whatever animation you want, in this example the NPC sits from left to right, but he could have used an animation where he sat from right to left, or from the front of the chair.
And a single object can have multiple "entry points", a small bench for example can fit 2 people that sits from opposite sides:
NPCs can decide by their own to use those spots (if they're not occupied by someone else) or you could force them to use a specific spot, let's say for a quest.
And there are 2 NPCs sitting (With some bad placeholder animations!):
Thanks for the attention!
@silvematt , thanks for the big update. All looking amazing.
This update looks good! Really looking forward to this.
Just a question, one of the features of Bethesda games is modding through plugin files (.esp) and .bsa files.
Is there any plans to implement a modding system like this?
Definitely not at launch, but may be something interesting to do later on, after more important/requested addons and updates will arrive.
@silvematt - just wondering how it was coming along?
Hello! Everything is going as planned!
I'm currently working full time on the project and really making a lot of progresses.
I'll write a post at the start of the next week or earlier
@silvematt ... looking forward to that...
I'm still working on the AI, as always when I'm doing something, I think "it would be awesome if..." and I end up adding features, but for a thing as important as the AI, I know it is worth.
Persistent References are completed. There is no more work to do on them and they work as intended. It is now possible to have AI, Looting Points, Door and any other kind of Object available anytime, in any scene of any world. That means you can update your AI by simply mentioning its ID, and you can perform any type of action you want like summoning them, teleport them, change their gear, dialogue, path, objective, kill them or doing anything else from any scene and any script. If you kill them, no matter what, they'll stay dead, if you loot them, their inventory will be saved, if you bought an item from a merchant, their inventory will be saved, the golds you gave him or the items you've sold. On top of that, you'll be able to perform any type of action you can imagine for them. For example, a merchant may receive a restock of items each day, they will be updated even if they're unloaded, if you're questing 100km away from them. You can instantiate new Persistent References, or make an object that already exsisted a Persistent Reference.
Note -> Entering the house completly unloads the cells
Managing Persistent References:
With a system like that, it can be easy to make slight mistakes that can cause your Persistent References to not be accessible, if you don't update the Dictionary that manages them, if you forget someone into a scene or if you simply miss a little step, your reference won't work.
For that, I've built two Editor Windows that really gives you an hand, the first one is the PRefs Assembler, when building scenes I've found out that it can be a lot more comfortable to have just that scene opened, and save everything that belongs (or may belong for some time) to that scene. With the way the Persistent References are created and managed, as soon as they're marked and set as persistent, they will not live anymore in the scene you've originally placed them, but in a dedicated scene, and that's essential for them to work.
Nevertheless, you can build your scenes and place AI and Persistent References in them, without worrying about anything, when you've finished you fire up the PRefs Assembler, specify the scenes or Worldspaces that were modified and all the work will be done by that, as soon as it ends, they'll be set.
Another thing that could have been unconfortable to work with, is that once a scene is assembled, as said before, the persistent references will not live in that scene anymore. So if you wanted to edit them in their default scene, you had to manually load the scene that contains the persistent refereces, search for that specific one, edit it, saving back and testing.
That's where the Persistent References Window comes to the rescue! It is a window that works like the default Hierarchy of Unity but only displays Persistent References, categorized by their scene.
You can apply filters to quickly display only what you're looking for, or search into the persistent references providing its ID. A click will set the Object as the selected one, a double click will focus on it and immediatly display it in the SceneView.
It will surely help you and your workflow to be as faster and efficient as possible.
AI -> Perception:
AI is able to perceive the world around it, with the Sight System, he can see the Player, other NPCs, Looting Points, Doors, NPCActions Points and other objects, and he is able to take the correct action he has to do in base of the Behaviour it currently set on. He can detect danger, and dangerous situations, like if he sees a member of an opposite factions - if they're at war he will try to kill it, if he's outnumbered he may try to flee (depending on his character), if an arrow is shot near him he may try to run or find the who shot that and try to take him down. If the AI is following an entity and he loses eye-contact with it, he will go to the last known position and search for it.
All those components and situations will be able to be packaged in Behaviour Trees, that will be switchable at runtime.
AI -> Offline Mode:
Another add to the AI is the offline mode. If the AI should be unloaded (he's in the world while the Player is in an house) you can set him to continue performing his duties. Those can be following a Path, reaching a target, waiting at some spot, picking up something, and so on and so forth. What he will not be able to do during Offline Mode is to fight or performing actions that needs the AI to be fully loaded.
Nevertheless, if you really need for example to have the AI fighting someone even if it is unloaded, you could write a little script that runs when the AI reaches its target and is in Offline Mode, if those conditions applies that script can run a simulation of a fight that in base of the attributes and equipment (and some randomness if you want) of both and determines who won, at the end you can kill the entity and the who survived will continue to live and perform his duty. If that AI was loaded before he reached its target, it's all good, the fight can go normally.
That's something extremily powerful and the possibilities are endless.
In the video below, the AI has a Target that lives into another scene, thanks to GUID References we're able to set it up correctly, and even if the AI will be unloaded because the Player enters the house, he will continue walking towards its destination. Note that as soon as he returns online, no matter what Movement Type he has to take (Unity Navmesh or Custom Traversing Link or Others, he will always pick the correct one in base of where he is and what he have to do.
In the next update post I'll probably finish the Combat System for them and hope to be able to pack everything in Behaviour Trees. I'll keep you posted! After that the Save System is the last big step to take, but after that one the tool will be ready to be tested, I'll make the Demo, fix some bugs, adding some small features if needed, write a book of documentation ( ) and release.
Sorry, patience of a gnat... have you started to tackle the ascent of the save/load mountain yet? I imagine the persistent references thing helps?
 Also, noting implementation of persistent references thing, and sorry, not sure if I asked this one before -
With inventory and items will there be multi-currency (for example, bronze, silver and gold pieces, conversion etc)? Also, items as containers of items? Also, runtime customisable items (so, for instance, socket items and socketing, item renaming with prefixes and suffixes to item names, enchanted items effecting stats and abilities, that sort of thing)?
Hello! Don't worry! I'm always open to discussion!
I didn't started developing the save/load system yet, but obviously I've been researching and have some ideas that I think will work out. The persistent references gives a sense of "save" during the session, indeed they do, but as soon as the game closes those modifications will vanish, basically Persistent References are just another kind of Object to save, like it is an Item in the world, the content of a chest or the quest states.
Before I move on on a new feature I want to make sure that I don't leave stuff to do behind, and specially with the save system, I want everything in place for when I'll have to pack data in savefiles.
About multi-currency, the Golds are simply a special Misc Item, so you can have as many currencies you want. Without any modifications it will work like Fallout New Vegas, where you had different currencies (NCR Dollars, Legion Money, Sierra Madre Chips) that can be converted to the main one (Bottle caps).
If you wish to have something like the currency system of World Of Warcraft, where an item can cost 1 gold, 25 silver and 4 coppers, there are little modification needed to the scripts that manages transactions (buying/selling) - (I'll make sure to write a page on the documentation that will help who wants to change the currency system).
I'll make a note of the container items that contains items, didn't thought of it and it may be a great add! With the flexibility of the Item System I may only need to create an user interface for it and few lines of code.
Runtime customisable items, or crafting/enchanting will surely come as an add-on, maybe after the Third Person Controller and the Magic System. The reason why it will come after those two is that Third Person is essential, you may want to develop your game entirely in third person (or both) and because it should be quick. Magic is an addition to the current combat system, so it shouldn't involve rewriting code, and it can be essential to a lot of people.
The crafting/enchanting on the other side touches many areas, like the Inventory, Equipment, Combat System, Interface, Stats, Effect System and Save/Load, so it will keep me busy for a while, but I totally understand it is an important thing and it's something I want and I will make.
@silvematt - thanks for the swift and comprehensive response to assuage my lack of patience...!
That all makes sense - I was worried the core system would not then be extensible to that functionality but from what you are saying it entirely is...
Hi there - thought I'd check in and see how your development of this asset is coming along?
The Combat System for the AI has been completed, for both ranged and melee. The Behaviour Trees are too, the main system works and now it's just a matter of creating a lot of functions and nodes to make the Behaviour Trees usable in most situations. For instance, it's now possible to have followers, enemies, wanderers, people that relax - sits in the interiors and chat with each other, people that eat/drink. The AI now recognize other NPCs (and Player) and can react accordingly (if a guard sees a bandit he'll try to kill him) and so on.
As I'm progressing with the development I've noticed that everything is coming together, I'm now able to create quests from the ground up, and it looks like that for now the limits are just the functions and nodes needed in the Behaviour Trees.
Still there's a bunch of work to be done! I hope to finish with the main nodes within the next week, I'll write a post here. After that I'll do a sort of "test-quest-demo" where I'll develop a fairly complex quest that will be in the final Demo too, if that works without any issues, it means we're near the end!
I want to take the time to personally thank you and all the others that are following the development from a long time once again.
@silvematt all sounds very positive! Will watch out for your next update in a week or so. The AI sounds really powerful!
[Edit] What about your Saves/Loads system?
About the Save/Load, essentialy the same thing I said last time:
I've not marked the AI/BehaviourTrees to be ready, and with ready I mean that It's sure that the main logic works as intended, even if it looks like it does now. As I mentioned in the last post I'll do a test-quest-demo to test every system in the toolset together and heavily test the AI & Behaviour Trees, if that goes ok, I know I can move on the next and last main feature.
But I want to be clear, I've already ensured that the whole code architecture of the systems that needs to be saved and their states are capable of supporting operations of loading and saving, so hopefully I won't have any surprises on that
@silvematt - hope it all works with hardly a hitch...
@silvematt keen punter here! Just wondering how goes development?
I'll have something very exciting to show you shortly! The AI is completed, I'm from a week in an iteration process trying to come up with most of behaviours and features you'll need built-in in the toolset - different types of combat behaviours, different type of wandering around the world, following targets, patrolling, dialoguing while walking on a path, common objectives (take the item, kill the guy, speak to the guy).
I'm also adding dozens of settings and variations, keeping in mind that you may want to do something different, or on a different scale, or so that you need less resources consumption, and that is actually what takes most of the time.
@silvematt , excellent. Looking forward to the next big reveal....!
I think it's time to bring the latest news!
Over the course of the last month I've been working on AI Behaviours, in particular I've had to tackle the problem of having an AI solution that was:
Capable of doing most and more things that AI does in industry-standards RPGs.
Capable of being implemented and be game-ready very quickly, covering the most situations you may have to deal with.
Capable of being swift and agile into changing behaviours, objectives, targets, purpose, world, cells regardless of its current state.
Capable of running with a lot of different settings, in different environments having lower/higher resources requirements, allowing you to have a lot of behaviours going on all together at the same time.
Capable of run and be modified even if not fully loaded (AI Offline mode).
Naturally embedded in all the systems the RPG Creation Kit currently covers and will cover.
Capable of being implemented by artists who have no programming experience but that are willing to learn the techniques and concepts behind the Behaviour Tree logic (customized a bit) and state machines.
Capable of being quickly expandable with new functionalities, nodes, logic, conditions, states by who chews programming a bit.
Capable of letting you build your game.
Default Combat Behaviour
You can expect NPCs to do what they should, and if the variety of general purpose Behaviours that will come already built-in in the RPG Creation Kit will not be enough for you, at anytime you can create your Behaviour using an intuitive Node Editor.
Nodes are executed from left to right, top to bottom, there are dozens of nodes ready that includes the typical composites (Sequence, Selector, RandomSequence, RandomSelector, Parallel...), decorators (Repeat, Return Success, Inverter...), and leafs (such as AI_Invoke, AI_Field Check, Wait, Deubug). Most importantly, a lot of nodes that interacts with every part of the AI code, such as movements, perception, combat and dialogue system, etc.
Within the Behaviour Tree there is custom variables implementation that allows the usage of variables of any type, those variables can be specifical tied to an instance of the Behaviour tree (such as targetDistance) or be global and shared between all the instances of the same Behaviour (DISTANCE_TO_ATTACK) or even from completly different behaviours.
The BTVariable Inspector will allow you to create, visualize, edit and set variables.
Those variables will be usable from any nodes that uses a variable. In this example the variable 'numberOfEnemies' is being used from the AI to determine if it's being overwhelmed, if there are 2 or more enemies fighting it he will decide to flee instead of keep fighting.
Another strong point of the RckAI is that it's possibile to switch a Behaviour Tree at any given time. An example is this NPC, which by default uses the 'Wanderer' Behaviour. When he gets hit by our arrow, his Current Behaviour Tree changes to the 'Default Combat Behaviour', that allows him to attack its target.
Last but not least, It's pretty obvious that AI has to interact with other AI as well, with Behaviour Trees and the way the RPG Creation Kit is designed you have this possibility from the very top-level, each entity is treated as it should, the Behaviour Trees that you will make will work regardless of the player, AI, or third-party solutions that matches some requirements. You could build a new AI System from scratch and it would be able to work with everything else.
Just as a note, they're using different instances of the same Behaviour Tree, wheter they combat melee or ranged it entirely depends on their inventory, they could infact switch at runtime between melee and ranged depending on the more convenient situation if they had both a ranged and melee weapon in the inventory.
As anticipated before I'll conduct a test of all the systems together by developing a quest that will utilize every aspect of the RPG Creation Kit intensively.
If this should go successfull without any major trouble , I'm planning to take few weeks to make more tools, editor windows and inspectors before starting with the last feature (the save system).
The launch of the RPG Creation Kit is set on Q3/Q4 of this year.
Thanks everyone : ))
@silvematt - thanks for the BIG update, pics and vids. Will read and watch in!
@silvematt ... can the behaviour trees and nodes access and interact with statistics, skills etc.?
Do you mean of the AI who's running the behaviour tree? Yes!
Do you mean variables of the player? Yes!
Do you mean variables of the current target of the AI who's running the behaviour tree? Yes!
Do you mean variables of another AI who's not who's running the behaviour tree? Yes!
You can literally branch and check on anything, if the nodes built-in would not be enough for you, you always have the possibility to create a new node that does what you need.
@silvematt - well, I guess you've covered that query!
From the next week the Quests Creation Kit will be deprecated, meaning it will not be possible anymore to purchase it and by doing so "pre-order" the RPG Creation Kit at the current price.
@silvematt - glad I bought it some time ago! Speaking of though, how is development of the RPG Creation Kit going? - anything to show in terms of pics or vids...? (patience, thy name is not mine....)
Hello it's ok!
The project is currently in stand-by due to university and will (hopefully) resume the next month.
Before that I've finished the AI Creation window & workflow, I hope to be able to cut some time in the weekend to write a post here and show it off : ))
@silvematt - excellent - look forward to that!
The hassling punter here...
How goes it? Any more to show off?
Hello I'm very sorry for the absence and I thank anyone who had and has the patience to wait. I have very exciting news to share next week and I want to do a proper post about them! Next week (24th) is when I'll have again time to work on the RPG Creation Kit!
Hold on a little bit more!
The RPG Creation Kit has been selected for an Epic MegaGrant!
I can't express how happy I am to share this news. For those who doesn't know what is a MegaGrant, it is a funding system from Epic Games that aims to support and help developers bring their creations to life.
Being among those who has been selected fills me with joy, motivation and pride! I'm so honored. This is surreal to me.
In short it means two things, the RPG Creation Kit will be also developed on the Unreal Engine, after the definitive edition of the Unity version will come out. This is a thing I planned to do nevertheless and getting that boost directly from Epic Games is incredible.
And second, the RPG Creation Kit will be a much better product for both engines, in terms of everything.
I can't express how honored I'm for the chance gave to me. I will do everything I can to ensure the deliver of a great product.
About the project, I want to share the latest feature I've implemented before the break I had to take, it's the RCK AI Editor.
It is an Editor system that regards the creation and management of NPCs in the game. It's one of the most important system you will use as it is your main interface to AI. Nevertheless, I've tried keeping it as simple to use as possible, and the result surprised me as there is very little input needed as the most processes being automated.
A very cool thing is that this system works perfectly in cohesion with everything else, it inherits the Races presets, allowing you to start from its base and customize it for your needing. It creates a Prefab of that AI while you configure it from the Editor Window, and when you've finished filling the fields that prefab is ready to be dropped in the scene. It also represent a way to edit your NPCs from anywhere, without asking you to find them in their scenes first. Last thing, if you mark the new AI as 'Persistent Reference', it will automatically subscribe it and vice-versa. Here is a video that shows the process of creating an NPC from scratch and adding it to the game:
I'll keep you posted, things are going extremely good and so far everything is in line for the release this year!
Thanks : ))
@silvematt - excellent news re the funding and looking forward to watching that vid now. More strength to your arm!
 you may have covered this and similar off before (in which case, apologies) but I am presuming you can define any number of your own attributes and derived attributes (for characters/creation/npcs) and the editors adjust?
 p.s. the video is jaw droppingly good... ! Hoping many of those resources will be available with the asset too...
Does this mean your asset will get developed faster now
Yes you can add/remove/edit attributes and the effect they cause. And yes everything you see will be included in the package!
Thanks! I'm glad you like it.
Not directly. I know the development of the RPG Creation Kit hasn't been a lighting bolt and I'm ok with it, I'm devolving all of my free time to this project from more than a year now while having to follow university courses on a daily basis, keep up with them and do exams. Not to mention the size of the project, the fact that I'm the only person behind it and the care I take in doing things, I could have taken so many shortcuts.
How does your grant impact this asset?!