After five years months of hard work and million sleepless nights…

Five months and 1679 commits passed since build 0.7.5800 has been published. Finally we decided that we should no longer wait for release, and we must publish it ASAP. But the code is not yet free of bugs, and we present an intermediate build 0.8-RC1. It has so many new features that our small team needs your help in testing it.

Here is a brief list of innovations:


  • Ability to play in teams. Two new modes: Team DeathMatch and Capture the Flag.
  • World-wide-internet-network game. We have established three servers that are available across the planet; each one serves one type of network game (CTF, TDM and good old Cooperative). Currently, the servers are in test mode, but everybody may connect: just click Scan button in Join the Game menu and find in a list.
  • Enthusiasts may set up their own standalone servers.

Video and Audio

  • Thanks to our D3dSDL library, BTanks for Microsoft® Windows™ now use DirectX™® and not OpenGL™. This has really increased the overall performance.
  • Screen resolutions are now taken from SDL.
  • We no longer support OpenAL because we have our own Clunk library now.
  • Some new sounds are added.

Controls and Gameplay

  • The effect of slowing/speeding-up is eliminated.
  • Diagonal shooting is improved (yeah we did that!).
  • Shilka looked a bit boring, so we have improved its turret: now it rotates and self-aims.
  • Grenades and mortair missiles now fly over obstacles.
  • Frags are counted better; a telefrag trick is added (if two people enter the same teleport, only the last one survives).
  • Join/leave/death messages are sent to chat automatically. Messages from players are coloured according to colors of teams.


  • A new ‘Four Rooms’ map is added for CTF anf TDM.
  • The map editor is now shipped with the game. It is still user-unfriendly. We are not sorry.
  • Timers and OBEY effect are added to scripts to help controlling objects with LUA. Now scripting is much more powerful!

An incremental network protocol, a new serialization model, compression with dictionary made it possible to decrease network traffic in times! All code is ported to g++ 4.3. All game resources are packed into a single resources.dat file (DEB, RPM and other ebuilds builders must be happy). sigc++ is no longer used because we now have our own library. Random number generator is improved.

Phew… These are only the most important things, so if you want to find out more–see the changelog. And we look forward to your bugreports!

P.S. Oh, dear Mac users, you will unfortunately have to wait for the new build. But we do remember you!

6015 Responses to “After five years months of hard work and million sleepless nights…”

  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


  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;
    if (mrt::FSNode::is_dir(dname) || dir.exists(rname)) {
    //LOG_DEBUG((”data_dir = %s”, 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.
    } 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”;
    std::string dname = “data”;
    std::string rname = “resources.dat”;

    if (mrt::FSNode::is_dir(dname) || dir.exists(rname)) {
    +#ifdef PLUGINS_DIR
    + std::string xxname = PLUGINS_DIR;
    + xxname += “/data”;
    _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.

    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:

    >Файлик с инструкциями по установке внутри есть, он называется 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: 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 -> . 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 сделать - я ХЗ. И в “документации” вообще не написано. Пришлось прямо из дерева запускать.

    Предложение автору:
    добавь в “документации” помимо пререквизитов еще и последовательность действий типа:
    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”
    root@r00tnote:/usr/src/lua-5.1.3/etc# cat ./Makefile | grep “lua.pc”
    root@r00tnote:/usr/src/lua-5.1.3/etc# cat ../INSTALL | grep “lua.pc”

    Я это к тому, что сами разработчики не догадались файлик кинуть. И в документации не предупредили.
    Соответственно, вы могли бы предупредить ;-)
    Как вариант, просто предусмотреть вариант, когда lua установлен в системе, но “lua.pc” нету.

  27. Ruĝa Suneto Says:

    Классная игра. Cool game.

    При запуске(At start):

    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:

    I’ve patched scons scripts so “scons install” works now.

  32. Kroll Says:

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

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

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

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

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

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

Leave a Reply

You must be logged in to post a comment.