воскресенье, 16 ноября 2014 г.

Вся жизнь переходит в облака.

Идиоты не учатся даже на своих ошибках...

Не наступайте на грабли других придурков!


Захотелось сервер L4D2 заиметь. Взял готовый тут http://www.myarena.ru/
Сделано удобно, все админки / конфиги / etc etc - великолепно, только мелкие придирки. Одно только но! Сервак крашится через каждые 30 минут при игре versus, на что супорт открыто намекает на мою криворукость.

Сообщение от специалиста технической поддержки Антона в 17.10.2014 21:17
Вообще то, я зашел в панель управления, когда сервер упал, при Вас и при мне, и не заметил, чтобы он был установлен. Устанавливал я его после сообщения, чтобы Вы не трогали.
Я не вижу проблем со стороны хостинга. Сервер работает исправно, если им нормально пользоваться.
Просто сперва все настройте.
Сам человек пробыл на серваке без единого плагина до типичного краша, после чего разнылся что удален сурмод при запущенной игре (удален до запуска сервера, раз 5 разными доступными формулировками пытался объяснить - пятница вечер, все понимаю), на этом тикет закрыт, пару попыток переустановок сервака тот же результат (coop тянет, версус 4х4 полчаса игры от силы).

Дедик!

гораздо приятнее настраивать на родном linux с sftp / консольками / apt-get -ми.
выбор пал на этот ТП
выбор по понятным причинам пал на этот тарифный план с виртуализацией KVM за 200 р/мес.


после оплаты получаешь ssh доступ к телу
Linux vm88852.local 3.10-0.bpo.3-amd64 #1 SMP Debian 3.10.52-1~bpo1 (2014-08-11) x86_64 GNU/Linux
uname  -a#1 SMP Debian 3.2.63-2 x86_64 GNU/Linux

$ ssh-keygen -t rsa
$ ssh-copy-id -i ~/.ssh/id_rsa.pub steam@serverip

Установка сервака:


# adduser steam
# su - steam
$ mkdir ~/steamcmd
$ mkdir ~/l4d2
$ cd ~/steamcmd
$ wget http://media.steampowered.com/installer/steamcmd_linux.tar.gz 
$ tar -xvzf steamcmd_linux.tar.gz 
 немного магии


$ mkdir /home/steam/.steam 
$ ln -s /home/steam/steamcmd/linux32/ /home/steam/.steam/sdk32

при запуске  получаем сообщение что нет 32 либ (это же сообщение остановило на древнем виртуалхосте bsd, и на всех двух 7 дебианах):

доустанавливаем 
# dpkg --add-architecture i386
# apt-get update
# apt-get install ia32-libs 
После чего запустился steamcmd

$ ~/steamcmd$ ./steamcmd.sh 
...
Loading Steam API...OK.


далее по ману:
Steam>login anonymous
Steam>force_install_dir /home/steam/l4d2/
Steam>app_update 222860 validate

спустя 8Гб
 Update state (0x81) committing, progress: 93.00 (7574073846 / 8144478033)Success! App '222860' fully installed.

установка sourcemod/metamod

$ cd /l4d2/left4dead2/
$ wget http://sourcemod.otstrel.ru/sourcemod-1.6.2-linux.tar.gz
$ wget  http://mirror.pointysoftware.net/alliedmodders/mmsource-1.10.3-linux.tar.gz
$ tar xvzf mmsource-1.10.3-linux.tar.gz
$ tar xvzf sourcemod-1.6.2-linux.tar.gz


раньше нужно было вбивать вручную тут
http://www.metamodsource.net/?go=vdf

Game:  
Game Folder:  


сейчас в версии он идет в комплекте
/home/steam/l4d2/left4dead2/addons/metamod.vdf
со следующим содержимым.
"Plugin"
{
"file" "addons/metamod/bin/server"
}

пара трюков


  • имеет смысл запускать сервер в сеансе screen (сервер не вырубится в случае дисконнекта /краха ssh etc). Вторая команда добавляет нормальную прокрутку.

# apt-get install screen
прокрутка в скрине эпичная: ^a Esc стрелки или PageUp\Down
  • тестовый запуск:

/home/steam/l4d2/srcds_run -console -game left4dead2  +hostport 27015 +exec server.cfg +map c1m1_hotel
  • проверка метамод/сорсмод:

>meta list
Listing 2 plugins:
  [01] SourceMod (1.6.2) by AlliedModders LLC
  [02] SDK Tools (1.6.2) by AlliedModders LLC
>sm plugins list
[SM] Listing 18 plugins:
  • прописываем админа в

echo '"STEAM_0:1:33282568" "99:z"' >> /home/steam/l4d2/left4dead2/addons/sourcemod/configs/admins_simple.ini


steam id можно узнать тут 
Aweal
Joined Steam:2010-06-21
Steam Level:5
Friendship:Sign in to check
Online Status:Online
Profile Privacy:Public
Trade Ban:None
VAC Ban:None
Community Ban:None





не забыть обновить список админов:
sm_reloadadmins
Раз уж есть сервак, то можно и пригласительное сообщение оставить.
Весь прикол в том, что на голом debian нет web-сервера.
Устанавливаем, минимальные настройки на выдачу статических файлов:

# mkdir /data/www/l4d2_servermessage/ -p
# chown www:www -Rfv  /data/
# apt-get install nginx-light

в /etc/nginx/nginx.conf в секцию http добавим

        server{


location / {
       root /data/www;
}
        location /data/www/l4d2_servermessage/ {
root /data/www/;
                        }
        }

автозапуск nginx
# update-rc.d -f nginx defaults


в моем случае вышло такое что можно прописать в motd.txt
если не отображается  - проверить переменную motd_enabled "1" в server.cfg

server.cfg
группа стим:
sv_steamgroup "6999149"

безопасность:

https://wiki.debian.org/iptables


 #####
 # Steam Ports
 #####
 # Game Client Traffic + Matchmaking and HLTV
 -A INPUT -p udp -m udp --dport 27000:27030 -j ACCEPT
 # Steam Downloads
 -A INPUT -p tcp -m tcp --dport 27014:27050 -j ACCEPT
 # Other ports for Steam
 -A INPUT -p udp -m udp --dport 4380 -j ACCEPT
 -A INPUT -p udp -m udp --dport 3478 -j ACCEPT
 -A INPUT -p udp -m udp --dport 4379 -j ACCEPT
 -A INPUT -p udp -m udp --dport 4380 -j ACCEPT

Дополнения


все плагины сваливаем
~$STEAM_HOME/addons/sourcemod/plugins/
или переапускаем сервер или

sm plugins load plugin_name.smx 

если компилить плагины (после небольших изменений), то необходимо сначала перейти в папку scripting и уже потом компилировать
сумарно так:
$ cd /home/steam/l4d2/left4dead2/addons/sourcemod/scripting/
./compile.sh plugin_name.sp
$ cp compiled/plugin_name.smx ../plugins/

!lerps
https://bitbucket.org/ProdigySim/misc-sourcemod-plugins/src/e14a8be7d647e485478d926ca4ea256ea0c97337/lerptrack/?at=default

Крики стоны etc
http://www.gamemaps.com/details/3568

Смена карты после игры
https://forums.alliedmods.net/showthread.php?p=1463891

!boss !tank !witch
https://github.com/CanadaRox/sourcemod-plugins/tree/master/l4d_boss_percent

анонсы задротов:
https://github.com/Tabbernaut/L4D2-Plugins/tree/master/skill_detect

sm_skill_report_enable 1
sm_skill_report_flags 1048575

!afk !s:
https://forums.alliedmods.net/showthread.php?p=1130434

reservedslots: https://github.com/alliedmodders/sourcemod/blob/master/plugins/reservedslots.sp

l4d2_tickrate_enabler
скомпилить не реально, проще проапргредить libc:

echo "deb http://http.debian.net/debian/ jessie main contrib non-free" >> /etc/apt/sources.list
aptitude update
apt-get -t jessie install libc6-amd64 libc6-dev libc6-dbg libc6-i386

и даже после этого не заработает ;)
замени на вот эту дрянь

    sv_maxupdaterate 100
    sv_maxcmdrate 100
    fps_max 150 // higher than 100 recommended, as ticks calculated seems to dip otherwise.
 sv_maxrate 0 // 0 = unlimited, but you can also set this manually. Default is 30k for 30tick, use math.
 // Setting higher sv_minrate can be used to force users to use higher data rates.
 
 Note that fps_max and sv_maxrate are hidden variables on most scenarios.

и в строке запуска добавляется -tickrate 100


$ /home/steam/l4d2/srcds_run -console -game left4dead2  +hostport 27015 +exec server.cfg +map c1m1_hotel -tickrate 100 -maxplayers 12



ссылки:
https://developer.valvesoftware.com/wiki/SteamCMD
http://tj-s.ru/tod/mouse-parallax.html
http://ramer.livejournal.com/94790.html

http://www.l4dnation.com/l4d2-discussion/l4d2-server-guide
http://steamcommunity.com/sharedfiles/filedetails/?id=276173458

настройка ssmod
http://beskuda.com/forum/16-19-1


Net / Rates
понятия: http://www.counterstrike.ru/pagestop-138-page-1.htmhttps://bitbucket.org/ProdigySim/l4d2_tickrate_enablerl
Изнутри:
https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking

клиент с его сс*ными лерпами:
http://steamcommunity.com/groups/xbrs/discussions/0/540731691228870837/