Time Nick Message 00:20 VanessaE sapier: ok, installing that pull now. 00:24 sapier thanks VanessaE 00:25 VanessaE it'll take effect at tonight's restart 00:26 sapier ok if you don't complain till next weekend we're gonna merge it 00:27 VanessaE ok. 00:27 sapier unless someone else does complain ;-) 00:29 acerspyro Yall ugly. 00:29 acerspyro That's my complaint. 00:46 hmmmm hello 00:46 hmmmm oh man 00:46 hmmmm so what's going with 0.4.12 00:47 sapier considering the amount of changes merged recently I'm not sure if it would be a good idea 00:47 hmmmm some people wanted to do it soon 00:47 hmmmm if we merge 2119, it's going to have to wait 00:47 hmmmm something that huge is going to definitely crop up bugs 00:47 hmmmm and bad ones 00:48 hmmmm i'll try looking it over 00:48 hmmmm how far have you gotten? 00:48 sapier it's difficult to review as it's almost only code copy ... but diff messes everything up 00:49 hmmmm i looked at some, what's up with src/network/toserverpacket.cpp and toclientpacket? 00:49 hmmmm they're entire source files for a constructor 00:50 sapier well he intends to do some work on how packets are created I assume it's preparation 00:51 hmmmm so it's a work-in-progress? 00:51 sapier partial 00:51 hmmmm i thought it was ready 00:51 sapier it's ready as of packet handling 00:51 hmmmm yeah but definitely not to merge.. 00:51 sapier but he's already doing additional stuff 00:51 hmmmm okay 00:51 hmmmm just checking because there has been a lot of talk about that recently 00:52 sapier the new stuff ain't actually related to this change ... at least not direct 00:52 hmmmm hmm what is the new stuff? 00:52 sapier but you're right an entire source file for a constructor doesn't seem right 00:52 hmmmm and how much does this interfere with enet integration? 00:52 hmmmm it does if you're coding Java :-) 00:52 sapier I don't know guess he wants to rewrite everything again 00:53 hmmmm hrmm 00:53 hmmmm rewriting things isn't necessarily good 00:53 hmmmm does he want to rewrite the protocol itself? 00:53 sapier I'm gonna let him surprise me what exactly he does ... but this part is reasonable work as it's doing some stuff we wanted to do for quite some time 00:53 hmmmm or the way packets are processed? 00:54 sapier I told him not to rewrite the protocol without asking why things where done the way they are done ... not sure if he's gonna really ask 00:54 hmmmm humm 00:54 hmmmm so what's your motivation for adding enet support? 00:54 acerspyro sex 00:54 sapier well let's focus on the current work not on future things 00:55 hmmmm compatibility with certain minetest derivatives? 00:55 sapier replacing the if/else cascade by a lookup table is a good approach 00:55 hmmmm okay then 00:55 acerspyro btw, why can't we provide an iOS app on the website? 00:55 sapier acerspyro: no 00:55 hmmmm what? 00:55 acerspyro why 00:56 sapier because we don't have one 00:56 acerspyro What if we make one 00:56 sapier do it 00:56 hmmmm you mean why don't we magically come up with an apple iOS port? 00:56 acerspyro hmmmm: like android building, yeah 00:56 hmmmm yeah, do it, don't just tell us to make magicial stuff happen when there's already way too much work.. 00:56 sapier android port took about two years and it's still beta 00:56 acerspyro Ah, so iOS is to come 00:56 sapier nope 00:57 acerspyro in a far future 00:57 hmmmm it is to come if somebody wants to implement it 00:57 sapier I don't know about anyone working on an ios port 00:57 hmmmm nobody here has plans for that 00:57 acerspyro lol 00:58 acerspyro you guys have a VERY VERY VERY VERY VERY long to-do list anyways and are late in your stuff, so I think the iOS port could wait :P 00:58 sapier I don't even think any core dev does have a ios device ;-) 00:58 acerspyro lol 00:58 acerspyro I have an iPad 1 00:58 acerspyro That's it 00:58 hmmmm maybe you should start working on an iOS port if you're interested in having it 00:58 acerspyro sure 00:59 acerspyro I am annoyed of shitty ass unofficial iOS clients 01:00 sapier feel free to write the official port 01:00 acerspyro ipadian? 01:00 acerspyro Some kind of iOS VM 01:00 sapier you'll always need the real thing for porting 01:01 sapier btw I don't think apple does allow native apps on ios 01:03 acerspyro Bitch, no more Adobe Air for Linux 01:03 acerspyro I don't fucking care! 01:03 acerspyro :D 01:16 hmmmm hey VanessaE, you there? 01:16 VanessaE yes 01:16 acerspyro no 01:17 acerspyro She's busy reading my chat on #minetest 01:17 VanessaE (if I'd have said no, he'd have said "maybe" or something :P ) 01:17 acerspyro lol 01:17 hmmmm can you pleasepleaseplease profile Database_LevelDB::listAllLoadableBlocks for me on your big map 01:17 VanessaE how would I do that? 01:17 acerspyro Magic. 01:17 acerspyro you need to believe. 01:18 sapier acerspyro: stop trolling 01:18 acerspyro not trolling anyone. 01:18 acerspyro Just spewing random crap 01:18 acerspyro And I will stop spewing random crap, sure 01:18 hmmmm add a TimeTaker t("listAllLoadableBlocks); printf("listAllLoadableBlocks: %dms\n", t.stop()); to that function 01:18 VanessaE ok, one moment 01:19 hmmmm acerspyro, #minetest-dev is for serious development discussion, not randomness 01:19 sapier acerspyro: in this case it's quite fine to kick you because you just said yourself you're violating the rules 01:19 hmmmm please take silly banter elsewhere 01:19 acerspyro I just said I'd stop 01:19 hmmmm VanessaE: copy your map first, and run clearobjects on your copy 01:19 VanessaE eep 01:19 hmmmm note that you don't need to wait for the entire command to finish 01:20 hmmmm just when you get how long that thing took 01:20 hmmmm this is one of those things where frankly I have no idea how big the number is going to be 01:20 hmmmm it could be half a second, it could be 2 minutes, i have no idea 01:20 VanessaE I better run it on a local copy of the map then. 01:20 hmmmm yea 01:23 hmmmm also this could have radically different results based on the db used... 01:23 VanessaE this'll be a while, I need to update my local map first 01:23 hmmmm this would be simpler if i had a really honking huge map in all kinds of different formats right here 01:23 gregorycu What are you investigating? 01:24 hmmmm if it's a good idea to filter the blocks selected from the list 01:25 hmmmm frankly I don't think I'm going to be able to do it without math directly in the SQL 01:25 hmmmm and that's with sqlite3 01:26 VanessaE meanwhile, if you wanna download the map and fiddle with it, you can grab it from here: http://digitalaudioconcepts.com/vanessa/hobbies/minetest/worlds/ 01:26 hmmmm yeah but how many GB is it... 01:26 hmmmm i have dsl 01:26 VanessaE 6.3 GB 01:26 VanessaE expands to about 6.7 or so 01:26 hmmmm are any of those sqlite3 maps 01:27 VanessaE all are leveldb 01:27 VanessaE but minetest can migrate from one to another 01:27 hmmmm okay 01:27 hmmmm well this is going to take some time :) 01:27 VanessaE ETA for remaining download, ~10 mins 01:27 hmmmm 31 hours it seems 01:27 VanessaE (I have a fast pipe ;) ) 01:28 hmmmm ahh nice 01:28 hmmmm downloading at 50 KB/s 01:28 hmmmm well at least it's not killing my bandwith while I wait 31 hours, haha.. 01:29 VanessaE averaging about 7.3 MB/sec here 01:30 VanessaE meanwhile, the bit you wanted me to add works out to this, yes? http://pastebin.com/V46QauWq (src/database-leveldb.cpp, lines 83 on down) 01:30 hmmmm :/.. no 01:31 hmmmm first of all the code being profiled needs to be between the TimeTaker declaration and the printf statement 01:31 hmmmm second, the string needs to be closed.. 01:31 VanessaE eek 01:32 hmmmm if I made a typo telling you to jump off a cliff, would you do it !?!? 01:32 VanessaE heh 01:32 VanessaE well given that it's C++ I'd hardly be able to spot the typo ;) 01:33 VanessaE so more like this: http://pastebin.com/iEEfqdqa 01:33 hmmmm yeah, that's it 01:33 hmmmm haha 01:33 VanessaE and...failed to compile 01:33 hmmmm oh 01:34 VanessaE database-leveldb.cpp:85:2: error: ‘TimeTaker’ was not declared in this scope 01:34 hmmmm #include "util/timetaker.h" 01:34 hmmmm put that above void Database_LevelDB::listAllLoadableBlocks( ... 01:34 VanessaE there we go, that got it 01:34 VanessaE ok that's set 01:34 * VanessaE waits for the map 01:35 hmmmm this also determines whether or not I'm going to keep a saved block bitmap in the db for my upcoming trick :) 01:41 VanessaE jeez. note to self: don't untar big gazonga files like this on a routine basis 01:47 est31 VanessaE: you offer whole downloads for all of your worlds? 01:47 VanessaE yep 01:47 est31 cool 01:49 est31 @all encountered segfault in latest master 01:49 VanessaE ok, done un-taring 01:49 VanessaE making the backup now. 01:50 est31 how to tell cmake to do debug symbols? 01:51 est31 -DCMAKE_BUILD_TYPE=Debug doesnt work 01:51 hmmmm -DCMAKE_BUILD_TYPE=Debug 01:51 acerspyro Should have debug symbols. 01:51 est31 gives stuff like 0x00000000006806b3 in MapBlock::serialize(std::ostream&, unsigned char, bool) () 01:51 hmmmm odd 01:51 acerspyro thread apply all bt full? 01:52 acerspyro (I think) 01:52 hmmmm do ctrl+F for "-O1" in src/CMakeLists.txt and change it to -O0 01:52 VanessaE hmmmm: ok, map updated and backed up. starting /clearobjects now. 01:53 hmmmm yay 01:54 hmmmm did you see the clearAllObjects: ms output yet? 01:54 VanessaE listAllLoadableBlocks: 52958ms 01:54 hmmmm ouch 01:54 hmmmm okay you can cancel that one 01:55 hmmmm does it take too long to convert that map to sqlite3? 01:55 VanessaE there's no way to cancel a /clearobjects ecept with a ctrl-C at the command line 01:55 hmmmm yea that's okay 01:55 hmmmm it's just a copy of the map, right? 01:55 VanessaE yep 01:56 VanessaE ok, canceled. 01:56 VanessaE converting to sqlite3 will take a while, probably upwards of 10 minutes I guess 01:56 hmmmm oh that's not too bad 01:56 hmmmm i was expecting hours 01:57 VanessaE shall I? 01:57 hmmmm yea 01:57 hmmmm please 01:58 VanessaE ok, migrating it now. 01:58 hmmmm thank you 01:59 VanessaE listAllLoadableBlocks: 50577ms was printed right before it started the actual migration process 01:59 hmmmm ahh 01:59 hmmmm that's right, it's called in more than one place 01:59 hmmmm haha 02:00 hmmmm vanessae, while you're waiting, i was just wondering how often you typically *want* to clear all objects from the entire map 02:00 VanessaE not often - in practice, probably once every few months 02:00 hmmmm would you want to be able to clear objects in a radius? 02:00 est31 eg killing old rats? 02:01 VanessaE there's no need - worldedit has a function for that 02:01 VanessaE //pos1, //pos2, //clearobjects (with two slashes) 02:01 hmmmm how about a time-to-live feature for objects? 02:01 VanessaE already exists. 02:01 hmmmm ahh okay 02:01 VanessaE by default, it's set to infinite; item_tweaks and related are supposed to set it to a sane value like 10minx or so 02:02 VanessaE mins* 02:02 hmmmm oh, so it's a part of the engine? 02:02 hmmmm good 02:02 VanessaE as I understand it, yeah 02:02 hmmmm ahh so i don't need to bother with the objects then 02:03 VanessaE lemme double-check that 02:03 hmmmm and, as far as I can tell right now, I'm going to need an in-db structure to cache which blocks exist 02:04 est31 sorry segfault was my error, everything works fine 02:04 hmmmm basically my idea involves running listAllLoadableBlocks() every time the map is loaded, which isn't plausible at this moment 02:05 acerspyro Is it the same dev as the MC WE who made MT WE? 02:05 hmmmm as a side effect to implementing this I suppose I can shave a minute of time off of /clearobjects :) 02:06 VanessaE hm, if there's indeed a TTL parameter for an entity, it's not documented in lua_api.txt 02:06 VanessaE acerspyro: no 02:07 T4im I think you could set one in the config though 02:07 VanessaE yes 02:08 VanessaE remove_items parameter 02:08 VanessaE but that doesn't seem like an engine setting. 02:08 hmmmm my gut feeling says that should be a mod-settable param 02:08 T4im "item_entity_ttl = 900" 02:08 VanessaE oh, or that 02:08 VanessaE (my config is outdated) 02:08 T4im Time in seconds for item entity to live. Default value: 900s. 02:08 hmmmm some things you'd want to expire fast like maybe leaf blocks that have fallen 02:08 hmmmm and then maybe something like super ultra rare item you'd want to never expire 02:08 VanessaE # Time in seconds for item entity to live. Default value: 900s. 02:08 VanessaE # Setting it to -1 disables the feature. 02:08 VanessaE #item_entity_ttl = 900 02:10 VanessaE I think I remember now, it's set to infinite for everything except items that have been spawned/dropped, where that ^^^ setting takes precedence 02:10 hmmmm ahh that's a sane object despawn scheme 02:13 VanessaE https://github.com/minetest/minetest/blob/d7b3046cf699641f14148463ed7d77e038548f12/builtin/game/item_entity.lua#L99 02:13 VanessaE interesting. I thought it was handled inside the engine, not in the Lua part. 02:13 hmmmm god that is such ugly code 02:14 hmmmm lua would be so much nicer if it had simple things like "continue" 02:14 VanessaE btw, I was dead wrong on the migration time :) 02:14 VanessaE it's only at ~5 percent 02:14 hmmmm :/ 02:15 hmmmm on the bright side, only 29 hours left until i'm finished downloading your map 02:16 T4im hopefully that download is continuable if it should stop D: 02:17 est31 with http you can request single chunks of a file 02:17 T4im also hmmmm, apparently lua has goto statements, which could be used inplace of a continue.. though.. ew.. why the heck would they add goto instead of continue D: 02:18 hmmmm hah 02:18 n4x why even add loops though 02:18 hmmmm actually goto was added recently as a new feature iirc 02:19 T4im also its probably best nobody uses that, or we will see gotos cargoculted into mods.. .S 02:19 T4im :S 02:19 hmmmm Lua is such an objectively bad language 02:19 hmmmm the only thing it has going for it is easy integration 02:19 T4im the language everybody hates and still uses ;) 02:19 acerspyro lol 02:20 VanessaE hmmmm: it could have been worse... 02:20 VanessaE coulda been some form of BASIC :) 02:21 kaeza lua would be so much nicer if it had simple things like "continue" 02:21 kaeza this comes up REALLY frequently on #lua :/ 02:21 hmmmm ternary operator 02:21 hmmmm overly verbose if statements 02:21 hmmmm etc. 02:21 est31 ternary is weird but it exists 02:21 hmmmm when I look at lua code, all I see is too much indentation 02:22 n4x bad code doesn't mean the language is bad 02:22 hmmmm it's because it's lacking a lot of stuff that would make it neater 02:22 n4x I would say it has lots of features nobody uses 02:22 n4x or barely uses 02:22 T4im hmmmm: at least they didn't choose to make indentation part of the syntax like some popular markup languages :/ 02:22 hmmmm have you tried writing lua? it's REALLY hard to keep your number of indentation levels to a sane amount 02:22 kaeza from your points, only the lack of 'continue' and a *real* ternary op is valid IMHO 02:22 hmmmm yup.. 02:23 kaeza the rest are subjective 02:23 hmmmm lack of static typing too is a huge gripe of mine, but that's not along the same lines 02:23 est31 T4im: not just some markup langs use it, also a very popular programming language which I despise out of that reason 02:24 n4x hmmmm: it actually allows you to write nice 'functionalish' high order functions which basically have the patterns you want to abstract 02:24 T4im ah, yea, nearly forgot about that one, est31 :D 02:24 hmmmm honestly, trolling aside, I feel like javascript would've been the ideal choice 02:24 hmmmm writing the API would be much more difficult but god damn it'd be worthi t 02:26 T4im angelscript was afaik designed as a js similar language for games 02:26 hmmmm maybe, but javascript has all that commercial backing and it's fast for what it is 02:26 VanessaE hmmmm: are you channeling lamefun or something? *shudder* 02:27 VanessaE next we hear, he'll be pushing HTML5 also 02:27 T4im librocket? ;) 02:30 est31 so thats bad because old hw? 02:30 acerspyro make it out of CSS and JS! 02:30 acerspyro :D 02:35 kaeza thinking about it, you could somewhat implement a script[] formspec element to fully predict and do advanced things with FS client-side (assuming a proper sandbox, of course) :P 02:35 kaeza the formspec system is kinda like HTTP/HTML anyway :P 02:44 est31 does the new font rendering look at least nicer on retina displays? 02:49 VanessaE est31: in theory, but I've never tried it :) 02:52 est31 has someone tried sth like if(retina)then font=large else font=normal 02:54 VanessaE fonts right now are supposed to be displayed at the same angular size regardless of resolution, so long as the screen DPI can be detected, and the minetest instances running on the screens you're comparing have their gui_scaling set the same 02:56 est31 so they got larger because MT takes dpi now as a baseline? 02:57 VanessaE if they're larger, turn them down :P 02:57 VanessaE they're supposed to be about the same size as they were back in e.g. 0.4.9 02:58 * est31 is compiling 0.4.9 03:08 est31 0.4.9 has normal size 03:08 est31 master has weird large size 03:09 VanessaE got before-and-after screenshots ? 03:09 est31 ill make some 03:09 VanessaE also, windows or linux? 03:09 est31 ubuntu 03:09 VanessaE ok 03:10 est31 minetest_game also on 0.4.9 03:13 DFeniks have you changed dpi settings in ubuntu , but dont ask me where to change them , i dont remember 03:17 est31 0.4.9 https://lut.im/jYNdj1t6/fc91aksT 0.4.11 before change https://lut.im/TKHbOqV6/Y8PoS3Mr master https://lut.im/5prnMIPq/JGlIMqp0 03:18 est31 not knowingly 03:18 VanessaE they all look approximately the same to me 03:19 VanessaE just the overall formspec size and layout differs 03:19 est31 VanessaE: compare the "Minetest" in the upper left corner 03:19 VanessaE master is slightly larger, yeah 03:19 VanessaE I thought you meant the fonts were gigantic 03:19 est31 no not that 03:20 est31 but chat uses more screen space 03:20 * VanessaE shrugs 03:20 VanessaE you can turn the size down a tad 03:21 VanessaE just turn gui_scaling down a little, maybe to 0.99 or so 03:22 est31 ok will do that 03:24 VanessaE (best to do that directly in your .conf) 03:27 est31 yes 03:27 VanessaE sapier said before that tiny differences like this are usually just rounding errors 03:28 est31 really then they should use double instead of float 03:49 hmmmm that isn't going to fix the main issue 03:49 est31 which is 03:50 hmmmm imprecision in float-string conversions 03:51 hmmmm using a double instead of a float will 'fix' errors that crop up after doing a lot of floating point math requiring a lot of precision 03:52 est31 conversion? 04:01 est31 Man a "Duplicated seqnum 385 non matching packet detected:" results in a segfault 04:18 kahrl since you were talking about dpi 04:18 kahrl does anyone know if there is intentionally no dpi detection on windows or if just nobody has done it yet 04:19 kahrl the code for it should be pretty simple, something like https://gist.github.com/kahrl/ae1213d791014d4afffb 04:20 kahrl (I can't test ^ since I don't use windows) 04:21 kahrl of course this is just the "logical" dpi which can be changed in the control panel 04:22 kahrl but using that makes sense anyway, if the user increases that they most likely want bigger fonts in minetest too 04:23 hmmmm sapier said he was going to implement windows dpi detection 04:24 hmmmm huh... what's SetProcessDPIAware 04:24 kahrl he also said he doesn't want anything to do with dpi and scaling issues any longer 04:24 kahrl dunno, I got that from http://stackoverflow.com/questions/12652835/getting-actual-screen-dpi-ppi-under-windows 04:25 hmmmm ehh 04:25 kahrl seems to be a function introduced in vista 04:25 hmmmm I don't know what that api does and it's supported on vista and up 04:25 hmmmm you should probably remove it 04:25 hmmmm it doesn't seem like it does anything we'd want anyway 04:25 hmmmm msdn doesn't even say what it does 04:26 Zeno` http://msdn.microsoft.com/en-us/library/ms701681%28v=vs.85%29.aspx 04:26 Zeno` As usual though I cannot understand their documentation heh 04:26 hmmmm yes definitely remove, even if you did it the "correct" way, http://support.microsoft.com/kb/921337 04:26 kahrl if you don't call then the DWM scales your whole window as a bitmap 04:27 kahrl obviously this results in blurriness 04:27 kahrl I'm not sure if this affects opengl/directx applications though 04:27 hmmmm of course not 04:27 kahrl I wouldn't be so sure 04:28 hmmmm that would be horribly inappropriate behavior 04:28 hmmmm already, it's inappropriate behavior 04:28 kahrl windows is full of inappropriate behavior 04:28 hmmmm windows is FUBAR 04:29 hmmmm hrmm 04:29 hmmmm well the dwm is only on vista+ 04:30 kahrl do we still support xp? 04:30 hmmmm msdn lists a possible race condition as the rationale for its recommendation to use a manifest 04:30 hmmmm which is completely bupkis for us 04:30 kahrl eww 04:30 hmmmm I support XP 04:30 hmmmm the thing is 04:30 kahrl well ok 04:30 hmmmm if we don't put the manifest in and call that directly 04:30 hmmmm the function won't be found on vista 04:31 kahrl so this needs to be GetProcAddress'd 04:31 hmmmm if we do put the manifest in and have it set along with exe loading, we have mingw problems and it'd restart the computer after it fails to open on windows xp sp2 ... 04:31 hmmmm yes, that's precisely what i'm getting at 04:31 hmmmm and if it's not found in user32, then don't bother calling it since DWM won't be doing its crazy things 04:32 kahrl well that KB article problem can probably be avoided 04:32 kahrl just don't use a tag with two schema properties 04:32 hmmmm even if you do solve it, how well does it work with mingw 04:33 kahrl no idea 04:36 kahrl well it seems to be possible with a certain line in the resource file http://stackoverflow.com/questions/20255591/manifest-being-ignored-in-mingw-app 04:37 kahrl now somebody just needs to write that manifest 04:42 paramat hi hmmmm please could you review/merge #2123 ? 04:42 ShadowBot https://github.com/minetest/minetest/issues/2123 -- Mgv7: New cave system with fewer large caves and new 3D noise tunnels by paramat 04:44 hmmmm looks good 04:55 est31 hmmmm: can you have a look at this too? we can ship it without package changes I think https://github.com/minetest/minetest/pull/2073#issuecomment-69466825 05:14 paramat https://cdn.mediacru.sh/0/0B9YkaARQdGV.png https://cdn.mediacru.sh/i/i2aSNNW1Ioux.png there are water caverns and endless abysses below v7 rivers, i remember you saying they are't intentional. this rare one looks good but mostly they are ugly thin vertical walls of water columns directly under the river walls, extending down to -31000. i plan to fix these, or at least remove the ugly structures 05:37 paramat 2 more things i might do are to make rivers a little narrower and have less of them 05:37 hmmmm how are you going to do that 05:42 hmmmm looking at generateRidgeTerrain() a bit closer right now... a lot of the math in that function is quite arbitrary 05:43 hmmmm the problem with the endless abysses happens when |uwatern| > width 05:44 hmmmm basically the problem is that I don't take absolute values at the appropriate points in the calculation 05:56 est31 why does minetest have LGPL not GPL? 06:01 hmmmm paramat, I'd rather hold out on merging that 06:02 hmmmm http://i.imgur.com/mIdaFP8.png 06:10 gregorycu I'd be a lot better optimiser if I knew assembly 06:14 Zeno` If anyone feels like doing some thorough checking: https://github.com/Zeno-/minetest/commit/544cdd3f39f004ef3aa1a13bcd2bb520f6a99583 06:14 Zeno` I looked at every usage of MapNode and cannot see any issue (but there are quite a few to look at) 06:18 Zeno` Oh, the reason I'd like to do that is so https://github.com/minetest/minetest/blob/master/src/voxel.cpp#L177 can be fixed 06:19 gregorycu Zeno`: Do you know much about right shift? 06:19 gregorycu Of signed numbers 06:19 Zeno` gregorycu, yes, undefined behaviour 06:19 gregorycu No, implementation specified behaviour 06:19 Zeno` err yes 06:19 gregorycu I'm just wondering if you know of any implementations that do the "wrong" thing 06:20 Zeno` I haven't tested every compiler available, no :) 06:20 Zeno` Why would you need to do that anyway? 06:20 gregorycu Check out line 51 of numeric.h 06:20 Zeno` All compilers that I know of optimise stuff like x / power_of_2 to bit shifts anyway 06:21 gregorycu return (p>=0 ? p : p-d+1) / d; 06:21 gregorycu This is equiv to (p >> d) on windows 06:21 gregorycu Where d is number of bits, not block size 06:22 Zeno` err 06:22 Zeno` I don't understand what that function does 06:22 gregorycu it's easily explained 06:23 gregorycu It performs an integer division with a round towards negative infinity 06:23 gregorycu (As opposed to the default integer division which rounds towards 0) 06:23 Zeno` Why isn't the function called that then? lol 06:24 gregorycu So, -10 / 16 gives you -1, not 0 06:24 Zeno` I don't think you can simply use implementation defined behaviour though :( 06:24 Zeno` let me look at some of my bit fiddling implementations 06:24 gregorycu I think it may be every implementation we care about 06:24 gregorycu But yeah, not sure 06:25 gregorycu I was expecting a bit of a speedup 06:25 Zeno` Are you sure the compiler doesn't optimise it anyway? 06:25 gregorycu I'm pretty sure it doesn't 06:25 gregorycu Err... It could, I suppose 06:25 gregorycu Depends how smart it is 06:26 gregorycu Because d is a parameter 06:27 Zeno` I reckon it would anyway. I should write a test case 06:27 gregorycu This seems like a micro-optimisation, but it's part of a large optimisation 06:28 Zeno` easiest way to check would be write a test case and look at the ASM :p 06:29 Zeno` or profile both versions 06:29 Zeno` say for 4 million or so random numbers 06:32 Zeno` Anyway, the problem is that it's implementation defined. MSCV could change the behaviour in their next release. So could gcc. So could any compiler 06:32 Zeno` I don't think they would, but... 06:33 Zeno` I can do it for powers of two :D 06:33 Zeno` but... not very useful 06:35 gregorycu Ok, the compiler is smart enough 06:35 gregorycu I just checked out the dis 06:38 gregorycu I am getting hung up on unimportant details 06:42 Zeno` Thought it might 06:45 hmmmm if getContainerPos(x, MAP_BLOCKSIZE) is hot *enough* to the point where that would matter, then I would say yes, change it to x >> 3 06:45 hmmmm x >> 4 rather 06:46 hmmmm but the thing is you'd need to add a test to see what kind of shift the compiler places 06:46 hmmmm and if it's logical, take care of that case 06:46 hmmmm i know that compilers simply will not optimize the ternary variant. they're not as smart as you'd want to believe 06:47 gregorycu hmmmm: I didn't think they would 06:47 gregorycu But Visual Studio seems to have done just that 06:47 hmmmm really .. 06:47 gregorycu It probably recognises the pattern as a arth shift 06:48 gregorycu It replaces the whole thing with sar 06:48 hmmmm well it depends a lot on how you coded your test file 06:48 gregorycu This was in minetest src 06:48 gregorycu I'm still investigating 06:49 Zeno` gcc optimises it 06:49 gregorycu I'll have more data is 10 min 06:49 gregorycu in 06:50 hmmmm ahh it's marked as inline 06:50 gregorycu Right 06:50 hmmmm yeah i can see that happening 06:50 hmmmm i'm surprised 06:50 gregorycu This all came about because there was code to back-calculate the remainder of the division 06:51 hmmmm i usually have problems getting gcc to make very obvious optimizations 06:51 gregorycu And then that set me down this merry path of looking at division etc. 06:52 Zeno` "back-calculate the remainder"? O.o 06:52 gregorycu Yes 06:52 gregorycu One sec 06:53 hmmmm when i was 15 i used to initialize my variables like this: int x = x ^ x; 06:53 gregorycu v3s16 relpos = pos - blockpos_last * MAP_BLOCKSIZE; 06:54 Zeno` hmmmm, yes... the compiler won't xor eax, eax to clear it 06:54 Zeno` that's a very good optimisation :) 06:54 gregorycu In scalar terms, that's remainder = number - (quotient * DIVISOR) 06:54 hmmmm except compiler don't place xor eax, eax anymore except for generating small code 06:55 hmmmm compilers 06:55 Zeno` yep 06:55 Zeno` who knows what happens at the microcode level though (you might, lol) 06:56 hmmmm nobody really does aside from the intel people 06:56 Zeno` gregorycu, well I'm glad you're looking at that because I'm lost now :) 06:56 hmmmm since the format is undocumented, and even if it were documented, they encrypt microcode updates 06:56 hmmmm ;; 06:57 gregorycu I'll put it simply, if you want to get the quotient and the modulus there are a few ways of doing it 06:58 gregorycu quot = number / divisor; mod = number - (quot * divisor); is one way 06:58 gregorycu Where quot is the result of integer division 06:58 gregorycu For some reason quot * divisor was coming up as a hotspot 06:59 Zeno` ok, that makes sense 06:59 gregorycu quot = number / divisor; mod = number % divisor; is another way 07:00 Zeno` yeah of course 07:00 gregorycu And those two statements with actually get optimised into a single asm statement 07:00 gregorycu will 07:01 kahrl number % divisor is implementation defined if number < 0 07:01 kahrl (and most implementations implement it in a stupid way) 07:01 Zeno` that is also true 07:01 Zeno` so we have two implementation defined optimisations now :) 07:02 gregorycu kahrl: They actually implement it in the sane way 07:02 gregorycu Anyway, yeah, implementation defined 07:04 kahrl well I guess yeah if / rounds towards zero then % should leave negative numbers negative 07:04 kahrl but that's (another reason) why / should round towards minus infinity 07:04 Zeno` anyway, with the current getContainerPos() it takes my CPU 7 seconds to generate two random numbers and pass them to getContainerPos() (for 400000000 iterations) 07:05 Zeno` that's with -O3. With -O0 it takes 8 seconds 07:05 Zeno` (non-inlined version as well) 07:06 hmmmm you could've messed up the test :) 07:06 Zeno` I could have 07:06 Zeno` here's the older version: http://codepad.org/YvOMwrKe 07:07 Zeno` I didn't bother implementing getContainerPos2() 07:08 Zeno` my new version is the same but without inline. *shrug* 07:08 Zeno` I must be bored 07:09 paramat yep hmmmm your screenshot is not showing the new caves but the 'thin vertical walls of water columns directly under the river walls' created by your buggy river code, i recognise them they have that vertical spike structure, fly into one it will be water 07:10 paramat to be sure you could disable rivers to see the new cave system on it's own 07:11 hmmmm sorry yeah 07:11 hmmmm those are rivers 07:11 hmmmm i just noticed they're filled with water 07:12 hmmmm sorry, it sounded like a miscalculated index to a noise buffer 07:13 paramat cool =) 07:13 hmmmm hey paramat, is it okay if i reduce the Y spread factor for the cave noise 07:13 hmmmm right now caves are a bit too vertical 07:14 paramat yes good idea, but remember that will reduce headroom 07:14 paramat a few passages may become unpassable 07:16 paramat to make rivers narrower there is a number in the code that can be reduced. to make fewer rivers i will increase the spread of river 2d noise (plus extra reduction of width to compensate) 07:18 hmmmm hhmmm 07:18 hmmmm it's reducing the headroom a little too much 07:18 hmmmm how do we control this... 07:18 paramat perhaps increasing x and z spreads instead? to 150 or 200 07:18 hmmmm yeah but 07:18 hmmmm you make them thicker too at the same time 07:19 paramat to preserve headroom thats unavoidable 07:19 hmmmm i want the folding to happen on the Y direction more often, but not reduce the height 07:19 hmmmm no, i'm certain it's not unavoidable 07:19 hmmmm hrmm 07:19 paramat okay to be more positive, difficult 07:20 hmmmm noise can be hard to control =] 07:22 paramat 1.5 times wider in x, z directions is not a problem, i would increase x, z spreads to 150 07:23 hmmmm well 07:23 hmmmm one way this *can* be done is to not use the noise values directly to decide whether or not to place an air node 07:24 hmmmm but instead whether or not to place a shape 07:24 hmmmm the shape in particular could be a 3 node vertical line 07:24 hmmmm messy 07:25 hmmmm another way we can do it is by adding a noise post-procesing step to do some kind of unidirectional gaussian blur on the Y axis 07:25 hmmmm I'm not sure how it'd be possible to coax a Y bias directly out of the noise results.. 07:26 paramat interesting ideas but perhaps for v8 instead? that'll get you started on that ;) 07:26 hmmmm yeah. 07:26 hmmmm I think I'll try going with idea #2 out of those 07:28 paramat v7 tunnels are slow enough i suggest just squashing them simply with x, z spreads of 150 07:28 paramat i mean v7 is slow enough 07:28 hmmmm it was fast until v5 caves came along 07:28 hmmmm haha.. =/ 07:28 hmmmm seriously 07:28 paramat hehe 07:28 hmmmm it was like 70ms per chunk 07:28 hmmmm now it's 220 07:29 paramat 70 with mountains and rivers? 07:29 hmmmm yes 07:29 paramat wow thats shocking 07:29 paramat cant see how 07:29 paramat just 2 more 3d noises on top of 2 existing 07:29 hmmmm maybe i should check 07:30 paramat could reduce tunnel octaves to 3 07:31 hmmmm 130-160 without caves 07:34 paramat i would prefer to keep caves as in my PR, not squashed, verticality is good, after all players want to descend, making them more horizontal will frustrate, it's already hard enough finding a route down. speed descending is huge fun too 07:38 hmmmm ohh 07:39 hmmmm i forgot about my ore-generated caves 07:39 hmmmm derp 07:39 hmmmm no wonder why it's so slow 07:45 paramat maybe calculation of river and mountain noises can be skipped when underground? i'll look into it 07:46 hmmmm they can 07:46 hmmmm i'm not very interested in further developing v7 though 07:46 hmmmm it's a piece of junk - it always was a piece of junk 07:46 hmmmm half developed ideas 07:50 paramat its actually my favourite core mapgen 07:52 gregorycu Zeno`: If you get a chance, did you want to pull #2140 locally and check it out 07:52 ShadowBot https://github.com/minetest/minetest/issues/2140 -- Water perf improvements by gregorycu 07:56 paramat i'm inspired to tune it and improve it, i see the potential in it, so could you perhaps leave it mostly in my care while you start fresh with v8? =) 08:00 paramat a problem with more horizontal caves is increase of surface griefing: scars and gouges along the surface 08:04 paramat the way i see it, with caves, being a vertical route is more important than being a horizontal route, so squashing them not desirable (while still being a cool idea in isolation) (sorry ... i am opinionated and passionate) 08:08 paramat O/ 08:24 Krock updated #2138 08:24 ShadowBot https://github.com/minetest/minetest/issues/2138 -- Hide minetest version string by SmallJoker 09:30 Zeno` gregorycu, are you awake? 09:30 Zeno` void raiseModified(u32 mod, const char* reason) <--- the preferred minetest style is void raiseModified(u32 mod, const char *reason); 09:30 Zeno` same with & 09:32 nrzkt Zeno, can you open a test server with #2119 for diagnostic if all is right, if i do the diagnostic myself it's not clear. Sapier request a 1 week running server to test functions 09:32 ShadowBot https://github.com/minetest/minetest/issues/2119 -- Rewrite client/server packet handling by nerzhul 09:33 Zeno` nrzkt, looking at how I might do it now 09:33 nrzkt you can simply pull my own branch https://github.com/nerzhul/minetest/tree/packet-handling and compile it 09:34 Zeno` yeah I know that :P I really meant *where* I can do it 09:34 nrzkt oh :) sorry 09:34 Zeno` I can testing using my server I guess 09:35 Zeno` give me a few moments. I'll set it up 09:36 kilbith thanks very much Zeno` 09:37 kilbith minetest_game only should be sufficient 09:38 Zeno` Oh, it'll just be using my normal minetest_game 09:38 Zeno` doing backups and stuff now 09:39 Zeno` takes a while (database, excluding anything else, is 14GB) 09:41 leat Zeno`: what backend are you using? 09:41 Zeno` leveldb 09:42 leat never corrupted so far? 09:42 Zeno` none that were an issue 09:42 hintss xD 09:43 Zeno` I have had corruptions but they were caused by something related to teleporting near to world boundaries 09:43 Zeno` still haven't worked that one out 09:44 Zeno` nrzkt, I'm testing #2119, right? 09:44 ShadowBot https://github.com/minetest/minetest/issues/2119 -- Rewrite client/server packet handling by nerzhul 09:44 nrzkt yes 09:44 nrzkt it's the branch to test, packet-handle_2 is next PR, and is not ready for production 09:44 Calinou can you host a server to test? 09:45 nrzkt me ? 09:45 Calinou you or Zeno` 09:45 Calinou we'd need a large server to ensure it works well :/ 09:45 kilbith hmmmm: the nerzhul's pull is for the layer 7, not the layer 4 (Enet). 09:46 Zeno` I am building now, nrzkt 09:46 Zeno` I'll host the test 09:47 nrzkt perfect, it's better someone other than me have the hosting, neutral server :) 09:48 Zeno` ok it's up and running 09:48 Zeno` mtzeno.com 30000 09:49 * kilbith is coming... 09:50 Zeno` Calinou, I will reset your password 09:50 Calinou no need 09:50 Zeno` got it now? :) 09:50 Calinou works 09:52 nrzkt for somes which are saying the code is huge, i cannot do a more little commit because we need all of those parts for the base. I know two classes are useless, but they are there for compatibility of the code reading, i'll remove it later. 09:56 Zeno` nrzkt, well no immediate issues and the server load does seem to be a bit lower 09:56 Calinou https://github.com/minetest/minetest_game/pull/401 09:56 Calinou comments? 09:57 nrzkt packet processing is faster when huge amount of packets, but load is due to map, not network 09:57 Calinou I'd like the default crosshair to be an image 09:57 gregorycu I am awake, but I'm watching the game 09:58 gregorycu void raiseModified(u32 mod, const char *reason) 09:58 gregorycu What's the difference? 09:59 gregorycu Oh 09:59 gregorycu Seriously? 09:59 Zeno` nrzkt, the biggest bottleneck in communications is zlibCompress anyway 09:59 nrzkt ofc 10:00 Krock Calinou, looks horrible, srsly 10:00 nrzkt i'm rewriting L7 part, because there are duplicated and optimization. Next part will be packet rewrite, to have a common interface and also remove some duplicate code and optimize some processing (like session search) 10:01 Krock good luck 10:04 nrzkt i'm blocked on a byte conversion problem it seem 10:04 nrzkt the input is correct but the server output is incorrect... the problem was in u32 conversion 10:04 Zeno` nrzkt, be sure to let me know of updates/fixes since I'm running the test on my real server :P 10:04 nrzkt i have no fixes to do on this pr 10:04 Zeno` oh, phew 10:05 Zeno` but if you do, let me know :) 10:05 Zeno` testing client now... 10:05 nrzkt it's working very well, problems are on PR-2 , no problem, i don't see any probme 10:08 Zeno` ok, well the server is running with the patch and now my client is as well 10:08 Zeno` I don't think I've seen any issues so far 10:19 Zeno` so far so good nrzkt. I'll let you know if I have issues in the coming week 10:19 Zeno` let sapier know I'm hosting the patch as well 10:19 nrzkt no problem i'm waiting the merge 10:20 nrzkt vanessaE uses the merge too since this night 10:20 kilbith he will read the logs, the admins feedbacks would be useful 10:22 Zeno` well the more testers the better ;) 10:25 kilbith the start-up loading seems faster now that L7 is improved 10:28 est31 there is an issue with master: the hearts are drawn over the HUD when it has two lines 10:37 est31 https://lut.im/WZc5eNkR/79pCAwO4?t 10:38 est31 that was on VanessaE survival 11:01 gregorycu Back 11:06 Zeno` gregorycu, scroll up ;) 11:06 Zeno` also your PR doesn't seem to apply? 11:07 gregorycu You talking about merge conflicts? 11:08 Zeno` Not sure. Just looking at the PR for now 11:08 Zeno` "we cannot automatically merge this" 11:08 Zeno` I haven't tried to apply it myself yet 11:09 gregorycu Yeah, merge conflict 11:22 sapier https://github.com/minetest/minetest/pull/2132 http://imgur.com/zfSqJji,NUxEBYx guess that's all we can do about reducing buttons on mainmenu. 11:23 sapier -mainmenu + mainscreen 11:23 kilbith sapier: read logs plz. 11:23 sapier somethin special there? 11:23 kilbith yes, testing 2119 on zeno's server 11:24 sapier and? 11:24 kilbith no problem to signal for the moment 11:25 kilbith that's seems (subjectively) faster 11:25 Zeno` I'd ignore the subjective thing ;) 11:25 sapier no issues yet is nothing worth to mention 1 day after start of testing 11:25 Zeno` there are too many variables 11:26 sapier Zeno`: as of code design it should be faster, yet I don't know if the effect is large enough to realize 11:26 sapier if your server ain't close to the edge about what it can handle you most likely wont notice a difference 11:26 Zeno` sapier, I agree. The performance *is* increased but I don't know if a user could notice it 11:27 sapier I think it's more about increasing the maximum amount of clients 11:27 Zeno` yes 11:27 Zeno` and neither my server nor VanessaE's get 15+ clients these days :( 11:27 sapier and of course it's code cleanup :-) 11:28 sapier still imho we should wait a week and see what's gonna happen 11:28 Zeno` yeah, that's why I applied the patch 11:49 gregorycu Zeno`: So, what do I do? 12:00 Zeno` rebase? 12:01 Zeno` who wrote the particle system? 12:03 Zeno` ParticleManager::handleParticleEvent() is using unitialised stuff 12:09 gregorycu We leak a lot of stuff 12:10 gregorycu About 150k leaks 12:11 gregorycu Do we close lua down properly? 12:11 Zeno` it's not a leak 12:11 Zeno` it's using objects that are not initialised 12:13 gregorycu I'm not talking about the particle system, I'm talking about what I am doing 12:13 gregorycu Investigating pipeworks 12:14 Zeno` actually it might be a bug in #2119 12:14 ShadowBot https://github.com/minetest/minetest/issues/2119 -- Rewrite client/server packet handling by nerzhul 12:15 gregorycu What is 12:16 Zeno` Particles using unititialised data 12:16 Zeno` rebuilding now 12:17 nrzkt i don't modify the current running code, this may be uninitialized before 12:20 Zeno` well, I dunno 12:20 Zeno` running tests again 12:20 Zeno` https://github.com/nerzhul/minetest/blob/packet-handling/src/client.cpp#L1806 12:21 Zeno` it's hard because each test takes about 20 minutes 12:21 Zeno` but id is supposed to be 32-bit 12:26 nrzkt in packet it's 16bit 12:26 nrzkt we need to cast it, then 12:26 nrzkt i'll fix it soon, i go to lunch 12:58 gregorycu Good news, I found a (the?) leak 12:59 gregorycu We are leaking WieldMeshSceneNode objects 13:03 nrzkt Zeno, a cast from u16 to u32 resolve the problem ? 13:10 Zeno` I changed u16 id; to u32 id; 13:10 nrzkt no 13:10 nrzkt BAD 13:10 Zeno` I know, but something very odd is happening here 13:10 nrzkt if you do that extractor tries to extract u32 value whereas packet has ONLY a u16 value (yes it's stupid but server send that) 13:11 nrzkt look at SendDeleteParticleSpawner in server.cpp in master 13:13 Zeno` yeah 13:15 Zeno` I actually can't work out wtf is going on :/ 13:17 Zeno` the code is complicated 13:17 Zeno` I'll look again tomorrow I think 13:18 nrzkt i updated the pull request and cast read u16 to u32 13:19 nrzkt i you can confirm the bug disappear it would be cool 13:22 Zeno` I don't know if this is an issue at all now :/ 13:23 sapier guys never ever change types of packet elements!!! that's gonna horribly fail! 13:26 Zeno` s/an/the 13:31 gregorycu Fucking hell, I thought I found the leak, all I found was _a_ leak 13:31 gregorycu lol, same story as you Zeno 13:32 Zeno` All I know is that https://github.com/minetest/minetest/blob/master/src/particles.cpp#L476 causes an initialized variable to be accessed/used down the line 13:33 Zeno` whether that's because of the patch or not I haven't determined 13:34 Zeno` mainly because I find the whole of particles.cpp fairly confusing. I dunno why 13:35 gregorycu Maybe because it is confusing? 13:35 Zeno` Could be 13:48 sapier https://github.com/minetest/minetest/pull/2132 anyone to provide better starter button icons? 13:50 sapier is there still a leak in particles? 14:01 gregorycu Are you referring to pipeworks? 14:01 gregorycu It's leaking entities 14:01 gregorycu By "it", I mean the core engine 14:03 gregorycu I really wish I knew what I were doing 14:03 gregorycu was 14:03 gregorycu am 14:04 gregorycu Anybody know much about irrlicht? 14:06 sapier didn't you use pipeworks to flood a mapblock? 14:06 sapier irrlicht is not related to pipeworks ;) 14:08 gregorycu I think you're confusing me with a modder or something 14:09 gregorycu We are leaking objects 14:09 gregorycu WieldMeshSceneNodes, to be precise 14:11 sapier great 14:12 gregorycu Looks to be a dodgy refcount 14:12 gregorycu I'll have a solution within the hour 14:27 kahrl gregorycu, try removing the grab() at content_cao.cpp:948 14:27 gregorycu Already have :) 14:27 kahrl ah 14:27 gregorycu I'm trying to figure out what's going on, I think there are more issues 14:28 gregorycu It's lines like that kahrl, that really bug me 14:28 gregorycu It's like a dash of magic to make it work 14:29 kahrl I don't know why I added it 14:30 kahrl probably because all the other cases grab their node 14:30 kahrl but those aren't allocated with new so it makes more sense there 14:31 gregorycu I really dislike the... informal nature of it all 14:31 gregorycu That's cause of irrlight 14:31 gregorycu Too easy to stuff up 14:37 kahrl well I don't really see a good way to make it more formal 14:37 kahrl nobody is going to rewrite minetest in rust 14:37 kahrl and smart pointers... bleh, even easier to stuff up 14:39 gregorycu What's rust? 14:39 gregorycu Doesn't matter 14:39 gregorycu The metrics I was using are inaccurate, that may have fixed it 14:40 kahrl a programming language, compiled like C++, supposedly with similar performance, but pointer types with built in memory management semantics 14:40 gregorycu But I know C++ 14:40 gregorycu Let's stick to C++ 14:40 kahrl yeah 14:41 gregorycu I'll rephraise, I though I knew C++ 14:41 gregorycu thought 14:58 nore sfan5, thoughts about game#400, game#397 and game#388? 14:58 ShadowBot https://github.com/minetest/minetest_game/issues/400 -- Add straw by kilbith2 14:58 ShadowBot https://github.com/minetest/minetest_game/issues/397 -- Follow naming convention of textures and sounds in doors by CraigyDavi 14:59 ShadowBot https://github.com/minetest/minetest_game/issues/388 -- Add fancy inventory for bones by CraigyDavi 15:00 sfan5 nore: game#388 is good 15:00 ShadowBot https://github.com/minetest/minetest_game/issues/388 -- Add fancy inventory for bones by CraigyDavi 15:00 sfan5 (good = you can merge it) 15:00 sfan5 s/you/we/ 15:01 nore ok, doing that 15:01 sfan5 game#397 is ok too 15:01 ShadowBot https://github.com/minetest/minetest_game/issues/397 -- Follow naming convention of textures and sounds in doors by CraigyDavi 15:03 sfan5 i commented on game#400 15:03 ShadowBot https://github.com/minetest/minetest_game/issues/400 -- Add straw by kilbith2 15:05 shadowzone Any news on my PR or is that not gonna be merged and instead made into a button on the pause menu? 15:06 nore shadowzone, link? 15:07 shadowzone https://github.com/minetest/minetest/pull/2135 15:09 kilbith sfan5: better ? https://lut.im/VYEr5qfk/Q957kKA2 15:10 sfan5 kilbith: i don't see a difference 15:10 kilbith i've lightened more top & bottom 15:10 sfan5 try making it even more lighter 15:13 kilbith sfan5: https://lut.im/qnCt65RU/T3h0iQxY 15:13 sfan5 those look exactly identical 15:13 sfan5 are you sure the texture changed 15:14 kilbith hmm, no. +10 of light and +10 of contrast 15:18 Krock kilbith, I like those 15:19 kilbith like everyone 15:24 kilbith sfan5: i was saving the file in the wrong folder, sorry 15:24 kilbith sfan5: better now ? https://lut.im/u4ChbFNs/zHgR7lWg 15:24 sfan5 kilbith: yep 15:24 kilbith ok, pushing... 15:26 kilbith ok, ready. 15:28 sfan5 nore: game#400 is good too 15:28 ShadowBot https://github.com/minetest/minetest_game/issues/400 -- Add straw by kilbith2 15:29 nore sfan5, ok 15:31 nore done :) 15:35 kilbith someone has tested game#395 ? 15:35 ShadowBot https://github.com/minetest/minetest_game/issues/395 -- Make furnace work even when unloaded by Kalabasa 15:37 nore not yet 15:47 est31 I think the issue in #395 is a very basic one related to abms. When you walk away from your farm, you expect your plants to grow when you are not present 15:48 ShadowBot https://github.com/minetest/minetest/issues/395 -- Config file on XDG dir on Linux 15:48 est31 meant game#395 15:48 ShadowBot https://github.com/minetest/minetest_game/issues/395 -- Make furnace work even when unloaded by Kalabasa 15:50 sapier est31 how is furnace related to farm? 15:50 est31 so I think we should have a param to the register_abm method that contains whether the abm should be simulated when loading the map again 15:50 est31 ^that way 15:50 sapier no we shouldn't 15:50 sapier abm is a basic mechanism 15:51 sapier if this complexity is needed by a mod (even default game mods) the mod has to handle it 15:51 est31 and another method? This is neeeded more often than just once 15:52 sapier because mods abuse abms for things they haven't been meant for 15:52 sapier and as always once someone did it others copy the bad example 15:53 est31 so that speaks against a "hand-made" solution for the furnace and for an engine solution 15:54 sapier imho if it's needed that hard we'd have to add some sort of "complex_abm" but don't bloat regular abm handling by that complexity 15:55 sapier most abm's work just fine without simulation, if they'd have to do it too that'd cause a lot of additional overhead for no reason 15:55 gregorycu How do you simulate an abm reliably? 15:56 sapier see the commit he's calculation the time from last abm at this position by storing information in metadata 15:56 sapier doing this for all abms is quite crazy 15:56 est31 you could give the method a param that sais how often it would have been invoked if it were loaded 15:56 est31 yes i agree 15:56 sapier you'd bloat metadata as well as cause additional overhead for each single node 15:57 est31 therefore we need to separate between "bloated" nodes and nonbloated ones. 15:57 sapier and even more severe what to do if there are multiple abm's attached to a node? 15:57 est31 we only need to store when a mapblock/chunk/whatever was last offloaded by the server 15:57 est31 in the db 15:58 sapier we don't know when it was last offloaded by server 15:58 sapier if we wanted to know we'd have to update all nodes prior saving block 15:59 sapier and it wouldn't help for the situation the the furnace commit fixes too because you still wouldn't know when this abm was called last 15:59 est31 we can't invoke something when the server offloads? 16:00 sapier we can but we don't do it and it's quite significant overhead for guessed 0.01 nodes per block which really need it 16:00 sapier and as you see in furnace commit there is another way to do it not causing this overhead 16:00 est31 through code duplication, i see 16:00 sapier not necessaryly 16:01 est31 but? 16:01 sapier you could encapsulate that code within a register_simulated_abm 16:01 est31 ok thats goos 16:01 est31 good 16:01 sapier better register_timed_abm 16:02 sapier those who really need the time information may use it those who don't can still use the lightweight version 16:02 gregorycu I think it's better just to have the ability to force nodes to be loaded 16:02 sapier no it's not 16:02 gregorycu You can't possibly be accurate trying to "fast forward" node abms to catch up 16:02 sapier it's violating minetest design specification 16:03 gregorycu How dare the wants of the people violate the design specs! 16:03 sapier it's just a workaround used by those who don't wanna write sufficient code 16:03 est31 you are never accurate, as ambs always have a probability 16:03 gregorycu I'm not talking about probability 16:03 gregorycu What if one node influences another node 16:03 gregorycu And that node was loaded 16:03 sapier gregorycu: you didn't think your suggestion to the end 16:03 est31 and its stupid to keep a bytestring in memory and call all n seconds a method to check change 16:04 gregorycu Why? 16:04 gregorycu How did I not? What am I missing? 16:04 est31 because you can offload it, execute the stuff and load it again 16:04 sapier if server shuts down a node will be saved anyway so you'd actually need the persistency code to preserve the states 16:04 est31 do you want to keep all furnaces in memory? all workstations? all everything? 16:04 sapier unless you're lazy and ignore those errors 16:04 gregorycu I thought we were talking about things working in the background? 16:05 est31 yes there are administrative world anchors see technic mod for details 16:05 est31 but those introduce lag 16:05 sapier so once you are able to keep your states throughout server restart, don't you think those states won't be available throughout block reload too? 16:05 est31 and bloat memory 16:05 gregorycu I think you are misunderstanding what I'm saying 16:05 gregorycu Well, est31 understands 16:05 sapier I do gregorycu 16:06 sapier whatever a node would've had to do can be done on node loading too IF this is implemented 16:06 gregorycu That's not true 16:06 sapier it is 16:06 gregorycu What if a node influenced another node 16:06 est31 yes of course for that there is another mechanism 16:07 est31 the same one the administrative world anchor uses 16:07 sapier a node is a static element not supposed to interact to other nodes 16:07 gregorycu But the other node is in memory the whole time 16:07 sapier if you wanna have active elements use entities 16:07 gregorycu People often make machines as nodes 16:07 sapier gregorycu: following your logic server would've to keep whole map active all the time 16:08 est31 ^ 16:08 gregorycu When did I say keep the whole map loaded? 16:08 gregorycu Just keep the important blocks loaded, via the anchors 16:08 sapier there always will be a node unloaded which could be checked by some other node 16:08 gregorycu Not with anchors 16:09 sapier anchors wouldn't help 16:09 gregorycu Why not? 16:09 sapier because it'd still not guarantee that noone relies on nodes not anchored 16:09 gregorycu Right, but the onus is on the player to get that right 16:09 T4im est31: it should introduce less lag than an additional player though if configured right… especially in technic it seems common for players to start idling around their quarries keeping 3x3 blocks loaded instead of possibly just one from an anchor 16:10 T4im also seen players multiaccounting for that purpose 16:10 est31 VanessaE doesn't want to give me some for some reason. I'll idle now. 16:10 gregorycu I agree with est31 however that we need some way to run code just before a block unloads 16:11 gregorycu Or server shutdown 16:11 sapier gregorycu: there's very very very little reason for keeping a node active, almost anyone asking for it by now did specify a reason which could be done without keeping a node active. 16:12 est31 gregorycu: this API might interest you https://github.com/minetest/minetest/blob/master/builtin/game/forceloading.lua 16:12 gregorycu Well, I just said one 16:12 gregorycu One node influencing another 16:12 sapier it is additional work yes ... but I don't wanna support violating design rules just because of lazyness 16:12 sapier if one node knows about the other one influencing it it could store the other nodes state too 16:13 gregorycu Every node could store every other nodes state 16:13 sapier as long as it's unloaded that state will be valid 16:13 est31 the most clean way is as sapier said an own method register_counting_abm or sth along that line and then give the method an integer of how often it would have been called. 16:13 gregorycu This is a very good point 16:13 gregorycu sapier just made an excellent point 16:14 gregorycu Rather than put the logic in the nodes, put the logic outside the nodes 16:14 gregorycu But where do you save it? 16:14 sapier actually nodes are not supposed to contain complex logics 16:14 est31 even plants have 16:14 gregorycu Is that also against the design rules? 16:15 est31 if dirt if light if not overpopulated 16:15 sapier see gregorycu we've got heavy entities and lightweight nodes. I try to keep the nodes lightweight because if you add all those features entities already provide they're gonna be as heavy as entities are now 16:16 sapier node metadata storage is a heavy operation it's supposed to be used with caution and not excessive 16:16 gregorycu Well, is there some mod design guidelines somewhere? 16:16 sapier nothing written 16:17 Zeno` how people write mods is not controllable (IMO) 16:17 est31 due to LGPL 16:17 gregorycu *sigh* 16:17 sapier we can just tell how core code is done 16:17 T4im well, you do have a lot of cargo culting in the mod area.. so write good code that is being copied and you get better copies 16:17 gregorycu I think everyone is being retarded in different ways 16:17 Zeno` no, due to the Lua API 16:18 gregorycu Or I'm fucking cranky 16:18 sapier T4im: ppl tend to copy worst example 16:18 gregorycu Or both 16:18 sapier because good ones usually look complex at first glance 16:18 est31 :D 16:18 gregorycu Only if the developer is stupid 16:18 * VanessaE peeks in 16:18 est31 (or learning) 16:18 T4im sapier: from what I've seen they tend to copy anything that they understand does something they want to have done.. 16:19 Zeno` yes, and the mods that are "stupid" tend to end up at the bottom of the pile 16:19 sapier nope in lua you can't hide the implementation details behind a clean api 16:19 gregorycu Give me a good example on how to structure a mod, and I'll follow it 16:19 T4im the good examples are often not as clearly separated enough to be recognizeable 16:19 gregorycu I'll even especially follow it if I can understand how it is good 16:19 Zeno` more people should use the Lua profiler thing that sapier (?) added 16:19 sapier gregorycu: we don't wanna force any mod structure that's up to everyone elses opinion 16:20 est31 good to know there is one 16:20 gregorycu good for you 16:20 gregorycu Because when I said provide guidelines, and good examples 16:20 T4im for example everyone seems to copy isolating crafting recipes into own crafts.lua files or similar.. this is _bad_ design, as it breaks functional cohesion.. put the recipes to their node definition! and separate node from node instead of layer by layer (nodes, abs, crafts each in own file just makes you have to edit every single file every single time) 16:20 gregorycu I actually meant rules that must never be broken 16:20 sapier yes it's been added because it's always been mobf to be blamed about bad minetest performance ... while it's quite often been a different mod causing the lag 16:20 T4im this is bad design copied from default: 16:20 jin_xi a collection of best practice example code for "how can i..." type questions would be nice 16:20 T4im fix default, and you have that less often in mods 16:22 est31 like give a nice register_lossless_abm method ppl can use before they start forceloading 16:22 sapier jin_xi: you are the modders you're free to maintain this database us core devs are quite busy improving the internal things ... and trying to gain performance even for abusive mods ;-) at least most times 16:24 sapier pipeworks issues for example aren't fixable in general because forceloading is against basic design decisions ... that's why the api is "use on your own risk" too 16:24 gregorycu Can you explain why pipeworks is broken 16:24 gregorycu What has forceloading got to do with it 16:24 sapier by design minetest is a game for players keeping as less of world active as possible 16:24 gregorycu Right, but forceloading a block is like someone standing there 16:25 gregorycu Do we support people standing in the world? 16:25 sapier exactly and if you do this too often you're gonna cause a lot of server load 16:25 T4im less bad as that.. someone standing there loads all the blocks around too 16:25 gregorycu We are not talking about server load 16:25 gregorycu Here, let me play the aces 16:25 sapier server has to do almost same as if a player was there 16:26 gregorycu I'm looking at one memory leak that exists in core, that is causing from creating entities 16:26 gregorycu caused 16:26 sapier e.g. handle abms handle entities 16:26 sapier AND send all of them to clients 16:26 jin_xi i think mt should also offer some flexibility, not every type of game needs all stuff. maybe a skeletal game intended for supporting more dynamic mods/machine building in singleplayer can be considered? 16:26 gregorycu This memory leaks occurs regardless if there is forceloading or not 16:26 gregorycu This has actually been discussed 16:26 sapier gregorycu: that's something different ;-) 16:27 gregorycu Oh 16:27 gregorycu But you said pipeworks was broken because people abuse forceloading 16:27 sapier yes they use forceloading causing lot of additional load, if there's a entity leak without forceloading that's a different issue 16:27 sapier yet most ppl do use forceloading and pipeworks 16:28 gregorycu Right, that's very good, but irrelevant 16:28 sapier can you provide a situation where entities are lost without forceloading? 16:28 gregorycu Yes 16:29 sapier tell me I'll have a look at it 16:29 gregorycu Just make a mod that spawns a WieldMeshSceneNode 16:30 gregorycu And that also deletes it 16:30 sapier how can a mod spawn a wieldmeshscenenode? 16:32 sapier wait, I was looking at that code some time ago because of gles2 bugs in there ... I guess you just need a nodebox inventory item 16:32 gregorycu register_entity with visual = "wielditem" 16:32 sapier you shouldn't even need a mod for it we should have those items in default game 16:33 gregorycu Ok, spawn a whole bunch of entities with that 16:33 gregorycu And make sure you clean them up properly 16:33 sapier entities don't have wieldmeshscenenodes 16:33 sapier for what I remember those are only used for the player hand 16:34 gregorycu Well, I've been looking at the code 16:34 gregorycu So, I don't know 16:34 gregorycu Your memory vs my eyes 16:34 sapier can you tell me? maybe there's some location I haven't in mind right now 16:34 gregorycu I've already found the leak 16:34 gregorycu You know, the one you were pretty convinced didn't exist 16:35 sapier ok world creation dialog is broken :-) 16:35 sapier how to reproduce? ;-) 16:35 Zeno` so are particles 16:36 T4im sapier: btw not "_if_ there's a leak without forceloading", there _is_ a leak, (puhfa told me you didn't believe him :P) and dozens of people can confirm that.. since over 2 years at least already freezing up computers occasionally by swapping gbit's to death 16:36 sapier Zeno`: what's broken on particles? 16:36 T4im gregorycu: oh you found it? :D 16:36 gregorycu Yes, I found one leak 16:36 Zeno` sapier: use of unititialised variables 16:36 T4im yay \o/ 16:36 gregorycu That specifically is around "weilditem" entities 16:37 gregorycu Which is used heavily by pipewrosk 16:37 sapier T4im: we've had multiple leaks in minetest some new some old ... I doubt everyones out of memory was related to a single bug 16:37 sapier Zeno`: line of code or precise description of error ;-) 16:37 Zeno` sapier, I believe I pasted it earlier 16:37 T4im sapier: this one behaves similar since then though.. always triggered around massive amounts of entities, even after they are gone 16:38 Zeno` I'll track it down properly tomorrow I guess 16:39 sapier what's uninitialized there? 16:39 gregorycu T4im: There looks to be another leak, this isn't over 16:39 T4im ah, still thank you :D 16:40 sapier I guess I need to define how to report bugs ... "it's broken fix it" ain't a bug report but nonsense 16:40 Zeno` sapier, I will give the full valgrind results tomorrow 16:41 gregorycu Are there guidelines on how to report bugs? 16:41 Zeno` I wasn't going to come back online (to IRC) tonight so I didn't bother earlier 16:41 sapier well I just used valgrind and there are obviously new leaks in minetest since I last used valgrind 16:41 puhfa sapier: uh yeah, you seemed to misunderstand me the other day. i didnt use forceloading, just good old-fashioned forceful spawning of entities :P 16:41 puhfa so now we got that one cleared 16:41 Zeno` I'm not using valgrind to detect leaks. I'm using it to detect use of data (objects) that are not initialised 16:42 gregorycu puhfa: He understood you, it was just easier to blame something else 16:42 T4im sapier: you've been ignoring bug reports that even came with unit test… defining "hot to handle pull requests and bug reports" might help just as much as to define how to wrote a bug report 16:42 T4im write* 16:42 sapier nope I thought he had forceloading enabled. Yet massive entity spawning as reason ain't someting putting a bug on top priority ;-) 16:43 gregorycu What about entity leaking 16:43 gregorycu Which was what was reported 16:43 puhfa isnt there a mod that causes mined stuff drop on the ground as entities minecraft-like? 16:43 sapier if it's leaking in regular usage it's important, by now I only did understand it's happening on massive entitiy overload 16:43 Zeno` It's kind of hard to write a coherent bug report because particles.cpp is just about unreadable. So if I can't fix it I'll just paste the valgrind results 16:44 VanessaE puhfa: item_drop and item_tweaks can both do that. 16:44 puhfa i mean, that would be 'spamming' in the same sense, almost at the same rate 16:44 sapier Zeno`: a bug report contains following things: 16:44 T4im sapier: I think it only is then noticeable.. small amount of entities over longer time seem to have the same effect 16:44 sapier 1) exact version (commit) 16:44 VanessaE puhfa: and default game/engine will do that too if your inv is full 16:44 Zeno` sapier, please don't tell me what a bug report should contain :P 16:44 sapier 2) detailed desctiption what you do to cause the bug to happen 16:44 gregorycu It has to be an item spawned with the weilditem view type 16:44 sapier 3) what exactly is wrong 16:44 sapier 4) what do you expect to happen 16:44 puhfa all this ive told you :P 16:45 sapier that's only the minumum requirement! 16:45 Zeno` sapier: what I expect to happen is for objects not to be used unititialised! 16:45 Zeno` And I know how to report a bug :/ 16:45 sapier well Zeno` usually ppl don't follow this rule recently but just tell somethin it's broken wehn I do some thing 16:45 gregorycu This whole conversation is a joke 16:46 gregorycu I'm going back to finding those remaining entity leaks 16:46 VanessaE sapier: to be perfectly fair, didn't you JUST say that the world creation dialog is "broken", without giving an exact description of how broken it is? :) 16:46 puhfa isnt that worth knowing as well? even tho it might not be a full bug report fully investigated pointing to a source line you need to change and probably even a piece of code for you to put there 16:46 VanessaE gregorycu: where do you stand on that btw? 16:46 Zeno` I will post a bug report tomorrow if I cannot fix it 16:46 Zeno` I've already said that 16:46 VanessaE gregorycu: or rather, how deeply is pipeworks involved in it? I'm a tad lost 16:46 puhfa i mean, people who report these things are doing charity there 16:47 sapier because it's something I'm gonna have to fix myself anyway VanessaE ;-) 16:47 Zeno` And you'll have more data than you can poke a stick at :P 16:47 gregorycu VanessaE: There is a specific bug that causes entities with visual = "wielditem" to leak 16:47 sapier of course if you don't want someone else to fix your bugs you can report it the "it's broken" way too ;-) 16:47 VanessaE sapier: while you're at it, can you tune the "client" tab a bit? the username/password/port/server fields are a little too narrow imho 16:47 sapier nope 16:47 gregorycu Pipeworks spawns a lot of these things, so it's sensitive to this bug 16:48 sapier client tab is formspec and not my work 16:48 puhfa well its really up to you wether you only react to 'complete' reports 16:48 sapier puhfa: you can report incomplete too but chances someone is gonna fix it are way less then if it's complete 16:49 sapier if I first have to spend hours on reproducing a bug I'm not even start to fix it 16:49 puhfa and that is understandable 16:49 sapier if reproducing takes only a few min I can start fixing it within a few min ;-) 16:49 puhfa but thing is, i think there has been a pretty clear issue reported here (because i havent found no other official channel to report them), confirmed by other people 16:49 T4im sapier: as said, I've seen very slow response on bug reports including a reproducing unit test… 16:50 puhfa yet you dont seem to be interested in anything else but going on the defense 16:50 T4im that's reproduceable in seconds 16:50 sapier puhfa: best to report a bug is still a github issue there the information is at one location and everyone can find it 16:50 puhfa i dont care if its your code that is at fault here. heck, mt is a huge project and c++ is error prone 16:50 sapier that's not a matter of c++ or something else ;-) 16:51 puhfa it is when you have to handle the memory yourself (which happens to be something i enjoy) 16:51 Zeno` puhfa, it's not that huge 16:51 puhfa so in that sense leaks are expected. i just dont get the attitude 16:52 sapier all of those "automemoryhandling"-languages require a lot more cpu and memory then non auto ones ... price is developer has to take more care 16:52 sapier hmm I only see shader memory lost in regular usage 16:52 est31 sapier: its called garbage collect 16:52 puhfa thats why i like using c myself when doing recreational stuff, even though i would probably be better off with something that would hold my hand a bit more 16:53 puhfa its fun to take care of it yourself, i get it 16:53 puhfa and if you do it right, you get some more cycles which is a bonus 16:53 sapier yet who can tell me how to reproduce one of those leaks 16:53 puhfa me, T4im and i think gregorycu has managed to reproduce them as well 16:53 gregorycu With pipeworks? Have you got pipeworks? 16:53 T4im sapier: the truth is some of us are cobbling frustrated because bugreports and even finished bugfixes are being ignored… I would add a lot more of that stuff if those I did wouldn't be ignored allready… it seems features are always taken with more gratitude than bugfixes… tell us what we can do to improve that… not what we might already have tried… 16:54 sapier better without pipeworks it'd be more easy 16:54 puhfa well. just toss stuff from your inventory to the ground and pick it back up. rinse and repeat about 10000 times if you want to do it manually 16:54 sapier they're not igored we're just slow on merging pulls 16:54 gregorycu That may not be good enough 16:55 T4im sapier: you seem quicker on merging features than bugfixes 16:55 gregorycu Ease up 16:55 gregorycu register_entity with visual = "wielditem" will get you an entity which will leak 16:56 sapier I see only a single fix on first pull request page T4im anything else is a feature addon or language update 16:56 sapier and the "fix" is actually a feature addon too 16:56 sapier gregorycu: do you have that code already? 16:57 gregorycu No, I've used pipeworks 16:57 sapier how much do I have to do in pipeworks to reproduce it? 16:58 puhfa i had 64 nodes spawning/killing entities every abm, ate about 1 Gb in 10 minutes that way 16:58 gregorycu Not much 16:58 sapier puhfa: sorry but I'll first fix gregorycu's one as you're doing a hardcore benchmark and not regular usage 16:58 VanessaE sapier: seems to me a few nodebreakers and deployers in a closed loop would be enough 16:58 gregorycu Again 16:59 gregorycu puhfa is not doing a hardcore benchmark 16:59 puhfa again sapier it was not a benchmark :/ just a pipeworks machine built for regular gameplay 16:59 VanessaE [breaker] ====tubes==== [deployer] ---> back around to the breaker several loops like that 16:59 gregorycu You're doing what you did yesterday 16:59 VanessaE with blinky plants activating the deployers/breakers 16:59 VanessaE and you placing nodes between them until the tubes are nicely full 17:00 VanessaE then just let it run on its own after thjat 17:00 VanessaE that* 17:00 sapier 64 nodes spawning killing entities every abm seems like hardcore to me 17:00 T4im the more the faster it will fill… but even a single machine like that will suffice if you are willing to wait 17:00 gregorycu It's spawns one a second 17:00 gregorycu 64 entities a second is a benchmark? 17:00 puhfa sapier: :D why does it matter anyway? 17:00 puhfa there is a leak somewhere 17:01 VanessaE or you could spawn a bunch of dummy entities 17:01 VanessaE what was the command kahrl added? 17:01 sapier yes because it's about 3/4 of maximum entities per block 17:01 VanessaE surely that's enough to trigger this bug isn't it? 17:01 puhfa so less than the maximum? doesnt sound like a benchmark to me 17:01 gregorycu You're just saying random metrics 17:01 sapier so chances you're actually overloading a block are quite high 17:01 VanessaE /dummyball or some such? 17:01 gregorycu You can overload a block? 17:02 gregorycu :/ 17:02 gregorycu I missed that code 17:02 sapier wait :-) 17:02 gregorycu Is the only reason you're trying to find the leak because I found a leak? 17:02 sapier actually it's 1.5 times the max entities per block ... VanessaE wasn't this changed to more then 49 some time ago? 17:03 gregorycu This doesn't seem like an efficient way to work 17:03 VanessaE sapier: no. 17:03 gregorycu Anyway, we don't know that the 64 spawners were on the same block 17:03 gregorycu Chances are, they were not 17:03 VanessaE sapier: I think it's still stuck at 49 by default, but I raised it to 500 on my servers. 17:03 gregorycu So, it doesn't matter 17:03 sapier gregorycu: I'm just interested how wieldscenemesh is supposed to be related to entities 17:04 sapier because the only usage of this I know about is players hand 17:04 gregorycu line 950 of content_cao.cpp 17:04 jin_xi i remember some of the first mob mods used wieldmesh visuals to get non quad 3d entities on screen 17:05 kahrl so... did my suggested fix (removing the grab()) fix it? 17:05 sapier ahhh 17:05 sapier a entity can be a wielditem too 17:06 gregorycu Yes, though I think there are more leaks 17:06 puhfa the spawners actually were on the same block 17:06 sapier jin_xi: yes that's long ago 17:06 puhfa didnt know the limit was that low 17:06 puhfa anyway, the output added up. the machine itself worked perfectly, my client just leaked memory 17:06 gregorycu I have 12 spawners 17:06 puhfa dunno about the server itself 17:06 gregorycu The server is fine 17:06 sapier puhfa: try increasing max_objects_per_block above the amount of entities you do create if this fixes the error we know it's related to block overload handling 17:06 gregorycu It's not 17:07 gregorycu Because 17:07 gregorycu I found the leak 17:07 puhfa is max_objects_per_block a client-side setting? because that i can change and i can test it next monday 17:07 gregorycu And kahrl and I had the same solution 17:07 gregorycu Except it took him 10 minutes, and me 2 hours 17:07 T4im puhfa: no its serverside, and its increased usually on servers 17:07 sapier puhfa: no it's a server side setting 17:08 puhfa okay. so we must have a higher value since the machine worked 17:08 T4im sapier: we are talking client side leaks though 17:08 T4im clients have to restart after a while to empty swap and ram 17:08 sapier T4im: if a server drops a entity without telling about it beeing deleted it's gonna cause a client to use more and more memory ... although this wouldn't even be a "real" leek 17:08 sapier leak 17:08 T4im ah 17:09 puhfa that could explain what happened 17:09 puhfa still, in my opinion that is an issue 17:09 kahrl yeah, can confirm too: valgrind reports a lost WieldMeshSceneNode when I drop & recollect an item, it's fixed when the grab() call is removed 17:09 sapier we've got reason to believe this might happen for some time but without someone doing that excessive overspawning it's not a big issue 17:09 puhfa what was your fancy word for it 17:09 T4im gregorycu: you mean an additional one, or the wieldmesh one? 17:10 kahrl I don't get any other leaks (none that we can fix, anyway) 17:10 sapier gregorycu: as you found it please write a pull request so we can merge it 17:10 gregorycu I get increased memory usage over time 17:10 Zeno` you need to use massif to see the leaks 17:10 puhfa >we've got reason to believe this might happen for some time but without someone doing that excessive overspawning it's not a big issue 17:10 Zeno` valgrind won't show them because theyre' 17:10 puhfa ... 17:10 kahrl what I do get is use of uninitialized memory in Sky::Sky() 17:10 gregorycu I also have code that tracks the number of irrlight entities, and that seems to be increasing 17:10 Zeno` valgrind won't show them because they're properly deallocated when the client exits 17:11 puhfa that 'excessive overspawning' caused my os to come tumbling down in less than 30 minutes 17:12 puhfa because win7 apparently doesnt handle too well the case in which all memory is used up 17:12 kahrl http://sprunge.us/idhD 17:12 Zeno` but, massif shows them quite clearly 17:12 sapier imho everything mentione by now would fit to client believing a lot of already deleted entities beeing still alive 17:12 sapier kahrl: that's deep inside irrlicht 17:13 puhfa could an automated deletion timer solve it then pretty easily and without much overhead? 17:13 sapier no 17:13 kahrl sapier: well, perhaps we are passing an uninitialized string 17:13 sapier puhfa: if we did this we'd risk loosing entities which are still active 17:14 sapier we have to find out exactly why client and server get out of sync 17:14 puhfa hmm, thats a better approach yes 17:14 T4im wouldn't the server resend those serverside still existing ones if the client side ones were max_entities constrained too? 17:14 sapier no server only sends entities once 17:15 T4im but updates their movement/velocity etc? 17:15 sapier there's no reason to send them more then once because there's no legit reason to loose them 17:15 sapier T4im: only if something changes 17:16 puhfa so a stationary entity on the ground could disappear that way 17:16 sapier yes 17:16 gregorycu Wow 17:16 T4im unless you leave/enter the area? 17:16 gregorycu What is going on 17:16 gregorycu What's the bug? Client is dropping updates? 17:16 puhfa well, the timeout would help in our use-case but i get it that in the big picture it would only make things worse 17:16 sapier T4im: if someone uses forceloading this wouldn't help 17:17 T4im fair enough 17:17 gregorycu What's the bug here? Client is dropping updates? 17:17 sapier gregorycu: curent working thesis is client for some reason doesn't know about a entity beeing deleted 17:17 gregorycu Thesis for what? 17:17 gregorycu The pipeworks issue? 17:17 sapier for why you need more and more memory over time 17:18 puhfa sapier: wouldnt the entities still be visible in the client eyes then? 17:18 sapier and why this occurs that often on overloading a mapblock with entities 17:18 puhfa because they were not 17:18 kahrl these getTexture() that use unitialized memory also cause these messages: "Irrlicht log: Could not load texture: " 17:18 gregorycu I have no data to suggest I'm accumulating entities 17:18 kahrl (yes, with no filename after that) 17:18 sapier puhfa: depends 17:18 gregorycu In fact, I'm sure I'm not accumulating entities, I checked that 17:18 sapier did those entities have a speed? 17:18 gregorycu That was one of the first things I checked 17:19 puhfa yes they did. but they didnt leave my sight, always disappeared before going too far even with a slight lag 17:19 sapier ok gregorycu if you're not accumulating entities the tesis is wrong 17:19 sapier what's output of valgrind if you exit? 17:19 gregorycu I'm on windows 17:20 sapier puhfa: bad because if they go out of sight they'll still have to be stored somewhere to be deleted once server tells this 17:20 gregorycu I wonder if Visual Studio has a nice memory checker 17:20 Zeno` can someone review and merge #2141 please? 17:20 ShadowBot https://github.com/minetest/minetest/issues/2141 -- Create empty default constructor for MapNode by Zeno- 17:20 Zeno` I'll need it merged for tomorrow 17:20 puhfa again, they did not go out of sight, not even close 17:20 sapier Zeno`: for what do you need it if it's empty? 17:21 sapier sorry puhfa misread 17:21 puhfa they went into node inventories 17:21 Zeno` for unrelated stuff 17:21 puhfa np 17:21 sapier puhfa: do you have a small map having exactly this situation? 17:21 puhfa no 17:22 Zeno` But stuff that works with MapNode 17:22 gregorycu sapier: Visual Studio reports about 100k leaks 17:22 sapier can you guide me through building this? 17:22 puhfa maybe gregorycu can share his test map, he had the same issue 17:22 sapier gregorycu: I can't help about visual studio results 17:22 Wayward_One #2143 17:22 ShadowBot https://github.com/minetest/minetest/issues/2143 -- Minetest.conf ignored on new world creation 17:22 sapier in worst case it's a bug occuring on windows only ... rare but happens 17:22 puhfa sapier: you familiar with technic? basically i had lots of technic machines ejecting stuff, then one or two tubes and a chest receiving it all 17:23 puhfa i think T4im is running his mine testings on linux and he has experienced the same issue 17:23 sapier Zeno`: did you check MapNode with empty default constructor creates a valid object? 17:24 sapier puhfa: sorry I'm not, I never used technic 17:24 Zeno` sapier I checked every instance where MapNode is used 17:24 puhfa i guess pipeworks blinky plant with a filter does exactly the same 17:24 Zeno` (yes, all of them) 17:24 puhfa thats what gregorycu is doing 17:25 sapier well then merge it and hope it's not gonna break something ... having a empty constructor enables you to create a object without the parameters you HAVE to supply right now ... sometimes there's a reason for not having this constructor. Yet I don't know mapblock good enough to tell about it. 17:26 Zeno` The problem was is that before there was a default constructor (by proxy because of default values) 17:26 sapier ok pipeworks installed 17:26 Zeno` sapier, before this you did NOT have to supply values 17:26 sapier why was it changed? 17:27 sapier puhfa: ok in game and in creative mode so what to place? 17:27 Zeno` because of https://github.com/minetest/minetest/pull/2141/files src/voxel.cpp line 176 17:27 puhfa chest -> filter -> pneumatic tube segments connecting the arrowhead of the filter back to the chest 17:28 puhfa then a blinky plant next to the filter to make it work automatically 17:28 puhfa repeat 64 times 17:28 Zeno` Note that previously there was: MapNode(content_t content = CONTENT_AIR, u8 a_param1=0, u8 a_param2=0) 17:28 gregorycu 10 times will be enough 17:28 puhfa probably :P 17:28 gregorycu We're not doing a benchmark here 17:29 gregorycu Just want to repo the leak 17:29 Zeno` whihc was the "proxy" default constructor 17:29 Zeno` that initialised data when it didn't need to be initialised 17:29 puhfa gregorycu: unless going over the max entities per block limit has something to do with it 17:29 sapier itemwise filter injector? 17:29 puhfa actually scratch that, we had the setting set much higher so it didnt happen 17:29 puhfa sapier: will do, doesnt matter 17:30 puhfa then some stuff in the chest 17:31 VanessaE sapier: http://digitalaudioconcepts.com/vanessa/hobbies/minetest/screenshots/Screenshot%20-%2001172015%20-%2012%3a31%3a20%20PM.png 17:31 VanessaE build a few of those 17:31 sapier argh ... mesecons too? 17:31 VanessaE sapier: yes, if you want it to run autonomously 17:31 puhfa you can always punch the filter repeatedly yourself :) 17:31 sapier I hate mesecons it's always incompatible 17:32 Zeno` sapier, the kludge was added here: https://github.com/minetest/minetest/commit/8621e6de5dc031b547739ab3ff8dc1575a284d1b 17:32 VanessaE just get latest git of it and latest git of pipeworks and they'll work together fine 17:32 T4im sapier: yes, linux here with the same issue… difference is just that I don't crash the system, but it still swaps like mad 17:33 T4im freezing up th xserver a bit (still responding, but slow) 17:33 Zeno` and now I want to remove the kludge; hence the PR 17:33 gregorycu Ok, the other leak 17:33 gregorycu Wasn't a leak, it was only happening in debug 17:33 gregorycu I think it was just Visual Studio being shit 17:34 T4im sapier: I think you have to deactivate the mesecons-compatibility mod to be compatible with current git, as that one seems to be for old releases only 17:34 VanessaE sapier: keep placing chairs in that space between the deployer and breaker any time you get the chance; you probably won't get more than 3 or so circulating through the tubes, but that's enough 17:34 sapier when did minetest get to multisecond place lag on singleplayer? 17:35 VanessaE if you set up a higher-speed timer on the wire controlling them, you can get more of them circulating. 17:35 VanessaE er, I've never had placing lag get THAT bad unless the server was overloaded 17:37 sapier hm mI don't have a chair guess a fence will be good enough 17:37 VanessaE sapier: example of a higher-speed timer, much more effective. http://digitalaudioconcepts.com/vanessa/hobbies/minetest/screenshots/Screenshot%20-%2001172015%20-%2012%3a37%3a53%20PM.png 17:38 VanessaE a fence will do, I just used a chair because it's a nodebox. wanted to be absolutely sure it would invoke the bug (wasn't sure if just *any* drawtype would do) 17:38 T4im VanessaE: node detector triggered? 17:38 VanessaE in the above circuit, put a whole stack of your test node into the deployer's inventory 17:38 sapier doesn't look like somethings happening at all vanessae 17:38 VanessaE T4im: that would work too but it would be slower and take longer to get started 17:39 sapier the plant blinks slowly but nothing else 17:39 VanessaE sapier: build the above second version then, put a stack of your test node into the deployer. 17:40 sapier does it work with fence too? 17:40 VanessaE it'll work with pretty much any test node, yerah 17:40 VanessaE yeah* 17:40 puhfa hmm, if drawtype really matters, the issue originally occurred with ingots and other ingot-like craft items 17:41 T4im possible.. ore processing is one of the main applications after all 17:41 gregorycu visual = "wielditem", 17:41 gregorycu Unless there are two bugs 17:42 sapier how to rotate the arrow mesecon element? 17:42 puhfa place it from a different angle 17:42 VanessaE sapier: it turns based on your facedir 17:42 VanessaE or use a screwdriver 17:43 VanessaE in my screenshot, the grey one is a delayer, the white one is a NOT gate 17:43 T4im mese sandtube might work too btw 17:43 T4im without mesecon 17:43 T4im dropping out stuff, collecting again 17:43 VanessaE T4im: this is more controllable 17:44 T4im true 17:44 sapier ok fast blink ... guess I have wrong tubes ... which ones do I have to use? 17:44 VanessaE sapier: "Pneumatic Tube Segment" 17:45 VanessaE pipeworks:tube_1 17:45 VanessaE to be exact 17:46 sapier ok all done ... still empty pipe 17:46 VanessaE now put your test node into the Deployer's inventory 17:46 T4im make sure you don't have anything in the nodebreaker inventory slot 17:46 VanessaE and yeah, keep the nodebreaker's slot empty, that's for the tool you want it to dig with 17:46 sapier ok 17:46 VanessaE (by default, it digs with a virtual mese pick) 17:47 sapier ok deployer is non empty and fence is created in between but still empty tubes 17:47 VanessaE screenshot? 17:47 T4im make sure to connect to the nodebreaker from the back, not the side or top 17:47 T4im the tubes that is 17:48 T4im side is for said inventory slot, not for the digging-results 17:48 T4im also connect mesecons from the side, mesecons has some issues when connecting diagonally to other stuff sometimes 17:48 jin_xi hm well pipeworks seems to still use wielditem for stuff in tubes 17:51 sapier grr this damn nodebreaker alwas rotates different 17:51 VanessaE heh 17:52 sapier ok better 17:52 T4im try to face the pipe you are trying to connect it to with a meter distance and build against it 17:53 sapier ok time to use valgrind 17:53 VanessaE sapier: you got it to act as in my screenshot? 17:54 sapier looks quite similar, fences move from node destroyer to deployer 17:54 VanessaE T4im: it's not so much that it has issues connecting diagonally, rather that machines have connection rules that dictate if they'll take a connection from above, which is all a diagonal connection really is 17:54 VanessaE sapier: good deal 17:55 T4im VanessaE: yea, thing is visually it does connect, just doesn't actually propagate signals then, which is sometimes confusing 17:55 sapier why does it report I am placing those nodes? 17:55 T4im meseblocks for example propagate vertically to other meseblocks but not to mesecons 17:55 VanessaE sapier: it has to use a "fake" player in order to comply with the engine's node protection code 17:55 sapier I haven't even joined completely 17:55 VanessaE T4im: ah, if it visually connects but doesn't register the signal, that's a bug 17:56 VanessaE sapier: and in this case, the "fake" player is the original placer of the node 17:56 sapier well different issue 17:57 VanessaE sapier: you're seeing a perfect example of something that needs an allowance for being ignored by the rollback recorder 17:57 T4im yea for that stuff running before fully connected we might have some input too regarding lua controllers overheating on_join, but more to that another time I guess 17:57 VanessaE (every one of those place actions is being recorded, if you have rollback) 17:57 T4im that'll spam the logs with a few machines quite a bit, huh? 17:57 sapier calloing this a diashow doesn't really match 17:58 VanessaE well those "runs before you join" is just because you effectively fired up a server first and the client took a short while to "connect" to it, I guess. 17:58 sapier it's about 2fpm 17:58 VanessaE sapier: haha 17:58 VanessaE that's about right :D 17:58 T4im ya :D 17:59 sapier already enough to find the bug 18:00 VanessaE how bad is it? 18:01 sapier metadatalisthandling is broken I'll see how to fix it give me a couple of minutes ... 18:02 sapier ok I think I have it, now verify with valgrind 18:04 sapier nodemetadata.cpp L112 ... you should never clear a map containing pointers to allocated memory 18:04 sapier just use the "clear" function already implemented there 18:05 gregorycu ... 18:06 sapier gregorycu: doesn't visualstudio have a tool like valgrind too? 18:06 sapier not sure about it guess on windows you''ll have to pay for it 18:06 gregorycu I don't know, I don't have to find leaks often 18:07 sapier in minetest they're quite common 18:07 sapier "definitely lost: 0 bytes in 0 blocks" 18:07 sapier gregorycu: is your pull ready? 18:08 gregorycu No 18:08 gregorycu I don't know how to git very well, so I've hashed up a branch of mine 18:10 sapier no problem I'll push it for you what to write for author? "gregorycu" ? 18:10 gregorycu I don't care, as long as it's fixed 18:10 gregorycu gregorycu is fine 18:16 sapier gregorycu: can you verify that there ain't more leaks I haven't triggerd with my example by now? 18:16 kahrl wow 18:16 gregorycu No, the memory increase over time was due to some leak checking code I inserted 18:16 gregorycu ironically 18:16 kahrl the irrlicht image readers read data from a file and don't even check if the read succeeded 18:16 gregorycu What is wow kahrl? 18:17 kahrl that's probably where http://sprunge.us/idhD comes from 18:17 sapier kahrl: I'm not really surprised ;-) 18:17 T4im gregorycu: on a side note: "none@none.none" is a problematic email, as it is connectable (as opposited to .invalid tld's or example.org/net/com for example)… a better solution might be to use the anonymizing mail-addies from github instead 18:17 kahrl (take for example CImageLoaderBMP::isALoadableFileFormat) 18:17 sapier T4im: humans usually understand what's meant and I don't care about bots ;-) 18:18 gregorycu I didn't author it, it's a fake author 18:18 kahrl ok, what leads to http://sprunge.us/idhD is this, as far as I can tell: 18:18 kahrl 1. getTexturePath returns an empty string 18:18 sapier gregorycu: good to know 18:18 kahrl 2. this is passed to CNullDriver::getTexture 18:18 T4im sapier: maybe care about inocent dos victims by those bots :p 18:18 gregorycu I was letting T4im know 18:18 kahrl 3. getTexture calls getAbsolutePath on that, this returns "/" 18:19 kahrl 4. an IReadFile is opened on "/", which succeeds (a directory is treated like an empty file by fopen) 18:19 sapier T4im: whoever takes none@none.none will recognize quite soon it's been a bad idea 18:19 T4im "@users.noreply.github.com" is sponsored by github :) 18:20 kahrl 5. then createImageFromFile calls the various image loaders' isALoadableFileFormat methods, which don't check if the reads succeed 18:21 gregorycu Night all 18:21 T4im oh, he was gone fast… wanted to thank him first, :S 18:21 T4im thank you too sapier 18:21 T4im these fixes are very appreciated 18:22 sapier well thank VanessaE she provided the example I needed to fix it 18:22 kahrl note that each of my listed steps 2 to 5 is missing error checking :D 18:22 sapier without her help It'd have required hours to reproduce it just to do a 1min fix 18:22 T4im would a mts for unit testing help in cases where lua scripting can't assert? 18:22 T4im like this 18:22 T4im for the future that is 18:23 VanessaE sapier: and *gasp* I got you to install two mods and play the game for a while ;) 18:23 VanessaE (well pipeworks was gregorycu's idea really) 18:23 sapier well another 3mb of precious ssd space wasted for mods ;-) 18:24 VanessaE haha 18:25 sapier btw he didn't tell about this two changes really fixing all issues can someone verify this? 18:25 sapier puhfa: are you able to compile mintest yourself? 18:25 nrzkt is DSTACK(__FUNCTION_NAME); used somewhere ? 18:26 kahrl nrzkt: press p in-game to see what it is used for :) 18:26 puhfa sapier: probably not. i have a very old version of mingw only. 18:26 nrzkt ty kahrl 18:26 VanessaE I'm updating both my client and my servers now. the latter will take effect at the next restart 18:26 puhfa so anything post c++98 and it wont work 18:26 * T4im will test the commit too 18:27 T4im commits* 18:33 sapier nrzkt: DSTACK is debugging code 18:35 sapier puhfa: ok then we have to wait till you get a version containing these fixes to find out if they fix your issue. I'd expect you to have additional problems. 18:44 hmmmm do you guys have an opinion on lens glare for light sources? 18:45 hmmmm basically, an IBIllboardSceneNode centered on a light source node whose texture is a mostly transparent circle or something that gets colored to whatever color the light source eminates 18:45 Calinou good, as a setting? 18:45 sapier imho that'd be to realistic for rest of minetests graphics 18:45 hmmmm lol. 18:45 hmmmm calinou: i was thinking more or less definiable by mod 18:46 Calinou the flare could be cubic if you wanted 18:46 hmmmm you'd want this for torches maybe, not so much for other thing 18:46 hmmmm other things* like furnaces 18:47 Calinou lens_flare = {r = 255, g = 255, b = 255} like this? 18:47 hmmmm yeah, i could do that 18:48 T4im a sprite fake one, or a real one? 18:48 Calinou changeable colour would be good to fake coloured lights 18:49 sapier VanessaE: https://github.com/minetest/minetest/pull/2132 does this match what you meant with hiding chat button too? 18:49 hmmmm the reason why i'm hesitant on making it rgb user specifiable is because if you make the flare color different from the light color then it'd look odd as you get closer to it 18:50 VanessaE sapier: yes, basically that. I'd put it over on the right, below the other one, though. 18:50 VanessaE btw, what does the "down arrow" do? 18:51 sapier drop an item, that's why I kept it there so you can touch it without having to take hand off 18:52 sapier as I made the buttonbar generic moving it around ain't a big deal 18:52 VanessaE sapier: ah, ok. fwiw, it might make more sense if that icon were a tiny cube with the arrow curving from it to the "ground line" 18:52 VanessaE e.g. suggesting the motion of an item when you see someone in-game drop it 18:53 sapier I didn't invent that icon but I agree to your suggestion. yet I'm not capable of realizing this suggestion ;-( 18:54 VanessaE need me to draw it? 18:55 sapier sure you're welcome ;-) 18:55 VanessaE what sizew? 18:55 VanessaE -w 18:55 sapier I'd suggest same size as current, but it's scaled to fit the buttonbar anyway 18:55 VanessaE idk what the current size is :) 18:56 VanessaE there it is 18:56 VanessaE 64px 18:58 puhfa sapier: the server wont be online before monday anyway 18:59 puhfa but if it fixes any issue ill be happy, even if mine would still persist 18:59 sapier if you find a easy way to reproduce just tell me 19:00 sapier usually the hardest thing about leaks is reproducing it once this is done the fix is trivial .. most time ;-) 19:00 puhfa without building the actual machine i think thats as close as anyone can get 19:00 puhfa we have had the same in both linux and windows builds since at least 0.4.5 19:00 est31 sapier I can write a replacement for game#395, introducing mintetest.register_lossless_abm 19:00 ShadowBot https://github.com/minetest/minetest_game/issues/395 -- Make furnace work even when unloaded by Kalabasa 19:00 est31 does that sound good? 19:01 sapier writing yes .. your name for that function no 19:01 est31 other ones 19:02 sapier register_timekeeping_abm or something like this 19:02 sapier and of course you have to add a separate metadata variable for each abm 19:02 puhfa heh, make the function name long enough to avoid unnecessary overuse :) 19:02 T4im is it still an active bm? ;) 19:03 puhfa register_enhanced_amb_factory_solution_builder 19:03 sapier lossless supposes the other one misses things which just ain't true 19:05 est31 register_timekeep_abm? 19:06 sapier ok 19:06 T4im isn't it more like a lazy block modifier? :D 19:06 sapier no most time coder is lazy not the abm 19:08 est31 ok it gets the time of offload, or a number of times it should have been called but didn't get? 19:08 sapier why? number of times? if someone really needs this it's a simple division 19:08 * est31 would prefer second 19:09 T4im why not use notetimers for that anyway? they return the time it was unloaded included 19:09 T4im nodetimers* 19:10 sapier good question I never used nodetimers so if they do it this way why modify abm at all? 19:11 * est31 points at https://github.com/minetest/minetest/blob/master/src/nodetimer.h#L30 19:11 T4im they do.. noticed then with the bones mod (they never timed out in active blocks, only if they were unloaded for a certain time) 19:11 T4im est31: hehe, nice one 19:12 sapier hmm it's already suggest to be used for this ;-) 19:12 sapier guess 395 should be rewritten using a node timer 19:13 T4im keep in mind, that after each time it is being called it snaps the parameter-passed time back to 0 19:14 VanessaE sapier: http://digitalaudioconcepts.com/vanessa/hobbies/minetest/images/drop_btn.png (it'll be white on white in the browser, so download it and view in GIMP or something) 19:15 kahrl new PR: #2144 19:15 ShadowBot https://github.com/minetest/minetest/issues/2144 -- Fix use of uninitialized data in Sky and (potentially) GUIChatConsole constructors by kahrl 19:17 sapier https://github.com/minetest/minetest/pull/2132 additional comments? (screenshots included!) 19:18 VanessaE you didn't put my image in! D: 19:40 sapier http://www.fileconvoy.com/dfl.php?id=g9c63a08b33eb932899961019369bd677d164a74aa VanessaE latest apk package for you containing your icoon 19:40 sapier -o 19:41 VanessaE \o/ 19:52 sapier does it work VanessaE? 19:53 VanessaE I haven't tried it, don't have the tablet handy right now 19:53 sapier ok 20:30 VanessaE bbl 20:56 kilbith any objection to format the README in .md ? 20:57 est31 freeminer has markdown 20:57 kilbith it's more lisible 23:51 hmmmm allrighty 23:51 hmmmm i'm back