(1/2)
I attemped this earlier and was crucified because I had a link to a locked thread. This is similar to the framework that I have laid out for another game. It is on place on a few servers (private servers) and seems to work well.
Everyone keeps mentioning IP blocking as THE solution to the botting problem. It is NOT the answer. A proxy is painfully easy to enable (in some case, as easy as running a freely downloaded program) so IP blocks are useless. Although locking out other regions from playing on the geographical region designated (i.e. blocking Asia from playing on the North American region) may help in the slightest bit, it will end up hurting many others. This might include those traveling on busy, vacationing, visiting family/friends, and any other reason that would require one to be outside his/her home region. It begs the question, “then how do we solve it hot shot?”
Mapping.
Each map will be broken up into roughly even tiles. Since I have two Sylvari, we will use Caledon Forest as my example zone. Let’s say that Caledon Forest is 20×14 tiles for the rest of this article. With the map broken into tiles, a very simple script basically logs a player while in a map. Each kill made(1pt) , every item looted(1pt), every material harvested(2pt), every bit of mail sent(5pt) is logged. Any character reported for botting should receive a bonus to the points earned (say +1pt to all the actions above per 2-3 reports). The zone will handle all the data from each character. Every X seconds, the top 10 in each tile is moved over to a top-suspects zone log. Every Y minutes, the top 20 from the zone are moved to a global log. All logging will be done by account id (since it makes easier to spot those character hopping to hit events). Any character with X amount of events or Y minutes/hours within highly specific regions (say, a 2×2 area), it can safely be assumed to be a bot. Obviously, to prevent the ‘slaughter of innocents’, either of those values needs to be suitably high to avoid innocents being banhammered. To further protect legitimate players, certain tiles could be marked as “hot spots”. Such tiles could need double/triple the points accumulated and/or time spent to flag the character. With a bot sitting in plain view of players, the “report a bot” feature comes into play (which will eventually launch the bot’s point score past the danger threshold). When a character is identified as a bot, the suspension is handed out and the account locked until the owner goes through customer service. This serves to limit damage done by stolen accounts, let the account owner know that their account was compromised, and remove those bots from the game for small periods in a highly automated fashion. Removing the need for constant human intervention allows for a much more rapid bot destruction.
For example, let’s say BobtheBot on his ranger (with required bear pet) is farming in Caledon Forest (specifically tile 2,4). As BobtheBot’s activities continue in this one tile, a counter is logging the number of activities. After a few hours, it’s clear that BobtheBot is… A BOT. He has spent the last few hours in a single tile (and/or it’s adjacent tiles). He killed 20-30 mobs (20-30pts) per minute, each dropping an average of 2 items (20-30pts), and sent one spam email every five seconds (60pts). Every minute, BobtheBot was earning 100-120pts. That is roughly 6000 – 7200 pts per hour. Within 2 hours, BobtheBot has hit the points earned threshold. His account is flagged for suspension and lockdown. This will knock out the bot for the remainder of the day and possibly returning ownership of the account to the REAL Bob (if it was indeed stolen). If BobtheBot returns to repeat the process, he will last another 2-3h farming, then his account will be banned. Since everything was logged, all the accounts that BobtheBot emailed loot to are also logged and flagged. By logging and flagging the loot drop point accounts, entire networks can be locked down quickly.
-Hate