С момента выхода 0.7.5800 прошло пять месяцев и 1679 коммитов. И мы решили, что больше тянуть с релизом нельзя. Но так как код еще не до конца отлажен, представляем на ваш суд промежуточный билд Battle Tanks 0.8-RC1. Внутри так много нововведений и фич, что наш скромный коллектив уже не справляется с тестированием. Надеемся в этом на вашу поддержку и помощь.
Вкратце список нововведений:
Мультиплейер
- Командная игра и два новых режима: Team DeathMatch и Capture the Flag.
- Реализована игра посредством Всемирной-интернет-сети-компьютеров и запущены три наших собственных сервака для этого (CTF, Deatchmatch и Cooperative). Пока что они работают в тестовом режиме, но каждый желающий уже может подключиться к ним: просто кликните по кнопке Scan в меню Join the Game и ищите в списке btanks.media.netive.ru.
- Для энтузиастов добавлена возможность запуска собственного standalone сервера.
Графика и звук
- Благодаря нашей библиотеке D3dSDL, танки под Microsoft® Windows™ теперь используют DirectX™® вместо OpenGL™. Это очень позитивно сказалось на производительности.
- Разрешения экрана больше не зашиты в код, а берутся из SDL.
- Поддержка OpenAL, наконец-то, прекращена. Отныне, звук обрабатывается нашей собственной библиотекой Clunk.
- Добавлено несколько новых звуков.
Управление и геймплей
- Убран эффект замедления/ускорения
- Улучшено управление с клавиатуры при стрельбе по диагонали (да, мы сделали это).
- Чтобы усилить поскучневшую в последних релизах шилку мы сделали ей поворачивающуюся и самонаводящуюся башню.
- Гранаты и мортирные снаряды теперь перелетают через препятствия.
- Улучшен подсчет фрагов и добавлен “телефраг”: из двоих зашедших в один телепорт, в живых остается последний.
- Автоматически сообщения в чат о подключении/отключении игроков, а так же о их безвременной кончине. Сообщения от игроков в командной игре покрашены в цвета команд.
Карты
- Добавлена новая карта для Deathmatch и CTF, “Four Rooms”.
- В дистрибутив включен редактор карт (который по-прежнему user-unfriendly).
- В скрипты добавлены таймеры и эффект “ОВЕЧ” для невозбранного управления объектами через LUA. Можно рисовать скриптовые сценки :)
Код
Инкрементальный сетевой протокол, новая сериализационная модель и сжатие по словарю позволили сократить объем передаваемых по сети данных в несколько раз. Весь код портирован на g++ 4.3. Все ресурсы игры помещены в один большой архив resources.dat (это должно прийтись по вкусу собирателям .deb’ок, .rpm’ок и прочих ebuild’ов). Отказ от sigc++ в пользу собственной библиотеки. Также был улучшен генератор случайных чисел.
Уф! Но и это еще не все! Кому интересен весь список имзменений может почитать полный changelog. А мы с нетерпением ждем ваших багрепортов!
P.S. Мак-юзеры, к сожалению, пока остаются без билда. Но мы помним о вас.
@ 12 July 2008 at 12 July 2008, 16:34
Молодцы! Дома скачаю!
@ 12 July 2008 at 12 July 2008, 20:08
Hi there,
compiles fine on debian/gnu linux amd64 but starting it gets my monitor “out of frequency” :)
@ 13 July 2008 at 13 July 2008, 12:15
OMG, finally! After waiting sooo long, it finally came out! I’m sooo happy! I’m gonna download it ASAP!
@ 16 July 2008 at 16 July 2008, 19:09
>compiles fine on debian/gnu linux amd64 but starting it gets my monitor “out of frequency” :)
try starting ./btanks with switches ‘-2′, ‘-3′, ‘-4′ or try windowed mode (edit config file ~/.btanks/bt.xml, set “engine.window.fullscreen” to “false”)
“./btanks -2″ runs btanks in 1024×768, “-4″ runs “1280×1024″
@ 18 July 2008 at 18 July 2008, 0:05
хорошая игра… наверное. мало того, что под gcc 4.1.2 без напильника не собралась (ладно, пропатчил, дело нехитрое), так её ещё и установить нельзя. scons install как-то не фурычит, а учить дебильный бидон и не менее дебильный scons… избавьте. у меня есть жизнь в реале.
хинт: а положить в архив файлик, где написано, как ставить — и не было бы проблем.
@ 18 July 2008 at 18 July 2008, 0:07
Hi, I can’t compile your game, here is the error
g++ -o build/release/engine/src/finder.os -c -march=native -msse3 -pipe -O2 -march=native -msse3 -pipe -O2 -O3 -Wall -pedantic -Wno-long-long -pipe -pthread -fPIC -O3 -Wall -pedantic -Wno-long-long -pipe -pthread -DUSE_GLSDL -DV3_DISABLE_Z -DRELEASE -DPREFIX=”\”/usr\”" -DRESOURCES_DIR=”\”/usr/share/games/btanks\”" -DPLUGINS_DIR=”\”/usr/games/lib64/btanks/btanks\”" -D_GNU_SOURCE=1 -D_REENTRANT -DBTANKSAPI=DLLEXPORT -DENABLE_LUA -DENABLE_LUA -I. -Iengine -Iengine/src -I/usr/include/SDL engine/src/finder.cpp
engine/src/finder.cpp: In member function ‘void IFinder::scan(std::vector<std::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::basic_string<char, std::char_traits, std::allocator > > >&)’:
engine/src/finder.cpp:105: error: invalid operands of types ‘const char [31]‘ and ‘const char [2]‘ to binary ‘operator+’
engine/src/finder.cpp:112: error: invalid operands of types ‘const char [24]‘ and ‘const char [15]‘ to binary ‘operator+’
scons: *** [build/release/engine/src/finder.os] Error 1
scons: building terminated because of errors.
@ 18 July 2008 at 18 July 2008, 0:21
I have these versions
lua-5.1.3
sdl-image-1.2.6
smpeg-0.4.4
libvorbis-1.2.1_rc1
scons-0.98.4
gcc-4.2.4
@ 18 July 2008 at 18 July 2008, 1:34
>Hi, I can’t compile your game, here is the error
heh, you need to patch that file. that is exactly the problem i’ve got. here’s the patch:
— finder.cpp.orig 2008-06-08 12:02:39.000000000 +0300
+++ finder.cpp 2008-07-17 20:10:21.000000000 +0300
@@ -98,28 +98,38 @@
TRY {
std::string dname = base_dir + “/data”;
std::string rname = base_dir + “/resources.dat”;
+#ifdef PLUGINS_DIR
+ std::string xname = PLUGINS_DIR;
+ xname += “/”;
+ xname += dname;
+#endif
if (mrt::FSNode::is_dir(dname) || dir.exists(rname)) {
//LOG_DEBUG((”data_dir = %s”, dname.c_str()));
path.push_back(dname.c_str());
#ifdef PLUGINS_DIR
- path.push_back(PLUGINS_DIR + “/” + dname); //plugins loaded from path ../bt_objects.
+ path.push_back(xname); //plugins loaded from path ../bt_objects.
#endif
}
} CATCH(”scan”, )
}
#ifdef RESOURCES_DIR
- std::string dname = RESOURCES_DIR “/data”;
- std::string rname = RESOURCES_DIR + “/resources.dat”;
+ std::string xxx = RESOURCES_DIR;
+ std::string dname = xxx+”/data”;
+ std::string rname = xxx+”/resources.dat”;
#else
std::string dname = “data”;
std::string rname = “resources.dat”;
#endif
if (mrt::FSNode::is_dir(dname) || dir.exists(rname)) {
+#ifdef PLUGINS_DIR
+ std::string xxname = PLUGINS_DIR;
+ xxname += “/data”;
+#endif
path.push_back(dname);
_base_path = dname;
#ifdef PLUGINS_DIR
- path.push_back(PLUGINS_DIR “/data”); //plugins loaded from path ../bt_objects.
+ path.push_back(xxname); //plugins loaded from path ../bt_objects.
#endif
}
dir.close();
the patch is very stupid, but at least it works. %-)
@ 18 July 2008 at 18 July 2008, 9:32
angry loser,
для установки напишите “scons”. просто “scons”, забудьте про дебильные install’ы.
Файлик с инструкциями по установке внутри есть, он называется README-linux.txt.
@ 18 July 2008 at 18 July 2008, 9:40
Milan, how about expat, g++ and other required packages? Read carefully file README-linux.txt especially section 3 and 4.
@ 18 July 2008 at 18 July 2008, 15:11
expat version is 2.0.1 , I use gentoo, so since there is still no ebuild for new version I moved 0.7.5800 ebuild to my overlay and changed couple of things, I removed openal and libsigc++ from dependencies and added smpeg, I have all dependencies that are in the README-linux.txt, libsdl is 1.2.13… Do you have some idea, what should I look next, I am not at home right now but later I can paste somewhere whole build log if you think it will be usefull.
@ 18 July 2008 at 18 July 2008, 15:13
heh, I just saw patch that angry luser posted, sorry, I will try it and will report if it works.
@ 18 July 2008 at 18 July 2008, 17:37
It’s very strange. Our internet-server is running Gentoo, so everithing should work. As a temporary solution, try to use angry luser’s patch.
@ 18 July 2008 at 18 July 2008, 22:33
@private_face:
>Файлик с инструкциями по установке внутри есть, он называется README-linux.txt.
его процитировать весь, или мне поверят на слово, что там ни буквы про то, как установить игру?
алсо, для тех, кому с высоты полёта недосуг обращать внимание на частности: “scons, просто scons” аккуратно собирает софтину в каталоге, куда она распакована. а софтина желает жить совсем не в каталоге с исходниками и прочим. в частности у меня она желает жить в /opt. ну вот так мне удобно. и ниакое “scons, просто scons” её туда не кладёт, хоть три мильёна раз запускай, хоть апстену убейся.
scons: done reading SConscript files.
scons: Building targets …
scons: `.’ is up to date.
scons: done building targets.
не наблюдаю никаких попыток что-то куда-то скопировать. так что собрать-то я её собрал, а запустить — увы.
и — нет, я не gentoo user. и не debian user. и не ubuntu user. и не suse user. и собралась она после патча без ошибок. только не инсталлится и не работает. право, оставили бы лучше autocrap, оно хоть make install умеет, если руки у авторов из верного места.
@ 18 July 2008 at 18 July 2008, 22:41
я всё это не к тому, что программа фигня или авторы мне что-то должны. я к тому, что весь FOSS вот такой ерундой болен: хоть где-то, хоть как-то, но грабли положить. чтобы собрать и поставить могли только гики-красноглазики. за 8 лет активного использования linux я как-то привык уже, что часто надо брать напильник и чинить несовместимости в исходниках. но блин, сделать простой скрипт, который тупо скопирует нужные файлы куда надо ведь можно? играть в угадайку, читая мегатонны кода — это получается не arcade action, а adventure какая-то. %-)
@ 18 July 2008 at 18 July 2008, 23:59
Может я чего-то не понимаю, но после того, как scons все соберет, он создаст два бинаря в том же каталоге: btanks и bted. Первый - игра, а второй - редактор. Что он куда должен копировать? Впрочем, линуксоед из меня тот еще.
[LOR mode]Про FOSS все правильно, никто не спорит. Но кто виноват в этом? Кто автор кучи разных дистрибов линукса, в каждом из которых, хоть что-нибудь, но не так, как в остальных? Кто придумал тыщупиццот разных систем сборки и менеджеров пакетов? Где, черт возьми, тот Единый И Окончательный Стандарт, следуя которому можно на выходе получить код, который будет компилиться и работать без напильника _везде_? Вот пока эту ситуацию кто-нибудь не разрешит, линукс так и будет уделом красноглазых.[/LOR mode]
В общем, это я не к тому, что мы плевать хотели на всех, кто не может допилить программу сам. Просто написать код - это одно. А тестировать его на всех известных дистрах (включая экзотические), собирать дебки и ебилды - этим, уж извините, пусть занимается кто-нибудь другой. У нас ведь тоже есть жизнь в реале.
@ 20 July 2008 at 20 July 2008, 15:53
>после того, как scons все соберет, он создаст два бинаря в том же каталоге: btanks и bted
ага. только они не запускаются. точнее, падают с
./btanks: error while loading shared libraries: libmrt.so: cannot open shared object file: No such file or directory
ну да, я знаю, что есть LD_LIBRARY_PATH. только это, мягко говоря, ни разу не нормально. плюс — я хочу сделать пакет. для чего — поставить игру в /opt/btanks. the question is: как? ручками cp, cp, cp? хотя бы файло со списком того, что копировать и куда — сильно бы помогло.
алсо, я понимаю все резоны. я не понимаю, отчего не сделать цель “install”, которая всё скопирует в prefix/…
и скриптик, который сам LD_LIBRARY_PATH поставит и запустит бинарь. потому что сорить в /usr/local/lib или в /opt/lib я не хочу (особенно если учесть, что “uninstall” отсутствует так же, как и “install”).
а стандарт — он есть. make/scons/jam/что-угодно install — устанавливает программу в $prefix/… то же, но uninstall — удаляет. то же, но с установленым DESTDIR — ставит в $DESTDIR, но так, как будто в $prefix — это для создания пакетов. это стандарт de-facto, и реализовать его не так сложно. autocrap делает это автоматом, от чего я и сказал, что уж лучще autocrap, чем недолюбленый scons, который к тому же бидон требует.
ну и, конечно, выкинуть scons и использовать jam, но это мечты. %-)
@ 20 July 2008 at 20 July 2008, 15:57
вдогон: я бы сам с удовольствием прислал патч для SConstruct, но увы — я не знаю scons. максимум, что могу — это его запустить. где смог — там пропатчил, лапшепатч вот вывалил здесь. кстати, неплохо бы его допилить и интегрировать; далеко не все g++ умеют складывать строки.
@ 20 July 2008 at 20 July 2008, 17:43
Hi, just to report that I compiled sucessfully with patch, but that is only with portage, when I compile manualy in temp folder I don\’t need patch, so I guess it has something to do with the ebuild that sets gentoo\’s default resource path… But nevermind that I have another problem now, I have wide monitor who don\’t support 800×600 and 1024×768 resolution, I do have modlines in xorg.conf for that but I always have to change config file for games and add some wide resolution, otherwise I get signal out of range. Now, my question is where can I change resolution, bt.xml in ~/.btanks doesn\’t have anything like it. Here is the log I am getting when starting the game -> http://pastebin.com/m52a3ac9c . Thx
@ 20 July 2008 at 20 July 2008, 20:28
Search bt.xml for “engine.window.width” and “engine.window.height” properties.
@ 20 July 2008 at 20 July 2008, 20:44
> Снаряд со смешным центром тяжести
Со смещенным? Или так и задумано? :)
@ 21 July 2008 at 21 July 2008, 1:56
Очень вот заинтересовало вот творение отечественных производителей.
Действительно, согласен с предыдущими ораторами: игру сможет поставить только матерый красноглазик.
Очень плохо что нет инстала
Все скомпилировалось. *.so скопировал в папку с либами. Пытаюсь запустить игру, но никаких окон и тп не открывается
Просто пишет [23:45:09.237][engine/src/config.cpp:274] [debug] cleaning up config…
А в самом логе много всего и вот это
[23:45:09.237][engine/src/window.cpp:540] [debug] shutting down, freeing surface
Тут уже самому трудно разобраться. В чем проблема? Я так понял где-то в SDL =\\\\
@ 21 July 2008 at 21 July 2008, 17:49
Большой трабл игры в случае, если конфигурация с двумя мониторами.
Помимо того, что перекореженное изображение (какое-то “ушедшее” за правую грань правого монитора), так еще и мышка привязывается к программе - пришлось переключаться в консоль и killall btanks.
@ 21 July 2008 at 21 July 2008, 18:01
>игру сможет поставить только матерый красноглазик
Умгу. С ХЗ какого раза получилось. autoconf/configure, по мнению автора, отстой. Но SDL и его компоненты ставятся на счет “раз”. lua - забывает закинуть lua.pc в /usr/lib/pkgconfig, а в конфиге сконса предусмотрен именно поиск lua.pc - иначе lua “в упор” не видит и при линковке (это если engine/SConscript в строке 3241 поменять False на True) вылетает с undefined reference.
Далее, ну собралось оно. А как аналог make install сделать - я ХЗ. И в “документации” вообще не написано. Пришлось прямо из дерева запускать.
Предложение автору:
добавь в “документации” помимо пререквизитов еще и последовательность действий типа:
./configure
make
make install
только в применении к sconsю
И еще было бы неплохо, если бы в “документации” в каждом пункте пререквизитов была бы ссылка на страничку соответствующего проекта. А то где брать lua (да и вообще что это такое?) или smpeg - совсем даже не очевидно.
P. S. А можно заодно сюда какую-нибудь более приятную капчу? Достало. 8 и B трудно отличимы. Равно как и 0 от О.
@ 22 July 2008 at 22 July 2008, 11:07
>lua - забывает закинуть lua.pc в /usr/lib/pkgconfig,
это проблемы вашего дистро, никак не наши.
по поводу установки - если это так важно - то я займусь в ближайшее время. Кстати, из svn не ставит дефолтных lib_dir’ов всяких, и поэтому скорее всего заработает из каталога нормально :) Это наш косяк, согласен.
@ 22 July 2008 at 22 July 2008, 16:10
>>lua - забывает закинуть lua.pc в /usr/lib/pkgconfig,
>это проблемы вашего дистро, никак не наши.
Хммм. Ну, скорее, это проблемы разработчиков lua :
root@r00tnote:/usr/src/lua-5.1.3/etc# ls | grep “lua.pc”
lua.pc
root@r00tnote:/usr/src/lua-5.1.3/etc# cat ./Makefile | grep “lua.pc”
root@r00tnote:/usr/src/lua-5.1.3/etc#
root@r00tnote:/usr/src/lua-5.1.3/etc# cat ../INSTALL | grep “lua.pc”
root@r00tnote:/usr/src/lua-5.1.3/etc#
Я это к тому, что сами разработчики не догадались файлик кинуть. И в документации не предупредили.
Соответственно, вы могли бы предупредить ;-)
Как вариант, просто предусмотреть вариант, когда lua установлен в системе, но “lua.pc” нету.
@ 23 July 2008 at 23 July 2008, 0:36
Урря!!!
Классная игра. Cool game.
При запуске(At start):
./btanks
libGL error: drmGetMagic failed
libGL error: reverting to (slow) indirect rendering
[21:21:41.874][engine/src/config.cpp:274] [debug] cleaning up config…
Что бы это могло быть. Тормозит изрядно.
What is it? Works too slow.
@ 23 July 2008 at 23 July 2008, 6:54
@Ruĝa Suneto:
X and AMD/ATI driver issue. nVidia drivers has alot of ugly hacks to make DRM works right with OpenGL.
@ 25 July 2008 at 25 July 2008, 17:34
Нет описания установки для линукса. Но компилится классно. Опишите хоть что и куда сувать после компиляции.
Хочу заценить таки, качаю версию под виндовс :(
@ 28 July 2008 at 28 July 2008, 9:33
а что, просто ./btanks запустить не получается ? зачем куда-то что-то сувать ? :)
@ 28 July 2008 at 28 July 2008, 9:44
я в пятницу пропатчил билд-систему, в svn версия которая умеет sudo scons install и собирает ресурсы в один файл. :)
@ 13 August 2008 at 13 August 2008, 20:42
Хыхы, оказывается оно в одном каталоге всё должно быть :) Осталось понять, что из этого оставить, а что выкинуть.
Игра понравилась. Но есть несколько замечаний/предложений.
Сетевая игра это конечно хорошо, но хочется story-mode/campaign.
У современных разработчиков аркадных игр почему-то появилась нехорошая привычка делать музыкальный трэк с началом и концом, и запускать его покругу, либо, как вы, слепить кучу трэков и запустить эту кашу на любом уровне. Написали бы для каждого типа уровня свою уникальную музычку и сделали бы loop, как в классических аркадах и приставочных и PC, ато напрягает такая тема.
Сама музыка мне очень порнавилась.
Ну и …. :) побольше бы техники и видов оружия.
PS: звук хрипит :(