LinkedIn YouTube Facebook
Szukaj

Newsletter

Proszę czekać.

Dziękujemy za zgłoszenie!

Wstecz
SoM / SBC

Pierwsze kroki z Raspberry Pi: jak zrobić z RPi konsolę do gier na przykładzie Return to Castle Wolfenstein

 

Niska cena i duże możliwości Raspberry Pi gwarantują dużą popularność tej platformie sprzętowej, której obszary zastosowania rozciągają się od bardzo poważnych po bardzo rozrywkowe. W artykule przedstawiamy sposób implementacji na RPi kolejnej – po dwóch wersjach Quake’a – gry: Return to Castle Wolfenstein.

 

Dodatkowe informacje związane z optymalizowaniem wydajności komputera Raspberry Pi są dostępne w artykule.

 

Zgłębiając tematykę gier dostępnych na komputer Raspberry Pi (już przeportowanych lub będących w najbliższych planach), jako jedną z dróg poszukiwań nowych tytułów wybrałem silnik gry Quake3 (więcej o samych poszukiwaniach przeczytasz w „W co jeszcze zagramy?” ). Tym samym trafiłem na dość ciekawe repozytorium zawierające kod źródłowy niezwykle popularnej kilka lat temu gry Return to Castle Wolfenstein , zoptymalizowane pod kątem komputera Raspberry Pi.

Return to Castle Wolfenstein to gra z gatunku FPS osadzona w klimatach II wojny światowej. Sama gra ukazała się w 2001 roku i jest kontynuacją wielkiego hitu minionych lat – gry Wolfenstein 3D (którą również możemy przekompilować i uruchomić na platformie Raspberry Pi). Przystąpmy więc do kompilacji…

Schemat budowania plików wykonywalnych nie będzie odbiegał znacząco od tego zaprezentowanego w przypadku gier Quake III i Quake II . Zaczynamy od utworzenia katalogu do którego pobierzemy kod źródłowy:

mkdir $HOME/rtcw_src
cd $HOME/rtcw_src
git clone https://github.com/hexameron/RTCW-SP-arm.git
cd RTCW-SP-arm

Kompilacja dla systemów uniksowych (w tym dla zestawu Raspberry Pi) odbywa się z poziomu katalogu src/unix . Listę dostępnych opcji konfiguracyjnych oraz ustawienia targetu, dla którego będzie przeprowadzana kompilacja, wyświetlimy poleceniem (z poziomu katalogu src/unix ):

./cons -h

Automatycznie ustawiona konfiguracja dla komputera Raspberry Pi:

Wolfenstein version 1.41
cpu : arm
OS : Linux
libc: 2.2
configured for release build
CFLAGS: -pipe -fsigned-char -I/opt/vc/include/interface/vcos/pthreads -Ofast -marm -march=armv6j -mtune=arm1176jzf-s -mfloat-abi=hard -mfpu=vfp -I/opt/vc/include/ -fomit-frame-pointer -fno-strict-aliasing -fstrength-reduce

Kompilację kodu uruchamiamy również poleceniem cons , tym razem jednak z parametrem — release :

./cons -- release

Kod źródłowy udostępniony w repozytorium git nie zawiera żadnych danych samej gry, które należy zakupić osobno (analogicznie jak miało to miejsce w przypadku np. Quake III ). Dlatego też i tym razem skorzystamy z pliku pak0.pk3 dystrybuowanego wraz z wersją demo gry Return to Castle Wolfenstein . Jak zdobyć owy plik PK3? Jednym ze sposobów jest pobranie skryptu instalatora wersji demo przeznaczonego dla maszyn x86 pracujących pod kontrolą systemu Linux. Skrypt instalacyjny wolfspdemo-linux-1.1b.x86.run możemy pobrać ze strony:

http://cesium.di.uminho.pt/pub/games/wolf/linux/old/

W systemach pracujących pod kontrolą systemu Linux (w tym bezpośrednio na zestawie Raspberry Pi) niezbędny plik pak0.pk3 możemy wyodrębnić za pomocą polecenia:

tail -n +175 wolfspdemo-linux-1.1b.x86.run | tar -xz demomain/pak0.pk3

W przypadku jakichkolwiek problemów z otrzymaniem pliku pak0.pk3 można go pobrać jako (dostępny na liście załączników na dole strony).

Po zakończonym procesie kompilacji plik pak0.p k3 umieszczamy w katalogu $ HOME/rtcw_src/RTCW-SP-arm/src/unix/release-arm-Linux-2.2/out/main . Grę uruchamiamy poleceniem:

cd $HOME/rtcw_src/RTCW-SP-arm/src/unix/release-arm-Linux-2.2/out
sudo ./wolfsp.arm

A oto uzyskany efekt:

 

 

Łukasz Skalski - absolwent Politechniki Gdańskiej, miłośnik FLOSS, autor książki "Linux. Podstawy i aplikacje dla systemów embedded" oraz szeregu artykułów dotyczących programowania systemów wbudowanych. Zawodowo związany z firmą Samsung. Wszystkie wolne chwile poświęca projektowaniu i programowaniu urządzeń wyposażonych w mikroprocesory 8-/16- i 32-bitowe. Szczególnym zainteresowaniem obejmuje tematykę systemu Linux w aplikacjach na urządzenia embedded.