Git Product home page Git Product logo

mgerhardy / caveexpress Goto Github PK

View Code? Open in Web Editor NEW
142.0 12.0 20.0 710.96 MB

CaveExpress is a classic 2D platformer with physics-based gameplay and dozens of levels. CavePacker is a Sokoban game.

Home Page: http://www.caveproductions.org/

License: Other

Java 0.41% Lua 3.27% Shell 0.03% C 1.75% HTML 0.06% JavaScript 82.73% Python 0.01% NSIS 0.01% C++ 10.96% Objective-C++ 0.01% CMake 0.21% CSS 0.01% GLSL 0.01% Roff 0.01% PLSQL 0.52% Makefile 0.01%
game arcade-game arcade cpp android ios html5-game html5 emscripten cmake

caveexpress's People

Contributors

akien-mga avatar apoleon avatar extrowerk avatar mgerhardy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

caveexpress's Issues

CAVEPACKER: crash in test (ASan)

[ RUN      ] SokobanMapTest.testsasquatch02_0017
==7052==ERROR: AddressSanitizer failed to allocate 0x200002000 (8589942784) bytes of LargeMmapAllocator: 12
==7052==Process memory map follows:
    0x000000400000-0x000001288000   /home/mgerhardy/dev/caveexpress/tests_cavepacker
    0x000001487000-0x000001489000   /home/mgerhardy/dev/caveexpress/tests_cavepacker
    0x000001489000-0x000001563000   /home/mgerhardy/dev/caveexpress/tests_cavepacker
    0x000001563000-0x00000158a000   
    0x00007fff7000-0x00008fff7000   
    0x00008fff7000-0x02008fff7000   
    0x02008fff7000-0x10007fff8000   
    0x600000000000-0x602000000000   
    0x602000000000-0x602001200000   
    0x602001200000-0x603000000000   
    0x603000000000-0x603003b10000   
    0x603003b10000-0x604000000000   
    0x604000000000-0x6040063e0000   
    0x6040063e0000-0x606000000000   
    0x606000000000-0x606000fa0000   
    0x606000fa0000-0x607000000000   
    0x607000000000-0x6070018d0000   
    0x6070018d0000-0x608000000000   
    0x608000000000-0x6080070c0000   
    0x6080070c0000-0x60b000000000   
    0x60b000000000-0x60b000f00000   
    0x60b000f00000-0x60c000000000   
    0x60c000000000-0x60c000330000   
    0x60c000330000-0x60d000000000   
    0x60d000000000-0x60d001050000   
    0x60d001050000-0x60e000000000   
    0x60e000000000-0x60e000230000   
    0x60e000230000-0x60f000000000   
    0x60f000000000-0x60f000290000   
    0x60f000290000-0x610000000000   
    0x610000000000-0x610000430000   
    0x610000430000-0x611000000000   
    0x611000000000-0x611003840000   
    0x611003840000-0x612000000000   
    0x612000000000-0x612006530000   
    0x612006530000-0x613000000000   
    0x613000000000-0x613003bb0000   
    0x613003bb0000-0x614000000000   
    0x614000000000-0x614005cc0000   
    0x614005cc0000-0x615000000000   
    0x615000000000-0x615006bc0000   
    0x615006bc0000-0x616000000000   
    0x616000000000-0x616006e10000   
    0x616006e10000-0x617000000000   
    0x617000000000-0x617001b70000   
    0x617001b70000-0x618000000000   
    0x618000000000-0x6180017c0000   
    0x6180017c0000-0x619000000000   
    0x619000000000-0x619002820000   
    0x619002820000-0x61a000000000   
    0x61a000000000-0x61a001130000   
    0x61a001130000-0x61b000000000   
    0x61b000000000-0x61b0005a0000   
    0x61b0005a0000-0x61c000000000   
    0x61c000000000-0x61c000b90000   
    0x61c000b90000-0x61d000000000   
    0x61d000000000-0x61d000f30000   
    0x61d000f30000-0x61e000000000   
    0x61e000000000-0x61e000330000   
    0x61e000330000-0x61f000000000   
    0x61f000000000-0x61f001610000   
    0x61f001610000-0x620000000000   
    0x620000000000-0x620000220000   
    0x620000220000-0x621000000000   
    0x621000000000-0x6210007b0000   
    0x6210007b0000-0x622000000000   
    0x622000000000-0x6220001c0000   
    0x6220001c0000-0x623000000000   
    0x623000000000-0x623000030000   
    0x623000030000-0x624000000000   
    0x624000000000-0x624001460000   
    0x624001460000-0x625000000000   
    0x625000000000-0x625001ed0000   
    0x625001ed0000-0x626000000000   
    0x626000000000-0x626000020000   
    0x626000020000-0x627000000000   
    0x627000000000-0x627000070000   
    0x627000070000-0x628000000000   
    0x628000000000-0x628000010000   
    0x628000010000-0x629000000000   
    0x629000000000-0x629000e10000   
    0x629000e10000-0x62b000000000   
    0x62b000000000-0x62b000400000   
    0x62b000400000-0x62c000000000   
    0x62c000000000-0x62c000490000   
    0x62c000490000-0x62d000000000   
    0x62d000000000-0x62d000b40000   
    0x62d000b40000-0x62e000000000   
    0x62e000000000-0x62e000020000   
    0x62e000020000-0x630000000000   
    0x630000000000-0x630002870000   
    0x630002870000-0x631000000000   
    0x631000000000-0x631000090000   
    0x631000090000-0x634000000000   
    0x634000000000-0x634000040000   
    0x634000040000-0x640000000000   
    0x640000000000-0x640000003000   
    0x7f480b19c000-0x7f490b19e000   
    0x7f49cb1a2000-0x7f4a5a0b0000   
    0x7f4ad1b0f000-0x7f4add487000   
    0x7f4add48d000-0x7f4add86f000   
    0x7f4add871000-0x7f4add8c1000   
    0x7f4add8c2000-0x7f4addb18000   
    0x7f4addb18000-0x7f4addb23000   /lib/x86_64-linux-gnu/libnss_files-2.19.so
    0x7f4addb23000-0x7f4addd22000   /lib/x86_64-linux-gnu/libnss_files-2.19.so
    0x7f4addd22000-0x7f4addd23000   /lib/x86_64-linux-gnu/libnss_files-2.19.so
    0x7f4addd23000-0x7f4addd24000   /lib/x86_64-linux-gnu/libnss_files-2.19.so
    0x7f4addd24000-0x7f4addd2f000   /lib/x86_64-linux-gnu/libnss_nis-2.19.so
    0x7f4addd2f000-0x7f4addf2e000   /lib/x86_64-linux-gnu/libnss_nis-2.19.so
    0x7f4addf2e000-0x7f4addf2f000   /lib/x86_64-linux-gnu/libnss_nis-2.19.so
    0x7f4addf2f000-0x7f4addf30000   /lib/x86_64-linux-gnu/libnss_nis-2.19.so
    0x7f4addf30000-0x7f4addf47000   /lib/x86_64-linux-gnu/libnsl-2.19.so
    0x7f4addf47000-0x7f4ade146000   /lib/x86_64-linux-gnu/libnsl-2.19.so
    0x7f4ade146000-0x7f4ade147000   /lib/x86_64-linux-gnu/libnsl-2.19.so
    0x7f4ade147000-0x7f4ade148000   /lib/x86_64-linux-gnu/libnsl-2.19.so
    0x7f4ade148000-0x7f4ade14a000   
    0x7f4ade14a000-0x7f4ade153000   /lib/x86_64-linux-gnu/libnss_compat-2.19.so
    0x7f4ade153000-0x7f4ade352000   /lib/x86_64-linux-gnu/libnss_compat-2.19.so
    0x7f4ade352000-0x7f4ade353000   /lib/x86_64-linux-gnu/libnss_compat-2.19.so
    0x7f4ade353000-0x7f4ade354000   /lib/x86_64-linux-gnu/libnss_compat-2.19.so
    0x7f4ade354000-0x7f4ae065a000   
    0x7f4ae065a000-0x7f4ae0670000   /lib/x86_64-linux-gnu/libgcc_s.so.1
    0x7f4ae0670000-0x7f4ae086f000   /lib/x86_64-linux-gnu/libgcc_s.so.1
    0x7f4ae086f000-0x7f4ae0870000   /lib/x86_64-linux-gnu/libgcc_s.so.1
    0x7f4ae0870000-0x7f4ae0871000   /lib/x86_64-linux-gnu/libgcc_s.so.1
    0x7f4ae0871000-0x7f4ae0a2b000   /lib/x86_64-linux-gnu/libc-2.19.so
    0x7f4ae0a2b000-0x7f4ae0c2a000   /lib/x86_64-linux-gnu/libc-2.19.so
    0x7f4ae0c2a000-0x7f4ae0c2e000   /lib/x86_64-linux-gnu/libc-2.19.so
    0x7f4ae0c2e000-0x7f4ae0c30000   /lib/x86_64-linux-gnu/libc-2.19.so
    0x7f4ae0c30000-0x7f4ae0c35000   
    0x7f4ae0c35000-0x7f4ae0c4e000   /lib/x86_64-linux-gnu/libpthread-2.19.so
    0x7f4ae0c4e000-0x7f4ae0e4d000   /lib/x86_64-linux-gnu/libpthread-2.19.so
    0x7f4ae0e4d000-0x7f4ae0e4e000   /lib/x86_64-linux-gnu/libpthread-2.19.so
    0x7f4ae0e4e000-0x7f4ae0e4f000   /lib/x86_64-linux-gnu/libpthread-2.19.so
    0x7f4ae0e4f000-0x7f4ae0e53000   
    0x7f4ae0e53000-0x7f4ae0f58000   /lib/x86_64-linux-gnu/libm-2.19.so
    0x7f4ae0f58000-0x7f4ae1157000   /lib/x86_64-linux-gnu/libm-2.19.so
    0x7f4ae1157000-0x7f4ae1158000   /lib/x86_64-linux-gnu/libm-2.19.so
    0x7f4ae1158000-0x7f4ae1159000   /lib/x86_64-linux-gnu/libm-2.19.so
    0x7f4ae1159000-0x7f4ae1249000   /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20
    0x7f4ae1249000-0x7f4ae1449000   /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20
    0x7f4ae1449000-0x7f4ae1451000   /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20
    0x7f4ae1451000-0x7f4ae1453000   /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20
    0x7f4ae1453000-0x7f4ae1468000   
    0x7f4ae1468000-0x7f4ae146b000   /lib/x86_64-linux-gnu/libdl-2.19.so
    0x7f4ae146b000-0x7f4ae166a000   /lib/x86_64-linux-gnu/libdl-2.19.so
    0x7f4ae166a000-0x7f4ae166b000   /lib/x86_64-linux-gnu/libdl-2.19.so
    0x7f4ae166b000-0x7f4ae166c000   /lib/x86_64-linux-gnu/libdl-2.19.so
    0x7f4ae166c000-0x7f4ae170c000   /usr/lib/x86_64-linux-gnu/libasan.so.1.0.0
    0x7f4ae170c000-0x7f4ae190c000   /usr/lib/x86_64-linux-gnu/libasan.so.1.0.0
    0x7f4ae190c000-0x7f4ae190e000   /usr/lib/x86_64-linux-gnu/libasan.so.1.0.0
    0x7f4ae190e000-0x7f4ae190f000   /usr/lib/x86_64-linux-gnu/libasan.so.1.0.0
    0x7f4ae190f000-0x7f4ae2548000   
    0x7f4ae2548000-0x7f4ae256b000   /lib/x86_64-linux-gnu/ld-2.19.so
    0x7f4ae2576000-0x7f4ae273f000   
    0x7f4ae273f000-0x7f4ae276a000   
    0x7f4ae276a000-0x7f4ae276b000   /lib/x86_64-linux-gnu/ld-2.19.so
    0x7f4ae276b000-0x7f4ae276c000   /lib/x86_64-linux-gnu/ld-2.19.so
    0x7f4ae276c000-0x7f4ae276d000   
    0x7ffc9dc90000-0x7ffc9dcc8000   [stack]
    0x7ffc9ddc1000-0x7ffc9ddc3000   [vdso]
    0x7ffc9ddc3000-0x7ffc9ddc5000   [vvar]
    0xffffffffff600000-0xffffffffff601000   [vsyscall]
==7052==End of process memory map.
==7052==AddressSanitizer CHECK failed: ../../../../src/libsanitizer/sanitizer_common/sanitizer_posix.cc:66 "(("unable to mmap" && 0)) != (0)" (0x0, 0x0)
    #0 0x7f4ae16c9050 (/usr/lib/x86_64-linux-gnu/libasan.so.1+0x5d050)
    #1 0x7f4ae16cd2b3 in __sanitizer::CheckFailed(char const*, int, char const*, unsigned long long, unsigned long long) (/usr/lib/x86_64-linux-gnu/libasan.so.1+0x612b3)
    #2 0x7f4ae16d2121 (/usr/lib/x86_64-linux-gnu/libasan.so.1+0x66121)
    #3 0x7f4ae1688b28 (/usr/lib/x86_64-linux-gnu/libasan.so.1+0x1cb28)
    #4 0x7f4ae16c40d6 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.1+0x580d6)
    #5 0x7f4ae121c668 in std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xc3668)
    #6 0x7f4ae121d30a in std::string::_Rep::_M_clone(std::allocator<char> const&, unsigned long) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xc430a)
    #7 0x7f4ae121d3bf in std::string::reserve(unsigned long) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xc43bf)
    #8 0x7f4ae121d4b7 in std::string::append(std::string const&) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0xc44b7)
    #9 0x8cc977 in cavepacker::Map::getSolution() const /home/mgerhardy/dev/caveexpress/src/cavepacker/server/map/Map.cpp:134
    #10 0x8d0333 in cavepacker::Map::load(std::string const&) /home/mgerhardy/dev/caveexpress/src/cavepacker/server/map/Map.cpp:537
    #11 0x7e84d0 in cavepacker::SokobanMapTest::testMap(std::string const&, bool) (/home/mgerhardy/dev/caveexpress/tests_cavepacker+0x7e84d0)
    #12 0x7e7ea1 in cavepacker::SokobanMapTest::testSingleMap(std::string const&, bool) /home/mgerhardy/dev/caveexpress/src/cavepacker/tests/SokobanMapTest.cpp:32
    #13 0x7bcba7 in cavepacker::SokobanMapTest_testsasquatch02_0017_Test::TestBody() /home/mgerhardy/dev/caveexpress/src/cavepacker/tests/SokobanMapTest.cpp:823
    #14 0xfceb67 in void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/mgerhardy/dev/caveexpress/src/libs/gtest/src/gtest.cc:2063
    #15 0xfc8bf6 in void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/mgerhardy/dev/caveexpress/src/libs/gtest/src/gtest.cc:2116
    #16 0xfa7bd6 in testing::Test::Run() /home/mgerhardy/dev/caveexpress/src/libs/gtest/src/gtest.cc:2136
    #17 0xfa8695 in testing::TestInfo::Run() /home/mgerhardy/dev/caveexpress/src/libs/gtest/src/gtest.cc:2311
    #18 0xfa8e6d in testing::TestCase::Run() /home/mgerhardy/dev/caveexpress/src/libs/gtest/src/gtest.cc:2418
    #19 0xfb211d in testing::internal::UnitTestImpl::RunAllTests() /home/mgerhardy/dev/caveexpress/src/libs/gtest/src/gtest.cc:4222
    #20 0xfd00ed in bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/mgerhardy/dev/caveexpress/src/libs/gtest/src/gtest.cc:2063
    #21 0xfc9bfa in bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/mgerhardy/dev/caveexpress/src/libs/gtest/src/gtest.cc:2116
    #22 0xfb0197 in testing::UnitTest::Run() /home/mgerhardy/dev/caveexpress/src/libs/gtest/src/gtest.cc:3835
    #23 0x8a579c in RUN_ALL_TESTS() /home/mgerhardy/dev/caveexpress/src/libs/gtest/include/gtest/gtest.h:2257
    #24 0x8a5509 in main /home/mgerhardy/dev/caveexpress/src/tests/TestAll.cpp:105
    #25 0x7f4ae0892ec4 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21ec4)
    #26 0x774678 (/home/mgerhardy/dev/caveexpress/tests_cavepacker+0x774678)

CAVEPACKER: segfault after restoring the game on android

Scanning dependencies of target android-cavepacker-backtrace
********** Crash dump: **********
Build fingerprint: 'samsung/m0xx/m0:4.3/JSS15J/I9300XXUGNG3:user/release-keys'
pid: 19446, tid: 19922, name: SDLThread  >>> org.cavepacker <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000
Stack frame #00  pc 000ebcda  /data/app-lib/org.cavepacker-1/libcavepacker.so (ServiceProvider::updateNetwork(bool)+45)
Stack frame #01  pc 000a67b1  /data/app-lib/org.cavepacker-1/libcavepacker.so (SDLBackend::mainLoop(int, char**)+376)
Stack frame #02  pc 00099bab  /data/app-lib/org.cavepacker-1/libcavepacker.so (SDL_main+314)
Stack frame #03  pc 00125ed7  /data/app-lib/org.cavepacker-1/libcavepacker.so (Java_org_libsdl_app_SDLActivity_nativeInit+190)
Stack frame #04  pc 0001e44c  /system/lib/libdvm.so (dvmPlatformInvoke+112)
Stack frame #05  pc 0004e91b  /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+398)
Stack frame #06  pc 00027860  /system/lib/libdvm.so
Stack frame #07  pc 0002be00  /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
Stack frame #08  pc 00060a6d  /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+292)
Stack frame #09  pc 00060a97  /system/lib/libdvm.so (dvmCallMethod(Thread*, Method const*, Object*, JValue*, ...)+20)
Stack frame #10  pc 0005582b  /system/lib/libdvm.so
Stack frame #11  pc 0000cb58  /system/lib/libc.so (__thread_entry+72)
Stack frame #12  pc 0000ccd4  /system/lib/libc.so (pthread_create+208)

# warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" with glibc 2.20

I get such warnings at each compilation step with glibc 2.20:

In file included from /usr/include/assert.h:35:0,
                 from src/engine/common/Pointers.h:5,
                 from src/engine/common/Common.h:4,
                 from src/engine/common/ports/Unix.h:4,
                 from src/engine/common/ports/Unix.cpp:1:
/usr/include/features.h:148:3: warning: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" [-Wcpp]
 # warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
   ^

It seems you just need to define _DEFAULT_SOURCE to fix this warning, see (among other sources):
https://ghc.haskell.org/trac/ghc/ticket/9185
http://permalink.gmane.org/gmane.comp.version-control.git/257209

Caveexpress: release tarball should include a LICENSE file and full license text

Currently the release tarball does not inculde a LICENSE file and neither the full license text of the GPL-3 or CC-BY-SA-4.0. README.md contains some information but it is not 100% clear what files are covered under which license.

I suggest to add a LICENSE file which contains a text similar to this one:

Copyright 2014-2015, Martin Gerhardy [email protected]

This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 3 of the License, or (at your option) any later
version.
.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
.
You should have received a copy of the GNU General Public License along with
this package; if not, write to the Free Software Foundation, Inc., 51 Franklin
St, Fifth Floor, Boston, MA 02110-1301 USA

All artwork and assets are licensed under the Creative Commons Attribution-ShareAlike 4.0 International license (CC-BY-SA-4.0). This includes artwork, music and sounds in the png, ogg, [...] format.

Please add directories or other formats as appropriate.

In addition this project incorporates third party software which is differently licensed:

Files: src/libs/cJSON/*
Copyright: 2009, Dave Gamble
License: MIT/Expat

Files: src/libs/SDL/include/*
Copyright: 2013-2014, The Khronos Group Inc.
License: MIT/Expat

Files: src/caveexpress/server/entities/Buoyancy.h
Copyright: 2006-2011, Erin Catto http://www.box2d.org
License: zlib

Files: src/libs/micropather/*
Copyright: 2000-2009, Lee Thomason (www.grinninglizard.com)
License: zlib

Please also add the full license text of the GPL-3 and CC-BY-SA-4.0 license to the repository and the release tarball.

CAVEPACKER: google play feedback

In Ordnung... Gebe 3 Sterne. Der Grund: Wenn man die Tasten berührt verrutscht ein wenig das gesamte Level und man muss es immer wieder in die Mitte zurück ziehen, das ist störend. Wünschen würde ich mir das man die Tasten zum bewegen auch gedrückt halten könnte. Grafik soweit ok. Bei Behebung gebe ich gerne 5 Sterne.

LUA issues in debug builds that are not in release builds

********** Crash dump: **********
Build fingerprint: 'samsung/m0xx/m0:4.3/JSS15J/I9300XXUGNG3:user/release-keys'
pid: 18636, tid: 18730, name: SDLThread  >>> org.caveexpress <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000008
Stack frame #00  pc 00379422  /data/app-lib/org.caveexpress-1/libcaveexpress.so (luaH_getint+17)
Stack frame #01  pc 00365141  /data/app-lib/org.caveexpress-1/libcaveexpress.so (lua_rawgeti+36)
Stack frame #02  pc 003502f9  /data/app-lib/org.caveexpress-1/libcaveexpress.so (LUA::getTableString(int)+56)
Stack frame #03  pc 0035a41d  /data/app-lib/org.caveexpress-1/libcaveexpress.so (SpriteDefinition::init(TextureDefinition const&)+1600)
Stack frame #04  pc 00273461  /data/app-lib/org.caveexpress-1/libcaveexpress.so (SDLBackend::handleInit()+972)
Stack frame #05  pc 002735d3  /data/app-lib/org.caveexpress-1/libcaveexpress.so (SDLBackend::runFrame()+22)
Stack frame #06  pc 00273969  /data/app-lib/org.caveexpress-1/libcaveexpress.so (SDLBackend::mainLoop(int, char**)+256)
Stack frame #07  pc 00211441  /data/app-lib/org.caveexpress-1/libcaveexpress.so (SDL_main+276)
Stack frame #08  pc 003a95b1  /data/app-lib/org.caveexpress-1/libcaveexpress.so (Java_org_libsdl_app_SDLActivity_nativeInit+300)
Stack frame #09  pc 0001e44c  /system/lib/libdvm.so (dvmPlatformInvoke+112)
Stack frame #10  pc 0004e91b  /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+398)
Stack frame #11  pc 000505d1  /system/lib/libdvm.so (dvmResolveNativeMethod(unsigned int const*, JValue*, Method const*, Thread*)+256)
Stack frame #12  pc 00027860  /system/lib/libdvm.so
Stack frame #13  pc 0002be00  /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
Stack frame #14  pc 00060a6d  /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+292)
Stack frame #15  pc 00060a97  /system/lib/libdvm.so (dvmCallMethod(Thread*, Method const*, Object*, JValue*, ...)+20)
Stack frame #16  pc 0005582b  /system/lib/libdvm.so
Stack frame #17  pc 0000cb58  /system/lib/libc.so (__thread_entry+72)
Stack frame #18  pc 0000ccd4  /system/lib/libc.so (pthread_create+208)
Crash dump is completed
********** Crash dump: **********
Build fingerprint: 'samsung/m0xx/m0:4.3/JSS15J/I9300XXUGNG3:user/release-keys'
pid: 20038, tid: 20099, name: SDLThread  >>> org.cavepacker <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadbaad
Stack frame #00  pc 0001e824  /system/lib/libc.so
Stack frame #01  pc 0001c76c  /system/lib/libc.so (abort+4)
Stack frame #02  pc 002b1f61  /data/app-lib/org.cavepacker-1/libcavepacker.so (luaD_throw+172)
Stack frame #03  pc 002b1c7d  /data/app-lib/org.cavepacker-1/libcavepacker.so (luaG_errormsg+104)
Stack frame #04  pc 002b1ccf  /data/app-lib/org.cavepacker-1/libcavepacker.so (luaG_runerror+78)
Stack frame #05  pc 002b1a39  /data/app-lib/org.cavepacker-1/libcavepacker.so (luaG_typeerror+56)
Stack frame #06  pc 002c46dd  /data/app-lib/org.cavepacker-1/libcavepacker.so (luaV_gettable+164)
Stack frame #07  pc 002add77  /data/app-lib/org.cavepacker-1/libcavepacker.so (lua_getfield+90)
Stack frame #08  pc 0029affd  /data/app-lib/org.cavepacker-1/libcavepacker.so (LUA::getValueStringFromTable(char const*, String const&)+52)
Stack frame #09  pc 002093eb  /data/app-lib/org.cavepacker-1/libcavepacker.so (FontDefinition::FontDefinition()+894)
Stack frame #10  pc 001f44ff  /data/app-lib/org.cavepacker-1/libcavepacker.so (Singleton<FontDefinition>::getInstance()+54)
Stack frame #11  pc 001f1a17  /data/app-lib/org.cavepacker-1/libcavepacker.so (UI::init(ServiceProvider&, EventHandler&, IFrontend&)+1642)
Stack frame #12  pc 001e33b7  /data/app-lib/org.cavepacker-1/libcavepacker.so (SDLFrontend::initUI(ServiceProvider&)+122)
Stack frame #13  pc 001ce12f  /data/app-lib/org.cavepacker-1/libcavepacker.so (SDLBackend::handleInit()+1122)
Stack frame #14  pc 001ce20b  /data/app-lib/org.cavepacker-1/libcavepacker.so (SDLBackend::runFrame()+22)
Stack frame #15  pc 001ce5a1  /data/app-lib/org.cavepacker-1/libcavepacker.so (SDLBackend::mainLoop(int, char**)+256)
Stack frame #16  pc 001af70d  /data/app-lib/org.cavepacker-1/libcavepacker.so (SDL_main+276)
Stack frame #17  pc 002f22d1  /data/app-lib/org.cavepacker-1/libcavepacker.so (Java_org_libsdl_app_SDLActivity_nativeInit+300)
Stack frame #18  pc 0001e44c  /system/lib/libdvm.so (dvmPlatformInvoke+112)
Stack frame #19  pc 0004e91b  /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+398)
Stack frame #20  pc 000505d1  /system/lib/libdvm.so (dvmResolveNativeMethod(unsigned int const*, JValue*, Method const*, Thread*)+256)
Stack frame #21  pc 00027860  /system/lib/libdvm.so
Stack frame #22  pc 0002be00  /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
Stack frame #23  pc 00060a6d  /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+292)
Stack frame #24  pc 00060a97  /system/lib/libdvm.so (dvmCallMethod(Thread*, Method const*, Object*, JValue*, ...)+20)
Stack frame #25  pc 0005582b  /system/lib/libdvm.so
Stack frame #26  pc 0000cb58  /system/lib/libc.so (__thread_entry+72)
Stack frame #27  pc 0000ccd4  /system/lib/libc.so (pthread_create+208)

CAVEPACKER: solutions

The following maps don't have a valid solution

  • microban01_0154
  • microban01_0155
  • microban02_0133
  • sasquatch01_0015
  • sasquatch01_0017
  • sasquatch01_0031
  • sasquatch01_0047
  • sasquatch01_0049
  • sasquatch02_0009
  • sasquatch02_0017
  • sasquatch02_0023
  • sasquatch02_0038
  • sasquatch02_0039
  • sasquatch02_0040
  • sasquatch02_0046
  • sasquatch02_0050
  • sasquatch03_0029
  • sasquatch03_0041
  • sasquatch03_0042
  • sasquatch03_0050
  • sasquatch04_0043
  • sasquatch04_0044
  • sasquatch04_0049
  • sasquatch05_0027
  • sasquatch05_0048
  • sasquatch06_0040
  • sasquatch06_0047
  • sasquatch08_0010
  • sasquatch08_0035
  • sasquatch08_0036
  • sasquatch08_0038
  • sasquatch08_0047
  • sasquatch08_0048
  • sasquatch08_0049
  • sasquatch09_0031

Build system clean doesn't wipe all files

dpkg-source: info: local changes detected, the modified files are:
caveexpress-2.3/Makefile.local
caveexpress-2.3/base/caveexpress/textures/complete.lua
caveexpress-2.3/linux-config.h
caveexpress-2.3/scale
caveexpress-2.3/src/caveexpress/dir.h
caveexpress-2.3/src/engine/common/ports/project.rc

Source tarball releases for code+data and data-source

I think the current tarball release for caveexpress and cavepacker is adequate as soon as

#10

is resolved. I suggest to improve the other tarball, contrib-assets-png.tar.xz, by adding all artwork assets to it (compressed gimp files and others). This will increase the download size to approximately ~500 MB. Nevertheless I think this will be very convenient for users who want to modify artwork and contribute to additional levels for caveexpress and cavepacker. If such a tarball with artwork sources existed, I would prominently promote this one in the Debian package of caveexpress and cavepacker. Besides the "artwork-source-tarball" would rarely need updates hence I think it is maintainable.

Odroid C1 build problems (armv7, OPENGL ES)

Build fails on Linux against a gles-only SDL2:

For some reason, even though LDFLAGS=-ldl is passed to make -j4 I'm getting these:

Linking CXX executable ../../../../jsonconvert
/usr/bin/ld.bfd.real: ../../../Debug/lib/liblua5.2.a(loadlib.c.o): undefined reference to symbol 'dlsym@@GLIBC_2.4'
//lib/arm-linux-gnueabihf/libdl.so.2: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [../jsonconvert] Error 1
make[1]: *** [src/caveexpress/tools/CMakeFiles/jsonconvert.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 53%] [ 53%] Building CXX object src/caveexpress/tools/CMakeFiles/soundmapper.dir/SoundMapper.cpp.o
Building CXX object src/modules/ui/CMakeFiles/ui.dir/nodes/IUINodeEntitySelector.cpp.o
[ 54%] Building CXX object src/modules/ui/CMakeFiles/ui.dir/nodes/IUINodeSpriteSelector.cpp.o
Linking CXX executable ../../../../soundmapper
/usr/bin/ld.bfd.real: ../../../Debug/lib/liblua5.2.a(loadlib.c.o): undefined reference to symbol 'dlsym@@GLIBC_2.4'
//lib/arm-linux-gnueabihf/libdl.so.2: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [../soundmapper] Error 1
make[1]: *** [src/caveexpress/tools/CMakeFiles/soundmapper.dir/all] Error 2

and afterwards the build finally fails with:

Linking CXX static library ../../../Debug/lib/libui.a
[ 65%] Built target ui
make: *** [all] Error 2

Doing a make -j4 and then after the above dlsym errors finishing with LDFLAGS=-ldl make ends with:

In file included from ../../../../src/modules/gfx/GL1Frontend.cpp:16:0:
../../../../src/modules/gfx/GLShared.h:35:36: error: ‘translateError’ declared as an ‘inline’ variable
 inline const char* translateError (GLenum glError)
                                    ^
../../../../src/modules/gfx/GLShared.h:35:36: error: ‘GLenum’ was not declared in this scope
../../../../src/modules/gfx/GLShared.h:36:1: error: expected ‘,’ or ‘;’ before ‘{’ token
 {
 ^
make[2]: *** [src/modules/gfx/CMakeFiles/gfx.dir/GL1Frontend.cpp.o] Error 1
make[1]: *** [src/modules/gfx/CMakeFiles/gfx.dir/all] Error 2
make: *** [all] Error 2

Sound doesn't work (Linux/Debian)

ERROR: 2015/01/25-11:34:42 ERROR: (LOG_CLIENT) unable to load sound file
click: Mix_LoadWAV_RW with NULL src
ERROR: 2015/01/25-11:34:42 ERROR: (LOG_CLIENT) unable to load music
file: music-2

Gameplay physics regression

Dropping packages makes them stop in mid-air above ground and if very close to the shredder they continue in a slow-motion jerky movement towards it.
It seems something broke not more than 10 days ago - when I first had a look at the game around that time on x86 all was well.

Switching the build system to cmake

This issue is for tracking the status of switching to another build system.

It would be great if it were possible to build caveexpress and cavepacker and the corresponding HTML5 versions in one step by configuring build flags to build either one of them or all together without having to call the configure or build targets multiple times in a row as it is currently the case.

CAVEPACKER: AddressSanitizer heap-buffer-overflow in BoardState

INFO: 2015/09/26-12:09:43 pushwindow => map
INFO: 2015/09/26-12:09:43 activewindow => map
INFO: 2015/09/26-12:09:43 mapload => tutorial0003
INFO: (LOG_CLIENT): load map tutorial0003
INFO: (LOG_CLIENT): client map reset
INFO: (LOG_SERVER): spawn client 1
ERROR: (LOG_MAP): no player found for the client id 1
INFO: (LOG_SERVER): init player 125
ERROR: (LOG_UI): could not get the node with the id seconds from window map
ERROR: (LOG_UI): could not get the node with the id seconds from window map
INFO: (LOG_CLIENT): init client map for player 125
INFO: (LOG_SERVER): spawned player 125
INFO: (LOG_UI): got best points from server: 0
INFO: (LOG_CAMPAIGN): campaign tutorial last map time: 0
WARN: (LOG_CLIENT): could not find entity with the id 125 in updateEntity
INFO: (LOG_CLIENT): client map start
INFO: (LOG_UI): Display text 'tutorial0003' for 3000 ms
1443262210979   addons.xpi  WARN    Attempting to activate an already active default theme
1443262210980   addons.xpi  WARN    Attempting to activate an already active default theme
INFO: (LOG_SERVER): move player 125 from 6:2 to 16:-2
=================================================================
==6172==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6070001d94ca at pc 0x5ed223 bp 0x7ffd6a76a970 sp 0x7ffd6a76a960
READ of size 1 at 0x6070001d94ca thread T0
    #0 0x5ed222 in cavepacker::BoardState::getColRowFromIndex(int, int&, int&) const /home/mgerhardy/dev/caveexpress/src/cavepacker/server/map/BoardState.h:109
    #1 0x5e0eff in cavepacker::Map::isAt(cavepacker::IEntity*, int) const /home/mgerhardy/dev/caveexpress/src/cavepacker/server/map/Map.cpp:245
    #2 0x618ee6 in cavepacker::Player::update(unsigned int) /home/mgerhardy/dev/caveexpress/src/cavepacker/server/entities/Player.cpp:26
    #3 0x5e7e47 in cavepacker::Map::visitEntity(cavepacker::IEntity*) /home/mgerhardy/dev/caveexpress/src/cavepacker/server/map/Map.cpp:874
    #4 0x5e9fdb in cavepacker::Map::visitEntities(cavepacker::IEntityVisitor*, EntityType const&) /home/mgerhardy/dev/caveexpress/src/cavepacker/server/map/Map.cpp:1023
    #5 0x5e8d5e in cavepacker::Map::update(unsigned int) /home/mgerhardy/dev/caveexpress/src/cavepacker/server/map/Map.cpp:936
    #6 0x5b81c7 in cavepacker::CavePacker::update(unsigned int) /home/mgerhardy/dev/caveexpress/src/cavepacker/main/CavePacker.cpp:119
    #7 0x64816f in SDLBackend::runFrame() /home/mgerhardy/dev/caveexpress/src/modules/server/SDLBackend.cpp:319
    #8 0x648cd9 in SDLBackend::mainLoop(int, char**) /home/mgerhardy/dev/caveexpress/src/modules/server/SDLBackend.cpp:362
    #9 0x5ddcf2 in main /home/mgerhardy/dev/caveexpress/src/Main.cpp:28
    #10 0x7f77c1321ec4 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21ec4)
    #11 0x5911e8 (/home/mgerhardy/dev/caveexpress/cavepacker+0x5911e8)

0x6070001d94ca is located 6 bytes to the left of 66-byte region [0x6070001d94d0,0x6070001d9512)
allocated by thread T0 here:
    #0 0x7f77c417413f in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.1+0x5813f)
    #1 0x610d8e in __gnu_cxx::new_allocator<char>::allocate(unsigned long, void const*) /usr/include/c++/4.9/ext/new_allocator.h:104
    #2 0x610b43 in std::allocator_traits<std::allocator<char> >::allocate(std::allocator<char>&, unsigned long) /usr/include/c++/4.9/bits/alloc_traits.h:357
    #3 0x610201 in std::_Vector_base<char, std::allocator<char> >::_M_allocate(unsigned long) (/home/mgerhardy/dev/caveexpress/cavepacker+0x610201)
    #4 0x60fb37 in std::_Vector_base<char, std::allocator<char> >::_M_create_storage(unsigned long) /usr/include/c++/4.9/bits/stl_vector.h:185
    #5 0x60f2c3 in std::_Vector_base<char, std::allocator<char> >::_Vector_base(unsigned long, std::allocator<char> const&) /usr/include/c++/4.9/bits/stl_vector.h:136
    #6 0x60fda2 in std::vector<char, std::allocator<char> >::vector(unsigned long, char const&, std::allocator<char> const&) /usr/include/c++/4.9/bits/stl_vector.h:291
    #7 0x60f3d8 in std::vector<char, std::allocator<char> >::_M_fill_assign(unsigned long, char const&) /usr/include/c++/4.9/bits/vector.tcc:230
    #8 0x60ef8c in std::vector<char, std::allocator<char> >::assign(unsigned long, char const&) (/home/mgerhardy/dev/caveexpress/cavepacker+0x60ef8c)
    #9 0x60d7a0 in cavepacker::BoardState::setSize(int, int) /home/mgerhardy/dev/caveexpress/src/cavepacker/server/map/BoardState.cpp:29
    #10 0x5e3f8a in cavepacker::Map::load(std::string const&) /home/mgerhardy/dev/caveexpress/src/cavepacker/server/map/Map.cpp:536
    #11 0x5b8e00 in cavepacker::CavePacker::mapLoad(std::string const&) /home/mgerhardy/dev/caveexpress/src/cavepacker/main/CavePacker.cpp:198
    #12 0x64ac37 in SDLBackend::loadMap(std::string const&) /home/mgerhardy/dev/caveexpress/src/modules/server/SDLBackend.cpp:540
    #13 0x660d41 in CommandFunctor<SDLBackend>::run(std::vector<String, std::allocator<String> > const&) /home/mgerhardy/dev/caveexpress/src/modules/common/ICommand.h:126
    #14 0x7f8710 in CommandSystem::executeCommand(std::string const&, std::vector<String, std::allocator<String> >) const /home/mgerhardy/dev/caveexpress/src/modules/common/CommandSystem.cpp:92
    #15 0x7f835d in CommandSystem::executeCommandLine(std::string const&) const /home/mgerhardy/dev/caveexpress/src/modules/common/CommandSystem.cpp:77
    #16 0x7aa119 in CampaignManager::startMap(std::string const&) /home/mgerhardy/dev/caveexpress/src/modules/campaign/CampaignManager.cpp:412
    #17 0x7a9f98 in CampaignManager::continuePlay() /home/mgerhardy/dev/caveexpress/src/modules/campaign/CampaignManager.cpp:394
    #18 0x7144ff in ContinuePlayNodeListener::onClick() /home/mgerhardy/dev/caveexpress/src/modules/ui/windows/main/ContinuePlayNodeListener.h:34
    #19 0x6e6229 in UINode::execute() /home/mgerhardy/dev/caveexpress/src/modules/ui/nodes/UINode.cpp:918
    #20 0x6e5df7 in UINode::onMouseLeftRelease(int, int) /home/mgerhardy/dev/caveexpress/src/modules/ui/nodes/UINode.cpp:899
    #21 0x6e49f8 in UINode::onMouseButtonRelease(int, int, unsigned char) /home/mgerhardy/dev/caveexpress/src/modules/ui/nodes/UINode.cpp:806
    #22 0x6e483f in UINode::onMouseButtonRelease(int, int, unsigned char) /home/mgerhardy/dev/caveexpress/src/modules/ui/nodes/UINode.cpp:798
    #23 0x6e483f in UINode::onMouseButtonRelease(int, int, unsigned char) /home/mgerhardy/dev/caveexpress/src/modules/ui/nodes/UINode.cpp:798
    #24 0x71f1e9 in UIWindow::onMouseButtonRelease(int, int, unsigned char) /home/mgerhardy/dev/caveexpress/src/modules/ui/windows/UIWindow.cpp:150
    #25 0x6bdc8b in UI::onMouseButtonRelease(int, int, unsigned char) /home/mgerhardy/dev/caveexpress/src/modules/ui/UI.cpp:476
    #26 0x7d3ed7 in EventHandler::mouseButtonRelease(int, int, unsigned char) /home/mgerhardy/dev/caveexpress/src/modules/common/EventHandler.cpp:303
    #27 0x7d0854 in EventHandler::handleEvent(SDL_Event&) /home/mgerhardy/dev/caveexpress/src/modules/common/EventHandler.cpp:74
    #28 0x6454ec in SDLBackend::handleEvent(SDL_Event&) /home/mgerhardy/dev/caveexpress/src/modules/server/SDLBackend.cpp:108
    #29 0x647b3a in SDLBackend::runFrame() /home/mgerhardy/dev/caveexpress/src/modules/server/SDLBackend.cpp:301

SUMMARY: AddressSanitizer: heap-buffer-overflow /home/mgerhardy/dev/caveexpress/src/cavepacker/server/map/BoardState.h:109 cavepacker::BoardState::getColRowFromIndex(int, int&, int&) const
Shadow bytes around the buggy address:
  0x0c0e80033240: fd fa fa fa fa fa fd fd fd fd fd fd fd fd fd fa
  0x0c0e80033250: fa fa fa fa fd fd fd fd fd fd fd fd fd fa fa fa
  0x0c0e80033260: fa fa fd fd fd fd fd fd fd fd fd fa fa fa fa fa
  0x0c0e80033270: 00 00 00 00 00 00 00 00 00 fa fa fa fa fa fd fd
  0x0c0e80033280: fd fd fd fd fd fd fd fa fa fa fa fa fd fd fd fd
=>0x0c0e80033290: fd fd fd fd fd fa fa fa fa[fa]00 00 00 00 00 00
  0x0c0e800332a0: 00 00 02 fa fa fa fa fa fd fd fd fd fd fd fd fd
  0x0c0e800332b0: fd fa fa fa fa fa fd fd fd fd fd fd fd fd fd fa
  0x0c0e800332c0: fa fa fa fa fd fd fd fd fd fd fd fd fd fa fa fa
  0x0c0e800332d0: fa fa fd fd fd fd fd fd fd fd fd fa fa fa fa fa
  0x0c0e800332e0: fd fd fd fd fd fd fd fd fd fd fa fa fa fa fd fd
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Heap right redzone:      fb
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack partial redzone:   f4
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Contiguous container OOB:fc
  ASan internal:           fe
==6172==ABORTING

Lua crash at startup (x86 & arm, release & debug)

After showing the splash screen the game aborts:

INFO: (LOG_BACKEND): next init state: 1
INFO: (LOG_BACKEND): init frontend creation
INFO: (LOG_CLIENT): Use frontend sdl
INFO: (LOG_BACKEND): next init state: 2
INFO: (LOG_BACKEND): init sdl
INFO: (LOG_BACKEND): next init state: 3
INFO: (LOG_BACKEND): init frontend
INFO: (LOG_CLIENT): initializing: -1:-1 - fullscreen: true
INFO: (LOG_CLIENT): no joysticks found
INFO: (LOG_CLIENT): found 0 touch device(s)
INFO: (LOG_CLIENT): 0 haptic devices
INFO: (LOG_CLIENT): no rumble support
INFO: (LOG_CLIENT): current desktop mode: 1280x1024@59Hz (SDL_PIXELFORMAT_RGB888)
ERROR: (LOG_CLIENT): unknown error (/home/odroid/SDLFrontend.cpp:701 => virtual void SDLFrontend::setGLAttributes())
ERROR: (LOG_CLIENT): unknown error (/home/odroid/SDLFrontend.cpp:703 => virtual void SDLFrontend::setGLAttributes())
ERROR: (LOG_CLIENT): unknown error (/home/odroid/SDLFrontend.cpp:705 => virtual void SDLFrontend::setGLAttributes())
ERROR: (LOG_CLIENT): unknown error (/home/odroid/SDLFrontend.cpp:715 => virtual void SDLFrontend::setGLAttributes())
ERROR: (LOG_CLIENT): unknown error (/home/odroid/SDLFrontend.cpp:717 => virtual void SDLFrontend::setGLAttributes())
ERROR: (LOG_CLIENT): unknown error (/home/odroid/SDLFrontend.cpp:719 => virtual void SDLFrontend::setGLAttributes())
INFO: (LOG_CLIENT): doublebuffer: disabled
INFO: (LOG_CLIENT): available driver: x11
INFO: (LOG_CLIENT): available driver: mir
INFO: (LOG_CLIENT): available driver: dummy
INFO: (LOG_CLIENT): driver: x11
INFO: (LOG_CLIENT): found 1 display(s)
INFO: (LOG_CLIENT): init sdl renderer
INFO: (LOG_CLIENT): available renderer opengles2
INFO: (LOG_CLIENT): available renderer opengles
INFO: (LOG_CLIENT): available renderer software
INFO: (LOG_CLIENT): try sdl renderer: opengles2
INFO: (LOG_CLIENT): actual renderer opengles2
INFO: (LOG_CLIENT): max texture resolution: 4096:4096
INFO: (LOG_CLIENT): possible display modes:
INFO: (LOG_CLIENT): 1280x1024@59Hz SDL_PIXELFORMAT_RGB888
INFO: (LOG_CLIENT): actual resolution: 1280x1024
INFO: (LOG_CLIENT): destroy texture loading
INFO: (LOG_CLIENT): soundengine: sdl
INFO: (LOG_CLIENT): available audio driver pulseaudio
INFO: (LOG_CLIENT): available audio driver alsa
INFO: (LOG_CLIENT): available audio driver dsp
INFO: (LOG_CLIENT): available audio driver disk
INFO: (LOG_CLIENT): available audio driver dummy
ERROR: (LOG_CLIENT): Failed to initialize sdl mixer with ogg support
INFO: (LOG_CLIENT): actual audio driver: pulseaudio
INFO: (LOG_CLIENT): sound initialized
INFO: (LOG_BACKEND): next init state: 4
INFO: (LOG_BACKEND): init the serviceprovider
INFO: (LOG_NET): init the network layer
INFO: (LOG_GENERAL): switching to loopback
INFO: (LOG_NET): init the network layer (local)
INFO: (LOG_BACKEND): initialize the texture definition
INFO: (LOG_CLIENT): loaded 719 texture definitions
INFO: (LOG_MAP): loaded 104 maps
INFO: (LOG_COMMANDS): register command listmaps
INFO: (LOG_BACKEND): initialized the serviceprovider
INFO: (LOG_GENERAL): shutting down the network
INFO: (LOG_GENERAL): switching to loopback
INFO: (LOG_NET): init the network layer (local)
INFO: (LOG_BACKEND): next init state: 5
INFO: (LOG_BACKEND): init sprites
ERROR: (LOG_LUA): Lua panic. Error message: bad argument #-1 (number has no integer representation)
Aborted

I can see from the above log you are using the word 'actual' in the sense of 'current'.
And btw, the actual log comes from arm/gles so the unknown frontend errors are not specific to this issue.

Resuming maps doesn't work

On the first run it's possible to finish a number of successive maps without a problem.
Exiting and trying to resume the last map does nothing except for playing the click sound.

For example:
INFO: INFO (LOG_CAMPAIGN): start map introducing-03-tree
INFO: INFO (LOG_MAP): load map introducing-03-tree
INFO: INFO (LOG_LUA): (null): [string "maps/introducing-03-tree.lua"] -1
INFO: INFO (LOG_LUA): (null): [string "maps/introducing-03-tree.lua"] 3
INFO: INFO (LOG_LUA): (null): [string "maps/introducing-03-tree.lua"] 1
INFO: INFO (LOG_LUA): (null): [string "maps/introducing-03-tree.lua"] 6
INFO: INFO (LOG_LUA): (null): [string "maps/introducing-03-tree.lua"] 5
INFO: INFO (LOG_LUA): (null): [string "maps/introducing-03-tree.lua"] 179
INFO: INFO (LOG_LUA): (null): [string "maps/introducing-03-tree.lua"] 8
INFO: INFO (LOG_LUA): (null): [string "maps/introducing-03-tree.lua"] 179
INFO: INFO (LOG_LUA): (null): [string "maps/introducing-03-tree.lua"] -1
INFO: INFO (LOG_LUA): (null): [string "maps/introducing-03-tree.lua"] -1
INFO: INFO (LOG_LUA): (null): [string "maps/introducing-03-tree.lua"] 2
INFO: INFO (LOG_LUA): (null): [string "maps/introducing-03-tree.lua"] -1
INFO: INFO (LOG_SERVER): Load map with title introducing-03-tree
INFO: INFO (LOG_LUA): (null): [string "maps/introducing-03-tree.lua"] -1
INFO: INFO (LOG_LUA): (null): [string "maps/introducing-03-tree.lua"] 10
INFO: INFO (LOG_LUA): field get: [C] -1
INFO: INFO (LOG_LUA): field get: [C] -1
.
.
.
INFO: INFO (LOG_LUA): (null): [string "maps/introducing-03-tree.lua"] 156
INFO: INFO (LOG_LUA): method addEmitter: [C] -1
INFO: INFO (LOG_LUA): method addEmitter: [C] -1
INFO: INFO (LOG_LUA): (null): [string "maps/introducing-03-tree.lua"] 158
ERROR: ERROR (LOG_LUA): [string "maps/introducing-03-tree.lua"]:158: attempt to perform arithmetic on a nil value (global 'npc')
ERROR: ERROR (LOG_MAP): failed to load the map introducing-03-tree
INFO: INFO (LOG_BACKEND): failed to load map introducing-03-tree

Android linker issues

logcat output

E/AndroidRuntime(14607): FATAL EXCEPTION: SDLThread
E/AndroidRuntime(14607): java.lang.UnsatisfiedLinkError: Native method not found: org.libsdl.app.SDLActivity.nativeInit:(Ljava/lang/Object;)I
E/AndroidRuntime(14607): at org.libsdl.app.SDLActivity.nativeInit(Native Method)
E/AndroidRuntime(14607): at org.libsdl.app.SDLMain.run(SDLActivity.java:936)
E/AndroidRuntime(14607): at java.lang.Thread.run(Thread.java:841)

Caveexpress release tarball version 2.3 contains prebuilt windows binary

Hi,

as promised the remaining issues are reported as issues for the github bug tracker.

While packaging caveexpress for Debian, I discovered that the source tarball release of caveexpress, 2.3, contains a prebuilt windows binary.

/contrib/installer/windows/plugins/game.dll

Please remove all binaries from the source tarball. Debian requires source for all distributed software and games.dll is not accompanied by any.

COMMON: AddressSanitizer: heap-use-after-free in Network.cpp:406

{code}

==12075==ERROR: AddressSanitizer: heap-use-after-free on address 0x6040000aa5e0 at pc 0x7256d2 bp 0x7ffe62ed4350 sp 0x7ffe62ed4340
READ of size 4 at 0x6040000aa5e0 thread T0
#0 0x7256d1 in Network::sendUDP(UDPsocket, IPaddress const&, IProtocolMessage const&) /home/mgerhardy/dev/caveexpress/src/modules/network/Network.cpp:407
#1 0x723b13 in Network::update(unsigned int) /home/mgerhardy/dev/caveexpress/src/modules/network/Network.cpp:234
#2 0x62db6c in SDLBackend::runFrame() /home/mgerhardy/dev/caveexpress/src/modules/server/SDLBackend.cpp:317
#3 0x62e37c in SDLBackend::mainLoop(int, char_*) /home/mgerhardy/dev/caveexpress/src/modules/server/SDLBackend.cpp:362
#4 0x5d68a5 in main /home/mgerhardy/dev/caveexpress/src/Main.cpp:28
#5 0x7fc8fed4da3f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x20a3f)
#6 0x590568 in _start (/home/mgerhardy/dev/caveexpress/cavepacker+0x590568)

0x6040000aa5e0 is located 16 bytes inside of 40-byte region [0x6040000aa5d0,0x6040000aa5f8)
freed by thread T0 here:
#0 0x7fc900fa35af in _interceptor_free (/usr/lib/x86_64-linux-gnu/libasan.so.1+0x575af)
#1 0x72564a in Network::sendUDP(UDPsocket, IPaddress const&, IProtocolMessage const&) /home/mgerhardy/dev/caveexpress/src/modules/network/Network.cpp:406
#2 0x723b13 in Network::update(unsigned int) /home/mgerhardy/dev/caveexpress/src/modules/network/Network.cpp:234
#3 0x62db6c in SDLBackend::runFrame() /home/mgerhardy/dev/caveexpress/src/modules/server/SDLBackend.cpp:317
#4 0x62e37c in SDLBackend::mainLoop(int, char
*) /home/mgerhardy/dev/caveexpress/src/modules/server/SDLBackend.cpp:362
#5 0x5d68a5 in main /home/mgerhardy/dev/caveexpress/src/Main.cpp:28
#6 0x7fc8fed4da3f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x20a3f)

previously allocated by thread T0 here:
#0 0x7fc900fa3827 in __interceptor_malloc (/usr/lib/x86_64-linux-gnu/libasan.so.1+0x57827)
#1 0x7fc9005790c1 in SDLNet_AllocPacket (/usr/lib/x86_64-linux-gnu/libSDL2_net-2.0.so.0+0x20c1)

SUMMARY: AddressSanitizer: heap-use-after-free /home/mgerhardy/dev/caveexpress/src/modules/network/Network.cpp:407 Network::sendUDP(_UDPsocket*, IPaddress const&, IProtocolMessage const&)
Shadow bytes around the buggy address:
0x0c088000d460: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c088000d470: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c088000d480: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c088000d490: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c088000d4a0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
=>0x0c088000d4b0: fa fa fa fa fa fa fa fa fa fa fd fd[fd]fd fd fa
0x0c088000d4c0: fa fa 00 00 00 00 00 fa fa fa 00 00 00 00 00 00
0x0c088000d4d0: fa fa fd fd fd fd fd fa fa fa 00 00 00 00 00 04
0x0c088000d4e0: fa fa 00 00 00 00 00 04 fa fa 00 00 00 00 07 fa
0x0c088000d4f0: fa fa 00 00 00 00 00 04 fa fa 00 00 00 00 00 06
0x0c088000d500: fa fa 00 00 00 00 00 fa fa fa 00 00 00 00 00 07
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Heap right redzone: fb
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack partial redzone: f4
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Contiguous container OOB:fc
ASan internal: fe
==12075==ABORTING
{code}

SDL 2.0.3 support

Currently your configure script is looking for SDL_opengl_glext.h [1] to check for SDL2. The problem is that this header is only part of the current development branch of SDL2, it's not included in the latest stable release, SDL 2.0.3.

I just wanted to check whether this is a strict requirement (in which case it could be good to state it in the README) or if you just used this header to make sure that you find SDL2 and not SDL 1.2?
If it's the latter, it would be nice to find a better solution since the current build system is broken with stable SDL2.

[1] https://github.com/mgerhardy/caveexpress/blob/master/configure#L265

LIBS: src/libs/gtest should be removed from the source tarball

We have already discussed this library but I now think that this one can be omitted from the source tarball as well. Debian and other distributions already provide the same files as a -dev package and since caveexpress does not link in any way against a shared version of gtest, src/libs/gtest can be successfully replaced by Debian's version of gtest and code duplication can be avoided

Game doesn't start @16bpp

If 24bpp is required a more informative error message would come in handy :)

On the arm/gles platform I'm getting this:

INFO: (LOG_CLIENT): current desktop mode: 1280x1024@59Hz (SDL_PIXELFORMAT_RGB565)
ERROR: (LOG_CLIENT): unknown error (/media/odroid/caveexpress/src/modules/gfx/SDLFrontend.cpp:701 => virtual void SDLFrontend::setGLAttributes())
ERROR: (LOG_CLIENT): unknown error (/media/odroid/caveexpress/src/modules/gfx/SDLFrontend.cpp:703 => virtual void SDLFrontend::setGLAttributes())
ERROR: (LOG_CLIENT): unknown error (/media/odroid/caveexpress/src/modules/gfx/SDLFrontend.cpp:705 => virtual void SDLFrontend::setGLAttributes())
ERROR: (LOG_CLIENT): unknown error (/media/odroid/caveexpress/src/modules/gfx/SDLFrontend.cpp:715 => virtual void SDLFrontend::setGLAttributes())
ERROR: (LOG_CLIENT): unknown error (/media/odroid/caveexpress/src/modules/gfx/SDLFrontend.cpp:717 => virtual void SDLFrontend::setGLAttributes())
ERROR: (LOG_CLIENT): unknown error (/media/odroid/caveexpress/src/modules/gfx/SDLFrontend.cpp:719 => virtual void SDLFrontend::setGLAttributes())
INFO: (LOG_CLIENT): doublebuffer: disabled
INFO: (LOG_CLIENT): available driver: x11
INFO: (LOG_CLIENT): available driver: mir
INFO: (LOG_CLIENT): available driver: dummy
INFO: (LOG_CLIENT): driver: x11
INFO: (LOG_CLIENT): found 1 display(s)
X Error of failed request:  BadWindow (invalid Window parameter)
  Major opcode of failed request:  4 (X_DestroyWindow)
  Resource id in failed request:  0x3000002
  Serial number of failed request:  154
  Current serial number in output stream:  154

Building issue with GCC 4.9.2 on Linux

Hi there,

I'm getting the following issue when building caveexpress (master, i.e. f6d54f1) on Mageia 5 (development version) with GCC 4.9.2 (pre-release).

In file included from src/engine/common/CommandSystem.h:3:0, from src/engine/common/IConsole.h:4, from src/engine/common/Logger.h:3, from src/engine/common/IMap.h:4, from src/engine/common/SpriteDefinition.h:8, from src/engine/common/SpriteDefinition.cpp:1: src/engine/common/ICommand.h:137:33: error: expected unqualified-id before 'new' #define bind(className, method) new CommandFunctor<className>(this, &className::method) ^ src/engine/common/ICommand.h:137:33: error: expected unqualified-id before 'new' #define bind(className, method) new CommandFunctor<className>(this, &className::method) ^ Makefile:213: recipe for target 'debug-caveexpress-linux-x86_64/cavebot/engine/common/SpriteDefinition.cpp.o' failed

Here is a complete build log: http://paste.fedoraproject.org/134653/41106016/

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.