Time Nick Message 00:47 OldCoder hmmmm, thank you. That answers something I was wondering about; //deleteblocks did not seem to affect entities that I could see. 00:48 OldCoder 00:48 OldCoder Say, I'll mention something funny I've noticed. VE says she may have seen it too. Probably nobody can comment yet... 00:49 OldCoder But VE's remarks about creatures falling to the bottom of the universe reminds me, I often see mobs skyrocketing straight up without explanation 00:49 OldCoder Santa, animals, whoose, they shoot straight up and out of site 00:49 OldCoder whoosh! * 00:49 OldCoder Perhaps traveling to the stars. If Rocket Mobs is not an intentional feature, perhaps this should be noted. 00:49 OldCoder 11:59 Megaf T4im: I see, here I'm running GNOME (ON) Wayland 11:59 Megaf Mutter is the compositor itself, I think 15:16 Sokomine OldCoder: i think those mobs where heading upwards and didn't receive an update of their trajectory in time. it was very fun in earlier implementations of sapiers mobf (which used to need heavy ressources to spawn the mobs) to see fish take off and head up into the sky 15:25 DFeniks i might have seen mobs jump up in sky too , not sure. but it reminds me i frequently see unknown entities flying slowly over water , i encountered them on Xanadu and VanessaE's Survival . too bad i can barely reach f12 even when i remembered about screenshot feature . sorry no screenshots yet 15:46 Sokomine DFeniks: that's normal behaviour. unkown entities come from entities that once existed but got renamed or removed afterwards. these entities continue to move on 15:47 DFeniks great , afterlife for entities , ghosts of mobs ... 15:48 Megaf a /clearobjects should wipe them out 16:38 est31 nanepiwo, fixing the error you pointed out 16:38 est31 what is your github handle nanepiwo ? 16:40 nanepiwo what's a handle? 16:41 est31 user name 16:41 nanepiwo nanepiwo 16:41 nanepiwo the issue is #2825 if you're looking 16:41 ShadowBot https://github.com/minetest/minetest/issues/2825 -- Entities outside of map borders. 16:45 est31 hmmmm, can you have a look at https://github.com/est31/minetest/commit/d2ea4a23c167db19fc166991f2c508472ba22b46 16:51 VanessaE est31: that looks workable for spawning an entity, but what about entities that wander out of bounds after spawning in-bounds? 16:52 est31 VanessaE, that's for later when I've read that code 16:53 VanessaE ok. 16:53 VanessaE just making sure it doesn't get forgotten. 16:53 est31 also, note that this patch needs modder interactions 16:54 est31 e.g. with the example command provided by nanepiwo you can still crash the server just now its a problem of the mod xD 16:54 est31 because minetest.add_entity returns nil ::) 16:54 est31 perhaps I should point that out 16:54 hmmmm est31, couple things here... 16:55 hmmmm the name. isInsideF1000 16:55 hmmmm that isn't very intuitive... I'm not sure what else to say 16:55 est31 ideas for better names? 16:55 est31 I dont like it either 16:56 est31 isLegalF1000? 16:56 hmmmm no 16:56 hmmmm something with bounds 16:56 hmmmm CanFitWithinF1000Bounds()? 16:56 hmmmm but the thing is 16:56 est31 isInsideF1000bounds() is shorter 16:56 VanessaE IsInBoundsF1000 ? 16:56 hmmmm it's not about whether an object should be within the bounds or not 16:56 hmmmm an object should always be within the map 16:57 hmmmm third, memory leak where you do the checking 16:57 hmmmm you need to if (object->environmentDeletes()) delete object; 16:58 est31 ah 16:58 hmmmm fourth, this does not cover all the cases 16:58 VanessaE I noticed that, wasn't sure if I was right. 16:58 hmmmm what about object movement 16:58 hmmmm etc. etc. 16:58 est31 hmmmm, this is only about adding 16:58 hmmmm so what do you think about checking against the map limits 16:58 est31 hmmmm, right now you can crash many servers with a simple command because you have added an assert 16:59 est31 and I now try to fix the largest bug 16:59 est31 and you say "this is not enough" 16:59 est31 ofc it is not enough 16:59 hmmmm many servers are NOT running as debug 16:59 est31 but right now I want to provide the immediate patch 16:59 hmmmm this 'crash' only happens with debug builds 16:59 nrzkt assert is not run in release mode 16:59 est31 like those from the ppa 16:59 nrzkt and permit to find bugs :) 16:59 est31 the ppa is built in debug mode 16:59 nrzkt if the PPA maintainer does shit, tell him 17:00 hmmmm well that's kind of boneheaded 17:00 hmmmm sounds like the PPA maintainer's problem, not ours 17:00 est31 hmmmm, there is none :) 17:00 hmmmm the whole reason why the assert is there is to help us discover places where objects go out-of-bounds and fix them 17:00 hmmmm this is way better than failing silently 17:00 est31 why did it have to be a crashing message? 17:01 est31 why not just log to errorstream 17:01 est31 and done 17:01 hmmmm nobody listens to errorstream unless something visible happens 17:01 hmmmm I guess you could log to errorstream, it's just that you don't normally want to add logging.h to util/serialize.h 17:01 hmmmm that's a fairly hefty include 17:01 est31 well, then put it in serialize.cpp 17:01 hmmmm also, every single call will have that inlined 17:02 hmmmm that's such a slowdown 17:02 est31 shrug 17:02 est31 meh no 17:02 est31 the cpu will learn to predict the other case 17:02 est31 and not load the instructions 17:02 est31 so no slowdown 17:03 hmmmm that doesn't matter, the fact is the call to errorstream operator << 17:03 hmmmm is still there 17:03 hmmmm along with all the arguments 17:03 hmmmm this will trash the icache where it normally shouldn't be 17:03 est31 but yeah I guess once an object gets inside dangerous territorry it will spam errorstream 17:03 hmmmm thrash rather 17:03 hmmmm there are a lot of problems here 17:03 hmmmm but the main problem is that before I made that change, F1000s silently failed to serialize and objects would seemingly warp to other parts of the map 17:04 hmmmm honestly I'd rather fix that and be able to remove the assert 17:04 est31 thats better than providing people with the opportunity to do /area_pos1 99999999,0,0 and crash the server 17:04 hmmmm again, they shouldn't be running a debug build 17:04 hmmmm that's THEIR problem, not ours 17:04 hmmmm and I am totally against "fast" fixes 17:04 hmmmm i want things done right 17:05 T4im but once you fix the issue, wouldn't the assert finally be reasonable? :P as in, asserting that it can't happen anymore? 17:05 hmmmm i suppose so 17:05 hmmmm ugh 17:05 hmmmm fine 17:05 est31 hmmmm, you always want things perfect 17:05 hmmmm we'll put writeF1000 into serialize.cpp, make it not inlineable, and spit out an errorstream message 17:05 nrzkt i think coordinates should be tested in EVERY lua call 17:05 nrzkt this is the solution :) 17:05 hmmmm honestly yeah ^ 17:05 nrzkt and trigger an exception if shit is done 17:06 hmmmm but this error condition can happen purely within the core I believe 17:06 est31 lua is only an interface 17:06 est31 yea 17:06 est31 imagine falling object 17:06 nrzkt yes but lua permit to do those things. 17:06 nrzkt falling object is lua 17:06 nrzkt adding a out of bound check in the luaentitysao is the solution here. 17:06 est31 wtf object physics are lua?! 17:06 VanessaE a falling entity is exactly the thing here. 17:06 hmmmm if an object tries to move outside the map I think it should simply not move any further 17:06 est31 yea 17:07 VanessaE spawns in a normal area,. falls down a deep hole, finds its way to the map border, boom 17:07 hmmmm adding objects outside of map boundaries should fail 17:07 hmmmm forget the serialization limits for F1000 for now 17:07 est31 but hmmmm this is not what my patch is about 17:07 T4im coordinate min/max? :) 17:07 hmmmm ell 17:07 hmmmm wlel 17:07 est31 my patch is about ADDING objects to the map 17:07 est31 not about moving objects 17:07 est31 they are statically 17:07 est31 floating 17:07 est31 not moving 17:07 hmmmm scrap the patch, and just change the assert to an error logging thing 17:07 est31 no, you conviced me now, no error logging 17:07 hmmmm that's a "quick fix" albeit one that's sort of gross 17:07 est31 it will spam everything 17:08 hmmmm eh 17:08 est31 hmmmm, is there a generic method for checking world bounds? 17:08 hmmmm yes 17:09 hmmmm blockpos_over_limit() 17:10 est31 but that doesn't really fit actually 17:10 kahrl oh wow, does this really read the setting every time? 17:10 est31 I mean its mostly about mapgen 17:10 est31 no 17:10 kahrl it's called in the inner loop of RemoteClient::GetNextBlocks 17:10 est31 const static 17:11 kahrl oh, yeah 17:26 est31 ok new version https://github.com/est31/minetest/commit/3bd6885b605189ef2f07910c8f93664e3eea7898 17:27 est31 even newer one https://github.com/est31/minetest/commit/c0b5324e929c56e9dc09a6a531716624e2d0875e 17:29 VanessaE est31: that won't work 17:29 nrzkt seems good for newer objects 17:29 VanessaE the mapgen limits are different at each end/on each axis 17:30 nrzkt i use a similar patch to remove unneeded saved entities :) 17:31 est31 VanessaE, but they are inside F1000 bounds, right? 17:32 VanessaE that I can't be sure of 17:32 est31 I'm very sure of that its much more than 31k 17:32 est31 much much more 17:33 VanessaE I'm just saying that at the negative end (of a full map) it's -30912, but at the positive ends it's 30927 or some such 17:36 VanessaE and MAX_MAP_GENERATION_LIMIT is greater than either of those, by default (31000 even) 17:37 hmmmm eh 17:37 hmmmm instead of objectpos, what's wrong with nodepos 17:37 hmmmm blockpos checks block coordinates 17:37 hmmmm oh i see, it compares a v3f 17:37 est31 yea 17:37 hmmmm yeah, looks fine to me. 17:38 est31 but what VanessaE is likely true though, its not perfectly aligned to the border (a bit farther) is that ok? 17:39 hmmmm in an ideal world we'd never get objects trapped in areas outside the map 17:39 hmmmm MAP_GENERATION_LIMIT is a decent compromise imo 17:40 est31 well, lua would have to check 17:40 est31 but I don't think this is how we should do things 17:40 est31 providing unsafe API to lua 17:40 est31 rather we should make it a nice sandbox 17:41 est31 s/things/this/ 17:45 est31 pushed 17:45 est31 now the areas mod only has to check for add_entity to return nil 17:45 est31 nanepiwo, wanna file a bug? 17:46 est31 I'm gone 17:46 est31 bye 17:48 kahrl wait a second, isn't there a * BS missing 18:06 nrzkt kahrl, exact, object->getBasePOsition() / BS should be 18:06 nrzkt else this will remove many many objects :p 18:06 nrzkt because limit will be 3200 not 32k :) 18:08 nrzkt sorry 320k 18:09 nrzkt then the fix has no effect 18:40 OldCoder Sokomine, does this mean I have sheep collected on the roof of the Universe? 18:54 Sokomine OldCoder: they just appear to shoot upwards forever on the client's side. i have no idea what happens server-side. the server didn't have enough time to correct their movement...no idea where the entities end up. old mapblock? the one where they happened to be in by chance? the topmost loaded one? 18:56 Sokomine but...if you find any flying sheep...take a screenshot :) 18:57 OldCoder They whoosh up too quickly 18:57 OldCoder Zoom! 18:57 OldCoder To the Moon! 18:57 OldCoder Sometimes in groups 18:57 OldCoder Flying crocs are a sight to see 18:58 OldCoder It is unnerving :P 18:58 OldCoder Fortunately it is not all the time. I am more concerned about a random number issue. 18:58 OldCoder Scroll up a day and see the discussion between C55 and myself on the issue. 18:58 OldCoder I think the RNG in MT is fundamentally broken. 18:58 OldCoder 18:59 OldCoder Mobs created by totally different mods, even those with different APIs, and with low-probably spawning... 18:59 OldCoder spawn in clumps on exactly the same nodes 18:59 OldCoder Try increasing active_object_count to 32 and see what happens 18:59 OldCoder The primary requirement is that mobs need to have the same interval and chance 19:00 OldCoder That chance often triggers at exactly the same time for a dozen mods 19:00 OldCoder Even though I have looked closely at the C++ code and it should not 19:00 OldCoder 19:03 Sokomine OldCoder: oh. i thought that was deliberate, that spawning in groups. at least for sandmobs and the like. but i might be wrong 19:03 Sokomine as to the problem of not enough time to update mob spawning...it only happens when the server is too busy due to something 19:03 OldCoder Sokomine, nope; Santa, sheep, cows, snowmen 19:04 OldCoder Try increasing active_object_count to 32, set interval to 30, set chance to 30000 19:04 OldCoder Set spawn_near to dirt_on_grass 19:04 OldCoder Do this for different mods using both mobs and mobs redo 19:04 OldCoder Then fly around 19:05 OldCoder and witness 10 to 20 things stuck together 19:05 OldCoder If you trace the code down, the issue seems to be in the engine 19:05 OldCoder Which C55 says is not possible 19:05 OldCoder But the fact is that it goes right to heart of what an ABM does 19:05 OldCoder The ABMs are triggering in some cases at exactly the same time 19:05 OldCoder 19:06 * OldCoder thinks myrand in the core code is broken and will try replacing it 19:06 OldCoder As a related note: 19:06 OldCoder This is core dev BTW the RNG is broken: 19:07 OldCoder I set chance for mantises to 80000 19:07 OldCoder No, there is not supposed to be a 16 bit rollover for this 19:07 OldCoder And got 1000s of mantises roaming the countryside 19:07 OldCoder Hungry for human victims 19:07 OldCoder 19:07 OldCoder There does seem to be a problem with ABM triggering 19:07 OldCoder 19:16 Sokomine maybe it's a bug in the mod. i've only seen the nice models it has plus a few screenshots but never took a look at the code behind it 19:17 Sokomine it would be great to have some variation of the mobs mod in minetest_game, builtin or a new general library. the mobs code i've seen isn't suitable for that yet 19:24 OldCoder Sokomine, again, read up; different mods, different APIs 19:24 OldCoder And the code goes directly to minetest.register_abm 19:24 OldCoder The code can be simply calls to minetest.register_abm 19:25 OldCoder It appears that chance = chance is simply ignored or that chance often goes haywire 19:25 OldCoder below that level is simply built-in and C++ code 19:25 OldCoder 19:25 OldCoder minetest.register_abm is not mobs code. It is core. 19:25 Sokomine many mob mods are forks of pilzadams original version or forks of forks from that; if there's an error, it's possible that they all inherited id 19:25 * OldCoder sighs 19:25 OldCoder Read what I just typed, please 19:26 OldCoder The code can be simply calls to minetest.register_abm 19:26 OldCoder It appears that chance = chance is simply ignored or that chance often goes haywire 19:26 OldCoder below that level is simply built-in and C++ code 19:26 OldCoder There is no mobs code at issue 19:26 OldCoder This is core 19:26 OldCoder 19:26 * OldCoder will double-check all of this of course 19:26 Sokomine i havn't looked deep enough into it to be able to say much about those abms the mobs mod use. i havn't heared about strange behaviour from other mods using abs - but maybe that's less obvious 19:27 OldCoder active_object_count needs to be high 19:27 OldCoder for the issue to manifest 19:27 OldCoder usually it is set to 1 to 3 19:27 OldCoder For the issue to manifest, these conditions must be met: 19:27 OldCoder 19:28 OldCoder identical node, neighbors, interval, chance, active_object_count parameters 19:28 OldCoder interval of 30 is good 19:28 OldCoder chance of perhaps 20000 19:28 OldCoder active_object_count of 32 or 64 19:28 OldCoder ^ the parameters 19:28 OldCoder Few have tested this, I think 19:28 OldCoder 19:29 OldCoder Try it yourself sometimes and see. Not necessarily mobs code. Just different register_abm calls with these parameters 19:29 OldCoder Perhaps ABMs that just log a message 19:30 OldCoder Then fly over terrain and see if you get clumps of messages on the same nodes 19:30 OldCoder I will do this myself 19:30 OldCoder 20:23 celeron55 Subject: Stuck in air! 20:23 celeron55 I'm stuck niggah help >°.0 house craft 20:23 celeron55 ^ this here is a complete email 20:24 celeron55 enjoy