Menu
 
FAQFAQ
SearchSearch

MemberlistMemberlist

UsergroupsUsergroups
RegisterRegister
ProfileProfile
Log in to check your private messages
Log in to check your private messages
Log inLog in
 
 

Community
 

Bot Waypoints?
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Winbolo.net Forum Index -> Feature Requests
View previous topic :: View next topic  

Bot Waypoints?
Hell Yes!
25%
 25%  [ 2 ]
Maybe, if a LOT of work is put in
62%
 62%  [ 5 ]
Wouldn't be worth it
12%
 12%  [ 1 ]
Total Votes : 8

Author Message
check



Joined: 15 Mar 2004
Posts: 4

PostPosted: Wed Mar 17, 2004 1:02 am    Post subject: Bot Waypoints? Reply with quote

Yes yes, before yo all indignantly reply, BOLO IS DYNAMIC! just listen ; ).
Having support for waypoints would allow bots to work better, and it would be simple enough to make sure bots wouldn't move to waypoints positioned (after mining) on water, etc. It would be pretty useful, and would definately improve the bot AI.

How hard woud it be to create this invisible layer, and will it happen?
Back to top
View user's profile Send private message MSN Messenger
Min



Joined: 23 Feb 2003
Posts: 1839

PostPosted: Wed Mar 17, 2004 1:13 am    Post subject: Re: Bot Waypoints? Reply with quote

check wrote:
Yes yes, before yo all indignantly reply, BOLO IS DYNAMIC! just listen ; ).
Having support for waypoints would allow bots to work better, and it would be simple enough to make sure bots wouldn't move to waypoints positioned (after mining) on water, etc. It would be pretty useful, and would definately improve the bot AI.

How hard woud it be to create this invisible layer, and will it happen?


umm .. actually .. you could just program these yourself .... in FPS shooter world they are called "nodes" .. what you do is have the AI put "nodes" in places they've seen other players move ... and in alot of fps's thats how they make the bots move around the maps other than having predefined nodes programmed into the bot. The problem with the winbolo bot ai, is its way to hard to get some very simplistic information and that uses up cpu cycles that would be better used for bot logic .. for example .. becuase of how the object list works to find out if an enemy has "picked up" a pill, you'd have to reference when you last saw that pill, and then when you ran near that location again do a check to see if you can "see" it still ... becuase otherwise there is no way to tell if someone has picked up and moved a pill ... there is also no way to tell if enemies are carrying pills ... which is a huge error in my opinion, since if the enemy is carrying, that totally changes the strategy the bot should be trying to use. I was in the process of programming a bot that was more advanced than the current ones, but once I found out these things ... I decided I should just wait for a update to the bot interface ... why don't we just get a array of bases, and a array of pills .... rather than these ultra lame "object" lists ... which are fine for bullets, and probably tanks, and lgms .... but they seem inadequate for allowing proper tracking of pills.

Min
Back to top
View user's profile Send private message Visit poster's website
check



Joined: 15 Mar 2004
Posts: 4

PostPosted: Wed Mar 17, 2004 9:28 am    Post subject: CPU cycles? Reply with quote

Thanks for the feedback Min. I'll address all the stuff in order.
I could program all the nodes for each map myself, but that would limit the number of maps the bot could be played on to the ones i supported.By simply placing enough nodes in, and chaecking to see if the node is on water/ jungle whater, you could accurately build a path around the map.
You also talked about how working out where stuff last seen would chew up CPU cycles, which would be better on the bot's logic. Most people nowadays have *huge* processors, which can easily handle this. On my (getting old) XP1600+, i can run sixteen copies of bolo in a network game, with the Bascher brain running, with barely a load runnning at all.
Many of these cycles you talked about would be negated anyway. By giving bots an advantage on the main server page, can't they see all pillboxes, etc?

I agree with you on most of your points though. If Bolo just uses object lists, this would be pretty hard. I'm not much of a programmer myself, so i dont know how hard implementing a node system into Bolo would be. It would definately be an advantage for all bots though, if it were implemented well.
Back to top
View user's profile Send private message MSN Messenger
Min



Joined: 23 Feb 2003
Posts: 1839

PostPosted: Wed Mar 17, 2004 7:40 pm    Post subject: Re: CPU cycles? Reply with quote

check wrote:
Thanks for the feedback Min. I'll address all the stuff in order.
I could program all the nodes for each map myself, but that would limit the number of maps the bot could be played on to the ones i supported.By simply placing enough nodes in, and chaecking to see if the node is on water/ jungle whater, you could accurately build a path around the map.


thats why I said ... have the bot build path/node networks based on where it sees the other players in the game game driving. That way you could have it automatically build its own node network for a map.

check wrote:

You also talked about how working out where stuff last seen would chew up CPU cycles, which would be better on the bot's logic. Most people nowadays have *huge* processors, which can easily handle this. On my (getting old) XP1600+, i can run sixteen copies of bolo in a network game, with the Bascher brain running, with barely a load runnning at all.
Many of these cycles you talked about would be negated anyway.


ok well .. first .. not everyone has a computer that large, second .. if you tie up the winbolo game loop for more than a certain amount of time .. winbolo crashes .... and that amount of time is less than 10 milliseconds last I checked(might be closer to 20 milliseconds). You think you can get all the bot logic you need to process every loop into a 10millisecond timeslice? .... good luck with that.

check wrote:

By giving bots an advantage on the main server page, can't they see all pillboxes, etc?


no ... they can't ... they wouldn't see any pills that are in tanks, and its debatable what other information they are given, and I'm certainly not going to require people to have giving bots an advantage on to make my bot even function ... you can go that route if you feel like it ... but it will most likely not happen.

check wrote:

I agree with you on most of your points though. If Bolo just uses object lists, this would be pretty hard. I'm not much of a programmer myself, so i dont know how hard implementing a node system into Bolo would be. It would definately be an advantage for all bots though, if it were implemented well.


honestly, due to winbolo's simplicity, a node system is hardly required for an adequate bot to be created .. the problem is that all the people thus far who have actually "released" game bots ... are newbies ... so the bots play like newbies do ... My original plan was to simply release a bot that runs around the map refueling and attacking bases .. ignoring pillbox's other than to avoid their gunfire ... and figured htat would be a decent start, after hitting all the issues with pillbox location, and tracking that sort of thing, I decided it wasn't worth dealing with. Building a bot that would at least defeat "ryan2" without issues would be very very very easy if pillbox's locations were easier to address, as it is, the bot interface doesn't even give you all the information that a normal human player receives.

Min
Back to top
View user's profile Send private message Visit poster's website
Elvis



Joined: 22 Feb 2003
Posts: 878

PostPosted: Wed Mar 17, 2004 10:25 pm    Post subject: Reply with quote

Yet weirdly enough Indy and aIndy can do it, and they were made 5+ years ago.
Back to top
View user's profile Send private message Visit poster's website
Elvis



Joined: 22 Feb 2003
Posts: 878

PostPosted: Wed Mar 17, 2004 10:29 pm    Post subject: Reply with quote

Quote:
ok well .. first .. not everyone has a computer that large, second .. if you tie up the winbolo game loop for more than a certain amount of time .. winbolo crashes .... and that amount of time is less than 10 milliseconds last I checked(might be closer to 20 milliseconds). You think you can get all the bot logic you need to process every loop into a 10millisecond timeslice? .... good luck with that.

Or you could write your own thread to do it in the background to your hearts content.
Back to top
View user's profile Send private message Visit poster's website
Min



Joined: 23 Feb 2003
Posts: 1839

PostPosted: Wed Mar 17, 2004 11:48 pm    Post subject: Reply with quote

Elvis wrote:
Yet weirdly enough Indy and aIndy can do it, and they were made 5+ years ago.


was that a slice? ... yep ... your right they can ... but quite honestly ... they do it badly, having played them last time I loaded up my mac, they are not much better than ryan2 .... but from your attitude its obvious you don't give a crap. nice to know

Min
Back to top
View user's profile Send private message Visit poster's website
Madd Maxx



Joined: 25 Feb 2003
Posts: 1994

PostPosted: Thu Mar 18, 2004 12:32 am    Post subject: Reply with quote

Why teh fuck does ne1 give a crap about bots?
Back to top
View user's profile Send private message Send e-mail Visit poster's website Yahoo Messenger MSN Messenger
Elvis



Joined: 22 Feb 2003
Posts: 878

PostPosted: Thu Mar 18, 2004 2:04 am    Post subject: Reply with quote

Sorry if you got that impression. I was just pointing out that it is possible to do this with computers that are over 7 years old. You may note that I also suggested an alternative way to get around the problem if the brain can not do its processing within the required time slice. I do think the time to iterate through the item list is negligible.

I do not agree with you in saying that aIndy is on the same level of ryan2 especially with the give brains advantage option turned on.

I know in the past we have had conversations on improvements to the brain interface to provide additional information. I'm sorry if you feel that because I have not changed it yet that I "don't give a crap" about it.
Back to top
View user's profile Send private message Visit poster's website
Elvis



Joined: 22 Feb 2003
Posts: 878

PostPosted: Thu Mar 18, 2004 4:42 am    Post subject: Re: Bot Waypoints? Reply with quote

Min wrote:
why don't we just get a array of bases, and a array of pills .... rather than these ultra lame "object" lists ... which are fine for bullets, and probably tanks, and lgms .... but they seem inadequate for allowing proper tracking of pills.

I spent about 5 minutes writing an object list to array function for you. You can download it from: http://www.winbolo.net/brainarray.zip

Its just the brain template source code with an additional function that is called every brain tick to update an array of pillboxes and bases. Feel free to add on tanks, builders or any thing else. It generates a message box if it takes greater then 0 milliseconds to do this. Because the millisecond timer isn't fine enough it will occasionally it will say 1. You may want to try a microsecond timer to see how long it takes.

Admittedly it does take less time to post a complaint that the brain interface doesn't do this for you but only by about 4 minutes Smile
Back to top
View user's profile Send private message Visit poster's website
Min



Joined: 23 Feb 2003
Posts: 1839

PostPosted: Thu Mar 18, 2004 12:43 pm    Post subject: Re: Bot Waypoints? Reply with quote

Elvis wrote:
I spent about 5 minutes writing an object list to array function for you. You can download it from: http://www.winbolo.net/brainarray.zip

Admittedly it does take less time to post a complaint that the brain interface doesn't do this for you but only by about 4 minutes Smile


well, you don't seem to get it elvis. Do you think I'm a total moron? .. with this little tidbit of code you make it seem like it.

let us examine this little array that you've created. (of which I have somthing very similiar in the bot I was creating)
Code:

void updateArrays(BrainInfo *info) {
  u_short count = 0;
  ObjectInfo o;

  while (count < info->num_objects) {
    o = info->objects[count];
    switch (o.object) {
    case OBJECT_PILLBOX:
      pills[o.idnum].x = o.x;
      pills[o.idnum].y = o.y;
      pills[o.idnum].armour = o.direction;
      pills[o.idnum].owner =    o.info;
      break;
    case OBJECT_REFBASE:
      bases[o.idnum].x = o.x;
      bases[o.idnum].y = o.y;
      bases[o.idnum].armour = o.direction;
      bases[o.idnum].owner =    o.info;
      break;
      /* Add other cases for tanks/lgm's etc */
    }
    count++;
  }

}

yeah! thats great we think to ourselfs .... everytime we see a pillbox or base .. it updates its information for us ... handydandy .... wait a sek .... what happens if a enemy comes along .. and picks up one of those pills? .. our handy dandy object list doesn't store pillbox's that are IN tanks ....... so our brain will have this array that .. *gasp* doesn't know were a pill is .. the array reads it as being there ... but its not actually there ... the brain will have no clue were it is until that tank puts it back on the ground. but won't move through that area of ground. What you truely need to write is something that will constantly check that array to make sure that when your within visual range of a pillbox ..... to see if its still were it was lasttime .. and this elvis is what I was refering too .... my point is not that this is hard to do. But first, there is no way to detect if a pillbox is in a tank, second, you must do calculations to determine if a pillbox has moved ... this means, that instantly the borg interface isn't even given what a human player is given with a glance at the counters. so how can a AI even come close to a human player in skill if they aren't even given the same or better information? I'd love for you to actually prove me wrong elvis .. becuase then I'll have a reason to complete the fully automated bot that I have collecting bases. It was quite amusing coding a collision detection/pathing algorithm for it.

Min


Last edited by Min on Sat Mar 20, 2004 2:19 pm; edited 1 time in total
Back to top
View user's profile Send private message Visit poster's website
Min



Joined: 23 Feb 2003
Posts: 1839

PostPosted: Thu Mar 18, 2004 1:08 pm    Post subject: Reply with quote

Elvis wrote:
I know in the past we have had conversations on improvements to the brain interface to provide additional information. I'm sorry if you feel that because I have not changed it yet that I "don't give a crap" about it.


no, thats not true at all actually. I think you will include the stuff we talked about when it becomes a priority, which it currently isn't. Your attitude in responding to these concerns however ... makes me think you don't give a crap.

Min
Back to top
View user's profile Send private message Visit poster's website
Min



Joined: 23 Feb 2003
Posts: 1839

PostPosted: Thu Mar 18, 2004 1:24 pm    Post subject: Reply with quote

Elvis wrote:
You may note that I also suggested an alternative way to get around the problem if the brain can not do its processing within the required time slice.


I had considered using threads for this before, but I think I decided for my own bot I would rather use a method of priority processing or something of that nature. Threads at first glance seem like a good solution, but when in reality you need this information by the time you end the loop so that you can tell the bot how to move/act. Perhaps a working solution can be done using threads, however, I think I'll try it without them.

Min
Back to top
View user's profile Send private message Visit poster's website
Min



Joined: 23 Feb 2003
Posts: 1839

PostPosted: Thu Mar 18, 2004 1:29 pm    Post subject: Re: Bot Waypoints? Reply with quote

Elvis wrote:
Admittedly it does take less time to post a complaint that the brain interface doesn't do this for you but only by about 4 minutes Smile


uh, I spent 2 months coding (when I could) before I came to the conclusion the bot interface doesn't do it for me .... considerably more time than 4 minutes.

Min

p.s. Here is a snippet of my code. it of course turns ugly when pasted into a message ... but you get the idea.
Code:

// Function to check the objects list and update the bases array
// ObjectInfo tPillboxs[15];
void PillArrayUpdate()
{
   int objs;

   for (objs = 0; objs < info->num_objects; objs++)
   {
      if(info->objects[objs].object == OBJECT_PILLBOX)
      {
         tPillboxs[info->objects[objs].idnum] = info->objects[objs];
      }
   }

   fout<<"Pill1 id "<< tPillboxs[0].idnum << " " << tPillboxs[0].x << " " << tPillboxs[0].y << " " << tPillboxs[0].direction << " " << tPillboxs[0].info << endl;
   fout<<"Pill2 id "<< tPillboxs[1].idnum << " " << tPillboxs[1].x << " " << tPillboxs[1].y << " " << tPillboxs[1].direction << " " << tPillboxs[1].info << endl;
   fout<<"pill3 id "<< tPillboxs[2].idnum << " " << tPillboxs[2].x << " " << tPillboxs[2].y << " " << tPillboxs[2].direction << " " << tPillboxs[2].info << endl;
   fout<<"pill4 id "<< tPillboxs[3].idnum << " " << tPillboxs[3].x << " " << tPillboxs[3].y << " " << tPillboxs[3].direction << " " << tPillboxs[3].info << endl;
   fout<<"pill5 id "<< tPillboxs[4].idnum << " " << tPillboxs[4].x << " " << tPillboxs[4].y << " " << tPillboxs[4].direction << " " << tPillboxs[4].info << endl;
   fout<<"pill6 id "<< tPillboxs[5].idnum << " " << tPillboxs[5].x << " " << tPillboxs[5].y << " " << tPillboxs[5].direction << " " << tPillboxs[5].info << endl;
   fout<<"pill7 id "<< tPillboxs[6].idnum << " " << tPillboxs[6].x << " " << tPillboxs[6].y << " " << tPillboxs[6].direction << " " << tPillboxs[6].info << endl;
   fout<<"pill8 id "<< tPillboxs[7].idnum << " " << tPillboxs[7].x << " " << tPillboxs[7].y << " " << tPillboxs[7].direction << " " << tPillboxs[7].info << endl;
   fout<<"pill9 id "<< tPillboxs[8].idnum << " " << tPillboxs[8].x << " " << tPillboxs[8].y << " " << tPillboxs[8].direction << " " << tPillboxs[8].info << endl;
   fout<<"pill10 id "<< tPillboxs[9].idnum << " " << tPillboxs[9].x << " " << tPillboxs[9].y << " " << tPillboxs[9].direction << " " << tPillboxs[9].info << endl;
   fout<<"pill11 id "<< tPillboxs[10].idnum << " " << tPillboxs[10].x << " " << tPillboxs[10].y << " " << tPillboxs[10].direction << " " << tPillboxs[10].info << endl;
   fout<<"pill12 id "<< tPillboxs[11].idnum << " " << tPillboxs[11].x << " " << tPillboxs[11].y << " " << tPillboxs[11].direction << " " << tPillboxs[11].info << endl;
   fout<<"pill13 id "<< tPillboxs[12].idnum << " " << tPillboxs[12].x << " " << tPillboxs[12].y << " " << tPillboxs[12].direction << " " << tPillboxs[12].info << endl;
   fout<<"pill14 id "<< tPillboxs[13].idnum << " " << tPillboxs[13].x << " " << tPillboxs[13].y << " " << tPillboxs[13].direction << " " << tPillboxs[13].info << endl;
   fout<<"pill15 id "<< tPillboxs[14].idnum << " " << tPillboxs[14].x << " " << tPillboxs[14].y << " " << tPillboxs[14].direction << " " << tPillboxs[14].info << endl;
   fout<<"pill16 id "<< tPillboxs[15].idnum << " " << tPillboxs[15].x << " " << tPillboxs[15].y << " " << tPillboxs[15].direction << " " << tPillboxs[15].info << endl;


   return;
}


Last edited by Min on Sat Mar 20, 2004 2:20 pm; edited 1 time in total
Back to top
View user's profile Send private message Visit poster's website
Min



Joined: 23 Feb 2003
Posts: 1839

PostPosted: Thu Mar 18, 2004 1:36 pm    Post subject: Reply with quote

Elvis wrote:
I do not agree with you in saying that aIndy is on the same level of ryan2 especially with the give brains advantage option turned on.


well your entitled to that opinion, however when I fired up my mac, and loaded it up ....... if it is better than ryan2 .. its not much .. you plant a pill by one of your bases and ... its screwed ... then you just run around taking its bases .... really tough .... load up 2 of them, they don't work together, they just do what they were doing seperating ... dunno maybe the processing power on my performa just isn't enough to give them all they need to show me who's boss..

Min

p.s. I guess your right though ... they don't drive into the water nearly as much as ryan2 ...... but I feel we could do way way better than that... with a few minor improvements to the interface.
Back to top
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    Winbolo.net Forum Index -> Feature Requests All times are GMT - 5 Hours
Goto page 1, 2  Next
Page 1 of 2

 
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, 2005 phpBB Group
 
 
 
Winbolo.net Copyright ©2003 John Morrison