Obsah

Specifikace síťového protokolu

Server obsazuje UDP port 6800 (nebo specifikovaný) pro vlastní hru a týž TCP port pro přenos arén. Server využívá TCP port 6800 (příchozí i odchozí) pro připojení k MasterServeru.

Jednotlivé síťové datagramy se skládají z příkazu a 0+ parametrů. Jeden datagram smí obsahovat pouze jeden příkaz, který je vždy psaný malými znaky. Příkaz i jednotlivé parametry jsou od sebe odděleny mezerou (1+) (ASCII znak 0×20). Každý datagram ukončuje ASCII znak 0xA.

Komunikaci vždy začíná klient. Server odesílá datagramy na zdrojovou IP adresu a zdrojový port, který získal z packetu, který přišel od klienta jako první. Maximální zpracovávaná délka packetu je 128 bajtů.

Pozn.: pokud je překročen maximální počet klientů (hráčů) na serveru, server přestává reagovat na jakékoliv příkazy od jiných než právě přihlášených klientů.

Server → Klient

init <my_tux_id> <my_tux_x> <my_tux_y> <count_round> <arena_net_name> <check_id>

Inicializační datagram po obdržení příkazu hello. Hráč se registruje a vstupuje do hry.

event <tux_id> <action>

Informuje hráče o akcích vykonaných ostatními hráči.

newtux <tux_id> <tux_x> <tux_y> <tux_status> <tux_position> <tux_frame> <tux_score> <tux_name> <tux_gun> <tux_bonus> <tux_shot_simple> <tux_shot_dual> <tux_shot_scatter> <tux_shot_tommy> <tux_shot_lasser> <tux_shot_mine> <tux_shot_bombball> <tux_bonus_time> <tux_pickup_time>

Informuje hráče o nově připojeném hráči, navíc aktualizuje informace o daném hráči. Hráč může přijmout i informace sám o sobě, aby byl synchronizovaný se serverem.

kill <tux_id>

Informuje hráče o zabití jiného hráče.

del <object_id> <check_id>

Informuje hráče o odstranění objektu z arény

additem <item_id> <item_type> <item_x> <item_y> <item_count> <item_frame> <tux_id> <check_id>

Informuje hráče o přidání nového objektu do arény. Číslo políčka animace se posílá pro situaci, kdy se hráč připojí např. v polovině výbuchu miny, aby se mu nepočítal odznovu.

shot <shot_id> <shot_x> <shot_y> <shot_px> <shot_py> <shot_position> <shot_gun> <tux_id> <shot_is_kill>

Informuje hráče o nové střele. Pokud klient obdrží datagram pro již existující střelu, je stará střela přepsána novou (stará se zruší).

chat <author>:<msg>

Přeposlání chatové zprávy všem hráčům.

ping

Potvrzení klientovi, že je server funkční. Odesílá se každou vteřinu.

end

Server se vypíná. Odpojení všech hráčů.

Klient → Server

hello <version> <name>

Tímto příkazem začíná klient komunikaci.

status

Žádost o sdělení informací o serveru. Odpověď je v tomto tvaru:

name: <name>
version: <version>
clients: <clients>
maxclients: <maxclients>
uptime: <uptime>
arena: <arena>

list <count>

Žádost o tabulku hráčů s nejlepším skóre.

check <check_id>

Potvrzení o přijetí datagramu.

event <action>

Provedení akce tuxánka.

chat <msg>

Odeslání zprávy do chatu.

ping

Potvrzení serveru, že je klient aktivní. Odesílá se každou vteřinu – pokud server během 5 vteřin neobdrží ani jeden tento datagram, klienta odpojí.

echo <text>

Server následně posílá totožnou odpověď.

end

Odpojení hráče ze hry.

Klient ↔ Server

module <module proto>

Slouží ke komunikaci mezi moduly; pokud ho obdrží server, odešle ho všem ostatním hráčům.

Přílohy

Tabulka směrů a pohybů

Kód Směr pohybu
8 nahoru
6 vpravo
4 vlevo
2 dolů

Tabulka akcí

Kód Akce
5 výstřel
0 změna zbraně

Tabulky objektů

Zbraně

Kód Zbraň
0 obyčejná pistole
1 dvojitá pistole
2 brokovnice
3 samopal
4 laser
5 mina
6 bomb-ball

Bonusy

Kód Bonus
10 rychlost
11 nekonečný počet nábojů
12 nesmrtelnost
13 duch (může procházet překážkami i minami)
14 střelba do čtyř směrů současně
15 neviditelnost

Ostatní předměty

Kód Předmět
7 položená mina
8 malý výbuch
9 velký výbuch