Tworzenie własnego bota, cz. 1: Podstawy

02.11.2012 - Kuba Kowalski
Trudność

Jak od podstaw stworzyć własnego bota do systemu Meridius: aktualizacja bota, protokół komunikacji z grą, przykłady prostych botów.

Tworzenie i edycja bota
Protokół komunikacji
Tworzenie bota do gry Kółko i krzyżyk

Tworzenie i edycja bota

Tworzenie bota

Tworzenie nowego bota (ekran tworzenia bota został przedstawiony poniżej) jest podobnym procesem do tworzenia profilu gracza, wymaga jednak podania większej liczby informacji. Oprócz gry, nazwy zawodnika i jego typu, potrzebna jest jeszcze wiedza o języku programowania w którym będzie on pisany oraz o trybach w które będzie mógł grać. Co ważne, obu tych danych nie będzie można później zmienić. Pole Język jest ustawione domyślnie na język programowania określony w profilu użytkownika jako ulubiony. Bot może (ale nie musi) mieć od razu przypisany swój kod źródłowy (patrz kolejna sekcja).

addbot

Aktualizacja kodu źródłowego

Ze świeżo utworzonym botem nie można rozegrać żadnego meczu jeśli nie posiada on żadnego kodu źródłowego. Aby uczynić go w pełni grywalnym należy w zakładce Statystyki wybrać plik z kodem źródłowym, opcjonalnie dodać opis i wybrać przycisk Zaktualizuj bota. W tabeli Moje aktywności w lewym panelu pojawi się informacja o kompilacji oraz jej efekcie.

compilation

Jeśli wszystko przebiegnie pomyślnie czyli znaczek informacyjny będzie zielony, w tabeli po prawej stronie (patrz rysunek poniżej) zostanie dodany nowy wiersz z aktualnym kodem źródłowym, który można pobrać na dysk (1) lub obejrzeć (2). Kod bota można wielokrotnie aktualizować i każdorazowo zwiększa to numer wersji bota.

versionstable

Jeśli kompilacja z jakichś powodów się nie powiedzie, po najechaniu na przycisk informacyjny (który powinien mieć kolor czarny) pojawi się okno informujące o treści błędu. Numer wersji bota nie ulegnie zmianie i nadal obowiązujący będzie ostatnio wgrany poprawny kod.

Poniżej znajduje się tabela poleceń kompilujących przypisanych obsługiwanym językom programowania:

JęzykPolecenie kompilujące
Bashbash -n /home/safeuser/program.sh
Cgcc -Wall -W -std=gnu99 -O2 /home/safeuser/program.c -o /home/safeuser/program
C++g++ -Wall -W -O2 /home/safeuser/program.cpp -o /home/safeuser/program
C#gmcs /home/safeuser/program.cs
Haskellghc -Wall -Werror -O2 /home/safeuser/program.hs -o /home/safeuser/program
Javajavac -encoding utf8 /home/safeuser/program.java
Pascalfpc -O2 -XS /home/safeuser/program.pas
Perlperl -c /home/safeuser/program.pl
Pythonpython -mpy_compile /home/safeuser/program.py
Rubyruby -c /home/safeuser/program.rb
Textecho -n

Nazwy wysyłanych plików nie mają znaczenia. Jedyne obostrzenie dotyczy botów tworzonych w języku Java: metoda main musi się znajdować w publicznej klasie program.

Szczegóły bota

Podczas oglądania profilu stworzonego przez siebie bota, oprócz możliwości aktualizacji kodu źródłowego, mamy dostęp do kilku dodatkowych opcji.

W zakładce Uprawnienia istnieje możliwość udostępnienia dowolnemu użytkownikowi wglądu w kod źródłowy bota. W tym miejscu znajduje sie również lista wszystkich użytkowników z nadanymi uprawnieniami do danego bota wraz z opcją ich usunięcia.

W zakładce Grupy bota możemy zobaczyć do jakich grup należy. Aby dodać bota do istniejącej grupy należy wyszukać ją w menu Zawodnicy podmenu Grupy Botów. Nie wszystkie grupy pozwalają na swobodny zapis: część jest dostępna jedynie dla botów z określonej gry lub określonego typu, a niektóre mogą nawet wymagać od użytkownika podania hasła.

W momencie oglądania szczegółów własnego bota, panel po prawej stronie rozszerza się o tabelę zatytułowaną Ostatnie błędy w której wylistowane są najświeższe rozgrywki w których bot spowodował błąd wraz ze szczegółową treścią tego błędu (niedostępną dla innych użytkowników). Treści zaczynające się od symbolu @ są błędami związanymi nie z wykonaniem programu, a z niezgodnością z zasadami wykrytą przez Meridiusa, i tak np. błędowi przekroczenia czasu (Timeout (bot)) towarzyszy informacja @STOP!TIME.

0
Twoja ocena: Brak

Copyright © 2008-2010 Wrocławski Portal Informatyczny

design: rafalpolito.com