Dev snapshot build 0.4.dev-20120326-24953ba
April 5th, 2012 by celeron55https://github.com/downloads/celeron55/minetest/minetest-0.4.dev-20120326-24953ba-win32.zip
Just a few minor fixes, but anyway.
https://github.com/downloads/celeron55/minetest/minetest-0.4.dev-20120326-24953ba-win32.zip
Just a few minor fixes, but anyway.
Here’s a random unversioned snapshot build I made using a mingw cross-compiler:
minetest-0.4.dev-20120326-b9b56ba-win32.zip (github)
It’s larger and slower (than MSVC-built ones) and doesn’t support Direct3D (because the Irrlicht guys are lazy), but it’s goddamn easy to build; no need for Windows or any crap like that. I’ll probably make these as the snapshot builds in the future.
Altough not having an actual version number, this one is pretty stable (as far as development snapshots go); feel free to use it.
Compared to the previous snapshot, it contains a boatload of things and changes. Most notably:
- Sound support added
- The map generator has been replaced with a different kind of one
- Added the privileges 'fly' and 'fast' and the underlying framework. They are disabled by default in the singleplayer mode; to get them, use "/grant singleplayer fly,fast", or set the configuration setting "default_privs = shout,interact,fly,fast"
- Mods can define additional privileges
- Mods can replace the default world/auth.txt authentication handler
- Improved Lua API for adding chat commands; they are also included in /help
- Improved some chat commands (check out /help)
- Leaf decay
- Mods can use the ABM nodename "group:<name-of-group>" to trigger on certain groups. Check out the leaf decay code for an example.
- This existed in the previous ones too, but I think it wasn't mentioned: You can get a chat console for improved chatting and command input by pressing F10. (largely contributed by kahrl.)
EDIT: Oh, yeah - it has doors too.
I built it using this full cross-build script that I made yesterday.
Package maintainers ahoy!
I have split the Minetest source repository in two parts:
https://github.com/celeron55/minetest
https://github.com/celeron55/minetest_game
This is to allow working more freely on the game content, which involves adding and removing and tuning binary blobs. The minetest_game repository will be periodically cleaned as it’s history grows too much in size.
The minetest repository will stay the same as before, except that it will no more contain the full game. It contains the current game content renamed as “The minimal development test”, gameid=minimal, which will be cleaned over time and extended to minimally test new engine features as they are developed.
Just took the time to update the Modding API reference and the
Map format specification of Minetest.
The map format specification had been for a long time quite out-of-date and incomplete. However, now it should allow anyone to read and write Minetest worlds without ever seeing the source code.
Here are links to the same files that will be updated in the future.
Minetest has never worked reliably when built on MinGW, causing very odd memory corruption in under a minute, for which, even while having been investigated multiple times, a fix was never found.
Well, now there is a fix.
Minetest was converting strings to floats using std::istringstream. With results like these:
http://paste.dy.fi/yeY http://paste.dy.fi/ybc http://paste.dy.fi/yGZ http://paste.dy.fi/wDX http://paste.dy.fi/whn http://paste.dy.fi/Gtt http://paste.dy.fi/fKk http://paste.dy.fi/yeY http://paste.dy.fi/ybc http://paste.dy.fi/yGZ http://paste.dy.fi/fKk
Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 5572.0x11b0] 0x77c3330c in msvcrt!__argc () from C:\WINDOWS\system32\msvcrt.dll
What you are seeing is basically segfaults all over the place, in Windows’ DLLs and whatnot. And…
Well, yesterday, it took me six hours of backporting patches to build old versions of Minetest under MinGW, randomly coming up with ideas, recalling past investigations and trying out things.
I found the very early commit (combined with the next one that fixes it to be buildable) (it’s actually the 4th one ever committed) that introduced the problem. Minetest has always been built using MSVC on Windows, thus it had gone unnoticed for like forever. It’s a relatively large (2800 lines of diff) but innocious-looking commit.
The commits add the VoxelManipulator class, they implement the BlockEmergeQueue and add an in-case-of-bugs triggering of the EmergeThread. The first one is not used yet. Disabling the triggering doesn’t get rid of the bug.
After trying a number of things, nothing helped.
I started to wonder if it was a MinGW incompatibility with the distributed Irrlicht.dll. Wasn’t.
…Then the multiple occurrences of Settings::getFloat in the backtraces finally catched my eye. getFloat looked like this:
float getFloat(std::string name) { float f; std::istringstream vis(get(name)); vis>>f; return f; }
It felt complete nonsense, but I replaced the contents with some dummy code and once again started testing the thing… to find out that it did not fail.
By testing a number of things, I found out that by replacing the istringstream stuff with a simple atof() fixed the problem.
Needless to say, the same modification could be applied to the latest github master version, in a slightly different place, and it worked.
So, to fix this:
inline float mystof(std::string s) { float f; std::istringstream ss(s); ss>>f; return f; }
You just:
inline float mystof(std::string s) { return atof(s.c_str()); }
I think this might have something to do with that function being called by threaded code.
Maybe the MinGW guys should get to know this. Dunno; I won’t bother poking them though. If somebody wants to, feel free to.