суббота, 22 июля 2006 г.

UT2004 dedicated server

В даной заметке будет рассмотрена установка сервера UT2004 в локальную сеть со статистикой. Что нам требуется?
А вот что:
1. Собственно сам сервер.
2. PHP и MySQL выше версий 4.2 и 3 соответственно. Ну и web сервер. :)
3. Статистика.
4. Изображения карт к статистике(не обязательно)
Где это все можно взять?
1. Сервер: патч и сервер.
Пользователи Gentoo Linux могут просто набрать:
emerge ut2004-ded

Он установиться в /opt/ut2004-ded. Меня это не устраивало и я подправил эбилд и установил его в /home/games/ut2004-ded.
Если вы хотите сделать тоже, то в эбилде нужно сменить:
dir=${GAMES_PREFIX_OPT}/${PN}
на:
dir=/home/games/${PN}

2. У меня mysql версии 4.1.14, PHP версии 5.1.2 ну и apache версии 2.0.54. О настройке apache, mysql и php тут рассказываться не будет. Все это можно с легкостью найти в гугле.
Единственное, что статистика просит в php.ini сменить:
memory_limit = 8M
на:
memory_limit = 32M

пункты 3 и 4 взять можно тут: http://sourceforge.net/project/showfiles.php?group_id=65753
Нам собственно понадобиться только utstatsdb и mapimages-r1
Установка:
Установка рассматриваеться на примере Gentoo Linux, по-этому установка для меня свелась к набору одной команды:
emerge ut2004-ded
Для дех кто устанавливал моим способом нужно подправить /etc/init.d/ut2004-ded. Заменить в файле:
UCCDIR="/opt/ut2004-ded/System"
на:
UCCDIR="/home/games/ut2004-ded/System"
и строку:
OPTIONS="server ONS-Torlan?game=Onslaught.ONSOnslaughtGame ini=Default.ini log=server.log -nohomedir"
сменить на:
OPTIONS="server ONS-Torlan?game=Onslaught.ONSOnslaughtGame?GameStats=True ini=UT2004.ini log=server.log -nohomedir"
Последнее нужно для статистики.
Собственно сервер установлен. О настройке чуть позже, сейчас поставим статистику. Распакуем статистику туда, где она уже будет находиться на веб сервере. У меня это /var/www/localhost/htdocs/utstats. В файле /var/www/localhost/htdocs/utstats/includes/statsdb.inc.php нужно вписать имя вашей БД и прочие данные там все интуитивно понятно + все описано в коментариях. Базу данных естественно нужно было создать. ;) Далее через браузер конектимся на веб сервер, примерно на такой урл: http://yourwebserver.com/utstats/admin.php. Пароль админа по умолчанию - admin. И еще вас попросят ввести пароль инициализации. Вы его прописывали в файле statsdb.inc.php
$InitPass = "yourpassword"
После инициализации скрипт создаст таблицы в вашей БД. Далее в админке будет пункт LogsConfig. Log Path я сделал /var/www/localhost/htdocs/utstats/logs. Теперь немного поднастроим наш сервер. Открываем файл /home/games/ut2004-ded/System/UT2004.ini.
Перед
[Engine.GameEngine]
добавляем следующее:
[Engine.GameStats]
bLocalLog=True
Далее ищем:
GameStatsClass=IpDrv.MasterServerGameStats
меняем на:
GameStatsClass=Engine.GameStats

И наконец, чтобы наш сервер не лез в интернет линковаться с остальными серверами находим секцию:
[IpDrv.MasterServerUplink]
и делаем вот так:
[IpDrv.MasterServerUplink]
DoUplink=False
UplinkToGamespy=False
SendStats=False
ServerBehindNAT=False

Да, в секции:
[Engine.GameReplicationInfo]
можно выставить название вашего сервера, админа и прочую информацию.
Теперь можно запустить сервер.
/etc/init.d/ut2004-ded start

Логи складываются в директорию /home/games/ut2004-ded/UserLogs/, а мы указали /var/www/localhost/htdocs/utstats/logs. Теперь в /etc/crontab довавляем строку:
0 * * * * root cp /home/games/ut2004-ded/UserLogs/Stats_* /var/www/localhost/htdocs/utstats/logs/; php /var/www/localhost/htdocs/utstats/logs.php pass=adminpass
Статистика будет обрабатываться раз в час. Тоесть будут забираться логи из UserLogs, затем обрабатываться и удаляться. Так что не пугайтесь, если директория logs все время будет пустая.
И последнее - картинки карт :) Распаковываем архив mapimages-r1.tar.bz2 в /var/www/localhost/htdocs/utstats/ и в статистике теперь у каждой карты есть картинка. :)
А пока можете часок поиграть на сервере :) Через час увидите как хорошо/плохо вы играете.

P.S. Настройка статистики написана по материалам из README.txt и docs/SETUP_GUIDE.txt, входящих в архив utstatsdb-3.00.tar.bz2. Отключения линковки и остальные детали были выяснены методом научного тыка, ибо описание настроек самого сервера, я не нашел, да и искать как-то особо не хотелось :)

суббота, 1 июля 2006 г.

Установка и настройка Gentoo Linux на Asus A6Q00Vm

1. Установка Gentoo Linux на ASUS A6Q00Vm.
Нюансы установки Gentoo Linux на даный ноутбук можно прочитать тут. На даном ноутбуке работает все кроме встроеной 1.3 мегапиксельной камеры и микрофона.
2. Настройка.
Звук
Для того чтобы работал нормально звук, следует включить поддержку hotplug. В частности pci hotplug.
Далее все по документации. Модуль называется hda-intel.
Я включил поддержку pci hotplug, затем в ядро включил всего лишь один модуль - soundcore.o, и собрал alsa-driver. Научники по дефолту работать не будут, ибо на них идет поток не в том формате. Чтобы они работали нужно в /etc/modules.d/alsa добавить опции:
options snd-card-0 index=0
options snd-card-0 model=6stack-digout

Теперь все будет работать, но hotplug будет сам подружать модули для звука при загрузке и естественно без нужных нам опций, которые мы прописали в /etc/modules.d/alsa. Чтобы этого не происходило добавляем в файл /etc/hotplug/blacklist две строчки:
soundcore
snd-hda-intel

Теперь звук должен работать без проблем.
Точпад
Настройка точпада описана тут. Однако, после установки (emerge synaptics) драйвер точпада попадает в директорию: /usr/lib/modules/input, а он должен лежать в /usr/lib/xorg/modules/input/. Тоесть вы можете либо просто скопировать драйвер(synaptics_drv.so) в нужное место либо сделать символическую ссылку. Если я не ошибаюсь, то это актуально только для модульных иксов, тобишь xorg 7.
LEDs & Hotkeys
Прочитать про настройку можно тут, там есть еще кое что интересное.
Правда для меня осталось загадкой как определяется переменная USERNAME в скриптах browserbtn.sh и mailbtn.sh, по-этому я их переделал. Правда мой вариант работает только тогда когда иксы запущены через startx.
ASUSBOOK ~ # cat /etc/acpi/browserbtn.sh
#!/bin/sh
USERNAME=`ps aux | grep X | grep -v grep| tail -n 1 | awk '{print $1}'`
su - $USERNAME -c "export DISPLAY=:0.0;firefox" &

ASUSBOOK ~ # cat /etc/acpi/mailbtn.sh
#!/bin/sh
USERNAME=`ps aux | grep X | grep -v grep| tail -n 1 | awk '{print $1}'`
su - $USERNAME -c "export DISPLAY=:0.0;thunderbird" &

На панельке ноутбука есть еще индикатор новой почты. Я написал скрипт на языке perl, который проверяет послупление новой почты и зажигает лампочку на ноутбуке. Его можно взять тут. Для работы сприпта понадобится два модуля: Mail::POP3Client и Getopt::Long. Скрипт нужно запустить с параметрами вашего почтового сервера, потом он попросит пароль от ящика и уйдет в бэкграунд, где и будет продолжать свою работу.
Если у кого-то есть замечания, дополнения, пожелания к скрипту или ко всей заметке/статье буду рад выслушать.

udevd-event

Если у вас при загрузке системы появляется следующее сообщение и оно вам не нравится, то...
udevd-event[1984]: find_free_number: %e is deprecated, will be removed
and is unlikey to work correctly. Don't use it.

открываем на редактирование файл /etc/udev/rules.d/50-udev.rules, находим в нем слудуюшие строчки:
ENV{ID_CDROM}=="?*", SYMLINK+="cdrom%e", GROUP="cdrom"
ENV{ID_CDROM_CD_RW}=="?*", SYMLINK+="cdrw%e"
ENV{ID_CDROM_DVD}=="?*", SYMLINK+="dvd%e"
ENV{ID_CDROM_DVD_R}=="?*", SYMLINK+="dvdrw%e"

И в каждой строке убираем %e. Тоесть наши строки будут теперь выглядеть вот так:
ENV{ID_CDROM}=="?*", SYMLINK+="cdrom", GROUP="cdrom"
ENV{ID_CDROM_CD_RW}=="?*", SYMLINK+="cdrw"
ENV{ID_CDROM_DVD}=="?*", SYMLINK+="dvd"
ENV{ID_CDROM_DVD_R}=="?*", SYMLINK+="dvdrw"

Сохраняем файл, перезагружаемся и радуемся жизни.

Почему я об этом решил написать? Да потому, что многие пользователи, заходя на irc нанал #gentoo-ru задают этот вопрос. И по 10 раз отвечать как-то напрягает. А так дал линк и все :)