Time Nick Message 02:18 Zeno` who's awake? 02:19 Zeno` https://github.com/minetest/minetest/blob/master/src/threading/thread.h#L160 02:19 Zeno` I am changing that to #ifndef USE_CPP11_THREADS 02:19 Zeno` will merge in 10 02:20 Zeno` http://dpaste.com/0PAR0KZ 02:20 Zeno` hmmmm ^ 02:21 hmmmm that's shadowninja's mistake, not mine 02:23 Zeno` Not saying it was your mistake :) 02:23 Zeno` Just.. I dunno. Doesn't need approval to merge 'cause it's trivial so I have no idea why I pinged you now 02:24 hmmmm right, THAT is the kind of commit that shouldn't require peer review 02:42 * sofar rubs eyes 02:44 sofar I need someone else to test the mumble positional audio patch in a sec - I have a mumble server ready for it 02:49 Wayward_One ShadowNinja: http://dev.minetest.net/Android should probably be updated now 02:55 Wayward_One ...or anyone else who knows what needs to be added, for that matter 02:58 Zeno` Wayward_One, not much has changed :) 02:59 Zeno` actually nothing has changed 02:59 Zeno` http://dev.minetest.net/index.php?title=Android&action=history 03:00 Wayward_One I mean since the latest change to gradle 03:02 Zeno` oh, sorry 03:03 Wayward_One No problem :) 03:52 gregorycu This windows file shit is a mess 03:56 Zeno` We could just drop Windows support 03:56 Zeno` :) 04:13 gregorycu ReplaceFile creates a temporary file, replaces temporary file with the old file, rename new to where old used to be, then deletes the temporary file 04:14 gregorycu However, if foobar looks at the temporary file while it tries the second step, it fails 04:14 gregorycu HOW FUCKING RETARDED IS THIS 04:15 sofar system("del foo") ? 04:17 gregorycu del foobar you mean? 04:18 Zeno` or write your own implementation using tmpfile() 04:18 gregorycu This feels like shit we should have to worry about 04:18 Zeno` It does 04:23 Zeno` I've removed the milestone because this bug has been around for a long long time 04:24 Zeno` if it can be fixed in time it can, otherwise... I dunno 04:24 Zeno` I wonder if it's also the cause of slow performance of single-player on Windows 04:24 Zeno` (referring to kahrl's comment) 04:25 gregorycu Is singleplayer slow on windows? 04:25 Zeno` gregorycu, apparently 04:25 Zeno` there is an open issue regarding it 04:25 gregorycu # ? 04:26 hmmmm is there a way to change a constructor into a macro without having to change any syntax? 04:27 Zeno` gregorycu, #2145 04:27 ShadowBot https://github.com/minetest/minetest/issues/2145 -- Multi-second lag in default singleplayer game 04:27 hmmmm AutoLock lock(m_mutex); <--- get __FILE__ and __LINE__ here, log time spent acquiring the lock in some global stats counter 04:27 hmmmm I'm interested in how much contention there is 04:28 Zeno` gregorycu, sorry; that's not Windows only 04:28 gregorycu Can't you make AutoLock report how long it waited? 04:28 hmmmm report where though 04:30 gregorycu What platform are you on? 04:30 hmmmm me?? why 04:30 hmmmm this would be for windows 04:30 gregorycu With visual studio, you can print information to the debug window 04:31 hmmmm yes I know, it's DbgPrintEx or something 04:31 hmmmm it'd be information overload 04:31 hmmmm besides, you can't make any sense out of it unless you had the location of the lock 04:32 gregorycu Ahh right, now I understand why you want a macro 04:32 hmmmm not only would it be nice in general todo, but it'd help determine if anything like that could be the cause of slowness in singleplayer 04:33 gregorycu Yeah 04:33 hmmmm could be acquiring a global resource shared by two gamedefs that's the problem 04:33 gregorycu There is a contention profiler in visual studio 04:33 gregorycu Can't recall what version that was added 04:34 hmmmm hmm I have 2013 ultimate on my work computer and it doesn't seem to have that 04:36 gregorycu alt + F2 04:37 gregorycu What available tools does it list? It should be under Performance Wizard 04:37 hmmmm ahhh 04:37 hmmmm CPU Sampling, Instrumentation, .NET Memory allocation, and Resource Contention 04:38 hmmmm i do have it 04:38 gregorycu I don't know how to use it. 04:39 gregorycu Just know it exists :) 05:07 Zeno` ==6666== the cost of reduced accuracy of conflicting-access information 05:07 Zeno` ==6666== ERROR SUMMARY: 20962 errors from 106 contexts (suppressed: 524553 from 248) 05:08 gregorycu What is that? 05:09 hmmmm two satanic verses 05:09 Zeno` possible race conditions detected by joining an existing minimal singleplayer game and exiting 05:10 Zeno` using helgrind 05:10 gregorycu Indeed 05:10 gregorycu I suppose we better just start again then 05:13 Zeno` ok 05:15 Zeno` lots in on::ReliablePacketBuffer::popSeqnum 05:17 gregorycu With regards to our rename file woes, I'm thinking about calling the very low level winapi functions 05:18 gregorycu Honestly, I'd rather think about pathfinding 05:18 gregorycu That's how much I don't want to look at this 05:24 gregorycu hmmmm: Do you have some contention results for us? 05:27 Zeno` what's a good threshold for locks? 05:27 Zeno` I mean max time 05:27 Zeno` i.e. Lock on mutex 0x4221930 was held during 14 ms (threshold: 10 ms) 05:28 Zeno` should I increase the 10ms? 05:29 Zeno` I'll leave it actually because it kind of depends 05:32 gregorycu huh? 05:32 gregorycu What do you mean, max time? 05:32 gregorycu Oh, for reporting purposes 05:32 Zeno` yeah, for detecting/reporting 05:32 Zeno` for locks that are held a long time 05:33 gregorycu 10ms is an eternity for the GUI thread, but nothing for the emerge thread 05:33 gregorycu It depends 05:33 Zeno` yeah, which is why I changed my mind about changing it :) 05:33 Zeno` "I'll leave it actually because it kind of depends" <-- that's what I meant by that 05:33 gregorycu Ahh right 05:34 gregorycu I had a very quick look on resource contention 05:34 gregorycu In the GUI thread, looks like the allocated contends a little on the GUI thread 05:34 gregorycu Nothing compared to the rest of the app 05:38 * Zeno` compiles without sound enabled 05:40 gregorycu hmmmm,Zeno: I'm going to use MoveFileEx in a loop that attempts 5 times to move the file, with a 1ms sleep 05:40 gregorycu Do we think this solution is ok? 05:42 Zeno` no 05:42 Zeno` because of kahrl's comment 05:43 Zeno` that function is called once every 5 seconds 05:43 gregorycu It won't add 5 ms 05:43 hmmmm gregorycu: no I don't 05:43 gregorycu Well, I'm out of ideas 05:43 hmmmm what's this thing about MoveFileEx now? 05:44 gregorycu We didn't use MoveFileEx because it can fail 05:44 hmmmm is this for the ReplaceFile? 05:44 gregorycu Yes 05:44 hmmmm do you mean safeWriteToFile? 05:45 hmmmm i don't see any function named ReplaceFile there 05:45 gregorycu Yes 05:47 hmmmm so what's the actual issue with the current implementation of safeWriteToFile? 05:47 gregorycu It's complicated 05:48 hmmmm that's it? 05:49 gregorycu I've specified it in #4023 05:49 ShadowBot https://github.com/minetest/minetest/issues/4023 -- New unified favourites can disappear after game exit 05:49 gregorycu When we remove the existing file, windows can defer the delete until later. This causes the rename to fail. 05:49 gregorycu It's deferred because other applications, in this case foobar2000, have opened the file for a very brief period of time in order to query information on it 05:50 gregorycu (Windows explorer would do the same thing if you had the parent folder open) 05:50 gregorycu That was attempted to be fixed in two ways, but they all suffer from related problems 05:51 hmmmm and remove() doesn't immediately fail but rather lies that it didn't fail? 05:51 hmmmm and it fails later on 05:51 gregorycu Well, remove succeeded 05:51 gregorycu It marked the file as "to be deleted" 05:51 gregorycu So, when the last handle of that file is gone, it will be deleted 05:52 gregorycu Maybe it should return a different value, and not o 05:52 gregorycu ok 05:52 gregorycu (Maybe it can't tell it got deferred) 05:53 gregorycu We should certainly move all file operations to their own thread, I would not argue against that 05:53 gregorycu But the question is, what do we do in the short term 05:53 gregorycu For me, the best answer is simple code that retries 05:54 gregorycu The function is for disk IO, the caller should expect sometimes it may take a few ms 05:54 gregorycu (Note, it will only take additional time in the case of failures) 05:54 hmmmm yeah i agree, retrying a couple times is the simple answer 05:54 hmmmm but I wonder if there's some way we can get a waitable object for the file's actual deletion 05:56 gregorycu Well, we can query, but that isn't what you suggested. Not sure if a waitable object of this type exists 05:57 Zeno` maybe there is no other simple option that can be done *right now* so maybe it is the best approach (for now) 05:58 Zeno` I hate the "for now" for anything though 05:58 gregorycu Well, if we were to do it properly 05:58 gregorycu We wouldn't be trying to manage ACID ourselves 05:58 gregorycu And instead rely on a database backend 05:59 Zeno` why try 5 times? 05:59 hmmmm so i don't get it 05:59 hmmmm why must remove() and rename() be used at all? 06:00 gregorycu On windows, rename will fail if the destination file already exists 06:00 hmmmm what's wrong with exactly one MoveFileEx with MOVEFILE_REPLACE_EXISTING | MOVEFILE_WRITE_THROUGH? 06:00 gregorycu Oh 06:00 gregorycu That will fail if some other process has the src filename open 06:00 gregorycu Like Explorer.exe or SearchProtocolHost.exe 06:01 gregorycu For Fixer, it was foobar.exe 06:01 gregorycu foobar200.exe 06:01 hmmmm i know what to do 06:02 gregorycu Here we go 06:02 hmmmm CreateFile with no read share attributes 06:02 gregorycu Yeah, and we don't close the file 06:02 gregorycu I agree 06:02 hmmmm and DELETE_ON_CLOSE 06:02 hmmmm err that's not the right constant name 06:02 gregorycu Do you mean rename? 06:03 gregorycu Open file, write to file, rename file, close file 06:03 gregorycu Means we need to use low level winapi 06:03 hmmmm FILE_FLAG_DELETE_ON_CLOSE 06:03 gregorycu What does that do? 06:03 hmmmm right ok 06:03 gregorycu Well, I know what it does, but how does it help us 06:04 hmmmm well actually i'm not entirely sure, it depends on whether CreateFile blocks or instantly fails when trying to open a file with a share mode of 0 06:04 hmmmm if it blocks, which is what i expect, then we're good 06:06 hmmmm hmm 06:06 gregorycu What do we want to do in the short term? 06:06 hmmmm okay nevermind, it looks like it would fail with ERROR_SHARING_VIOLATION if something already has a handle on it 06:06 hmmmm retry every couple MS 06:06 Zeno` yeah 06:06 Zeno` sounds yuck but there's no other option as you say, gregorycu 06:07 gregorycu There are other options, but probably from calling low level winapi calls ourselves 06:07 hmmmm we could create our own filesystem minifilter driver and do it that way 06:07 Zeno` a friend told me he uses unlink and stat 06:07 Zeno` but I know nothing about Windows programming 06:07 hmmmm gregorycu, not possible 06:07 gregorycu unlink == remove on windows 06:07 hmmmm CreateFile is pretty much the same as NtCreateFile 06:07 Zeno` _unlink ?? 06:08 gregorycu Yeah 06:08 Zeno` hmm 06:08 hmmmm MoveFile and friends are basically variations of NtCreateFile 06:08 gregorycu hmmmm: We can create the temp file, write everything to it, and then rename it and close it 06:09 gregorycu The reason foobar/explorer/etc are hitting the file is because we close it 06:09 gregorycu They open it about the same time we reopen it in order to move it 06:09 gregorycu I think... 06:09 gregorycu I think the reason foobar/explorer/etc are hitting the file is because we close it 06:10 gregorycu Maybe they are hitting it when we create the file... 06:10 gregorycu I don't know 06:11 hmmmm either creating a file or deleting the file, probably both 06:11 hmmmm they're using ReadDirectoryChangesW no doubt 06:11 gregorycu Let's consider SQLite in the future 06:11 hmmmm ha ha ha ha 06:11 hmmmm oh you quack me up 06:11 gregorycu Why? 06:12 hmmmm quack. me. up. 06:12 gregorycu If you want to enlighten me, now is the time 06:13 hmmmm because sqlite databases are non-human-readable binary files 06:13 gregorycu Yeah 06:14 hmmmm besides, sqlite is a bit too hardcore of a solution for something as silly as a favorites list 06:14 gregorycu Right, sorry 06:14 hmmmm didn't realize you were being serious. 06:14 gregorycu I was thinking about the world data 06:14 gregorycu (Which uses the same function) 06:14 hmmmm that's require a lot of rework for very little gain 06:15 hmmmm just do the loop with sleep() 06:16 gregorycu Always been a fan of that, in the short term 06:17 Zeno` it won't make any difference if nothing has the file open anyway I guess 06:17 gregorycu Yeah 06:17 Zeno` and if somebody's antivirus opens a file every time it's modified maybe that's their problem? :D 06:19 gregorycu Well, I think I've finished this, back to pathfinding :) 06:21 gregorycu "when I played on that server it was pretty easy (within few hours) to catch lighting errors" 06:21 gregorycu lol, within a few hours = easy 06:24 Zeno` last release I was actually able to PLAY the game (with 5-12FPS) using valgrind 06:24 Zeno` now I can't at all >:-/ 06:25 gregorycu Too slow? 06:25 Zeno` yeah maybe a frame every 10 seconds lol 06:26 gregorycu :/ 06:27 gregorycu I'm about to profile my own debug build cause I get 40 fps and it annoys me 06:27 gregorycu Actually the server side part is way too slow 06:27 gregorycu Nothing to do with fps 06:28 Zeno` oh, running with valgrind is different but I still used to be able to play using it 06:29 Zeno` I can't paste my data race log anywhere 06:30 Zeno` it's too large 06:30 Zeno` I'll do it with --first-race-only 06:32 Zeno` drawtime=658 :) 06:32 Zeno` 900! 06:34 Zeno` most of these seem to be connection related 06:35 Zeno` in void ConnectionReceiveThread::receive() 06:37 hmmmm freakin sapier 06:37 hmmmm :) 06:39 Zeno` I think it may have been changed since sapier... not sure 06:39 * Zeno` looks 06:43 Zeno` I might need some whiskey 06:44 jin_xi gotta get that ballmer peak 06:44 gregorycu Bit early isn't it 06:46 Zeno` Lock on mutex 0xf74f848 was held during 3030 ms (RealInputHandler::setMousePos) lol 06:47 Zeno` gregorycu, a bit... but it's 4:46PM so another hour maybe 06:48 Zeno` I only have whiskey maybe once a year though so... August seems more reasonable 07:25 hmmmm @paramat I updated my biomegen branch, check it out. 07:32 Zeno` I love BioMegan! I subscribe to her yourtube channel 07:39 hmmmm is she the biological counterpart to RobotMegean 07:39 hmmmm weeeeeewwwwwwwwwwwwwweeeeeeeeeeeeeeeeeeeeeeeeeee 07:39 hmmmm I HEART CODE DEDUPLICATION 07:42 hmmmm [ryan@titan] ~/dev/minetest% git diff --shortstat 07:42 hmmmm 6 files changed, 9 insertions(+), 319 deletions(-) 07:48 Zeno` [Hodor@habanero minetest]$ git diff --shortstat 07:48 Zeno` 892 files changed, 342505 deletions(-) 07:50 hmmmm you prolly just deleted everything 07:51 Zeno` yes; nice and clean now 07:52 gregorycu My new pathfinder appears to work on flat surfaces 07:53 gregorycu Which makes me very happy 07:53 hmmmm my pathfinder works on straight lines 07:57 gregorycu Time to profile the thing 08:09 Zeno` you're working on sofar's patch? 08:10 gregorycu No, new pathfinder, cause the old one is broken 08:11 Zeno` oh.. I thought somebody else was working on that. nvm :) 08:11 gregorycu est31 made the old one... well, performant enough to us 08:12 gregorycu use 08:24 gregorycu If a node is walkable, does that mean you can stand ON it, or stand IN it? 08:34 nore gregorycu: on 08:34 gregorycu Thank you 08:34 nore i.e. not walkable -> not solid 08:51 gregorycu Yay. Pathfinder now support arbitrary dropping distances 09:12 gregorycu And now arbitrary jumping distances 09:12 gregorycu Err... jumping up that is 09:19 gregorycu http://www.gregorycurrie.com/hooray.jpg 10:33 Fixer stutters/jitter are not caused by foobar2000 10:35 gregorycu Who said they were? 10:37 Fixer i was reading the logs and somebody asked IF it is the cause 10:37 Fixer ah, that was hmm 10:52 gregorycu ahh ok 10:57 gregorycu Any comments, anyone #4049 10:57 ShadowBot https://github.com/minetest/minetest/issues/4049 -- Pathfinder: add support for non-surface path finding 11:16 paramat meh 5 pages of PRs were laballed as 'updated 9 hrs ago' for no reason. github keeps doing this, to issues too 11:17 paramat (labelled) 11:27 Zeno` kahrl, have you cleaned (and cmake cache also)? 11:31 paramat anyone else agree to closing #3929 ? 11:31 ShadowBot https://github.com/minetest/minetest/issues/3929 -- add a setting for exponential view distance adjustment by DS-Minetest 11:32 paramat nore sfan5 ^ 11:34 gregorycu So sad to reject work 11:35 Krock gregorycu, make a minetest spin-off and merge it :P 11:35 gregorycu Some how I think getting into gregtest won't satisfy the coder 11:37 Zeno` oh I see the problem 11:38 Zeno` that's seriously fubar 11:39 paramat or perhaps i should hve written, any more opinions on it? 11:40 Zeno` it's unfinished :/ 11:41 Zeno` https://github.com/minetest/minetest/commit/46fd114e9a4e05b74576dce682e24357363298e7 should not have been merged 11:42 Zeno` there is no way that can have been tested with C++11 threads 11:42 paramat it helps for devs to state their opinions, so we can clear out unpopular PRs quicker. many hang around for years, unpopular but not enough -1s to close 11:42 Zeno` because half the functions in thread.cpp still use stuff that it #ifdefs away 11:52 Zeno` paramat, is #4024 still an issue? 11:52 ShadowBot https://github.com/minetest/minetest/issues/4024 -- Expiring particle spawners broken 11:53 paramat erm 11:53 Zeno` or did https://github.com/minetest/minetest/commit/6278da296be13c1229bfce45c476119a1db9477f address it? 11:54 paramat yeah that issue was for the id bug specifically 11:55 gregorycu sofar, give me sheep 11:56 gregorycu I want to test with cool stuff with my pathfinder 11:57 paramat ok closed 12:01 paramat freeze keeps receding over the horizon 12:05 gregorycu I've done my work 12:05 gregorycu What's left 12:09 paramat nore sfan5 game#579 is old but now updated and could go in, any reviews? 12:09 ShadowBot https://github.com/minetest/minetest_game/issues/579 -- Add give_initial_stuff API (and a setting) by rubenwardy 12:09 gregorycu Zeno`: Are you fixing the threading thing? 12:10 sfan5 seems good 12:10 gregorycu Do we do function overloading with our lua api? 12:19 Zeno` gregorycu, I'm not 12:25 paramat ok 12:25 Zeno` ok? 12:25 gregorycu Cool, I'll take a look then 12:25 paramat (to sfan sorry) 12:26 Zeno` oh haha ;) 12:26 * Zeno` will not mentioned use of unitialised variables in case it becomes a milestone 12:27 MillersMan hi, small question from a newbie: i've read often about pathfinding the last days and i wonder (without looking to the code) what algorithm is used for pathfinding and what its current uses are? 12:30 Zeno` I think 3 algorithms are supported but a lot has changed lately so I'm not sure 12:30 Zeno` https://github.com/minetest/minetest/blob/master/src/pathfinder.h#L51 12:31 MillersMan Ok, thanks 12:31 Zeno` gregorycu and est31 know more 12:33 gregorycu MillersMan: We use a bad implementation of A* 12:34 gregorycu I rewrote it in the last 24 hours, now it's proper A* using manhatten distance as the heuristic 12:34 paramat i think i'll add a note in docs advising against using l-system until we get the lighting bug fixed #3421 12:34 ShadowBot https://github.com/minetest/minetest/issues/3421 -- Moretrees lighting bug: Mapgen 1 up 1 down overgeneration changes lighting behaviour 13:11 gregorycu Zeno`: FYI, compiles cleanly on windows with C++11 threads 13:11 gregorycu Found the issue though 13:26 gregorycu kahrl: Are you able to fix those build errors yourself? 13:27 Zeno` gregorycu, how can it when, for example, bool Thread::setPriority(int prio) uses members that don't exist when USE_CPP11_THREADS is defined? 13:28 gregorycu That would be the thing he fixes 13:28 Zeno` you just said it built though *confused* 13:28 gregorycu it builds on windows fine 13:28 Zeno` oh on Windows... yeah that's different 13:28 Zeno` soryr, missed that part :) 13:29 gregorycu I can fluff around with it, but the real guarantee is if someone on non-windows can get it to work 13:31 gregorycu Also, I have no idea how m_thread_handle isn't defined 13:33 Zeno` because it's only defined if USE_CPP11_THREADS is not defined? 13:33 Zeno` https://github.com/minetest/minetest/blob/master/src/threading/thread.h#L160 13:37 gregorycu My file doesn't match that 13:37 Zeno` what's yours have? 13:38 gregorycu When was this introduced? 13:38 Zeno` when was what introduced? 13:38 gregorycu The bug 13:38 Zeno` There is a commit reference in the issue report 13:39 Zeno` 2 days ago by the looks of the commit history 13:39 gregorycu 8 Mar 13:39 gregorycu oh 13:39 Zeno` yeah, that's not when it was merged though :) 13:39 gregorycu I'll get latest 13:40 ShadowNinja Pushing this soon (fixes POSIX C++11 build): http://ix.io/yun 13:42 gregorycu Would be good if github's issue page could somehow group issues and their PR 13:43 gregorycu Shadow, when you push that, kahrl can push 4051 13:43 gregorycu So it's two for the price of one 13:45 gregorycu We actually have a lot of issues and prs near complete for the milestone 13:46 gregorycu lol @ #4058 13:46 ShadowBot https://github.com/minetest/minetest/issues/4058 -- Connecting walls, walls and connecting iron bars and glass panes. stairs blocking angle 90 degrees. 13:47 ShadowNinja Oh, er, Zeno` already pushed something else that doesn't fix it: https://github.com/minetest/minetest/commit/ae75073944f6cdea22d5d4cc40b81937afe4dfa6 13:50 ShadowNinja Zeno`: It looks like your commit doesn't actually change anything about the function of that code. If the C++11 POSIX build started working then there's a bug, there isn't supposed to be an m_thread_handle in that build. 13:54 ShadowNinja Zeno`: Does this patch set look fine?: http://ix.io/yuF/diff 13:57 Zeno` ShadowNinja, it does change something because #if !BLAH is not valid :) 13:57 Zeno` #if !defined USE_CPP11_THREADS would be.... 13:58 sfan5 can you please put brackets around the defined? 13:58 sfan5 it's like using sizeof foo 13:58 sfan5 you can but you shouldn't 13:58 Zeno` I use sizeof without brackets all the time :3 13:59 sfan5 https://lkml.org/lkml/2012/7/11/103 :3 13:59 Zeno` Anyway, ShadowNinja, I have never seen anyone use #if !BLAH 13:59 Krock brackets look better to me 14:00 Zeno` it's always #if !defined BLAH (or #ifndef) 14:01 Zeno` what do the brackets do in simple preprocessor directives though, sfan5? 14:01 Zeno` in the case of #if I mean 14:01 Zeno` not macro expansion 14:02 sfan5 looks nicer 14:02 Zeno` well if you say so... #if !defined (USE_CPP11_THREADS) 14:02 Zeno` looks ugly to me, but *shrug* :) 14:02 sfan5 s/d /d/ 14:04 Zeno` err, yes 14:06 Krock Zeno`, err what? Looks great 14:11 Zeno` well, what looks good and doesn't it a matter of opinion 14:12 Zeno` what works and what doesn't isn't :) 14:13 Zeno` using #if !BLAH is just not "right" 14:17 Zeno` ShadowNinja, also why did you remove the indents? 14:18 Zeno` they're nested, they should be indented :/ 14:27 nore ~tell paramat game#579 looks good 14:27 ShadowBot nore: O.K. 14:37 Wayward_One #4059 14:37 ShadowBot https://github.com/minetest/minetest/issues/4059 -- Add on_punchnode callback by Wayward1 14:55 nore Hm, I've got a question about client-side translations 14:56 nore Should we use gettext format, or instead the intllib one, since some mods are already translated using it? 15:24 est31 nore, I'd prefer gettext format 15:25 nore est31: ok, that will require extra work with gettext though 15:25 est31 intllib is NIH imo 15:26 est31 gettext has more tools 15:26 nore as we can't really use gettext format in strings that will be sent 15:26 est31 why not 15:27 est31 we still need some method for legacy clients 15:27 est31 so we can use whatever format we want 15:27 nore i.e. these strings will have to look sensible if unescaped 15:27 est31 well yeah 15:27 est31 we can just simply bump the protocol version 15:27 est31 then we know on the server side which clients to send which version 15:27 nore yes, I will need that of course 15:27 est31 old or new 15:28 nore But the problem is with strings in metadata, for example 15:29 est31 whats the problem with that 15:29 nore the idea was: to translate a string, add \x1bT at the beginning, and \x1bR at the end 15:30 est31 yeah 15:30 est31 we probably need some way to pass the gettext params as well 15:31 nore I thought about it as well 15:31 est31 but that's it 15:31 est31 Add some \x1bG or something 15:31 nore \x1b(A) at the beginning 15:32 est31 so the end text will be something like \x1bTFurnace (\1% burned)\x1bG90\x1bR 15:32 nore And \x1b(B) at the end 15:32 nore So, an old client will see no difference 15:33 nore And a new one will know the parameters to give to gettext/other 15:33 est31 yeah 15:33 est31 what do you mean with A and B 15:34 nore A furnace would thus be: \x1bTFurnace (\x1b(A1)90\x1b(B1)% burned)\x1bR 15:35 nore A marks the start of an argument 15:35 nore B the end 15:35 est31 that's lots of overhead 15:35 nore That was, arguments can even be nested, translated, and old clients will see the English version 15:35 nore That's not a lot of overhead 15:36 nore Just a few characters 15:36 est31 10 for your method, 3 for mine 15:36 Zeno` ShadowNinja, are you awake? 15:36 nore And a lot less overhead than doing all the translations in a single string 15:37 est31 thats true 15:37 nore est31: yes, but yours is not compatible with old clients 15:37 est31 better to send the translation tables to the client separately 15:37 est31 what old clients 15:37 nore Clients that will not have the translations integrated 15:38 nore Just the string escape mechanism 15:38 est31 you mean 0.4.14, right? 15:38 nore Yes 15:38 est31 well we still can edit 0.4.14 15:38 est31 but of course only if you want it 15:38 nore With your version, 0.4.14 clients will see \1, and a 90 at the end 15:39 est31 i just think that its much more compact, and therefore better 15:39 nore Well, we could, but I think we shouldn't add special cases for escape sequences 15:40 nore I.e. the current way of unescaping strings should always give correct results 15:41 est31 right now its not too late to change the "current" way 15:41 nore It's not, however we are on freeze though 15:41 nore s/on/in/ 15:42 est31 are we 15:42 est31 well then we gonna waste space 15:43 nore Only bugfixes and release-critical features should be merged I think 15:43 nore is that space that important? 15:43 est31 yes 15:43 nore Plus, it is only with strings that have arguments 15:43 est31 it gets stored into metadata 15:43 nore And there are very few of them 15:45 nore Well, we could optimize common cases for the first or second argument 15:45 nore That saves a few more bytes 15:45 est31 hrmm 15:46 nore But still, me' 15:46 est31 as I read it we can make it much shorter with the current unescaping 15:46 nore Grr 15:46 nore metadata is not that big 15:47 nore est31: while keeping compatibility with old clients? 15:47 est31 Instead of \x1b(A1) we just do \x1bP and instead of \x1b(B1) we do \x1bQ 15:47 est31 So the furnace example becomes \x1bTFurnace (\x1bP90\x1bQ% burned)\x1bR 15:47 est31 thats 4 characters 15:48 nore Indeed 15:48 est31 acceptable :) 15:48 nore (Well, 8 actually :)) 15:48 nore I'll start coding that soon then 15:49 est31 okay 15:49 nore Remaining question is: how do we handle gettext? 15:49 nore gettext is not easy 15:50 sfan5 why are we discussing this now 15:50 nore sfan5: because I'd like to start working on it 15:51 nore (Well, for after 0.4.14, but since it is almost ready except a few things, I don't have things to work on for it) 15:53 est31 nore, well gettext is a big library that handles everything for us 15:54 est31 but on the other hand of course, gettext wasn't really designed for our use case 15:54 est31 and getting it built on android isnt possible :) 15:54 nore You mean, we haven't Android translations? 15:55 est31 no :) 15:55 nore Just because gettext doesn't work there? 15:55 est31 yes :) 15:55 nore Then gettext is a no-go :) 15:55 sfan5 there surely is a gettext replacement for android 15:55 sfan5 we already have gettext and won't be throwing it away 15:55 sfan5 also we could just use any other library and "emulate" the gettext api 15:56 nore Something more difficult to code and that doesn't work everywhere is worse 15:56 nore sfan5: yes, that would be good for C++ strings 15:57 nore But if we have working content strings, that's already half of the work done :) 15:58 paramat we're not in strict freeze yet, but only essential or simple harmless things are being merged now 15:58 est31 they can be converted 15:58 nore paramat: ok 15:59 est31 paramat, lets do a strict freeze. I have thought that 0.4.14 would be completely done well before may starts (as a joke! I never thought we would get close) and now we have apr. 30 and the freeze hasnt even started yet 16:00 paramat well in a way we are sort of frozen because the remaining PRs are bugfixes 16:01 paramat it's sort of a grey area, but as a date helps we can say end of sunday? 16:02 paramat #4037 is more of a bugfix than feature? 16:02 ShadowBot https://github.com/minetest/minetest/issues/4037 -- Pathfinder cleanup by est31 16:03 est31 its a mix of bugfix, cleanup and speedup 16:04 paramat we have issue milestones but these don't delay freeze 16:05 paramat in game only TNT stuff remains, which is bugfix/cleanup 16:05 paramat heh problem is i'm too philosophical about freeze 16:06 paramat *** freeze is end of sunday then *** 16:07 paramat having a date seems to wake people up i've noticed 16:08 est31 well if the pathfinder fix doesnt go in its not such a big problem 16:09 est31 but still would be great to have it reviewed 16:09 est31 sfan5, nore if you have time can you have a look at #4037 16:09 ShadowBot https://github.com/minetest/minetest/issues/4037 -- Pathfinder cleanup by est31 16:14 nore est31: doing that 16:20 nore est31: code looks reasonable, but I can't test anything 16:22 nore Also, does it fix the issue gregorycu said, that pathfinder is depth-first instead of breadth-first? 16:23 est31 no, it doesnt touch the pathfinder itself 16:23 est31 it however improves the initial array storage 16:23 est31 and removes it for larger distances 16:23 nore Ok, code looks good anyway 16:24 nore But as I said, I can't test anything 16:24 est31 I mean if you had search distance of 100 nodes, it has allocated an array of 100*100*100 = 1.000.000 nodes 16:24 est31 that doesn't scale well 16:24 nore Indeed 16:26 est31 Okay, now i gotta go. 16:26 est31 I'll try to fix the thing hmmm pointed out with the braces 16:26 est31 after i came back 16:27 est31 nore, do you +1? 16:27 est31 (the PR) 16:28 nore est31: I'll read it a bit more if it is to be merged before 0.4.14 16:28 nore But else, +1 indeed 16:28 est31 ok 16:37 paramat O/ hmmmm added line comment to your branch 17:06 nore ~tell est31 I just finished precisely reading the commits, they look good; I also have a suggestion, that would be to make another container that would be a mix of array and map (let's say, a map containing 4*4*4 arrays), to try to be a bit more efficient (especially with memory usage) and with a bit more cache locality; but it is of course but a suggestion ;) 17:06 ShadowBot nore: O.K. 17:06 nore paramat: commits look good, I +1 the pr 17:07 paramat ok great 17:07 nore ~tell est31 of course, this can be done in another pr, or not at all if you think it is a bad idea 17:07 ShadowBot nore: O.K. 17:12 nore paramat: are there any PRs I should check? 17:13 paramat erm .. 17:16 paramat can't think of anything specific, but any input on the milestone PRs is welcome 17:16 nore Ok, will try to look a bit then 17:16 nore Are there any in _game? 17:18 hmmmm heh 17:18 hmmmm that's a good way to make the biome generate loop cleaner, separating the conditions out into their own boolean variables 17:19 hmmmm however we'd be sacrificing efficiency since there wouldn't be any short circuiting 17:21 nore hmmmm: depending on how you code it, the compiler might do that for you 17:21 hmmmm it's always possible 17:22 hmmmm if i've learned one thing though, it's that you can't trust a compiler to make the optimizations you want 17:22 hmmmm i remmeber one time i tried to make the compiler combine an implicit strcpy and strlen into the same operation and no matter what flags i used nothing worked 17:22 paramat nore i'll look through all game PRs and let you know 17:23 hmmmm s/implicit/intrinsic/ 17:26 paramat nore game#1060 17:26 ShadowBot https://github.com/minetest/minetest_game/issues/1060 -- TNT: Fix multiple explosions erasing drops by sofar 17:26 paramat 1st commit is trivial, opinions on 2nd commit would be useful 17:33 lisac Hello nore. 17:33 nore Hi lisac 17:34 lisac I wanted to ask how is your colored descriptions code going? 17:35 nore Haven't touched it for a week or two, but I'll work on it again soon 17:35 lisac Ok, thanks :D Can I help you? I know a bit of C++. 17:37 nore Hm, I don't think I will need help, actually what remains to be done is mostly to clean the code (a lot) 17:37 lisac Ok. Ask me if you change your mind :P 17:39 hmmmm well 17:40 hmmmm clang does the optimization, ironically icc does not 17:40 hmmmm gasp i thought icc was supposed to be the best compiler ever 17:42 Calinou I¢¢ 17:43 hmmmm gcc 5.x and higher produces the cleanest code, and it even re-orders the comparisons in order of calculated probability 17:43 Calinou try GCC 6 :D 17:43 Calinou I heard it's faster and such 17:43 Calinou Fedora 24 will have it 17:43 hmmmm how it figures that "foobar % 2 == 1" has a 78% chance of succeeding... no idea. 17:46 hmmmm 6 is the same output for this scenario 17:55 Krock (foobar & 1) would be faster, right? 18:10 hmmmm Krock, it honestly depends on the type of foobar 18:10 hmmmm if signed, then yes 18:10 hmmmm if unsigned, it does the obvious optimization to & 1 18:10 Krock should be valid for unsigned too 18:11 Krock ah 18:59 sofar I'll have minetest compiled with gcc6 on monday 19:14 sofar paramat: at what point are we just going to consider the revised xpanes for 0.4.14? 19:16 paramat erm 19:17 nore There are a lot of PRs that I would like to be considered for merging right after 0.4.14, both in _game and engine 19:18 paramat maybe it's safer for this PR to wait, as we freeze tomorrow night 19:18 nore I suggest either adding a label for that, or merging in a separate dev branch 19:18 nore Thoughts? 19:19 paramat well there's a 0.4.15 milestone 19:19 paramat i've been using it for things to work on right after release 19:20 paramat like farmap 19:20 paramat yeah i think xpanes should wait, unfortunately 19:21 nore paramat: then could you add: nodetimer performance improvement, xpanes, nodetimer trees and farming 19:22 paramat ok 19:28 nore sofar: paramat: game#1060 and game#1061 both look good, however I don't know whether tnt should destroy items or not 19:28 ShadowBot https://github.com/minetest/minetest_game/issues/1060 -- TNT: Fix multiple explosions erasing drops by sofar 19:28 ShadowBot https://github.com/minetest/minetest_game/issues/1061 -- TNT: Combine adjacent TNT into the explosion by sofar 19:28 paramat ok 19:29 sofar ok, fair enough, if we're finally going into freeze 19:29 nore I thought destroying them was a good idea, and 1061 fixes most of the problems with that 19:29 sofar nore: there's a mechanic for destroying more items 19:29 sofar I'm actually thinking we should just destroy 30% of is_ground_content by default 19:29 paramat my thinking is, since the first explosion doesn't destroy drops from chests etc, the second explosion shouldn't either, so i agree with the PR 19:30 sofar yeah I left it out as an open for now, keeping current behavior 19:30 nore sofar: I would also have liked to get them in 0.4.14, but freeze should not be delayed any longer 19:30 sofar agreed, lets go to 0.4.15 19:30 nore So that's why I suggest adding them in the merge-right-after-release list 19:31 paramat 1061 is needed though 19:31 sofar both the tnt ones are needed I think 19:32 paramat yes 19:32 sofar if you merge one, the other needs rebasing 19:32 sofar so let me know if you do 19:32 paramat how about merging first commit of 1060 nore ? 19:33 sofar well, as it stands mobs redo is broken until both parts of 1060 are merged 19:33 nore paramat: both can go in 0.4.14 19:34 paramat hm just reading that yeah 19:34 nore just, not xpanes as it is more of a rework than a bugfix 19:34 sofar xpanes is a makeover, yes 19:34 paramat +1 for game 1060 19:35 nore So, let's merge 1060 and 1061 19:35 paramat can i merge 1060 now to speed up 1061? 19:35 sofar yeah, merge 1060 so I can rebase 1061 19:36 paramat ok will do 19:36 nore paramat: both are fine with me 19:36 paramat ok 19:39 paramat i'll also merge game#579 19:39 ShadowBot https://github.com/minetest/minetest_game/issues/579 -- Add give_initial_stuff API (and a setting) by rubenwardy 19:39 nore Fine for me 19:40 paramat merging 19:40 nore Wow, no more game milestones 19:41 nore Have lbm been fixed though? 19:41 sofar it was never broken 19:41 sofar map importing issue :/ 19:42 nore Ah? 19:42 sofar if you start with an imported map, mapgen still runs, and lbms then think that the blocks are newer than the lbm time 19:42 sofar we need to figure out how to tell mcimport to mark the blocks as post-mapgen 19:43 sofar any ideas? I mostly focussed on content for mcimport 19:44 nore sofar: yep, just add a setting of chunk_size to 1 19:44 sofar frankly, I still want to fix the flipped NS problem in mcimport 19:44 paramat they conflict in game_api.txt, will merge 1060 only 19:45 sofar told you :) 19:45 nore Or, fill incomplete chunks with air 19:45 sofar oh, give_initial_stuff conflicts? 19:45 nore About the flipped NS: do we have a solution? 19:46 paramat merging 1060 19:46 sofar completely remap the coord system 19:46 nore Problem for me os that MT and MC have different orientations 19:46 sofar actually the map is rotated by 180 19:46 nore There already is code that remaps coords 19:46 sofar the code remaps one axis already 19:46 nore Ah, it is that 19:46 sofar but it shoudl remap the other axis 19:46 sofar then it would be OK, I think 19:47 nore so, I guess I inverted the wrong axis then 19:47 sofar there was a format change in MC 19:47 est31 having y == up is something unusual 19:47 nore Though, how can you be sure it is that? 19:47 est31 usually z is up 19:47 sofar so likely you did it right before 19:47 nore Oh, when was that change? 19:48 sofar 1.6 or 1.7? something like that 19:48 nore I thought I coded it after that 19:48 est31 sofar, you mean the anvil thing? 19:48 sofar est31: yeah 19:48 sofar it had all the map builders upset :) 19:49 nore sofar: mcimport is post-anvil 19:49 sofar shrug 19:49 nore You need to use MC to convert older maps 19:49 sofar I don't care about old maps 19:49 nore Anyway, I fixed what I could 19:50 nore I.e. I flipped a coordinate so the map wouldn't be flipped 19:50 nore But it can have a 180 degree rotation 19:51 paramat merged! sorry rubenwardy this has priority 19:52 nore paramat: a game_api conflict should be trivially fixable 19:55 nore sofar: you've just got to change this function and the following one: https://github.com/sofar/mcimport/blob/master/block.py#L116 19:55 nore Beware that it is probably among mcimport's bottlenecks 19:57 paramat +1 for game 1061 19:58 paramat don't feel strongly enough about my issue to delay stuff 19:59 nore sofar: btw, did you ever try running mcimport in pypy? If it works, it should give a good performance speedup 19:59 sofar eventually I want to parallellize it 20:00 sofar couldn't get it to work in pypy 20:00 sofar but, I'm a python n00b 20:00 sfan5 your variable naming is horrible, sofar 20:01 sfan5 l3 should be named "out" 20:01 sfan5 l2 should be named "segment" or "cut" or "block" or something like that 20:01 sfan5 or even "tmp" 20:01 sfan5 but not l2 20:01 sofar sfan5: yeah, I'm bad at naming :) 20:01 sofar what code is that? lol 20:01 sfan5 also wtf is a locSt 20:01 sfan5 it should be offset or index 20:02 sofar sfan5: is that mcimport? 20:02 sfan5 yes 20:02 sofar sfan5: lol, you realize that I didn't write most of it, right? 20:02 nore sfan5: it's my code actually 20:02 sfan5 the comments in the function talks about minetest 20:03 nore But code I wrote too long ago 20:03 nore I really should rewrite that, and in C++ too (mcimport is way too slow) 20:04 nore ShadowNinja made an NBT reader some timer ago in C++, it could be used as the base 20:04 sofar given how long it took to convert that 25km^2 MiddleEarth map (5 days), it could use a c++ converter :D 20:04 nore sofar: that's long indeed 20:05 nore Anyway, going to sleep now 20:05 paramat bbl i can merge 1061 when rebased 20:05 sofar and 11 of my cores were pissed about being neglected :D 20:06 nore sofar: parallelism could be useful too 20:07 nore But it's hard to do: / 20:07 nore **** phone autocorrect that breaks my smileys 20:07 Fixer have you guys seen smth like that? https://i.imgur.com/FowxfZI.png 20:07 nore Anyway, bbl 20:07 Fixer noticed this just now on "No rules" server 20:07 est31 phone autocorrect is arch enemy of mankind 20:07 Fixer you can login to see for yourself 20:07 est31 its invented to punish us 20:11 Fixer https://i.imgur.com/77xkyGh.png hmm 20:13 sofar dry grass plants on normal grass? 20:13 sofar torches mod? 20:13 Fixer don't see any torches 20:13 Fixer just light : 20:13 Fixer is this some kind of bug? :/ 20:13 sofar but, does that have the torches mod? 20:13 sofar type /mods 20:14 Fixer sofar, https://i.imgur.com/hRkoc93.png 20:14 sofar hmm 20:15 sofar no torches, but it's also not vanilla 20:16 Fixer !tell paramat something interesting for you, found this on "No rules" server / 15e1dcc / light spots at night, no torches, no lava: https://i.imgur.com/77xkyGh.png https://i.imgur.com/FowxfZI.png https://i.imgur.com/hRkoc93.png 20:16 ShadowBot Fixer: O.K. 20:19 est31 "Your branch is ahead of 'origin/master' by 41 commits." 20:19 est31 hmm seems its time again to spam the git log with translations 20:19 sofar that's like the worst insult that git could give you 20:19 sofar "nobody wants your prs" 20:19 est31 heh 20:19 sofar "have fun merging that!" 20:21 Fixer https://i.imgur.com/sx4WCGM.png 20:21 Fixer slight shadow, hmm 20:21 Fixer madness 20:24 Fixer https://i.imgur.com/iy40wjK.png 20:26 Fixer !tell paramat interesting -> https://i.imgur.com/zYLhS3Z.png 20:26 ShadowBot Fixer: Error: Spurious ">". You may want to quote your arguments with double quotes in order to prevent extra brackets from being evaluated as nested commands. 20:32 Fixer i guess mt needs not only water reactivation but light too :S 20:35 est31 nore, with your approval, can I merge? 20:36 est31 talking bout #4037 20:36 ShadowBot https://github.com/minetest/minetest/issues/4037 -- Pathfinder cleanup by est31 20:47 Fixer https://i.imgur.com/dyASozF.jpg 20:47 Fixer TNT was thrown away behind me, this is the result ^^ 20:50 sofar set off another tnt in that area 20:50 Fixer the problem is, i'm not sure where exactly it exploded 20:50 Fixer will place a torch first 20:51 Fixer https://i.imgur.com/RARORgO.jpg after torch 20:52 Fixer sofar, TNT fixed it entirely :/ 20:52 Fixer this madness should stop 20:53 MillersMan Offtopic question: Is there any replacement for finite-water/waterplus? A mod or experimental engine branch/fork? 20:54 MillersMan I'm currently thinking about implementing an experimental water-flowing simulation in the engine for two reasons: 1. I want this to be implemented and 2. It allows me to learn the engine code outside of mapgens 20:56 est31 MillersMan, implementing that is a big goal. you might want to talk with hmmmm about it 20:57 est31 he knows about that part of minetest 20:57 MillersMan est31: thanks 20:58 MillersMan and nice to hear that this is already on the list 20:59 est31 errm sorry ive said it wrongly 20:59 est31 with "big goal" i meant to say that it was hard 20:59 est31 not that it is particularly on the agenda 21:00 MillersMan ah, ok 21:04 PilzAdam MillersMan, could you implement it in a way that allows mods to define which liquid flowing type a node should use? 21:05 PilzAdam a big problem with the old finite liquids was that you could only set it for all liquids 21:05 Fixer mt needs help on ordinary water too 21:07 MillersMan Not sure, I think it should be possible but I'm still to inexperienced with the code-base, one of the reasons why I want to do something new... bugfixing is just to hard if you don't know the details 21:08 MillersMan My idea was to cache the fluid state on per block base maybe even with multiple levels of details... Its just important to preserve the amount of water and to do nothing unexpected but I don't think it will be critical to always keep the simulation at highest update rate 21:10 MillersMan Another part of the plan was to evaluate a whole water-column at once, so it that not each node has to be updated on its own, and to join multiple columns for a lower-ress simulation if there aren't any changes ongoing. 21:11 MillersMan The difficult part would be to update this cache in real-time and to respond to changes near the columns 21:11 Fixer and this water reactivation bug-part 21:12 MillersMan Not sure if it will work, and its probably nothing that will be ready of the main-game in near future 21:12 MillersMan Fixer, what is the water reactivation issue? Maybe I can take a look at it 21:13 Fixer MillersMan, infamous one, let me search for it 21:14 jin_xi hey i am looking at a very similar problem of caching/updating block data, but for collision detection 21:15 Fixer MillersMan, bug is like that: place water source... it will go down obviously, now fly away some more, go back, water gets stuck, there are also flowing water flying alone stuck in air :) 21:16 Fixer MillersMan, and problem is too fix it and make it flow 21:16 Fixer reflow 21:16 Fixer MillersMan, https://github.com/minetest/minetest/pull/2977 and https://github.com/minetest/minetest/pull/3581 21:18 MillersMan Ok, already observed this one when trying to play a little in my mapgen, had bug in the mapgen that caused an unwanted waterfall and that was then stuck in midair 21:18 sofar est31: did you drop my walkable patch from the pathfinder_cleanup pr? 21:18 Fixer MillersMan, my example of stuck liquids: https://cloud.githubusercontent.com/assets/16494741/12523512/05ed0a54-c160-11e5-9de2-5d61540e0505.png 21:19 est31 sofar, did i drop it 21:19 est31 sorry for that 21:20 sofar well, then we need a solution because I can't continue work on my mobs if they can't walk through a grass plant 21:20 jin_xi they could eat, ie remove the grass :) 21:20 est31 sofar, do you remember the old commit id of the patch 21:21 est31 found it its 9536d5c52e 21:22 MillersMan Fixer: Is it planned to be fixed in the engine or in lua? 3581 mentions an ABM 21:22 Fixer MillersMan, i think in engine, lua was very crude workaround before proper fix in engine is available 21:23 Fixer MillersMan, devs fixed water spread in air, but water still gets stuck and needs reactivation, needs fix in engine 21:26 MillersMan Ok, thanks, I'll have a look at its code 21:29 est31 sofar, added your commit again 21:29 est31 sofar, your commit was lost because ive used this github feature to merge your pr 21:29 est31 but didnt update my local clone 21:30 est31 so when i pushed from my clone again, your commit got removed 21:30 est31 but now its there again 21:34 sofar kewl 21:54 MillersMan Fixer, paramat: Where are nodes added to the transforming liquid queue after loading? Couldn't find any code in C++ except for LUA-api 21:55 paramat not sure 21:55 Fixer totally not sure 21:56 Fixer have you guys seen falling nodes forever? (sitting on the ground) 21:58 paramat only when i edited tnt, i had those tnt entities that blow up after restart 21:58 Fixer yeah 21:58 Fixer same 21:59 Fixer blowing up lots of tnt and rarely i got those entities 21:59 Fixer with default tnt 22:01 paramat your lighting glitch with the tnt chain may be due to updateLighting, which is known to occasionally create lighting bugs, especially if used rapidly 22:02 Fixer https://i.imgur.com/nSsEfKK.jpg 22:02 paramat the lighting bugs near lava + water mountains are not surprising 22:02 Fixer hah 22:02 paramat :/ 22:02 hmmmm lighting bugs aside, that looks impressive 22:02 Fixer https://i.imgur.com/jp0HHoK.jpg 22:03 Fixer even more impressive 22:03 hmmmm did you do that with a voxelmanip? 22:03 Fixer default tnt 22:03 hmmmm i mean how did you generate those holes... 22:03 est31 nah the first one is more impressive somehow 22:03 paramat tnt uses vm now yes 22:03 Fixer hmmmm, by TNT... 22:03 paramat heh 22:03 hmmmm somehow i take it that fixer is not the developer of this mod 22:04 hmmmm hrmm, well it must've used Map::updateLighting, so at least i can rest knowing it's not *my* bug 22:04 Fixer i've blow up main huge hole with sofars PR 22:04 paramat sofar has rewritten tnt 22:04 Fixer you can stuck really big TNT cube that will be so awe_some to see 22:05 Fixer huge explosion, and pretty fast 22:05 Fixer i can make that light bugs easily 22:05 Fixer just light lots of tnts near each other and make them bounce in all directions 22:06 Fixer and those shadow have nice gradients 22:06 hmmmm tbh i'd rather invest more time into developing a less error prone lighting system that uses the hardware rather than go on a never-ending bug fixing hunt for this buggy lighting algorithm 22:07 Fixer btw, you never seen real holes 22:07 Fixer Red Crab has so huge one, I can't even describe, it is thousand of nodes deep and like 50 nodes in diameter 22:07 Fixer probably made with some hacks 22:08 Fixer hmmmm, yes, lighting system, i just can't cry anymore looking at it 22:08 Fixer and water 22:08 jin_xi yay voxelmanips are awesome, i have thrown ridiculously large stuff at them without problems 22:08 paramat dude, you nevah seen real holes 22:09 hmmmm i saw yo momma's hole 22:09 hmmmm does that count? it was 50km in diameter 22:09 Fixer lol 22:09 Fixer https://i.imgur.com/zYLhS3Z.png be calm and observe this 22:10 Fixer i just fffs at it and ... 22:10 Fixer i lose faith 22:10 Fixer it is never ending facepalm 22:10 Fixer and that pesky moretrees 22:12 Fixer https://i.imgur.com/27wD9mF.png flying forever 22:13 Fixer well, until restart 22:18 paramat the moretrees thing is a lighting bug in l-system that was missed or perhaps not occurring when it was merged 22:19 Fixer even underwater: https://i.imgur.com/fPUA1wk.png (above stone + lava) 22:19 jin_xi treegen does not do any light related stuff itself, it calls updateLighting 22:49 hmmmm paramat: right now, all the mapgens work iteratively on the same buffer 22:50 millersman Fixer, paramat: I think I found the issue: Loaded blocks are never added to the transforming liquid queue if they weren't already on it, newly generated blocks are manually added by the mapgen 22:50 hmmmm what if each procedure that modifies terrain (i.e. the important ones) writes to a buffer, and then all of them are composited together 22:50 hmmmm and mods of course could request these intermediate buffers 22:51 Fixer millersman, the problem is how to fix this iirc 22:51 hmmmm that way a mod could know that something is a river or a mountain 22:51 millersman I think the proper solution would be to do something like MapGen::updateLiquid for loaded blocks, either in ServerMap::loadBlock or in EmergeThread::getBlockOrStartGen, not sure which one to choose 22:52 paramat interesting .. 22:53 hmmmm this information could also be used in determining biomes 22:53 hmmmm note that i use the word 'determine', not 'generate' 22:54 hmmmm biome-related noise is generated, but biomes are ultimately determined, merely using the generated noise as a consideration 22:54 millersman Another in my opinion optimal solution would be to add a new method finishLoad to ServerMap and call this from EmergeThread::run, any objections? 22:56 millersman It would work similar to MapGen::updateLiquid but only on a per block base 22:59 paramat there may be performance issues with updating liquids more often 22:59 paramat some have looked into this and considered 23:00 paramat it's possible it wasn't done due to excessive load 23:02 paramat there's discussion about this in a github thread somewhere 23:09 Fixer MillersMan, you can make pr for review 23:25 MillersMan finished the fix, just have to commit it and create the pr 23:31 Fixer nice 23:52 MillersMan Fixer: i found two possible limitations that could be fixed with a lookup into the upper and lower blocks if they are loaded, which would actually improve performance, I'll add them too, but testing might take a little longer 23:55 Fixer MillersMan, have you read discussion over here, it may be useful? https://github.com/minetest/minetest/pull/2977 23:57 MillersMan I think one of my limitations is exactly the one mentioned there, if i add the lookup to the upper and lower blocks I'll prevent spamming the queue 23:58 MillersMan Another question: can I limit the range of loaded blocks without limiting the viewing range? 23:59 Fixer MillersMan, if you want to test some exotic kinds of stuck water, i made a copy of a world from popular server: https://github.com/minetest/minetest/files/101456/Just.Test.zip Note: it is for exotic kinds, also, copy is partial, so on edges some water can start flowing down, also, world is somewhat laggy so nevermind the lags :) do not test it for speed on this world 23:59 Fixer MillersMan, example of nice stuck liquids: https://cloud.githubusercontent.com/assets/16494741/12523512/05ed0a54-c160-11e5-9de2-5d61540e0505.png 23:59 Fixer on this world 23:59 Fixer coordinates also present 23:59 Fixer MillersMan, maybe you can