15.2.2004

KOMPILACE UFO2000 NA DEBIANU

Filed under: Uncategorized — nax @ 23:18

Jiz pred par dny jsem se tu zminil o sqele multiplayer parbe ufo2000. Kdo by snad tusil, ze hra ma neco spolecneho s uzasnou seriji X-COM (UFO: Nepritel neznamy a Terror from the Deep) tak by hadal spravne. Pro ty kdo tyhle uzasne 386tkove parby nezna, tak jen v rychlosti: je to strategicka hra, kde vedete organizaci X-COM, ktera ma za ukol branit zemi pred cim dal horsimi najezdy ufonu na nasi maticku zemi. Cast ryze strategicka (kde nakupujete vybaveni, zkoumate cizacke texnologie, vyrabite vami vynalezene artefakty) je prokladana akcnejsimi castmi po tom, co nektera vase stihacka sestreli nejake ufo a vasi vojaci musi zajistit oblast (to znamena sejmout nebo zajmout vsechny zive cizaky v okoli). Ta druha cast se odehrava v rezimu tahove strategie, kdyz nejdriv tahnete vy s vasimi vojaky v propracovanem izometrickem terenu a kazda akce vaseho vojaka stoji urcity pocet casovych bodu a urcity pocet energie no a az uz nemuzete nebo nechcete s nicim tahnout tak ukoncite kolo a zase tahnou ufouni (tedy v puvodni hre pocitac). Hra jde do takovych detajlu, ze na zactku z cele hraci plochy vidite jen to co zkutecne vidi vasi vojaci a pohyb cizaku vidite jen tam, kam se diva alespon jeden vas vojak. Treba v noci pak je viditelnost znacne omezena atd. U tehle hry sem sveho casu travil dny a mesice, protoze je to opravdu klasika vymakana do nejmensich detailu.

Posledni dny zazivam jeji retro, protoze jsem nasel sqely emulator dosbox, vyvinuty primo pro takovehle stare dokonale hry, ktere uz nebezi na novych widlich vyvinut. Puvodni ufo melo totiz tu velkou nevyhodu, ze bohuzel na novych strojich bezelo prilis rychlo a nepomahaly ani ruzne zpomalovace. Az tenhle dokonaly emulator, ve kterem se mi navic podarilo velice jednoduse rozbehnout i zvuk (dokaze totiz emulovat sound blastera, jen je treba si dat pozor na to abyste vypnuli druhou emulaci gravise ultra).

Jen me mrzi, ze se mi to nepodarilo rozbehnout pod linuxem. Ne ze by dosbox nemel linuxovou verzi, ale bohuzel mi vzdy po pokusu o spusteni (nehlede na to jestli to je mnou zkompilovana verze nebo predkompilovana z deb) napise

Fatal signal: Segmentation Fault (SDL Parachute Deployed)

Je to natolik vseobecny segfault ze z nej opravdu nic nevyctu. Dokonce ani z vystupu gdb sem moudry nebyl.

No a tak jsem se zase pokousel o to, zkompilovat zase hru ufo2000. Ta si vzala za vzor ty sqele udelane boje ufonu s vasimi jednotkami a udelali z toho multiplayer hru. Budto muzete sedetu u jednoho kompu, pak se vzdy po ukonceni tahu objevi hlaska a mohou se pred monitorem vystridat hraci (a tomu nove prichozimu se pak prehraje to co videli jeho vojacci z akci protivnika) a nebo se hraje pres internet (prilozena je i serverova cast, jen je treba zadat pro kompilaci prikaz “make server”) a pak oba hraci vidi tahy toho druheho z pohledu svych figurek v realnem case (coz sice muze byt kapanek nuda, ale vetsinou neni, protoze se desne klepete u monitoru a cekate odkud na vas protivnik vyleze).

No ale ted k tomu, protc vubec tenhle post pisu. Problem sem mel s kompilaci a to je vlastne duvod, proc jsem tuhle hru nezacal hrat uz pred pul rokem kdy jsem ji objevil. Na mem debianu se totiz neprelozila korektne i kdyz jsem mel vsechny potrebne knihovny nainstalovane. Tentokrat jsem se vsak nenchal hnan touhou po postavickach z ufa na linuxu jen tak odbit a tak jsem po prvni chybe:

In file included from src/bullet.cpp:21:
src/global.h:51:17: lua.h: nen? souborem ani adres????em
src/global.h:52:20: lualib.h: nen? souborem ani adres????em
src/global.h:53:21: lauxlib.h: nen? souborem ani adres????em
In file included from src/bullet.cpp:21:
src/global.h:406: error: syntax error before `*’ token
make: *** [obj/bullet.o] Error 1

A zjistil jsem ze ze v mem debianu unstable se lua.h nachazi v include/lua50 a tak se to nemohlo spravne nalezt. Tak jsem nasledujici radky v src/global.h
#include “lua.h”
#include “lualib.h”
#include “lauxlib.h”
zmenil na
#include
#include

#include

Jenze tim problemy pri kompilaci neskoncili. Dalsi chyba se dostavila zahy:
src/server_gui.cpp:341: error: `OSTYPE_SUNOS’ undeclared (first use this
function)
src/server_gui.cpp:341: error: (Each undeclared identifier is reported only
once for each function it appears in.)
src/server_gui.cpp:343: error: `OSTYPE_NETBSD’ undeclared (first use this
function)
src/server_gui.cpp:344: error: `OSTYPE_IRIX’ undeclared (first use this
function)
make: *** [obj/server_gui.o] Error 1

a tak jsem v souboru server_gui.cpp zakomentoval ty potrefene radky aby to vypadalo asi takhle:
case OSTYPE_OPENDOS : return “Caldera OpenDOS”;
case OSTYPE_LINUX : return “Linux”;
//case OSTYPE_SUNOS : return “SunOS/Solaris”;
case OSTYPE_FREEBSD : return “FreeBSD”;
//case OSTYPE_NETBSD : return “NetBSD”;
//case OSTYPE_IRIX : return “IRIX”;

Jenze tim samozrejme jeste problemy nekoncili a pri konecnem linkovani binarky to napsalo:

/usr/bin/ld: cannot find -llua
collect2: ld returned 1 exit status
make: *** [ufo2000] Error 1

Chvili jsem sice vahal, ale pak jsem si vzpomel na tu cestu v include a uz stacilo jen v makefile zmenit radek”
LIBS = -lexpat -llua -llualib
za
LIBS = -lexpat -llua50 -llualib50

No a nakonec uz stacilo jen do XCOM adresare nahrat puvodni hru UFO (tahle hra pouziva puvodni datove soubory s grafikou i zvuky proste tak aby vse bylo co nejvice podobne originalu) a ted uz se muzu tesit ze hry. BTW vedeli jste ze kdyz podrzite CTRL tak vam to ukazuje pocet bodu, ktere spotrebuje kdyz budete chtit jit az na to misto?

Comments are closed.

Powered by WordPress