Time Nick Message 00:35 MTDiscord anyone want to play the newly finished balloon bop minigame, based on Exevirus' ludum Dare game? 02:40 ghoti So.. I know I can skin a basic_robot using things like this: self.set_properties({visual="mesh", mesh="mobs_tree_monster.b3d", textures={"mobs_tree_monster2.png"}, visual_size={x=2, y=2}}) 02:40 ghoti But how do I do this if I'm given a .obj file instead of a .b3d file? If I just change files, I get .. weird shapes instead of the the ones I'm expecting. 07:23 sfan5 @Warr1024 that does sound like it might be broken position interpolation esp. relating to low framerates 07:26 erle for the nodebox drawtype, how can i make it culled? 07:26 erle i tried to turn all the stone into lego bricks 07:27 erle and it renders everything 07:27 erle i can see it in wireframe view 07:27 erle it's not good for the fps 07:29 erle it looks like this https://mister-muffin.de/p/KyQM.png 07:30 erle if i can fix the framerate problem, i can make a mod that adds studs on all the cube nodes :) 07:34 sfan5 the engine can't do face merging for nodeboxes 07:43 MTDiscord yeah I don't think there's any way of doing culling with nodeboxes to make a mod like that work currently 07:43 MTDiscord I actually tested having 3d studs in openblox but it ended up becoming so laggy that the map loading just completely froze 07:45 MTDiscord you could of course go the texture trickery route and make a mod that overlays a stud outline texture on the top face of every node, but it won't be true 3D studs unfortunately 07:47 erle yeah it's super laggy 08:09 erle sfan5 ROllerozxa i thought this was horrible at first, but hahahaha rendering speed goes brrrrrrr https://mister-muffin.de/p/Fgdj.png 08:10 erle obviously this neighbour check could be made a bit better 08:10 erle because i only want to catch opaque nodes 08:12 erle and obviously the nodebox can extend {-8/16,-8/16,-8/16,8/16,8/16,8/16} 08:15 MTDiscord oh nice 08:15 erle yeah so how would a proper check for “surrounded by opaque nodes” look? 08:18 erle because if anyone can code some check like that, it's free fps for all drawtypes that can not be automagically culled 08:18 erle celeron55 rubenwardy any idea? 08:22 MTDiscord Was about to point out nodeboxes can extend up to 3 nodes³, but no that's not an issue. 08:24 MTDiscord oh wait, it is. You need to check the diagonals too. 08:24 sfan5 this issue has been known for a few years, it's one of the reasons MTG didn't get nodebox snow 08:25 sfan5 so it won't be that nobody has tried solving it 08:25 erle yeah i want to know what they ran into 08:26 erle like, suppose i a) check the diagonals and b) figure out how to find out how to check for “is this node fully occluded” 08:26 erle what remains? 08:26 erle or is the ”fully occluded” check too difficult? 08:26 erle if so, in what way? 08:27 erle sfan5 if you could point me to discussions or implementations of ideas like that, maybe i can learn from it 08:28 sfan5 that's a different, simpler approach than I was thinking of 08:28 sfan5 you want to skip entire nodes if they cannot possibly be seen 08:29 sfan5 what we really need is to remove any duplicate faces (at least) at node borders 08:29 MTDiscord Looking at lua_api the recommended limit is actually 2.9n³ (1.45 in each direction), and only for collision boxes. So this would introduce a new "restriction" of sorts. 08:29 MTDiscord I'm all for it though 08:30 sfan5 here's one of them https://github.com/minetest/minetest/issues/6409 08:32 sfan5 duplicate but with more detail https://github.com/minetest/minetest/issues/9126 08:34 sfan5 the obvious question is how would you implement this efficiently 08:35 sfan5 (I have no idea) 08:41 MTDiscord erle: your current solution would cause issue with people surrounding nodeboxes by transparent nodes. 08:42 MTDiscord oh, sorry, you mentioned that above 08:54 erle GoodClover give me a check for opaque nodes and you get legos everywhere 10:57 MinetestBot Wuzzy: Apr-30 14:19 UTC no idea, maybe ask on the thread 13:32 MTDiscord sfan5: re: position interpolation: I tried peeking at the code, and there were some fudge factors in it that had a strong "last person to work on this didn't actually understand how it works" kind of smell to it. :-) 13:33 MTDiscord I was thinking of filing it as an issue (client visuals) but an existing-bug search is part of that process, and I couldn't be sure that I had the right terminology and wasn't missing some duplicate. 13:35 MTDiscord I also ran into a fun one where player:set_look_dir() always happens on a different client step AFTER player:set_pos(), even if it's called BEFORE set_pos() on the same tick server-side. This causes "camera jumpcuts" to have a few frames of an intermediate cut that doesn't belong. 16:23 MinetestBot 02[git] 04JakobDev -> 03minetest/minetest: Add German translation to AppData file (#12161) 1341e79d9 https://github.com/minetest/minetest/commit/41e79d902d536f31b7b5fe2fb63a7272ce38d437 (152022-05-02T16:22:23Z) 17:23 settl3r[m] If player A built a travelnet with name X, can player B (who doesn't know A) connect his own travelnet booth to network X (eg. if he accidentally discovers the name), and then travel to player A's (secret) location ? 17:37 calcul0n settl3r[m], no, this will just create another network 17:44 x2048 erle, sfan5: Rergarding nodeboxes, I've been thinking about simple optimization that would focus on snow and similar stuff 17:45 x2048 step1: enumerate neighboring solid nodes 17:45 x2048 step2: enumerate neighboring nodes with the same node type 17:46 x2048 When drawing a cuboid, when a dimension has bounds [-0.5, 0.5], check neighbours lef and right and skip drawing faces if a neighbor is a solid or the same type 17:46 x2048 That was step3 17:48 sfan5 o/ 17:48 sfan5 that's missing a step where you precompute for each node which side is entirely covered 17:48 sfan5 but yeah that'd work 17:49 sfan5 as the graphics person I expected that you'd have an idea how to efficiently implement generic "If a triangle [...] facing a box face co-planarly" tests 17:49 sfan5 my google-fu failed me on this 17:50 x2048 I was thinking about that too, but sounds more complicated, like, a next step 17:50 x2048 What I propose is much simpler and has two assumptions: 17:51 x2048 (1) solid nodes most likely win over nodeboxes (yes, there are easy exceptions) 17:51 x2048 (2) we need to optimize large arrays of typical nodeboxes, not snowflakes 17:52 sfan5 well it'd also be nice if internal duplicate faces of nodeboxes could be removed 17:52 sfan5 but you can precompute that and do it with a different algorithm if needed 18:13 MTDiscord "If a triangle [...] facing a box face co-planarly" tests - do you want generic tests (for arbitrarily rotated triangles and boxes) or just for AABBs? 18:16 sfan5 AABB suffices 18:19 settl3r[m] "settl3r, no, this will just..." <- ok, what about elevators? do these function less strictly? 18:24 MTDiscord @criticalfault42 I had to step away, and you picked my thought. We need to analyze AABB, not triangles. 18:26 MTDiscord The first question to ask would be: Do we event want to check against co-planarity? I don't think so. 18:26 sfan5 why not 18:26 MTDiscord We want to perform occlusion checks, but not every co-planar face is occluded 18:27 MTDiscord Co-planar faces may be Z-fighting, but even that might be resolved by backface culling 18:27 MTDiscord We want to find interior faces, which for two solid bodies next to each other happen to be co-planar faces 18:29 sfan5 you're un-simplifying the problem 18:30 MTDiscord I may indeed be complicating it, oof 18:31 MTDiscord Anyways, if we restrict our stuff only to fully solid nodes (alpha = opaque) 18:32 MTDiscord Well, finding equal faces is pretty easy for nodeboxes < 1 node, just check whether the neighbor has a face there 18:32 MTDiscord Otherwise this theoretically is a case for R-trees 18:34 rubenwardy ERROR[Main]: OpenGL procedures were not loaded correctly, please open a bug report with details about your platform/OS. 18:35 rubenwardy this is new 18:35 rubenwardy outdated irrlicht maybe 18:36 sfan5 if irrlicht is oudated you should get a compile error instead 18:36 sfan5 but try that 18:39 rubenwardy same error 18:39 rubenwardy maybe needs a clean build 18:40 erle i don't even want to 18:40 erle think about this in terms of faces 18:40 erle i just want to not render stuff that is surrounded by other stuff so it can never be seen 18:40 erle so i can make everything lego 18:41 erle also i think the studs represent a bunch of problems for doing it later 18:41 erle “later” as in later in the rendering process 18:51 sfan5 rubenwardy: sounds like a bug report you need to file 18:52 rubenwardy sounds like it. Just wanted to confirm whether it was a me problem first 18:56 MinetestBot 02[git] 04sfan5 -> 03minetest/minetest: Remove some unused variable from Lua class wrappers 135362f47 https://github.com/minetest/minetest/commit/5362f472ff75ffe1885b54d09f22faa85284f817 (152022-05-02T18:54:55Z) 18:56 MinetestBot 02[git] 04sfan5 -> 03minetest/minetest: Reorganize some builtin functions in preparation for async env 13e6385e2 https://github.com/minetest/minetest/commit/e6385e2ab74af7b01163ea91d4e3cfd5dfe6552e (152022-05-02T18:54:55Z) 18:57 MinetestBot 02[git] 04sfan5 -> 03minetest/minetest: Refactor some Lua API functions in preparation for async env 1356a558b https://github.com/minetest/minetest/commit/56a558baf8ef43810014347ae624cb4ef70b6aa3 (152022-05-02T18:54:55Z) 18:57 MinetestBot 02[git] 04sfan5 -> 03minetest/minetest: Fix synchronization issue at thread start 13663c936 https://github.com/minetest/minetest/commit/663c9364289dae45aeb86a87cba826f577d84a9c (152022-05-02T18:54:55Z) 18:57 MinetestBot 02[git] 04sfan5 -> 03minetest/minetest: Async environment for mods to do concurrent tasks (#11131) 13e765988 https://github.com/minetest/minetest/commit/e7659883cc6fca343785da2a1af3890ae273abbf (152022-05-02T18:56:06Z) 19:01 erle sfan5 about “Keep the first four commits intact / Squash the rest into a single one” … do you know about interactive rebase? if yes, what is the reason for first making a bunch of commits only to then squash them? 19:02 sfan5 I use git rebase -i more than git rebase 19:02 erle oh okay 19:02 sfan5 the reason is that I don't want to amend during development all the time and also it allows me to go back/look at older dev snapshots 19:02 erle then why only squash on merge? is there an advantage? 19:02 erle ok 19:02 erle i see 19:02 erle thx 19:07 erle Well, finding equal faces is pretty easy for nodeboxes < 1 node, just check whether the neighbor has a face there 19:07 erle luatic show me the code 19:07 erle so i can make the legos 19:07 erle how to check if neighbour has a face 19:08 sfan5 locate window, look at neighbor 19:08 sfan5 if your neighbor is faceless call the police 19:09 erle “you must wear a face” https://nitter.net/Shitty_Future/status/1285346849298292736 19:11 MTDiscord aw man, what if I forgot my face at home? 19:33 MTDiscord yay async evn! 19:48 sfan5 released a windows build with it too 20:01 MTDiscord I always wear my face 20:02 MTDiscord Im not quite sure how to painlessly take it off. 20:06 MTDiscord erle, sfan5, @criticalfault42 : Started optimizing nodeboxes here: https://github.com/x2048/minetest/tree/nodeboxes. MCL2 snow: https://ibb.co/BLJtCBx 20:06 sfan5 great 20:11 erle x2048 wow, that looks good! but you don't do any diagonal checks so far, right? 20:11 sfan5 what's so special about diagonals? 20:12 erle i was thinking of oversized nodeboxes 20:12 erle i mean my stupid check was also missing them 20:12 erle bc i just wanted to see if it's viable 20:12 erle i like the x2048 solution very much 20:13 erle sfan5 regarding the snow layers, was it such a performance hog to draw all the node boxes? if so, wouldn't it be a horrible performance thing to draw 4 studs on top every top surface of a node? 20:15 MTDiscord So far I would not care to optimize oversized nodeboxes, unless there's a viable case with a 100x100 field of those. 20:16 erle so what exactly is your criterion right now? same type or solid, right? 20:17 erle (i have skimmed the source) 20:18 erle x2048 so what would happen if an oversized nodebox is surrounded by 6 solids? 20:18 MTDiscord yes, because that's the two worst cases. 20:18 erle so yeah, i am missing a check for a nodebox going out of bounds diagonally. maybe i am not seeing it where you exclude them? 20:20 MTDiscord ah, the current algorithm is dumb. if should also check that the face to mask is at the node boundary (+-0.5), and for sametype there's a matching face on the other side. 20:20 MTDiscord I did not add it yet 20:20 MTDiscord *it should 20:22 erle well it is an improvement on my dumb algo obv 20:22 erle i didn't even check for NDT_NORMAL hehe 20:23 erle well you don't check for ignore, but not sure if that's relevant here 20:23 erle x2048 do you want to test your current solution with my lego brick nodebox? 20:24 MTDiscord not yet ? 20:24 MTDiscord did you replace all solids with legobrick? 20:24 MTDiscord or do you only apply it to nodes under air? 20:27 erle i made drawtype for stone lego and minetest crapped it's cuboid pants fps-wise 20:27 erle this all came out of a conversation with my bf about how LEGO did not buy minecraft 20:27 erle the reason for that is actually moderation 20:27 erle LEGO universe (the “lego minecraft” that they developed around 2010 to 2012) was supposed to be a classic lego product 20:28 erle i.e. trusted by parents 20:28 erle which means they did everything to make sure that kids don't see dicks or so 20:28 erle the problem is that everyone likes to build dicks in block games. especially kids. 20:28 erle so they had whitelisted moderation 20:29 erle you could build what you want, but others could only see it if mods whitelisted it 20:29 erle because the LEGO group was of the opinion that they want to be 100% trusted by parents 20:29 erle mojang on the other hand was like “you can't stifle creativity likei that and also IT COSTS A LOT OF MONEY” 20:30 erle the money question and creativity stifling allegedly led to lego universe going the way of the dodo 20:30 erle meanwhile, minecraft became a hit, but 20:30 MTDiscord to no surprise 20:30 erle there are a lot of dicks and swastikas in random minecraft streamer's videos on youtube 20:30 erle like if they just go explore 20:30 MTDiscord ohh my god, lego universe, I remember that 20:31 erle i once saw a video where someone found a base full of swastikas in minecraft actually. and added some new ones. only the new ones were completely out of TNT, hahahahahahahaha. 20:31 MTDiscord was it that thing where you would rebuild the entire world in lego? you would click somewhere on the world map and you would get a small baseplate to build on 20:31 erle no i think that is lego creator? 20:31 erle not sure 20:32 erle last time i used lego stuff i used legCAD 20:32 erle anyway, that is actually a thing i like about the minetest community. even the griefers seem to hate nazis. 20:32 erle i mean, that's different from a bunch of other games 20:33 erle so back to the lego bricks 20:33 erle my bf and me wondered like, how bad can it be 20:33 erle and i made this nodebox with the 4 studs on top of a regular node 20:33 erle and was like this should work right 20:33 erle and then the framerate fell over and died 20:34 erle so i made the culling thing and then x2048 improved on the idea 20:34 MTDiscord well, if you set view range to, like, 40, it should work 20:34 MTDiscord somehow 20:34 erle *record scratch* just in case you wondered, how we got here 20:35 erle x2048 well, i can play minetest on a potato if i set viewing range to 40, but still someone making a lot of meshes will ruin my day 20:35 MTDiscord you mean mesh nodes / entities? 20:37 erle yes 20:37 erle they are drawn irrespective of occlusion 20:37 erle did i just make that word up? it seems weird. 20:37 erle well, entities are drawn 20:37 erle you can see that if the map does not load fast enough 20:38 MTDiscord yeap, mesh nodes and enities are your way to kill performance 20:38 erle x2048 have you seen the cheat client optimizations btw, where they turn off node rendering based on features like textures? 20:38 erle it's mostly used to find ores underground, but i wonder if there is some gem in there that can make vanilla minetest faster 20:40 erle x2048 so how would your thing deal with the studs on top of the legos, they would still be drawn, right? 20:40 erle or not? 20:41 erle or would they be half-drawn 20:41 erle like if there is an opaque node left of them the left side of the stud would not be drawn 20:41 MTDiscord I may have seen some cheats but was not interested enough to dig deep. 20:44 MTDiscord if I get it right, the studs should be drawn unless they are inside of an opaque box. 20:45 MTDiscord opaque box may be a nodebox or a solid block above the lego block 20:47 erle nice 20:47 erle x2048 can you open an issue or is there already one? 20:48 erle for nodebox optimization? 21:41 MTDiscord erle, #6409 and #9126 21:41 ShadowBot https://github.com/minetest/minetest/issues/6409 -- Efficient ways to render layered nodes like default:snow (discuss) 21:41 ShadowBot https://github.com/minetest/minetest/issues/9126 -- Mesher should discard triangles more aggressively 21:46 erle x2048 maybe retitle 6409 to “efficient ways to render nodeboxes (like default:snow)” 22:16 MTDiscord The title reflects the discussion in the issue, I am not going to change it. 22:19 erle x2048 yeah but if i open an issue about optimizing legos it will be fired upon and it will die as a duplicate 23:12 erle Warrr1024 continuing from #minetest-dev … how do you budget hud stuff? 23:14 rubenwardy given it's nodecore, I imagine their budget is something like has_budget_for_ui(spec) { return false; } 23:19 MTDiscord I've got a fulltime hotbar and a part-time crosshair. I'd like to get rid of that hotbar sometime. 23:20 erle rubenwardy as much as i enjoy snark, right now i actually *do* want to learn something 23:20 erle ;) 23:20 MTDiscord Totally eliminating the hotbar is a sort of bonkers ideal, and I don't see myself doing it in an already mature established game. But if I could like fade it out or something when the player isn't actively switching, or could otherwise have tighter control over it, that'd be cool. 23:20 rubenwardy oh I was serious, NodeCore's design philosophy is as little G/HUI as possible 23:20 erle oh okay 23:20 erle i thought it was more about rendering speed 23:21 erle or dropping parts of the HUD when it is not necessary 23:21 MTDiscord Nothing has a strict "budget" in the sense of a hard-limit. Anything I have a limit for is a soft-limit based on fuzzy criteria. Mostly I just want things as thin and light as possible, and I balance concerns where I can based on my understanding of costs as they are now. 23:22 MTDiscord But when it comes to HUD, my ideal would be nothing, and everything that's present on there now is a compromise of that ideal for playability. 23:23 MTDiscord The crosshair is only present part-time, while you're looking at a node. You almost don't need it, since the looktips will show you which side of a node you're pointing at because they always appear at the center of that face, not of the node's volume. 23:23 MTDiscord So the only thing that's ALWAYS visible is part of the crosshair (25% opacity when not pointing at anything) and the hotbar. 23:24 MTDiscord I actually rather like how the breath HUD turned out, because it's not visible unless you're actually using most of your breath, and it doesn't require you to look at any part of the screen because it surrounds the field of view. 23:25 MTDiscord There's really no good way to show "sneaking" within this design framework though. 23:26 MTDiscord I've played with eye height as well, and it's not particularly useful. You only notice the difference when transitioning in and out of the sneak state, but it doesn't do a good job of indicating that you're IN that state. 23:26 MTDiscord Currently the best feedback you get is tactile, i.e. you feel the pressure on your finger from the sneak key. 23:27 MTDiscord Hence, when you were talking about visual indication, I had assumed you meant from a 3rd-person perspective, i.e. crouching model. 23:30 MTDiscord A player can be walking or not, swimming or not, mining or not, and now crouching or not, and when you add various other states like laying, sitting, waving or other emotes, that's an awful lot of animations to sort out. 23:31 MTDiscord My budget for animations is especially tight, since I generally need to get a 3rd party involved to support complex 3d models like the player. 23:34 erle here, have more lego minetest https://mister-muffin.de/p/Wqf7.png