Играю Red Orchestra2
Хорошая игра.
Много нового появилось во второй части. Прежде всего, графика.
При нормальных настройках похоже на фильм о войне.
Изменилось управление. В частности, упростилось управление танком. Думаю, это привлечет большую армию игроков из World of Tanks и Tanki Online.
Цена игры на сегодня составляет 20$ в Стиме или 110 гривен, если покупать ключ.
Есть некоторые странности с запуском. При выборе русского языка игры, игра перестает запускаться, пишет «прекращена работа rogame.exe».
Это решается удалением папки RedOrchestra2 из папки \Мои документы\My Games.
Еще, при запуске, игра почему-то выставляет настойки видео в худшую сторону и игра при этом подтормаживает. Выставление более адекватных настроек видео значительно улучшает графику и, как ни странно, уменьшаются «тормоза».
Red Orchestra Ostfront, ч2.
Ну что, продолжим тему игрового сервера RedOrchestra. Дальше речь пойдет способе увеличить посещаемость сервера, причем способом, который не все сочтут достойным. Говоря проще, делаем сервер пиратским. Поэтому саму часть, касающуюся конкретных методов, я переношу в область, доступную только зарегистрированным пользователям.
Небольшое лирическое отступление: Почему я считаю возможным создание пиратского сервера.
Я сторонник существования пиратских серверов. Не потому, что люблю «халяву», у меня есть лицензионная копия Red Orchestra, за такую прекрасную игру 10$ — это пустяк.
Я за создание пиратских серверов потому, что они способствуют популяризации игры как ничто другое. Особенно это касается новых и не «раскрученных» игр. Согласитесь, странно ждать, что человек, особенно в нашей стране, станет выкладывать деньги только чтобы попробовать игру. «Free weekend»-ы решают этот вопрос, но их катастрофически мало. Для RO такая возможность за прошлый год была всего лишь один раз.
Пиратский же сервер дает возможность распробовать игру, полюбить ее, привыкнуть ней. И если игра понравится, ее обязательно купят, потому что STEAM определенно дает преимущества. Как минимум, систему достижений («achievements «).
В качестве подтверждения моих слов, приведу примером сервер Day of Defeat Source, который не так давно стоял на месте сервера RO. Его история такова, что набрался определенный контингент людей, играющих на нем постоянно. В те времена сервер был пиратским, что, конечно же, сопровождалось рядом проблем (наличие читеров, которых сложно надолго забанить, постоянное отставание от системы обновлений и т.д.). Со временем, по общему решению основных игроков, сервер был переведен на лицензию, то есть потерял статус пиратского. И практически все игроки купили лицензию! Конечно же, у них появилась возможность играть и на других серверах, сражаться с тысячами соперников во всем мире. Стим! Но спасибо «пиратке» :)
Итак, собственно задача.
Red Orchestra Ostfront, ч1.
Начинаю цикл статей, посвященный созданию и администрированию выделенных игровых серверов.
Наша система:
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
linux_enable="YES"
Установлен Screen.
Итак, установка сервера RO Ostfront.
Скачиваем hldsupdatetool.bin в отдельный каталог, к примеру в ./steam. Сделаем файл исполняемым chmod 777 hldsupdatetool.bin и запустим. В результате получим распакованный steam-клиент.
Дальше можно просмотреть список доступных для установки серверов:
./steam -command list
#!/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: продолжение