После пяти лет месяцев непосильного труда…

С момента выхода 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. Мак-юзеры, к сожалению, пока остаются без билда. Но мы помним о вас.

6015 Responses to “После пяти лет месяцев непосильного труда…”

  1. Вован Says:

    Молодцы! Дома скачаю!

  2. Florian Says:

    Hi there,

    compiles fine on debian/gnu linux amd64 but starting it gets my monitor “out of frequency” :)

  3. Gio/Wiidark Says:

    OMG, finally! After waiting sooo long, it finally came out! I’m sooo happy! I’m gonna download it ASAP!

  4. whoozle Says:

    >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″

  5. angry luser Says:

    хорошая игра… наверное. мало того, что под gcc 4.1.2 без напильника не собралась (ладно, пропатчил, дело нехитрое), так её ещё и установить нельзя. scons install как-то не фурычит, а учить дебильный бидон и не менее дебильный scons… избавьте. у меня есть жизнь в реале.

    хинт: а положить в архив файлик, где написано, как ставить — и не было бы проблем.

  6. Milan Says:

    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.

  7. Milan Says:

    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

  8. angry luser Says:

    >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. %-)

  9. private_face Says:

    angry loser,
    для установки напишите “scons”. просто “scons”, забудьте про дебильные install’ы.
    Файлик с инструкциями по установке внутри есть, он называется README-linux.txt.

  10. private_face Says:

    Milan, how about expat, g++ and other required packages? Read carefully file README-linux.txt especially section 3 and 4.

  11. Milan Says:

    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.

  12. Milan Says:

    heh, I just saw patch that angry luser posted, sorry, I will try it and will report if it works.

  13. private_face Says:

    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.

  14. angry luser Says:

    @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 умеет, если руки у авторов из верного места.

  15. angry luser Says:

    я всё это не к тому, что программа фигня или авторы мне что-то должны. я к тому, что весь FOSS вот такой ерундой болен: хоть где-то, хоть как-то, но грабли положить. чтобы собрать и поставить могли только гики-красноглазики. за 8 лет активного использования linux я как-то привык уже, что часто надо брать напильник и чинить несовместимости в исходниках. но блин, сделать простой скрипт, который тупо скопирует нужные файлы куда надо ведь можно? играть в угадайку, читая мегатонны кода — это получается не arcade action, а adventure какая-то. %-)

  16. private_face Says:

    Может я чего-то не понимаю, но после того, как scons все соберет, он создаст два бинаря в том же каталоге: btanks и bted. Первый - игра, а второй - редактор. Что он куда должен копировать? Впрочем, линуксоед из меня тот еще.

    [LOR mode]Про FOSS все правильно, никто не спорит. Но кто виноват в этом? Кто автор кучи разных дистрибов линукса, в каждом из которых, хоть что-нибудь, но не так, как в остальных? Кто придумал тыщупиццот разных систем сборки и менеджеров пакетов? Где, черт возьми, тот Единый И Окончательный Стандарт, следуя которому можно на выходе получить код, который будет компилиться и работать без напильника _везде_? Вот пока эту ситуацию кто-нибудь не разрешит, линукс так и будет уделом красноглазых.[/LOR mode]

    В общем, это я не к тому, что мы плевать хотели на всех, кто не может допилить программу сам. Просто написать код - это одно. А тестировать его на всех известных дистрах (включая экзотические), собирать дебки и ебилды - этим, уж извините, пусть занимается кто-нибудь другой. У нас ведь тоже есть жизнь в реале.

  17. angry luser Says:

    >после того, как 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, но это мечты. %-)

  18. angry luser Says:

    вдогон: я бы сам с удовольствием прислал патч для SConstruct, но увы — я не знаю scons. максимум, что могу — это его запустить. где смог — там пропатчил, лапшепатч вот вывалил здесь. кстати, неплохо бы его допилить и интегрировать; далеко не все g++ умеют складывать строки.

  19. Milan Says:

    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. private_face Says:

    Search bt.xml for “engine.window.width” and “engine.window.height” properties.

  21. Igron Says:

    > Снаряд со смешным центром тяжести

    Со смещенным? Или так и задумано? :)

  22. fk_ Says:

    Очень вот заинтересовало вот творение отечественных производителей.
    Действительно, согласен с предыдущими ораторами: игру сможет поставить только матерый красноглазик.
    Очень плохо что нет инстала

    Все скомпилировалось. *.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 =\\\\

  23. R00T Says:

    Большой трабл игры в случае, если конфигурация с двумя мониторами.
    Помимо того, что перекореженное изображение (какое-то “ушедшее” за правую грань правого монитора), так еще и мышка привязывается к программе - пришлось переключаться в консоль и killall btanks.

  24. R00T Says:

    >игру сможет поставить только матерый красноглазик

    Умгу. С ХЗ какого раза получилось. 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 от О.

  25. whoozle Says:

    >lua - забывает закинуть lua.pc в /usr/lib/pkgconfig,
    это проблемы вашего дистро, никак не наши.

    по поводу установки - если это так важно - то я займусь в ближайшее время. Кстати, из svn не ставит дефолтных lib_dir’ов всяких, и поэтому скорее всего заработает из каталога нормально :) Это наш косяк, согласен.

  26. R00T Says:

    >>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” нету.

  27. Ruĝa Suneto Says:

    Урря!!!
    Классная игра. 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.

  28. angry luser Says:

    @Ruĝa Suneto:
    X and AMD/ATI driver issue. nVidia drivers has alot of ugly hacks to make DRM works right with OpenGL.

  29. Kroll Says:

    Нет описания установки для линукса. Но компилится классно. Опишите хоть что и куда сувать после компиляции.
    Хочу заценить таки, качаю версию под виндовс :(

  30. whoozle Says:

    а что, просто ./btanks запустить не получается ? зачем куда-то что-то сувать ? :)

  31. whoozle Says:

    я в пятницу пропатчил билд-систему, в svn версия которая умеет sudo scons install и собирает ресурсы в один файл. :)

  32. Kroll Says:

    Хыхы, оказывается оно в одном каталоге всё должно быть :) Осталось понять, что из этого оставить, а что выкинуть.

    Игра понравилась. Но есть несколько замечаний/предложений.

    Сетевая игра это конечно хорошо, но хочется story-mode/campaign.

    У современных разработчиков аркадных игр почему-то появилась нехорошая привычка делать музыкальный трэк с началом и концом, и запускать его покругу, либо, как вы, слепить кучу трэков и запустить эту кашу на любом уровне. Написали бы для каждого типа уровня свою уникальную музычку и сделали бы loop, как в классических аркадах и приставочных и PC, ато напрягает такая тема.
    Сама музыка мне очень порнавилась.

    Ну и …. :) побольше бы техники и видов оружия.

    PS: звук хрипит :(

Leave a Reply

You must be logged in to post a comment.