Right, it draws from a global table of explored rooms, because it doesn't need each particle to explore each room, only every room to be explored by at least one particle.
Now, I want to visit each room in a more physical sense (as much as you can get in a mud!), and have my character double-check the data I've got stored in my map, as opposed to virtually drawing it. So, I wish to generate a path that walks around the 8 rooms, for example, and for each room do a check to makes sure the exits, environment, room description, ect, are all correct with the database, and then moves to the next room.
The problem with this is, my character isn't a particle, and can't follow multiple paths at any given time. And the mud I play has a sort of movement statistic that regnerates over time, so moving too much can wind me up in hostile teritory with the ability to move.
Edit:
I'm clearly not explaining this as best I could, but each particle as a memory of its own, personal, explored rooms. So each time a particle reaches an intersection and a choice has to be made, it splits off (as per the original code), creating a duplicate of itself. Then, should that particle reach a room where no choice can be made, it'll look through its own personal memory and find the last intersection, moving towards that intersection, branching off again when it reaches its destination. (EG: A three-way branch creates three particles, one of which hits a dead end and returns to the branch, now creating two particles. So, assuming all three branches were dead ends, you'd end up with 6 paths.)
The goal being that for every choice possible, a new path will be created, and all paths will eventually explore all rooms in the area, and then they will compare themselves against one another (shortest path/highest number of unique rooms) to return the most efficient path.
|