czwartek, 3 września 2020

Wchodzimy w świat Quake 1 w 2020 roku. Czyli - jak zacząć?

Zacznijmy od tego, że podobnie jak w przypadku wielu leciwych gier tak samo w przypadku Quake'a 1 wydanego w 1996 roku podejście do samej gry uległo znacznej zmianie po 24 latach. Mam tutaj na myśli sposoby uruchamiania gry oraz społeczność i wyznaczone przez nią standardy zarówno w przypadku rozgrywki sieciowej, jak i single-player.

Na wstępie należy zaznaczyć, że chociaż Q1 ma silnik z otwartym kodem źródłowym, a co z tym idzie dostępnych jest wiele jego interpretacji i portów tutaj nie wystarczy, że wybierzemy ten najbardziej nam odpowiadający i posłuży on nam do wszystkiego. Trochę lipa, ale tak już jest. W skrócie powiem tak:

  • Quakespasm - do grania single-player w czystego Quake'a albo do prymitywnego grania w sieci(tj. bez wyszukiwarki serwerów czy po sieci LAN)
  • EzQuake - współczesne granie sieciowe bazujące na kulturze Quake World
  • Joe/NeaQuake - speedrunning

Ważne jest tutaj to, że JoeQuake oraz NeaQuake posiadają fizykę oryginału, natomiast Quakespasm oraz EzQuake ją modufikują.

Quakespasm

Tutaj sytuacja jest prosta, instalujemy z repo i mamy spokój. W moim przypadku na Linux Mint 20 wystarczy:

sudo apt install quakespasm

Po czym jak już mamy silnik tworzymy sobie katalog, wrzucamy do niego chociażby plik katalog id1 z wersji shareware lub pełnej gry. Silnik uruchamiamy poleceniem:

quakespasm -basedir ścieżka_do_tego_folderu/z_katalogiem_id1

EzQuake(przygotowanie silnika gry)

Tutaj są dwie szkoły, pierwsza to pobranie binarnej wersji pod linuksa ze strony projektu. Przy czym w moim przypadku wiązało się to z większym bólem głowy gdyż miałem problemy z bibliotekami.

Najpierw system skarżył się na brak pliku libpng12.so.0 co rozwiązujemy czysto instalując np. ten pakiet w zależności od posiadanej architektury:

Instalujemy standardowo tj. np.:

sudo dpkg -i libpng12-0_1.2.54-1ubuntu1.1_i386.deb

Kolejny problem jaki mi wyskoczył wyglądał następująco:

./ezquake-linux-x86_64: /usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by ./ezquake-linux-x86_64)

Po kilku nieudanych próbach rozwiązania problemu dałem spokój i postanowiłem samodzielnie skompilować ten silnik gdyż na logikę wszystko co było potrzebne już miałem w systemie. Wystarczyły do tego trzy polecenia:

git clone https://github.com/ezQuake/ezquake-source.git

cd ezquake-source 

sh build-linux.sh

I teraz tak, co dokładnie robi linux-build.sh? Sprawdza naszą dystrybucie, instaluje niezbędne pakiety potrzebne do zbudowania silnika i kompiluje go pomijając make install - więc spokojnie. Prawa roota są mu potrzebne tylko do zainstalowania niezbędnych zależności. Szkoda, że standardowo nie pokazuje co instaluje ale końcem końców silnik jest zbudowany.

Pisząc to zauważyłem, że autorzy logi z budowania(więc może i informacje o instalowanych pakietach)  piszą do:

/tmp/ezquake-build.log

Także jakbyście byli ciekawi zajrzyjcie tam w razie wątpliwości.

EzQuake(zdobycie plików niezbędnych do grania w sieci)

I tu jest prosto, nie musimy nawet mieć Quake'a. Wystarczy że wejdziemy na stronę nquake - tam pobieramy paczkę dla linuksa o nazwie nquake_installer-linux-latest.tar.gz, wypakowywujemy i uruchamiamy plik install_nquake.sh. Installer zapyta nas gdzie chcemy mieć nquake - domyślnie ~/.nquake przy czym pojawi się również folder ~/nquake. Opcje przy instalacji mogą być domyślne, są zupełnie ok.

Pozostaje tylko przekopiować poprzednio przez nas skompilowany plik binarny silnika ezquake(w moim przypadku ezquake-linux-x86_64,  do ~/nquake; uruchomić - i grać.

Joe/NeaQuake(droga porażek)

I tutaj właśnie, speedrunning. Jeśli ktoś chciałby np. wziąć udział w speedrunowaniu E1M1 albo całej gry musicie zaopatrzyć się w jeden z tych silników - przy czym NeaQuake to po prostu drobna modyfikacja JoeQuake. Najpopularniejszy jest JoeQuake, natomiast paczka binarna niestety jest dość stara i  wywala mi te same błędy przy próbie uruchomienia jak w przypadku gotowej binarki EzQuake.

I tak gwoli wyjaśnienia, oczywiście, że możecie sobie speedrunować na Quakespasm czy EzQuake ale nikt tych waszych dokonań pod uwagę w poważnych rankingach nie weźmie gdyż oba silniki mają zmienioną fizykę w stosunku do oryginału o czym już wspomniałem. Jak powiedział mi jeden użytkownik discorda:

(...)noone stops you from playing on those engines ofc, but you wont be able to submit to the leaderboards

Ja poległem przy próbie kompilacji tych silników ale trochę informacji dla Was mam, jeśli chcecie szaleć z JoeQuake, źródła pobieracie tym poleceniem:

git clone https://github.com/j0zzz/JoeQuake.git

Natomiast w przypadku NeaQuake tym:

git clone https://github.com/crashfort/NEAQUAKE.git

NeaQuake ma taką przewagę, że ma od razu linuksowy makefile, do którego odwołujecie się wydając to polecenie w katalogu ze źródłami:

make -f Makefile.linux

Z tego co patrzyłem program próbuje skompilować się pod i386 i tam odpuściłem bo aż tak mi nie zależy, po skomentowaniu linijek odpowiedzialnych za architekturę - gdy już miało lecieć pod x86_64 wywaliło mi taki błąd:

cc1: error: CPU you selected does not support x86-64 instruction set
cc1: error: ‘-fcf-protection=full’ is not supported for this target
make: *** [Makefile.linux:102: release_glx/cd_linux.o] Error 1

I tutaj ponownie z pomocą przychodzi ekipa speedrunowania Q1 z discorda. Otóż tutaj znajdziecie różne poprawki do budowania na linuksach:

https://github.com/kugelrund/JoeQuake/tree/linux

Ale podobno i tak silnik będzie działał bez dźwięku, i średnio sprawnie. Dlatego ja uznałem biorąc pod uwagę wszystkie problemy, że po prostu nie warto. Ale jeśli chcecie, droga wolna.

JoeQuake(droga zwycięstwa)

No tak, ale podszedłem do sprawy od drugiej strony - tj. wersji windowsowej silnika i wine 5.0. I tutaj wszystko działa, mniej więcej - otóż w wersji 0.16.2(build 6454) z którą dostarczana jest tylko wersja ze wsparciem dla akceleracji graficznej. I tutaj musimy emulować wirtualny pulpit z poziomu wine(inaczej silnik nie uruchomi się) oraz wykluczyć w opjach wine zarządzanie oknami i dekorowanie ich przy użyciu systemowego window managera(u mnie window manager MATE - podejrzewam, że Marco) - w przeciwnym razie myszka będzie centrowała do środka tj. nie będziecie za jej pomocą w stanie się np. obracać. 

I tutaj z pomocą przychodzi wersja 0.15(build 3798) - obie pobierzecie z oficjalnej strony projektu. Wersja z akceleracją również nie uruchamiała się na pełnym ekranie, toteż od razu ją odpuściłem. Natomiast wersja software'owa działa wspaniale, nie zapamiętuje tylko rozdzielczości i kilku poleceń. To i tak nadal dużo lepsze niż kompilowanie wersji linuksowej na siłę.

 ________

Na zakończenie dodam, że udało się w końcu po wielu próbach skompilować linuksową wersję JoeQuake, konkretnie 0.16.2(rev.6567) - dokładną instrukcję co konkretnie należy zrobić znajdziecie w tym poście.

Brak komentarzy:

Prześlij komentarz

Kompilacja Fluxbox 1.3.7 kompilatorem C++ 17 (GCC 11)

Po aktualizacji systemu jakiś czas temu okazało się, że posiadając nową wersję gcc w systemie nie byłem w stanie poprawnie skompilować Fluxb...