Překlady této stránky:

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.

  • <my_tux_id> – ID tuxánka, kterého bude hráč ovládat
  • <my_tux_x> – horizontální souřadnice hráče
  • <my_tux_y> – vertikální souřadnice hráče
  • <count_round> – limitní počet bodů v rámci jedné hry – pokud je -1, není limit nastaven (hra je nekonečná)
  • <arena_net_name> – síťový název arény, ve které se hraje
  • <check_id> – ID tohoto datagramu – je nutné k potvrzení přijetí datagramu klientem

event <tux_id> <action>

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

  • <tux_id> – ID hráče, kterého se akce týká
  • <action> – kód akce, viz níže uvedenou tabulku

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.

  • <tux_id> – ID hráče
  • <tux_x> – horizontální souřadnice hráče
  • <tux_y> – vertikální souřadnice hráče
  • <tux_status> – status hráče
    • 0 – hráč je živý
    • 1 – hráč je mrtvý
  • <tux_position> – směr natočení hráče, viz níže uvedenou tabulku
  • <tux_score> – skóre hráče
  • <tux_gun> – aktuální zbraň hráče; viz níže uvedenou tabulku
  • <tux_bonus> – aktuální bonus hráče; viz níže uvedenou tabulku
  • <tux_shot_simple> – počet nábojů v obyčejné pistoli
  • <tux_shot_dual> – počet nábojů ve dvojité pistoli
  • <tux_shot_scatter> – počet nábojů v brokovnici
  • <tux_shot_tommy> – počet nábojů v samopalu
  • <tux_shot_lasser> – počet nábojů laseru
  • <tux_shot_mine> – počet min
  • <tux_shot_bombball> – počet bomb-ballů

kill <tux_id>

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

  • <tux_id> – ID zabitého hráče

del <object_id> <check_id>

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

  • <object_id> – ID odstraňovaného objektu
  • <check_id> – ID tohoto datagramu – je nutné k potvrzení přijetí datagramu klientem

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.

  • <item_id> – ID veci
  • <item_type> – typ objektu, viz níže uvedenou tabulku
  • <item_x> – horizontální souřadnice objektu
  • <item_y> – vertikální souřadnice objektu
  • <item_count> – index, který se musí dopočítat na změnu snímku v animaci
  • <item_frame> – číslo políčka animace
  • <tux_id> – ID hráče vlastnící daný objekt (např. minu)
  • <check_id> – ID tohoto datagramu – je nutné k potvrzení přijetí datagramu klientem

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ší).

  • <shot_id> – ID streli
  • <shot_x> <shot_y> – souřadnice [X,Y] střely
  • <shot_px> <shot_py> – relativní změna polohy střely
  • <shot_position> – směr střely, viz níže uvedenou tabulku
  • <shot_gun> – typ zbraně, viz níže uvedenou tabulku
  • <tux_id> – ID hráče, který střelu vystřelil
  • <shot_is_kill> – ( 0 - strela nemôže zabiť tuxa s ID <tux_id> | 0 - strela nemôže zabiť tuxa s ID <tux_id> )

chat <author>:<msg>

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

  • <author> – jméno hráče, který zprávu poslal
  • <msg> – text zprávy

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.

  • <version> – verze klienta
  • <name> – jméno hráče, za kterého bude klient hrát
    • jméno hráče smí obsahovat pouze alfanumerické znaky
    • maximální délka jména hráče je 31 znaků (delší se ořízne)

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>
  • <name> – název serveru
  • <version> – označení běžící verze (buď konkrétní release, např. 0.20.0, nebo svn pro vývojářskou verzi)
  • <clients> – aktuální počet připojených hráčů
  • <maxclients> – maximální počet hráčů na serveru
  • <uptime> – počet vteřit od spuštění serveru
  • <arena> – síťový název právě běžící arény

list <count>

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

  • <count> – udává počet nejlepších hráčů, pro něž má server vrátit data

check <check_id>

Potvrzení o přijetí datagramu.

  • <check_id> – ID přijatého datagramu

event <action>

Provedení akce tuxánka.

  • <action> – kód akce, viz níže uvedenou tabulku

chat <msg>

Odeslání zprávy do chatu.

  • <msg> – text zprávy

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ěď.

  • <text> – libovolný text

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.

  • <module proto> – interní protokol modulu

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
 
protocol.txt · Poslední úprava: 01.03.2009 17:19 autor: xhire
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki