Time Nick Message 03:30 MTDiscord sfan5, in 5.6, a fairly recent build, there is an issue with mesh nodes. Im not sure of the details, but when I play wormball on a minigames server, the food nodes look like half node-sized spheres. when I play on 5.6, tho, the food nodes are tiny, about 1/16 of a node 03:32 erle MisterE can you narrow this down using devtest? 03:34 erle MisterE in mods/testnodes/meshes.lua in devtest there are a bunch of nodes you could try to figure out more, starting with testnodes:mesh testnodes:mesh_double testnodes:mesh_half 03:36 erle they all use the testnodes_pyramid.obj – once without visual_scale (which i assume being the same as setting it to 1), once with it set to 2, once with it set to 0.5 03:37 erle MisterE so i suggest to spawn these three in both a working version and a non-working one and report back 07:53 x2048 Merging #11696 soon unless anyone has objections 07:53 ShadowBot https://github.com/minetest/minetest/issues/11696 -- Depth sorting for node faces by x2048 07:56 x2048 Merging https://gist.github.com/x2048/0ec1912f03a2c13553d8513e357a0091 soon. Aligns shadow boundary with fog boundary. 10:45 sfan5 @MisterE make sure to open an issue so it isn't forgotten 10:45 erle x2048 i applaud that you made the setting for fps drops adjustable 10:47 erle x2048 could you tell me where the idea comes from that fps drops are “edge cases”? as far as i have seen, griefers go to great lengths to actually trigger whatever makes clients lags all the time. the “do not render particles” option in waspsaliva is a direct consequence of particle performance being bad. are developers seeing attackers as “edge cases” in general? 10:48 sfan5 intentionally provoking worst case behaviour is an edge case yes 10:49 erle ah, so it is the edge of theoretical possibility space, not if it happens often in real life. thanks! 11:43 MTDiscord "real life" != anarchy though 11:44 MTDiscord anarchy is an edge case of real life :D 12:37 erle luatic are you aware that the assclown brigade is attacking servers that are not anarchy servers though? 13:07 x2048 erle: not that I have explored a lot of servers, but transparent nodes in general have been used rarely on the servers, and I have only seen a couple of places which used multilayered semitransparent structures 13:08 x2048 it is also not part of default experience in any known game in minetest 13:08 erle x2048 glass? 13:08 x2048 but transparent I mean semitransparent nodes, 0 < alpha < 255 13:08 erle i mean sfan5 answered it already, something can be incredibly common in real life and still an edge case since it's a very small part of the possible configurations 13:09 x2048 *by 13:09 erle uh, wait, is glass a semitransparent node or not? 13:09 erle water is, but lots of water columns are usually the kind of things that griefers make ;) 13:11 x2048 yes, but water is just one material, and is not the worst offender 13:11 x2048 majority of the performance loss is due to GPU pipeline being flushed by frequent material change 13:12 x2048 and the worst case is a multilayered multi-textured transparent texture, like a colored glass statue 13:12 x2048 *transparent structure, not texture of course 13:14 x2048 and I would consider edge cases in relation to an average gameplay, not real life 13:15 x2048 default glass is not semitransparent and is not affected by my changes, colored stained glass is. 13:16 x2048 non-colored 'frosted' glass is also affected 13:17 x2048 as for the griefers, this is a usual tactic for any adversary to use a known (or better uknown) edge case behavior to their advantage. Which does not change the meaning of 'edge case', but also means that they must not be totally ignored 13:18 x2048 That's why I added sorting range parameter and made it a low value by default 13:18 erle yes, that was a good choice 13:18 erle for my own software i always try to get the “best worst case”, but a lot of people optimize for the “best case” 13:19 erle x2048 the main thing i feared was that it might open up another avenue for lagging clients – but if it is easy to turn it off, that's not a problem 13:20 erle or turn it down 13:21 erle x2048 am i correct in assuming that order-independent transparency or whatever it is called will have no such issues? 13:34 x2048 yes, but it will bring a different set of challenges :) 13:39 x2048 like higher hardware requirements with more textures and non-trivial per-fragment GPU code 13:40 x2048 which brings us further away from the fixed pipeline and potato GPUs 13:54 MTDiscord x2048: that's because it wasn't fixed up until now; you can expect usage to go up now that you've fixed the rendering 14:12 Pexin x2048: if you think people dont like to build with stained glass / frosted glass, you must only be on some quite basic servers. i see them constantly. 14:16 rubenwardy the fact that people build with that a lot is why it needed to be fixed 14:21 Pexin it is my impression that formerly only the closest semitransparent surface was rendered, and all behind it was invisible, but someone considered that a bug. is this currently (or can it become) an available user setting? 14:24 MTDiscord That assumption is incorrect 14:25 MTDiscord Having multiple glass layers would render/glitch different depending on the cameras view angle 15:09 MTDiscord ^ 15:09 MTDiscord literally anything could happen 15:09 MTDiscord but some settings for special blend modes might indeed be useful 16:02 sfan5 question for Lua experts: can normal code mess with the metatables of userdata? 16:06 Desour in general yes. if the metatable has the __metatable field set and you don't have any other access to the metatable (ie. via debug.getmetatable), then no 16:06 MTDiscord Not 100% sure what you mean without maybe some example code, but I think yes, and some mods/games rely on this. 16:06 Desour (according to lua reference= 16:06 Desour )* 16:06 MTDiscord That moment when you realize you aren't a lua expert 16:08 Desour in minetest: until #12118 is merged, yes 16:08 ShadowBot https://github.com/minetest/minetest/issues/12118 -- Make `debug.g/setmetatable` respect the `"__metatable_debug"` metatable field by Desour 16:10 MTDiscord That just prevents weird metatable hacking shenanigans and stuff, but doesn't change the ability to modify userdata prototypes' methods, right? 16:11 MTDiscord So like if I want to override inventory:add_item() that shouldn't be affected 16:15 Desour if you want to do inventory.add_item = , you'd use the __newindex meta field, which is nil, so it's an error 16:16 Desour (and you couldn't modify the function env either because it's a C function and you don't have debug.g/setfenv) 16:17 Desour oh, but I'm seeing right now, that __index and __metatable use the same table, so you can do getmetatable(inv).add_item = ... 16:18 Desour which is not affected by the PR 16:23 wsor bit, late, but sfan5: https://gitlab.com/luk3yx/minetest-fs51/-/blob/main/monkey_patching.lua#L149-166 example in the wild 16:27 wsor so Desour, if i understand correctly, your PR would deny the ability of mods to override player metatables? if so, thats will break mods, and additionally is counter intuitive since overriding minetest api functions is eve recommended in lua api for some things 16:27 wsor s/eve/even 16:28 sfan5 the api only recommends overriding global functions, nothing metatable related 16:28 Desour wsor: it would not break your example. it only breaks code that uses debug.g/setmatable on minetest's userdata objects 16:29 wsor Desour: thank you for the clarification 16:29 Desour (as said before, "getmetatable(inv).add_item = ..." is not affected) 16:30 rubenwardy Surely it would make more sense just to remove debug.set/getmetatable 16:30 sfan5 it would be more secure but also break e.g. mesecons sandbox 16:30 rubenwardy ~mod mesecons 16:30 ShadowBot rubenwardy: 16:30 rubenwardy _sigh_ 16:31 MTDiscord https://github.com/minetest-mods/mesecons 16:31 rubenwardy Mesecons uses getmetatable, not debug.getmetatable 16:32 MTDiscord seems mesecons only uses getmetatable, not debug.getmetatable 16:42 rubenwardy I'm currently grepping ContentDB. One match is modpol/modpol_core/util/serpent/serpent.lua:local getmetatable = debug and debug.getmetatable or getmetatable 16:43 Desour if debug.getmetatable evaluates to nil, that will default to getmetatable 16:43 rubenwardy yeah, so that's fine 16:54 sfan5 rubenwardy: how does it set the string metatable then? 16:54 sfan5 I thought only debug.getmetatable allowed that 16:55 debiankaios upps 16:55 debiankaios joined wrong 16:55 MTDiscord sfan5: https://github.com/minetest-mods/mesecons/blob/master/mesecons_luacontroller/init.lua#L637-L642 16:55 MTDiscord additionally https://github.com/minetest-mods/mesecons/blob/master/mesecons_luacontroller/init.lua#L203-L209 16:56 Desour strings' metatable has no __metatable field, so getmetatable works normally. only setmetatable does only work on tables 17:09 rubenwardy no more matches of debug.[sg]etmetatable found 17:10 rubenwardy so it's safe to remove 17:10 rubenwardy from CDB's perspective anyway 17:14 Desour then removing makes more sense, for simplicity 17:44 MTDiscord Please don't remove the two funcs! They allow insane levels of haxxory. 17:45 MTDiscord Such as defining new operators for primitive types like numbers or funcs 17:45 MTDiscord (funcs aren't primitive, but share one metatable) 17:45 MTDiscord it literally allows implementing function-based classes without table overhead 18:09 Desour luatic: what are function-based classes? 18:28 Zughy[m] could any core dev please investigate #12092 when they're free? I made it as specific as possible and I can't pull workarounds to fix that, or you won't able to test (in locale it basically never happens) 18:28 ShadowBot https://github.com/minetest/minetest/issues/12092 -- Calling set_detach() + set_properties() + set_pos() on the same step fails to teleport the player half of the time, especially online 18:47 MTDiscord Zughy: Are you sure it happens with 5.4 server as well? I've encountered the similar issue but only after the server was updated to 5.5. 19:16 rubenwardy !title https://content.minetest.net/zipgrep/26b05bca-c5ce-475f-ad72-871b6cceb8b6/ 19:16 ShadowBot rubenwardy: 'debug.[gs]etmetatable' - Search Package Releases - ContentDB 19:17 rubenwardy (Added a tool to regex search all packages, currently locked to admin rank as it's expensive and potentially not very secure) 20:05 Zughy[m] " Zughy: Are you sure..." <- yes I'm sure, we've been having that problem since we added the spectate mode, a thing we did in.. 5.3 if I stand correctly 21:02 x2048 Pexin: there's now a client-side setting that limits depth sorting: https://github.com/minetest/minetest/blob/master/builtin/settingtypes.txt#L863 21:02 x2048 If you set it to 0, you effectively disable depth sorting 21:21 MTDiscord Desour: basically closures (instance variables stored in upvalues), except you can implement all the syntactic sugar if you can change the func metatable