Tuesday, November 13, 2007
Several days ago, I mentioned trying to come up with a self-guiding vehicle using the right-hand maze solving trick. This morning, it occurred to me that I never got around to posting an update. In short, I'd have to call it both a success and a failure. On the plus side, it is capable of following roads quite nicely. When it works, it works great! From the proper starting point, I was able to get it to run through a couple dozen sims before self-destructing (as is the fate of all SL vehicles). Incidentally, llMoveToTarget seems to handle sim crossings more easily and safely than conventional vehicle code. I can't say for certain why. Worth filing away for future projects, in any case.
However, the usual problems with No Entry ban lines and vehicles still apply. Under normal circumstances, the road follower just skirts the borders of such land, without crossing them. But not so in the case of sim border crossings. Those ultimately are leaps of faith, based on the normal road design guidelines. Generally (~95% of the time), roads continue on the other side of the sim border. So it's assumed, in effect, that if a road leads to such a border, it must continue on the other side. And this works most of the time.
But the occasional fringe case kills it. In particular, roads that cross sim borders at shallow angles can create awkward crossings. If the vehicle is approaching the border at a steep angle (say near perpendicular), and the road crosses at a shallower angle (a few degrees off parallel), the vehicle can end up crossing the edge of the road at the same time as it crosses the sim, dropping it in a third-party owned parcel on the other side. This is normally recoverable, as the road will still be only a few meters away, within normal scan range. (I also added manual controls for the driver, so he can nudge the vehicle back on track if it cannot recover on its own.) But, if that third-party parcel has No Entry enabled, the vehicle will eject the passenger, and Bad Things (TM) happen. Anyone who has driven an SL vehicle for more than five minutes knows what I'm talking about. I sincerely wish they'd fix the invisible ban lines bug at sim borders, for just that reason. And, of course, since parcel parameters (such as the name, group, owner combo I used for picking nav points, or detection of no-entry flags) cannot be read across sim borders, it's an unsolvable problem. At lease, unsolvable without dramatically changing my whole concept.
Then there's the problem of vast tracts of Linden-owned land set to no script, effectively disabling vehicles of all sorts. This one was particularly vexing, as many of the roadways and waterways on the mainland cross these parcels. That pretty much nixed my plans of an autonomous road follower, as this change to no-script tends to happen on the opposite site of sim boundaries, as well. As such, llGetParcelFlags can't be used to detect them, either.
There were a few other land configuration issues that killed it, as well. Occasional fringe cases (such as Linden Maintenance plots abutting roads, misleading the scanner) caused unexpected changes in direction, weird choices in sim border crossing, etc. And one sim-border-brushing turn in Alice on the stagnant river gave me all sorts of fits. In short, it works great for roads... But only roads. The chaos of the patchwork Grid just doesn't lend itself to such automatic navigation. Too bad. Still, I can't consider any scripting task like this to be wasted effort. A use will inevitably present itself.
The only other method I can think of for my proposed road-touring vehicle would involve walking down all the roads on the Mainland, and plotting a course by hand (or by script) as I go. I suppose this could be done. (In fact, I think that's how the Atoll continent's Metro bus system works.) But I find the idea distasteful, not to mention horribly daunting on the convoluted roads of the Mainland.
So, file away that project in the "Experimental" folder for a later day. In the meantime, a fellow by the name of Lionel Oliva has presented me with an interesting proposal for a new SL game. And it looks like I'll have a chance to reuse a few parts of the now-defunct Garage of DOOM, too. See what I mean? No script is wasted.
More on that later.