Current edition: Vol.6, No.4, April 2003
 

Active Worlds News


3D Homepage Theme
World of the Month
Worlds to Watch
Tech Support Tip
Bot of the Month
Artist's Tip
AWEC News
Easter Egg Hunt
Spring Festival
Volunteer Highlight
Bit's Who's Who
Hot Spots to Visit
Game Hosts
Reunion 2003
AWEC Calendar

Resources

Building Links
Community Links
AWCOM Links

 

 

icon

 

icon

 

icon

 

 

Bot of the Month

Courtesy of Tacoguy

Tracker is the fifth of six Bots I have written. I am retired with a formal education and many years of experience in electronic engineering and software development. I make Bots as a hobby now and I hope to use this opportunity to showcase Tracker as a successful model that will help you and encourage further Bot development.

First of all, Tracker is a Bot with a mission. It is a specific task Bot. Prior to writing a single line of code, the mission was specified. It is intended to watch Worlds for offensive words, vandalism, name changers, offensive URLs on signs, CAPS LOCK and chat flooding.

I believe that it is so important to make a specific task for the Bot and stick with it. If new tasks are needed after the initial development and coding starts ... make a new Bot.

I have always believed that documentation is so very critical for a variety of reasons. I always start any Bot by making a Web page for it. I take a screenshot of it and document what it does and how to use it. This keeps me focused, lets me see the GUI for the Bot and I update this page frequently as development progresses. This Web page also allows a mechanism to ask other people to comment on what they see and think before any Beta versions are even released.

There are some commands that can be issued to Tracker but much of what Tracker does is on the level of "receiving events" ... such as AW_EVENT_CHAT.

One thing that becomes apparent to any Bot developer right up front is there are certain things like coordinates that users normally use that Bots handle differently. For example 6S 11W is actually -6000 N/S and +11000 W/E. You need a mechanism to handle issues like this. Tracker has about 20 "functions" that handle string manipulations. These range from InString, cleaning non ASCII characters, converting N/S and W/E to +/-, getting numeric values from strings ... etc.

I can not stress strongly enough that much of the development time for any Bot should be on handling errors. As mentioned previously, much of Tracker's functionality depends on receiving events. Tracker can see chat and respond to requests like /pswho and /pson and /ip xxx and several others. But what happens if someone sends //pson or /PsON or \pson ? Any good Bot developer will anticipate these issues and have an appropriate error handling routine in place. A bad Bot is one that ignores improper requests or gives improper returns to such things. For every one task that Tracker has ... there are probably 10 error conditions that it can deal with.

Something that Tracker has strictly adhered to is version control. Every different release of Tracker has a different version number that is available in the About Box in the Taskbar. This helps to assure that any error reports and bug fixes can be responded to properly. If the user has version 1.3 and the latest is 4.6, you don't waste time chasing your tail. Keep the latest version available to users and post on the Web page the latest version available.

Let me now share some interesting elements of Tracker.

It is a very complex Bot that took almost 3 months to develop. I enlisted many different beta testers to help "get it right". I was in no hurry to complete it but was more interested in "getting it right". I was very patient and took every bug report seriously.

There were some early bug reports that actually had nothing to do at all with Tracker itself ! It took careful analysis to determine that as Tracker is intended to be a 24X7 type Bot, almost anything could happen. One of the most fascinating of these was the person running Tracker was on a dial-up connection and the Bot was receiving sufficient traffic that the connect rate was being exceeded and Tracker was losing traffic and simply appeared to be malfunctioning.

Tracker is like all of my Bots .. it functions on 2 levels. The first level is the local one that consists of the GUI and making sure that the Bot does not consume all the resources of the machine it is hosted on. The second one is the chat level interface that most people actually see.

On the local level, Tracker has a way to save to a local file all of the needed parameters so the user does not need to enter all the login parameters manually. It also makes sure to clean itself from memory when closed. Tracker also resides in the "System Tray" so as to not occupy precious space in the Windows Application Bar.

The chat level interface is where a lot of time was taken. First of all, Tracker needs Caretaker rights for a variety of reasons. It needs to watch an entire World, not just it's immediate area and Tracker communicates via console messages. The color of the console messages was carefully chosen to be "different" from other messages in AW. The Bot sometimes sends messages only to PS but sometimes sends messages to "offenders" as well. Messages to PS that notify of issues InWorld always are the console color but appear to come from the offender. This is done so the PS can right click the message and have the option to teleport to the location without wasting time to physically locating the issue.

Great care was taken with regard to automatic "ejectable offenses". There are several of them but they are selectable at the discression of the World. These include banned words, chat flooding and excessive deleting of objects not owned by you.

I would like to address these issues on a case by case basis. The "Banned Words" issue is perhaps the most interesting. I developed a Web Browser several years ago called Librowse. It was for use in libraries. That was the first time I made available a filter mechanism. This was met by cheers and sneers. All kinds of free speech issues arose and I became somewhat of a celebrity. What I finally ended up with (and is used in Tracker) is a simple text file that the World owner can edit to include what words or phrases that the Bot will look for.

All of these offenses use a novel approach to ejection. When an offense is detected, the session number is added into databases. These databases are queried every 10 seconds to build a second set of databases that then become very suspicious. There is yet another query to this second level of databases every 60 seconds. If the number of offences in this second database exceeds a number that is selected by the World owner ... that session is ejected for a time that is also set by the World owner.

I invite you to see the Tracker Webpage at [link removed].

I hope that this was helpful and please contact me at any time. Best Regards :-) Tacoguy

Do you have a bot or know of one that you would like to see featured in the newsletter? Contact us at: newsletter@activeworlds.com.

 

 
  Active Worlds   |   Newsletter Home   |   Newsletter Archive   |   Contact Us    |   Disclaimer