- The angle-penalty for terrain graphs seems odd. Increasing the factor above 100 has no effect, and at 100 it is too subtle. I couldn’t find docs to explain what the 100 is. I’m guessing it’s a percent, since increasing it has literally zero effect.
So I tried manually creating the correct penalties based on slope. Easy enough, only 30 lines of code for an arbitrary Terrain. But, when I tried to use my (checked by hand!) correct data … the docs on setting penalties are 3 lines of code that only “sort-of” work.
- The “how to set penalties” documentation is mostly missing. The example given uses an unexplained magic number. I found that increasing this number by different amounts has RANDOM effects on the data. The number is clearly not just a scalar.
I had best results at scalars of 10,000,000 (10 million!) and at 1,000,000,000 (1 billion!). 100 million? No. Random weird data. 10 thousand? No, identical to 1 thousand (even though it clearly isn’t). 100 thousand? Random weird data coruption in the library.
-
I found that if you don’t also call “guo.updatePhysics = false;” then the data that is output is mostly wrong, again in seemingly random ways. I read and re-read the docs on that boolean several times, they are still meaningless to me, and I have no idea how/why they affected the output. I’m not even using physics!
-
What do the Bounds objects mean? What are they defined relative to? Undocumented. I guessed “absolute space” but experimenting suggests this is only “patially” true. Increasing/decreasing them by 0.001f has enormous random effects. Increasing from a bounds of 1f to 2f … seems to disable the calculation completely.
So much randomness, in something that should be precise! And so little docs on what the magic numbers are, what units, what co-ordinate space, etc :(.
- With the penalty-dbugger … what’s it doing? I get red and green, but … what defines them? The docs give no info on what a penalty means - what units is it in? What does it do? How does it interact with a graph? etc.
So I also wrote my own Gizmos-based data displays to check the above: I now have much clearer displays of “penalties” than is built-in to this library, which is a shame. But it makes it easy to show that the penalties system in this library doesn’t work how the docs imply (and I have run out of guesses at what’s missing from the docs).
In my experience “editing the penalties” is absoltely critical to using A* in a non-trivial way in game design. I am on the verge of giving up on this library completely, because penalty-management is so intensely difficult, and yet it’s one of the main features of the algrorithm.
NB: on the whole, I think it’s an excellent package. I love the editor integration, and the automatic bits. I would like to buy the commercial version even though I don’t want or need any of the features simply as a “thank you” to the author.
It’s just that a lot of it is unexplained and very frustrating when it stops working, or does the wrong thing (why did it do that? I have no idea, and no way to find out :(. By trial and error I’ve found a lot of controls that SHOULD NOT affect each other, but do ).