Avoiding botting through code
Goto page 1, 2, 3  Next
 
Post new topic   Reply to topic    mudlab.org Forum Index -> Design
View previous topic :: View next topic  
Author Message
KaVir



Joined: 11 May 2005
Posts: 565
Location: Munich

PostPosted: Thu Jul 28, 2005 10:31 am    Post subject: Avoiding botting through code Reply with quote

Well it seems I overlooked some things with my mud design, and I'm now having problems with botters. I designed combat well enough that a bot cannot compete with a human player - however that doesn't stop the fact that some players will leave bots running to gather additional primal (which is basically exp)...bot as efficiently as when they're online, but they obviously get a lot more than they would for remaining logged off while they sleep/etc.

What I don't want to do is introduce administrative rules to deal with it, as that would be opening a huge can of worms that I'm not prepared to deal with. Instead, I'm trying to find a solution that can be handled through code.

Simply ignoring it is not an option, either - I don't want to pay additional $$$ each month to support a mud full of dozens of bots.

One idea that sprang to mind would be to use something like certain websites use to prevent automated votes - display something which a bot cannot pick up, and require that the player types it out. For example, after killing X mobs you might get something like:

Code:
>
You earn sixty-six points of primal, reaching your primal block.
<HINT> To remove your primal block, type 'unblock'.

> unblock
Please type 'unblock <code>', where the code is the following:
 ____  _____ _____ ____ 
| __ )| ____| ____|  _ \
|  _ \|  _| |  _| | |_) |
| |_) | |___| |___|  _ <
|____/|_____|_____|_| \_\

> unblock beer
Primal block removed.  You may now earn primal again.


This could display random sequences of characters, using a mixture of fonts and sizes, making it inpractical to bot. Unfortunately it would make the game unplayable for blind players, and I don't want to force such players to download sound files, so I got to thinking about other possibilities.

Another idea I came up with would be to display a very simple maths question using textual numbers, for example:

Code:
>
You earn sixty-six points of primal, reaching your primal block.
<HINT> To remove your primal block, type 'unblock'.

> unblock
Please type 'unblock <answer>', where the answer is a purely numeric value (i.e.,
if the answer is ten, write it as '10'):

Twenty-four plus three, then double the result and subtract one.

> unblock 53
Primal block removed.  You may now earn primal again.


I'd make it optional which approach you wanted to use (the latter would be primarily for the benefit of blind players, or those who didn't used fixed-sized fonts). However I've been told that the maths thing could be scripted (I fail to see how, without some specialised client, but still).

Other players have suggested ideas such as hiding words among a line of characters, or using extremely simple questions that every human knows but which would require complex AI to determine.

Of course, all of the above are also quite annoying, and effectively force all players to jump through hoops for the sake of a few botters.

So then I thought, what if the bot-block could be integrated into the game as some sort of puzzle? Complete the puzzle, and your first 10 kills for the next hour are worth 2.5 times the normal amount of Primal. Note that the original system was designed around the idea of earning 250 Primal for a same-strength kill (so 4 kills to train a stat at Age 100) - I deliberately lowered it to 100 because I wanted progress to be slow while I ironed out bugs, but the original game design is based around faster advancement. With that in mind, and based on the assumption that 50 kills for an hour of play is a reasonable number, here's a suggestion:

If you earn less than or equal to 400 kills in a single RL day, then for every 100 kills below 500 you earn a 'boost' point (so 1 with 400 kills, 2 with 300, 3 with 200, 4 with 100 and 5 with 0). If you earn more than 500 kills then the primal for all further kills is halved. The boost points could keep track of fractions, so you wouldn't need to have an exact number of kills (eg get 450 kills two days running, and on the second day you'd earn a boost point).

You can spend a boost point by completing a puzzle (something designed to be unbottable). Your first ten kills in the next hour then receive a 2.5 x primal multiplier. You may spend up to 10 boosts in a single day (this will renew the 1 hour deadline for the previous boost if you've not yet completed it). You cannot have more than 100 boosts - any beyond that are lost.

This means that if you're actively playing for 2 hours, and you have 10 boosts spare, you could earn as much as a bot could in 5 hours. Your next 3 hours of play would be as beneficial as 6 hours of botting, although you couldn't keep that up for long (a maximum of 10 days, assuming you'd not made any kills for 20 days before that).

This system would encourage active players to focus on the mobs which could give them the most primal, which would mean hunting down the more dangerous opponents. It would also work out well for players who couldn't play for a day, or could only play weekends, or who had been on vacation for a week.

It would still allow for botting, but would make it less attractive. The bonus is not really enough to encourage people to stay offline (you'd have to miss out on 100 mob kills today in order to get 15 'free' kills tomorrow) but would at least go some way towards addressing the issue, as well as make the game more appealing to casual gamers.

This is obviously a disadvantage to the hardcore gamer, but s/he would still earn more than a casual gamer - just not quite as much as they would have before. To put it in numbers:

24 hours/day gives 850 kills worth of primal instead of 1200
23 hours/day gives 825 kills worth of primal instead of 1150
22 hours/day gives 800 kills worth of primal instead of 1100
21 hours/day gives 775 kills worth of primal instead of 1050
20 hours/day gives 750 kills worth of primal instead of 1000
19 hours/day gives 725 kills worth of primal instead of 950
18 hours/day gives 700 kills worth of primal instead of 900
17 hours/day gives 675 kills worth of primal instead of 850
16 hours/day gives 650 kills worth of primal instead of 800
15 hours/day gives 625 kills worth of primal instead of 750
14 hours/day gives 600 kills worth of primal instead of 700
13 hours/day gives 575 kills worth of primal instead of 650
12 hours/day gives 550 kills worth of primal instead of 600
11 hours/day gives 525 kills worth of primal instead of 550
10 hours/day gives 500 kills worth of primal instead of 500
9 hours/day gives 450 kills worth of primal instead of 450
8 hours/day gives 400 kills worth of primal instead of 400
7 hours/day gives 350 kills worth of primal instead of 350
6 hours/day gives 300 kills worth of primal instead of 300
5 hours/day gives 265 kills worth of primal instead of 250
4 hours/day gives 215 kills worth of primal instead of 200
3 hours/day gives 180 kills worth of primal instead of 150
2 hours/day gives 145 kills worth of primal instead of 100
1 hour/day gives 110 kills worth of primal instead of 50


Also note that, although a bot could still earn more kills than an active player, the active player could choose their kills based on the more profitable opponents, deliberately seeking out the strongest opponents they could handle.

One player has suggested that this would result in 'burst' play, with players logging on for short hunting sessions then logging off again. My solution to this would be to provide alternatives to the random encounter mobs - dungeons are extremely difficult to bot, for example, and could be separate from the above system. PK would also be separate, and there could be various minigames to keep players interested. I'm wondering if this would be enough, however...

Anyone have any better ideas?
Back to top
View user's profile Send private message Visit poster's website
Author Message
Grem



Joined: 15 May 2005
Posts: 36
Location: Maryland

PostPosted: Thu Jul 28, 2005 3:43 pm    Post subject: RE: Reply with quote

The first idea (word with various fonts/sizes) would definitely work, although it seems like a large coding job to undertake.

The second idea can definitely be script solved. Lets be honest, there are scripts out there that automate MMORPGs and respond to in-game messages logically - even to the degree of following orders of other players. (Give the bot 100 gold, and he'll portal you to wherever you ask).

Unfortunately, when it comes to the MUD world, preventing botting is near impossible, as you're working with text. Parsing text is much easier than decrypting packets and manipulating graphical interfaces.

How have other online games solved it? Honestly, they havent. Even in graphical worlds such as Runescape, where random events occur, such as monsters appearing next to you and asking you a random question. Bots simply decipher which monster graphics are nearby, and respond to them appropriately. (Just the same as if a monster spawned next to you in a MUD and asked a question)

Honestly enough, Lineage 2 has the largest problem with botters in existance. Botting is so rampant than entire chains of Chinese IPs are banned regularly. The solution? GMs manually teleport in next to the player and ask them what level they are. This is a terrible solution, as it costs the company money to hire GMs to teleport from player to player and test them. (The 'can-of-worms' as you suggested)


Here's my idea:

Ask the player a question but remove 1 letter from each word, most likely a vowel. In this manner, text-parse bots will be unable to determine the true word and form the question, but players would likely be able to determine the sentence because of the way English is structured.

Example:
"Wht Lvl Ar You?"
or
"Wat Rac Are You?"


In this way, a human would still be able to interpret the sentences, but a machine on the other hand - im not sure how a script kiddy would be able to parse their way through that one, especially if you structured some of them very similar. This is definitely the direction you'd want to go, as it would work for the blind as well.
Back to top
View user's profile Send private message Send e-mail Visit poster's website AIM Address
Author Message
eiz



Joined: 11 May 2005
Posts: 152
Location: Florida

PostPosted: Thu Jul 28, 2005 6:59 pm    Post subject: Re: RE: Reply with quote

Grem wrote:

Here's my idea:

Ask the player a question but remove 1 letter from each word, most likely a vowel. In this manner, text-parse bots will be unable to determine the true word and form the question, but players would likely be able to determine the sentence because of the way English is structured.

Example:
"Wht Lvl Ar You?"
or
"Wat Rac Are You?"


In this way, a human would still be able to interpret the sentences, but a machine on the other hand - im not sure how a script kiddy would be able to parse their way through that one, especially if you structured some of them very similar. This is definitely the direction you'd want to go, as it would work for the blind as well.


Correcting typos is not all that difficult, even moreso when the vocabulary is limited to a fixed set of questions (presumably) so I'm not sure just deleting a random letter would work very well - if your sentences are too mangled and similar, it might become difficult for a user to distinguish between them. I think KaVir is on the right track to solving the problem through game mechanics.


Last edited by eiz on Thu Jul 28, 2005 8:16 pm; edited 2 times in total
Back to top
View user's profile Send private message Visit poster's website
Author Message
Kjartan



Joined: 13 May 2005
Posts: 110

PostPosted: Thu Jul 28, 2005 7:00 pm    Post subject: Reply with quote

This questions-with-letters-removed approach can trivially be botted if the players first accumulate a list of possible questions with all letters. If the question-asking is automated, I imagine the list would be widely available. I would guess the ascii-graphics words would also be quite bottable, you just have to write a script that can parse the multi-line fonts.

The captchas used at TMC for their voting seem to be as-yet-unbroken, but they are graphical. I can sort of see how to break them, but since Sloth is doing pretty well without breaking them, it's not at all in my interest to do so.
Back to top
View user's profile Send private message Visit poster's website
Author Message
Cornelius



Joined: 13 May 2005
Posts: 42
Location: Florida

PostPosted: Thu Jul 28, 2005 8:35 pm    Post subject: Reply with quote

Quote:
The captchas used at TMC for their voting seem to be as-yet-unbroken, but they are graphical. I can sort of see how to break them, but since Sloth is doing pretty well without breaking them, it's not at all in my interest to do so

do you mean to imply if sloth were not doing well in the votes you would have more interest in breaking the system?

Just as a pedantic suggestion, what about using a third party program to test your players- for instance provide a website that randomly generates images or words (similer to TMC)- and ask the player to visit that website and recite the code found therein...
Back to top
View user's profile Send private message AIM Address
Author Message
cron0s



Joined: 13 May 2005
Posts: 34
Location: UK

PostPosted: Thu Jul 28, 2005 9:16 pm    Post subject: Reply with quote

Others have mentioned that people can still bot questions with random letters missing. I distinctly remember there used to be an affliction in Achaea that replaced random letters in combat spam with asterisks to confuse triggers and people could still get around it with clever client scripting.

It's probably not the answer you want to hear, but I think your real problem is that you have a portion of your game which people would rather bot than play. In an ideal world you should focus on how you can change your game so that people don't feel the need to bot, rather than making it so they can't.

It's similar to the debates surrounding paying for leveling or in game items in MMORPGs. The underlying problem isn't how do you catch people and stop them doing it, but instead why they would rather pay someone else to experience game content for them.
Back to top
View user's profile Send private message
Author Message
Grem



Joined: 15 May 2005
Posts: 36
Location: Maryland

PostPosted: Thu Jul 28, 2005 9:24 pm    Post subject: RE: Reply with quote

cron0s is right. Consider game content that either cant be botted, or there is reduced benefits to botting. (Exploring, randomly generated quests, etc)
Back to top
View user's profile Send private message Send e-mail Visit poster's website AIM Address
Author Message
KaVir



Joined: 11 May 2005
Posts: 565
Location: Munich

PostPosted: Thu Jul 28, 2005 10:52 pm    Post subject: Reply with quote

cron0s wrote:
It's probably not the answer you want to hear, but I think your real problem is that you have a portion of your game which people would rather bot than play.


No - they'll play it when they're there. The problem is that they'll leave their bot running when they're not there (sleeping, working, etc).

Quote:
In an ideal world you should focus on how you can change your game so that people don't feel the need to bot, rather than making it so they can't.


That's what part of my last idea was geared towards - reducing the reward you get for spending a lot of time in the game. However it's a bit of no-win situation, because the more you remove the incentive to bot, the more you remove the incentive to play. And as long as there's some incentive to play, there will also always be the incentive to bot (unless there is no character advancement - but that raises all sorts of other problems).
Back to top
View user's profile Send private message Visit poster's website
Author Message
cron0s



Joined: 13 May 2005
Posts: 34
Location: UK

PostPosted: Fri Jul 29, 2005 1:28 am    Post subject: Reply with quote

Grem wrote:
Honestly enough, Lineage 2 has the largest problem with botters in existance.


It can't be worse than Shadowbane. When I played I don't think I ever leveled a character manually. My record was lvl 70 in 3 days I think, 100% afk macro leveling.

KaVir wrote:

No - they'll play it when they're there. The problem is that they'll leave their bot running when they're not there (sleeping, working, etc).


Ah good, well that's not quite as bad then. I agree your last idea about the boost points seems the most workable, but I still think it's a flaw of the advancement system itself. By the way, I thought your game was all about PK? If so then why aren't the bots being regularly ganked by other players?

KaVir wrote:

And as long as there's some incentive to play, there will also always be the incentive to bot .


I take your point, but strictly speaking the incentive in this case is to achieve, or advance your character in some way, not simply to play. People only bot activities where the end result is more important to them than the activity itself.
Back to top
View user's profile Send private message
Author Message
malaprop



Joined: 16 Jul 2005
Posts: 6
Location: Chicago

PostPosted: Fri Jul 29, 2005 1:48 am    Post subject: Reply with quote

Quote:
However it's a bit of no-win situation, because the more you remove the incentive to bot, the more you remove the incentive to play.


That's not too bad for a commerical game as the best customer is the one who doesn't log in (costs the least overhead).

It's also worth noting that your system (which is very clever, I dig it) only discourages botting among players who are planning on playing in person. Players who are on vacation from the game or think the fun part of the game is writing a bot for it will still bot.
Back to top
View user's profile Send private message Visit poster's website
Author Message
Kjartan



Joined: 13 May 2005
Posts: 110

PostPosted: Fri Jul 29, 2005 4:02 am    Post subject: Reply with quote

Cornelius wrote:
Quote:
The captchas used at TMC for their voting seem to be as-yet-unbroken, but they are graphical. I can sort of see how to break them, but since Sloth is doing pretty well without breaking them, it's not at all in my interest to do so

do you mean to imply if sloth were not doing well in the votes you would have more interest in breaking the system?

Well, then I'd be neutral and would only be prevented from doing it because laziness overcomes the interesting-problem-factor. Actually there's more than that, because if anyone broke it, the top-10 list would immediately become a mirror of the TMS top-10-list and I'll give you that that's a bad thing regardless of where sloth is.

I'm sure lots of people could break that system if they cared. I guess that's the limiting factor on in-game captchas as well - it just needs to be hard enough to break that none of your players will bother. In which case the ascii-graphics is probably your best bet.
Back to top
View user's profile Send private message Visit poster's website
Author Message
Alister



Joined: 13 May 2005
Posts: 62
Location: Alberta, Canada

PostPosted: Fri Jul 29, 2005 6:01 am    Post subject: Reply with quote

What if, for periods when players were logged off, they accrued primal based on how much primal they earned during their last login session, or last X hours of play, or something? Some sort of bonus for reflecting on your past actions that would make botting redundant?

Or maybe character improvement could require downtime? As an example: You have skills that slowly go up over time through use, if I remember correctly. What if their max-possible value also went up over time, but did so while players were offline as a function of how much improvement they made during their last session?
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Author Message
KaVir



Joined: 11 May 2005
Posts: 565
Location: Munich

PostPosted: Fri Jul 29, 2005 6:49 am    Post subject: Reply with quote

cron0s wrote:
I thought your game was all about PK?


PK is a strong focus, but not the only one - I've found that if PK is the only activity then it becomes extremely difficult to build up enough of a playerbase to support the gameplay (player logs on, nobody to kill, so they leave. Next player logs on, nobody to kill, so they leave. And so on). Character advancement gives players enough reason to hang around, breaking out of that vicious circle. Unfortunately it also give rise to a number of other problems.

cron0s wrote:
If so then why aren't the bots being regularly ganked by other players?


They are, occasionally - when people find them. I'll likely add some means of tracking people down, but it has to be done carefully so as not to make the game unplayable; if people can find bots, then they can also find active players. Another factor is that death is not much of a setback - but if I change that, it'll strongly discourage PK, and likely result in people being driven away from the game (it's not much fun trying to play when someone keeps killing you all the time).

cron0s wrote:
KaVir wrote:
And as long as there's some incentive to play, there will also always be the incentive to bot .


I take your point, but strictly speaking the incentive in this case is to achieve, or advance your character in some way, not simply to play. People only bot activities where the end result is more important to them than the activity itself.


This may well be the case, yes - those who want to stay competitive for PK seem to the ones who bot (or complain about botting) the most.

Alister wrote:
What if, for periods when players were logged off, they accrued primal based on how much primal they earned during their last login session, or last X hours of play, or something? Some sort of bonus for reflecting on your past actions that would make botting redundant?


The problem is that players would then create alts, go on a super-killing-spree, then log off and leave the character to mature (for some reason this brings to mind a celler full of wine bottles...).

It would also encourage people to log off when not actively killing things, rather than hanging around to socialise. True, I'm creating a game rather than a talker - but I don't want to penalise people for socialising.

Alister wrote:
Or maybe character improvement could require downtime? As an example: You have skills that slowly go up over time through use, if I remember correctly. What if their max-possible value also went up over time, but did so while players were offline as a function of how much improvement they made during their last session?


Once again, this would encourage people to remain offline, which is really taking it to the other extreme of what I wanted.

I've now been considering just limiting the primal you can earn in a single day from certain activities. This would unfortunately also take away much of the incentive to stay online, but at least it wouldn't provide incentive to stay offline. The major drawback is that it would make it pretty much impossible for newer players to catch up with older players.
Back to top
View user's profile Send private message Visit poster's website
Author Message
Myrd



Joined: 08 Jun 2005
Posts: 4

PostPosted: Fri Jul 29, 2005 11:47 am    Post subject: Reply with quote

Easy, since the EXP points (or whatever you call them) that are gotten by bot players are all from the same activities, you should code a diminishing return points system for doing the same thing.

For example, if the bot is constantly killing orc soldiers, the exp from an orc soldier should go down (I mean, if you kill the same damn NPC a million times - it doesn't even make sense that you gain much new experience from killing it again - you've already "mastered" how to kill it).

This would encourage people to do diverse things (exp in different zones for example) for their EXP, and thus would make botting less rewarding (since you say in your case they still play normally - so if they want to play normally through zone A first, then botting that zone after is much less rewarding for them).

The other alternative is to make everything much harder, such that a bot cannot compete and not die if its automated, and would require a human player to make the right decisions in order to survive and be effective.
Back to top
View user's profile Send private message
Author Message
Alister



Joined: 13 May 2005
Posts: 62
Location: Alberta, Canada

PostPosted: Sun Jul 31, 2005 6:52 pm    Post subject: Reply with quote

KaVir wrote:

Alister wrote:
What if, for periods when players were logged off, they accrued primal based on how much primal they earned during their last login session, or last X hours of play, or something? Some sort of bonus for reflecting on your past actions that would make botting redundant?


The problem is that players would then create alts, go on a super-killing-spree, then log off and leave the character to mature (for some reason this brings to mind a celler full of wine bottles...).


Of course, it depends on how long it takes a character to get the offline primal. For example, if one hour of online play translates into the potential for one hour of offline maturation (which would probably be close to an ideal ratio, imo), this isn't a problem because you can't really let an alt sit offline and mature for too long.

Although, now that you mention alts, I suppose there is a problem with playing your normal character and then setting up a bot to play during long periods when you cannot be around (i.e. when sleeping).


KaVir wrote:

It would also encourage people to log off when not actively killing things, rather than hanging around to socialise. True, I'm creating a game rather than a talker - but I don't want to penalise people for socialising.


This is pretty easy to deal with. Just loosen what is meant by "not playing" from being offline to not gaining primal. People can still sit around and socialize if they'd like, with no penalty. This point can also be applied to the other idea I gave.

Of course, my last idea (and yours) both suffer from the problem that players can make alt-bots to run while they are sleeping, or unable to log on. And if the fact that you "don't want to pay additional $$$ each month to support a mud full of dozens of bots" is a big concern, then I think one of your original ideas would be most appropriate.

However, if cash is your main concern, why not give people the option to donate money to cover hosting fees? I'm sure you would have enough players that would be more than happy to fork out a couple bucks for hosting fees. I'd be more concerned with players getting an unfair advantage through botting when they are not around... in which case, something that makes botting redundant or unproductive seems like the best (and easiest to implement effectively) kind of solution to me.
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    mudlab.org Forum Index -> Design All times are GMT
Goto page 1, 2, 3  Next
Page 1 of 3

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

Powered by phpBB © 2001, 2002 phpBB Group
BBTech Template by © 2003-04 MDesign