HeroEngine Forums
Welcome, Guest. Please login or Register for HeroCloud Account.

Author Topic: [SORTED]NavMesh and Live Region Updates  (Read 1736 times)

ToY-Krun

  • General Accounts
  • *
  • Posts: 677
  • Support Volunteer
    • View Profile
[SORTED]NavMesh and Live Region Updates
« on: Nov 09, 14, 08:28:20 PM »

Before I finish one of our key systems, I need to determine if the Navmesh will handle our game specific pathing needs or if I need to implement a special system to fit certain sections of the game.

Will the Nav mesh automatically update changes made (models placed) in a live production environment?

These models will be pathable by npcs as well as players, and could be placed in a number of ways , by players.
there will be no heightmaps involved in these special areas.


« Last Edit: Nov 12, 14, 12:30:09 AM by ToY-Krun »
Logged

katoomm0m0

  • General Accounts
  • *
  • Posts: 44
    • View Profile
Re: NavMesh and Live Region Updates
« Reply #1 on: Nov 10, 14, 02:01:17 AM »

As far as i know, it won't update on a live server. It is a big problem for me in regards to my housing system. I have yet to come up with a solution to this.

I would love to hear from someone that have solved this, without writing a whole subsystem for adding navpoints that take into account dynamically placed objects.
Logged
- Claus

jcsmith562

  • General Accounts
  • *
  • Posts: 190
    • View Profile
Re: NavMesh and Live Region Updates
« Reply #2 on: Nov 10, 14, 08:34:17 AM »

I'm pretty sure they will update on live servers. I've seen ours building after a patch.
Logged

keeperofstars

  • General Accounts
  • *
  • Posts: 998
    • View Profile
    • StarKeeper Online
Re: NavMesh and Live Region Updates
« Reply #3 on: Nov 10, 14, 10:31:02 PM »

It can live update but..... it's not real time by any means. The PathMaker system will queue up to rebuild the navmesh, when it see's a dirty .dat file for an area. However this process can take time.

So there will be times when they aren't in sync, due to the processing time to rebuild the navmesh, update the repository on server, etc. Especially if you have other people constantly making changes as well to the area.

http://hewiki.heroengine.com/wiki/PathMaker#PathMaker

For a bit more detail.
Logged
[img]http://screencast.com/t/x7btcSSyp3h0[\img]

ToY-Krun

  • General Accounts
  • *
  • Posts: 677
  • Support Volunteer
    • View Profile
Re: NavMesh and Live Region Updates
« Reply #4 on: Nov 10, 14, 11:38:21 PM »

These model changes wont be made by designers, but by players.

I'm in the process of finishing up a pathing system specifically for these areas as I had sort of anticipated any updates would not be fast enough.  Yeah I had read the wiki regarding it, but with so much of it pointing either to source owners or maybe outdated, I wanted a bit more sure Yes, or No before I tackle the job of sorting out an alternative system, as there are several other things that will , as a result, have to use the same method.

Can't sit on my hands though, this is holding up everything else currently.

At any rate, its working .  Just have to tweak it now as we go.  The biggest pain is having to deal with collision where the built in pathing system deals with the majority of that for you.

keeperofstars

  • General Accounts
  • *
  • Posts: 998
    • View Profile
    • StarKeeper Online
Re: NavMesh and Live Region Updates
« Reply #5 on: Nov 11, 14, 10:55:08 PM »

just be careful about overloading your server with alternative physics calculations and path making and AI pathing. It's a lot to be done when working that out, so you will need to make sure you utilize a system area to handle the path making, physics issues, and more. Going to have a bunch of work to deal with, in making sure it's scaleable with system areas as well.

Also remember can't trust the client for providing physics info to the server as each gpu will do it's own calculations a bit differently.

Logged
[img]http://screencast.com/t/x7btcSSyp3h0[\img]

ToY-Krun

  • General Accounts
  • *
  • Posts: 677
  • Support Volunteer
    • View Profile
Re: NavMesh and Live Region Updates
« Reply #6 on: Nov 12, 14, 12:29:18 AM »

yeah, its done (mostly).  alot of these methods we've been using for a while in various other systems, but this one I had hoped to leave stock.  It utilizes a fair chunk of built in pathing functions, i've simply provided alternative path points. 

We don't use much physics aside from whats necessary for collision detection etc, the game is mostly AI and is based on an enormous amount of NPC individuality (now theres a conflict of terms eh?) however when and where they make use of that system will depend on where they are, and the amount of players in the area.  Most of it will be handled asyncronously and they'll be instructed a bit here and a bit there over time.  Npc's as well as the game world itself, are dynamic and function on their own to a large degree.  so, the use of complex AI such as pathing etc, isnt a design choice, its the game. 

regarding physics on the client, we don't plan to make much use of the physics system,(aside from player collision, falling, etc, the basics)  it simply doesnt fit our game play.  One of the first things we did was look through all that HE could offer, pick our tools, and put the rest back in the box for the next project.

At any rate, I reckon this is resolved for now.

keeperofstars

  • General Accounts
  • *
  • Posts: 998
    • View Profile
    • StarKeeper Online
Re: [SORTED]NavMesh and Live Region Updates
« Reply #7 on: Nov 12, 14, 09:28:55 PM »

one thing you could look into, is using the alternative path system only when the system is in a dirty mode, then utilizing the normal pathing aspects.

Just a thought to take weight off the servers and push it back to the physics server, which manages the pathing better.

Guess it depends on how often the clients will be making the area .dat files dirty.
Logged
[img]http://screencast.com/t/x7btcSSyp3h0[\img]

ToY-Krun

  • General Accounts
  • *
  • Posts: 677
  • Support Volunteer
    • View Profile
Re: [SORTED]NavMesh and Live Region Updates
« Reply #8 on: Nov 12, 14, 09:57:51 PM »

You're right of course, all those things I did consider.  I wasn't too clear in my solution though...

I developed a method of storing the alternative path points of the special models to a list in the area itself.

when an npc is in or on one of these models, it chooses path points from the list, and sends those to the $PathSystem.PathToPoint. 

So its still utilizing the HE path system, Im just bypasing a bit of it and calling for an explicit From Pos and To Pos.
where I have these points placed, there can be no collisions, so as long as they are close enough (this I calculate as well in the Npcs AIAgent) the travel, if not, something is/was wrong in code and I check it out.  so far, its working quite well.  I left one of these randomly built dungeons running for a few hours and there were no hickups in pathing.   

You mentioned using the alterante system only in special cases, and yes, thats exactly what I came up with as well.  In order for an NPC on level 15 to travel successfully to level 1 (for any reason the AI thought was necessary)  It uses the alternate pathing I've come up with using $CharDriver and some fancy shade tree mechanic thinking lol.  this I'll perfect later on down the road, what I desperately needed atm was pathing, any pathing, to test these models out.  so its working a treat. 

Appreciate you bouncing ideas.

keeperofstars

  • General Accounts
  • *
  • Posts: 998
    • View Profile
    • StarKeeper Online
Re: [SORTED]NavMesh and Live Region Updates
« Reply #9 on: Dec 24, 14, 11:53:12 AM »

could use the base navmesh, and then use this method

http://hewiki.heroengine.com/wiki/Gameplay_FAQ

the one about the flame wall it adds server load but for testing should be good. Also as that FAQ points out it's best to build a better system of keeping tabs of bad spots and feeding it into your AI scripting but if you aren't there yet can use that method for early stage quick to do testing.

Logged
[img]http://screencast.com/t/x7btcSSyp3h0[\img]