[Long story alert]
and sorry about the English, not a native English speaker.
here is the background story.
I had implement the following things in my 3D space path finding project, which started 3 months ago.
Octree data structure to store the obstacle information
dynamic mean { Grow, Shrink, Merge, Split } depended on the obstacle collide box shape.
Obstacle with adjust it’s update time between 0.2s ~ 10s, depend on the position change frequency, and report to Octree without using physical collision checking.
Flight agent with
Boid + Flocking and steering behavior
Use physical engine for travel between space, instead of setting the transform.position(teleport),
therefore the agent might affected by rigidbody collision at runtime.
also created a async operation with Thread Ninja : http://u3d.as/6Q2 , but this not working since the octree node will destroy and re-created in different size (lose object reference)
Problems:
Major issue was how to optimize things on 3D space path finding itself.
for now the A* search algorithm can not be async, because those node can be destroy and recreate at runtime…(even I implement the async method but facing the memory issue on Solution C)
see if anyone can give me the idea to solve or workaround this.
Solution A)
Static octree, not allow to dynamic update obstacle, but then A* allow to search in async mode,
but (Question!) how to solve the run-time obstacle avoidance ?
Solution B)
Dynamic octree, A* MUST finished the search in 1 cycle remain unchange, therefore to reduce A* search & cloud path finding, I can implement the HPA* style, put Lazy Theta Star in high-level node search and implement flow field on low-level, but is that really work ?
Solution C)
Dynamic octree, but dump all nodes in memory until finish the searching…(fucking crazy for the data structure like this.)
Solution D) partial dynamic octree, merge & split node need to queue up and locked based on path finding request or time …etc, or allow develop to define the area that require to update at run-time
Sorry, I don’t think I can continue developing on this one,
I was trying to use Physics to move those agents (which is wrong, so wrong).
to calculate some movement in pure physics was rocket science.
at first I was planning to open-source the project and try to co-op with others,
however not much response
since my daily work & side project are not require to use those tech.
therefore I design to abandon this project and move on, may be some day I can re-open it.
Sure, I always happy to sharing things, if you understand coding you can use it.
about the license I’ll consider using GPLv3, which mean you can use it in your project or product for free.
however, there is one big problem here, the project is based on my math library, and I just made a deep refactor on that library… including the namespace .
so right now, I’m sure the script won’t work if you just import into your project.
a bulk of error related to API not found.
so… may be I’ll try to fix those problem on this weekend.
GPL requires that I make my commercial products follow GPL as well. Which is fine if I was just writing libraries, but I have to be able to sell my games in the end.
I’m more of a MIT or BSD license person myself. Which is what my framework uses: