Jak postawić serwer dedykowany Quake 3 na Linuksie
3 stycznia 2008, wujek_bogdan
Jak zapewne wielu z was wie, zdecydowana większość serwerów gier multiplayer działa pod kontrolą Linuksa. Przy odrobinie chęci możemy postawić własny serwer naszej ulubionej gry FPP!
Poradnik skierowany jest do użytkowników bardziej przyjaznych dystrybucji, którzy przygodę z Linuksem dopiero zaczynają. Proces instalacji opiszę więc na przykładzie Ubuntu (wraz z jego licznymi odmianami bazującymi na Debianie). Niech w tym momencie użytkownicy innych dystrybucji nie zamykają okna przeglądarki! Instalacja jest niemal identyczna! Różnice polegają jedynie na zastosowaniu sudo do wykonania w Ubuntu poleceń z poziomu administratora oraz w konfiguracji autostartu serwera. Reszta jest w zasadzie bez zmian!
Opisuję instalację serwera Quake 3 Arena, ale przy zastosowaniu niewielkich modyfikacji przepis możemy stosować dla wielu gier opartych o silnik gier z tej serii (np. OpenArena).
Zakładam, że:
- posiadasz wiedzę na temat podstawowych poleceń konsoli (kopiowanie, przenoszenie, zmiana uprawnień, rozpakowywanie archiwów itd.). Jeżeli nie znasz poleceń takich jak: cd, ls, touch, mkdir, cp, mv, chmod, chown, mount, tar, unzip, powinieneś zatrzymać się na tym etapie i uzupełnić braki;
- znasz mniej więcej strukturę uniksowego drzewa katalogów, i potrafisz się w nim poruszać;
- znasz Quake 3, podstawowe komendy konsoli (konsoli quake oczywiście ;)), wiesz co to mod, Point Release, Punk Buster itd.
Nie ma co gadać. Do dzieła!
1. Przygotowanie
Potrzebne nam będą:
- płyta instalacyjna Quake 3 Arena, a przynajmniej plik pak0.pk3;
- najnowszy PointRelease1.32;
- mod, na którym będzie działał serwer. W poradniku użyłem CPMA 1.44;
- komputer z Linuksem, zewnętrznym (oraz stałym) IP, lub lokalnym z przekierowanym portem (zalecane porty UDP z zakresu 27960 - 27969);
- około 1–2h wolnego czasu;
- W miarę szybkie łącze
2. Instalacja
Tworzymy katalog dla Quake 3, np.
mkdir /home/q3
oraz w nim, katalog baseq3:
mkdir /home/q3/baseq3
Przechodzimy do katalogu, w którym znajduje się plik pak0.pk3, np.
cd /media/cdrom0/quake3/baseq3
Kopiujemy go do katalogu baseq3:
cp pak0.pk3 /home/q3/baseq3
Uwaga na wielkość liter. Pamiętaj, że w Linuksie Pak0.pk3 i pak0.pk3 to dwa różne pliki!
Teraz należy zainstalowac patch Point Release 1.32.
Przechodzimy do katalogu /tmp lub innego, do którego będziemy sciągać tymczasowe pliki potrzebne do instalacji:
cd /tmp
Pobieramy aktualną wersję Point Release z któregoś z mirrorów:
Nadajemy plikowi linuxq3apoint-1.32b-2.x86.run prawa wykonywania:
sudo chmod +x linuxq3apoint-1.32b-2.x86.run
Uruchamiamy instalator Point Release:
sudo sh linuxq3apoint-1.32b-2.x86.run
Odpowiadamy twierdząco na wszystkie pytania instalatora, pamiętając oczywiście o podaniu prawidłowej lokalizacji gry - w naszym przypadku /home/q3.
Instalujemy wszystko oprócz Team Arena oraz ewentualnie PunkBustera, jeśli nie chcemy pb na serwerze.
Teraz, gdy przejdziemy do katalogu /home/q3/baseq3
cd /home/q3/baseq3
i sprawdzimy zawartość katalogu,
ls -al
powinismy ujrzeć tam pliki od pak0.pk3 do pak8.pk3, oraz q3config.cfg.
Na tym etapie mamy zainstalowanego Quake 3, zaktualizowanego do wersji 1.32. Możemy już grać w czystego Q3… ale to nie koniec.
3. Instalacja modów
Teraz pora na instalację moda CPMA. Instalacja innych modów przebiega identycznie. Sprowadza się do skopiowania katalogu z modem do głównego katalogu Quake 3
Przechodzimy do katalogu /tmp:
cd /tmp
Pobieramy mod CPMA z oficjalnej strony projektu: wget TU-WSTAW-ADRES-SERWERA/cpma144-nomaps.zip.
Plik cpma144-nomaps.zip można ściągnąć z mirrorów:
Rozpakowujemy od razu do katalogu /home/quake3/cpma:
unzip /tmp/cpma144-nomaps.zip -d /home/q3
Do rozpakowania potrzebny jest unzip. Jeśli go nie masz, zainstaluj:
sudo aptitude install unzip
Dla pewności przechodzimy do katalogu /home/q3/cpma i sprawdzamy zawartość.
Aby mod się uruchomił, musimy jeszcze zassać całe 117MB mapek…
Analogicznie:
cd /tmp wget TU-WSTAW-ADRES-SERWERA/cpma-mappack-full.zip unzip /tmp/cpma-mappack-full.zip -d /home/q3/cpma
Plik cpma-mappack-full.zip można ściągnąć z mirrorów:
W tym momencie mamy w pełni przygotowaną grę.
Jeśli chcesz grać w Quake 3, ponieważ niektóre operacje wykonywane były z poziomu administratora, powinieneś jeszcze zmienić uprawnienia dla plików gry
sudo chmod 775 -R nazwa_uzytkownika /home/q3/
oraz ich właściciela.
sudo chown -R nazwa_uzytkownika /home/q3
4. Start serwera
Mamy już przygotowaną bazę. Teraz trzeba napisać prosty skrypt, który uruchomi nasz serwerek.
Serwer można uruchomić od razu, wydajac polecenie
./q3ded w katalogu /home/q3
Serwer uruchomi się w konsoli, bez modów, z domyślnym konfigiem, nie załaduje żadnej mapy… Nie chcemY tak.
Chcemy natomiast:
- startu serwera wraz ze startem systemu;
- moda CPMA;
- uruchamiania serwera w tle (nie w konsoli);
- serwera widocznego publicznie (wymagane publiczne IP).
Tworzymy skrypt:
touch /etc/init.d/q3ded
Nadajemy mu prawa do wykonania:
chmod +x /etc/init.d/q3ded
w treści pliku wpisujemy:
#!/bin/sh screen -A -m -d -S quake3 /home/q3/q3ded +set dedicated 1 +set net_ip xxx.xxx.xxx.xxx +set sv_strictauth 0 +set fs_game cpma +set sv_fps 25 +set fs_basepath /home/q3 +set sv_maxRate 10000 +exec cpmaconf.cfg
Tak wygląda mój skrypt startowy. Twój oczywiście może wyglądać inaczej. To jest tylko przykład!
Postaram się teraz w skrócie opisać, co robią poszczególne komendy:
screen -A -m -d -S quake3
w wielkim skrócie: bez tego serwer uruchomi nam się w konsoli. Dzięki programowi screen uruchomi się tle. Jeśli nie masz screen zainstaluj go:
sudo aptitude install screen
+set dedicated 1
1 dla serwera publicznego, 2 dla serwera LAN;
+set net_ip xxx.xxx.xxx.xxx
wpisujemy nasz adres IP;
+set sv_strictautch 0
wyłączamy autoryzację. Bez tej możemy mieć problem z wejściem na serwer. Dodaj jeśli masz właśnie taki problem
+set fs_game cpma
dla moda CPMA. Tutaj podajemy nazwe moda np. cpma, osp…
+set sv_fps 25
określa liczbę snapshotów wysyłanych do klientów. 25 to rozsądna wartość. Przy lepszym łaczu można ją zwiększyć;
+set fs_basepath /home/q3
jak łatwo sie domyślić, katalog instalacyjny Quake 3;
sv_maxRate 10000
minimalna wartość dla komfortowej gry wynosi 8000. Im wiecej ustawimy, tym wiecej łącza serwer będzie przydzielał na poszczególnych graczy. Radzę nie przesadzać z tym parametrem;
+exec cpmaconf.cfg
Plik z konfigiem serwera, w którym uwzględnimy dalsze, bardziej szczegółowe ustawienia. UWAGA - wczytuje konfig z katalogu z modem, jeśli nie ustawiamy moda wczytuje konfig z baseq3;
Przykładowy konfig dla CPMA:
set sv_hostname "Nasz Nowy Q3 Server" # Nazwa Serwera set sv_allowdownload 1 # pozwalamy na download z serwera set server_chatfloodprotect 1 # Blokada spamu set sv_maxclients 6 # maksymalna ilość klientów set sv_pure 1 # blokada klientów z nieoryginalnymi pakami set sv_maxping 200 # maksymalny dopuszczalny ping set server_motdfile "SerweR-Motd.txt" # plik z powitaniem // kontakt sets ".Admin" "Twoj_Nick sets ".email" "twoj@email.pl" // rcon/Referee password set rconPassword "supertajnehaslo" # haslo rcon set ref_password "supertajnehaslo" # haslo ref // Typy gry set mode_start "OSPCA" # domyślny tryb gry set server_gameplay "PMC" # fizyka gry set server_availmodes "1v1 2v2 TDM OSPCA" # możliwe tryby gry set server_optimiseBW "1" # optymalizacja serwera. wpływa na ping. // Opcje Głosowania # Nie będę się rozpisywał. wszystko jest w // dokumentacji CPMA set vote_allow_armor 0 set vote_allow_armorsystem 0 set vote_allow_dropitems 0 set vote_allow_fallingdamage 0 set vote_allow_hook 0 set vote_allow_instagib 0 set vote_allow_items 0 set vote_allow_maxdamage 0 set vote_allow_mutespecs 1 set vote_allow_overtime 0 set vote_allow_poweruprespawn 0 set vote_allow_prosound 0 set vote_allow_referee 0 set vote_allow_selfdamage 0 set vote_allow_simplemega 0 set vote_allow_startrespawn 0 set vote_allow_startweapon 0 set vote_allow_teamdamage 0 set vote_allow_thrufloors 0 set vote_allow_warmup 0 set vote_allow_gameplay "vq3 cpm pmc" set vote_allow_fallingdamage 0 // Mapa map pro-q3dm6 # domyślna mapa
W tym momencie mamy gotowy serwer. Możemy go uruchomić wydając polecenie:
/etc/init.d/q3ded
Serwer ubijamy za pomocą:
killall q3ded
5. Autostart serwera
Ostatnią rzeczą, jaką musimy zrobić, jest dodanie serwera do skryptów startowych. W Ubuntu (i innych bazująych na Debianie) robimy to za pomocą narzędzia update-rc.d:
sudo update-rc.d q3ded defaults
Jesli chcemy, aby serwer uruchamial nam sie tylko w wybranych runlevelach, wykonujemy:
sudo update-rc.d q3ded start 99 3 4 5 .
Nie zapomnij o kropce na końcu!
W miejsce 99 wstawiamy liczbę od 1 do 99, oznaczającą kolejność przetwarzania skryptów (im większa, tym później skrypt jest uruchamiany).
Liczby 3, 4, 5 – oznaczają poziomy pracy.
W tym momencie mamy utworzone symlinki w katalogach /etc/init.d/rcX.d dla X odpowiadajacego poziomom pracy Debiana.
Wiem, że poruszyłem temat bardzo powierzchownie, ale nie zamierzałem się zagłębiać w opis struktury plików startowych Debiana (i pochodnych).
Nie ma sensu opisywać dokładnie coś, co już zostało doskonale opisane.
Zainteresowanych zapraszam do lektury.
UWAGA - tak wygląda struktura skryptów startowych w Debianie i pochodnych (w tym oczywiście Ubuntu).
W innych dystrybucjach może wyglądać inaczej.
Przykładowo, w użwanym przeze mnie Arch Linux skrypty startowe znajdują się w /etc/rc.d/nazwa_skryptu, a autostart skryptów odbywa się przez dodanie ich do /etc/rc.local.
6. Jeśli coś poszło nie tak…
Jeśli coś poszło nie tak:
- sprawdź, czy masz wszystkie pliki w odpowiednich katalogach - paki w katalogu baseq3 oraz pliki binarne w katalogu głównym gry;
- sprawdź, czy pliki mają prawa wykonywania (poleceniem ls -al);
- sprawdź, czy ścieżki do Quake 3 w pliku /etc/init.d/q3ded są poprawne;
- edytuj plik /etc/init.d/q3ded i usuń linijkę
screen -A -m -d -S quake3
Uruchom jeszcze raz serwer. Serwer uruchomi się w konsoli - zobaczysz, czy pojawiają się komunikaty błędów.
Ostatnią rzeczą, jaką powinniśmy zrobić, jest dodanie serwera na QuakeServers.net, aby nasze dzieło było widoczne w wyszukiwarkach serwerów takich jak XQF dla Linuksa, czy też The All-Seeing Eye dla MS Windows.
PS. Zapraszam na serwer 213.134.173.145:27960!
Komentarze (RSS) | Trackback (URI)
Liczba komentarzy: 34
W komentarzach możesz używać prostych znaczników HTML. Przykłady:
- Link: <a href="jaklinux.org">Linux dla każdego</a>,
- Wytłuszczenie: <strong>tekst pogrubiony</strong>,
- Kursywa: <em>tekst pochylony</em>,
- Przekreślenie: <strike>
tekst przekreślony</strike>, - Kod: <code>
printf("blok kodu");</code>, - Cytat: <blockquote>cytat</blockquote>



Dzięki przyda się na pewno zresztą nie tylko do quake3 ale też do innych gier na tym silniku
Najnowszy PointRelease to 1.32b, ale jest patch do 1.32c i chyba to jest najnowsza wersja. Trzeba zainstalować 1.32b, a potem jeszcze nagrać na to 1.32c
http://www.fileshack.com/file.x?fid=8766
nie mogłem znalezc nigdzie gotowej instalki point release 1.32c. znalazlem jedynie patcha, tak jak mowisz. serwer dziala na 1.32b i z tego co widze jest kompartbilny z klientem 1.32b.
dla windows nie ma 1.32c.
Polecam update do 1.32c. Jak masz 1.32b to możesz się narazić na wywalenie serwera zdalnie przez atakującego. Wywalenie Twojego serwera to wtedy kwestia dwóch sekund. W 1.32c już nie będziesz miał tego zagrożenia.
Nie musisz dodawać go na QuakeServers.net. Jak Twój serwer dogada się z masterem to sam się pojawi w wyszukiwarkach.
set server_optimiseBW “1″ - to jest wartość domyślna w CPMA 1.44 - nie musisz ustawiać ręcznie.
sv_fps “30″ - będzie płynniej dla klientów
Do tego polecam:
seta match_readypercent “100″ - wszyscy muszą dać ready (w domyślnym 51%)
Logowanie:
seta g_log “1v1-1.log”
seta admin_log “1v1-1-admin.log”
seta server_record “15″ //1 record demos, 2 sshots, 4 add server name, 8 and time
Polecam dodać ustawienie do skryptu:
+set net_port 27960 - port na którym pójdzie
+com_hunkmegs 56 - ilość przeznaczonej pamięci
+dedicated 2 - to jest serwer dedykowany publiczny, 1 to LAN
Pozdrawiam.
z wiekszoscia sie zgadza, ale tak jak pisalem to przykladowy konfig, kazdy moze ustawic sobie inaczej. np. tak jak ty,
a jesli chodzi o set dedicated, to wlasnie 1 to serwer publiczny. mam tak ustawione i smiga
a w sprawie quakeservers.net… podaje ta stronke na wszelki wypadedek, gdyby wlasnie “nie dogadal sie z masterem”. wspominalem o tym w artykule.
moj serwer stal sie widoczny dopiero po dodaniu go na quakeservers.
a jesli chodzi o port, to 27960 to domyslny port, jesli nie jest dostepny serwer probuje na kolejnych.
sv_fps - na wiekszosci serwerow jest 30 albo wiecej. na slabym laczy mozna dac 25. ponizej tej wartosci wyraznie czyc ze nie ma plynnosci.
jesli znajdziecie jeszcze jakies bledy w opisie to postaram sie je jak najszybciej poprawic!
A na czym mam to stawiać?! Na neostradzie ze zmiennym ip czy DSL ze 128 kb uploadzie ;D Może jakieś informacje ile kB pożera jeden slot?
pisalem ze potrzebne jest w miare dobre łącze
q3 nie wymaga dużej przepustowośći. bardziej liczy się jakość połączenia niż szybkość łącza.
na uploadzie 512/kbs w miare komfortowo zagra 6 klientów.
ze zmiennym ip moze byc problem… z powodów oczywistych.
uwazam ze takich banałów nie muszę pisać. ktoś kto stawia serwer powinien posiadać to minimum wiedzy
Tak dla ścisłości i dla purystów:
Wiele distro ma własne paczki z q3, więc można też sprawdzić czy nie masz tego w repozytorium przed tym jak zaczniesz robić na własną rękę.
przykład: emerge quake3 w Gentoo
DSL z uploadem 512/kbs nie jest tani. Taniej wyjdzie wynajem serwera, na którym pogra nie 6 a kilkanaście osób. Na upartego zawsze można pograć- ważne, żeby była dobra zabawa ;]
ale kablowka z 512up jest tania
ale kablówka nie ma publicIP przecież, no chyba że się mylę
Oczywiście że ma. Ale trzeba zapłacić. W moim przypadku astronomiczną kwotę 5zł/miesiąc. Symetryczne łącze 1Mb/s -88zł
Ja mam 12,5MBps za 50zł miesięcznie.
Jedna uwaga - czy do komendy screen nie trzeba uzyc bezwzglednej sciezki ? czyli nie wprost
screen …
tylko
/usr/bin/screen …
(albo wykonac najpierw `whereis screen` i to wstawic)
(nie testowalem, tylko tak mi do glowy przyszlo)
nie trzeba. cały poradnik “przerobiłem” krok po kroku zanim został opublikowany.
screen to taki program jak każdy inny.
do mc, nano, gedit, itd też się nie podaje bezwzględnej ścieżki.
Mała dygresja. W Archu demony z rc.d dodajemy do sekcji DAEMONS w rc.conf. @oznacza ładowanie w tle, a ! ignorowanie. Oczywiście wiadomo - zawsze mamy wybór
Dzięki przyda się taki przewodnik choć bardziej jestem zainteresowany Wolfensteinem:ET
ale to prawda np. na Wolf:ET 80% serwerów stoją na linuksie 
no! naeszcie cośpraktycznego i przydatnego

a na serio, nidy nie mogłem sobie poradzić z postawieniem serwera Enemy Territory, właśnie przez to że miałem domyślny pusty serwer bez mapy itp. Może tym razem sięuda
bardzo prosta sprawa. w konfigu ktory jest automatycznie ladowany wraz ze startem serwera dopisz po prostu komende ladowania mapy i nazwe mapy
po tym artykule już wiem
@morsik, może to Ci pomoże http://tjw.org/etded ;]
Na takim łączu pogra może max 16 osób- licząc po 8kB/s na slot. 1 MB/s = 128 kB/s, 128/8 = 16. Opłaca się? Jeśli nie będzie lagować, łącze będzie dobre i pingi będą dobre to tak!
Koszt wynajmu 16 slotów publicznych po 8 zł wyniesie 128 zł, prywatnych 64 zł, a można znaleźć taniej i mamy gwarancje, że to będzie działać płynnie!
Nie wiem czy się opłaca inwestować w takie łączy tylko po to, żeby postawić serwer do ulubionej gry. Nie ma też gwarancji, że na w/w łączu pogra 16 osób i czy nie będzie lagować. Kolejny problem, to komputer, który musi być cały czas włączony, zabawa w stawianie tego serwera i utrzymanie porzadku.
Jeśli ktoś ma takie łącze, to OK, ale inwestowanie w nie tylko po to, żeby postawić serwer raczej nie ma sensu ; ]
ale jesli mamy łącze, które sami używamy, to spokojnie możemy wydzielić część dla sewera q3.
sam właśnie tak robię. komputer - serwer, działa jako router (udostępnianie połączenia) dla sieci lokalnej, a przy okazji stoi sobie serwerek q3, ftp, …
na początku był to tylko serwer w sieci LAN na użytek własny, ale skoro mam zewnętrzne IP, to nic nie stoi na przeszkodzie aby udostępnić go publicznie.
Jeżeli plik ma prawa 755, to po co jeszcze zmieniać właściciela???
dla formalności
A wie ktoś w jaki sposób zablokować serwer, aby był dostępny tylko dla znajomych, np na hasło. Chciałbym popykać z kumplami a co chwila się ładuje ktoś obcy?
do konfigu serwera dopisz:
seta sv_privatepassword tu_wpisz_haslo
od strony klienta w konsoli:
/password tu_wpisz_haslo
A czemu ’screen’ ? Nie ma chyba potrzeby używać ’screen’ szczególnie że nie planujemy dużej interakcji poza czytaniem logów i ewentualnym restarcie przy zmianie konfiguracji. Takie rzeczy powinny być kontrolowane jakiś nadrzędnym procesem np. przy użyciu daemontools DJB.
a jednak sie przydaje.
1. jesli mamy serwer q3 na komputerze, ktorego uzywamy jako desktop i chcemy aby quake dzialal “w tle”
2. jesli uruchamiamy serwer bez screen, to musimy uruchamiac go na samym koncu (mowa o kolejnosci skryptow startowych) inaczej skrypty, ktore maja uruchomic sie po q3, nie uruchomia sie dopóki serwer q3 nie zakonczy dzialania.
Hmm, a czy są jakieś “lżejsze” mody Dooma? Chciałbym pograć bez widoków z rzeźni, najlepiej w ogóle bez szczylankowości. Da się? (wiem, że lekko offtopicznie, ale…)
a jak skonfigurować mapy?
tak żeby się po kolei zmieniały?
wszystko jest w dokumentacji!
// ==================
// MAP SETTINGS
// ==================
// map_cfgdir
// sets where the maplists etc are read from (default: “cfg-maps”)
//
// map_delay
// no map voting allowed for this long after a map change
// unless everyone’s loaded the new map and is ready to play
// stops one lamer with a fast machine forcing changes to a map
// by voting it in before anyone else has managed to reconnect
// (default: 30)
//
// map_rotate
// if non-zero and a MODE is enabled, server will rotate to
// the next map in the list for that mode when fl/tl/cl/rl is hit
// map_rotate is ignored if the server is in 1v1 mode
// or is running a multiarena mapnd of each match (default: 0)
//
set map_cfgdir “cfg-maps”
set map_delay 30
set map_rotate 0
[…] Jak zapewne wielu z was wie, zdecydowana większość serwerów gier multiplayer działa pod kontrolą Linuksa. Przy odrobinie chęci możemy postawić własny serwer naszej ulubionej gry FPP! (more…) […]