Official Everybody Edits Forums

Do you think I could just leave this part blank and it'd be okay? We're just going to replace the whole thing with a header image anyway, right?

You are not logged in.

#1 Before February 2015

Tako
Member
From: Memphis, Tennessee, USA
Joined: 2015-08-10
Posts: 6,663
Website

Dos and Don'ts of Bots

Hey there, forums!

Bot development is such an open world.   There are dozens of ways to accomplish the exact same task.   And it can be argued that some are better than others, either for the player or for the computer running it.

Since most people don't have a wise sage hovering over their shoulder, I thought it would be beneficial to the community to compile a list of things they should, should avoid, and should NEVER do.

Feel free to contribute to this list by posting below.   Anyone who has played a bot level knows what they like and what they don't like.

You should

• Be creative.  
     I know creativity is thrown around a lot in this forum, but you DEFINITELY need to be creative if you want your bot to be fun.

• Use "Everybodyedits" + MyClient.BigDB.Load("config", "config")["version"]
     Instead of throwing an error at PlayerIO and extracting the version from the exception thrown.

• Store the players' progress frequently, and load them when your bot starts up.
     You can use XML, SQL, or just a text file to accomplish this.
     By "progress", I mean things like location, score, settings, etc.

• Know what your bot can do and what your bot can't do.
     Your bot can do a lot of things.   Your bot can do EVERYTHING that a player can do, including movement, buying items, and adding friends.
     Use these functions to your advantage.

You should avoid

• Chat commands
     Stopping the game to type out a command can get old fast.   Sometimes you need it, other times you do not.
     If players are frequently running into the spam filter, then you know that there is a better way.
     Some alternatives:  
           key combinations (using arrows/WASD and spacebar);
           when a user enters a certain area;
           smileys

• Flooding the chat with a million bot messages.

• A help feature that gives you a long list of commands.   (Give them a link to a pastebin or forum topic instead)

• A way to win.   If you want players to come back, there can't be a finish line.
     If you want a finish line, then make the level complicated and store their progress.

You should NEVER use

• Dozens upon dozens of chat commands.
     Players are not dictionaries.   Part of being a good bot developer is   being creative with your commands to minimize how many you need.
     You know what's more annoying than stopping to type a command every few moments?   Stopping and then scanning some huge and convoluted guide that you made.

• Snake bots
     There are waaay too many snake bots out there.   If you're still making these, please try harder.

• Dig bots
     Unless you can revolutionize the way you dig blocks, please don't bother with this one either.

• A bot that joins every room.

Thanks for reading, and please take this advice into account if you want success with your bot.


Yeah, well, you know that's just like, uh, your opinion, man.

Offline

#2 Before February 2015

Creature
Member
From: The Dark Web
Joined: 2015-02-15
Posts: 9,658

Re: Dos and Don'ts of Bots

We don't need Snake bots or Dig bots again, Snake bots even adding more stuff never will be fun, and we have lot of Dig Bots, including the ones with lot of stuffs like Jababot, also, it's annoying do repetitive commands to see if get a ore.


This is a false statement.

Offline

#3 Before February 2015

Hexagon
Member
Joined: 2015-04-22
Posts: 1,213

Re: Dos and Don'ts of Bots

I think that these tips are definitely useful. Another thing is don't make your bot join worlds that it isn't authorized to join. That is, don't join a few different worlds on the basis of trying to make a global chat, because it can be quite spammy very fast.

Something else is if the owner kicks the bot out of the world, do not rejoin it.

Offline

#4 Before February 2015

XxAtillaxX
Member
Joined: 2015-11-28
Posts: 4,202

Re: Dos and Don'ts of Bots

• Store the players' progress frequently, and load them when your bot starts up.
     This can be done with a StreamReader, StreamWriter, and a text file.
     By "progress", I mean things like location, score, settings, etc.

Guys, don't actually do this. StreamWriter and StreamReader are NOT for storing player data.
Use already existing formats that won't break instead of coming up with your own that will no doubt fail.
(e.g. INI/XML/SQL)

Also, StreamWriter and StreamReader cause plenty of errors when you don't manage it properly.
File.WriteText and File.ReadToEnd are better in this aspect.

• Know what your bot can do and what your bot can't do.     Your bot can do a lot of things.  It can do things that other players can't,     like place text or trick the server into thinking you are MrShoe.

No, you cannot trick the server into thinking you are MrShoe, nor can you place text with bots.

• Snake bots     There are waaay too many snake bots out there.  If you're still making these, please try harder. • Dig bots     Unless you can revolutionize the way you dig blocks, please don't bother with this one either.

You've already cleared this up pretty much with:

• Be creative.       I know creativity is thrown around a lot in this forum, but you DEFINITELY need to be creative if you want your bot to be fun.


signature.png
*u stinky*

Offline

#5 Before February 2015

Buzzerbee
Forum Admin
From: Texas, U.S.A.
Joined: 2015-02-15
Posts: 4,575

Re: Dos and Don'ts of Bots

Tako wrote:

• Use Convert.ToString(MyClient.BigDB.Load("config", "config")["version"]);

Eh, there's no sense in using Convert.ToString() with something like this, which should never return a null value.
I would argue to just use it like this:

string version = MyClient.BigDB.Load("config", "config")["version"].ToString();

Last edited by BuzzerBee (Jun 17 2014 3:18:07 pm)


TdQRyz3.png
https://wiki.everybodyedits.com/images/5/5d/135_bee

Offline

#6 Before February 2015

abrar11
Member
Joined: 2015-03-13
Posts: 359

Re: Dos and Don'ts of Bots

BuzzerBee wrote:
Tako wrote:

• Use Convert.ToString(MyClient.BigDB.Load("config", "config")["version"]);

Eh, there's no sense in using Convert.ToString() with something like this, which should never return a null value.
I would argue to just use it like this:

string version = MyClient.BigDB.Load("config", "config")["version"].ToString();

Or you could do CreateJoinRoom(worldid, "Everybodyedits" + MyClient.BigDB.Load("config", "config")["version"](the rest of the code is unneccisary)
so yeah you could make it shorter unless you wanted a global version thing not sure why you would

Offline

#7 Before February 2015

Buzzerbee
Forum Admin
From: Texas, U.S.A.
Joined: 2015-02-15
Posts: 4,575

Re: Dos and Don'ts of Bots

abrar11 wrote:
BuzzerBee wrote:
Tako wrote:

• Use Convert.ToString(MyClient.BigDB.Load("config", "config")["version"]);

Eh, there's no sense in using Convert.ToString() with something like this, which should never return a null value.
I would argue to just use it like this:

string version = MyClient.BigDB.Load("config", "config")["version"].ToString();

Or you could do CreateJoinRoom(worldid, "Everybodyedits" + MyClient.BigDB.Load("config", "config")["version"](the rest of the code is unneccisary)
so yeah you could make it shorter unless you wanted a global version thing not sure why you would

Yeah, I agree with you there.
A global string for version could be needed, though, if you were to have multiple connections and didn't feel like having that bulky code multiple times.


TdQRyz3.png
https://wiki.everybodyedits.com/images/5/5d/135_bee

Offline

#8 Before February 2015

abrar11
Member
Joined: 2015-03-13
Posts: 359

Re: Dos and Don'ts of Bots

BuzzerBee wrote:
abrar11 wrote:
BuzzerBee wrote:

Eh, there's no sense in using Convert.ToString() with something like this, which should never return a null value.
I would argue to just use it like this:

string version = MyClient.BigDB.Load("config", "config")["version"].ToString();

Or you could do CreateJoinRoom(worldid, "Everybodyedits" + MyClient.BigDB.Load("config", "config")["version"](the rest of the code is unneccisary)
so yeah you could make it shorter unless you wanted a global version thing not sure why you would

Yeah, I agree with you there.
A global string for version could be needed, though, if you were to have multiple connections and didn't feel like having that bulky code multiple times.

lets not get to into it but
Connection[] con = new Connection[connectionamount]
for(int i = connectionamount) loop
con[ i ].Send(connection.Send(client.BigDB.Load("config", "config")["version"]);
its not really a 'bulky code' but i see where your going

Offline

#9 Before February 2015

Tako
Member
From: Memphis, Tennessee, USA
Joined: 2015-08-10
Posts: 6,663
Website

Re: Dos and Don'ts of Bots

Alright, I updated the topic taking all your suggestions into account.


Yeah, well, you know that's just like, uh, your opinion, man.

Offline

#10 Before February 2015

Creature
Member
From: The Dark Web
Joined: 2015-02-15
Posts: 9,658

Re: Dos and Don'ts of Bots

Tako wrote:

A way to win.   If you want players to come back, there can't be a finish line.
If you want a finish line, then make the level complicated and store their progress.

I don't understand this, if is win saves, it shouldn't be avoid, cause who won get it as reward and fight for a good rank. Also, if is other thing, explain me.


This is a false statement.

Offline

#11 Before February 2015

Buzzerbee
Forum Admin
From: Texas, U.S.A.
Joined: 2015-02-15
Posts: 4,575

Re: Dos and Don'ts of Bots

Creature wrote:
Tako wrote:

A way to win.   If you want players to come back, there can't be a finish line.
If you want a finish line, then make the level complicated and store their progress.

I don't understand this, if is win saves, it shouldn't be avoid, cause who won get it as reward and fight for a good rank. Also, if is other thing, explain me.

What he means is, you should never be able to completely finish a level. You can win rounds, but not the entire level.

Last edited by BuzzerBee (Jun 17 2014 5:29:55 pm)


TdQRyz3.png
https://wiki.everybodyedits.com/images/5/5d/135_bee

Offline

#12 Before February 2015

Tako
Member
From: Memphis, Tennessee, USA
Joined: 2015-08-10
Posts: 6,663
Website

Re: Dos and Don'ts of Bots

BuzzerBee wrote:
Creature wrote:
Tako wrote:

A way to win.   If you want players to come back, there can't be a finish line.
If you want a finish line, then make the level complicated and store their progress.

I don't understand this, if is win saves, it shouldn't be avoid, cause who won get it as reward and fight for a good rank. Also, if is other thing, explain me.

What he means is, you should never be able to completely finish a level. You can win rounds, but not the entire level.

Yes.   The important thing to understand is that once people finish your entire level, they're unlikely to come back.

Unless it's just amazing.   Or... different the second time around.


Yeah, well, you know that's just like, uh, your opinion, man.

Offline

#13 Before February 2015

Cyral
Member
From: United States
Joined: 2015-02-15
Posts: 2,269

Re: Dos and Don'ts of Bots

Good advice, I would also recommend JSON.NET for storage, very easy serialization and readability.


Player Since 2011. I used to make bots and stuff.

Offline

#14 Before February 2015

lrussell
Member
From: Saturn's Titan
Joined: 2015-02-15
Posts: 843
Website

Re: Dos and Don'ts of Bots

Cyral wrote:

Good advice, I would also recommend JSON.NET for storage, very easy serialization and readability.

I was going to recommend that before, but I wasn't logged in.
Another recommendation is ProtoBuf if you don't need readability.

Offline

Tako1423757740203692

Board footer

Powered by FluxBB

[ Started around 1732689816.3237 - Generated in 0.087 seconds, 12 queries executed - Memory usage: 1.66 MiB (Peak: 1.87 MiB) ]