Time Nick Message 16:24 Gustavo6046 is there LOD so far away blocks are 'merged'? 16:24 Gustavo6046 like clumps of 2x2, then of 4x4 blocks 16:25 erlehmann Gustavo6046 this is so far off the way rendering is done according to my understanding it's not even funny 16:25 erlehmann :D 16:26 erlehmann you only get mipmapping afaik 16:26 erlehmann and fog 16:26 erlehmann everything far away is behind fog lol 16:27 sfan5 Gustavo6046: there is no LOD, no 16:27 erlehmann i don't even think it would make sense to add some LOD calculation, given what i know about rendering 16:27 erlehmann it would basically be a visual effect 16:27 rubenwardy Minetest used to have such a feature, it was called far map 16:27 rubenwardy well 16:28 rubenwardy the version in Minetest was based on a terrain map. There was an unmerged branch by celeron55 which used LOD 16:28 erlehmann Gustavo6046 you would probalby not merge nodes in the world, but rather make far away stuff a mesh 16:29 erlehmann and work on that 16:29 sfan5 if you think "nodes" and "meshes" are different things you knowledge about rendering is indeed off 16:29 sfan5 +r 16:29 erlehmann sfan5 a single mesh 16:29 erlehmann and then reduce that 16:29 sfan5 a mesh is not an atomic unit 16:29 erlehmann basically the primitive is not “clumps of 2x2x2 nodes” 16:30 erlehmann that's what i mean 16:30 sfan5 a mesh is not a primitive either 16:30 rubenwardy nodes are already combined into a single mesh (per mapblock?) 16:30 erlehmann then 2x2 blocks 16:31 erlehmann i am p sure mapblock mesh is a thing 16:33 erlehmann rubenwardy src/client/mapblock_mesh.cpp 16:33 rubenwardy ... 16:33 rubenwardy I'm aware 16:33 Gustavo6046 ahh 16:34 Gustavo6046 erlehmann, but the further away it is, the less it should really matter how much detail you have, that's the very idea of LOD. 16:34 Gustavo6046 Mipmapping is good, but it isn't there for performance, and I don't think it really helps all that much? 16:34 Gustavo6046 Unless you used solid colour or something? I don't know. 16:34 erlehmann Gustavo6046 is this a performance or an ambience thing? 16:35 Gustavo6046 Hmm? 16:35 erlehmann do you want level of detail so you can view further without the game going down to 2fps? 16:35 erlehmann or as a neat effect for mountain ranges? 16:36 erlehmann i mean undoubtedly minetest crawls to a halt once you show too many mapblocks at once 16:36 erlehmann but i rarely *have* to see that far 16:37 erlehmann usually only when i died and wanna get my bearings from the respawn point, i quickly turn on unlimited rendering distance 16:37 erlehmann to figure out which way to walk 16:37 erlehmann as the mapblocks are still loaded 16:37 erlehmann in the client 16:38 erlehmann rubenwardy celeron55 what made the far map thing so bad it was scrapped? 16:39 MTDiscord Just because something may not be good for you isnt a excuse to paramat it 16:40 rubenwardy paramat had nothing to do with it 16:40 MTDiscord I never said that they did 16:41 MTDiscord I was refering to there behavior when addressing erlehmann 16:41 erlehmann look if you want me to stop being a dumbo, please try to tell it so that a dumbo can understand it 16:41 erlehmann bc i have no idea what you mean 16:52 celeron55 erlehmann: there have been two versions of the far map, the first one was released in the very early days and was removed before 0.3 (IIRC), it was based on a heightmap and was way too rough and inaccurate, and also completely static 16:52 celeron55 the second one is available as a branch in my repo, i left it in WIP state and it was never merged upstream, it's more of a LOD thing 16:52 celeron55 an* 16:54 celeron55 it was left unmerged in the hopes that rendering would be sped up otherwise so that it wouldn't be needed. of course that doesn't apply to the old hardware you are using, it won't be able to render further, but more modern hardware can if the rendering is optimized for more modern hardware 16:55 celeron55 then there's the network bandwidth and the amount of generation and processing the server has to do (and stuff it has to keep in memory), which is a more complicated matter 16:56 erlehmann celeron55 so how would a LOD-reduced mapblock be sent to the client? full data? 16:56 erlehmann oh you mentioned it hehe 16:56 celeron55 all in all, it's very difficult to come up with a definite solution that satisfies the needs of people and hardware 16:56 celeron55 in my LOD thing it's reduced on the server side 16:57 erlehmann given what i have seen on irrlicht capabilities recently (particles and shadows), i find it a bit hard to believe that hardware is the bottleneck 16:57 celeron55 freeing bandwidth and client resources 16:57 erlehmann oh yeah, now that you are here, can you tell me what did not work out when someone inevitably tried to make particles batched? 16:57 erlehmann ig they have to be sorted in some way 16:58 erlehmann but i am not aware of any aborted attempts to do it 16:58 celeron55 haven't been following anything particle related 17:01 sfan5 related https://github.com/minetest/minetest/pull/8461 17:02 celeron55 hecks experimented with some LOD / horizont drawing stuff, but he decided it's important first to optimize the basic node rendering for the hardware that would be capable of rendering a lot of more nodes 17:02 rubenwardy agreed 17:02 celeron55 -t 17:03 celeron55 it makes sense to me... but if it's not done, then nothing gets done in that topic 17:03 erlehmann sfan5 this seems promising 17:03 erlehmann thanks 17:04 sfan5 it seems 17:05 sfan5 if it was promising it would've been merged 17:05 sfan5 (usually) 17:05 erlehmann well it breaks vertical particles 17:06 erlehmann though i do not understand yet why 17:06 erlehmann > The changed properties require a change in the network protocol 17:06 erlehmann lol 17:07 erlehmann i remember that way way back someone wanted to make a rain thing for minetest-delta 17:07 erlehmann but never cleared up their whitespace or something 17:07 erlehmann just dumped the PR there and well, didn't get merged lol 17:13 erlehmann celeron55 regarding LOD, i appreciate how much smoke and mirrors good games are. you probably read the “rendering a city” article series way back, did you? 17:15 erlehmann https://www.shamusyoung.com/twentysidedtale/?p=3166 17:15 erlehmann https://www.youtube.com/watch?v=-d2-PtK4F6Y 17:15 erlehmann this one 17:15 erlehmann i bet a lot of you know it 17:16 erlehmann sfan5 if the “change the network protocol” parts are cut out of the PR you linked, how salvage-able do you think it may be? 17:16 erlehmann does the vertical thing present an insurmountable obstacle? 17:18 MTDiscord Ironically smoke and mirrors are themselves things that games have wanted to have but have historically had to find shortcuts around because they can be a bit intensive to accurately simulate. 17:18 erlehmann that made me smile hehe 17:18 erlehmann i remember playing poke646, which used the half life 1 engine 17:18 Gustavo6046 shouldn't the media for the last joined server still be in memory, or recent media in some sort of in-memory LRU cache? 17:18 sfan5 media is cached on disk 17:19 erlehmann Gustavo6046, minetest leaks memory, but if it leaks media, no idea. 17:19 sfan5 erlehmann: I don't know, does just removing a feature in active use sound like a problem to you? 17:19 sfan5 who was the person complaining about "rugpulls" again? 17:19 erlehmann sfan5 cut the sarcasm, salvaging would obv entail fixing that 17:20 erlehmann i just want to know if that's even an option 17:20 erlehmann and yes, i am against rug pulling 17:20 erlehmann always will be 17:20 erlehmann a client side rendering speedup PR has no business even touching network code imo 17:20 erlehmann or change the API 17:21 Gustavo6046 erlehmann, mm? 17:21 MTDiscord Can't say I'm a fan of rug pulling in general, but it really depends on the condition of the rug itself, and what is under it and/or is going to replace it. 17:21 Gustavo6046 sfan5, yes, but that still takes a while to load if you join a server 17:21 sfan5 well PRs that improve rendering without an observable difference in API or result are obviously okay 17:21 sfan5 and I can't comment on the code itself 17:22 erlehmann ok 17:22 erlehmann thx 17:22 sfan5 so still not sure what you're asking 17:22 MTDiscord gustavo: media caching to disk means you don't have to wait for that media to download from the network again, but you may still need to wait for it to be loaded from disk and unpacked into memory, which may depend a lot on your device. 17:22 erlehmann i was asking you if you had an opinion on the code itself 17:22 erlehmann which you don't, if i understand it 17:22 erlehmann but thanks for referencing it 17:23 erlehmann Gustavo6046 there are some simple things you can do to speed up media loading in general, but few of those are desirable. 17:23 erlehmann Gustavo6046 one thing you can do is use uncompressed formats. i have benchmarked that recently though and it seems there is no real gain at the texture size and number we have. 17:25 erlehmann Gustavo6046 another thing could be to do less reading of very many small files. that really depends on your filesystem and storage though, if *that* makes it slow. 17:25 MTDiscord Uncompressed formats for writing to a disk cache may or may not make sense depending on the relative CPU/IO balance of the system; sometimes compression can save time, sometimes it costs. It's generally not great for the network side of things though, and IIRC MT doesn't re-encode the disk cache so you'd have to eat the network costs. 17:26 MTDiscord "at the texture size and number we have" is not a thing, it's many things, and the servers where cache load times are a problem are also likely to be the ones where uncompressed formats would be too. 17:26 erlehmann Warr1024 i tested it in particular because at the typical sizes we are talking (textures that are 100 to 300 bytes) the compression gains you very little. but also at that size the undeniable overhead seems to not affect loading enough to justify it. 17:27 erlehmann justify changing it i mean 17:27 MTDiscord People talk about servers with multiple GB of media, and I usually only play on servers that just barely have multiple MB of media, so there's a pretty stark difference there. With only 2MB of media, it more or less just doesn't matter what you do anyway, so compress away if you're into that kind of thing :-) 17:27 erlehmann believe me, if i had found something, i'd already made a PR 17:28 erlehmann right now compression mainly matters if you are writing a thing a lot and reading it a lot 17:28 erlehmann think mcl_maps, you *really* don't want to add a deflate every time you edit the texture 17:28 erlehmann i mean an additional one 17:30 erlehmann AFAIK one thing that games use to speed up access to many small files is archives. irrlicht has support for that. irrlichtmt does not … AND it does not help with caching, unless you repack the stuff somewhere else. 17:32 erlehmann i concede that very broadly the direction of the “save all textures in sqlite” may not be as misguided as i have claimed. the implementation was stlil extremely cursed don't open. 17:32 erlehmann Gustavo6046 have you profiled the loading, in what is taking most time? 17:33 erlehmann Gustavo6046 you can use strace and ltrace for that on linux. also your binary will be slowed down to a crawl. 17:34 sfan5 strace/ltrace are not profiling tools 17:35 sfan5 they can tell if tell you whether reading from disk is slow though 17:35 erlehmann well, they can tell you if you are doing a lot of unnecessary stuff 17:36 erlehmann or, if you know you are doing that, they can help you pinpoint what it is 17:36 erlehmann (a real profiler obviously does not make everything take ages) 17:38 erlehmann Warr1024 this is funny https://nitter.snopyta.org/Foone/status/1372768129395224578 17:38 erlehmann mirrors in duke nukem 17:42 MTDiscord What's funny is how those worked. They basically duplicated the level geometry and objects inside that space to fake it. That also meant that when designing a level that had a mirror, you needed to put a giant sector behind it covering the space that the mirror could "see" to "reserve" that space for the mirror's internals. 17:44 MTDiscord Er, actually, no wait, they needed that sector because they positioned the camera inside that space and rendered the scene facing out. It's been a few decades so I remember it fuzzy :-) 17:44 erlehmann duke nukem 3d was a huge flex on all accounts 17:44 erlehmann shrink ray! 17:46 MTDiscord The build engine was one of my favorites for map editing. The BSP maps used in Quake, and event the 3D portal renderer used by Unreal, were too much of a PITA. I was really fine with maps that were conceptually 2D and just had some 3D extrusions. Most of day to day human existence really happens on planes with limited extrusion due to the influence of gravity. 17:46 Gustavo6046 erlehmann, I see 17:46 erlehmann come with me to the nether roof 17:46 Gustavo6046 my btrfs uses zstd compression if that is related 17:47 Gustavo6046 zstd is pretty fast compared to other methods, I think the point of it is that you can lower its compression level to get faster compression than standard methods without losing too much on compression ratio? 17:47 erlehmann Gustavo6046 well … try running minetest from a tmpfs and see how fast it is? 17:47 MTDiscord Compression at the fs layer is likely not going to be helpful to MT's media cache, though whether or not it actually hurts probably depends a lot on how much machine you've got available to handle it. 17:48 Gustavo6046 Warr1024: I really liked map editing for Unreal, as well as for Doom. FYI Duke Nukem 3D does not use a BSP tree like Doom and Quake do (even though it uses sectors like Doom does). It uses portals. 17:48 MTDiscord I actually use a tmpfs for my media cache and never have issues ... but again, I normally play games with ~2MB media :-) 17:48 erlehmann i really like the map editing for minetest, because it is IN THE GAME hahaha 17:48 Gustavo6046 Quake and Q3 also has "vis" portals that help with rendering performance. 17:48 erlehmann doom 2 has really funny mods 17:48 Gustavo6046 Simple rendering methods tend to faulter to the fact that rendering is, by nature, an expensive amount of computations, and is usually best done smartly, that is, with complex algorithms that reducex the amount of brute force work done. 17:48 erlehmann i mean if you use modern freedoom 17:48 erlehmann haha, use brutal doom 17:49 MTDiscord One of the Build Engine's strengths as a portal engine was that there was no map compilation necessary, and limited ways of making maps that aren't valid, instead of having the "leaking" issue that Quake ran into. 17:49 erlehmann it is doom meets minecraft 17:49 erlehmann wdym leaking 17:49 Gustavo6046 GPUs allow the already complicated rendering pipelines of today to reach a decent performance without too much fussing about data structures and ever-so-ginormous hacks and cleverness to reach the same performance with software rendering. 17:50 Gustavo6046 It's hard enough to reach a good performance on software rendering with something like Quake 3, look at how complicated its rendering code is! :P 17:50 MTDiscord Quake levels were composed of an empty negative space that you added positive geometry to (as compared to Doom or Duke3D that had a positive solid space you carved negative spaces into). When you compiled a quake level, it had to bake in lighting, and it could only do this if the space that the player starts in is "sealed" such that there's no way to get to infinity from the player's starting point. 17:50 Gustavo6046 Suffice to say, I don't value a renderer by its simplicity, but also not by its complexity. I value it by its cleverness, whether it runs on the CPU or GPU or whatever. I'm ambivalent about Unreal's renderer, since it's messy, but I like the map editing that it provides through, say, UnrealEd 2. It's intuitive and nice, I like the brushes way of mapping. 17:50 MTDiscord I never understood why they designed it this way; seemed dumb to me. 17:50 Gustavo6046 I'm also repelled by Quake's CSG. 17:51 Gustavo6046 It's disgusting. You're meant to fill in hulls. 17:51 erlehmann Gustavo6046 computers are fast. but programmers can do dumb stuff faster than computers get faster. 17:51 Gustavo6046 Any hole into the void is an error. 17:51 erlehmann Gustavo6046 so does the tmpfs thing do anything? 17:51 Gustavo6046 Unreal doesn't have that. 17:51 MTDiscord One thing about the old legacy games was that they were designed for CPU software rendering, and had to optimize pretty intensely; games like MT get away with a lot because we assume the GPU can handle quite a bit. 17:51 Gustavo6046 erlehmann, oh I'm yet to do that. I think I'll do that, yes. 17:52 Gustavo6046 Although I was thinking about having that LRU to the disk; the way tmpfs works it'll prohbably LRU to swap instead, which currently is a zstd zram volume. 17:52 MTDiscord Unreal has positive and negative CSG, so yeah, it avoids leaks to infinity. I think it was Quake II specifically I ran into the most trouble with. 17:52 erlehmann Gustavo6046 you are really going all in on zstd LOL 17:52 erlehmann Gustavo6046 you must have lots of CPU and lack hard disk and RAM i guess 17:52 Gustavo6046 Warr1024, yeah, they were. Even with the GPU though I think you can get a lot of mileage from meticulous consideration with optimization. 17:52 MTDiscord I don't think MT uses an on-disk LRU; I think it just caches media forever until you manually clear them... 17:53 Gustavo6046 erlehmann, I lack all of those, it just turns out I lack RAM more :D 17:53 erlehmann Gustavo6046 how little RAM do you have? minetest runs fine with 2GB, so … 17:53 erlehmann (my main machine is a thinkpad T60) 17:53 Gustavo6046 Warr1024 what I mean is to LRU on memory, then once that reaches the high watermark you start swapping older media to disk, until it reaches the low watermark. 17:53 Gustavo6046 erlehmann, 4 GB! 17:53 MTDiscord With the GPU you need to consider the trade-offs more. It's a lot easier to shoot yourself in the foot trying to be too clever, i.e. trying to make careful decisions instead of using brute force, when you pretty much universally actually have more brute force available than the compute resources needed to make clever decisions. 17:54 MTDiscord The only LRU that I know of that MT's caching does, on disk OR in RAM, is the swapping/paging system provided by your OS. 17:54 Gustavo6046 lscpu https://termbin.com/xxic , lspci -k https://termbin.com/rx8r , glxinfo -B https://termbin.com/s9h9 , free --mega https://termbin.com/oflm2 17:54 definitelya_ Happy extruded cat day! :3 17:54 erlehmann Gustavo6046 well, i have played mineclone2, the medal winner in resource wasting mods in minetest, and i have only ever managed to fill my RAM through memory leaks with minetest 17:54 Gustavo6046 I like the SI units :) 17:54 definitelya_ lol 17:54 Gustavo6046 erlehmann, I'm playing MineClone 5 17:54 Gustavo6046 which is much better in terms of not wasting resources, I suppose 17:55 Gustavo6046 in fact right now I'm on Kay's test server 17:55 erlehmann uhhh 17:55 erlehmann i can say things about kay27 and accidental recursion but let's say i don't wanna speak ill of someone who is ultimately doing a good job 17:55 erlehmann but if mineclone5 fills your RAM, you should investigate 17:56 erlehmann i would expect with all his “minetest is racy and i build by own mapgen in lua” experiments, bugs are bound to crop up 17:57 erlehmann Gustavo6046 how much RAM does minetest use with mineclone2 on your machine? 17:57 erlehmann or mineclone5 sorry 17:57 MTDiscord "I don't want to speak ill of X" always implies "but I de facto just did." Everyone has their focus, and correspondingly, weaknesses elsewhere... 17:58 erlehmann Warr1024, for me “i wouldn't it put past him to not pay attention to runaway processes” is not speaking ill, ranting half a screen page is. 17:58 erlehmann i disagree with him about quality control, but i disagree with a lot of people about it. 17:59 MTDiscord Quality control is about maintaining a specific level of quality, and part of that is avoiding too much quality. 17:59 MTDiscord I actually run into the too much quality problem with NodeCore about as often as I do too little, i.e. I find myself polishing some system or fixing some obscure bugs when I really should be working on something larger and riskier. 18:00 erlehmann look, i can spell it out: kay27 is very capable fixing problems. but you will have to find them, bc he is much lier to code 18:00 erlehmann much more likely to code 18:00 erlehmann a new feature instead of reviewing an older one 18:01 erlehmann so one you have found a memory leak or whatever he will fix 18:03 erlehmann if something does not crash in luajit but does crash with builtin lua, he will not notice, bc he uses luajit. 18:03 erlehmann this is the same way i did not notice that in mcl_maps the flags need to be “wb” to work on windows for file writing 18:03 erlehmann it's always easier to have someone else point it out 18:06 erlehmann Gustavo6046 please tell me the result of your experiment, i am curious 18:09 erlehmann https://www.brendangregg.com/blog/2014-05-11/strace-wow-much-syscall.html 18:09 erlehmann > The first strace is on display at the Computer History Museum in San Jose. It was made in 1961 using wire wrapped circuitry and core memory, and could trace up to 12 system calls per second. Within its sheet metal enclosure are four seats: for the surgeon, co-pilot, and their two secretaries. It could stay submerged at syscall depth for up to 9 hours. 18:10 erlehmann > On the bottom of San Francisco bay are several thousand unused straces, which were intended for Y2K issues that never arose, and so were scuttled. 18:28 Gustavo6046 erlehmann, which? 18:28 Gustavo6046 I didn't try mcl2 yet 18:28 Gustavo6046 I'm on mcl 18:28 Gustavo6046 mcl5 18:29 erlehmann Gustavo6046 yeah so did it do anything 18:29 erlehmann the mcl5 + tmpfs 18:38 Gustavo6046 ohh 18:38 Gustavo6046 tmpfs 18:38 Gustavo6046 you mean joining the server wit that 18:38 Gustavo6046 I didn't quite try yet 18:38 Gustavo6046 I should 18:38 Gustavo6046 one moment 19:23 Gustavo6046 erlehmann, there is one detail though 19:23 erlehmann tell 19:23 Gustavo6046 tmpfs is volatile storage, I would like the media to be persistent, saved on disk 19:23 Gustavo6046 but I will give ita try 19:23 erlehmann look i only want to know if your setup makes it slow 19:23 MTDiscord tmpfs is sort of a proof of concept more than a permanent solution 19:23 Gustavo6046 if it does give a significant improvement in loading time (and I have a feeling it does) I will consider finding a way to do that 19:24 Gustavo6046 erlehmann, you mean with btrfs and compression? 19:24 MTDiscord in my case I use it because I specifically don't want it written to disk, I actually don't need a disk cache 19:24 erlehmann be sure to join a remote server, if you start a local server, mod initialization will dwarf most other stuff anyway 19:24 MTDiscord but if it improves loading time you COULD also setup a background sync to/from disk. 19:24 erlehmann yeah 19:24 Gustavo6046 yes 19:24 erlehmann Gustavo6046 i am generally not a fan of filesystems that fill your disk with garbage once you stat a file lol 19:24 Gustavo6046 do they? 19:25 Gustavo6046 I think btrfs is clever, maybe a bit too clever but still pretty good 19:25 erlehmann the delicious butter filesystem had this failure mode last i looked 19:25 Gustavo6046 failure mode? 19:25 Gustavo6046 well, it works just fine for me, if maybe a bit slow to resize partitions and move them around, and I'm happy with it :P 19:25 erlehmann ok so a question 19:26 erlehmann give me a few minutes to figure out how it was triggered 19:26 Gustavo6046 okay, I've finished copying stuff 19:26 Gustavo6046 oh... 19:26 Gustavo6046 I am planning on doing some more pull requests to MineClone 5 in a moment 19:26 Gustavo6046 some fixes and some details 19:26 Gustavo6046 I'll do that after I finish this test though 19:26 erlehmann are you the person with the items? 19:27 Gustavo6046 items? 19:27 MTDiscord oh thank got I'm not the only one who sees that as "butter filesystem" 19:27 Gustavo6046 I implemented the current item-water interaction physics in MineClone 5 19:27 Gustavo6046 does that sound familiar to you? 19:27 Gustavo6046 probably not... 19:27 Gustavo6046 ...but if it does then it's because it turns out I also did with TenPlus1's builtin_item :D 19:28 Gustavo6046 mm, Crocus does seem to make the game a bit slower 19:28 Gustavo6046 also 19:28 Gustavo6046 it still spends some time loading media 19:29 Gustavo6046 df gives size=1,9G used=164M available=1,8G use%=9% at path /home/gustavo6046/.cache/minetest 19:30 erlehmann it does sound familiar to me 19:30 Gustavo6046 so it's not that much of an improvement, I'd sa 19:36 Gustavo6046 huh, there are some strange Moiré-esque artifacts when I walk toward or away from far away blocks, with mipmapping. 19:37 Gustavo6046 I forgot if it happens without it too 19:37 Gustavo6046 I'll try with anisotropic filtering too 19:38 Gustavo6046 nop, still there 19:38 Gustavo6046 I'll try disabling smooth lighting 19:38 erlehmann moire effects yay 19:40 erlehmann not sure if cursed, but a very lazy investigation using strace seems to suggest that minetest is definitely not holding back on unnecessary filesystem access 19:40 Gustavo6046 yeah the effects won't go away 19:40 erlehmann this is hilarious 19:41 erlehmann so by default i get stat calls for BMP files that are *definitely* not there. a lot of them. 19:41 erlehmann the bmp reader needs to die 19:43 MTDiscord oh, wait, it just looks for files by hash and cycles through every possible extension or something...? 19:44 erlehmann nah, for texture packs it needs to do that 19:44 Gustavo6046 o.o 19:44 MTDiscord I feel like I've gotten away with writing stuff like that a lot though, as most fs's can be relied on to cache some stuff smartly, and reading the entire dir in and hashing it myself can often be worse... 19:44 erlehmann i have written a build system. the thing is, syscalls are fast. but do it at *scale* … 19:44 Gustavo6046 maybe just prioritize png over bmp? 19:44 erlehmann look, bmp is the worst format ever 19:45 erlehmann it even has a 32 bit mode that gives you 24 bit for RGB color and 8 wasted bytes! 19:45 Gustavo6046 or convert every file to .png in the filesystem (or maybe even an in-memory store) and then use that to reference textures? 19:45 Gustavo6046 so everything will be named predictable 19:45 Gustavo6046 y 19:45 erlehmann oh my, jpeg and tga exist 19:45 erlehmann the code needs to be smarter 19:45 erlehmann that's all 19:46 Gustavo6046 stat the entire folder and convert it, letting the conversion library figure the input type, rather than cycling through extensions and prodding the fs 19:46 erlehmann try it 19:46 Gustavo6046 while you're at it might as well convert it to a compressed format that is compatible with OpenGL and/or D3D 19:46 MTDiscord BMP is IIRC optimized to be loaded quickly directly into video memory, i.e. the bytes are arranged on disk the same way they are in memory of video systems of the time. 19:46 Gustavo6046 what was it called now, dx12? 19:46 erlehmann LANG=C strace -e file ./bin/minetest 19:46 Gustavo6046 er no 19:46 Gustavo6046 that's not a format 19:46 MTDiscord Whenever you have to say "of the time" for design of something, it's a good indication that yeah, maybe it's a bit dated... 19:46 erlehmann Warr1024 same as every other microsoft format lol 19:47 MTDiscord I don't think I ever understood the reverse scanline thing from BMP though. 19:48 erlehmann nowadays you can get every benefit you *might* have gotten from bmp from TGA. 18 byte header and whatever comes after it is a) always streamable b) interpretable with a minimum amount of code. 19:48 erlehmann which is why you see games still using TGA, but rarely using BMP 19:48 rubenwardy Gustavo6046: we only support OpenGL bt 19:48 rubenwardy *btw 19:49 MTDiscord IIRC isn't BMP support only in there because it would have been too much of a bother to remove it, and it probably just felt wrong to leave it in as dead code and not expose support? 19:49 rubenwardy the best format to use on disk doesn't necessarily need to be the best format to use at runtime 19:49 erlehmann Warr1024 it should not be hard to axe it. 19:49 erlehmann give me a few minutes 19:49 rubenwardy Warr1024: that doesn't sound right 19:50 MTDiscord Maybe it was an Irrlicht-pre-MT thing 19:51 rubenwardy quick grep of ContentDB uploads show that .bmp is being used 19:51 erlehmann oh lol ok 19:51 erlehmann it has to stay then i guess 19:51 erlehmann for what though? 19:51 rubenwardy mostly by menu/icon.bpn 19:51 rubenwardy *bmp 19:52 erlehmann i see. i guess windows strikes again. 19:52 rubenwardy there's also one random textures/ image that looks wrong 19:52 MTDiscord wh- 19:52 MTDiscord menu icons are able to be in .png right 19:52 erlehmann i retract my assertions and substitute “no rug pulls” 19:53 MTDiscord *are only able to 19:59 erlehmann lol, constantly asking for /etc/localtime 20:00 erlehmann https://blog.packagecloud.io/set-environment-variable-save-thousands-of-system-calls/ 20:01 erlehmann > It turns out that the localtime function in glibc will check if the TZ environment variable is set. If it is not set (the two Ubuntus I’ve tested do not set it), then glibc will use the stat system call every time localtime is called. 20:01 erlehmann computers were a mistake 20:01 MTDiscord computers were invented by humans, so technically they're a 2nd generation mistake 20:12 Gustavo6046 erlehmann, I don't think they were 20:12 Gustavo6046 they have been profoundly leveraged by society and I think that's a good thing 20:12 Gustavo6046 in spite of it bringing all the downsides of computation over to the real world 20:19 RhineDevil Gustavo6046: u here too 20:19 Gustavo6046 yeah 20:19 Gustavo6046 I am 20:20 RhineDevil why does erlehmann think computers were a mistake 20:21 RhineDevil in my opinion the problem is not in computers but in humans being egocentric narcissists 20:23 definitelya_ RhineDevil: huh? 20:24 Gustavo6046 RhineDevil, that too 20:24 RhineDevil definitelya_: I think humanity is flawed by default 20:24 Gustavo6046 and also humans not really understanding computers 20:24 RhineDevil that too 20:24 Gustavo6046 or making needlessly convoluted stuff that only exacerbates the previous issu 20:25 Gustavo6046 a running joke among programmers is that a lot of code is meant to be write-only. 20:25 RhineDevil perl docet 20:25 Gustavo6046 we shouldn't be laughing at that. we should be crying. we should be anguished and revolted against those before us who thought that was afine. 20:25 Gustavo6046 well, you don't have to write Perl in order to write write-only code :P 20:26 Gustavo6046 although yes, if you bash your head on the keyboard, the output has a surprisingly high chance of being valid Perl 20:26 RhineDevil if only I had a penny for every badly written perl program I've seen 20:26 RhineDevil Gustavo6046: I know 20:26 RhineDevil I programmed in perl myself 20:26 Gustavo6046 :P 20:26 RhineDevil but perl is quite lax in allowing bad syntax 20:26 Gustavo6046 yeah 20:26 RhineDevil and some people don't even bother in having at least coherent syntax 20:27 definitelya_ RhineDevil: That's a bit depressing, with not much to gain from it, seeing as there are as many different facets of being as there are people. 20:27 Megaf test 20:27 RhineDevil definitelya_: reality is depressing 20:27 definitelya_ Only if u let it. ;) 20:28 RhineDevil definitelya_: the positive bias is talking through you 20:28 Megaf !up minetest.megaf.info 30003 20:28 MinetestBot minetest.megaf.info:30003 is up (9ms) (IPv4) 20:28 Megaf Anyone in the mood of joining a new server and starting all over again? 20:29 RhineDevil Megaf: nah I'm in the mood for burning software and writing it a new 20:29 RhineDevil *anew 20:29 definitelya_ RhineDevil: IMO, reality is irrational anyway, so there's no reason for it to depress me I guess. 20:29 dzho Megaf: should I drop in then? 20:30 RhineDevil definitelya_: for someone to not see reality as depressing, he must either be positivist/panglossian or devoid of emotions 20:31 Megaf My new server, Megaf Server v6, it's the sixth itineration of Megaf Server, as its predecessors, it's focused around mesecons and pipeworks, with homedecor for decoration. It's a survival server for creative people. 20:31 RhineDevil and I'm not 20:31 RhineDevil I only know I have to fight to at least make reality a bit less unconfortable 20:31 definitelya_ hm, I guess I'm just malfunctioning, as usual. 20:31 definitelya_ xD 20:32 RhineDevil definitelya_: truth is everyone is malfunctioning 20:32 definitelya_ deep 20:32 RhineDevil when we evolved and started to question ourselves, we realized we're going to die 20:32 RhineDevil for rejecting this truth, our brain evolved the positive bias 20:33 RhineDevil we never think about how close the death is, otherwise we'd be vegetals in a constant state of depression 20:34 RhineDevil so, we always think someday, in some way, things we'll be better 20:34 definitelya_ LALALA! Can't hear you over this cool positive bias. B) 20:34 RhineDevil tl;dr this malfunction is in order to keep us functioning 20:35 definitelya_ RhineDevil: Exactly 20:38 RhineDevil btw about what I said earlier, Gustavo6046 if only you knew how much bad stuff is in "reputable" code managing debian repos 20:38 RhineDevil I've seen horrors in bash and perl you humans can't even imagine 20:38 Gustavo6046 yeah 20:40 RhineDevil I stared too deeply in the abyss and the abyss said "#!/bin/sh perl -c 'code'" 20:40 erlehmann https://flak.tedunangst.com/post/accidentally-nonblocking 20:40 Gustavo6046 ouch 20:40 Gustavo6046 mean abyss 20:40 erlehmann > Mistakes are made, and recv is called on a blocking socket. The program stalls and users complain. However, instead of a proper fix, the developer changes the socket to nonblocking. Now recv will return a nice error code which we can ignore. But this does not fix the underlying cause, that the program’s internal state machine has become unsynced with reality. 20:41 MTDiscord Rhine, I can't get past the nagging thought: "shouldn't that be -e?" 20:41 RhineDevil MTDiscord: yeah sorry it was a year ago or something, pardon me 20:42 Fulgen erlehmann: I guess the developer left the proper fix to the next person that would touch the code 20:42 MTDiscord I guess maybe I do more abyss-staring than I think :-) 20:42 MTDiscord er, I guess it's #!/bin/sh -c "perl -e 'code'" 20:43 RhineDevil '#!/bin/sh -c "perl -e 'code'"? you sure? 20:43 RhineDevil the hashbang means it's a script 20:44 RhineDevil Btw I'm not really fond of the idea of linking IRC and discord. Discord is spyware 20:46 MTDiscord ...says the person on the platform that actually has public logs ? 20:47 MTDiscord https://tenor.com/view/oh-no-oh-no-anyway-gif-18887547 20:48 definitelya_ Discord exists. 20:49 definitelya_ You can't argue with me there. 20:49 Megaf By the way, I'm giving 10 blocks of diamond for the first 5 people who join my server in the first 24 hours since it became public. 3 people already got their prize, two more to go. 20:49 RhineDevil MTDiscord: that's the difference, IRC is open by design, Discord datamines on your back 20:49 RhineDevil *Warr1024 20:49 wsor RhineDevil https://tenor.com/view/yes-very-sad-anyway-loki-sad-loki-gif-22079369 20:50 RhineDevil no sorry I dont watch cinecomics 20:53 ROllerozxa IRC be kinda cozy tho... -w- 20:54 RhineDevil cat -W- 20:54 Gustavo6046 erlehmann, wait, but then what is the proper fix, hmm? 20:54 Gustavo6046 A socket will stall the thread it's executing on if it's blocking. 20:54 Gustavo6046 Setting it to nonblocking and checking its return code every so often is important. 20:54 Gustavo6046 Unless you use some sort of event loop. 20:56 Gustavo6046 RhineDevil, I'm not really a big fan of Discord either, but I'm also not too bothered to tell companies to stop profiting off of my data without splitting the profits with me, sooo *shrug* 20:57 Gustavo6046 I reckon this also happens to be the mentality of the majority; people want to use things for free, and are willing to pay for it with their own data. 20:57 Gustavo6046 I know it sets a worrying precedent, but I honestly, seriously, non-sarcastically don't know what kind of dystopian future would come from this. 20:57 erlehmann Gustavo6046 read the article 20:57 Gustavo6046 If there is a dystopia, we're already heading for it because of capitalism. 20:58 erlehmann > IRC is open by design, Discord datamines on your back 20:58 Gustavo6046 And we should work to get rid of that. Trust me, without capitalism as we know it, so many things will be better, as the entire structure of incentives will change. People will be less selfish, companies will be nicer. 20:58 Gustavo6046 erlehmann, I know, I know! 20:58 erlehmann and discord lags my computer to death without doing anything 20:58 Gustavo6046 Yeah Discord has a memory leak here 20:59 erlehmann matrix is similarly worse. chat clients! using more RAM than minetest! 20:59 erlehmann chat program that wants more RAM than minetest should be fined. with the fines increasing until performance improves! 21:00 definitelya_ Discord & others aren't the problem anyway. It's the Far West state the internet put us in that is surreal and damaging for all. 21:00 definitelya_ Especially for making them respect the law. 21:01 erlehmann THE LAW has entered the game 21:01 erlehmann [[VGHS intensifies]] 21:02 definitelya_ videogame highschool? 21:03 definitelya_ Sorry that's the first thing that popped up oof 21:12 Megaf dzho, Thanks for joining. And monsters is now active :) 21:18 erlehmann definitelya_ yes, a character there is called the law 21:18 erlehmann lawrence something 21:18 erlehmann he is played very well 21:20 definitelya_ oh 21:21 erlehmann ha, i found something funny. i wonder if my change will increase performance. 21:21 erlehmann i mean it will. but i wonder if it is noticeable. 21:21 erlehmann (compiling) 21:25 Gustavo6046 definitelya_, the Internet has upsides and downsides, most of them come from how humans interact with it though. 21:25 Gustavo6046 I'd say, it is actually pretty great for a lot of things, and with its free exchange of information, may as well catalyse a very necessary revolution in global society. 21:26 definitelya_ Of course it's great; it's just a very powerful tool. 21:26 Gustavo6046 It's not just a tool. It's a massive social and informational phenomenon. 21:26 Gustavo6046 People will organize and revolute. With revolution will come the refreshing of every corner of legislation, as well as the already cliché'd substitution of the foundations of the socioeconomical system and the underlying structures of incentive. 21:28 Gustavo6046 With a flatter social pyramid, and more businesses drawing closer to the worker's cooperative model, as well as a general diffusion of Marx-esque critical ideas, there will be no point in infringing people's privacy in the first place. Regulation online will be revamped, but in a way that respects both the individual and the collective, and it won't be centralized by governments or companies alike. 21:31 erlehmann right, i learned in school how the workers united after the russian revolution and then started respecting everyone's privacy! 21:32 erlehmann so by 1924, online advertising was practically nonexistent 21:33 definitelya_ Gustavo6046: > a flatter social pyramid 21:33 Gustavo6046 erlehmann, definitelya_, in what school did you learn about the Soviet Union, and which period of it? 21:33 definitelya_ Yes! The Galactic Emperor and then its subjects. >:) 21:34 Gustavo6046 There definitely was a grace time once the turbulence of the revolution finished, and before it started puckering up again. 21:34 Gustavo6046 and getting shitty again 21:34 Gustavo6046 but at least this time it was way more industrialized and modernized than in the era of the Tsars 21:34 definitelya_ s/its/their 21:34 Gustavo6046 definitelya_, well, that's not really a pyramid now is it, that's a needle stuck into a wide, wide floor! 21:35 Gustavo6046 yup I just called ya a needle head 21:35 definitelya_ Gustavo6046: bee you 21:35 erlehmann Gustavo6046 i learned all the history of the soviet union from this song https://www.youtube.com/watch?v=hWTFG3J1CP8 21:35 definitelya_ HAH 21:35 Gustavo6046 me? a bee? pff 21:38 MTDiscord The topic move requests in https://forum.minetest.net/viewtopic.php?p=407075 need to be handled. Appoint additional helpers if need be. It seems that's what was done with Mooncarguy, who after a short period of activity became inactive. 22:21 MinetestBot 02[git] 04sfan5 -> 03minetest/minetest: Clean up ClientReady packet handling 13c31b301 https://github.com/minetest/minetest/commit/c31b3017222edd6e93bdeb02f05a3df7b6b23a1a (152022-02-17T22:20:33Z) 23:31 erlehmann sfan5, why does this change u16 formspec_version = 0; ? 23:33 erlehmann is it just a control flow issue? 23:33 erlehmann (i see that it is set to 1 at another point)