Red Orchestra Ostfront, ч2.

Май 2, 2010 · Posted in Без рубрики · Comment 

Ну что, продолжим тему игрового сервера RedOrchestra. Дальше речь пойдет способе увеличить посещаемость сервера, причем способом, который не все сочтут достойным. Говоря проще, делаем сервер пиратским. Поэтому саму часть, касающуюся конкретных методов, я переношу в область, доступную только зарегистрированным пользователям.

Небольшое лирическое отступление: Почему я считаю возможным создание пиратского сервера.

Я сторонник существования пиратских серверов. Не потому, что люблю «халяву», у меня есть лицензионная копия Red Orchestra, за такую прекрасную игру 10$ — это пустяк.

Я за создание пиратских серверов потому, что они способствуют популяризации игры как ничто другое. Особенно это касается новых и не «раскрученных» игр. Согласитесь, странно ждать, что человек, особенно в нашей стране, станет выкладывать деньги только чтобы попробовать игру. «Free weekend»-ы решают этот вопрос, но их катастрофически мало. Для RO такая возможность за прошлый год была всего лишь один раз.

Пиратский же сервер дает возможность распробовать игру, полюбить ее, привыкнуть  ней. И если игра понравится, ее обязательно купят, потому что STEAM определенно дает преимущества. Как минимум, систему достижений («achievements «).

В качестве подтверждения моих слов, приведу примером сервер Day of Defeat Source, который не так давно стоял на месте сервера RO. Его история такова, что набрался определенный контингент людей, играющих на нем постоянно. В те времена сервер был пиратским, что, конечно же, сопровождалось рядом проблем (наличие читеров, которых сложно надолго забанить, постоянное отставание от системы обновлений и т.д.). Со временем, по общему решению основных игроков, сервер был переведен на лицензию, то есть потерял статус пиратского. И практически все игроки купили лицензию! Конечно же, у них появилась возможность играть и на других серверах, сражаться с тысячами соперников во всем мире. Стим! Но спасибо «пиратке» :)

Итак, собственно задача.

Red Orchestra Ostfront, ч1.

Апрель 20, 2010 · Posted in Без рубрики · 3 Comments 

Начинаю цикл статей, посвященный созданию и администрированию выделенных игровых серверов.

Наша система:

FreeBSD 7.1-STABLE ,    linux_base-f8-8_11

fstab:

linsys     /compat/linux/sys    linsysfs    rw      0      0
linproc    /compat/linux/proc    linprocfs     rw      0      0
rc.conf:
linux_enable="YES"

Установлен Screen.

Итак, установка сервера RO Ostfront.

Скачиваем hldsupdatetool.bin в отдельный каталог, к примеру в ./steam. Сделаем файл исполняемым chmod 777 hldsupdatetool.bin и запустим. В результате получим распакованный steam-клиент.

Дальше можно просмотреть список доступных для установки серверов:

./steam -command list
Нас интересует redorchestra. Создаем файл: touch  ro_server.sh. Редактируем содержимое:
#!/bin/sh
./steam -command update -game "redorchestra" -dir /store/RO -verify_all

Здесь /store/RO — это пусть установки сервера. Проследите, чтоб он был создан и был доступен для записи.

Делаем его исполняемым и запускаем.

Если соединение нестабильное или сервера Steam заняты, возможны обрывы. Просто запускайте файл установки заново.

По окончанию установки получим готовый сервер. Остается его только настроить и сделать стартовый файл.

Начнем с последнего. Создаем файл запуска сервера, разместив его, к примеру в директории сервера:

cd /store/RO

touch start_RO.sh

chmod 777 start_RO.sh

Редактируем файл:

cd /store/RO/system

/usr/local/bin/screen -A -m -d -S  RED-Orchestra ./ucc-bin server ro-tcherkassy.rom?game=ROGame.ROTeamGame -log=RO_Server.log -ini=config.ini -multihome=XXX.XXXX.XXX.XXX -nohomedir

sleep 2

echo "server RO started"

Здесь:

  • XXX.XXXX.XXX.XXX — ip адрес сервера.
  • ro-tcherkassy.rom — карта, с которой будет стартовать сервер.
  • config.ini  — файл конфигурации сервера.

На последнем и остановимся.

Этот файл создаем,  переименовывая  файл RO/system/RedOrshestra.ini в config.ini. Его дальше и будем использовать для настройки.

Вот,  для образца, мой конфиг сервера:

[URL]

Protocol=RedOrchestra

ProtocolDescription=RedOrchestra Protocol

Name=ROSoldier

Map=Index.rom

LocalMap=ROintro.rom

NetBrowseMap=Entry.rom

Host=

Portal=

MapExt=rom

EXEName=RedOrchestra.exe

SaveExt=usa

Port=7757

Class=Engine.Pawn

Character=Gorge

[FirstRun]

FirstRun=0

[Engine.Engine]

RenderDevice=D3D9Drv.D3D9RenderDevice

;RenderDevice=D3DDrv.D3DRenderDevice

;RenderDevice=Engine.NullRenderDevice

;RenderDevice=OpenGLDrv.OpenGLRenderDevice

;RenderDevice=PixoDrv.PixoRenderDevice

AudioDevice=ALAudio.ALAudioSubsystem

NetworkDevice=IpDrv.TcpNetDriver

DemoRecordingDevice=Engine.DemoRecDriver

Console=ROInterface.ROConsole

GUIController=ROInterface.ROGUIController

StreamPlayer=Engine.StreamInteraction

Language=int

Product=RedOrchestra

GameEngine=Engine.GameEngine

EditorEngine=Editor.EditorEngine

DefaultGame=ROGame.ROTeamGame

DefaultServerGame=ROGame.ROTeamGame

ViewportManager=WinDrv.WindowsClient

;ViewportManager=SDLDrv.SDLClient

Render=Render.Render

Input=Engine.Input

Canvas=Engine.Canvas

DetectedVideoMemory=0

ServerReadsStdin=False

[Core.System]

PurgeCacheDays=30

SavePath=..\Save

CachePath=../Cache

CacheExt=.uxx

CacheRecordPath=../System/*.ucl

MusicPath=../Music

SpeechPath=../Speech

Paths=../System/*.u

Paths=../Maps/*.rom

Paths=../Textures/*.utx

Paths=../Sounds/*.uax

Paths=../Music/*.umx

Paths=../StaticMeshes/*.usx

Paths=../Animations/*.ukx

Paths=../Saves/*.uvx

Suppress=DevLoad

Suppress=DevSave

Suppress=DevNetTraffic

Suppress=DevGarbage

Suppress=DevKill

Suppress=DevReplace

Suppress=DevCompile

Suppress=DevBind

Suppress=DevBsp

Suppress=DevNet

Suppress=DevLIPSinc

Suppress=DevKarma

Suppress=RecordCache

Suppress=MapVoteDebug

Suppress=Init

suppress=MapVote

Suppress=VoiceChat

Suppress=ChatManager

Suppress=Timer

Paths=../Textures/Old2k4/*.utx

Paths=../Sounds/Old2k4/*.uax

Paths=../Music/Old2k4/*.umx

Paths=../StaticMeshes/Old2k4/*.usx

Paths=../Animations/Old2k4/*.ukx

Paths=../KarmaData/Old2k4/*.ka

[Engine.GameEngine]

CacheSizeMegs=32

UseSound=True

VoIPAllowVAD=False

ServerActors=IpDrv.MasterServerUplink

ServerActors=UWeb.WebServer

;ServerActors=ServerColor.ServerColorActor

ServerPackages=Core

ServerPackages=Engine

ServerPackages=Fire

ServerPackages=Editor

ServerPackages=IpDrv

ServerPackages=UWeb

ServerPackages=GamePlay

ServerPackages=UnrealGame

ServerPackages=XGame

ServerPackages=XInterface

ServerPackages=GUI2K4

ServerPackages=xVoting

;ServerPackages=OnslaughtBP

UseStaticMeshBatching=True

ColorHighDetailMeshes=False

ColorSlowCollisionMeshes=False

ColorNoCollisionMeshes=False

ColorWorldTextures=False

ColorPlayerAndWeaponTextures=False

ColorInterfaceTextures=False

MainMenuClass=ROInterface.ROMainMenu

ConnectingMenuClass=ROInterface.ROServerLoading

DisconnectMenuClass=ROInterface.RONetworkStatusMessage

LoadingClass=ROInterface.ROServerLoading

ServerPackages=ROEffects

ServerPackages=ROEngine

ServerPackages=ROGame

ServerPackages=ROAmmo

ServerPackages=ROInventory

ServerPackages=ROInterface

ServerPackages=RORoles

ServerPackages=AHZ_ROVehicles

ServerPackages=ROCustom

[WinDrv.WindowsClient]

WindowedViewportX=640

WindowedViewportY=480

FullscreenViewportX=800

FullscreenViewportY=600

MenuViewportX=640

MenuViewportY=480

Brightness=0.800000

Contrast=0.700000

Gamma=0.800000

UseJoystick=False

CaptureMouse=True

StartupFullscreen=True

ScreenFlashes=True

NoLighting=False

MinDesiredFrameRate=35.000000

AnimMeshDynamicLOD=0.0

Decals=True

Coronas=True

DecoLayers=True

Projectors=True

NoDynamicLights=False

ReportDynamicUploads=False

TextureDetailInterface=Normal

TextureDetailTerrain=Normal

TextureDetailWeaponSkin=Normal

TextureDetailPlayerSkin=Normal

TextureDetailWorld=Normal

TextureDetailRenderMap=Normal

TextureDetailLightmap=UltraHigh

NoFractalAnim=False

ScaleHUDX=0.0

MouseXMultiplier=1.000

MouseYMultiplier=1.000

UseSpeechRecognition=True

WeatherEffects=True

DrawDistanceLOD=1.0

[SDLDrv.SDLClient]

WindowedViewportX=640

WindowedViewportY=480

FullscreenViewportX=800

FullscreenViewportY=600

MenuViewportX=640

MenuViewportY=480

Brightness=0.800000

Contrast=0.700000

Gamma=0.800000

UseJoystick=False

JoystickNumber=0

IgnoreHat=False

JoystickHatNumber=0

CaptureMouse=True

StartupFullscreen=True

ScreenFlashes=True

NoLighting=False

MinDesiredFrameRate=35.000000

AnimMeshDynamicLOD=0.0

Decals=True

Coronas=True

DecoLayers=True

Projectors=True

NoDynamicLights=False

ReportDynamicUploads=False

TextureDetailInterface=Normal

TextureDetailTerrain=Normal

TextureDetailWeaponSkin=Normal

TextureDetailPlayerSkin=Normal

TextureDetailWorld=Normal

TextureDetailRenderMap=Normal

TextureDetailLightmap=UltraHigh

TextureMaxLOD=0

TextureMinLOD=0

NoFractalAnim=False

WeatherEffects=True

DrawDistanceLOD=1.0

IgnoreUngrabbedMouse=False

AllowUnicodeKeys=False

AllowCommandQKeys=True

MacFakeMouseButtons=True

MacKeepAllScreensOn=False

TextToSpeechFile=

MacNativeTextToSpeech=True

[ALAudio.ALAudioSubsystem]

UseEAX=False

Use3DSound=False

UseDefaultDriver=True

CompatibilityMode=False

MaxEAXVersion=255

UsePrecache=True

ReverseStereo=False

Channels=32

MusicVolume=0.10000

AmbientVolume=0.500000

SoundVolume=0.30000

VoiceVolume=4.000000

VolumeScaleRec=0.100000

DopplerFactor=1.0

Rolloff=0.5

TimeBetweenHWUpdates=15

DisablePitch=False

LowQualitySound=False

UseVoIP=True

UseVAD=False

UseSpatializedVoice=False

SpatializedVoiceRadius=100000

EnhancedDenoiser=False

LocalZOffset=0.0

DampenWithVoIP=False

[IpDrv.TcpNetDriver]

AllowDownloads=True

ConnectionTimeout=30.0

InitialConnectTimeout=200.0

AckTimeout=1.0

KeepAliveTime=0.2

MaxClientRate=15000

MaxInternetClientRate=10000

SimLatency=0

RelevantTimeout=5.0

SpawnPrioritySeconds=1.0

ServerTravelPause=4.0

NetServerMaxTickRate=20

LanServerMaxTickRate=35

DownloadManagers=IpDrv.HTTPDownload

DownloadManagers=Engine.ChannelDownload

AllowPlayerPortUnreach=False

LogPortUnreach=False

MaxConnPerIPPerMinute=5

LogMaxConnPerIPPerMin=False

[IpServer.UdpServerQuery]

GameName=rom

[IpDrv.MasterServerUplink]

DoUplink=True

UplinkToGamespy=True

SendStats=True

ServerBehindNAT=False

DoLANBroadcast=False

[IpDrv.MasterServerLink]

LANPort=11757

LANServerPort=10757

[IpDrv.HTTPDownload]

RedirectToURL=download_folder_path

ProxyServerHost=

ProxyServerPort=3128

UseCompression=True

[Engine.DemoRecDriver]

AllowDownloads=True

DemoSpectatorClass=UnrealGame.DemoRecSpectator

MaxClientRate=25000

ConnectionTimeout=15.0

InitialConnectTimeout=200.0

AckTimeout=1.0

KeepAliveTime=1.0

SimLatency=0

RelevantTimeout=5.0

SpawnPrioritySeconds=1.0

ServerTravelPause=4.0

NetServerMaxTickRate=30

LanServerMaxTickRate=30

[Engine.GameReplicationInfo]

ServerName=Your Server RO:Ostfront

ShortName=Your Server

ServerRegion=0

AdminName=andrew

AdminEmail=adminemail

MessageOfTheDay=

[D3DDrv.D3DRenderDevice]

DetailTextures=True

HighDetailActors=True

SuperHighDetailActors=True

UsePrecaching=True

UseTrilinear=True

AdapterNumber=-1

ReduceMouseLag=True

UseTripleBuffering=False

UseHardwareTL=True

UseHardwareVS=True

UseCubemaps=True

DesiredRefreshRate=60

UseCompressedLightmaps=True

UseStencil=False

Use16bit=False

Use16bitTextures=False

MaxPixelShaderVersion=255

UseVSync=True

LevelOfAnisotropy=1

DetailTexMipBias=0.0

DefaultTexMipBias=-0.5

UseNPatches=False

TesselationFactor=1.0

CheckForOverflow=False

AvoidHitches=False

OverrideDesktopRefreshRate=False

ReportUnusedTextures=False

[D3D9Drv.D3D9RenderDevice]

DetailTextures=True

HighDetailActors=True

SuperHighDetailActors=True

UsePrecaching=True

UseTrilinear=True

AdapterNumber=-1

ReduceMouseLag=True

UseTripleBuffering=False

UseHardwareTL=True

UseHardwareVS=True

UseCubemaps=True

DesiredRefreshRate=60

UseCompressedLightmaps=True

UseStencil=False

Use16bit=False

Use16bitTextures=False

MaxPixelShaderVersion=255

UseVSync=False

LevelOfAnisotropy=1

DetailTexMipBias=0.0

DefaultTexMipBias=-0.5

UseNPatches=False

TesselationFactor=1.0

CheckForOverflow=False

OverrideDesktopRefreshRate=False

[OpenGLDrv.OpenGLRenderDevice]

DetailTextures=True

HighDetailActors=True

SuperHighDetailActors=True

UsePrecaching=True

UseCompressedLightmaps=True

UseTrilinear=True

UseStencil=False

MaxTextureUnits=8

VARSize=32

ReduceMouseLag=True

UseVSync=False

LevelOfAnisotropy=1.0

DetailTexMipBias=0.0

DefaultTexMipBias=-0.5

UseVBO=False

UseVSync=False

AppleVA=1

MultisampleBuffers=0

MultisampleSamples=0

MultisampleHint=2

[PixoDrv.PixoRenderDevice]

FogEnabled=True

Zoom2X=True

SimpleMaterials=True

LimitTextureSize=True

LowQualityTerrain=True

TerrainLOD=10

SkyboxHack=True

FilterQuality3D=1

FilterQualityHUD=1

HighDetailActors=False

SuperHighDetailActors=False

ReduceMouseLag=False

DesiredRefreshRate=0

DetailTexMipBias=0.000000

Use16bitTextures=False

Use16bit=True

UseStencil=False

UseCompressedLightmaps=False

DetailTextures=False

UsePrecaching=True

[Engine.NullRenderDevice]

DetailTextures=True

HighDetailActors=True

SuperHighDetailActors=True

UsePrecaching=True

UseCompressedLightmaps=True

UseStencil=False

[Editor.EditorEngine]

UseSound=True

CacheSizeMegs=32

GridEnabled=True

SnapVertices=False

SnapDistance=1.000000

GridSize=(X=4.000000,Y=4.000000,Z=4.000000)

RotGridEnabled=True

RotGridSize=(Pitch=1024,Yaw=1024,Roll=1024)

GameCommandLine=-log

FovAngleDegrees=90.000000

GodMode=True

AutoSave=True

AutoSaveTimeMinutes=5

AutoSaveIndex=6

UseAxisIndicator=True

MatineeCurveDetail=0.1

ShowIntWarnings=False

UseSizingBox=True

RenderDevice=D3DDrv.D3DRenderDevice

AudioDevice=ALAudio.ALAudioSubsystem

NetworkDevice=IpDrv.TcpNetDriver

DemoRecordingDevice=Engine.DemoRecDriver

Console=Engine.Console

Language=ute

AlwaysShowTerrain=False

UseActorRotationGizmo=False

LoadEntirePackageWhenSaving=0

EditPackages=Core

EditPackages=Engine

EditPackages=Fire

EditPackages=Editor

EditPackages=UnrealEd

EditPackages=IpDrv

EditPackages=UWeb

EditPackages=GamePlay

EditPackages=UnrealGame

EditPackages=XGame

EditPackages=XInterface

EditPackages=XAdmin

EditPackages=XWebAdmin

EditPackages=GUI2K4

EditPackages=xVoting

EditPackages=UTV2004c

EditPackages=UTV2004s

EditPackages=ROEffects

EditPackages=ROEngine

EditPackages=ROGame

EditPackages=ROAmmo

EditPackages=ROInventory

EditPackages=ROInterface

EditPackages=RORoles

EditPackages=ROVehicles

CutdownPackages=Core

CutdownPackages=Editor

CutdownPackages=Engine

CutdownPackages=Fire

CutdownPackages=GamePlay

CutdownPackages=GUI2K4

CutdownPackages=IpDrv

CutdownPackages=Onslaught

CutdownPackages=UnrealEd

CutdownPackages=UnrealGame

CutdownPackages=UWeb

CutdownPackages=XAdmin

CutdownPackages=XEffects

CutdownPackages=XInterface

CutdownPackages=XPickups

CutdownPackages=XWebAdmin

CutdownPackages=XVoting

[UWeb.WebServer]

Applications[0]=xWebAdmin.UTServerAdmin

ApplicationPaths[0]=/ServerAdmin

Applications[1]=xWebAdmin.UTImageServer

ApplicationPaths[1]=/images

bEnabled=True

ListenPort=8075

[Engine.Console]

ConsoleHotKey=9

TimePerTitle=30.0

TimePerDemo=60.0

TimePerSoak=3600.0

TimeTooIdle=60.0

DemoLevels[0]=DM-Curse3

DemoLevels[1]=DM-Antalus

DemoLevels[2]=CTF-Chrome

DemoLevels[3]=DOM-SunTemple

DemoLevels[4]=BR-Endagra

[Engine.AccessControl]

AdminPassword=******

GamePassword=

bBanByID=True

LoginDelaySeconds=200.000000

IPPolicies=ACCEPT;*

[Engine.GameInfo]

GoreLevel=2

MaxSpectators=2

MaxPlayers=42

AutoAim=1.000000

GameSpeed=1.000000

bChangeLevels=True

bStartUpLocked=False

bNoBots=False

bAttractAlwaysFirstPerson=False

NumMusicFiles=13

bEnableStatLogging=False

HUDType=Engine.Hud

MaxLives=0

TimeLimit=0

GoalScore=0

GameStatsClass=IpDrv.MasterServerGameStats

SecurityClass=UnrealGame.UnrealSecurity

;AccessControlClass=Engine.AccessControl

AccessControlClass=XAdmin.AccessControlIni

VotingHandlerType=xVoting.xVotingHandler

MaxIdleTime=0.000000

bVACSecured=False

bAllowBehindView=False

bAdminCanPause=False

bWeaponShouldViewShake=True

bLowGore=False

bLargeGameVOIP=False

GameDifficulty=5.000000

MaplistHandlerType=

ServerSkillLevel=

bIgnore32PlayerLimit=True

[Engine.AmbientSound]

AmbientVolume=0.25

[Engine.LevelInfo]

PhysicsDetailLevel=PDL_Medium

MeshLODDetailLevel=MDL_Ultra

bLowSoundDetail=False

DecalStayScale=1.0

bNeverPrecache=false

TimeMarginSlack=1.35

MaxClientFrameRate=+90.0

[XInterface.ExtendedConsole]

ConsoleHotKey=192

NeedPasswordMenuClass=GUI2K4.UT2K4GetPassword

bSpeechMenuUseMouseWheel=True

bSpeechMenuUseLetters=False

SMOriginX=0.01

SMOriginY=0.3

LetterKeys[0]=IK_Q

LetterKeys[1]=IK_W

LetterKeys[2]=IK_E

LetterKeys[3]=IK_R

LetterKeys[4]=IK_A

LetterKeys[5]=IK_S

LetterKeys[6]=IK_D

LetterKeys[7]=IK_F

LetterKeys[8]=IK_Z

LetterKeys[9]=IK_X

MusicManagerClassName=GUI2K4.StreamPlayer

[XGame.xDeathMatch]

HUDType=XInterface.HudBDeathMatch

MaxLives=0

TimeLimit=20

GoalScore=25

bTeamScoreRound=False

bPlayersMustBeReady=False

bAllowTaunts=True

bForceRespawn=False

bWeaponStay=true

[XGame.xTeamGame]

HUDType=XInterface.HudBTeamDeathMatch

MaxLives=0

TimeLimit=20

GoalScore=60

bTeamScoreRound=False

bPlayersMustBeReady=False

bAllowTaunts=True

FriendlyFireScale=0

MaxTeamSize=16

bForceRespawn=False

bWeaponStay=true

[XGame.xCTFGame]

HUDType=XInterface.HudBCaptureTheFlag

MaxLives=0

TimeLimit=20

GoalScore=3

bTeamScoreRound=False

bPlayersMustBeReady=False

bAllowTaunts=True

FriendlyFireScale=0

MaxTeamSize=16

bForceRespawn=False

bWeaponStay=true

[XGame.xDoubleDom]

HUDType=XInterface.HudBDoubleDomination

MaxLives=0

TimeLimit=20

GoalScore=3

bTeamScoreRound=False

bPlayersMustBeReady=False

bAllowTaunts=True

TimeToScore=10

TimeDisabled=10

FriendlyFireScale=0

MaxTeamSize=16

bForceRespawn=False

bWeaponStay=true

[XGame.xBombingRun]

HUDType=XInterface.HudBBombingRun

MaxLives=0

TimeLimit=20

GoalScore=15

bTeamScoreRound=False

bPlayersMustBeReady=False

bAllowTaunts=True

FriendlyFireScale=0

MaxTeamSize=16

bForceRespawn=False

bWeaponStay=true

[Engine.MaplistManager]

Games=(GameType="BonusPack.xLastManStandingGame",ActiveMaplist="Default LMS")

Games=(GameType="BonusPack.xMutantGame",ActiveMaplist="Default MUT")

Games=(GameType="Onslaught.ONSOnslaughtGame",ActiveMaplist="Default ONS")

Games=(GameType="SkaarjPack.Invasion",ActiveMaplist="Default INV")

Games=(GameType="UT2k4Assault.ASGameInfo",ActiveMaplist="Default AS")

Games=(GameType="XGame.xBombingRun",ActiveMaplist="Default BR")

Games=(GameType="XGame.xCTFGame",ActiveMaplist="Default CTF")

Games=(GameType="XGame.xDeathMatch",ActiveMaplist="Default DM")

Games=(GameType="XGame.xDoubleDom",ActiveMaplist="Default DOM2")

Games=(GameType="XGame.xTeamGame",ActiveMaplist="Default TDM")

Games=(GameType="XGame.xVehicleCTFGame",ActiveMaplist=)

Games=(GameType="ROEngine.ROTeamGame",ActiveMaplist="Default RO")

[XInterface.MapListDeathMatch]

MapNum=0

Maps=DM-RRAJIGAR

Maps=DM-RANKIN

Maps=DM-CORRUGATION

Maps=DM-DE-GRENDELKEEP

Maps=DM-DE-IRONIC

Maps=DM-DE-OSIRIS2

Maps=DM-GESTALT

Maps=DM-IRONDEITY

Maps=DM-METALLURGY

Maps=DM-Deck17

Maps=DM-Antalus

Maps=DM-Asbestos

Maps=DM-Curse4

[XInterface.MapListTeamDeathMatch]

MapNum=0

Maps=DM-RRAJIGAR

Maps=DM-RANKIN

Maps=DM-CORRUGATION

Maps=DM-DE-GRENDELKEEP

Maps=DM-DE-IRONIC

Maps=DM-DE-OSIRIS2

Maps=DM-GESTALT

Maps=DM-IRONDEITY

Maps=DM-METALLURGY

Maps=DM-Deck17

Maps=DM-Antalus

Maps=DM-Asbestos

Maps=DM-Curse4

[XInterface.MapListCaptureTheFlag]

MapNum=0

Maps=CTF-ABSOLUTEZERO

Maps=CTF-MOONDRAGON

Maps=CTF-GRASSYKNOLL

Maps=CTF-COLOSSUS

Maps=CTF-SMOTE

Maps=CTF-DOUBLEDAMMAGE

Maps=CTF-AVARIS

Maps=CTF-BRIDGEOFFATE

Maps=CTF-FaceClassic

Maps=CTF-CHROME

Maps=CTF-Citadel

Maps=CTF-Orbital2

[DefaultRO MaplistRecord]

DefaultTitle=Default RO

DefaultGameType=ROEngine.ROTeamGame

DefaultActive=3

;DefaultMaps=ro-blackdayjuly

DefaultMaps=ro-fallenheroes

DefaultMaps=RO-KrivoiRog

DefaultMaps=ro-danzig

DefaultMaps=ro-arad

DefaultMaps=ro-barashka

DefaultMaps=ro-basovka

DefaultMaps=ro-bondarevo

DefaultMaps=ro-hedgehog

DefaultMaps=ro-kaukasus

DefaultMaps=RO-KrasnyiOktyabr

DefaultMaps=ro-ogledow

DefaultMaps=ro-odessa

DefaultMaps=ro-stalingradkessel

DefaultMaps=RO-Konigsplatz

DefaultMaps=ro-rakowice

DefaultMaps=ro-baksanvalley

DefaultMaps=ro-berezina

DefaultMaps=ro-kryukovo

DefaultMaps=ro-kurlandkessel

DefaultMaps=ro-leningrad

DefaultMaps=ro-mannikkala

DefaultMaps=ro-smolenskstalemate

DefaultMaps=ro-tcherkassy

DefaultMaps=RO-TulaOutskirts

DefaultMaps=RO-Zhitomir1941

DefaultMaps=ro-lyeskrovy

DefaultMaps=RO-TractorWorks

DefaultMaps=RO-Klin_Outerring

DefaultMaps=RO-Basovka1941

DefaultMaps=RO-Dzerzhinsky1942

DefaultMaps=RO-Elnya

DefaultMaps=RO-Elnya1941

DefaultMaps=RO-Klin1941

DefaultMaps=RO-Lazur1942

DefaultMaps=RO-Warsaw1945

DefaultMaps=RO-Zhitomir_1943

DefaultMaps=RO-Dom_Pavlova

DefaultMaps=RO-KrasnyBor1943

DefaultMaps=RO-Bahnhof-Bad-Muskau-Final-even3

DefaultMaps=RO-BeachAssaultII_RC

DefaultMaps=RO-Berezina_1941

DefaultMaps=RO-Berlin

DefaultMaps=RO-Bialystok

DefaultMaps=RO-Bocklin

DefaultMaps=RO-Budapest

DefaultMaps=RO-Code_Enigma1944_End

DefaultMaps=RO-Dubrava

DefaultMaps=RO-EnemyAtTheGates2

DefaultMaps=RO-Entweichen

DefaultMaps=RO-Factory_II_B2

DefaultMaps=RO-Gorlitz_beta3

DefaultMaps=RO-GrainSilo_Tankassault_b2

DefaultMaps=RO-Halbe

DefaultMaps=RO-Hill_Flak88

DefaultMaps=RO-Hochburg1943

DefaultMaps=RO-JD10

DefaultMaps=RO-KoitosK1

DefaultMaps=RO-Makhnovo

DefaultMaps=RO-Mga_b3

DefaultMaps=RO-Ponyri_beta3

DefaultMaps=RO-Riga_Docks(Beta2)

DefaultMaps=RO-RoadToHill_combined_F

DefaultMaps=RO-Roadblock_S&D

DefaultMaps=RO-Soviasky_MCP1

DefaultMaps=RO-ValleyOfDeath_50_B2

DefaultMaps=RO-Vidzeme

DefaultMaps=RO-Zavod

DefaultMaps=RO-Zhitomirrevenge

[ROInterface.ROMapList]

MapNum=3

;Maps=ro-blackdayjuly

Maps=ro-fallenheroes

Maps=RO-KrivoiRog

Maps=ro-danzig

Maps=ro-arad

Maps=ro-barashka

Maps=ro-basovka

Maps=ro-bondarevo

Maps=ro-hedgehog

Maps=ro-kaukasus

Maps=RO-KrasnyiOktyabr

Maps=ro-ogledow

Maps=ro-odessa

Maps=ro-stalingradkessel

Maps=RO-Konigsplatz

Maps=ro-rakowice

Maps=ro-baksanvalley

Maps=ro-berezina

Maps=ro-kryukovo

Maps=ro-kurlandkessel

Maps=ro-leningrad

Maps=ro-mannikkala

Maps=ro-smolenskstalemate

Maps=ro-tcherkassy

Maps=RO-TulaOutskirts

Maps=RO-Zhitomir1941

Maps=ro-lyeskrovy

Maps=RO-TractorWorks

Maps=RO-Klin_Outerring

Maps=RO-Basovka1941

Maps=RO-Dzerzhinsky1942

Maps=RO-Elnya

Maps=RO-Elnya1941

Maps=RO-Klin1941

Maps=RO-Lazur1942

Maps=RO-Warsaw1945

Maps=RO-Zhitomir_1943

Maps=RO-Dom_Pavlova

Maps=RO-KrasnyBor1943

Maps=RO-Bahnhof-Bad-Muskau-Final-even3

Maps=RO-BeachAssaultII_RC

Maps=RO-Berezina_1941

Maps=RO-Berlin

Maps=RO-Bialystok

Maps=RO-Bocklin

Maps=RO-Budapest

Maps=RO-Code_Enigma1944_End

Maps=RO-Dubrava

Maps=RO-EnemyAtTheGates2

Maps=RO-Entweichen

Maps=RO-Factory_II_B2

Maps=RO-Gorlitz_beta3

Maps=RO-GrainSilo_Tankassault_b2

Maps=RO-Halbe

Maps=RO-Hill_Flak88

Maps=RO-Hochburg1943

Maps=RO-JD10

Maps=RO-KoitosK1

Maps=RO-Makhnovo

Maps=RO-Mga_b3

Maps=RO-Ponyri_beta3

Maps=RO-Riga_Docks(Beta2)

Maps=RO-RoadToHill_combined_F

Maps=RO-Roadblock_S&D

Maps=RO-Soviasky_MCP1

Maps=RO-ValleyOfDeath_50_B2

Maps=RO-Vidzeme

Maps=RO-Zavod

Maps=RO-Zhitomirrevenge

[ROEngine.ROTeamGame]

WinLimit=2

RoundLimit=3

TimeLimit=0

PreStartTime=0

DeathMessageMode=DM_All

FFPunishment=FFP_Kick

FriendlyFireScale=1.000000

FFKillLimit=4

FFDamageLimit=800

FFArtyScale=0.200000

FFExplosivesScale=0.500000

bSpectateFirstPersonOnly=False

bSpectateLockedBehindView=False

bSpectateAllowViewPoints=True

bSpectateAllowRoaming=True

bSpectateAllowDeadRoaming=False

bSpectateBlackoutWhenDead=True

bSpectateBlackoutWhenNotViewingPlayers=False

bAllowNonTeamChat=False

MaxTeamDifference=5

MaxPlayersOverride=42

bForgiveFFKillsEnabled=True

bShowServerIPOnScoreboard=True

bShowTimeOnScoreboard=True

bAutoBalanceTeamsOnDeath=False

NetWait=2

bForceRespawn=False

bAdjustSkill=True

bAllowTaunts=False

bAllowTrans=False

SpawnProtectionTime=0.000000

LateEntryLives=1

LoginMenuClass=ROInterface.ROUT2K4PlayerSetupPage

bAllowPrivateChat=True

bWeaponStay=True

bAllowWeaponThrowing=True

ResetTimeDelay=0

GoalScore=0

MaxLives=0

[ROEngine.ROWeaponAttachment]

WeaponAmbientScale=5.0

[xVoting.xVotingHandler]

VoteTimeLimit=70

ScoreBoardDelay=5

bAutoOpen=True

MidGameVotePercent=50

bScoreMode=True

bAccumulationMode=False

bEliminationMode=False

MinMapCount=1

MapVoteHistoryType=xVoting.MapVoteHistory_INI

RepeatLimit=1

DefaultGameConfig=0

bDefaultToCurrentGameType=True

bMapVote=True

bKickVote=True

bMatchSetup=False

KickPercent=25

bAnonymousKicking=True

MapListLoaderType=xVoting.DefaultMapListLoader

ServerNumber=1

CurrentGameConfig=0

GameConfig=(GameClass="ROEngine.ROTeamGame",Prefix="RO",Acronym="RO",GameName="Red Orchestra",Mutators="UTV2004S.utvMutator",Options=)

GameConfig=(GameClass="ROEngine.ROTeamGame",Prefix=,Acronym=,GameName="new",Mutators=,Options=)

[xVoting.DefaultMapListLoader]

bUseMapList=true

MapNamePrefixes=RO

[UnrealGame.TeamGame]

bBalanceTeams=False

bPlayersBalanceTeams=True

[ROFirstRun]

ROFirstRun=1086

[IpDrv.UdpGamespyQuery]

MinNetVer=0

OldQueryPortNumber=7767

bRestartServerOnPortSwap=True

bDebugPortSwaps=True

[UnrealGame.DeathMatch]

MinNetPlayers=1

RestartWait=0

bTournament=False

bAutoNumBots=True

bColoredDMSkins=False

bPlayersMustBeReady=True

bWaitForNetPlayers=True

bAllowPlayerLights=False

bForceDefaultCharacter=False

NamePrefixes[0]=Mr_

NamePrefixes[1]=b

NamePrefixes[2]=The_Real_

NamePrefixes[3]=Evil_

NamePrefixes[4]=b

NamePrefixes[5]=Owns_

NamePrefixes[6]=b

NamePrefixes[7]=Evil_

NamePrefixes[8]=b

NamePrefixes[9]=b

NameSuffixes[0]=b

NameSuffixes[1]=_is_lame

NameSuffixes[2]=b

NameSuffixes[3]=b

NameSuffixes[4]=_sucks

NameSuffixes[5]=b

NameSuffixes[6]=_OwnsYou

NameSuffixes[7]=b

NameSuffixes[8]=_jr

NameSuffixes[9]='s_clone

[UnrealGame.UnrealMPGameInfo]

BotMode=2

MinPlayers=20

EndTimeDelay=0.000000

BotRatio=1.000000

[Engine.VoiceChatReplicationInfo]

bEnableVoiceChat=True

bAllowLocalBroadcast=True

MaxChatters=0

LocalBroadcastRange=1000.000000

DefaultBroadcastRadius=20.000000

VoIPInternetCodecs=CODEC_48NB

VoIPLANCodecs=CODEC_48NB

VoIPLANCodecs=CODEC_96WB

[Engine.BroadcastHandler]

bMuteSpectators=False

bPartitionSpectators=True

[XAdmin.AccessControlIni]

PrivClasses=Class'XAdmin.xKickPrivs'

PrivClasses=Class'XAdmin.xGamePrivs'

PrivClasses=Class'XAdmin.xUserGroupPrivs'

PrivClasses=Class'XAdmin.xExtraPrivs'

Что в нем нужно изменить:

Для начала меняем название в секции [Engine.GameReplicationInfo]
ServerName=Имя сервера полное
ShortName=Имя сервера
ServerRegion=0
AdminName=ник админа
AdminEmail=почта админа
MessageOfTheDay=информация о сервере (видно при нажатии F2 в игре)

Включаем web-интерфейс администрирования в секции [UWeb.WebServer]
bEnabled=True
ListenPort=8075

Устанавливаем пароль админа в секции [Engine.AccessControl]
AdminPassword=Пароль

Добавляем ботов в игру, если нужно в [UnrealGame.UnrealMPGameInfo]

BotMode=2
MinPlayers=20

После этого можно запустить, посмотреть, как работает сервер. Зайти в веб-админку с именем и паролем, указанным в конфиге.

Дополнительные админы:

Если нужно большее количество админов, чем один. то в секции [Engine.GameInfo] делаем так

;AccessControlClass=Engine.AccessControl

AccessControlClass=XAdmin.AccessControlIni

Дальше можно зайти в админку с именем и паролем, указанным в файле xadmin.ini (создается автоматически)

Там настроить свои права и права дополнительных админов.

Быстрое скачивание карт с сервера:

В секции [IpDrv.HTTPDownload] указываем

RedirectToURL=полный урл к папке с картами

не забываем про завершающий слеш! К примеру http://someserver.com/files/ro/

Далее:

идем в папку RO/system

и сжимаем нужные файлы:

ucc-bin compress /полный путь к папке с файлами/* -nohomedir

Получившиеся в результате этого файлы uz2 переносим в папку http://someserver.com/files/ro/

Эта процедура имеет смысл для карт, текстур, звуков. Скорость скачивания вырастает в разы.

Команды администрирования в игре:
  • ADMIN MAP [map name]
  • ADMIN SWITCHLEVEL [mapname?game= gametype?mutator= mutator] — (Changes the current level to the specified level, game type, and mutators)
  • ADMIN [command] — (to use other commands not in this section)
  • ADMINLOGIN [name] [password] — (Logs the administrator onto the server using the specified password) ADMINLOGOUT
  • ADMIN KICK [playername]
  • ADMIN KICKBAN [playername]
  • ADMIN RESETGAME (resets the map to beginning values)
  • ADMIN RESTARTMAP (completely reloads the map up again) LISTPLAYERS (gives a list of all players with hash id and player number to kick someone with a weird name you can use admin kick 2, if the number of the annoying person is 2)
  • SET <package>.<classname> <property> <value>
  • This command sets the attribute property on the class package.class to value. Examples of this command can be seen below (enabling and disabling the web interface, Changing Bot Skill, Minimum Players). Refer to the INI reference for packages, classnames and properties. (Example: http://www.unrealadmin.org/modules.php?name=INI_Reference&func=ut2004 ) Note the inheritance, for example Onslaught.ONSOnslaughtGame MinPlayers overrides UnrealGame.UnrealMPGameInfo MinPlayers.
  • SET UWeb.Webserver bEnabled <value>
  • Use a value of True to enable the remote admin webserver, and a value of False to disable it. This setting change requires a level change to take effect.
  • SET Engine.GameInfo GameDifficulty <value>
  • Sets Bot Skill level on next map change.
  • SET Engine.GameInfo MaxPlayers <value>
  • Limit maximum number of players
  • SET UnrealGame.UnrealMPGameInfo MinPlayers <value>
  • Bots are added up to value of MinPlayers.

Чуть более подробно о команде SET:

Если ваш админ (или вы) обладает достаточными правами, чтобы менять переменные игры, такие как пароль сервера, название и прочее, то для их изменения можно воспользоваться командой SET.

Для образца, хотим поменять пароль для входа в игру. Ищем где он находится в ini-файле, находим секцию

Engine.AccessControl
параметр GamePassword

тогда команда для смены пароля будет выглядеть так:

admin set Engine.AccessControl GamePassword новый_пароль

Чуть больше команд:

Single Administrator System
adminlogin <String> Войти как администратор.
adminlogout Выйти из режима администрирования.
adminmenu Вызов меню администратора.
admin kickban <String / Integer> Кикнуть и забанить игрока по имени или идентификатору.
admin kick <String / Integer> Кикнуть игрока по имени или идентификатору.
admin playerlist Записывает имена игроков подключенных в настоящее время, наряду с их идентификаторами, в лог-файл сервера.
admin restartmap Перегружает текущую карту.
admin switch <String> Перезапускает сервер, используя указанный URL
Пример: admin switch ctf-face3?game=xgame.xctfgame?mutator=xgame.mutinstagib
admin addbots <Integer> Добавляет указанное количество ботов к игре.
admin addnamedbot <String> Добавляет указанного бота к игре.
admin killall <ClassName> Уничтожает все актеров указанного класса.
admin killpawns Уничтожить всех объекты (игроков, ботов, оружие, и пр.)
admin killbots <Integer> Удаляет указанное количество ботов из игры.

Advanced Administrator System
adminlogin <String> <String> Войти как администратор (пароль, имя пользователя).
adminlogout Отключить привилегии администратора.
adminmenu Вызов меню администратора.
admin playerlist Записывает имена игроков подключенных в настоящее время, наряду с их идентификаторами, в лог-файл сервера.
admin restartmap Перегружает текущую карту.
admin switch <String> Перезапускает сервер, используя указанный URL.
admin kick list Показывает идентификаторы в настоящее время кикнутых игроков.
admin kick <Integer / String> Кикнуть игрока по имени или идентификатору
admin kick ban <Integer / String> Кикнуть и забанить игрока по имени или идентификатору
admin kick session <Integer / String> Кикнуть и временно забанить игрока по имени или идентификатору
admin map <String> Переключает сервер на указанную карту
admin map restart Перегружает текущую карту
admin map next Переключает сервер на следующую карту в маплисте
admin user list Выдает список имен администраторов
admin user del Не используется
admin user logged Показывает список, в настоящее время залогинившихся администраторов
admin bots add <Integer / String> Добавляет указанное количество ботов или бота по имени
admin bots kill <Integer / String> Удаляет указанное количество ботов или бота по имени
admin bots set <Integer> Установить минимальное количество игроков в игре
admin mutators used Возвращает список мутаторов используемых в настоящее время.
admin mutators unused Возвращает список мутаторов не используемых в настоящее время.
admin mutators add <ClassName> Добавить мутатор к игре
admin mutators del <ClassName> Удалить мутатор из игры
admin maplist used Показывает список карт (из маплиста) используемые в настоящее время
admin maplist add <String> Добавить карту к маплисту
admin maplist del <String> Удалить карту из маплиста
admin maplist find <String> Сообщает находится ли указанная карта в маплисте
admin game changeto <ClassName> Переключает сервер на указанный тип игры
admin game edit <ClassName> Начало редактирования конфигурации (имя класса опционально)
admin game endedit Закончить редактирование конфигурации, сохраняя изменения
admin game canceledit Закончить редактирование конфигурации, не сохраняя изменения
admin game get <ClassName> <String> Сделать запрос текущего значения игровой установки
admin game set <ClassName> <String> Установить значение установки игры (Напр.: xCTFGame MinPlayers 4) 



На этом пока все, если будут вопросы, задавайте.

UPD: продолжение