Red Orchestra

Od HLDS.pl
Wersja PawelS (dyskusja | edycje) z dnia 14:20, 20 paź 2008
(różn.) ← poprzednia wersja | zobacz aktualną wersję (różn.) | następna wersja → (różn.)
Skocz do: nawigacji, wyszukiwania

Spis treści

Opis

Red Orchestra to gra typu FPS osadzona w realiach II Wojny Światowej, w której starano się wiernie oddać warunki gry. Aktualnie najnowsza wersja to Red Orchestra Ostfront 41-45. Gra jest oparta na silniku UnrealTournament 2004.

Więcej o niej na wikipedia:Red_Orchestra:_Ostfront_41-45

Linki

Instalacja

Opiszę tylko instalację serwera dedykowanego. Jest podobna pod Windows jak i pod Linuksem. Będę bazował na wersji Linuksowej.

Wymagania

  • Dostep do SSH i odpalania procesu na screenie
  • Pakiet compress (aby działała komenda uncompress)
  • 1 GB wolnego na dysku
  • Silny procesor i kupa ramu ;)
  • Mózg i znajomoś angielskiego

Zasysanie plików

  • Instalujemy Hldsupdatetool aż będzie działać komenda steam, aktualizujemy steam.
  • wpisujemy w konsoli komendę do pobrania plików serwera
./steam -command update -game redorchestra -dir . -verify_all -retry
  • W zależności do twojego łącza trochę poczekasz.

Skrypt startowy

  • Zaczniemy od skryptu startowego alby żyło się nam lepiej.
  • Pod Linuksem na screenie, najpierw robimy katalog UserLogs w podkatalogu z grą, tylko jak widzimy katalog Texture, Sounds, System i tak dalej to robimy
mkdir UserLogs
  • Następnie w katalogu System robimy plik start do uruchamiania serwera (nie wskrzesza serwera po restarcie systemu, nie chciało mi się grzebać).
  • Można go zrobić programem notepad+ i wrzucić na serwer, ważne aby w trybie binarnym, oraz aby zapisać go w standardzie nowych linii linux/unix, a nie pc/winodws - chodzi o zakończenia linii jako LF a nie CR/LF
#!/bin/bash
DATEFORMAT="%Y_%m_%d_%H_%M"
LOGDIR="../UserLogs"
EXTRA_PARAMS="RO-Konigsplatz.rom?game=ROEngine.ROTeamGame"
IP=XX.XX.XX.XX
PORT=7757
while [ true ]; do
DATE=`date +$DATEFORMAT`
    echo "===============================================";
    echo Server Starting in 10s, press CTRL+C to abort;
    echo ucc-bin server $EXTRA_PARAMS -log=$LOGDIR/$DATE.log --nohomedir multihome=$IP port=$PORT;
    sleep 10;
    echo "===============================================";
    ./ucc-bin server $EXTRA_PARAMS -log=$LOGDIR/$DATE.log --nohomedir multihome=$IP port=$PORT;
    echo "===============================================";
done
# 
  • Notka: pod Linuksem piszemy
screen -S ro
./start

a następnie wciskamy ctrl+a+d. Przyłączenie się z powrotem to screen -r ro

Konfiguracja

Podstawowa konfiguracja

  • Uruchom serwer raz, niech załaduje mapę podziała z 5 minut, potem go wyłącz. Dzięki temu masz czystą konfigurację serwera - głównie chodzi o pliki system/*.ini - najlepiej skopiuj sobie je gdzieś w bezpieczne miejsce, w razie jakby coś poszło źle.
  • Pamiętaj, żeby podmieniać pliki serwera przy wyłączonym serwerze, bo inaczej potrafi on je nadpisać przy wyłączaniu się albo zmianie mapy.

RedOrchestra.ini

  • Plik ten zawiera właściwie wszystko co trzeba do konfiguracji serwera, z reszty plików korzystają tak zwane mutatory, czyli dodatki które rozszerzają możliwości serwera.
  • Co warto skonfigurować, znajdujie się w sekcjach jak niżej, przykład z serwera INEA. Jak czegoś nie rozumiesz to nie zmieniaj.

Nazwa serwera

[Engine.GameReplicationInfo]
AdminEmail=wiciuu@no-mail.pl
AdminName=wiciu
MessageOfTheDay=Strona serwera i forum: http://gry.inea.pl Zapraszamy!
ServerName=[PL]INEA :: http://gry.inea.pl
ServerRegion=3
ShortName=[INEA]RO:O @ gry.inea.pl

Administracja przez WWW

  • Ustawiamy dostęp do kontroli administracyjnej przez WWW na porcie 8075.
[UWeb.WebServer]
Applications[0]=xWebAdmin.UTServerAdmin
ApplicationPaths[0]=/ServerAdmin
Applications[1]=xWebAdmin.UTImageServer
ApplicationPaths[1]=/images
bEnabled=True
ListenPort=8075

Parametry główne

  • W tej sekcji mamy kontrolę parametrów serwera jak :
    • AccessControlClass=XAdmin.AccessControlIni - Rozszerzamy opcję tak aby działała funckja wielu adminów na serwerze, a nie tylko jeden - dlatego jest srednik na początku linii z AccessControlClass=Engine.AccessControl.
    • bEnableStatLogging=False - tego radzę nie zmieniać albo nie wejdziecie na serwer.
  • Większość parametów można konfigurować przez WebAdmina jak odpalimy serwer:
    • MaxPlayers=28 - ilość slotów
    • MaxSpectators=2 - ilość obserwatorów w grze
    • bNoBots=True - wyłączenie botów poprzez wartość True
[Engine.GameInfo]
;original, only one admin on server
;AccessControlClass=Engine.AccessControl
; mulitple admins on server below
AccessControlClass=XAdmin.AccessControlIni
AutoAim=0.000000
GameSpeed=1.000000
GameStatsClass=IpDrv.MasterServerGameStats
GoalScore=0
GoreLevel=2
HUDType=Engine.Hud
MaxIdleTime=300.0
MaxLives=0
MaxPlayers=28
MaxSpectators=2
NumMusicFiles=13
SecurityClass=UnrealGame.UnrealSecurity
TimeLimit=30
VotingHandlerType=xVoting.xVotingHandler
;bAdminCanPause=False
bAllowBehindView=False
bAttractAlwaysFirstPerson=False
bChangeLevels=True
bEnableStatLogging=False
bNoBots=True
bStartUpLocked=False
bVACSecured=True
  • Oczywiście potrzeba podstawowego hasła aby się wbić na admina, nie podawaj go absolutnie nikomu, zmiany jak niżej
[Engine.AccessControl]
AdminPassword=tutajtajnehaslo
GamePassword=
LoginDelaySeconds=200.000000
bBanByID=True
IPPolicies=ACCEPT;*

Ponowny rozruch

  • Wrzuć zmieniony RedOrchestra.ini na serwer, uruchom serwer na nowo, potem skieruj przeglądarkę na adres http://ip.twojego.serwera:8075/ServerAdmin i powinieneś zobaczyć okno do logowania, w polu użytkownika wpisz admin a w polu hasło tutajtajnehaslo.

WebAdmin

  • Pojawi ci się webadmin. Na lewo masz menu z różnymi akcjami, na górze masz główne kategorie:
    • Current - aktualny stan serwera, widać w nim graczy, można zmienić aktualną mapę, pobawić się botami i aktywować mutatory.
    • Default - tam definiujesz różne parametry serwera, w lewo masz menu z różnymi opcjami, takimi jak nazwa serwera , ilość slotów, hasła, parametry gry jak TK, balansowanie drużyn, ustawienie cyklu map, parametry do głosowania.
    • Admins & Groups - definiujesz tam adminów.
  • Najlepiej jak zapoznasz się z planszami i poczytasz, często jak najedziesz na jakiś tekst myszką to po chwili pokaże się dodatkowy opis.
  • Notka co do adminów, najlepiej zdefiniować kilka grup użytkowników, a potem ich tam dodawać i można jeszcze indywidualnie prawa przypisać.

Map Voting

Auto Open GUI

  • Automatyczne otwieranie menu z głosowaniem na następna mapę na końcu rozgrywki. Wartości True albo False (odpowiednio Tak i Nie).
bAutoOpen - True or False. If true then the voting windows will be automatically opened at the end
of each game. If False then the normal cycle maplist is used to select the next map.
Players can initiat a Mid-Game vote only. They would have to open the voting window
by pressing the MapVote HotKey. Default hotkey is the HOME key. This can be changed
on the "Configuration" tab window. Default is True.

Accumulation Mode

  • W tym trybie gracz którego mapa wygrywa w głosowaniu dostaje ekstra punkty do głosowania, punkty te przechodzą na następne głosowania. Punkty te nie sa punktami w grze. Czyli im częściej wygrywa mapa na która głosujesz tym silniejszy i ważniejszy staje się twój głos. Jak nie wygra mapa na która głosujesz, to wtedy tracisz te punkty i zbierasz je od nowa.
"Accumulation Mode" can be used as extra setting for that, based on description it will sum the scores of 
several maps per player to use as amount of votes, for as long as their desired map wins. 
After that, they start to collect new bunch of votes from scratch.

Elimination Mode

  • Wartości True albo False, domyślnie False. Ustawienie na True powoduje, ze mapy wcześniej grane będą niedostępne w liście do głosowania (wyszarzane będą) aż do momentu kiedy zostanie N mapek dostępnych (wartość N = wartości zmiennej MinMapCount, o tym niżej ). Po każdej mapie zwiększany jest RepeatLimit. Dzięki Elimination mode można forsować aby gracze po jakimś czasie przestali grać w ciągle te same mapy, bo się zawęża pole wyboru i w końcu muszą wybrać jakiegoś customa.
bEliminationMode - True or False, Default is False. Setting this to True will disable voting for previously played maps 
until there are only N enabled maps left in the map list. N is MinMapCount (see below).
This is accomplished by incrementing the RepeatLimit after each game.
You can use this mode to force players to play all the maps instead of just the popular ones.

Score Mode

  • Wartości True albo False. Domyślnie False (czyli nie), Jeśli się ustawi na True to gracze zyskują moc głosu na mapę bazując na ich wyniku punktacyjnego w grze - czyli im lepszy masz wynik punktacyjny tym bardziej decydujący jest twój głos. Punkty z gry przekładają się bezpośrednio na liczbę głosów na daną mapę. Np.: masz 10 pkt na końcu mapy i zagłosujesz na ro-arad to system przyzna 10 pkt głosów na tę mapę.
bScoreMode - True or False, Default is False. Setting this to True will give players move votes
based on their score. Example: At the end of a DeathMatch game you have 10 frags and
then you vote for DM-Phobos2 then it will place 10 votes for DM-Phobos2.

Mid-Game Vote Percent

  • Liczba procent głosów wszystkich graczy aby zmienić mapę w środku grania. Domyslnie 50. Ta opcja jest nieaktywna jeśli na serwerze jest tylko 2 graczy (no chyba że obaj zagłosują). Wartość 100 właściwie uniemożliwia przegłosowanie mapy ;)
MidGameVotePercent - A number between 1 and 100. The percentage of players that are required to
vote before a Mid-Game vote is initated. Set to 100 to virtually disable
Mid-Game voting by requiring all of the players to vote.  Default is 50.
Note: Mid-Game Voting is semi-disabled if there are only have 2 players unless both players vote.

Minimum Maps

  • Definuje ile map ma zostac minimalnie w systemie glosowania na nastepna mape .Wartosc podina byc od 1 do liczby wszystkich map na serwerze. Zmienna dziala tylko kiedy jest aktywny tryb Elimination Mode - w momencie kiedy liczba map do glosowania skurczy sie do tej wartosci to nastepuje odblokwanie wszelkich wyszarzonych map.
MinMapCount - A numeric value from 1 to the total number of maps the server. 
This option is only applicable when bEliminationMode is set to True.
It represents the minimum number of  enabled maps that will trigger an 
Elimination Mode MapList Reset. Elimination Mode Maplist Reset is when the all of 
the maps in the maps list are reenabled for voting. (see bEliminationMode description also)

Repeat Limit

  • Wartosc miedzy 0 a liczba wszystkich map na serwerze. Definuje liczbe gier po ilu mozna dopiero ponownie glosowac na dana mape (czyli przez ile nastepnych pa bedzie wyszarzona i niedostepna). Domyslnie 4. Upewnij sie ze ta wartosc jest mniejsza niz liczba map na serwerze! Dzieki tej opcji unika sie ciaglego glosowania na te same mapy.
RepeatLimit - A number between 0 and the total number of maps on the server.
The number of games to disabe voting for a map after it has been played. Default is 4
Warning: Make sure the RepeatLimit is less than the total number of maps in the First GameConfig list.

ScoreBoard Delay

  • Czas w sekudnach po jakim wyskakuje okienko do automatycznego głosowania po końcu rundy, daje szansę zobaczenia tabeli z wynikami ;). Domyślnie 10.
ScoreBoardDelay - A number between 1 and 500. The number of seconds to delay before automatically
opening the voting window after the end of the current game is reached. This time is given to the players 
so that they can look at the score board. Default is 10.

Voting Time Limit

  • Voting Time Limit - wartość miedzy 1 a 500. Liczba sekund przez którą można głosować na następną mapę na końcu rozgrywki aktualnej mapy albo poczas głosowania na mapę w czasie trwania rudny. Po tym czasie głosy są sumowane a mapa z najwyższą liczbą głosów wygrywa. Domyslnie 70.
VoteTimeLimit - A number between 1 and 500. The number of seconds to allow for voting
at the end of the game or after a Mid-Game vote. After this time limit
has been reached the votes are counted and the map with the highest score
wins. Default is 70

Inne

Skrypty

Mutatory

  • [10] IRCReporter czyli ScoreBot, dziala na poziomie wystarczajacym, dobry do logowania chatu z serwera
  • [11] cale forum o mutatorach

ServerAdsSE

  • Odpowiada za spam na serwerze - za np informacje zeby nie przeklinac, informacje o teamspeaku i takie tam
  • Zobacz [12]

ServerExt

  • Link [13] z opisem instalki.
  • Ma wiele funkcji jak:
    • Chat Filter - filtrowanie przeklenstw, albo podmiana slow
    • Player join log - logowanie kto sie podlaczal do serwera
    • Remote stats - zdalne statystyki, radze nie wlaczac
    • Reserved slots - rezerwacja slotow np dla adminow
    • RSS Feed Mutator - czytanie newsow z RSS i wrzucanie ich w chat w grze, ale juz integrowany w RO
    • ServQuery - rozszerzone informacje o serwerze
    • Stats chat log - logowanie rozmów graczy
    • Team Balance mutator - balansowanie drużyn, ale juz w RO to mamy

Komendy

Akcja

Komenda

wyświetlanie listy graczy listplayers
zalogowanie jako admin na nick/ip/id z haslem adminlogin <adminpassword>
wylogowanie sie jako admin adminlogout
wykopanie danego gracza z nickiem admin kick <playername>
wykop z banem admin kickban <playername>
dodawanie liczby botow admin addbots <liczba>
wykopanie danej liczby botow z serwera admin killbots <liczba>
kompunikat na srodku ekranu admin adminsay <message>
zmiana mapy admin switchlevel <RO-mapname.rom>

Pobieranie map z WWW

Wymagania: serwer WWW z dostepem do niego przez FTP (aby wrzucic pliki), mozliwość edycji/podmiany pliku RedOrchestra.ini na serwerze gry.

  • edytujemy RedOrchestra.ini, znajdujemy sekcje jak poniżej i edytujemy wg naszych parametrów RedirectToURL - zmieniamy na sieżkę pod jaką widać pliki na serwerze na WWW z mapami, teksturami itd. Reszty nie musimy stosować w 90% przypadków i ustawmiamy jak poniżej.
[IpDrv.HTTPDownload]
RedirectToURL= http://3rd-pgd.com/redirect/
ProxyServerHost=
ProxyServerPort=3128 
UseCompression=True

  • dalej znajdujemy w RedOrchestra.ini sekcję
[IpDrv.TcpNetDriver]

a w niej ustawiamy w takiej kolejności jak poniżej dwie linijki

DownloadManagers=IpDrv.HTTPDownload
DownloadManagers=Engine.ChannelDownload

dodatkowo ustawiamy w tej sekcji poniższe zmienne jak niżej

AllowDownloads=True
MaxDownloadSize=0
  • wyłączamy serwer gry, wrzucamy z nadpisaniem nowy plik RedOrchestra.ini
  • włączamy serwer
  • na serwer WWW wrzucamy spakowane pliki map, tekstur itd.

Różne

Zmiana tickrate

ostatnia linia, zmienić z 20 na 35 (maksymalnie):

[IpDrv.TcpNetDriver]
AllowDownloads=True
ConnectionTimeout=20.0
InitialConnectTimeout=200.0
AckTimeout=1.0
KeepAliveTime=0.2
MaxClientRate=15000
MaxInternetClientRate=6000
SimLatency=0
RelevantTimeout=5.0
SpawnPrioritySeconds=1.0
ServerTravelPause=4.0
NetServerMaxTickRate=20


Icp-tickrate.gif

W grafice ważne, że bez graczy na serwerze ani bez zmian mapy - na razie nie wiem jak się serwer zachowuje po przemieleniu paru map z graczami - zobaczymy potem.

Kliknij na obrazku aby zobaczyć animację.

Rates

I have a 3mb/256kb connection - that's 3 megabits down and 256 kilobits up. I run a server called [U]The FragHouse ][[/U]. I probably have a biased opinion but most players say it's a very nice server. Configuration is key.

Client rate, from what I can tell, is measured exactly in bytes (or thousandths of kilobytes, but they're so close it doesn't matter). So let's do some math.

U - MAXIMUM Upload: 256kb = 32KB = 32768B P - Desired amount of Players: 8 C - MAXIMUM Client rate

Client Rate Formula: U / P = C 32768 / 8 = 4096

In this instance, the maximum client rate would be 4096. Though this is at the complete maximum, best effort. In a perfect world, connections would always be able to go up to their best effort; unfortunately, most connections can only reach about 95% of their best effort most of the time. For a 32KB upload, that's about 31KB upload, so let's redo some math.

31744 / 8 = 3968

Hmmm... 3968 bytes per second is okay for a standard (Team)DeathMatch - maybe CTF, BR, DOM. Onslaught, Assault, and Invasion game types are quite demanding. I would say an Invasion game would need at least 4500 bytes (give or take 100) per second per player; an Assault would need about the same, and an Onslaught would need at least 5000 bytes per second per player - if vehicles are added in, as they are in Onslaught, it's a safe measure to add 500 to the client rates.

So now, I'm running Invasion. I want to supply my players with a good enough connection so they do not lag and do not have to worry about anything but the game play. So let's change the formula up a bit. I want to find the maximum number of players I can have and still send out a reasonable amount to each player.

U - MAXIMUM Upload: 254kb = 31KB = 31744B C - MAXIMUM Client rate: 4600 P - Desired amount of Players

Formula: U / C = P 31744 / 4600 = 6.9

6.9 players, eh? Well, let's round down to 6, just to account for that reserved slot - when I have to get in - or for when I'm doing jazz via WebAdmin. If my brother wasn't obsessed with playing Star Wars Galaxies all the time, I could actually push the client rate up to 5000 and host completely fine.

In any case, try and use this formula for anything you need to know. For reference, bytes use intervals of 1024 (1024 Bytes = 1 KiloByte; 1024 KiloBytes = 1 MegaByte; 1024 MegaBytes = 1 GigaByte, etc.) and bits use intervals of 1000 (1000 bits = 1 kilobit; 1000 kilobits = 1 megabit; 1000 megabits = 1 gigabit). Also, a Byte is equal to 8 bits, so a KiloByte is equal to 8 kilobits. If you have also noticed, Byte intervals are expressed in capitals, while bit intervals are lowercased - it's just a good notation.

8kb (8000b) = 1KB (1024B) U - MAXIMUM Upload: kb = KB = B C - MAXIMUM Client rate P - Desired amount of Players

Player Formula: U / C = P Client-rate Formula: U / P = C

http://ut2004.kirosite.com/bandwidthmath.php

Osobiste
Przestrzenie nazw
Warianty
Działania
HLDS.pl - Menu:
Inne
IRC
Inne sekcje:
Znajomi:
Narzędzia