Bot Of The Month Club
The Activeworlds Utility is a program that allows citizens to search worlds for people and property, in addition to duplicating, moving, and copying objects.
The Utility has five modes: the line builder, the rectangle builder, moving objects, and the people and property search modes. Because the Line Builder, the Rectangle Builder, and the Move Objects modes are rather self-explanatory, are simple to implement, and are explained fully in the help files, I won't go into much detail about them here.
The people search mode, on the other hand, took some time to put together. The basic search algorithm is rather simple: the bots simply sweep the world in "columns", moving 400 meters (AW's chat range) to the west every second (in Hyper mode, the time is one half second). After the bots reach the westmost edge of the buildable area of the world, they teleport back to the east edge 400 meters to the north. When one bot begins to overlap the range that another has already swept, the program terminates, or, if you have set the Continuous Scan option to true, resets all bots back to their original positions to update the results. If you set the program to scan only part of a world, the utility simply treats that area as if it were the entire world, sweeping back and forth inside the square. Because the SDK only allows bots to "see" about 400 meters at a time, scanning a world the size of AlphaWorld is impractical because most of the people who were in the world when the search began will have moved to a different location or left the universe entirely by the time the search completes. I have found the utility to be most useful in worlds such as Yellow and AWTeen that are large enough to warrant a scan for people but can be surveyed quickly enough that the results are still valid. I regularly use 25 bots to scan AWTeen in about two minutes.
Because the Utility was designed before the release of build 19 of the SDK, the property search feature uses normal zone queries in much the same way that the seekerbots perform their operation. After dividing a world into columns, the columns are queried and the results are filtered according to the criteria you specify. The many bots generally complete the operation in a much faster time than if the new SDK feature for scanning an entire world (with one bot) were used. In the next version, I hope to implement a Xelagot survey file save feature (see below) so that users can open a Xelagot to manipulate objects in addition to deleting them with the utility.
The program has a long and detailed past. I originally conceived of the idea in July 1998, before the AW SDK was released, when I first discovered AW and constructed my first buildings in Winter. At the time, I was looking for a way to build more quickly, and made a simple VB "sendkeys" program that sent the forward arrow key to the AW browser when I clicked a button so that I could cover a large area quickly. Unfortunately, since I was a tourist at the time, someone deleted my land and I left AW due to time constraints until the next summer.
In 1999, I registered for a citizenship and upgraded the utility to include the line builder mode. Soon, it became clear that it would be easier to build with a rectangle mode that covered land, and I moved on to add that feature as well. Soon, I had a working program that I distributed to a few close friends. It wasn't until I discovered MrGrimm's SDK in early 2000 that I began to incorporate SDK features in the program.
In July 2000, I officially completed the SeekerBot mode, which searched an entire world to see if and where people were present. I had discovered the world of AWTeen a few months earlier and tested the bots in the world, which at the time had an average user count of about five at any one given time. Immediately, I received a telegram from a citizen complaining that a bot had passed through his town, searching for him. For the next few weeks, I was caught in the middle of a controversy between those who wanted to use the bot in the universe to find others, and from those who wanted their privacy respected. Caught in the middle of this huge controversy, I had to postpone the release of the SeekerBot until after visitors posted some 100 signs voting one way or the other in AWTeen (the site is still around somewhere, but the coordinates have been lost). Ironically, the vote ended 45-44 in favor of the bot's release, and it was released the next day. Throughout the next few months as MrGrimm updated his SDK again, I added various features such as teleporting and GZ avoidance.
The property search bot didn't come about until a few months later, when I found the idea for the search from Ima Genius's website. The website stated that he would release an AlphaWorld property search utility. However, when I learned that the utility would only search AlphaWorld, I developed and released the property search utility to scan other worlds.
When I finally released the utility out of beta form, I posted a message to the newsgroups, to which ananas replied "Never download version 1.00 of any program again!" Indeed, in my concern over the "gay rights" complaint (which later turned out to be unproven) in the community newsgroup, I had misspelled a variable, causing the entire program to malfunction, which I fixed in version 1.01.
In reality, when HamFon asked me to produce this article for this month's newsletter, I was preparing for AWTeen's next major event, releasing my Ultimate Paintball bot, helping to revive a galaxy, and revamping my entire website from scratch. Therefore, while I had hoped to be able to release version 1.10 of the Activeworlds Utility in time for the publication of this article, it looks less and less likely. Version 1.10 will include a feature to save results to Xelagot survey files, show the browser versions of users, and include other options.
Hamfon asked me to include a paragraph about what was the most challenging obstacle to overcome during the development of the utility. I would have to say that two major factors have limited the utility's development: compatibility with Windows 2000, and time.
One difficult task in developing the program was making it compatible with Windows 2000. Since I didn't have a copy of Windows 2000, I had no way of knowing that the program was incompatible with the operating system until after its release. I received complaints that Windows 2000 users received errors during the installation process. I quickly became frustrated after trying different optimizations and installation packages, none of which solved the problem. The answer came to me one day while I was replying to some newsgroup posts, and, like most the solution to most problems, was so simple that I should have discovered it months before. The problem was that Microsoft had released a free service pack to Visual Studio that fixed the incompatibility problems with Windows 2000. All I had to do was download the package, install it, and redistribute the program. Doing so took all of five minutes and eliminated a problem with which I had been stumped for months.
The other factor that has limited improvements to the program is that common enemy of everyone: time. In fact, time has become such a problem that I now have seven unreleased bots (including a gatekeeping bot, a "smooth" world controller bot, version 1.10 of the Utility, a vote bot, and the 2000 Cy Technical Innovation Award winning paintball bot), all of which I developed for some specific purpose and have no objection to releasing. The only obstacle to their release is that they simply need to be debugged, and my commitments to other AW organizations have forced me to shelve these programs (and the Utility) because of a lack of time to debug them.
Those who are interested can download the Activeworlds Utility version 1.01b at http://www.shoemakervillage.org/programs.html.
Active Worlds | Newsletter Home | Newsletter Archive | Contact Us