Retera / WarsmashModEngine

An emulation engine to improve Warcraft III modding
GNU Affero General Public License v3.0
192 stars 37 forks source link

need some optimize on find pathing #21

Open Amrf000 opened 1 year ago

Amrf000 commented 1 year ago

image

Retera commented 1 year ago

Yes, definitely. I had not gone to the extent of using a profiler, but based on my experience testing the code and thinking about how I wrote it, this is absolutely the case. The pathfinding is currently the cause of most visual framedrops.

Do you have a pathfinding algorithm in mind that would retain the same visual fidelity of "feeling right" with regards to larger and smaller units in larger and smaller pathways, but that would perform much better?

For example, here is a video from a year and a half ago, when I was testing CPathfindingProcessor with regards to how small units like the penguin can travel to small pathways that a hero like Jaina cannot reach: https://www.youtube.com/watch?v=L2YLW0J6qLE

So, the pathfinding has a lot of tweaks to try to make it fit individual cases. But those tweaks do not change the fact that I started from the pseudocode of A search on Wikipedia: https://en.wikipedia.org//wiki/A_search_algorithm

Maybe you have in mind a better pathfinding approach, instead? Perhaps you could implement it and put it into a pull request?

Amrf000 commented 1 year ago

Yes, definitely. I had not gone to the extent of using a profiler, but based on my experience testing the code and thinking about how I wrote it, this is absolutely the case. The pathfinding is currently the cause of most visual framedrops.

Do you have a pathfinding algorithm in mind that would retain the same visual fidelity of "feeling right" with regards to larger and smaller units in larger and smaller pathways, but that would perform much better?

For example, here is a video from a year and a half ago, when I was testing CPathfindingProcessor with regards to how small units like the penguin can travel to small pathways that a hero like Jaina cannot reach: https://www.youtube.com/watch?v=L2YLW0J6qLE

So, the pathfinding has a lot of tweaks to try to make it fit individual cases. But those tweaks do not change the fact that I started from the pseudocode of A search on Wikipedia: https://en.wikipedia.org//wiki/A_search_algorithm

Maybe you have in mind a better pathfinding approach, instead? Perhaps you could implement it and put it into a pull request?

I will do some try