Red Orchestra
(+Kat, +Linki, -Literówki.) |
|||
(Nie pokazano 59 wersji utworzonych przez 2 użytkowników) | |||
Linia 1: | Linia 1: | ||
=Opis= | =Opis= | ||
− | Red Orchestra to gra typu [[wikipedia:FPS|FPS]] osadzona w realiach II Wojny Światowej, w której starano | + | Red Orchestra to gra typu [[wikipedia:FPS|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. | Aktualnie najnowsza wersja to Red Orchestra Ostfront 41-45. Gra jest oparta na silniku UnrealTournament 2004. | ||
Linia 6: | Linia 6: | ||
=Linki= | =Linki= | ||
* [http://redorchestra.pl Red Orchestra Ostfront 41-45 PL ] | * [http://redorchestra.pl Red Orchestra Ostfront 41-45 PL ] | ||
+ | * [http://wiki.unrealadmin.org/Main_Page Strona o serwerach RO] -a dokładniej Unreal'owych, bo gra jest bazowana na silniku Unreal'a | ||
+ | * [http://www.utstatsdb.com/ Statystyki na WWW] - aczkolwiek eksperymentalne. | ||
+ | * http://www.maporchestra.com/support-center/ | ||
+ | =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 [[screen]]ie | ||
+ | * 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 | ||
+ | |||
+ | <bash> | ||
+ | #!/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 | ||
+ | # | ||
+ | </bash> | ||
+ | |||
+ | * 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 [[#Minimum_Maps|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|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= | ||
+ | *Niestandardowe mapy | ||
+ | **[http://wiki.unrealadmin.org/Redirection_and_Compression] | ||
+ | **[http://ut2004.gameservers.net/contentpage.php?id=505 Szybki download] | ||
+ | **[http://www.redorchestragame.com/forum/showthread.php?t=9230] | ||
+ | **[http://www.redorchestragame.com/forum/showthread.php?t=15938] | ||
+ | *[http://wiki.beyondunreal.com/wiki/Importing_Sounds] | ||
+ | *Kolorki | ||
+ | **[http://www.redorchestragame.com/forum/showthread.php?t=14050&page=2] | ||
+ | * Rezerwacja slotów | ||
+ | **[http://www.redorchestragame.com/forum/showthread.php?t=3583] | ||
+ | *UT extractor | ||
+ | **[http://gms.cyberrock.net/products.php#utcacheextractor] | ||
+ | **[http://theadminpage.planetunreal.gamespy.com/ConfiguringYourini.htm] | ||
+ | |||
+ | ==Skrypty== | ||
+ | *[http://unreal.epicgames.com/Console.htm] | ||
+ | |||
+ | =Mutatory= | ||
+ | * [http://serverdev.beyondunreal.com/] IRCReporter czyli ScoreBot, dziala na poziomie wystarczajacym, dobry do logowania chatu z serwera | ||
+ | * [http://www.tacticalgamer.com/red-orchestra-map-mod-development/] cale forum o mutatorach | ||
+ | ==ServerAdsSE== | ||
+ | * Odpowiada za spam na serwerze - za np informacje zeby nie przeklinac, informacje o teamspeaku i takie tam | ||
+ | * Zobacz [http://www.redorchestragame.com/forum/showthread.php?t=6425] | ||
+ | ==ServerExt== | ||
+ | * Link [http://wiki.unrealadmin.org/ServerExt] 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= | ||
+ | {|style="border:1px black solid;background-color:#eee;" cellspacing=0 cellpadding=4 | ||
+ | |style="border-bottom:1px black solid;background-color:#ccc;"| | ||
+ | '''Akcja''' | ||
+ | | style="border-bottom:1px black solid;background-color:#ccc;"| | ||
+ | '''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''): | ||
+ | <pre> | ||
+ | [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 | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | [[Grafika:Icp-tickrate.gif|thumb|center|640px]] | ||
+ | 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 | ||
+ | |||
+ | [[Kategoria:Gry]] |
Aktualna wersja na dzień 14:20, 20 paź 2008
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
- Red Orchestra Ostfront 41-45 PL
- Strona o serwerach RO -a dokładniej Unreal'owych, bo gra jest bazowana na silniku Unreal'a
- Statystyki na WWW - aczkolwiek eksperymentalne.
- http://www.maporchestra.com/support-center/
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
- Niestandardowe mapy
- [4]
- Kolorki
- Rezerwacja slotów
- UT extractor
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
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