Korzystając z wolnego czasu w przerwie świątecznej napisałem maly poradnik. Mam nadzieję, że się komuś przyda.
Ten sam artykuł pojawi się też prawdopodobnie na www.jakilinux.org. Tak żeby nie było niejasności jestem jego autorem ;)
Jak zapewne wielu z was wie, zdecydowana większość serwerów gier 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 na innych dystrybucjach jest niemal identyczna! Różnice polegają jedynie w zastosowaniu sudo w Ubuntu do wykonania 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 serii Quake (np. OpenArena)
Zakładam, że:
Posiadasz wiedzę na temat podstawowych poleceń konsoli (kopiowanie, przenoszenie, zmiana uprawnien, rozpakowywanie archiwów, itd..). Jezeli 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ę katalogów, i potrafisz się wniej poruszać
Znasz Quake 3, podstawowe komeny konsoli (konsoli quake oczywiście ;)), wiesz co to mod, Point Release, Punk Buster, itd
Nie ma co gadać. Do dzieła!
- Przygotowanie Potrzebne nam będą:
- Płyta instalacyjna Quake 3 Arena, albo przynajmniej plik pak0.pk3
Najnowszy PointRelease1.32
Mod, na którym będzie działał serwer. W poradniku opiszę na przykładzie CPMA 1.44
Komputer z Linuksem, z zewnętrznym IP, lub z lokalnym IP z przekierowanym portem (zalecane porty UDP 27960 - 27969)
Około 1h – 2h wolnego czasu.
W miarę szybkie łącze
- Instalacja Tworzymy katalog dla Quake 3, np. ```
mkdir /home/q3
oraz katalog */home/q3/baseq3*
mkdir /home/q3/baseq3
Przechodzimy do katalogu, w którym znajduje się nasz plik *pak0.pk3*, np.
cd /media/cdrom0/quake3/baseq3
Kopiujemy plik *pak0.pk3* do katalogu */home/q3/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
wget ftp://ftp.idsoftware.com/idstuff/quake3/linux/linuxq3apoint-1.32b-3.x86.run
```
Na wszelki wypadek podaję jeszcze 2 mirrory, gdyby link nie działał:
```
www.quake3world.com/files/updates/linuxq3apoint-1.32.x86.run
```
Nadajemy plikowi linuxq3apoint-1.32b-2.x86.run prawa do wykonania
```
sudo chmod +x linuxq3apoint-1.32b-2.x86.run
Uruchamiamu 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, czyli 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 zawartosc katalogu
ls -al
```
powinismy zobaczyc tam pliki od pak0.pk3 do pak8.pk3, oraz plik 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 ;)
- Instalacja modów Teraz pora na instalacje moda CPMA. Instalacja innych modów przebiega identycznie. Sprowadza się do skopiowania katalogu z modem do katalogu głównego Quake 3
Przechodzimy do katalogu /tmp
```
cd /tmp
Pobieramy mod *CPMA* z oficjalnej strony projektu.
wget ftp1.srv.endpoint.nu/pub/repository/challenge-tv/demostorage/files/cpm/cpma144-nomaps.zip
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 ftp1.srv.endpoint.nu/pub/repository/challenge-tv/demostorage/files/cpm/cpma-mappack-full.zip
unzip /tmp/cpma-mappack-full.zip -d /home/q3/cpma
```
W tym momencie mamy w pełni przygotowaną grę.
Jeśli chcesz grać w Quake 3, powinieneś jeszcze zmienić uprawnienia dla plików gry, ponieważ niektóre operacje wykonywane były z poziomu administratora.
należy zmienić uprawnienia dla plików:
```
sudo chmod 775 -R nazwa_uzytkownika /home/q3/
oraz właściciela plików
sudo chown -R nazwa_uzytkownika /home/q3
```
- Start serwera Mamy już przygotowaną bazę. Teraz trzeba napisać prosty skrypcik, 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 chcemu tak.
Chcemy natomiast:
*
- start serwera wraz ze startem systemu
mod CPMA
uruchamianie serwera w tle (nie w konsoli)
serwer widoczny 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:
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 skrypt może oczywiście wyglądać inaczej. To jest tylko przykład!
Postaram się teraz w skrócie opisać co poszczególne komendy robią:
```
screen -A -m -d -S quake3
Bez tego serwer uruchomi się nam w konsoli. Dzięki programowi screen, uruchomi się tle (tak w wielkim skrócie). 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 właśnie masz 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ść. Dla lepszego łacza można ją zwiększyć
+set fs_basepath /home/q3
Jak latwo sie domyślić, katalog instalacyjny *Quake 3*
sv_maxRate 10000
Minimalna wartość dla komfortowej gry to 8000. Im wiecej ustawimy tym wiecej łącza serwer będzie przydzielał dla 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
```
- Autostart serwera Ostatnią rzeczą jaką musimy zrobić, to 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/rc*X*.d dla X odpowiadajacego poziomom pracy Debiana.
Wiem, że poruszyłem temat bardzo powierzchownie, ale nie zamierzałem się zagłębiać opis w sruktury plików startowych Debiana (i pochodnych)
Nie ma sensu opisywać dokładnie, coś co już zostało doskonale opisane.
Chętnych zapraszam do lektury.
UWAGA, tak wygląda struktura skryptów startowych Dla Debiana i pochodnych (w tym oczywiście Ubuntu)
Dla innych dystrybucji może wyglądać inaczej.
Np. w użwanym przeze mnie Archlinux skrypty startowe znajdują się w /etc/rc.d/nazwa_skryptu, a autostart skryptów odbywa się przez dodanie ich do /etc/rc.local
- Gramy! Ostatnią rzeczą jaką powinniśmy zrobić to dodanie serwera na [QuakeServers.net](www.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
W tym momencie nie pozostaje nam nic innego, jak usiąść wygodnie i sprawdzić jak nasze nowe dziecko sobie radzi w starciu z rzeczywistością ;)
Jeśli uruchomiliśmy serwer z opcją +set dedicated 1, to bez względu na to czy serwer jest na komputerze na którym uruchamiamy klienta, czy też w sieci lokalnej, zawsze łączymy się do publicznego IP! Serwer nie będzie widoczny w sieci lokalnej.
- 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 do wykonania (poleceniem ls -al)
Spwdź 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.
PS.
Zapraszam na serwer 213.134.173.145:27960 !
EDIT:
PS.
Wiem o istnieniu poradnika na quake.net.pl na temat instalacji serwera Q3 na Linuksie.
Sam go przerabialem jakis czas temu, gdy dopiero zaczynalem zabawe z Linuksem.
Starałem sie napisac bardziej skrótowo i dotrzec raczej do poczatkujacych uzytkownikow posiadajacych jednak podstawowa wiedze. Autor poradnika opisywał instalację na przykładzie Slackware.
Ja zakładam, że jeśli użytkownik postawił i używa Slackware, to z serwerem quake nie będzie miał najmniejszych problemów.
Nie zagłębiam się w kwestie konfiguracji xorg.conf czy też iptables i połączenia z internetem, tak jak mialo to miejsce we wspomnianym artykule. Zakładam, że mamy gotowy system. Skupiam się tylko i wyłącznie na instalacji serwera q3.