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!

5773 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: