Hlavní navigace

Tradiční unixová hra XPilot

19. 8. 2005
Doba čtení: 14 minut

Sdílet

Dnešní část snad nikdy nekončícího seriálu o hrách (nejenom) pro operační systém Linux je věnována dnes již legendami opředené hře XPilot. Jedná se o jednu z prvních akčních her určených pro platformy s X Window Systemem a současně o hru, která od svého prvopočátku plně podporovala komunikaci hráčů po síti. Nenechte se však zmást relativně velkým stářím této hry - podobně jako víno, i zde se její kvality a možnosti postupem času vylepšují až k naprosté dokonalosti.

Obsah

1. Úvodní informace o hře XPilot
2. Stručná historie hry XPilot
3. Instalace a konfigurace
4. Hra pro jednoho hráče
5. Hra pro více hráčů
6. Základy ovládání
7. Závěr
8. Odkazy a dostupné zdroje na Internetu

1. Úvodní informace o hře XPilot

XPilot je akční hra určená pro současnou hru více hráčů, díky velkým možnostem v nastavení je však možná i hra jednoho hráče proti celkem inteligentním robotům. Hráč se ve hře pohybuje po dvourozměrném vesmíru v jednoduché raketce se třemi motory a podle nastavení hry může plnit více úkolů: od prostého prozkoumávání prostoru a předmětů v něm umístěných přes boj proti robotům či závod (co nejrychlejší průlet určenými body) až k týmové hře více hráčů či nechvalně známému deathmatchi, při kterém se i z původních zarytých pacifistů stávají nepřátelé na život a na smrt. Největší kouzlo této hry spočívá právě v současné hře více hráčů, kteří se mohou nacházet na jedné lokální síti (ideálně v počítačové laboratoři v jedenáct hodin večer :-), ale také na jiném světadílu – hra totiž plně podporuje komunikaci po Internetu a například boj Čechů a Rusů proti Američanům má i dnes svůj náboj (lze dokonce, naštěstí pouze ve hře, používat i střely s atomovými hlavicemi, zajímavější je však kupodivu hra pouze se základními zbraněmi).

Původní XPilot používal (resp. stále používá) pro vykreslování vektorovou grafiku, tj. vše se zobrazuje pomocí úseček. Existuje i moderní odnož XPilota zvaná XPilot-NG (New Generation, neplést s New Technology čili Naprostou Tragédií :-), která, kromě dalších vylepšení (mapa s libovolnými tvary, vylepšené ovládání myší atd.), pro vykreslování používá knihovnu SDL s bitmapovou grafikou. Osobně se mi však líbí spíš původní vektorová verze, která má svůj osobitý půvab a také menší nároky na hardware – na její zprovoznění stačí ve své podstatě jakýkoliv počítač s X Window Systemem, který dokáže zobrazit alespoň šestnáct barev. Rozdíl mezi klasickým vektorovým XPilotem a novou generací je patrný z prvního a druhého screenshotu (autor článku zde samozřejmě hraje jako Root :-).

Xpilot 1

Obrázek 1: Původní vektorově orientovaný XPilot spuštěný pod Linuxem

Xpilot 2

Obrázek 2: XPilot New Generation spuštěný pod Linuxem

2. Stručná historie hry XPilot

Vývoj této hry začal v roce 1991 na universitě v Tromsu (Norsko), což je prý nejseverněji položená universita na světě. Původní autoři této hry, Bjørn Stabell a Ken Ronny Schouten (ta jména si zapamatujte, určitě o těch pánech ještě uslyšíme), byli v té době studenti magisterského studia, kteří měli přístup k počítačové laboratoři se stroji HP9000/720, na nichž běžel „pravý“ Unix a systém X Window System. Pro aplikaci svých právě získaných znalostí programování se oba hackeři rozhodli vytvořit nějakou použitelnou aplikaci, což se jim – z dnešního pohledu – beze zbytku podařilo. Ostatně je zajímavé, že spousta skvělých aplikací a systémů pochází právě z mrazivého severu Evropy a z Ruska. V době vzniku této hry, tj. počátkem devadesátých let minulého století, se ze strany autorů jednalo o odvážný počin, protože počítače s unixovými systémy byly používány převážně na vážnou práci, tedy s výjimkou tajně hraných her typu Adventure (en.wikipedia­.org/wiki/Colos­sal_Cave_Adven­ture) a Net Hack (www.wikipedi­a.org/wiki/Net­Hack). Toto však byly převážně „statické“ hry určené pro textové terminály.XPilot je v mnoha směrech odlišný – již od počátku používal grafiku a šlo o akční (tj. již z principu dynamickou) hru vyžadující při týmové hře poměrně rychlé připojení na síť bez výpadků (nechvalně známých lagů).

Autoři se při návrhu této hry inspirovali už existujícími hrami, především se jednalo o vektorově orientovanou hru Asteroids (en.wikipedia­.org/wiki/Aste­roids), určenou původně pro hrací automaty, a hru pro osmibitové počítače Thrust (en.wikipedia­.org/wiki/Thrus­t_%28computer_ga­me%29) – i tato hra byla později převedena na hrací automat. Základní princip interakce hráče s prostředím je ve všech třech hrách stejný: hráč ovládá jednoduše vykreslenou raketu, která má pouze tři motory. Hlavní motor pohání raketu vpřed a dva postranní motory slouží k natáčení rakety do stran. Vše se odehrává v dvourozměrném vesmíru (na rozdíl od novellácké NetWar), ale i tak je zvládnutí ovládání rakety složité a nejvíce se zde pozná rozdíl mezi začátečníkem a „profesionálem“. Na dalších obrázcích jsou screenshoty z her Asteroids a Thrust – určitá podobnost s XPilotem je zřejmá.

Xpilot 3

Obrázek 3: Hra Asteroids na herním automatu s vektorovou grafikou

Xpilot 4

Obrázek 4: Hra Thrust na osmibitovém počítači Atari 800XL

Xpilot 5

Obrázek 5: Hra Thrust na osmibitovém počítači Acorn Electron

Při vývoji hry autoři s výhodou využili vlastnosti systému X Window, zejména značnou vzájemnou nezávislost X-serveru a X-klienta – server a klient totiž nemusí běžet na stejném stroji. V prvních verzích hra fungovala tak, že veškerou logiku ovládání a interakce více hráčů zajišťoval X-server a na straně X-klienta probíhalo pouze vykreslování. Zejména z tohoto důvodu byla hra již od svého počátku zaměřená na vykreslování vektorů: jak vlastní loď, tak i okolní předměty a hranice herního prostoru byly vykreslovány pomocí krátkých úseček. Byl to logický a pozitivní krok, protože grafické vlastnosti X-klientů byly a jsou velmi různorodé – od černobílých X-terminálů s vysokým rozlišením (s láskou vzpomínám :-) až po moderní PC-čka a Macintoshe s možností současného zobrazení milionů barev a podporou double bufferingu. Vše, co XPilot v prvních verzích vyžadoval, byla podpora vykreslování vektorů a základního rastrového textu, což musí už z principu zvládat všechny X-terminály/X-klienti (pravda však je, že s textem byly v některých případech problémy, zejména s jeho zarovnáním). Další výhodou vektorů je malá paměťová náročnost, dnes se klidně může stát, že jedna textura je, co se týče objemu, větší než celý spustitelný kód.

Pro přenos dat mezi X-serverem a X-klientem se v prvních verzích této hry používal standardní X-protokol. Na straně klienta se stačilo připojit k serveru, nastavit a vyexportovat proměnnou Display a spustit krátký skript, který na straně klienta otevřel okno a připojil ho ke hře. X-protokol však měl pro účely hry několik nevýhod, zejména byl příliš obecný, a tím pádem se mezi klientem a serverem přenášelo zbytečně velké množství údajů. Také se příliš nehodil pro komunikaci po Internetu, zejména kvůli častým lagům, kterým se díky principu fungování sítě na bázi protokolů TCP/IP nevyhneme ani v dnešní době (nezávisle na rychlosti sítě). Proto byl v dalších verzích XPilota zvolen vlastní přenosový protokol, který je již nezávislý na systému X Window. To znamená, že na straně klienta již musí být nainstalovaná celá hra, samozřejmě bez serverové části, která je nutná pouze pro hru jednoho hráče. Na druhou stranu se podstatným způsobem zmenšil datový tok mezi klientem a serverem a hru je již možné provozovat na dalších ne-unixových strojích, zejména na systémech s Microsoft Windows a snad už i na Amigách.

Původní hra XPilot je také významná tím, že pro svůj překlad potřebuje pouze překladač ANSI C a knihovnu XLib. Autoři sice původně chtěli použít i knihovny Xt a Motif, později si to však rozmysleli a zůstali pouze u dvou základních nástrojů. I díky tomu byl XPilot velmi dobře portovatelný na různé unixové platformy, později (po svém větším rozšíření) i na Linux. Dnes se objevuje snaha převést původní zdrojové kódy do C++ a dokonce i do Javy; uvidíme, co z toho vzejde (nebylo by například špatné provozovat XPilot na SmartPhonech s J2ME, minimálně mobilní operátoři by se radovali při pohledu na množství přenesených a zaplacených dat :-).

3. Instalace a konfigurace

Instalace a konfigurace této hry se liší podle toho, na jakém operačním systému má být provozována. Proto si tuto kapitolu rozdělíme na dvě části – práce pod unixovými systémy s X Window Systemem a práci s Microsoft Windows. Kompilací pro systémy VMS a Mac OS se nezabývám, neb s tím nemám žádné zkušenosti (tímto prosím znalce o zveřejnění jejich zkušeností s XPilotem na těchto platformách v diskusi pod článkem).

Unixové systémy s X Window

Praví hackeři si XPilota vždycky kompilují sami. Není na tom nic těžkého, protože, jak jsem psal o několik odstavců výše, je zapotřebí disponovat pouze překladačem ANSI C (tj. dneska především GCC, ale kupodivu se přitom nesmí použít volba -ansi, protože to nezvládají některé hlavičkové soubory ;-), základními knihovnami dle standardu Posix a také knihovnou XLib. Zdrojové kódy lze, samozřejmě i s universálním souborem Makefile, získat pomocí systému CVS. Příklad použití CVS s konkrétní platnou cestou je uveden na stránce xpilotgame.sou­rceforge.net/. Po stažení a případném rozbalení zdrojových kódů (lze je totiž stáhnout i v tarovém archivu) se vytvoří adresářová struktura, kde jsou v podadresáři src umístěny i soubory Makefile.std a Imakefile. Na ty se pustí utilita xmkmf, která vytvoří „pravý“ soubor Makefile šitý na míru dané platformě. Potom již stačí spustit samotný příkaz make, který by měl vytvořit dva spustitelné soubory – xpilot (klient) a xpilots (server). Principem práce serveru a klientů se budu zabývat v další kapitole.

Poznámka: soubor Makefile.std se využívá v případě, že není k dispozici utilita xmkmf nebo při nutnosti ručního doladění překladu. Překlad se potom provádí (po editaci Makefile.std) následujícím způsobem:

make -f Makefile.std architektura TARGETS=xpilot
make -f Makefile.std architektura TARGETS=xpilots 

Častěji používanou možností je však získání již přeložené hry, která je dostupná v mnoha formátech balíků – RPM, DEB atd. V mnoha distribucích Linuxu (ale i na demonstračních CD od Hewlet-Packardu) je XPilot přítomen, dneska zejména New Generation vyžadující rychlejší stroj (s úspěchem testováno na „značkovém“ PC IBM Personal Computer 300PL, PIII 450 MHz, 192 MB RAM).

Operační systémy Microsoft Windows

V případě, že je používán operační systém Microsoft Windows, je situace mnohem jednodušší, protože naprostá většina uživatelů tohoto systému nemá k dispozici překladač C-čka :-). Proto je XPilot iXPilot NG pro tuto platformu dostupný ve formě binární instalace i se všemi potřebnými knihovnami, zejména SDL v případě NG. Pro získání této distribuce se podívejte na stránku xpilot.source­forge.net, která vás v sekci Download přesměruje přímo na zdroje. V současnosti dostupný instalační soubor se jmenuje InstallXPilot­NG.exe (prdownloads.sou­rceforge.net/xpi­lot/InstallXPi­lotNG.exe?dow­nload), jméno i lokace se však v minulosti několikrát změnily, proto je lepší kontaktovat výše zmíněnou domovskou stránku.

Po spuštění staženého EXE souboru se provede klasická instalace, ve které se mimo jiné nacházejí i dva spustitelné soubory. Jeden ze souborů slouží k zobrazení hry v okně, druhý slouží pro full-screen režim (ten na některých systémech může způsobovat problémy, to je však spíše věcí knihovny SDL a ne samotné hry). Kromě toho je nutné při hře jednoho hráče používat i dodávaný server, který po spuštění čeká na připojení hráčů – viz další screenshot, kde je ukázáno, že server je možné spustit přímo ze hry.

Xpilot 6

Obrázek 6: XPilot New Generation spuštěný pod Windows 98

Xpilot 7

Obrázek 7: XPilot New Generation spuštěný pod Windows 98

4. Hra pro jednoho hráče

Nastavení hry pro jednoho hráče je na první pohled poněkud neobvyklé, nicméně jednoduché. Před spuštěním klientského programu s hrou se totiž musí spustit herní server. Ten se pod Unixy jmenuje xpilots a pod systémem Microsoft Windows xpilots.exe. Při spouštění serveru je možné z příkazové řádky provést několik nastavení, zejména:

Nastavení serveru xpilots
Parametr Význam
-map volba mapy, po které se hráč (hráči) bude pohybovat (mapy mají koncovku .map, ta se zde nemusí uvádět)
-robots změna počtu robotů ve hře
-rawmode server se neuspí ani v případě, že nejsou připojeni hráči (vhodné pro testování protokolu)
-noquit server nebude ukončen ani po odpojení hráčů (pro začátek doporučuji nastavit, jinak se server může ukončit ještě před připojením prvního hráče)
-help nápověda, vhodné pro ty, kdo nechtějí číst man xpilots :-)

Vlastník serveru (tj. ten uživatel, který ho spustil) mu může posílat některé zajímavé příkazy, například zprávy pro všechny hráče, vynucené odpojení hráče od hry :-(, zakázání připojení dalších hráčů atd. Všechny volby jsou dostupné po zadání příkazu man xpilots (nápověda je uložena, jako u všech slušně se chovajících her, v šesté sekci).

Po spuštění serveru se již může spustit klientský program, který se jmenuje xpilot resp. xpilot.exe. Opět je k dispozici několik voleb, celý arzenál se zobrazí po příkazu man xpilot:

Nastavení klienta xpilot
Parametr Význam
-name jméno hráče, pokud se neuvede, vezme se do úvahy login name
-team číslo týmu, ve kterém hráč bude hrát
-help opět slabá náhrada za man xpilot
-join připojení k prvnímu nalezenému serveru (pro jednoho hráče nepodstatné)
-list výpis dostupných serverů
-port specifikace portu, na kterém server naslouchá
-server-host specifikace konkrétního serveru (bez rozesílání žádosti o připojení)

Po úspěšném připojení ke hře běžící na vlastním serveru už žádný podstatný rozdíl mezi hrou jednoho hráče a více hráčů není, samozřejmě až na omezenou inteligenci robotů a neexistující týmovou hru.

5. Hra pro více hráčů

Hra pro více hráčů je v mnoha ohledech mnohem zajímavější než hra jednoho hráče. Existuje více variant hry, které se liší zejména tím, jestli jsou vytvořeny týmy. Bez týmů hraje každý hráč pouze za sebe a jeho úkolem je získat co nejvíce bodů, což znamená ztratit co nejméně životů, nasbírat poletující předměty a především zničit co nejvíce protivníků. Týmová hra je zajímavější, než hra všichni proti všem, existuje i verze hry typu „Capture the Flag“ apod. Vše je možné nastavit před spuštěním serveru. Samozřejmě záleží na tom, na který server se hráči připojí. Je možné použít buď vlastní server (viz předchozí kapitolu), nebo jeden z veřejných serverů. Jejich aktuální seznam je možné získat z takzvaného metaserveru následujícím způsobem:

telnet meta.xpilot.org 4400
list (po zadání tohoto příkazu se vypíšou právě aktivní servery) 

Samotnou hru do značné míry ovlivňuje také prostředí, ve kterém boj probíhá. Prostředí je tvořeno pomocí map, které si hráči mohou upravit k obrazu svému. Na mapě, která je v klasickém XPilotu tvořena rastrem, se kromě vymezení volného prostoru a zdí zadávají i pozice dalších objektů, například „červích děr“ (slouží k teleportaci), kanónů, zdrojů paliva atd. Velmi zajímavou mapou je grandprix.map, která se hodí pro pořádání závodů (let beze zbraní, nejlépe s vypnutou gravitací). Formát map je popsaný v textovém souboru README.MAPS, zde musím upozornit na to, že v nové generaci XPilota jsou možnosti mapy rozšířené – viz soubor README.MAPS2 (například lze specifikovat i zápornou gravitaci). Příklad textového souboru s vytvořenou pidimapou:

mapWidth: 10
mapHeight: 10
mapAuthor: Ted Lemon
mapName: InnerSpace
mapData: \multiline: foo
xxxxxxxxxx
x        x
x        x
x        x
x        x
x        x
x        x
x* *  * *x
x        x
xxxxxxxxxx
foo 

Jak je na předchozím příkladu patrné, je možné v souboru s mapou zadávat i různé parametry prostředí. Mezi podle mého názoru nejdůležitější parametry patří:

Specifikace mapy
Parametr Význam
gravity úroveň gravitace (lze nastavit i na nulu, tak to prý mají rádi v NASA :-)
allowPlayerBounces povolení odrážení hráčů – změní charakter hry
shotsWallBounce odrážení střelby od stěn
missilesWallBounce odrážení střel (například řízených) od stěn
limitedVisibility nastavení viditelnosti okolních předmětů – zcela změní charakter hry

Kromě nastavení mapy lze změnit i tvary raketek, což je blíže popsáno v souboru README.SHIPS. Nakonec se ještě musím zmínit o utilitě xp-replay, která slouží pro pozdější přehrávání celého souboje nebo pouze jeho části.

6. Základy ovládání

Hra XPilot je na ovládání poměrně složitá, z celé klávesnice zůstává nevyužito pouze několik tlačítek. Ze začátku je dobré zvolit hru bez protihráčů a robotů a samotné ovládání si vyzkoušet. Základní klávesy jsou:

Ovládání hry XPilot
Klávesa Význam
A natočení doprava
S natočení doleva
Shift tah hlavního motoru
Enter střelba
Space ochranný štít
Ctrl naplnění nádrže palivem
Q autodestrukce :-)
Tab položení miny
\ vypálení střely

Popis dalších kláves (je jich celkem asi padesát) je dostupný v manuálu. Kromě toho je možné přepnout ovládání na myš – je tak možné provádět natáčení rakety, zapnout hlavní motor a střílet. Pokud ovládání pomocí myši nefunguje korektně (zejména současný let se zapnutým motorem a střelba), znamená to, že je zapnuta emulace třetího tlačítka myši – tu je nutné vypnout v konfiguračním souboru .Xsession.

root_podpora

7. Závěr

Sebelepší recenze nemůže nahradit osobní zkušenost s touto hrou, proto směle stahujte, kompilujte a hlavně hrajte. Pro začátek je dobré si vyzkoušet vlastní ovládání rakety bez protihráčů a robotů. Také pomůže vypnutí gravitace a nastavení odrážení raket od zdí (pouze do určité rychlosti). Potom je dobré vyzkoušet si souboj pouze se základními zbraněmi (bez řízených střel a nukleárních bomb) a teprve poté se pustit do pravých soubojů. Takže neohroženě do toho…

8. Odkazy a dostupné zdroje na Internetu

  1. www.xpilot.org – stránka, kterou musí před spaním navštěvovat každý pravý Pilot :-)
  2. ftp.xpilot.or­g/pub/xpilot – zdrojové kódy i binární distribuce hry na originálním FTP serveru. Kromě toho samozřejmě existují i zrcadlící servery, originální server je však poměrně dobře dostupný – minimálně před vydáním tohoto článku :-)
  3. xpilot.org/pub/xpi­lot – zdrojové kódy i binární distribuce pro ty, kteří preferují přenos pomocí protokolu HTTP.
  4. www.acm.org/cros­sroads/xrds3–2/xpilot.html – historie hry XPilot popsaná samotnými autory.
  5. en.wikipedia.or­g/wiki/Xpilot – XPilot má samozřejmě stránku i na Wikipedii.
  6. xpilotgame.sou­rceforge.net – stránka pro klasického XPilota na severu SourceForge.
  7. xpilot.source­forge.net – stránka o Nové Generaci na serveru SourceForge.
  8. en.wikipedia.or­g/wiki/Colossal_Ca­ve_Adventure – jedna z prvních her pro unixové systémy.
  9. www.wikipedia­.org/wiki/Net­Hack – v minulosti snad největší žrout času unixových administrátorů :-).
  10. en.wikipedia.or­g/wiki/Astero­ids – Asteroids: hra, kterou se XPilot inspiroval.
  11. en.wikipedia.or­g/wiki/Thrust_%28com­puter_game%29 – Thrust: další inspirace pro autory hry XPilot.

Byl pro vás článek přínosný?

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.