Download

Dynamic non-destructive collision mesh modification and spherical object masks

I suppose this is going to be a doozy, but I need to look into this.

This is an early test of a system I’m prototyping for a game I’m calling JOSTLE BOTS. The idea is that each player has a weapon that can project temporary, perfectly spherical holes into the level geometry, save for specifically marked objects. Right now I’m building it in Unity, but I’m thinking that UE4 might allow for a more functional work environment, but I have some questions about what it’s going to take to implement some things.

  1. Is there a way to cast a spherical mask that would exist in world space and only mask the objects it intersects?
  2. I know that the navmesh can be updated in the editor itself, but can I do this at runtime to account for the temporary holes?
  3. Is there a way I can non-destructively temporarily remove a sphere (preferably one that expands to its full size over a period of time) from the collision geometry, leaving a sphere shaped hole in its place where you can collide with the edges?
  4. If I can do this, will I have to deal with any hiccups with the changing shape of the level collision causing the player to fall through the world, or is the physx implementation smart enough to handle this itself?

Somewhat complex stuff, I know, but if I can do these things easier than I’m doing them now, it’s basically going to sell me on switching platforms for this project. It’s early enough in development that I won’t lose too much time.

Bump since I posted this probably a bit too late for anyone to see it.

I know about this one:

  1. navmeshes are also updated at runtime and work quite well

Okay, that’s good to know. I’ve never had to make much use of navmesh in my previous projects so I’m only really familiar with Unity’s implementation.

I found this guide to realtime Constructive Solid Geometry (http://sandervanrossen.blogspot.ca/2009/12/realtime-csg-part-1.html) and it looks like it might be promising if there’s no in-engine way to accomplish this. I imagine I could implement this in C++? Also, I’m still not sure how/if I’m able to use spherical object masks.