Time Nick Message 03:20 ShadowNinja Oh, BTW, I support a feature freeze now. 03:20 ShadowNinja I'll do the honors if I get another agreement (IIRC there was already one or two). 03:24 ShadowNinja That would be Zeno`. 03:24 Zeno` Yes I would agree 03:24 Zeno` would still* 03:24 ShadowNinja If paramat thinks MGv5 needs work just mark it as indev. 03:25 RealBadAngel hi 03:25 VanessaE hi 03:25 RealBadAngel before that i need to push a few things 03:25 paramat seems too early 03:26 RealBadAngel just give me 2 days (the weekend) at least 03:27 VanessaE freeze now would be good after RBA pushes his extrude thing. RBA: can you check if https://github.com/VanessaE/plantlife_modpack/issues/25 is a regression or not? I think it happened when you tweaked how plants are positioned when scaled 03:27 VanessaE I fixed that ^^^ in plantlife already but I want to know if my fix was even necessary (should it have been fixed in the engine instead?) 03:27 ShadowNinja Set it for 6th of December (Saturday)? 03:27 VanessaE ShadowNinja: no, at least two weeks out 03:28 VanessaE I think we kinda agreed that a week is too soon 03:28 paramat how about releasing around winter solstice? 03:28 ShadowNinja VanessaE: Eh, that takes us a bit close if we're going for a christmas release. 03:28 RealBadAngel VanessaE, extruded plants needs the same fixes as i did to regular ones before 03:28 VanessaE ShadowNinja: I know. 03:28 ShadowNinja VanessaE: That's the start, not the end BTW. 03:29 VanessaE RealBadAngel: ok, but I'm talking about the relative scale; take a look at the bug report. 03:29 RealBadAngel 2nd mesh needs also to be offseted a bit to avoid z fighting in the middle 03:29 paramat i was planning to add pinetrees and default biomes for mgv5/v7, including default snow biomes, apt for a midwinter release 03:29 paramat anyway hmmmm usually does the release thing 03:30 RealBadAngel also i need to re-add lighting to shaders 03:30 paramat "just mark it as indev" heheh unfortunate choice of word for a mapgen 03:35 Zeno` I dunno VanessaE ... I quite like those treefern screenshots 03:35 VanessaE Zeno`: heh 03:37 RealBadAngel Zeno`, you have linked me screens from profiler about a patch 03:37 RealBadAngel but wheres that patch? 03:37 paramat so i guess i would like 1 week minimum before freeze 03:38 Zeno` RealBadAngel, I closed it. I'm going to rewrite it after feedback was received 03:38 VanessaE ShadowNinja: ok, in that case I'll go with that; I read that as "a week-long freeze" 03:38 Zeno` RealBadAngel, https://github.com/minetest/minetest/pull/1879 03:38 VanessaE not like I have much actual say in the matter of course :P 03:41 Zeno` I can probably just cache the value in the class that needs it anyway. Changing enable_shaders using set seems to make no difference when playing the game anyway 03:42 Zeno` Then at least the mesh updates will be improved. The ones in run() will still be there until I think of a better approach to this but *shrug* 03:59 paramat hmmmm my plans for biomes are 1. add 'node_stone' to biome parameters 2. use 3 octaves 0.5 persistence for heat/humidity to reduce the amount of tiny biomes and biome stripes 3. move heat and humidity noises back into each mapgen and make them user-adjustable, so we can tune biome spreads to the scale of each mapgen and also compensate for number of biomes 08:19 Megaf Morning Zeno` 08:19 Megaf Zeno`: have you seen my ms_print output? 08:20 Zeno` no, I did see it mentioned but I was asleep :) 08:21 Megaf understandable 08:21 Megaf Zeno`: https://gist.github.com/Megaf/50aac763e9f0bf85adb9 08:22 Zeno` How much RAM was in use at that time? 08:22 Zeno` Or, alternatively, how long had the server been running? 08:23 Megaf Zeno`: about an hour I believe 08:24 Megaf Zeno`: I even played on the server while running Valgrind, and ran my mesecon/pipeworks machines 08:26 Megaf I wish I could better undertand this output https://gist.githubusercontent.com/Megaf/50aac763e9f0bf85adb9/raw/f91788eee3a586d292f54302ce8c3a6d74da0f48/massif.out.1536.ms_print 08:26 Megaf (That's the same as the other link, but raw) 08:29 Zeno` Good stuff. I'll look at it more closely after I eat 08:30 Megaf Zeno`: I hope that helps 08:30 Megaf Zeno`: I can run again later on, I have a copy of my server in another computer, where I can run it and do tests at will 09:11 Calinou how do I bring one of my fork repositories (a branch) up-to-date? 09:11 Calinou without messing up with commit history 09:11 Calinou I'd like to make a pull_request for minetest_game without invalidating my previous ones 09:14 jin_xi something along the lines of pulling newest masters, then rebase your branches 09:14 Calinou what commands do that? 09:15 jin_xi well, im not so sure to know exact commands, but you switch to master (checkout), pull, switch back to branch and rebase. hope this helps for googleing 09:16 Calinou I don't Google ;) but OK, thanks 09:17 jin_xi you're a binger? 09:18 Megaf Calinou: git pull http://minetest.git ? 09:19 Megaf just test it on another repo 09:20 Calinou thanks, works 09:20 Calinou https://github.com/minetest/minetest_game/pull/347 09:20 Calinou buffed food 09:20 Megaf Calinou: the game on my server have just stopped in time 09:32 Calinou https://github.com/minetest/minetest_game/pull/348 09:32 Calinou snappy axes 10:25 Megaf Calinou: we can already use swords for that 10:25 Calinou they lose durability like crazy and don't help much 10:26 Megaf hm 10:26 Megaf maybe the game should have shears as a default tool 10:27 Megaf to cut leaves and plants 10:27 Calinou that clutters players' inventories :/ 10:27 Calinou should be either swords (almost no use in minetest_game base) or axes 10:27 Calinou axes are cool, because you also cut wood with them 10:28 Calinou in Carbone, swords dig snappy stuff even faster but lose durability 10:29 Megaf Calinou: you should add Leprechaun Tools to Carbone 10:29 Calinou what's that? 10:29 Calinou anyway this should be discussed in PM or in #minetest 10:29 Megaf https://github.com/Megaf/leprechaun_tools/blob/master/story.md 10:29 Calinou another PR: https://github.com/minetest/minetest_game/pull/349 11:19 puhfa hey, this is just a random thought, but is it possible to use minetests noise generator for local texture generation or even in shaders? 11:19 puhfa i mean, would be an easy way to make good-looking liquids 11:20 puhfa http://glsl.herokuapp.com/e#19493.1 <- along these lines (not the looks but the idea) 11:29 Fritigern Has anyone ever succesfully used mtdbconvert (the one that comes with mtsatellite) to convert from LevelDB to sqlite? 11:30 sfan5 why would you not want to use minetest itself to migrate databases 11:32 Fritigern I followed mtsatellite's directions because i wanted the realtime map that it provides. Little did i know that it's crap. Anyway, the directions made me convert the DB to leveldb (interleaved) and according to the documentation, it SHOULD be possible to convert it back to sqlite. 11:32 Fritigern But if you say that MT can migrate an existing DB, then please show me how 11:32 sfan5 minetestserver --world world --migrate sqlite3 11:33 Fritigern You beat me to it ;-) 11:34 Fritigern Ummm... are you sure that --world is correct? Because i start my server using --worldname (the world is also in a non-default folder) 11:39 sfan5 it is --world afaik 11:39 Fritigern Is it normal for the migration process to want to load mods? 11:39 sfan5 if you have any more questions do a man minetestserver 11:39 sfan5 yes 11:41 Fritigern balaam@Sophie:~/Minetest/bin$ man minetestserver 11:41 Fritigern No manual entry for minetestserver 11:44 sfan5 man only works when you have system-wide install 11:44 Fritigern And you assumed that i have done that 11:45 Amaz http://pastie.org/9750248 <-- Contents of man minetestserver 11:46 Fritigern "Cannot migrate: new backend is same as the old one" Now what? 11:46 Fritigern BTW, it is not the same. I am migrating from leveldb to sqlite3. Well, re-migrating 11:47 sfan5 Fritigern: do you have a map.sqlite? 11:48 sfan5 and do you still have the map.db? 11:48 Fritigern Nope, i hav removed that after mograting to leveldb. I do have a map.db with a bunch of *.ldb files 11:48 Fritigern So no on the map.sqlit, yes on the map.db 11:49 Fritigern And typos be damned 11:49 sfan5 if you don't have a map.sqlite you didn't migrate to sqlite 11:49 Fritigern I know 11:49 Fritigern Tell that to minetestserver 11:49 sfan5 oh wait 11:49 sfan5 ignore what i said 11:50 sfan5 so.. mtdbconvert converted your map to leveldb and didn't change world.mt accordingly? 11:50 sfan5 if that is so, change 'backend = sqlite3' to 'backend = leveldb' and then use the migrate function 11:50 Fritigern I'll look 11:51 Fritigern You were right. Giving it another go 11:51 Fritigern That can't be right.... "Successfully migrated 0 blocks" 11:54 Fritigern Attempting a login, but i fear the worst 11:56 Zeno` sfan5: 1883 (simple fix) 11:56 Zeno` grr... #1833 11:56 ShadowBot https://github.com/minetest/minetest/issues/1833 -- Remove most exceptions from getNode() (and variants) by Zeno- 11:57 Zeno` hmm 11:57 Zeno` that's not it 11:57 Zeno` #1883 lol 11:57 ShadowBot https://github.com/minetest/minetest/issues/1883 -- Fix MSVC compiling error (argc/argv not available to pass to init_gettext) by SmallJoker 12:13 mitrom hi 12:17 sfan5 Zeno`: you know that you can merge small patches without approval? (http://dev.minetest.net/Git_Guidelines#Rule_1_in_practice) 12:18 Zeno` Yeah, but I'm being cautious. Perhaps it would have been better to say "this is a small patch and I'll merge in 10 minutes"? 12:18 Zeno` I'll do that in future 12:18 sfan5 > Perhaps it would have been better to say "this is a small patch and I'll merge in 10 minutes"? 12:18 sfan5 yes 12:18 Zeno` #1833 is a small patch and I'll merge it in 10 minutes 12:18 ShadowBot https://github.com/minetest/minetest/issues/1833 -- Remove most exceptions from getNode() (and variants) by Zeno- 12:18 Zeno` :D 12:19 sfan5 um 12:19 sfan5 didn't you mean #1883 12:19 ShadowBot https://github.com/minetest/minetest/issues/1883 -- Fix MSVC compiling error (argc/argv not available to pass to init_gettext) by SmallJoker 12:19 sfan5 because 1833 is not a small patch 12:20 Zeno` I've done that twice now... why do I keep getting that 3 wrong :/ 12:20 Zeno` of course that's what I meant, thanks 12:33 CraigyDavi Hmm why did this get added a while back? https://github.com/minetest/minetest/commit/9a92747 imo it's better to keep it set as false because there will only be a few nodes which people want saves to be carved out of (dirt, stone, sand) and loads of blocks which people don't want to be carved (wood, crafted blocks, cobble). 12:34 CraigyDavi It's better to leave the default as blocks which are not in the minority 16:20 Zeno` hmmmm, #1855. Most (if not all) of these settings cannot be set/cached in the constructor of another object because they can, and do, change as the program executes 16:20 ShadowBot https://github.com/minetest/minetest/issues/1855 -- Mgv5 1 up 1 down overgeneration for biome surface continuity, thinner biomes. by paramat 16:25 PenguinDad Zeno`: You seem to be be getting numbers wrong quite often today ;) 16:25 Zeno` it's the 18 :( 16:26 Zeno` I have no idea why 16:26 Zeno` #1885 16:26 ShadowBot https://github.com/minetest/minetest/issues/1885 -- Create CoreSettings class for time-critical sections to use by Zeno- 16:26 Zeno` *sigh* 16:32 * VanessaE gives Zeno` a new keyboard and a new set of hands 16:32 Zeno` it's just the 188 ... I dunno what it is 16:32 Zeno` I have the same problem with my phone number 16:33 Zeno` and my phone number doesn't even include 188 16:33 PenguinDad lol 16:33 exio4 at least you know your phone number 16:33 exio4 I know mine starts with +54 16:34 shadowzone Mine is (555)111-222 16:34 exio4 that doesn't look like a correct phone number 16:34 shadowzone It is 16:34 VanessaE just call JL5-2368 16:34 shadowzone huh? 16:42 VanessaE wait strike that, it's JL5-2020 16:42 Zeno` checked your number against movie trivia? 16:42 * shadowzone grabs her phone 16:42 VanessaE yep :) 16:43 Zeno` VanessaE, You seem to be be getting numbers wrong quite often today ;) 16:43 VanessaE so do you :) 16:43 shadowzone Me too 16:43 shadowzone I made 7 mistakes in code,chatting and talking 16:44 VanessaE shadowzone: google it :) 16:44 hmmmm Zeno`, if tracking variable changes is a requirement then perhaps you could do sort of what NodeResolver does, except in a smarter way 16:44 shadowzone pff, thanks :) 16:44 Zeno` hmmmm, it is for fast_move etc 16:45 hmmmm perhaps there can be a new type of settings getters 16:45 Zeno` I don't see what's wrong with this solution TBH 16:45 hmmmm getBoolUpdates() 16:45 Zeno` yeah I tried that yesterday and got shot down 16:45 Zeno` this way is better 16:45 hmmmm why, who? 16:47 hmmmm volatile bool fast_move; g_settings->getBoolUpdates("fast_move", &fast_move); while (big_loop_here_runs) { .... do stuff with fast_move ... } 16:47 hmmmm ofc this will only work for actual booleans rather than strings since you need to use atomic ops 16:47 Zeno` but that's for only one setting and, yes, only for bools 16:48 hmmmm so you can make getS32Updates() for S32s 16:48 Zeno` but then I'd have to call the get*Updates() every frame/server-step 16:48 hmmmm could you explain why 16:48 Zeno` which kind of defeats the purpose 16:49 hmmmm you call it only once 16:49 Zeno` well, how will the updates be flagged when an update happens? 16:49 Zeno` e.g. if the user presses 'j' (for example) 16:49 hmmmm what's wrong with checking if the value changed each frame? 16:50 Zeno` these updates happen rarely 16:50 hmmmm checking a boolean is expensive? 16:50 Zeno` so checking every frame is much more expensive than this solution 16:50 hmmmm here hold on 16:50 Zeno` it is when it's not necessary 16:51 Zeno` And those checks would need to be scattered all through the source code 17:00 kaeza sfan5, https://github.com/minetest/minetest_game/pull/346 17:00 hmmmm i just don't see how the conventions are different from what you're currently doing 17:00 sfan5 kaeza: looks good 17:00 sfan5 incoming merge of minetest_game#346 in 5 minutes 17:01 kilbith sfan5: also take a look in 327 & 338 please 17:06 hmmmm Zeno`: are you there? 17:06 hmmmm do this: http://fpaste.org/155147/80761141/ 17:06 hmmmm I don't see what's wrong with that^ 17:07 Zeno` getBoolUpdates() is still using std::map 17:08 hmmmm but the difference is that you're calling it only once 17:08 Zeno` which is too slow for something that happens every frame (for the client) or server step (for the server) 17:08 hmmmm but the difference is that you're calling it only once 17:08 hmmmm but the difference is that you're calling it only once 17:08 hmmmm but the difference is that you're calling it only once 17:08 hmmmm but the difference is that you're calling it only once 17:08 hmmmm but the difference is that you're calling it only once 17:08 hmmmm holy shit 17:08 Zeno` once? 17:08 hmmmm YES! 17:08 hmmmm that's the whole point 17:09 Zeno` and this works with floats and types other than bool? 17:10 hmmmm sure 17:10 hmmmm as long as it's under a machine word in size 17:10 hmmmm for strings you could swap pointers 17:10 Zeno` what about line 15? 17:10 hmmmm what about it 17:11 hmmmm you'd do that check even with your current patch 17:11 Zeno` yes, but not every iteration 17:11 Zeno` it might be done once every 20 minutes, or never 17:12 hmmmm I don't get it 17:13 hmmmm so let's say we have g_settings->getFastBool_fastMove() 17:13 Zeno` In a normal game session most of the values won't change at all, so why check if they've changed every time through the loop? 17:13 hmmmm how would you modify client thread to handle changes there 17:13 hmmmm you don't strictly need to check 17:13 hmmmm you just want to check for... whatever reason 17:13 Zeno` so... when to check? 17:13 hmmmm if you want to do something more on changes, you'd do that as you're setting the value 17:14 Zeno` I don't get it 17:15 hmmmm i don't really get why you would even need to check if the value changed in the client thread though 17:15 Zeno` because the user might press 'j' 17:15 hmmmm okay 17:15 Zeno` or 'k' 17:15 Zeno` or whatever :) 17:15 hmmmm so you're saying you want SET to be fast as GET is 17:16 hmmmm why though? i see a lot of getting, and not very much setting at all 17:16 hmmmm setting is not hot enough to optimize 17:16 Zeno` no... I want GET to be fast 17:16 hmmmm right 17:16 Zeno` right now it's horribly slow 17:16 hmmmm and here get is very fast 17:17 hmmmm because you're not calling anything 17:17 hmmmm only once in the very beginning 17:17 hmmmm and then anytime after that the variable is automatically updated 17:18 Zeno` This is just an alternative method at the end of the day 17:19 hmmmm nobody else but you likes hardcoding settings in Settings 17:19 Zeno` me? 17:19 Zeno` I didn't write the original class 17:19 hmmmm yeah... 17:20 Zeno` if (current_fast_move != old_fast_move) is essentially the same as hardcoding something 17:20 hmmmm first off I don't see why you'd even NEED that check 17:20 hmmmm second off it's not. one you're modifying Settings, and the other you're modifying the specific object's code 17:20 hmmmm seperation of concerns 17:21 Zeno` yeah, and you have to remember to add if (current_fast_move != old_fast_move) { } for every single instance where you want a 'cached' value 17:21 hmmmm can you articulate why you need to do that 17:21 hmmmm I just added it there because you wanted to check if it changed or not in the getter thread 17:22 Zeno` so what is line 9 doing? 17:22 hmmmm declaring the boolean variable that receives updates 17:22 Zeno` It's adding a hardcoded object 17:22 Zeno` same thing as my class does 17:23 hmmmm your class modifies settings though 17:23 Zeno` only when it's destroyed 17:23 Zeno` and that's necessary because some of those settings need to be written to minetest.conf 17:24 Zeno` e.g. min_viewing_range needs to be written 17:24 Zeno` fast_move needs to be written 17:24 Zeno` etc etc 17:25 hmmmm you clearly modify Settings by adding a metric crapton of getter/setter methods 17:25 Zeno` I have added no methods 17:26 hmmmm what is getFastBool_enable_shaders 17:26 Zeno` no idea... that's not in my patch 17:26 hmmmm https://github.com/Zeno-/minetest/commit/915780ea26781caecb900237f020c7816c199bf2 17:26 hmmmm ???? 17:27 hmmmm it says Zeno- authored a day ago 17:27 Zeno` I'm not talking about that one. I closed that 17:27 hmmmm then what one ....ARE... you talking about 17:27 Zeno` #1885 17:27 ShadowBot https://github.com/minetest/minetest/issues/1885 -- Create CoreSettings class for time-critical sections to use by Zeno- 17:28 VanessaE hey he got it right on the first try this time! :D 17:28 hmmmm whaa 17:28 hmmmm this strikes me as having a lot of code to do very little 17:29 Zeno` You can't have had time to even look at it, lol 17:32 hmmmm this is essentially what I just wrote does 17:32 hmmmm except it has more... stuff 17:33 hmmmm so what you did was make an infrastructure so that objects can register functions to get called back 17:33 hmmmm and then you added it to both settings and this new CoreSettings 17:34 hmmmm CoreSettings sets Settings on dtor 17:35 hmmmm and update is called inside of the game step if needsUpdate() 17:35 Zeno` correct 17:36 hmmmm but but but you're checking something every loooop 17:36 Zeno` ONE bool 17:36 Zeno` not 30 17:36 hmmmm you need to check 0 bools with my solution 17:37 hmmmm what you did screams "overengineered" to me 17:37 Zeno` but with your solution you need to ... sigh 17:37 Zeno` nvm 17:37 hmmmm need to what 17:38 Zeno` it doesn't matter... I'm too tired right this moment to debate coherently 17:38 hmmmm so if one of the settings changed, it sets off a flurry of g_settings->get * 17:38 Zeno` yes 17:38 Zeno` and they change how often? 17:39 hmmmm not often, but I don't get why the server and the client threads need to be the ones to do the updating 17:40 hmmmm so basically what you have is a large struct of booleans that can be simply set, or if it's set through the original Settings, you raise a flag that it needs updating 17:41 hmmmm i assume you're doing this and not updating the entire thing inside of settings Set because you're afraid you'll need to add a lock in CoreSettings 17:56 Zeno` hmmmm, any real reason why this solution is not good? 17:57 Zeno` It's harder to make mistakes with this solution, as opposed to yours (IMO) 17:59 Zeno` And without any evidence my gut feeling is that my solution is faster 17:59 Zeno` And fast is what we need 18:17 hmmmm how could your solution be faster if there's 0 work being done by the consumer? 18:17 hmmmm looking at your updated version, it's much better than hard coding shit into Settings which was the main complaint 18:17 hmmmm the current version looks like a lot of work to do very little though 18:18 hmmmm i don't know, let somebody else decide 18:21 hmmmm for what it's worth, zeno, I had an idea to speed up Settings a while ago by building a settings struct with the actual value type contained instead of strings, and the setting name was just a constant value containing the offset to the setting in the struct 18:21 hmmmm i got shot down because people kept telling me it wasn't worth optimizing settings 18:23 cg72 105% of the dev effort should be set on optimizing the current code, making improvements to whats here now not adding more features(bugs) and ignoring the old code that can be greatly improved 18:34 Megaf Sp there is hope, more people think like I do 18:34 cg72 lol Megaf who is sp? and who thinks like you 18:36 shadowzone no one 18:36 Megaf s/sp/so 18:47 PenguinDad cg72: Where'd ya find the 5% 18:49 cg72 PenguinDad i coded an extra exponentially greater system just now, it bends space time to help productivity 18:57 hmmmm how do you signify an error in creating an object in lua? 18:57 hmmmm https://github.com/minetest/minetest/issues/1819 this guy wants an error 18:58 hmmmm script_error(L); would abort the script 18:58 hmmmm abort the server i mean 18:58 hmmmm and then if so, how am i supposed to handle errors everywhere else noise is created? 18:59 hmmmm noise is used in a lot of places... 18:59 kahrl I think he just wants a LuaError instead of a std::bad_alloc 19:03 hmmmm trying to decide whether or not I should have the Noise ctor catch std::bad_allocs and set them to some default noiseparams that doesn't crash anything 19:03 hmmmm and then if so, how would I report the error... 19:03 hmmmm noise->areParamsGood() ? 19:04 kahrl that sounds like a great way to create bugs that are impossible to find 19:05 hmmmm - i want to avoid errorstream in noise.cpp 19:05 hmmmm - i don't want to wrap every single noise declaration in a try catch statement 19:06 hmmmm i want to be able to pass a LuaError along in the case of invalid parameters 19:06 hmmmm and finally i want to recover "gracefully" 19:06 hmmmm whatever that means 19:09 kahrl if someone sets bad noiseparams in the C++ source, I think it's better to just get a std::bad_alloc than "graceful" default noise params 19:10 hmmmm well bad noise params get set in the config file as well 19:10 kahrl hmm yeah 19:10 hmmmm and people modifying map_meta.txt 19:10 hmmmm map_meta.txt should be a binary format so people don't screw around with it 19:10 hmmmm ugh 19:12 hmmmm so i just checked. there aren't as many instances where noise objects are created as i thought. just the mapgens and a couple of script things. i could put an exception handler around createMapgen() i guess.. but how would I handle a mapgen startup failure? all of the server startup failures just pass along exceptions 19:13 hmmmm i think people are just upset that they see "std::bad_alloc". if I catch that and throw InvalidNoiseParams or something instead, people won't get as upset 19:14 kahrl yeah that sounds good 19:15 kahrl no need to catch that exception anywhere imho 19:15 hmmmm heh.. thing is that the noise params aren't necessarily invalid 19:15 kahrl maybe check them in the catch(std::bad_alloc&) 19:16 hmmmm in some cases there are noise params that have a very low spread factor or something else, resulting in lots of memory getting allocated. so what might be invalid noise params for one machine might be not invalid for another 19:16 kahrl throw ProcessingLimitException("Noise params require too much memory")? 19:17 hmmmm i have to figure out a way to reliably determine whether or not noise params were specified wrong or just too demanding 19:17 hmmmm like obviously if octaves < 0 that's invalid, right 19:18 hmmmm then maybe if octaves > 500000 or something i'll call that invalid 19:18 hmmmm but coming up with these upper bounds are kind of arbitrary 19:18 hmmmm s/are/is/ 19:20 Krock octaves above 20 are already not needed 19:20 kahrl tbh I don't see why people are upset about std::bad_alloc 19:21 hmmmm if they don't understand what's going on when noise is being created it just looks like a random crash to them 19:21 kahrl surely if someone calls inventory:set_size("list", 1000000000) they'd understand it? 19:25 hmmmm you know I was also considering another way to handle this 19:26 hmmmm actually no nevermind 19:36 hmmmm humm 19:36 hmmmm std::bad_alloc seems to abort the program before my catch can catch it 20:00 paramat hmmmm, my experience is noise params will cause a crash when spread of the highest octave falls below 1, so that seems the most obvious check to do on noise parameters: spread / 2 ^ octaves < 1 20:00 hmmmm this is going nowhere unless I can figure out a way to catch std::bad_alloc 20:00 hmmmm it seems to work fine on Linux though 20:04 paramat i wouldn't worry too much about fixing this, i need to write an explanation of noise params and that will guide people to set sane params 20:09 kahrl odd, I would have expected it maybe the other way around 20:09 kahrl I expected that linux would return some memory but when you tried using it, the OOM killer would lynch the process 20:11 paramat hmmmm, when you have time please let me know your opinions on my plans for biomes: http://irc.minetest.ru/minetest-dev/2014-11-29#i_4042129 20:52 hmmmm hmmm 20:52 hmmmm paramat: i like node_stone, but as for the noise param tweaking i'm not so sure.. 20:52 hmmmm the concept was to have one centralized biome system 20:53 hmmmm just to be clear, it's the same set of noises representing the same thing, just different for each mapgen 20:53 hmmmm but you want them to go into the mapgen special parameters 20:55 hmmmm when you say "tune biome spreads to the scale of each mapgen", do you mean the overall size of the mapgen in question? 20:59 paramat well i mean some future mapgens may be on such a large scale that standard size biomes would be too small 21:00 paramat also of course spread needs to be tuned according to the number of biomes used 21:01 hmmmm what if each biome defined a "size factor" that gets used for things like this and maybe the size/depth/etc of caves 21:01 hmmmm would that work? 21:01 paramat i assume heat/humidity noises cannot currently be adjusted by the player, and are the same for each mapgen? 21:01 paramat um maybe i'll think on it 21:02 hmmmm the second thing I don't want to manually adjust the spread, i think the spread should be adjusted by the number of biomes currently active like you were mentioning before 21:02 hmmmm they can't be adjusted by the player because i just never got around to it 21:02 paramat okay =) 21:02 hmmmm but the original intent was to have a single setting for biome heat and humidity 21:06 paramat "but you want them to go into the mapgen special parameters" yes 21:07 hmmmm hrmm 21:07 hmmmm yeah that could work out i guess 21:08 paramat each mapgen would have it's own heat and humidity noises, but i feel it's essential to scale the biome size to the scale of the mapgen. not so important now but for example watershed looks ridiculous with biomes smaller than 1kn 21:08 paramat "just to be clear, it's the same set of noises representing the same thing, just different for each mapgen" yes thats what i suggest 21:13 paramat i guess what i want could be done just by making the central heat/humid noises user adjustable as you were planning, i'm okay with that 21:14 paramat how about point "use 3 octaves 0.5 persistence for heat/humidity to reduce the amount of tiny biomes and biome stripes" players have complained about tiny biomes next to huge biomes in mgv7, and i get that myself too 21:15 paramat *how about point 2 21:15 hmmmm what's it at right now? 21:15 hmmmm thing is we're walking a fine line between noise quality and continuity 21:15 hmmmm trying to get an interesting biome shape 21:16 paramat um now its 3 0.55 humid 3 0.7 heat 21:16 paramat i think 21:17 paramat yes the biome shapes are more interesting with high persist, but smaller, so i agree it's a balance 21:18 hmmmm see I'm not really too picky on what the biome default noise parameters are 21:18 hmmmm the ones that i have there now are quite arbitrary 21:19 hmmmm biomes are something i was having trouble on and so i quit working on them 21:20 paramat one centralised set of heat/humidity noises is a nice idea theoretically but i feel ideally each mapgen deserves it's own suitably tuned heat/humidity noises 21:20 hmmmm an early problem with biomes were the "bubbles" that occur inside of a biome - my initial idea was to do a fast flood fill inside the current biome map with whatever the dominant biome was, but you can see the issue with that strategy 21:21 paramat small bubbles of other biomoes appearing? 21:21 hmmmm yeah 21:22 paramat thats due to the high persistence 21:22 hmmmm these are all problems that could be solved if maps were pre-generated all at once 21:25 paramat BTW with default biomes defined for mgv5/v7, how do players disable these default biomes to define their own? 21:26 hmmmm you mean the rock/water one? 21:32 paramat i mean, i'm working on the default biomes for mgv5/v7 now, adding the registrations to default/mapgen.lua, but wondering what players do if they want to define their own biomes, how do they 'remove' the default biome definitions 21:32 hmmmm you don't 21:33 hmmmm well since it's only a problem if there's none, I guess the first biome could replace the default one instead 21:33 hmmmm that entire thing is going to get an overhaul soon 21:35 paramat eh? so what's the point of a biome API if players can't replace the default biomes 21:36 paramat lol 21:36 hmmmm after registration of ANY biome, the default biome can never be selected 21:36 paramat ah 21:36 hmmmm the default biome is only there so minetest doesn't crash if no biomes were registered 21:37 paramat so default biomes are discarded as soon as players define new ones, okay 21:39 paramat BTW worldedit does actually have a way to set probabilities by punching, so i will soon make the new tree schems. i'm aiming to have default biomes for mgv5/v7 ready for 0.4.11, but mgv5 will not be stable until the release after at the earliest 21:41 paramat people are talking of a feature freeze, 1 week from now seems suitable, thought i'd mention it since you usually organise this 21:41 hmmmm yeah 21:41 hmmmm sounds good I guess 21:42 hmmmm I haven't been as involved as i should be lately 21:45 hmmmm alright 21:46 hmmmm i'll just commit my bad_alloc patch as-is.. I cannot test this because it's been confirmed that FreeBSD 9.1 (what I use) has this specific bug 21:47 paramat biome bubbles are not a problem as long as there aren't too many, they're cute, reducing persistence will reduce how many there are, i'll make a pull for 3 oct 0.5 persist and for node stone 21:48 paramat cool, the noise param crash happens very rarely to players 21:48 paramat i only know of 3 cases 22:54 kahrl RealBadAngel: any ideas about #1860? 22:54 ShadowBot https://github.com/minetest/minetest/issues/1860 -- Wield item is always fully bright 22:57 celeron55 >CoreSettings 22:57 celeron55 i'm not going to add any settings to minetest anymore if i need to write the new setting to 10 places 22:57 celeron55 add a code generator or something, not this crap 22:59 kahrl celeron55: I agree 23:02 celeron55 (a code generator is bad too, but less bad; i don't know if such can be used in an acceptable way either though) 23:02 hmmmm any comments on my version? 23:02 celeron55 (i *think* integrating code generators is possible to cmake if they are written in C++, which might make them cross-platform enough) 23:03 celeron55 where is your version? i can't find it 23:04 hmmmm [12:06 PM] do this: http://fpaste.org/155147/80761141/ 23:07 celeron55 that's not too bad otherwise, but storing the local boolean persistently can be a pain in the ass sometimes 23:07 celeron55 (unless just making it global) 23:08 hmmmm it's supposed to be a member of the object 23:09 hmmmm so this is like the way i currently cache settings in my own... abominations^H^H^H^H^H^H^Hcreations, except this auto-updates the settings 23:09 celeron55 not everything is an object 23:09 celeron55 this is not Java 23:10 kahrl volatile is not meant for synchronization 23:10 hmmmm of course not 23:10 hmmmm there's no synchronization needed here, except perhaps the entire setBool should be locked rather than just the set operation 23:11 hmmmm if you don't put volatile, the compiler might cache fast_move_update on the stack and it'd never get updated 23:11 celeron55 if i were making this and really wanted this kind of optimization, i would make a very simple global struct which would contain copies of the settings for quick access and then go from there somehow; not sure how exactly as clearly it needs some kind of synchronization 23:11 hmmmm or just not fetch it from memory in between loops 23:12 celeron55 (of course if it's just boolean settings, then hmmmm's approach probably works in practice for syncing) 23:12 kahrl I don't like adding boilerplate to every place that needs to access some setting in a fast way 23:12 hmmmm it would work in practice for any data types less than or equal to the size of a machine word 23:13 kahrl though I suppose that could be encapsulated in some helper class 23:13 celeron55 (i mean, the volatile part of it; the storage of the value is still a problem9 23:13 celeron55 )* 23:15 celeron55 but really when doing introspection-like stuff in C++, i have noticed that externally implemented code generation really helps 23:16 hmmmm i really hate generated code 23:16 celeron55 it adds a certain amount of complexity, but the complexity stops there and you can generate very optimal things with nice interfaces 23:16 celeron55 and fast compile times because you need less template or class magic 23:17 celeron55 the main problem becomes finding a good way to do the generation without hindering portability or robustness of the build system 23:19 hmmmm what if we just add python as a dependency for building! 23:19 celeron55 lol 23:19 celeron55 windows=dead 23:19 celeron55 anyway, i just want people to consider this too; i'm not implementing it so i don't get to choose anything 23:20 kahrl just ship a python implementation in PowerShell :P 23:24 kahrl how about something like this? https://gist.github.com/kahrl/c61a3ef46eae4770f165 23:28 celeron55 i don't understand where any part of this is supposed to be used 23:29 kahrl the first example is defaultsettings.cpp and the second is coresettings.h 23:30 celeron55 hmm wait, now i do 23:30 kahrl the point is to re-include it every time something needs to be done for all core settings 23:31 celeron55 this could be very handy 23:32 celeron55 it's basically a macro foreach 23:32 kahrl the only problem I see is that cpp is quite limited so it might be hard to do certain things 23:32 kahrl e.g. do something different depending on the type of the setting 23:33 celeron55 well that requires templates and it can get a bit ugly 23:35 celeron55 but i don't think it's going to be a big issue in this case 23:35 celeron55 do you? 23:35 kahrl not really 23:35 kahrl I guess we'll find out if we try it 23:36 celeron55 i would very likely approve a solution based on this 23:37 hmmmm templates make C++ turing complete 23:37 hmmmm on compile time 23:38 celeron55 i think all languages should be turing complete at compile time; it gives a lot of flexibility; in C++ it's implement by pretty much a brainfuck derivative 23:38 celeron55 implemented* 23:39 hmmmm i think i like kahrl's version the best 23:39 hmmmm i really like how it's simple 23:51 paramat okay hmmmm thinking on it, it's fine by me to keep one set of heat/humidity noises in mg_biome.cpp, as long as they become settable through .conf, i may well attempt to code that myself and perhaps also the auto scaling of spreads from number of biomes 23:52 paramat then once they're settable i can change the persistence without breaking people's mgv7 worlds 23:56 paramat i made the mistake of complex future-proof coding instead of // Just do something simple for now