Time Nick Message 00:29 MTDiscord fun thing: https://www.desmos.com/3d/556b8f0bf7 13:18 erle celeron55 do you know what the motive is behind “oh your hardware is so bad, it must not work” when it works? like, i had assumed it is some gamer thing, because in hacker circles i rarely encounter it. case in point: if someone runs doom on a potato computer, people are rather impressed there. 13:19 erle i mean you obv can't read minds, but i doubt AFCMS is going to tell me about the finer points of gamer culture 13:20 erle and i doubt it has anything to do with technical skill (i.e. people still make fun of those who have “worse” hardware even when they know it is wrong) 13:20 erle i encountered it first in mineclone2 btw, it was much worse there 13:20 celeron55 i don't know. i personally take pride in MT working on the old thing, but i am terrified of the potential amount of resources that could end up being taken from more productive work into supporting hardware only a few people have 13:20 erle but that's the joke, it does not take any resources. it just works. 13:20 celeron55 the focus must be in the future 13:21 celeron55 otherwise the project will stagnate, people will lose interest, and the project will die 13:21 erle well i have interest in improving it, as you can see from my recent PRs (some even got accepted :P) 13:21 erle so ig i will tackle the shadow issue as soon as i have understood what changed in irrlichtmt 13:22 celeron55 we have had this discussion ten times already and that's 9 times too many 13:22 celeron55 you already know what i think and what the dynamic there is 13:22 erle i do. i just wondered, because for *you* and the other devs i get it – i don't get it for some ordinary gamer though. 13:22 erle they have no concept of maintenance burden 13:23 erle yet it is very important if a GPU gets you 200 or 300 fps 13:24 celeron55 i don't think i've stumbled upon “oh your hardware is so bad, it must not work” in any serious way from ordinary people. but i guess they're thinking based on their own experiences, maybe they had to upgrade their hardware 13:24 erle hmm, yes that tracks with AFCMS (“i was not able to run minetest on a 4 year old laptop, how can you run it on an older one?”) 13:24 erle i'll ask those ppl if they extrapolate from their own experiences then 13:24 erle but for imperceptible differences it still makes no sense 13:25 erle in old gaming magazines ca. 1999 we had this category for how well games work on hardware 13:25 erle there was a rating ”ruckelt, aber spielbar” (movement stutters, but playable) based on resolution or so 13:26 erle which i find funny 13:26 erle like if it stutters, it always irritates me to no end 13:26 erle even if it is some pixelated scene like xcom or so (these games have vastly higher hardware needs nowadays because they used some palette tricks that are AFAIK no longer done in hardware, so they are slow) 13:28 erle for my hardware, i was pretty much told that my driver is EOL … but there is a newer driver, that is faster :D 13:28 erle the only downside being that it does not support at all stuff that the old driver supported with a framerate of like 0.1fps or so 13:29 erle because it does not even try 14:18 muurkha now movement stutters in every app all the time 14:44 sfan5 since when? 14:52 erle i think it happens if people run like half a dozen electron apps. or if they run mac os :P 14:53 erle (application startup is slower and it has animations everywhere, both of which contributes to a *feeling* of slowness, even if the computer is fast) 14:56 MTDiscord Can confirm, Mac OS feels really sluggish to use. Smooth, but lazy. You can't turn off the animations. Turning off all animations on e.g. Android via developer options mitigates transition lag quite a lot, wish they allowed it on mac. 15:05 erle though i recently talked with some coworkers and it turns out some people don't have this effect 15:05 erle like, apps don't feel slow if the animation is <0.3s or so 15:44 celeron55 0.3 is incredibly slow for me. i want zero UI animations 15:44 celeron55 my time is too short for UI animations 15:44 celeron55 i mean, my life is too short 15:46 muurkha sfan5: mostly since the first iPhone, I think 15:47 celeron55 if i press a key or click a button, i consider the computer's utmost priority to be process anything related to it and show me the finished result as fast as possible. any animations are an absolutely silly, actually ridiculous, distraction from that goal 15:47 celeron55 +to 15:47 MTDiscord No animations can feel somewhat janky 15:47 Oblomov that flamegraph with vector.length eating up all the time … 15:48 celeron55 it doesn't when you are the one commanding a thing to happen. and if you didn't command it to happen, it shouldn't happen 15:48 MTDiscord still an animation can make it feel smoother 15:48 MTDiscord for example in a chess game, if the pieces just teleport that's not very smooth 15:48 celeron55 i don't want my screen wallowing around without my input. i press a button, thing happens instantly, and then the computer waits for me to ask me to do another thing 15:49 celeron55 ask it* 15:49 MTDiscord of course the animation should be reasonably quick, and it should be finished as soon as the next command is received 15:49 rubenwardy Most people find that animations make something feel more polished and fun to use, as long as it's a quick one 15:49 celeron55 i hate fun 15:50 jonadab Animations make a demo look more polished the first time you ever see it. 15:50 MTDiscord "i hate fun" - celeron55, 2023 15:50 jonadab But after you've seen the same animation a few thousand times, it gets _old_ 15:50 MTDiscord this explains minetest /s 15:51 celeron55 jonadab: 100% agree 15:51 celeron55 i'm fine with animations, as long as they happen only once and i don't need to see them ever again 15:52 jonadab I think it's fine to have them on by default, if the user can turn them off when they get tired of them. 15:52 jonadab Then people who don't want to turn them off, can just... not do that. 15:52 celeron55 the computer's job is to be an efficient extension of me, not to manipulate me to be happy or feel more things happen than actually does happen, or to make input given by me to cause more processing than is needed 15:53 jonadab celeron55: Have you ever played Zork? 15:54 celeron55 in other words, the job is very clearly defined, and animation does not help in reaching the goal 15:54 celeron55 unless the animation is specifically designed to aid in visualizing something i want and need to have visualized 15:54 jonadab (Zork has no graphics of any kind. And yet, it works.) 15:56 celeron55 no i haven't played zork, but the concept is nice 16:01 celeron55 luatic: chess is a good example of animation being a helpful visualization method. without animating the move, it is literally difficult to see what is happening if you're playing against an AI or a remote player. their hand isn't there moving the piece so you need to visualize the move. of course, you can visualize a move without animation. just draw an arrow from the old location to the new location 16:02 celeron55 - i think i'd probably like that more than animation as you can look at it as long as you want to 16:02 celeron55 and you don't need to wait for it to happen in order to see what happens. you can instantly see it fully 16:29 erle i agree with celeron55, everything that stands in the way of computer doing the job is useless 16:29 erle related https://en.wikipedia.org/wiki/Ornament_and_Crime 16:30 rubenwardy to give some examples of animations I add - I add a slight transition on hover effects on buttons and such. I also add short fade in/out for modals. The former is non-blocking, the latter delays interaction I guess 16:30 erle these fades always frustrate me 16:30 erle and you are spot-on, the “non-blocking” kinda mitigates it 16:32 erle there's a reason most users are not using compiz or commit linear algebra crimes on unsuspecting application windows 16:32 erle (“i can see my terminals backside” type of crimes) 16:33 muurkha aren't most users using the moral equivalent of compiz these days? 16:33 muurkha on Android, iOS, macOS, Microsoft Windows, and GNU/Linux 16:34 erle i'm not sure. i mean compositing is one thing, but like, windows that fold up like airplanes or burn or so? 16:34 erle definitely not aiding anything 16:34 erle the genie-back-into-the-bottle animation on OS X at least shows you where the app went 16:34 muurkha macOS has been doing that in every release for like 20 years I think? 16:34 muurkha they also use it for "exposé" 16:35 erle on android, you can turn it off. on ios … nope. for debugging your own app apparently you can! 16:35 erle i have automated android app stuff (through appium) and the first time i tried it failed because i assumed computers are fast. but animations are not! 16:36 erle and everything likes to be uselessly faded in/out or slide from some side (regardless of if it actually gives a usable spatial hint) 16:36 erle to me it appears almost like people saw these spatial hints and were like “yeah but what if we do only the effect, without the meaning?” 16:36 celeron55 the fact that you need to give a spatial hint means the UI is kind of screwed. i don't want to need to know where something "went" 16:37 celeron55 i want it to go where i want it to go, so i then automatically remember where i put it 16:38 erle yeah, me too. but i read the reason why the windows button was named START is because they figured out if someone is given the task to do something that makes it more likely 16:38 erle and assuming not all animations were useless all the time, i *guess* showing where a minimized window went is useful for some? 16:38 erle (not for me, i have i3) 16:39 muurkha celeron55: I have an easier time remembering positions than recognizing images, so it's helpful for me to see where things go 16:40 erle something minetest-related btw. this bug report does not follow the template and is thus pretty useless to me (see my comment). anyone knows the correct inputs and outputs? https://github.com/minetest/minetest/issues/13946 16:40 muurkha (I have an easier time still with names, though) 16:40 celeron55 the classic start menu or the modern equivalent which is an app gallery or launcher screen is pretty useful for beginners, but i don't like them in the long term. in the long term i set up direct keyboard shortcuts or start the application using the literal binary name. it's important for a software engineer to know the binary names of things. you end up in trouble if you don't. i do get it why normal 16:40 celeron55 people like app galleries and launchers 16:40 celeron55 but that doesn't have anything to do with animations. it's just yet another thing 16:41 erle celeron55 btw what do you use? everyone i know ends up at i3 or sway or so on (which is pretty funny bc those are almost never preinstalled) 16:41 celeron55 muurkha: recognizing images? what? 16:42 celeron55 erle: i'd probably use i3 if i didn't get used to icewm a long, long time ago. icewm made me get used to a set of keyboard shortcuts that are completely incompatible with i3's ones and i'm very efficient with it so i have no need to change 16:42 muurkha celeron55: hmm, I was thinking about alternative to putting things in places, but left out that link from my utterances 16:42 muurkha icewm has a great set of keyboard shortcuts 16:43 erle celeron55 well that's fine ig 16:43 celeron55 when i start a thing, i put it on one of my 12 workspaces, and i remember the workspace number 16:43 erle i have fewer workspaces and they have names. like 3:chat 16:43 muurkha I'm terrible at remembering numbers 16:43 celeron55 and my workspace shortcuts are win+1234qwerasdf 16:43 erle and when i start a thing they get put on that workspace 16:43 celeron55 this is also the exact thing what disallows me from using i3 16:43 erle because you'd have to redefine all the keys? 16:43 celeron55 i can browse through the workspaces in about 1.5 seconds if i don't remember what's where 16:43 muurkha but workspaces on particular keys seems reasonable 16:44 celeron55 because the shortcuts are optimally placed on the keyboard for the left hand 16:44 erle i see, i should maybe adopt that 16:44 celeron55 yeah i don't really remember the numbers i guess 16:44 celeron55 i remember the workspaces by the shortcuts 16:44 celeron55 finger positions 16:44 erle i end up using fewer workspaces because 67890 are so far right 16:44 erle now that you say it 16:45 celeron55 i don't usually use all 12, i have 5 spare right now which is a good amount of spares 16:45 * muurkha makes a joke about AfD 16:45 celeron55 and 12 is enough, the need for more occurs super rarely 16:45 celeron55 at that point i always can close something to free up both the computer's and my brain's resources 16:46 erle celeron55 this is maybe related and cute: https://www.davidrevoy.com/article989/how-to-customise-a-usb-numeric-keypad-under-gnulinux 16:48 celeron55 i think the world needs a modern implementation of icewm. maybe as a curated set of configs on top of another wm, or maybe as a fork of something, or maybe as a completely new thing. the focus would be on predictable classic behavior and snappy keyboard shortcuts. i tried MATE lately on one system but it's super clunky, it feels like a museum 16:48 celeron55 a spiced up gnome shell is better than MATE 16:48 celeron55 very resource hungry and kind of silly, but better anyway 16:48 celeron55 gnome shell without some specific config changes and extensions is near useless though 16:49 erle gnome shell breaks extensions all the time though 16:49 celeron55 i found one gnome shell extension that froze the entire system 16:49 erle LOL 16:49 celeron55 ridiculous, i know 16:49 erle as jwz said: once is coincidence, twice is sabotage, three times is official GNOME policy 16:50 celeron55 when icewm crashes (a rare occurence, but anything can happen), it just restarts and is like "huh, whatever" 16:50 celeron55 or you get kicked out of X and back to tty or the dm 16:50 celeron55 as for DMs, i hate all of them and just login on tty and type startx 16:51 celeron55 my latest gried with DMs was with trying to set the dpi setting on my 4K display 16:51 muurkha ugh 16:51 celeron55 it was impossible to do in a way that would satisfy all WMs and applications 16:51 celeron55 on the other hand with startx and xinitrc you can do things super controllably 16:53 celeron55 gnome shell of course is able to force the dpi setting for everything using whatever magic, and it plays nice with gdm. but that's like saying apple's products are compatible with apple's products 16:54 muurkha what's your preferred Wayland setup? 16:55 celeron55 the only way i've used wayland is with gdm and gnome shell. and on my sailfish phone. so i guess those 17:14 celeron55 i should post my recommended gnome shell setup. it's always difficult to find everything that it needs 17:16 celeron55 but that would mean deleting my current gnome shell settings, extensions, extension configs and miscellaneous gsettings options and redoing them all over 17:16 celeron55 sounds like torture 17:16 celeron55 maybe if i'd make a new user and diff all the config files 17:17 jonadab That does sound easier. 17:17 jonadab If you wanted to torture yourself, you'd be using Windows 10. 17:17 celeron55 i still remember the time when linux people used to laugh at windows registry 17:17 celeron55 these days... the windows people laugh at all the linux registries 17:18 jonadab Eh, I stopped using Gnome a long time ago, for a whole lot of reasons. 17:18 jonadab And the registry was never one of my main problems with Windows. 17:19 celeron55 frankly i'm kind of impressed that you can set up gnome shell to be tolerable on a secondary computer. my expectation was it would be awful no matter what 17:26 erle i think if the gnome people would stop removing things they personally don't like (e.g. theming) and would be backwards compatible their users would be much less upset. 17:26 erle i mean GNOME managed to have both MATE and cinnamon fork off them, that's kinda impressive 17:26 erle GNOME 4 fork when 17:26 celeron55 here's one thing i don't understand in gnome shell: why don't they include a slider to adjust the sizes of window title bars 17:27 celeron55 i get it that themes have their own sizes for them, but it's pretty common that i like a theme but the title bars are just the wrong size 17:27 celeron55 i suppose their ideology is that title bars shouldn't exist to begin with 17:28 erle aren't title bars rendered by the applications in current GNOME? 17:28 celeron55 but why does that mean they need to be so big 17:29 celeron55 i guess some are, as they include extra content in them 17:29 erle if you want to theme anything, you are obviously soooo last-century: https://stopthemingmy.app/ 17:29 celeron55 but e.g. think of something like gnome terminal 17:29 erle > GTK Stylesheets can make applications look broken, and even unusable. 17:30 erle :D 17:30 celeron55 nobody uses the title bar buttons regularly to warrant them being so big 17:30 celeron55 regularly enough* 17:30 celeron55 the content is in the big black part, the title or the buttons there are almost meaningless 17:31 celeron55 and take multiple lines of space 17:31 celeron55 yeah of course what also happened is that gnome has bad options for dpi scaling 17:31 celeron55 you can choose 1x or 2x 17:32 celeron55 1x makes everything way too small, 2x makes everything slightly too big 17:32 celeron55 on the 4k display 17:32 celeron55 why is there no 1.75x or something, i don't get it 17:33 celeron55 then there's an "extra large fonts" accessibility option which turns fonts from slightly too small to slightly too big 17:33 celeron55 why not a slider or something 17:33 celeron55 i love the high contrast accessibility option though, and the disable animations one also 17:33 erle do they still have high contrast inverse? 17:33 erle that one was really useful for me 17:33 celeron55 dunno. what i used was the dark mode with the high contrast option 17:34 celeron55 the high contrast option turhs the dark mode from smushy to crisp 17:34 celeron55 turns* 17:34 erle they should let desour handle their scaling obviously :D 18:22 copygirl I'm curious, how realistic is having multipart / microblock nodes that can be made out of different parts, such as panels, stairs, post, each potentially made of a different material? 18:24 erle copygirl want to cobble together some entities or what? 18:25 copygirl I think I was being clear about wanting nodes. Unless you're talking about block/node/tile entities? 18:26 erle copygirl if i would want to do something, i'd probably do it like voxelmodel https://content.minetest.net/packages/Noodlemire/voxelmodel/ 18:27 erle and yes, i'd associate the entity with the node. this is not available statically from the engine, but mineclon* echests for example are like that IIRC 18:29 copygirl I would like different collission shape combinations as well but it might be possible to generate those programmatically, and reduce the amount of unique nodes registered that way. Though I doubt I'll be able to programmatically make textures for new unique combinations of microblocks as they're used. 18:29 copygirl Then again I can't have dynamic textures for just basic nodes. I would need entities, after all. 18:34 celeron55 the reason why nodes are performant and don't take lots of ram and disk space is because they are simple. adding complexity like that to them would slow down everything and use up multiple times the memory even if you don't use the features. it's the tradeoff an engine like this has to make. a compromise could be some kind of indirection layer that dynamically allocates and generates nodes based on 18:34 celeron55 more complex data structures but that would require quite a lot of development work 18:35 copygirl I've delved into voxel development and the lack of a per-chunk-palette limits the amount of stuff you can do such as dynamic node registration. That would really help in this particular case. 18:35 copygirl bloxel game development* I should say 18:36 erle can't you just make the player bigger or so 18:36 celeron55 another option would be to make nodes dynamically sized, but that would require a dynamic node memory space in each mapblock which would have to be managed, and you'd get an extra layer of indirection and memory allocation overhead, so it would be slower 18:36 copygirl Either way I was hoping to learn about something that is currently possible. 18:36 celeron55 dynamically sized in memory, i mean 18:36 copygirl Why? 18:36 celeron55 not dynamically sized as in in-world physical size 18:37 celeron55 and every node would then have size information which would in itself increase their size even on that basic level to begin with 18:38 copygirl If you need more data you can either represent it as a new dynamically created node, or if it's common enough, as a new layer of data layered on top of existing data. 18:38 celeron55 in order to have large generated worlds the most common case of simple nodes would have to be made fast and easy on memory, and then the system would have to be able to expand from that using a dynamic system of some sort. that's the basic idea and constraint 18:38 celeron55 copygirl: yes what i said: that would require a dynamic node memory space in each mapblock which would have to be managed, and you'd get an extra layer of indirection and memory allocation overhead 18:38 copygirl Node type could be one layer, block light another, sky light a third. And just the same, you could add any additional layer to a chunk, on demand, that holds custom information about blocks. 18:39 celeron55 currently no allocation is needed, no indirection is needed, no memory management is needed 18:39 copygirl Nodes themselves don't need to be dynamically sized in any of my suggestions. 18:39 celeron55 it makes everything very fast and reliable 18:40 copygirl With a palette based system, nodes are mapped to ids which depending on the number of unique blocks, those are dynamically sized, yes. But it has too many benefits to avoid using, in comparison to a fixed ID space. 18:40 celeron55 layers like that are possible for sure, if you're ok with allocating a layer for all nodes in a mapblock even if only one node needs it and others don't. i personally like the idea of layers 18:40 celeron55 i almost started a proof of concept of simple layers like that 18:40 copygirl Palette based storage is very reliable and don't tell me about performance in a Lua modded game. 18:41 celeron55 each was 8 bits per node, and i intended them to be dynamic all the way to Lua, each layer having a name 18:41 copygirl Actually, unsure if it would even be slower. 18:41 MTDiscord What does lua have to do with engine performance 18:41 muurkha copygirl: I benchmarked LuaJIT against Haskell's GHC this morning and it turned out to be orders of magnitude faster 18:41 celeron55 performance matters a lot. you don't appreciate it until you see something that doesn't perform, and believe me, i saw a lot of that when i developed the core of minetest 18:41 copygirl You either have a global hardcoded id => block lookup, or you have a palette id => block lookup. Same speed. 18:42 muurkha [but that was because my benchmark was flawed] 18:42 muurkha I was just testing function fib(n) if n < 2 then return 1 else return fib(n-1) + fib(n-2) end end 18:42 muurkha which in retrospect is a stupid benchmark for a tracing JIT 18:43 muurkha because tracing JIT will always inline the function-call operations and probably constant-fold away most of the arithmetic, so it's really just testing how deeply it traces 18:44 celeron55 copygirl: i don't understand what you're trying to say. layers would obviously represent attributes of nodes, and rendering of nodes would then have to accomodate for the added attributes (or ignore them, for layers that are only meant to be used server-side, for example for physics or whatever) 18:44 muurkha but I've seen lots of real problems where naive code in LuaJIT will outperform naive code in C++ or Haskell. just, not by orders of magnitude 18:44 copygirl I was advocating for per-chunk palette based block storage here. 18:44 copygirl I felt like you were questioning the speed of that. 18:45 celeron55 palette means nothing to me 18:46 copygirl Thing of an image. Instead of assigning each pixel a full RGBA color (32 bits) you could assign each existing color an index (for example 0=red, 1=blue, 2=transparent) and if that's all the colors you use in your image, now you can represent a pixel with just 2 bits. 18:46 celeron55 anyway. if you have strong ideas, i recommend making a proof of concept 18:47 celeron55 it's hard to 1) prove that you're serious, 2) prove that an idea can work, and 3) communicate how exactly it should even work, without a proof of concept 18:47 copygirl The proof of concept is Minecraft. They use palette-based storage. Though you probably mean in Minetest itself? I really don't want to touch C++ code. 18:48 celeron55 i don't see how what you describe would help, or even what problem it intends to fix 18:48 copygirl The cool thing with a bloxel game is that you can have theoretically infinite different block types, because only the ones that exist within a chunk need to be references and mapped to a much smaller id. 18:48 celeron55 oh you mean not having a game instance global id space but instead a block global id space 18:49 celeron55 that makes sense 18:49 copygirl Not sure what you mean. 18:49 MTDiscord Well, we already have both near-infinite mapgen and near-infinite content ids :trollface: 18:51 copygirl Instead of having a single global id <=> block type mapping you would have an per-chunk id <=> block type mapping. 18:52 celeron55 node ids are 16-bit in mapblocks, and that's enough to make every node in the mapblock have a different id, and it's compact as it should be. but currently globally node ids are also 16 bit. it would be possible to have 16-bit node ids in mapblocks mapped to 32-bit global node ids. the mapping would consume space and it would have to be maintained as nodes are removed and added to the mapblock though 18:52 copygirl Why even have global ids? Map them to a name when saving, and to a block instance at runtime? 18:52 celeron55 they already are mapped when saving 18:53 celeron55 but a node is never represented by the name in memory. it's always represented by the id. thus, the need for global ids 18:53 celeron55 the global id mapping is generated on world load time to contain all the registered node names 18:54 copygirl Why is the mapping to a global ID necessary? 18:54 celeron55 at the same time as the parameters of each node are set up 18:54 celeron55 because names are more expensive than ids 18:55 celeron55 and don't start about Lua. most processing in minetest happens in the engine for a good reason. it gets enormous speedup by dealing with ids 18:55 MTDiscord Because if you do not do that and you changeout your mod loadout, all of a sudden certain IDs aren't mapped properly so water could be a bunch of fire 18:55 copygirl Can't you refer to a block by the reference to the block instance? 18:55 muurkha an index into a table of pointers to name strings (hashed or otherwise) is effectively a global id 18:55 celeron55 refer where? minetest is full of world-global algorithms that go through a fast abstraction layer to mapblocks 18:55 celeron55 you don't deal with mapblocks in algorithms 18:56 copygirl jordan: I'm suggesting that in-world mapping is done with per-chunk palette. 18:56 celeron55 the per chunk palette is dynamic 18:56 celeron55 you can't use it to refer to stuff in the global interfaces 18:56 rubenwardy plus makes it harder to compare between 'chunks' 18:57 celeron55 at the instant you add a new type of node to a mapblock, or remove the last one of one type, the per-mapblock id space would be altered and you would have to adjust everywhere 18:57 erle copygirl what is the case that you actually want to optimize for with your suggestion? 18:57 celeron55 if you have an indirection layer per-mapblock to 32-bit global ids, then that's what you'd alter and everything else would stay the same 18:58 celeron55 but then there's the argument whether it would be better to just have 32-bit node ids stored in each node 18:58 copygirl This is the gist of it if you want to read it up: https://www.reddit.com/r/VoxelGameDev/comments/9yu8qy/palettebased_compression_for_chunked_discrete/ 18:58 celeron55 it would probably be simpler and faster 18:58 MTDiscord I think the purpose is to remove the maximum number of content ids limit 18:58 celeron55 than the extra mapping nonsense 18:58 copygirl I think the code is not complete, and not implemented in the best way possible, but it outlines the idea, anyway. 18:58 celeron55 stored in each mapblock* 18:59 erle copygirl beautiful code is nothing without a problem to solve 18:59 erle so what's the problem 18:59 copygirl Palette-based storage would be a good first step to not having to worry about reaching any sort of maximum block types limit, and open the way to dynamic node registration at runtime. (For example for multipart blocks.) 19:00 muurkha it would be simpler, celeron55, but it seems like it would use twice as much space 19:00 copygirl It could also reduce the size of chunks on-disk and over the network, depends on if / how they get compressed at the moment. 19:00 celeron55 copygirl: yeah that palette code there that you linked is pretty expensive computationally and memory wise 19:00 muurkha so it might be faster or slower 19:00 celeron55 it's not a very wise choice 19:00 celeron55 i'd rather have 32-bit global node ids 19:01 copygirl Woah you determined that by looking at it for .. less than a minute? 19:01 copygirl Not even considering optimizations that could be done. 19:01 celeron55 of course if you'd design a new engine or a fork of minetest solely based on the idea of that sort of palette, you could do things that are impossible with minetest's registered nodes system 19:01 celeron55 but it's out of scope for us 19:02 copygirl Yeah this conversation went a bit off-track and I apologize, but I was being questioned about a thing and I answered. 19:02 celeron55 it would be a different type of engine on a fundamental level 19:02 copygirl (And got defensive at times.) 19:02 celeron55 i'd like to see it of course 19:02 celeron55 so please go write the proof of concept 19:02 copygirl (To be fair, I want to make it, so ...) 19:03 copygirl I do want to point out that, again, Minecraft is technically the proof of the concept. 19:03 erle why what can it do? 19:03 celeron55 i don't see minecraft doing any of the actually interesting things the system would allow. they seem to be absolutely wasting it if they actually do have it 19:04 copygirl Yeah, registrations of blocks are limited to startup time. 19:04 celeron55 that system should allow essentially having a separate node registration table per mapblock (or in minecraft terms, chunk) 19:04 celeron55 i don't believe they have that 19:04 erle oof 19:05 erle that sounds not like ”solution fits in head” 19:05 copygirl But the palette-based storage is working fine for them. And I don't think there's a concernable performance loss due to it. Speedup is done by not using high-level access for things such as world gen and high-performance modifying of chunks using stuff like worldedit. 19:05 celeron55 minetest uses a form of palette-based storage on disk. it fits the purpose very well. but the colors there are simply registered node names 19:06 copygirl You can telle the palette to give you the ids of blocks that might or might not exist in the chunk, then commit all the changes you'd like to do (more) directly to the buffer. No need to risk multiple resizes. 19:06 copygirl That would be a global palette, right? 19:07 celeron55 once the server has started the server and clients talk about nodes by the global ids that the server assigns to node names at startup. it's the system minetest is build on, and it's fast and reliable and i'm pretty sure minetest will roll with it long into the future 19:07 copygirl (TIL "mapblock" = "chunk", that sure was the cause of some confusion in this conversation.) 19:08 celeron55 oh yes, that's the terminology here. i specifically use "mapblock" instead of "block" to avoid confusion 19:09 celeron55 the first being the actual literal name of the data type in MT 19:13 copygirl So I am to assume that it's not feasible to do a multipart block node in Minetest? While I doubt I want to use an entity per node in-world, what rendering capabilities do node-based entities have in MT? 19:15 celeron55 MT doesn't have a good system for having masses of multipart nodes, anything you do will probably be pretty disappointing unless you begin by looking at developing the engine first in some fairly tricky ways (like some of the stuff i talked about initially) 19:16 celeron55 entities are for actively moving or changing things that are few and far between in the world, and nodes are for masses of persistent things aligned with the grid 19:16 celeron55 the thing in between doesn't really exist 19:17 celeron55 and obviously is the more challenging thing to design and implement 19:18 copygirl Well you can have per-node meta data storage. 19:18 copygirl Just no custom rendering based on that. 19:18 celeron55 yes, well node metadata based rendering has been fiddled with in the past... i made a proof of concept at some point 19:19 celeron55 it was years and years ago 19:19 celeron55 i modified the node definition to be storeable inside metadata, in which case you could assign any custom definition to any node in the world and modify it dynamically just for that node 19:20 celeron55 the branch is probably in my repo on github 19:20 celeron55 https://github.com/celeron55/minetest/tree/meta_set_nodedef 19:22 celeron55 frankly it's a pretty interesting PoC, that's why i've saved it 19:23 celeron55 it's from 2012 though, i don't remember whether we even had nodeboxes back then 19:23 celeron55 with what today's node definitions can do, or even combining dynamic media with node meshes, it could get wild 19:30 erle i have the feeling there is this specific threshold of simplicity that is somewhere 19:30 erle and i do not know if it is on the other side or not 19:30 erle btw, neat: https://garrit.xyz/posts/2023-11-01-tracking-sqlite-database-changes-in-git 19:50 copygirl Are node IDs 16 bit? So you can have 65000-ish of them? 19:52 MTDiscord half that 19:52 MTDiscord the other half is reserved for unknowns 19:52 copygirl Unknowns? 19:52 MTDiscord when you remove a mod, whats left behind 19:56 erle these are known unknowns, things we know we don't know 19:56 erle copygirl so what is your funny mod that generates lots of nodes? 19:56 erle i am disappoint i can not make a node for each unicode character hahahahaha 19:57 erle (i will not do that though) 19:57 erle (inventory rendering would heat my computer into plasma) 19:57 copygirl A multipart / microblock mod. 19:58 erle how small are the microblocks though 19:59 copygirl Slabs, panels, posts, ... more like RedPower 2 if anyone remembers that, rather than, say, chisel and bits. 20:00 copygirl If I was able to, I would love to pour concrete inside a block enclosed with panels for example, but I'll likely limit things to 1 material per node. 20:02 copygirl Is Minetest's lighting propagation per-side? 20:02 copygirl So can a slab let light through horizontally, but block it vertically (depending on whether it's a top or bottom slab). 20:05 sfan5 it can't 20:07 erle > limit things to 1 material per node 20:07 erle how far can you fake this hehe