Time Nick Message 02:50 greeter i have some falling water on a server. is there any easy non-admin way to despawn it? 02:51 erlehmann greeter what do you mean with falling water? 02:52 greeter i spilled some water near the top of the world. i'm done with it now and picked up the water with a bucket, but now what's flowed away just keeps falling 02:53 erlehmann greeter get a sponge i gues?? 02:54 erlehmann greeter alternatively, get a cheat client 02:54 erlehmann or ignore it 02:55 greeter looks like it's despawned now. i followed it down about 1,000 nodes then flew away. when i came back it was gone 03:51 v-rob erlehmann: Did you really recommend someone get a cheat client? That's very much against the rules. 03:54 erlehmann v-rob i did, and i believe you are mistaken – https://wiki.minetest.net/IRC#Rules says nothing about cheat clients. 03:54 erlehmann v-rob i believe cora has used waspsalive to fight runaway fires that caused server lag 03:55 erlehmann so i guessed that code could pretty easily be changed to fight water 03:55 v-rob The IRC rules say very few Minetest-specific things, but the forum rules do prohibit it, and most of those should extend to IRC by proxy. 03:55 erlehmann the real solution is, of course, to fix the fire algorithm. cora also do that. 03:56 v-rob I mean, it's certainly possible to have legitimate "cheat" clients, but I'm just trying to warn you that the rules are rather explicit about it. I'd personally rather not have you get banned or anything like that. 03:57 erlehmann i am pretty sure that i have only ever suggested cheat clients that are constructive, i.e. automatically build stuff. 03:58 erlehmann or similar things 03:58 v-rob I know, but it could get questionable. Some might consider automatic building cheating. 03:58 erlehmann waspsaliva can, for example, disable particle effects bc those can cause lag 03:58 erlehmann that depends on the server 03:58 v-rob That sounds like a legitimate fork feature. 03:59 v-rob Forks are definitely different that cheat clients, as one is used for getting unfair advantages over others. 03:59 erlehmann well, i call all of those cheat clients, yes 04:00 erlehmann but that has to do with my view on the virtual lego games genre in general 04:00 v-rob Well, it might behoove you to use better terminology then :) 04:00 erlehmann i.e. that exploring an open world and building stuff is a modern robinsonade 04:00 erlehmann the perfect neoliberal experience 04:00 erlehmann work is always rewarded 04:01 erlehmann well, waspsaliva has also goddess mode 04:01 erlehmann and features to keep griefers at bay 04:01 erlehmann i do not believe there is a good line to draw 04:01 erlehmann i mean, i used halfbright mode myself because i have bad contrast vision 04:02 erlehmann halfbright, as in: every node appears at least with light level 7 04:02 erlehmann i do, of course, not do such stuff on CTF or so 04:03 erlehmann apart from all of this: i believe that the forum rules neither do nor should they extend to IRC and i believe this is the first time someone explicitly disagrees on that. 04:03 erlehmann one reason for that is that as a game dev, i need to discuss cheat clients 04:04 erlehmann for the simple reason of “how to defend against that” 04:04 v-rob Discussing cheat clients is a different matter than recommending cheat clients 04:05 erlehmann if you are more comfortable with that, i can also recommend to not use them. there is historical precedence, wait for it. 04:05 erlehmann https://en.wikipedia.org/wiki/Vine-Glo 04:06 erlehmann > On the packaging, it included a very specific warning: "After dissolving the brick in a gallon of water, do not place the liquid in a jug away in the cupboard for twenty days, because then it would turn into wine." 04:07 erlehmann > old in the United States during Prohibition by Fruit Industries Ltd 04:07 erlehmann sold ;) 04:09 erlehmann v-rob i do, of course, not want to be banned. so if someone who actually can ban me threatens me with a ban for recommending waspsaliva, i may try to compy. 04:10 v-rob Well, start distributing source patches that allow cheating features, and you'll probably find out that we're a bunch of Prohibitionists and not Supreme Court members with conflicts of interest then ;) 04:10 erlehmann v-rob but until that happens, i will continue to tell people about that stuff when i deem it apropriate. 04:10 erlehmann wdym start distributing source patches? 04:11 v-rob I'm making an analogy between giving out wine bricks and code that would allow you to turn Minetest into a cheat client. 04:11 erlehmann i *strongly* doubt that anyone is going to ban cheat client authors for anything outside forums. cora and fleckenstein were not banned. 04:11 erlehmann neither was anon5 04:11 erlehmann all three of those have contributed something to minetest in the end, like fixes for exploits. 04:12 erlehmann e.g. i believe fleckenstein fixed the entityspeed exploit (where being attached to an entity allowed players to break the speed limit) 04:12 v-rob In any case, I have no power to ban, as I am not a moderator. I'm just stating that you appear to be on shaky ground. 04:13 erlehmann i doubt it, but i appreciate your concern. 04:13 erlehmann oh also 04:13 erlehmann cheat clients are, definitely, something on almost all servers that have anarchy in the name or description 04:14 erlehmann v-rob have you ever used a cheat client btw? if not, i suggest to try. some features would very well fit into minetest proper. 04:15 v-rob Now you're recommending them to me :) 04:15 v-rob But no, I have not. 04:15 erlehmann yes, because you are a dev and i would like mainline minetest to have more interesting CSM APIs 04:15 v-rob Ah 04:16 erlehmann i mean WS is basically a bunch of CSMs 04:16 erlehmann some of them even work on vanilla minetest 04:16 erlehmann like, cora gave me one once with which i could see the ghost inventories that a specific dupe polluted the world with 04:16 erlehmann so i could research server history 04:17 erlehmann like, where did people dupe 04:17 erlehmann invisible trails 04:17 v-rob I do have a lot of interest in SSCSM (although I'm GUIing for now and the immediate future), and many SSCSM APIs would extend to CSM as well. 04:18 erlehmann i believe that SSCSM is a foolish and dangerous endeavour and should never be done. but apart from that, i do think that we share a goal of better CSMs. 04:18 v-rob It's interesting, I've seen other games that have Lua scripting, and there is no form of SSM, only SSCSM-type things, which is the exact opposite of Minetest 04:18 v-rob Then again, security is not their highest priority... 04:18 v-rob Potential buffer overflows being the norm rather than the exception :/ 04:18 erlehmann do you know about afl-fuzz btw? 04:19 erlehmann well, buffer overflows are a reality in the CVE++ programming language ^^ 04:19 erlehmann about lua scripting: notch once mentioned that minecraft could have a server-side lua API, with no installation of client side mods necessary 04:19 erlehmann turns out he lied 04:20 erlehmann MC never got that hehe 04:20 erlehmann v-rob what kind of CSM interests you if it is not automating player actions? 04:20 v-rob Rendering 04:21 erlehmann please be more specific about that 04:21 v-rob Like this PR: #10801 04:21 erlehmann btw, automating player actions is important for accessability. i used autoforward, for example, bc it literally hurts to press the forward key after a long time. 04:21 ShadowBot https://github.com/minetest/minetest/issues/10801 -- Add CSM 2D Drawing API by v-rob 04:22 erlehmann i look at it 04:22 v-rob I closed it partly because of a change in GUI development direction and partly because I wanted it to be entirely decoupled from Irrlicht 04:22 v-rob But definitely something I want to pursue more, and also in the 3D realm. 04:23 erlehmann i see what you are doing there, but i believe the approach can be better done by declarative vector graphics and declarative animations 04:23 v-rob For instance, the ability to render arbitrary objects in the world, like client-side entities, but super light-weight 04:23 erlehmann like, see my website here: http://dating.dieweltistgarnichtso.net – the entire thing has rich animations and interactivity, but absolutely no javascript 04:23 v-rob Well, it was a light wrapper around Irrlicht's 2D API, so just image and rectangle drawing, mostly. 04:23 erlehmann it is almost all declarative SVG animations 04:24 erlehmann the difference in performance between declarative drawing and programmatic drawing is A LOT in my experience 04:24 erlehmann like svg animations will work on 10 year old phones … javascript bloatware, not so much 04:25 erlehmann the reason, of course, being that a declarative API means you can improve the renderer 04:25 erlehmann and do not rely on each document to be improved 04:26 erlehmann i believe it to be a collosal mistake to have 2d graphics be programmatic. time and time again it has lead to security and performance problems. 04:26 erlehmann like, take postscript 04:27 v-rob Different things for different jobs. That PR was originally meant for the formspec replacement. All elements have managed rectangles, and then all they need to do is draw an image or box inside that rectangle, so that was the correct approach. 04:27 erlehmann maybe. i can not really tell, formspecs are a cursed thing 04:27 v-rob Well, the formspec replacement is supposed to replace the formspecs, so they're really entirely separate. 04:27 erlehmann i remember having heard a story once, that someone (maybe lutz donnerhacke?) figured out that not only you can make a fractal in the postscript programming language, you can also send that document to a printer 04:28 erlehmann contrary to that, you can not do that using svg, short of including documents fragments in themselves – which can easily be forbidden. 04:29 v-rob Really, that PR was meant to be a backend for more general drawing, not as a thing that general users would use for their drawing needs. 04:29 erlehmann i understand. i took it as an example of a general drawing approach. 04:29 erlehmann and having seen how badly mineclone2 manages client resources, i am strongly against such things. 04:29 erlehmann fire texture metadata, for example, in mineclone2, was sent each frame. 04:30 erlehmann cora calls it “a singleplayer game” for reasons ;) 04:30 v-rob Ouch. The more I hear about MineClone 2, the more I never want to touch it. 04:30 erlehmann well, it is a very successful thing for reasons. but those reasons do not include performance. 04:31 MTDiscord mineclon* is literally the handbook on what not to do in minetest 04:31 erlehmann a thing you may not have noticed is though that a lot of code in there was cobbled together from other mods. 04:31 v-rob The code is the #1 thing I never want to see from it :) 04:31 ShadowBot https://github.com/minetest/minetest/issues/1 -- GlowStone code by anonymousAwesome 04:31 erlehmann originally, i mean. minetest_game, for example, also had similar bugs. not *too* bad, but similar. 04:32 erlehmann #0 04:32 ShadowBot erlehmann: Error: That URL raised 04:32 erlehmann well 04:32 v-rob Hmm, #-1 04:32 erlehmann hehe 04:32 v-rob Nope, OK 04:33 erlehmann so regarding CSMs 04:33 erlehmann anything else you are interested in? 04:34 v-rob I haven't thought in great detail. My favourite potential application for SSCSM would be entity management, since it's super slow to do it from the server, but that doesn't extend very well to CSM. 04:34 erlehmann here is some inspiration btw https://repo.or.cz/waspsaliva.git/tree/HEAD:/clientmods 04:35 erlehmann there is an encrypted messenger in there and teamchat 04:35 erlehmann and a way to mark other players as friend or foe 04:36 erlehmann i like the simplicity of this one https://repo.or.cz/waspsaliva.git/blob/HEAD:/clientmods/kamikaze/init.lua 04:36 erlehmann basically, someone spammed hostile mobs at the spawn of a server 04:36 erlehmann which kills noobs 04:37 erlehmann kamikaze logs in and punches those, then dies, respawns, does it again 04:37 erlehmann to make the server safe again 04:37 erlehmann it also punches fire and tnt and exploding crystals 04:38 erlehmann v-rob would you consider that cheating? the admin did not interfere with both spamming hostiles nor cleaning it up 04:38 v-rob Not really 04:38 v-rob But the same code could easily be abused to attack other players 04:39 erlehmann well the bot is too lazy for wayfinding i just realized 04:39 erlehmann so it just flies lol 04:39 v-rob Which makes it difficult to add APIs for such a thing 04:39 erlehmann it's not too difficult 04:39 erlehmann you are thinking of a different thing probably, killaura 04:39 erlehmann it can be detected pretty easily, spawn invisible entities close to players and see if they start punching them 04:40 erlehmann if so, they must be cheaters 04:41 erlehmann v-rob what about autoeat, where if a player has food and is hungry, the script will make the player eat it. cheating? 04:42 v-rob It would probably depend on the hunger mod 04:42 v-rob If it's an extreme survival server, it might be. 04:43 v-rob Minetest Game + hunger? Maybe not. 04:43 erlehmann well, anarchy servers, where players lie, cheat & kill 04:43 erlehmann extreme survival ehehehe 04:44 v-rob Anarchy is a class of its own, and certainly shouldn't be the basis for CSM APIs, to be sure. 04:44 erlehmann to the contrary, i think it should. you get a very good testing that way if an API can and will be used to cheat. 04:45 erlehmann if you have a CSM API and it is not used to cheat on an anarchy server, it's probably fine 04:45 v-rob I mean we shouldn't design APIs _for_ anarchy servers 04:46 erlehmann well, anything that improves user control is like that. so i totally get it that anarchists will want CSMs that are not server-controlled and … others … will want to prevent that level of user autonomy. 04:47 MTDiscord hey vrob, would you be up for looking at some formspec stuff? 04:47 erlehmann uh, are CSM formpsecs still broken? 04:47 v-rob Sure, which formspec stuff? 04:47 MTDiscord https://github.com/minetest/minetest/issues/11898 and https://github.com/minetest/minetest/issues/11907 04:48 erlehmann https://github.com/minetest/minetest/issues/11700 04:48 MTDiscord i have a example out in the wild(pr for fixing it) https://github.com/mt-mods/travelnet/pull/32 04:49 MTDiscord is this something that would block 5.5? 04:49 erlehmann oh my, this is horrible 04:50 erlehmann i was not aware of that problm 04:50 erlehmann problem 04:50 erlehmann Jonathon, can the pattern be greped for in contentdb? i have an older cdb dump and some scripts to grep it 04:50 erlehmann like, the pattern of close a formspec, open one again 04:51 MTDiscord it seems unknown if this is a server or client side. 04:51 MTDiscord erlehmann: im asking vrob 04:52 erlehmann and 0.1 is enough of a delay to always win the race? 04:52 erlehmann unclear to me from the info i have read 04:52 erlehmann maybe appgurueu knows more 05:15 v-rob Confusing bug... 05:16 MTDiscord is it client, server, both? 05:16 v-rob Actually, I think I found it 05:17 v-rob It might only happen in singleplayer, lemme check 05:18 v-rob Well, maybe not 05:32 v-rob I found the source of the bug. It's an old one; it's been around since 5.0.0 at least, probably way, way longer than that. 05:32 MTDiscord is it client, server, both? 05:34 MTDiscord odd it finally surfaced now if its been around that long 05:35 v-rob Both 05:36 v-rob button_exit[] is clicked, client sends fields to server and destroys GUIFormSpecMenu directly after. However, before the client gets that far, the server sends a formspec right back, which then gets shown. Then the client destroys GUIFormSpecMenu, including the newly shown formspec. 05:36 v-rob Nasty 05:37 v-rob It looks difficult to fix cleanly. 05:37 v-rob However, servers with highish latency shouldn't have this problem, so y'all should make the server lag out more :P 05:38 MTDiscord well, thats a new one 05:38 MTDiscord how does the issue occur? 05:39 v-rob As far as I can tell, it's essentially a race condition between client and server 05:39 MTDiscord yikes 05:39 v-rob It's pretty bad 05:39 MTDiscord is this a 5.5 blocker or? 05:40 v-rob I'd guess no because it's been around such a long time, but IDK 05:40 erlehmann v-rob please post your new knowledge to https://github.com/minetest/minetest/issues/11907 05:41 MTDiscord so probably need sfan5/other devs opinion or something 05:41 v-rob I will, I'm just doing more testing 05:41 erlehmann ok cool 05:41 MTDiscord Thank you for looking into ir v-rob 05:41 MTDiscord *it 05:41 v-rob No problem 05:44 erlehmann v-rob how about canceling GUIFormSpecMenu destruction if the client got a new formspec since the last button press or something? 05:44 erlehmann by which i mean “why is this a bad idea?” 05:44 erlehmann almost all “obvious fixes” are bad ideas, after all 05:46 erlehmann https://gitlab.com/torkel104/libstrangle 05:46 erlehmann > Cap the FPS (frames per second) of a chosen game by using the included script strangle Example: 05:47 v-rob The difficulty is that GUIFormSpecMenu has almost no knowledge of when a new formspec is shown. This is also the cause of difficult problems like showing the same formspec with minetest.show_formspec not causing the formspec to be regenerated. 05:51 v-rob Updated the issue 06:34 erlehmann v-rob what do you think of declarative animations btw? 06:36 v-rob They're certainly the proper way to do nearly all animations in a GUI 06:37 erlehmann what animations would you not do with them? 06:39 v-rob Assuming they're a good set of rules, you'd use them for all GUI animations. If you're doing something like a 2D game, of course, they won't be enough. 06:41 erlehmann i still do not know what you mean by “they won't be enough” 06:42 erlehmann you want shaders in your 2d images? 06:44 v-rob "2D game". Try making Super Mario Bros. with only declarative animations. 06:45 erlehmann right, you can only make games that have a limited state space with that 06:45 v-rob Granted, that is starting to fall outside the realm of normal GUIs as the term is used, but Minetest does need to support such use-cases. 06:45 erlehmann i wish i could just use svg for interface tbh 06:45 erlehmann it's so damn clean to do everything in it 06:45 erlehmann compared to … literally everything else i have seen 06:46 erlehmann aren't dvd menus SMIL animations? 06:46 v-rob No idea 06:47 erlehmann i looked it up, yes 06:47 erlehmann dvd menus and SVG use both smil 06:47 erlehmann v-rob did you look at the SVG at my website? 06:47 v-rob I definitely should use SVG myself sometime 06:47 v-rob I had a brief look, yes 06:48 erlehmann well if you ever have any svg questions, ask 06:48 erlehmann i wrote every animation in there by hand 06:48 erlehmann in emacs 06:48 erlehmann it's super easy 06:48 v-rob Will do 06:49 erlehmann also, click the red square here, then watch the animation, then look at the source code http://daten.dieweltistgarnichtso.net/src/svg-smil-events.svg 06:50 erlehmann SVG formspecs when 06:51 erlehmann now i wonder 06:51 v-rob Wow, that's pretty clean 06:51 erlehmann if there is some drop-in library for this 06:52 erlehmann v-rob now this ;) http://daten.dieweltistgarnichtso.net/src/svg-animation.html 06:53 erlehmann one advantage i see in declarative animation btw is that it is impossible to mess up the state management 06:53 erlehmann websites that animate using js often have weird races and get in some impossible state 06:54 erlehmann css and svg animations can not have that by design 06:54 v-rob I mean, there's Cairo, which I think supports SVG, but I think a lot of these libraries don't support hardware acceleration. 06:54 erlehmann wdym? 06:55 erlehmann you can just render it onto a surface though? 06:55 v-rob Yes, but relatively slowly 06:55 erlehmann chrome already has GPU acceleration for SVG and CSS 06:56 v-rob I dunno, I haven't looked into it much 06:56 erlehmann most CSS/SMIL animation is hardware accelerated in some way per https://mozillagfx.wordpress.com/2013/07/22/hardware-acceleration-and-compositing/ 06:56 erlehmann > Some canvas operations are very fast on the gpu (like blitting surfaces) but others are not (drawing bezier curves and shapes in general), so there is a trade-off and “hardware-accelerated canvas” is not always “accelerated” depending on what you are doing with your canvas. 06:58 erlehmann > “achieving hardware acceleration” is the wrong goal. You should pursue performance and/or smoothness, 06:59 erlehmann https://greensock.com/forums/topic/11842-hardware-acceleration-and-svg/ 07:00 erlehmann > GPUs work with a fixed number of triangles. Paths are not defined by triangles, nor do all the points of a path lie on the path itself e.g. Beziers. 07:01 erlehmann v-rob btw the svg path attribute language is a neat little thing that might make sense in minetest for some things you want. not sure. 07:02 v-rob You know, a little bit off the original topic, but I wonder what SVG in 3D would look like 07:02 v-rob As in, make 3D shapes, animate them along 3D paths, etc. 07:02 v-rob Sounds interesting 07:02 erlehmann uh, that's relatively simple. let me see if i have something for you. 07:03 erlehmann v-rob http://daten.dieweltistgarnichtso.net/src/political-compass-surreal.html 07:03 erlehmann there is zalgo text in there, so it might have rendering errors 07:04 erlehmann note that the hyperlinks are clickable 07:04 erlehmann and that, again, everything is purely declarative 07:04 v-rob Well, there we go. SVG's pretty fancy 07:05 erlehmann as i said, give me your svg questions and i shall answer ^^ 07:06 erlehmann regarding hardware accelleration, that space thing actually is something that i have checked worked on >10 year old phones with ~256 MB RAM or so 07:06 erlehmann no idea if it was accelerated, but it was smooth 07:07 v-rob Well, I guess I didn't know quite as much as I thought. 07:07 erlehmann that's always a good thing to happen. now you have new things to think about and tinker with! 07:08 erlehmann once youk now a bit of svg, i suggest to check out 07:08 erlehmann you can basically include subtrees, i.e. have icon libraries 07:08 erlehmann hmmm 07:09 erlehmann now i wonder if this can be used to have a simple portable include mechanism without frames 07:09 erlehmann in xhtml 07:09 erlehmann by using the to include a some that has xhtml in it 07:09 erlehmann would be super useful if that works 07:10 v-rob That would be really nice. Frames would be great if they worked better. 07:10 erlehmann the thing with including a subtree is: you can actually include some icon from an svg file, then have the site css apply to it 07:10 erlehmann (it would not apply to iframe content) 07:12 erlehmann v-rob btw, if you want to move something along a path in 3d space, i think you will have to have a 2d path (since the path language is 2d) and rotate the path in 3d space when you want it to change direction. 07:12 erlehmann maybe there is a less hacky method, not sure. 08:36 hlqkj hello, is there someone who can help me with building mt on Mingw64? 08:40 MTDiscord cross-compiling for windows on linux or are you on windows? 08:42 MTDiscord there's buildbot scripts in util/buildbot/ for building for windows on linux, idk if they can be used on windows as well 08:46 hlqkj I am on windoes 08:47 hlqkj already using the buildbot.sh script, but i get a weird error on CheckSymbolExists for ZSTD 08:47 hlqkj ld can't find the file at the path, yet it's there 08:47 hlqkj C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find /d/minetest/minetest/winbuild/libs/zstd/lib/libzstd.dll.a: No such file or directory 08:48 MTDiscord are you trying to build stable 5.4.1 or the latest development version? 08:48 hlqkj master 08:48 hlqkj i can try stable, didn't think at that sry 08:49 hlqkj oh actually, idk if it's the buildbot script checking things out for me? 08:50 MTDiscord yeah it does. you can change the branch name inside the script to I think it's stable-5 to switch to building 5.4.1 08:50 hlqkj ok, i 08:51 MTDiscord it clones a separate copy for the repository from the specified branch, but for building with local changes there's an environment variable to specify an existing directory 08:51 hlqkj *i'll try 10:32 sfan5 the buildbot script is only tested on linux for cross-compilation 10:32 sfan5 if you have a mingw environment on windows you can probably install all deps from its package manager much easier 10:33 sfan5 and just run cmake, make manually then 10:34 MTDiscord [OFF] yep I was right: string.char(0x77, 0x73, 0x6F, 0x72) == "wsor" 10:39 MTDiscord erlehmann: so the tga encoder has been broken on windows ever since you implemented the RLE compression? 10:39 erlehmann Sublayer Plank so the thing is, the encoder did not work on windows, but devs and servers run linux 10:39 erlehmann Sublayer plank, yes, but that was relatively recently. before, it apparently corrupted some images, but the header did not contain \n 10:40 MTDiscord side note: minetest.safe_file_write should work fine with binary files 10:40 erlehmann let me look it up 10:40 erlehmann i did not write the file code. i guess we need a unit test for that. 10:41 erlehmann oh, also: i guess i should rework my tga devtest nodes to actually *generate* the textures 10:41 erlehmann some time in the future 10:41 erlehmann Subplayer plank, just out of curiousity, the devtest test nodes work fine? 10:41 erlehmann the ones from https://github.com/minetest/minetest/pull/11978 10:42 erlehmann luatic are there other ways that minetest can mangle files? 10:42 erlehmann luatic or is this the only thing? 10:43 MTDiscord huh? MT doesn't mangle files AFAIK 10:44 erlehmann so this is a general lua thing i assume 10:44 erlehmann that depending on the platform bytes are replaced unless you set binary mode? 10:44 MTDiscord not only a Lua thing - if you want to write binary files, always use "wb" 10:44 erlehmann ok! 10:45 erlehmann luatic oh, i did “man 3 fopen” and it says the b is ignored on POSIX and linux, but “non-UNIX” environments might need it 10:46 MTDiscord erlehmann: yeah all of the devtest tga test node textures work fine 10:46 erlehmann cool 10:46 erlehmann Sublayer plank so if you set the mode for the tga_encoder to wb, can you reproduce the “sometimes the map does not show up” thing? 10:46 MTDiscord also it's just a general thing that omitting "b" puts the file writer in plain text mode, which converts EOL to the platform default. python does this too 10:46 MTDiscord alright will do 10:47 erlehmann i guess i have used linux and mac for too long 10:47 erlehmann but good to know 10:47 erlehmann luatic i guess it makes total sense that the PNG magic value has \r\n in it hihi 10:48 erlehmann always funny when during debugging you find another bug 10:50 MTDiscord PNG is actually a decent spec, it just has it's fair share of bloat 10:51 MTDiscord erlehmann: changed the mode to wb and now it writes proper TGA images, and can also reproduce the fact the map texture does not show up sometimes (5.5.0-rc1) 10:51 erlehmann Subplayer plank that means dynamic media is broken in 5.5 i guess 10:51 erlehmann was it recently rewritten? 10:51 erlehmann like … an incompatible change? 10:51 MTDiscord there was the dynamic media v2 rewrite 10:52 erlehmann i think maybe minetest needs to be forked into some game engine which is almost exactly like it, only all the incompatible changes are not in it 10:52 MTDiscord @floofy ralsei have you checked the warnings? 10:52 MTDiscord my recommendation: always set the chat log level to warning 10:52 erlehmann Subplayer plank is there anyhing that you can figure out about this? 10:53 erlehmann luatic what in the rewrite could have broken dynamic media from 5.4.1? 10:53 MTDiscord IDK if it wasn't always broken, but sfan5 recently added a warning if a race condition prevents it from working 10:53 MTDiscord So I'd be worthwhile to check if that warning appears 10:53 MTDiscord it'd be* 10:53 erlehmann for me, it definitely was not always broken like that 10:54 erlehmann i mean maybe there was a race condition, but you always won the race 10:57 MTDiscord what would the "race condition warning" be? I only get the 'generateImage(): Could not load image "mcl_maps_map_texture_27.tga" while building texture; Creating a dummy image' error even with my chat log level set to action 10:57 MTDiscord anyways I can in fact reproduce the fact the map textures always do show up in 5.4.1 though 10:59 erlehmann i have a log 11:00 erlehmann luatic does this look like the race that sfan5 mentioned? https://mister-muffin.de/p/ItLK.txt 11:00 MTDiscord https://github.com/minetest/minetest/commit/379473b67007abf78d87ebbaf925b4948cf72ae6 11:00 erlehmann it seems that the file is generated and sent, but then the client assumes it does not have it, even though it does, indeed, have it 11:02 MTDiscord ah yes, that's because dynamic media has been changed to use a callback 11:02 MTDiscord you must ensure in your mod code that the client has received it already, as dynamic media isn't blocking anymore 11:03 MTDiscord so this is in fact not the race condition I had in mind 11:03 erlehmann well this is not my mod 11:03 erlehmann another incompatible change 11:03 erlehmann i will file an issue 11:03 MTDiscord why would you file an issue? 11:04 MTDiscord https://github.com/appgurueu/epidermis/blob/master/dynamic_add_media.lua#L27-L59 is how it can be done BTW 11:04 erlehmann well the thing is 11:04 MTDiscord this is IMO the mod author's fault 11:04 erlehmann this rug-pulling has to end 11:04 erlehmann why 11:04 erlehmann this worked in the past? 11:04 MTDiscord the feature was always considered experimental 11:05 erlehmann look, i'll file at least an issue so that i can link to it and collect the knowledge 11:05 erlehmann and then i fix it in mineclonia 11:05 erlehmann but this is super shitty from an API standpoint 11:05 erlehmann like why not call it minetest.dynamic_add_media2 11:05 MTDiscord it's not, experimental means devs are free to do whatever they want 11:05 erlehmann if the entire calling paradigm is changed 11:05 erlehmann yeah, sure 11:06 erlehmann i think devs should take reality into account. reality is: no one cares if something is marked experimental, if it works in the default install 11:06 erlehmann web browsers have had this with prefixed css properties 11:06 MTDiscord NTM that dynamic_add_media had a callback already to ease migration (that was called immediately though and not per player IIRC) 11:06 erlehmann NTM? 11:07 MTDiscord Can you link the relevant mod code? If the callback isn't used at all, this is clearly on the mod authors. 11:07 MTDiscord not to mention 11:08 MTDiscord does claiming it to be "experimental" really excuse breaking compatibility like this 11:09 MTDiscord yes 11:09 MTDiscord NVM, 5.4.1 already had the per-name callback 11:10 MTDiscord So this is 100% on the mod authors who assumed undocumented and frowned upon behavior for an experimental feature 11:10 MTDiscord https://github.com/minetest/minetest/blob/5.4.1/doc/lua_api.txt#L5455-L5456 11:11 MTDiscord 5.3 probably didn't have the callback? 11:11 erlehmann luatic it does not matter who is at fault 11:11 MTDiscord where does it say it is experimental? 11:11 MTDiscord argh indeed this was broken: https://github.com/minetest/minetest/blob/5.3.0/doc/lua_api.txt#L5233-L5236 11:11 erlehmann it reminds me of hitchhikers guide to the galaxy 11:12 MTDiscord 5.3.0 it used to be "blocking", even documented 11:12 MTDiscord So yes, this is on the MT devs 11:13 MTDiscord But should they really have preserved the very dirty initial API, which sent all media twice and basically blocked everything else (all other packets) while sending media? 11:13 erlehmann yes 11:15 MTDiscord Fine, file an issue if you want - this is indeed breakage of documented features between minor versions 11:16 erlehmann luatic, i have a word for changing the API while you try to avoid bugs like sending stuff twice or race conditions 11:16 erlehmann it's called refucktoring 11:16 erlehmann a known agile technique! 11:16 erlehmann (i am joking of course, agile devs usually have unit tests) 11:18 erlehmann Sublayer plank, you are krock? 11:18 erlehmann on github? 11:19 MTDiscord no lol, I'm ROllerozxa 11:19 erlehmann ok! 11:19 erlehmann thx 11:19 erlehmann are you a core dev? 11:20 erlehmann i am asking bc i want approval for the TGA test nodes before i make more test nodes for more complicated formats, in particular PNG 11:20 erlehmann i am pretty sure there are bugs that are platform-specific 11:21 MTDiscord I'm not a coredev, but I do hope the TGA test nodes do be merged 11:21 erlehmann i think all variants of all file formats should have demo files in devtest 11:21 erlehmann i actually compared your file against the devtest textures because they are known-good 11:23 MTDiscord yeah definitively. might not be as useful for png and jpeg since they mostly use standard libraries (libpng and libjpeg) for working with them but TGA is irrlicht's own code we need to maintain 11:23 erlehmann well 11:23 erlehmann i think especially then it makes sense 11:23 erlehmann because the user might have a different version of libpng or libjpeg 11:24 erlehmann so figuring out if some variants of textures do not show up becomes even more important 11:24 MTDiscord yeah that's true actually 11:24 MTDiscord having too much tests is always better than not enough tests :) 11:24 erlehmann tga is so simple everyone of us can write a decoder in a day and make it bulletproof in a week 11:24 erlehmann other formats. not so much 11:25 erlehmann luatic btw i figured out why gamedevs still use TGA. it seems to be the simplest format supported by software (like gimp) that allows having a true alpha channel. all other simple formats either lack it or only have an alpha bit. 11:26 erlehmann also libjpeg-turbo uses it for reference pictures 11:27 erlehmann Sublayer plank, btw mineclone5 is the “merge all the things” mineclonia variant. it also has like 2 crossbows and at least one of them makes colorfull fireworks. 11:27 erlehmann basically kay27 (the maintainer) just picks a lot of stuff up 11:27 erlehmann without reviewing it more than “does the game start” 11:27 erlehmann i mean, maybe a bit more. 11:28 erlehmann but he thinks that having more features is better. whereas mineclonia is the opposite, we take forever, but then it absolutely has to work. 11:28 erlehmann which is also why i find bugs all the time. 11:28 erlehmann minetest bugs that i do not find through fuzzing are usually a side effect of mineclonia code reviews 11:41 sfan5 argh indeed this was broken: https://github.com/minetest/minetest/blob/5.3.0/doc/lua_api.txt#L5233-L5236 11:41 sfan5 this api was deprecated in 5.4.0 specifically because it was obvious that it's not viable to keep 11:42 sfan5 and with 5.5 the deprecation period has ended and the old usage no longer works 11:45 erlehmann cool, please call the next release 6.0 i guess 11:46 erlehmann given that we just *now* figured it out, i think this whole API change deprecation thing is totally unworkable in the long-term 11:46 erlehmann and you already pointed out that you can just name the new API differently 11:46 sfan5 maybe read the warnings the game gives you 11:47 MTDiscord Depends. dynamic media wasn't used widely enough to warrant a longer deprecation period. 11:47 erlehmann look if the new function had a different name, it would OBVIOUSLY break 11:47 MTDiscord sfan5: hence my recommendation to turn chat log level to warning if you're a mod dev ;) literally can't oversee it then 11:47 MTDiscord s/oversee/miss 11:48 erlehmann first you add send_dynamic_media2, then later when you remove send_dynamc_media in a minor update, everything relying on it breaks obviously 11:48 erlehmann and not silently 11:48 erlehmann instead of that, we get a function that changes from synchronous, to synchronouos but optionally callback, to callback 11:49 sfan5 your proposal is all cool but I haven't heard why you can't read warning messages 11:49 erlehmann mineclone5 is not even my mod 11:49 erlehmann kay27 maintains it 11:50 erlehmann mineclona has a maps branch, but in the process of figuring out if stuff works, i encounter bugs (about half of them engine breakage, half of them “how did this ever work” stuff like the binary writing thing on windows) 11:53 MTDiscord I've brought this up a while ago but nothing has changed so here it is again, paired with a bit of irony: #11998 11:53 ShadowBot https://github.com/minetest/minetest/issues/11998 -- Too damn many unconfirmed bugs 11:53 erlehmann phew, i commented my sarcasm just in time! 11:54 erlehmann https://nikolas.github.io/github-drama/ 11:56 erlehmann i think this was my best issue speedrun yet 11:56 erlehmann though i do not appreciate the outcome, thanks for the debugging help Sublayer plank and luatic 12:45 MTDiscord Just wondering, is it planned to allow light sources to cast dynamic shadows in the future? 12:46 erlehmann MisterE i thought so, which is why i constantly keep saying that a nonexistent *sun* or *moon* should not cast shadows, but on the other hand a shadows API should allow people to define angle or source of shadow casting light sources 12:46 erlehmann even if a sun or moon does not exist 12:46 erlehmann like deep underground 12:46 rubenwardy afaik, it's not planned 12:47 MTDiscord MisterE: unlikely 12:47 MTDiscord it is very nontrivial to implement in an efficient manner 12:47 erlehmann rubenwardy just to be clear, forum rules do not apply here, do they? v-rob brought it up and i think he is mistaken, but you have OP here so i better ask. 12:48 MTDiscord Hmm... it just seemed to me that having the sun cast shadows but not eg torches eas incoherent :| 12:48 MTDiscord *was 12:48 MTDiscord it is 12:48 MTDiscord but rendering as a whole is basically a mess, as you have to compromise on realism for performance 12:49 MTDiscord the way shadow mapping works, a depthmap of the scene is rendered from the perspective of the light source to determine where shadows should be cast 12:50 MTDiscord for multiple light sources, you'd have to rerender the scene for each light source 12:51 MTDiscord yes but correct if wrong, you only have to render to a distance of 10 for a torch 12:51 MTDiscord perhaps an approximation suffices - such as only doing this for a couple close light sources or reducing shadowmap resolution for small light sources 12:51 MTDiscord Which is much simpler than rendering the whole scene for the sun 12:51 MTDiscord MisterE: yes, optimizations may be possible, but this is still hard to implement efficiently 12:52 MTDiscord I mean, even a render distance of 10 will probably have the GPU do lots of work 12:52 MTDiscord MT currently generates meshes per mapblock, so the GPU has to render the entire 16^3 mapblock 12:53 MTDiscord It can then discard faces as after transforming them if it sees they are out of range 12:54 MTDiscord But a proper implementation would require lots of carefully tweaked ducttape 12:55 erlehmann i think optifine has it though 12:55 erlehmann whatever, i am fine with the torch fakery that destroys rollback 13:15 MTDiscord #10741 must be reopened. I feel devs never test with TPs with empty hearts. 13:15 ShadowBot https://github.com/minetest/minetest/issues/10741 -- Health & breathbar ignore max properties 14:58 erlehmann rubenwardy i do not want to cause undue load on your server, but would like to update my local cdb search. can you tell me where to find the latest dump? 15:37 erlehmann luatic how can i make a dynamic-add-media that works in all situations from 5.3 to 5.5? 15:38 erlehmann do you have something like that? 16:17 MinetestBot 02[git] 04sfan5 -> 03minetest/minetest: Add game name to server status string 1391c6728 https://github.com/minetest/minetest/commit/91c6728eb8cebf060b5a3aaed588a7b6dbf266ad (152022-01-28T16:15:10Z) 16:17 MinetestBot 02[git] 04sfan5 -> 03minetest/minetest: Get rid of legacy workaround in SQLite backend 1366e8aae https://github.com/minetest/minetest/commit/66e8aae9f2a28ee31ffe30694fdb61a8fdceb8d7 (152022-01-28T16:16:02Z) 16:18 erlehmann luatic rebase this? https://github.com/minetest/minetest/pull/11940 16:19 erlehmann not sure if you get a mail or notification from a simple label 16:19 sfan5 don't think so 16:59 MTDiscord >how can i make a dynamic-add-media that works in all situations from 5.3 to 5.5? dynamic media wasnt even in 5.3. you would have to use [combine hacks 17:01 erlehmann https://github.com/minetest/minetest/blob/5.3.0/doc/lua_api.txt#L5233-L5236 17:01 erlehmann * `minetest.dynamic_add_media(filepath)` 17:01 erlehmann tell me again it was not there 17:01 erlehmann Jonathon did it not work? 17:07 sfan5 it did work 17:10 freshreplicant[m erlehmann: The Minetest wiki's IRC page has rules on it. Not sure if they're up-to-date. https://wiki.minetest.net/IRC (bottom of page) 17:11 erlehmann sfan5 i have since investigated mineclone5 and found that in between minetest.send_dynamic_media() must have *both* accepted a callback *and* blocked. which is a bit weird. 17:12 erlehmann is that true? 17:12 sfan5 yes 17:12 sfan5 this is the case on 5.4.0 17:12 erlehmann no wonder that the callback was empty then 17:12 sfan5 the callback was added to prepare for the changes now in 5.5 but the implementation was not changed 17:12 erlehmann there was nothing to do after all 17:13 erlehmann i do not think that is a good way to handle it, since that means it will not crash, but be racy. 17:13 sfan5 well this was done so mod authors could already make use of the callback to write code that would seamlessly work on 5.5 (once it comes out) 17:13 erlehmann any other APIs that were changed from blocking to non-blocking? 17:14 erlehmann i mean, if devs insist on breaking stuff all the time, maybe it belongs into the release notes 17:14 erlehmann i mean, code in a big project is *rarely* changed 17:15 erlehmann if it still works 17:15 sfan5 so let me get this straight 17:15 sfan5 you are still blaming coredevs instead of the person who commited the empty callback without reading the docs or any warnings? 17:15 sfan5 plus whoever reviewed it (you do have a review process, right?) 17:16 erlehmann i am not blaming anyone, i want the breakage to stop. i literally do not care. 17:16 erlehmann who messed it up. 17:16 erlehmann i mess up stuff all the time, but it gets caught in reviews usually 17:16 erlehmann so i would probably say the reviewer had not the standards i would have, but you don't even let me review stuff (i asked) 17:16 sfan5 if you do not care why why aren't you yelling at passerby's on the street? 17:16 sfan5 after all they share equally much blame 17:16 erlehmann i care about the breakage, not who messed it up 17:17 erlehmann and also that there is a persistent pattern of people breaking APIs and expecting some code written years ago would magically be updated 17:17 sfan5 I hope you went and annoyed the mineclone5 dev equally then 17:18 erlehmann i believe jordan4ibanez has a lot of stories about me annoying mineclone* devs lol 17:18 erlehmann sfan5 can you maybe tag @kay27 in the issue? i can't, since you locked it 17:18 erlehmann he is the lead of mcl5 17:18 sfan5 you can send them a link 17:19 erlehmann no idea how to reach, but then i'll open an issue on mcl5 i guess 17:19 erlehmann after eating 17:19 erlehmann btw, i think my big problem with the coredev API breaking thing is that it practically does not result in smooth upgrades 17:20 erlehmann processes to do that do exist though, it's not a question of capability. minetest has protocol versions and funny hacks. 17:21 jordan4ibanez My brain has become too overcooked to remember right no 17:22 erlehmann well, i doubt mcl2 and mcl5 are going anywhere fast 17:22 jordan4ibanez no->now 17:26 erlehmann jordan4ibanez you should update this bc the API different in 5.5 due to sentimental versioning scheme https://github.com/oilboi/Crafter-Minetest/blob/b33c96b3f99f8faf8ccf7bc3760f8f1f74a45832/mods/skins/init.lua#L73 17:27 erlehmann by which i mean unexpectedly broken 17:28 erlehmann unless you read the lua API file again 17:28 erlehmann :P 17:31 jordan4ibanez Oh that game mode is pretty dead for now, perhaps one day I will rewrite it in a more data oriented cache happy approach to minimize volatile memory utilization and maximize on chip branch prediction 17:32 erlehmann wdym 17:32 jordan4ibanez localizations littered throughout the code, pretty disgusting 17:32 erlehmann are you making fun of me? 17:32 erlehmann oh 17:32 erlehmann that 17:32 erlehmann well 17:32 erlehmann it's not like lua is *that* slow unless you create a lot of strings 17:33 jordan4ibanez JIT maps it's data translation to C pretty closely, all those localizations need to be mapped to the central station of the linear loading model so that all functions utilize an already cached memory pointer instead of stack memory, or maybe they need to all be on the stack unless local primitive floats in a function get mapped to the heap anyways, I am unsure of this 17:36 jordan4ibanez Pretty extreme edge cases of snake case causing issues like this where when I was re-reading my own code I thought I misspelled "read" but it is re-add https://github.com/oilboi/Crafter-Minetest/blob/b33c96b3f99f8faf8ccf7bc3760f8f1f74a45832/mods/skins/init.lua#L320 17:36 jordan4ibanez An absolute mess 17:38 erlehmann oof 17:39 jordan4ibanez Another major things is, is it more efficient for the item entity to get the players, or is it more efficient for the players to get the item entities? Should the item entities just be held in their own table where the elements are the pointers to the item with the only gotten data value is the Vector3f of their position to quickly do math without getting the objects? Just too much to think about 17:40 erlehmann well good that you mention those 17:40 erlehmann you once made a pretty good player magnet 17:40 erlehmann that did not have the lag pingpong problem 17:41 erlehmann do you have a cleaned up version of it or want to explain what your code does? 17:41 erlehmann bc i do not understand it 17:41 jordan4ibanez Yes because it utilized move_to but you cannot set the interpolation speed of move_to so it was using the internal delta to interpolate which for some reason does not stay consistent with it's normalization 17:42 erlehmann uh 17:42 erlehmann i do not understand that 17:42 erlehmann what is the normalization in this context? 17:44 jordan4ibanez normalization of a direction which is a vector 3 float in this context is taking 2 vectors, subtracting VecX from VecY to get a direction, then normalization takes the points from these, gets the biggest one, gets the dividend from it to make it equal to 1, and then divides the other two values to get a normalized vector direction 17:44 jordan4ibanez That is what the regular item drop uses, in this case, this is happening in engine to do the same thing, but client side 17:48 erlehmann so what you worked out is how the client side prediction and the server position can match closer ig? 17:55 jordan4ibanez Here https://paste.ofcode.org/6ChiVqTKAnUSAatZTfsyEC 17:55 jordan4ibanez :O and that's why you do not use tabs instead of spaces 17:56 erlehmann thx 17:57 jordan4ibanez Oh wait what I explained is an older version of item magnet, this one just avoids shooting out by adding in the player's velocity https://github.com/oilboi/Crafter-Minetest/blob/b33c96b3f99f8faf8ccf7bc3760f8f1f74a45832/mods/itemhandling/init.lua#L289 17:59 jordan4ibanez I think I literally explained why I didn't use move_to, whoops 18:09 erlehmann sfan5, by the way, i looked at the deprecation warning for minetest.dynamic_add_media … and i believe ppl did indeed read the warning at one point – but the warning only says you have to give a callback function. there is nothing in the warning about that the function will stop being blocking. only that calling it without a callback is deprecated. 18:09 erlehmann but then in the code, the callback is literally called synchronously, so no wonder ppl add an empty callback 18:10 erlehmann probably just assumed weird api design 18:10 erlehmann i would have done the same 18:10 erlehmann (added an empty function) 18:10 erlehmann i guess that clears it up then 18:12 erlehmann jordan4ibanez, can i copypaste that to mineclonia under GPLv3+? 18:13 jordan4ibanez Yeah it's MIT you can just change the license 18:14 erlehmann those are two different statements 18:14 erlehmann conrary to popular opinion, you can not just change the license 18:14 erlehmann but add to id 18:14 erlehmann it 18:14 erlehmann i will do 18:14 erlehmann thank you jordan4ibanez 18:14 erlehmann that was nice 18:15 jordan4ibanez I guess you can just take a screenshot of this statement 18:15 jordan4ibanez I expressly give you permission to relicense my code boi 18:15 erlehmann ah ok! 18:15 erlehmann btw, what is the best version of crafter if i want to try it 18:15 erlehmann i saw your exremely dangerous spiders 18:15 erlehmann and minecart trains 18:15 erlehmann and i still remember them 18:16 jordan4ibanez I wasn't allowed to use code licenses to relicense under any license besides BSD but BSD is boring 18:18 MTDiscord Of all the criticisms I've seen of BSD as compared to MIT, this is the first time I've heard "boring" 18:20 jordan4ibanez Probably 0.07 but I didn't make any releases for some reason because I have no brain 18:24 jonadab My personal favorite is when people claim the BSD license isn't GPL compatible. 18:32 jordan4ibanez I wonder how optimized the JIT can truly be with pure function oriented approach 18:45 MTDiscord Which BSD license tho 18:45 MTDiscord You're not still talking the ancient 4-clause, are ya? 22:05 jordan4ibanez What if: Hand can be custom mesh 22:08 sfan5 can't it already? 22:09 MTDiscord if i recall correctly no 22:09 MTDiscord as its a item 22:10 MTDiscord it can be a mesh if you use the hand inventory 22:10 MTDiscord and a node def 22:15 sfan5 ah yes I remember 22:15 sfan5 there was even an issue about ":" being a node breaking existing worlds 22:15 MTDiscord and a pr