Jump to content

BubbleBot


Recommended Posts

Microsoft Development Center Serbia i Bubblecup sa ponosom predstavljaju

yDAk0.jpg

pilot projekat u AI programiranju

Ovo eksperimentalno takmicenje je namenjeno svima koje zanima teorija igara, veštačka inteligencija i video igre. Ili su jednostavno igrali Haxball :) Detalje možete pogledati na http://www.bubblecup.org/bubblebot, a ono što bih ja samo istakao je da su propozicije jako jednostavne a biće vrednih nagrada (nezvanično xbox i neka gaming oprema, al to niste čuli od mene ;)

Za sve što ne bude jasno nakon čitanja zvaničnih propozicija - slobodno pitajte.

Srećno svima koji odluče da učestvuju!

Also izvinjavam se nisam mogao da nađem more appropriate forum za topic

Edited by trooper
Link to comment
Share on other sites

i zasto mi ne radi sledeca klasa, citam sa STDIN-a, upisujem na STDOUT kao sto je navedeno u uputstvu, ali mi se igraci ne pomeraju u game frameworku:

unit reibot;


interface


type

  {$M+}

  TReibot = class

            private

              const

                FIELD_WIDTH      = 796;

                FIELD_HEIGHT     = 526;

                GOAL_WIDTH       = 226;

                PLAYER_RADIUS    = 4;

                BALL_RADIUS      = 2;

                PLAYERS_PER_TEAM = 2;


              type

                TVector = record

                            X, Y : Double;

                          end;


                TPlayerInfo = record

                                Position   : TVector;

                                KickedBall : Integer;

                              end;


                TPlayers = record

                             Ally, Opponent : Array[0..PLAYERS_PER_TEAM - 1] of TPlayerInfo;

                           end;


                TBall = record

                          Position : TVector;

                          Velocity : TVector;

                        end;


              var

                FMySide                  : Integer;

                FBallPossession          : Integer;

                FMyScore, FOpponentScore : Integer;

                Player                   : TPlayers;

                Ball                     : TBall;


              procedure Think;

            public

              constructor Create;

              destructor Free;

              procedure Play;

            published

            end;

  {$M-}


implementation


uses

  Windows;



constructor TReibot.Create;

begin

end;


destructor TReibot.Free;

begin

end;


procedure TReibot.Play;

var

  reset : Integer;

begin

  while TRUE do

  begin

    ReadLn(reset);


    If reset = 1 Then

    Begin

      ReadLn(FMySide);

      ReadLn(FMyScore);

      ReadLn(FOpponentScore);

      ReadLn(FBallPossession);

    End;


    ReadLn(Player.Ally[0].Position.X);

    ReadLn(Player.Ally[0].Position.Y);

    ReadLn(Player.Ally[1].Position.X);

    ReadLn(Player.Ally[1].Position.Y);

    ReadLn(Player.Opponent[0].Position.X);

    ReadLn(Player.Opponent[0].Position.Y);

    ReadLn(Player.Opponent[1].Position.X);

    ReadLn(Player.Opponent[1].Position.Y);

    ReadLn(Ball.Position.X);

    ReadLn(Ball.Position.Y);

    ReadLn(Ball.Velocity.X);

    ReadLn(Ball.Velocity.X);

    ReadLn(Player.Ally[0].KickedBall);

    ReadLn(Player.Ally[1].KickedBall);

    ReadLn(Player.Opponent[0].KickedBall);

    ReadLn(Player.Opponent[1].KickedBall);


    Think;

  end;

end;


procedure TReibot.Think;

begin

  WriteLn('1');

  WriteLn('500.5');

  WriteLn('300.5');

  WriteLn('0');


  WriteLn('1');

  WriteLn('500.5');

  WriteLn('300.5');

  WriteLn('0');

end;


end.

Posle citanja sa ReadLn(), ispisem na STDOUT u Think() da pomerim oba igraca na 500.5, 300.5 koordinate, ali se nista ne desava? Funkcija se poziva, parametri se ispisuju na STDOUT definitivno, probao sam tako sto sam "manuelno" pokrenuo bota, bez frameworka, upisivao rucno parametre i nakon upisa se ispise ovo u Think(), i dok se bot pokrece pod frameworkom, uredno iscita prvi "talas" STDIN-a koji framework posalje, zatim se Think() izvrsi ali se igraci ne pomere :( I onda vise nema podataka na STDIN od frameworka.

Probao sam i preko WriteConsole() API-ja da ispisujem, ali dzaba..

Edited by reiser
Link to comment
Share on other sites

i zasto mi ne radi sledeca klasa, citam sa STDIN-a, upisujem na STDOUT kao sto je navedeno u uputstvu, ali mi se igraci ne pomeraju u game frameworku:

trebalo je da napravis neki jednostavniji primer ako si hteo da debagujem ovo. Nisam koristio Delphi jedno 5 godina :) Probaj da ispisujes 4 puta "0" u po jednom redu, tj da za pocetak ne radis nista sa botovima. Proveri jos jednom da li si ispostovao protokol (http://bubblecup.org/botsrc/BubbleBotRuleBook.pdf) tj da mozda ne citas neki input line manje ili vise.

trupsi, jel mogu nekako da igram preko tastature, ili moram da imam kontroler ?

u ovoj verziji samo kontroler, sorry. A i to je dodato cisto sprdnje radi posto je osnovna ideja bila da samo AI igra.

genetski algoritmi nista?

huh?

Link to comment
Share on other sites

Air-filled ass?

Aj jos nesto da pitam - jel postoji jos neki bot za testiranje osim ona 3 koja idu uz framework ? Sabijam sva tri bota trenutno, treba mi neki jaci :)

sabijas i WulfBot-a? :) Respect. Nema drugih botova za testiranje, to je i deo izazova u takmicenju, da pretpostavis kakvih sve botova moze da bude i spremis odgovor na sve taktike :)

Kreni da igras protiv svog bota npr, to ti je neka osnovna forma ovoga http://en.wikipedia.org/wiki/Evolutionary_algorithm

Edited by trooper
Link to comment
Share on other sites

Ceo gameplay WolfBota je baziran na bounce shotovima od zidova, jedna funkcija koja predvidi gde ce loptica biti nakon n turnova resava to :) Tako da je nemoguce da mi da gol, osim ako ga bas ne usere pozicija, da ne moze goalie da se vrati na gol ili da lose ispuca loptu, jer jos nisam napisao algoritam za pasove, driblanje, racunanje kicka (trenutno se ispucava ka sredini gola sve [:D]).

U stvari, meni trenutno samo golman radi, a ovog drugog bota sam stavio u chase modu (bazirao sam AI na FSM modelu) i u stvari samo juri i ispucava lopticu ka centru gola :) Kontam da pokusam sa A* searchom da odradim ostale stvari i vidim kako ce se to ponasati, ili da rucno iskodiram FSM stanja.

Edited by reiser
Link to comment
Share on other sites

aj submituj bota bas me zanima kako radi :) no worries oko kradje intellectual property-ja, zaposlenima i sirem krugu njihovih porodica nije dozvoljeno ucestvovanje :)

nisam mnogo analizirao problem, al me bas zanima da li bi mogao da se svede na problem potezne igre (uz odgovarajuca ogranicenja), pa da se primeni neki jednostavan Minimax algoritam ili nesto slicno

Link to comment
Share on other sites

Evo submitovao. Imaj u vidu samo da ima jos mnooogo toga da se doradjuje, trenutno se goalie samo ponasa otprilike kako sam zamislio :)

Pa da, tako i ja kontam, da primenim A* za path/kick/pass searching.

//edit

Prvo sam submtivao bagovitu verziju, resubmitovao sam dobru verziju sada :) 22:05 vs wolfbota

Edited by reiser
Link to comment
Share on other sites

Nema tu nesto mnogo taktiziranja IMHO. Jedan igrac stoji nazad, drugi je roamer, suvise je mali teren / spori igraci da bi mogla oba bota da imaju ulogu attackera i ostave prazan gol

u pravu si donekle, al mislim da ima situacija kada mogu oba da krenu u napad, bar do pola terena. Mada kazem, nisam se mnogo udubljivao.

Zato je ovo samo pilot verzija takmicenja, da vidimo iskustva i predloge za na dalje, sta moze da se izmeni (tipa dal dodati treceg igraca i slicno), i da pribavimo vise nagrada za sledecu iteraciju ;)

Ne znam samo koliko ima prijavljenih, ali mi se cini da ih ima bas malo

bice ih :) ljudi vole da cekaju zadnji trenutak pre nego predaju resenje.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...