Help with your scripting

Get navmesh Corners

Get navmesh Corners

Postby epsilonion » 10 Feb 2018, 13:36

Is there a way to navmesh data?

I.e. get navmesh concave so you can get the npc to lean in and fire, the NPC would know that there is an object at a location because of the navmesh data and will know where corners are so it can lean while firing and stay in cover..

There are many many uses for Navmesh data in AI related programming and it gives you more precise control and positioning while seeking out cover than other methods (and the least time consuming) so much better then manually placing cover objects in a scene and getting the npc to position correctly on the corner.

You can use the Navmesh data with other flags/data on objects in a scene to let the NPC know its a small wall or a object that it can not fire over, overall its about getting the NPC positioning correctly.

This is the preferred method of most AAA and serious game makers.. :)

:D
User avatar
epsilonion
Skyline Lead Moderator
Skyline Lead Moderator
 
Posts: 874
Joined: 26 Feb 2015, 11:51
Location: Hull, East Yorkshire, England
Skill: Business Manager
Skill: Great creative

Re: Get navmesh Corners

Postby StarFire » 10 Feb 2018, 14:00

ue4 uses a playable cover box which you place when the cover system should kick in.

Raycasts can give you the info you need by detecting distance to the wall and wall end for lean out. Think of cats whiskers; 2 raycasts would do it.

But certainly we will see if there is a better approach ;)
Dream the Journey, Live the Experience!
User avatar
StarFire
Skyline Founder
Skyline Founder
 
Posts: 1678
Joined: 03 Jan 2012, 18:50
Location: UK
Skill: Great creative
Skill: Programmer
Skill: 3D Modeller
Skill: 2D Artist
Skill: Level Designer

Re: Get navmesh Corners

Postby SpiderMack » 11 Feb 2018, 01:04

epsilonion wrote:Is there a way to navmesh data?

I.e. get navmesh concave so you can get the npc to lean in and fire, the NPC would know that there is an object at a location because of the navmesh data and will know where corners are so it can lean while firing and stay in cover..

There are many many uses for Navmesh data in AI related programming and it gives you more precise control and positioning while seeking out cover than other methods (and the least time consuming) so much better then manually placing cover objects in a scene and getting the npc to position correctly on the corner.

You can use the Navmesh data with other flags/data on objects in a scene to let the NPC know its a small wall or a object that it can not fire over, overall its about getting the NPC positioning correctly.

This is the preferred method of most AAA and serious game makers.. :)

:D


This could be a corner like some small cubic static objects on the floor.
You still need raycast to determine the height of a possible cover.

You can automate it, if you bake cover data and create cover objects (empty object at max height cover position and rotated to cover direction).
https://github.com/Deams51/CoverGenerator-UE4

Image

User avatar
SpiderMack
Skyline Expert
 
Posts: 441
Joined: 02 Dec 2016, 09:15
Skill: Concept artist
Skill: 3D Modeller
Skill: Level Designer
Skill: Scripter

Re: Get navmesh Corners

Postby epsilonion » 11 Feb 2018, 12:05

I am thinking of the least resource expensive way to implement cover and concealment behaviour in an AI.
Adding data to a huge number of objects in a 20km x 20km map could have a real performance decrease if you have it on trees, bushes of concealment, houses, rocks etc etc.

The thing is this is not Unity or UE4 with a massive community..

The way I have in mind would be:

AI goes in to alert mode, finds concave navmesh (knows that there is an object) in its immediate vicinity (say 20 meters), ray cast to find height of said objects that has cause the navmesh to go around the objects to see what stance it needs to preform to stay in cover.

Another implementation would be to find the best path to set way points to flank the player.

Closer the objects the more concealment you have and finding this via the namesh rather than having a load of preset boxes telling them that there is cover there.

If in alert state and not combat state then find concealment (this is the tricky part that does not involve the navmesh and not really relevant to this topic.


The most of the information is already there with the navmesh data and as stated by SF above you will have to use raycasts to find the height etc, these two usually go hand in hand when creating a cover based AI system.

I have already put behaviour trees together for ammo collection via the lowest priority member in a squad that will go to a supply point and fill the back pack up with ammo and bandages for his/her squad mates.. :) the setting way points was the easiest part of the system but finding cover as he/she goes to resupply is the problem and finding the least resource expensive way of doing so, its like reinventing the wheel when most of the data is already there. lol..

I have more ideas like AI creating ambush points and more. creating there own squads if in alert mode and others are close by in alert mode.

Ai puts other AI in alert mode that are close to them and not in alert mode.


This is a great resource https://www.gamedev.net/forums/forum/6-artificial-intelligence/
User avatar
epsilonion
Skyline Lead Moderator
Skyline Lead Moderator
 
Posts: 874
Joined: 26 Feb 2015, 11:51
Location: Hull, East Yorkshire, England
Skill: Business Manager
Skill: Great creative

Re: Get navmesh Corners

Postby SpiderMack » 11 Feb 2018, 16:24

epsilonion wrote:This is a great resource https://www.gamedev.net/forums/forum/6- ... elligence/


And some other inteterested readings focused on Killzone Ai you could be interested in :D

https://www.slideshare.net/guerrillagames/killzones-ai-dynamic-procedural-tactics-9885496
Image

Other Guerilla Games presentations
http://aigamedev.com/open/coverage/killzone2/




epsilonion wrote:Adding data to a huge number of objects in a 20km x 20km map


It will be lower than Navmesh data if you intend to use navmesh on 20*20 km.

Most of the time such huge terrain is a bit irrealistic, you won't make an interesting skyrim, fallout or other genre game with such size map until you are a studio.
Or it's a free walk simulation game.

epsilonion wrote:Closer the objects the more concealment you have and finding this via the namesh rather than having a load of preset boxes telling them that there is cover there.


Or have all objects that can be obstacle or cover with a tag "cover".

Each AI as a big sphere detection collider, when they move they detect objects and can filter what objects are colliders by tag.
Each prefab object can have child cover points, so AI knows where are covers.

epsilonion wrote:AI goes in to alert mode, finds concave navmesh (knows that there is an object) in its immediate vicinity (say 20 meters), ray cast to find height of said objects that has cause the navmesh to go around the objects to see what stance it needs to preform to stay in cover.


Why not.

I would recommend baking the cover data in the navmesh data, it's lightweight data , and as you will use tiled navmesh this is even less a problem :D (some cover points with direction and height).

You can read more here about data generated for covers
https://www.slideshare.net/guerrillagames/pgaic11

Image


Someone already did it, it's free , and it's a shame bigger 3D Engine doesn't have that feature :lol:

I think this is what you need, cover and other data baked along with navmesh tile data.


Image


You got two solutions :
- create yourself your covers baking generator creating paged data, you can query.
- ask Skyline devs to include such data in navmesh tiles generation (what would be the best solution)




The best way to make advanced path planing and tactical navigation is using baked or dynamic grid system around AI and make queries. Similar to Killzone 2 or Crysis AI.
This is how i coded my own Grid and Query AI system on another 3D engine.

Image






epsilonion wrote:I have more ideas like AI creating ambush points and more. creating there own squads if in alert mode and others are close by in alert mode.
Ai puts other AI in alert mode that are close to them and not in alert mode.


Tactical position tags can be baked until your whole level and terrain would be very dynamic, it's lightweight data.

Generating points each 10 meters for example using raycasts for distances, heights evaluation.
Or manually created when you level design specific places.

You could determine with parameters open areas, areas with lot of covers, areas with a strategic advantage like height with better visibility etc ...

I would not get AI calculate too much data in real time when many data is small and can be baked.

epsilonion wrote:I have already put behaviour trees together for ammo collection via the lowest priority member in a squad that will go to a supply point and fill the back pack up with ammo and bandages for his/her squad mates.. :) the setting way points was the easiest part of the system but finding cover as he/she goes to resupply is the problem and finding the least resource expensive way of doing so, its like reinventing the wheel when most of the data is already there. lol..


It's common.
You have squad managers, each time an AI is out, another becomes the leader, and the squad manager plans the movement like :
-one AI supression fire
-other AI flanking movement
-another find a cover nearest and launch a grenade
-another AI run to melee

But each agent is able to override squad manager plans depending on situation :
-low health and the AI will not go melee or flanking but instead take cover and stay for ranged fire
-no ammo and AI will get to covers and will go melee

You have some GDC presentation about Horizon AI covering AI group
https://www.guerrilla-games.com/read/the-ai-of-horizon-zero-dawn


Fear AI video


Sunset Overdrive dynamic AI and solutions


Left 4 dead AI director


The Division: AI Behavior Editing and Debugging


What makes good AI



If you plan to put some flying mechas on your game
https://www.guerrilla-games.com/read/putting-the-ai-back-into-air




GDC has also many usefull slides.




epsilonion wrote:I have already put behaviour trees together for ammo collection

Good luck if you are coding all that :lol:
There is no Behaviour Tree in Skyline.

Back on subject i second your demand, additionnal cover data in Navmesh tiles would be a big step for AI in skyline :D
Last edited by SpiderMack on 11 Feb 2018, 18:01, edited 1 time in total.
User avatar
SpiderMack
Skyline Expert
 
Posts: 441
Joined: 02 Dec 2016, 09:15
Skill: Concept artist
Skill: 3D Modeller
Skill: Level Designer
Skill: Scripter

Re: Get navmesh Corners

Postby SolarPortal » 11 Feb 2018, 17:54

Very useful information, thanks :D
Skyline Game Engine - Lead Dev.
Please provide as much info as possible when asking for help.


Specs: OS: Win 10 64bit, CPU: Intel i7 4770 3.4ghz x 4 core(8 threads), GPU: Nvidia GTX 1060 6GB, Ram: 16gig DDR3, Windows on 250gb Samsung Evo 860

Twitter: @SolarPortal
Instagram: @SolarPortal
User avatar
SolarPortal
Skyline Founder
Skyline Founder
 
Posts: 3631
Joined: 29 Jul 2012, 15:56
Location: UK
Skill: 3D Modeller
Skill: 2D Artist
Skill: Programmer
Skill: Level Designer

Re: Get navmesh Corners

Postby SpiderMack » 11 Feb 2018, 18:16

SolarPortal wrote:Very useful information, thanks :D


I made a new thread with those presentations and some new ones.
https://www.forum.aurasoft-skyline.co.uk/viewtopic.php?f=38&t=2274&p=12156#p12156

More people access those AI presentations, better it is :)
User avatar
SpiderMack
Skyline Expert
 
Posts: 441
Joined: 02 Dec 2016, 09:15
Skill: Concept artist
Skill: 3D Modeller
Skill: Level Designer
Skill: Scripter

Re: Get navmesh Corners

Postby epsilonion » 12 Feb 2018, 18:57

Thank you very much for the information... This will help me in my project... :P
When I say behaviour tree I dont mean a implemented program to do it for me I mean writing my own.. :P
User avatar
epsilonion
Skyline Lead Moderator
Skyline Lead Moderator
 
Posts: 874
Joined: 26 Feb 2015, 11:51
Location: Hull, East Yorkshire, England
Skill: Business Manager
Skill: Great creative

Re: Get navmesh Corners

Postby SpiderMack » 12 Feb 2018, 21:23

epsilonion wrote:Thank you very much for the information... This will help me in my project... :P
When I say behaviour tree I dont mean a implemented program to do it for me I mean writing my own.. :P


Glad this can help you :D

There was a doc about Killzone game generating at runtime surface covers based on the same level voxelized in low resolution,
or another example of AI throwing each frame a new raycast around it to cover 360° and get all dynamic possible covers.
It's a shame i don't find those docs anymore :(
But you got the idea how they work.

About Behaviour Tree, you mean a Skyline plugin ? I'm not sure how this could be done.

It could be plain text files with debug ability , i'm not sure Skyline scripts are able to call another file script and function using their name only.
Image

The advantage of graphic BT is they are a great help to debug game functionality as you view in real time active nodes.
User avatar
SpiderMack
Skyline Expert
 
Posts: 441
Joined: 02 Dec 2016, 09:15
Skill: Concept artist
Skill: 3D Modeller
Skill: Level Designer
Skill: Scripter

Re: Get navmesh Corners

Postby SolarPortal » 12 Feb 2018, 22:14

Calling between lua scripts is easy to do in skyline. If you have the name, id or tag of an entity, then you can do. Ideally, you want to use the tag as it is unique in the scene and grab the id with.
Code: Select all
targetID = entity.getIDFromTag(tagname);


You can also get the description of an entity the same way

Anyway, If you are needing to call from one script to another, then you have a few options and the id will be needed:

  • Use lua's entity library for "callFn" which allows you to call a custom function name in another script by an entities id only. e.g.
    Code: Select all
    --| ............. Call in one script with ................
    entity.callFn(callingID, targetID, "FunctionName", argument );

    --| ............. Place the function in the target script ................
    function myCustomFunction( callerID, argument )
    end
  • Use lua's entity library to to call a function named "publicFn" which is a premade function you can use in all scripts, but will only trigger on the targetid's script.
    Code: Select all
    --| ............. Call in one script with ................
    entity.callPublicFn(callerID, targetID, argument)

    --| ............. Place the function in the target script ................
    function publicFn( callerID, argument )
    end
  • And of course a globalFn call which allows you to call every script in the level and receive the event. Its slower so not recommended for every frame. This is recieved in all scripts that contain the function. This can be used as such:
    Code: Select all
    --| ............. Call in one script with ................
    sky.callGlobalFn(callingID, argument);

    --| ............. Place the function in the target script ................
    function globalFn( callerID, argument )
        --  ...... run code ......
    end

To further on this, there is also module and lua interoperability. Here are the options:
  • From within a lua script, you can call the lua module event which can then trigger something within the graph:
    Code: Select all
    -- | ARGUMENTS -- callerID, targetID, key, type, value
    -- | param: callerID is the id of the entity calling the module. This should be obj or objID.
    -- | param: targetID is the id of the target entity we want the module to trigger on. This can be itself as the same entity might have the script and graph.
    -- | param: key is the name attached to the module "Lua Event"
    -- | param: type is either "int", "float", "bool", "string", etc...
    sky.callModuleEvent(callerID, targetID, "stopActivating", "int", "1") -- See corresponding graph image to see how its done.


    From the module side, simply connect up as such:
    Clipboard Image.jpg
    Clipboard Image.jpg (6.13 KiB) Viewed 29783 times
  • The final way of communicating is from module into a lua script. This is useful to trigger events back down the chain. This is used as such:
    Clipboard Image (1).jpg
    Clipboard Image (1).jpg (7.54 KiB) Viewed 29783 times

    If you are calling a microscript, then the bottom property needs to be set to checked using a boolean variable module.
    If its an external script, then leave it as it is shown in the picture above.

    This is then picked up back in the lua file:
    Code: Select all
    function PlayerKO( eID, value)
       -- ..... run code .....
    end

As you can see, there are plenty of ways of communicating in skyline. There are also action setters and getters.
Hopefully this is what you wanted to know and was one hell of a writeup lol :)
Skyline Game Engine - Lead Dev.
Please provide as much info as possible when asking for help.


Specs: OS: Win 10 64bit, CPU: Intel i7 4770 3.4ghz x 4 core(8 threads), GPU: Nvidia GTX 1060 6GB, Ram: 16gig DDR3, Windows on 250gb Samsung Evo 860

Twitter: @SolarPortal
Instagram: @SolarPortal
User avatar
SolarPortal
Skyline Founder
Skyline Founder
 
Posts: 3631
Joined: 29 Jul 2012, 15:56
Location: UK
Skill: 3D Modeller
Skill: 2D Artist
Skill: Programmer
Skill: Level Designer

Re: Get navmesh Corners

Postby SpiderMack » 12 Feb 2018, 23:15

Thank you, this is some great scripts documentation that could be on official docs :)

About Behaviour Tree using text data, i was thinking about Lua libraries, not Lua files used by other game objects.

This could be related to Classes the BT would instantiate at initialisation because those would be needed.
For example :
- CharacterDetection Class with detection functions
- CharacterMovement Class with movement and animation functions

The main Lua script would work like some BT , able to do branching, conditions tests and call nodes actions.
Those node actions would be some Lua common libraries or functions.

I don't think it's something for Lua, but something doable with a language supporting real Classes system.

Perhaps the best way to emulate BT is perhaps using graph system, if we can create our own complex node graphs.
User avatar
SpiderMack
Skyline Expert
 
Posts: 441
Joined: 02 Dec 2016, 09:15
Skill: Concept artist
Skill: 3D Modeller
Skill: Level Designer
Skill: Scripter

Re: Get navmesh Corners

Postby SolarPortal » 12 Feb 2018, 23:42

You can sort of do classes in lua and include them into a main script with
Code: Select all
sky.include("BT_CharacterDetection.lua")


There is a good example in "Asset Library\Scripts\Base Classes\Game Systems\Example_BaseClass.lua"
Here is the code here:
Code: Select all
--[[
Aurasoft UK 2008-2018 http://aurasoft-skyline.co.uk
]]

-- |===============================================================================================================
-- |
-- | Example of a base class for lua use.
-- |
-- |===============================================================================================================

-- Set the name of the class here and use on all required areas.
-- These three lines are mandatory for working with a class.
Example_BaseClass = {}
Example_BaseClass.__index = Example_BaseClass
Example_BaseClass.id = -1;

-- This function is how you create the baseclass
-- e.g. myclass = Example_BaseClass:New()
function Example_BaseClass:New()
    local self = {}
    setmetatable( self, Example_BaseClass )

   function self.setDefaults()
      -- Create all the variables for this class here
      -- for example we have one called variable, but this could be called anything.
      -- you can also create arrays within the array here also.
      self.variable = "mytext"; -- rename to what you want
      self.array = {}; -- rename to what you want
   end   

   -- Set the default values and create the functions in the array.
   self.setDefaults();
   self = Example_BaseClass:setFunctions(self);

    return self;
end

-- All functions that this class will have should be created in the setFunctions function
-- this is so 1 function can be called to reset up an array with the required functions
-- if for example the array is loaded back from json as json does not store functions.
-- This function can have an unlimited amount of built in functions that can then be
-- easily accessed by going:
--          myVar = myclass.getVariable()
-- instead of using the colon style function variant lua users will be used to which
-- can cause messy code and be forgotten that a colon needs used.
function Example_BaseClass:setFunctions(self)
   -- | Create your functions here:
   -- | Note: There must be "self." at the start of the function to build it in.
   function self.getVariable()
      return self.variable;
   end
   
   -- Make sure to return self with the new built in functions.
   return self;
end


You can then create the class in the main script or another script with

Code: Select all
sky.include("Example_BaseClass.lua");
myclass  = {};

function postInit()
    myclass = Example_BaseClass:New();  -- You can even write your class with arguments that act as a constructor data.
    var = myclass.getVariable();
end


This is how i wrote the video manager yesterday to handle the management and usage of videos that call the skyline commands but gives me a simple set of functions to use.

I think @Shando wrote a behaviour tree or something similar in lua before... cant remember where though :P
Skyline Game Engine - Lead Dev.
Please provide as much info as possible when asking for help.


Specs: OS: Win 10 64bit, CPU: Intel i7 4770 3.4ghz x 4 core(8 threads), GPU: Nvidia GTX 1060 6GB, Ram: 16gig DDR3, Windows on 250gb Samsung Evo 860

Twitter: @SolarPortal
Instagram: @SolarPortal
User avatar
SolarPortal
Skyline Founder
Skyline Founder
 
Posts: 3631
Joined: 29 Jul 2012, 15:56
Location: UK
Skill: 3D Modeller
Skill: 2D Artist
Skill: Programmer
Skill: Level Designer

Re: Get navmesh Corners

Postby SpiderMack » 12 Feb 2018, 23:51

SolarPortal wrote:You can sort of do classes in lua and include them into a main script with
Code: Select all
sky.include("BT_CharacterDetection.lua")


There is a good example in "Asset Library\Scripts\Base Classes\Game Systems\Example_BaseClass.lua"
Here is the code here:
Code: Select all
--[[
Aurasoft UK 2008-2018 http://aurasoft-skyline.co.uk
]]

-- |===============================================================================================================
-- |
-- | Example of a base class for lua use.
-- |
-- |===============================================================================================================

-- Set the name of the class here and use on all required areas.
-- These three lines are mandatory for working with a class.
Example_BaseClass = {}
Example_BaseClass.__index = Example_BaseClass
Example_BaseClass.id = -1;

-- This function is how you create the baseclass
-- e.g. myclass = Example_BaseClass:New()
function Example_BaseClass:New()
    local self = {}
    setmetatable( self, Example_BaseClass )

   function self.setDefaults()
      -- Create all the variables for this class here
      -- for example we have one called variable, but this could be called anything.
      -- you can also create arrays within the array here also.
      self.variable = "mytext"; -- rename to what you want
      self.array = {}; -- rename to what you want
   end   

   -- Set the default values and create the functions in the array.
   self.setDefaults();
   self = Example_BaseClass:setFunctions(self);

    return self;
end

-- All functions that this class will have should be created in the setFunctions function
-- this is so 1 function can be called to reset up an array with the required functions
-- if for example the array is loaded back from json as json does not store functions.
-- This function can have an unlimited amount of built in functions that can then be
-- easily accessed by going:
--          myVar = myclass.getVariable()
-- instead of using the colon style function variant lua users will be used to which
-- can cause messy code and be forgotten that a colon needs used.
function Example_BaseClass:setFunctions(self)
   -- | Create your functions here:
   -- | Note: There must be "self." at the start of the function to build it in.
   function self.getVariable()
      return self.variable;
   end
   
   -- Make sure to return self with the new built in functions.
   return self;
end


You can then create the class in the main script or another script with

Code: Select all
sky.include("Example_BaseClass.lua");
myclass  = {};

function postInit()
    myclass = Example_BaseClass:New();  -- You can even write your class with arguments that act as a constructor data.
    var = myclass.getVariable();
end


This is how i wrote the video manager yesterday to handle the management and usage of videos that call the skyline commands but gives me a simple set of functions to use.

I think @Shando wrote a behaviour tree or something similar in lua before... cant remember where though :P


Lua class and include will become usefull.

BT system could be emulated using Skyline graphs , for example in Update navigate through nodes based on conditions nodes.

Is this possible to create custom graph nodes in Skyline ?
This would open lot of new possibilities, letting users code low level functionality as nodes and use them in graph.
User avatar
SpiderMack
Skyline Expert
 
Posts: 441
Joined: 02 Dec 2016, 09:15
Skill: Concept artist
Skill: 3D Modeller
Skill: Level Designer
Skill: Scripter

Re: Get navmesh Corners

Postby SolarPortal » 13 Feb 2018, 00:10

yes, it is possible to design your own modules. In the module graph there is a custom tab on the toolbox of modules, these are where your modules go. You place your module in the graph, double click it to open to the next level down..

i think the only which doesnt work with them is the inputs and outputs, but this should be doable inside. StarFire knows this system the best and will be able to give a better explanation :)
Skyline Game Engine - Lead Dev.
Please provide as much info as possible when asking for help.


Specs: OS: Win 10 64bit, CPU: Intel i7 4770 3.4ghz x 4 core(8 threads), GPU: Nvidia GTX 1060 6GB, Ram: 16gig DDR3, Windows on 250gb Samsung Evo 860

Twitter: @SolarPortal
Instagram: @SolarPortal
User avatar
SolarPortal
Skyline Founder
Skyline Founder
 
Posts: 3631
Joined: 29 Jul 2012, 15:56
Location: UK
Skill: 3D Modeller
Skill: 2D Artist
Skill: Programmer
Skill: Level Designer

Re: Get navmesh Corners

Postby epsilonion » 13 Feb 2018, 00:39

It was this article Behaviour_trees_for_AI_How_they_work that got me interested in creating my own and then reading the mass of knowledge on the internet about how others do it but use other software to do it all for them that got me thinking why not do it yourself.

It is well doable in lua script within skyline, especially when using a lua stack as the article explains later down the page that I thought hey this is really interesting stuff and opens you up to all sorts of thinking about I could do this and that, it is easy to think too broadly about things and get buried and that's when planning comes into effect and documenting before you start.

I am so glad I started this topic, its kicking the old brain cell and starting it working again. There is so much information in here it's where to start lol I want to do it all lol...
User avatar
epsilonion
Skyline Lead Moderator
Skyline Lead Moderator
 
Posts: 874
Joined: 26 Feb 2015, 11:51
Location: Hull, East Yorkshire, England
Skill: Business Manager
Skill: Great creative

Re: Get navmesh Corners

Postby SpiderMack » 13 Feb 2018, 11:54

epsilonion wrote:It is well doable in lua script within skyline


It's doable in Lua, i found some open source Lua implementation examples
https://github.com/tanema/behaviourtree.lua
https://github.com/headchant/bhtlua

But i don't like that way, this is too close to coding.

A visual graphic tool is what is the most used, it is more readable and better to create and modify or debug without coding.

Image


Another representation graphic tool, while a graph and node is still better.
Image

I find this Javascript open source BT editor, but i don't like the JSON export
https://github.com/behavior3/behavior3editor
Image

Some graphic external tool could be used to create the BT and export it as JSON file, Skyline could read data JSON and use it to create a Lua BT and use it in game. There is many ways to do it.
For example someone made it's own editor to use in CryEngine and it works pretty well




Skyline could create their C++ implementation BT functionnality and use Flowgraph to create a new BT editor included in SKyline editor. Perhaps this is the most efficient way and better about game creation workflow.

Game scripting is awesome to create low level game functionnality, while most AAA games and many indie games uses BT instead of hard coding AI gameplay.
Such tool or Skyline is the next big feature i think :D
User avatar
SpiderMack
Skyline Expert
 
Posts: 441
Joined: 02 Dec 2016, 09:15
Skill: Concept artist
Skill: 3D Modeller
Skill: Level Designer
Skill: Scripter

Re: Get navmesh Corners

Postby Shando » 13 Feb 2018, 12:36

:!: Hi all,

When I get an hour or so free, I'll upload all my Lua based AI stuff that I've put together over the last couple of years.

I was originally planning on selling it, but I just don't have the time to finish it to an acceptable standard :(

It will include a plugin for the creation of Behaviour Trees, Decision Trees & Finite State Machines, as well as code for AI behaviours (flee, wander, evade, obstacle avoidance etc.). I will also include an (almost) completed manual :)

I'll probably have some time at the weekend to upload if anyone is interested.

Regards

Shando
Ryzen 7 4800H 16GB GTX1650 Win 11 64
Love, Hope, Strength http://www.lovehopestrength.co.uk
User avatar
Shando
Skyline Moderator
Skyline Moderator
 
Posts: 560
Joined: 06 Mar 2013, 22:35
Location: Moffat Beach, Queensland
Skill: Programmer
Skill: Scripter
Skill: Level Designer

Re: Get navmesh Corners

Postby SolarPortal » 13 Feb 2018, 12:37

Awesome. Thanks Shando :) I did think you had already done it :)
Skyline Game Engine - Lead Dev.
Please provide as much info as possible when asking for help.


Specs: OS: Win 10 64bit, CPU: Intel i7 4770 3.4ghz x 4 core(8 threads), GPU: Nvidia GTX 1060 6GB, Ram: 16gig DDR3, Windows on 250gb Samsung Evo 860

Twitter: @SolarPortal
Instagram: @SolarPortal
User avatar
SolarPortal
Skyline Founder
Skyline Founder
 
Posts: 3631
Joined: 29 Jul 2012, 15:56
Location: UK
Skill: 3D Modeller
Skill: 2D Artist
Skill: Programmer
Skill: Level Designer

Re: Get navmesh Corners

Postby epsilonion » 14 Feb 2018, 00:40

I am defo interested mate.. :)
User avatar
epsilonion
Skyline Lead Moderator
Skyline Lead Moderator
 
Posts: 874
Joined: 26 Feb 2015, 11:51
Location: Hull, East Yorkshire, England
Skill: Business Manager
Skill: Great creative


Return to Lua Scripting

Who is online

Users browsing this forum: No registered users and 6 guests

cron