[показать]И так, задача:
Вы решили в собственной/городской сети поднять трем-сервак и подсадить юзверов на эту бесплатную игрушку. Плюсы её вполне очевидны: динамичность геймплея и кроссплатформенность, к тому же халява...
Для запуска сервера я использовал ненужный атлон с 256мб оперативной памяти и Ubuntu 7.10 Server (единственный диск, который был под рукой) с прописанными репозиториями для Hardy. Предполагается, что администратор, как минимум, знаком с игрой -). Ssh, nano и mc в помощь. Картинок будет одна, так что заранее sry, как говорят профи трема.
Реализация:
Понадобится запустить выделенный dedicated-сервер на уровне демона/службы на дефолтовом 30720-ом udp-порту. Если у сервера есть выход в глобальную сеть, есть смысл позволить heartbit до мастер-сервера (возможно откроется 30710 udp-порт). В этом случае игроки со всего мира будут видеть ваш сервер в общем списке в разделе игры Internet. В соответствии с этим открываем/пробрасываем udp-порты на маршрутизаторе/фаерволле, если таковые конечно есть. Видел совет, что нужно открыть такой же tcp-порт. На практике и в мониторинге соединений подобной необходимости не заметил.
Также нужно определиться, из-под какого пользователя будет работать будущий сервер. В соответствии с этим ставим трем, расставляем права и используем домашнюю папку своего пользователя. Я ничего не боюсь, и у меня он - root (на самом деле дело немного в другом: я работаю с некоторыми root'овыми приложениями и мне лень переключать пользователей или использовать два окна гномовского эмулятора терминала).
Игровые команды.
Здесь у меня откровенный пробел. Не лишним будет заглянуть в официальную wiki. А так же хорошие примеры содержаться в конфиге admin.dat (об этом немного позже).
Практика:
Для начала скачаем и установим официальный tremulous-клиент, в т.ч. и серверную часть. Исходники не нужны. Не следует ставить трем из репозиториев. Потому как apt-get install раскидает игру по всей системе -). При установке обратим внимание, что путь можно изменить. По дефолту это - /usr/local/games/tremulous .
Сейчас немного теории.
Будем, исходить из того, что трем установлен, как написано чуть выше, в папку /usr/local/games/tremulous , которая содержит или должна содержать следующие необходимые файлы/конфиги/папки:
// Tremulous decicated server config
// by the Tremulous Infobase
//
// http://www.tremulous.info
//
// version 1.1
// server name & loading screen
set sv_hostname "myserver" // название сервера в списке серверов
set g_motd Tremulous Lan Servak // сообщение на экране при коннекте к игре
// server password
set g_needpass 0 // нужен (1) или не нужен (0) пароль для коннекта
set g_password "" // server password
// reserved slots
set sv_privatepassword "1234" // приватный вход, если сервер заполнен
set sv_privateclients 30 // кол-во приватных входов, учитывая //sv_maxclients, используется также ботами
// remote control
set rconpassword "123456" // пароль супер-админа
//set net_ip 192.169.122.242:30777 //можно указать особые порт и админ, не факт, что опция работает
// Admin stuff
set g_admin ./admin.dat
set g_adminTempBan 300
// main configuration
set sv_maxclients 54 // максимальное кол-во игроков на сервере
set sv_pure 0 // фильтрация замоденных клиентов
set sv_allowdownload 1 // позволять загружать карты с сервера
set sv_minrate 5000 // Minumum rate for connected clients
set sv_maxrate 25000 // Maximum rate for connected clients
set sv_minsnaps 10 // Minumum snapshots for connected clients
set sv_minping 0 // Minumum latency for connected clients
set sv_maxping 250 // Maximum latency for connected clients
set g_allowvote 1 // enable client map/kick voting by "/callvote" cmd
set g_antilag 1 // serverside antilag feature
set g_unlagged 0 // если поставить 1, стрелять по печенькам будет значительно легче, параметр 50 увеличит успех
set g_initialmaprotation rotation1 // following the first map, start this rotation
set g_mincommandperiod 1000
set pmove_fixed 0
set g_adminsayfilter 0 //Admin commands will no longer be printed
// gameplay specific configuration
set timelimit 90 // after 90 minutes, the game will end as a draw
set g_suddendeathtime 75 // after 75 minutes, all build points are removed
set g_teamforcebalance 0 // forces each team to have a similar number of players
set g_friendlyfire 1 // teammates may damage each other
set g_friendlybuildablefire 1
set g_humanBuildPoints 120 // Number of buildpoints for human team, default 100
set g_humanMaxStage 2 // Maximum human stage (s1=0, s2=1, s3=2)
set g_humanStage2Threshold 20 // threshold for humans to reach stage 2, default 20
set g_humanStage3Threshold 40 // threshold for humans to reach stage 3, default 40
set g_alienBuildPoints 120 // Number of buildpoints for alien team, default 100
set g_alienMaxStage 2 // Maximum alien stage (s1=0, s2=1, s3=2)
set g_alienStage2Threshold 20 // threshold for aliens to reach stage 2, default 20
set g_alienStage3Threshold 40 // threshold for aliens to reach stage 3, default 40
set g_gravity 800 // gravity setting, default 800
set g_dretchPunt 0
set g_mapconfigs "mapconfigs"
set g_friendlyfire 1 // teammates may damage each other
set g_friendlybuildablefire 1 //позволить своим ломать постройки
set g_humanBuildPoints 120 // Number of buildpoints for human team, default 100
set g_humanMaxStage 2 // Maximum human stage (s1=0, s2=1, s3=2)
set g_humanStage2Threshold 20 // threshold for humans to reach stage 2, default 20
set g_humanStage3Threshold 40 // threshold for humans to reach stage 3, default 40
set g_alienBuildPoints 120 // Number of buildpoints for alien team, default 100
set g_alienMaxStage 2 // Maximum alien stage (s1=0, s2=1, s3=2)
set g_alienStage2Threshold 20 // threshold for aliens to reach stage 2, default 20
set g_alienStage3Threshold 40 // threshold for aliens to reach stage 3, default 40
set g_gravity 800 // gravity setting, default 800
set g_dretchPunt 0
set g_mapconfigs "mapconfigs"
//start this map first
map atcs
rotation1Очень упрощённый конфиг, двумя "//" закоментированы ненужные карты.
{
atcs
// ambush
atcs
atcs
atcs
// karith
// arachnid2
nexus6
// transit
uncreation
atcs
atcs
atcs
atcs
tremor
// niveus
}
[показать]Именно в /root/tremulous/base/vm кладём файл game.qvm .set g_ambush 1Двумя "//" закоментированы неиспользуемые. Расшифровку ambush-ботов можно проследить по вышеприведённой ссылке.
//set g_ambush_granger_s1 2
set g_ambush_dretch_s2 8
set g_ambush_basilisk_s3 4
set g_ambush_basilisk2_s4 4
set g_ambush_marauder_s5 4
set g_ambush_marauder2_s6 4
set g_ambush_dragon_s7 10
set g_ambush_dragon2_s8 10
set g_ambush_tyrants_to_win 20
set g_ambush_dodge 70
set g_ambush_dodge_random 10
set g_ambush_rebuild_time 60
set g_ambush_sec_to_start 40
set g_ambush_stage_suicide 0
set g_ambush_no_egg_ffoff 1
set g_ambush_kill_spawns 1
set g_ambush_att_buildables 0
set g_ambush_range 20000
set g_antiSpawnBlock 200
//Aliens
!bot add Bot1 aliens
wait 100
//!bot add Bot2 aliens
wait 100
//!bot add Bot3 aliens
wait 100
//!bot add Bot4 aliens
wait 100
//!bot add Bot5 aliens
wait 100
//!bot add Bot6 aliens
wait 100
//Humans
//!bot add Gooogle humans
#! /bin/shДелаем исполняемым и регистрируем в системе:
set -e
BASEPATH="/usr/local/games/tremulous/"
BINARY="tremded.x86"
DAEMON="$BASEPATH/$BINARY"
OPTIONS="2>>./mysuper.log +set dedicated 1 +set net_port 30720 +set fs_game base2 +exec server.cfg"
RUNAS="root:root"
PIDFILE="$BASEPATH/$BINARY.pid"
test -x $DAEMON || exit 0
#export HOME=$BASEPATH
export HOME=/root/.tremulous
case "$1" in
start)
echo -n "Starting Tremulous Server"
cd $BASEPATH
start-stop-daemon --start --quiet -c $RUNAS --pidfile $PIDFILE \
-N -2 -m -b -d $BASEPATH --exec $DAEMON -- $OPTIONS
echo "."
;;
stop)
echo -n "Stopping Tremulous Server"
start-stop-daemon --stop --quiet --pidfile $PIDFILE \
--exec $DAEMON
echo "."
;;
restart|force-reload)
echo -n "Cycling Tremulous Server - "
$0 stop
sleep 3
$0 start
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
s defaults 95