Time Nick Message 03:31 erlehmann how to arbitrarily rotate a texture? 03:31 erlehmann or maybe 45 degree angles 03:31 MTDiscord imagemagick 03:32 erlehmann i meant, in minetest 03:32 erlehmann texture modifiers seem to be stuck in rectangular land 03:32 MTDiscord you rotate it arbitrarily in imagemagick, save it as a new texture file, and then use that one in minetest instead 03:32 erlehmann it's about map markers though 03:33 MTDiscord you can just do all angles up to 90 degrees and then use MT's texture mods for the rest 03:33 erlehmann yeah, uh, i thought of that 03:33 erlehmann and thought, wellllll 03:33 erlehmann 45 degree increments is good enough 03:33 erlehmann bc then i only need 2 textures 03:33 MTDiscord multiples of 90 degrees is the limit of what MT is going to do for you 03:34 MTDiscord arguably I'm not sure I'd want MT to try to do arbitrary rotations because it's surprisingly complex and I've seen too many implementations that don't come out crisp. 03:35 erlehmann minetest and crisp textures, HA-HA 03:35 erlehmann as if, ever 03:35 erlehmann :P 07:57 Gustavo6046 huh, builtin_item is not in contentdb anymore 07:57 Gustavo6046 did TenPlus1 pull it? 08:28 MTDiscord It got unapproved due to license issues 08:59 erlehmann GreenXenith what license issues? 09:00 MTDiscord probably licensed overly permissive 09:02 MTDiscord it's licensed MIT 09:02 erlehmann i don't get it 09:02 MTDiscord if it has code from MT's builtin item, it must be (L)GPLv2.1 though 09:02 erlehmann ohhhh 09:02 erlehmann i see 09:02 MTDiscord From the cdb page it looks cc0; But yeah, overly permissive. 09:03 Gustavo6046 ah 09:04 Gustavo6046 does TenPlus1 not want to relicense it? 09:04 Gustavo6046 I'm ok with relicensing it 09:04 erlehmann https://github.com/minetest/contentdb/issues/362 09:04 Gustavo6046 I did contribute some code to it 09:04 erlehmann Gustavo6046 well what is it based on? 09:04 Gustavo6046 hm? 09:04 Gustavo6046 based on? 09:04 erlehmann is builtin_item based on minetest code? 09:05 Gustavo6046 I'm not aware if it is 09:05 Gustavo6046 maybe 09:05 Gustavo6046 compare older revisions of the code with minetest's builtin_item code 09:05 Gustavo6046 I did do major refactors 09:05 erlehmann where is the git repo 09:05 Gustavo6046 the GPL faulters in trying to determine what *all* derivates of source code would count 09:05 Gustavo6046 erlehmann, it's in notabug 09:05 Gustavo6046 tenplus1/builtin_item 09:06 MTDiscord Gustavo6046: Your refactors were all committed by TP1, ugh 09:06 MTDiscord https://notabug.org/TenPlus1/builtin_item/commits/master?page=1&pageSize=100 09:07 Gustavo6046 yes 09:07 Gustavo6046 they are in pull requests 09:07 Gustavo6046 I think he credited me though 09:07 MTDiscord proper thing to do is just merge the PR though 09:08 MTDiscord here it is: "Items are pushed along by flowing water (thanks to QwertyMine3 and Gustavo6046)", and in the commit message 09:09 MTDiscord TenPlus1: Please use Git properly, commits have an author field for a reason 09:39 Gustavo6046 ah 09:39 Gustavo6046 commits have an author field? 09:39 Gustavo6046 I had made many commits actually 09:39 Gustavo6046 and a pull request 09:39 Gustavo6046 maybe he preferred to do a git squash? 09:42 Gustavo6046 I don't know how that would preserve author information though 09:44 erlehmann anyone who edits git history and does not preserve authorship information needs to go back to git rebase bootcamp 09:45 erlehmann you can see what happens if author information is lost, if you go really far back in minetest! 09:45 erlehmann oh wait, it's accurate 09:45 erlehmann haha 09:46 erlehmann i had remembered that i had botched the hg import at some point 09:47 erlehmann maybe i misremembered … or it got fixed? 09:52 erlehmann oh, at some point commit messages occur twice lol 10:11 MinetestBot 02[git] 04baytuch -> 03minetest/minetest_game: Minor translation refinement for UK and RU langs (Drinking Glass) (#2… 13e02e55f https://github.com/minetest/minetest_game/commit/e02e55fafdb4681864fca1c6479415bfe8512fc9 (152022-02-01T10:09:21Z) 11:33 rubenwardy Preserving authors is basic git ettiquite 11:35 rubenwardy Unfortunately, I have to pull any package with license issues otherwise it can cause me issues 11:39 Gustavo6046 rubenwardy, yes, fair enough 11:39 Gustavo6046 I hope you can figure it out with TenPlus1 :) 11:39 Gustavo6046 I really like builtin_item, and I helped make it better, and I intend to continue helping it get better 11:39 Gustavo6046 It still has a few quirks, but I plan to fix those sometime in the future. 11:39 Gustavo6046 Items seem to float sometimes, which might just be networking lag or something but still 11:40 Gustavo6046 Hmm 11:42 celeron55 erlehmann: looking at the hg->git migrated stuff and the early git work in the MT repository is quite an experience 11:47 Gustavo6046 Anyway, I've been trying nodecore, it's quite interesting so far :) 11:48 Gustavo6046 It reminds me a little of TerraFirmaCraft 13:23 mrkubax10 I have created Polish translation for MTG, how can I send it? Should I create pull request to minetest_game repo? 13:25 MTDiscord Isn't MTG on weblate? 13:25 mrkubax10 ah ok 13:26 MTDiscord https://hosted.weblate.org/projects/minetest/ 13:26 MTDiscord I see a "mod: game internationalization" and it looks like that might actually mean "game: MTG" but I can't say 100% how it's actually used. 13:28 MTDiscord mtg doesnt use weblate 13:28 MTDiscord just make a PR 13:28 mrkubax10 ok 13:31 MTDiscord What is "mod: game internationalization" for then? 13:31 MTDiscord Is there actually a mod for that? 13:31 MTDiscord no idea 13:31 MTDiscord all i know is that translations for mtg have always been pr'd as well as people directed there 13:32 MTDiscord i dont think ive done anything with translation that didnt already have support 13:32 MTDiscord sorry wuzzy 13:32 MTDiscord oh wow, there's actually an external mod to add translations to MTG ... but then MTG started including translations upstream ... and yet they still offer the mod because MTG translations "can be buggy" 13:33 MTDiscord welcome to minetest ™️ 13:33 MTDiscord If MTG has a maintainer now they should probably try to get its translations into weblate properly... 13:35 MTDiscord seems like a feature 13:35 rubenwardy "mod: game internationalizatio" was a mod to translate MTG 13:36 rubenwardy what bugs are they talking about? I don't know of any 13:36 MTDiscord Seems like those efforts really should have been merged. 14:01 MTDiscord mod: game internationalization is basically translation mod for MTG using intllib back before MTG officially supported translation natively 14:02 MTDiscord iirc didn't people asked to just bring the translations over from that mod into the game? 14:07 erlehmann after many years, i made my first forum post! https://forum.minetest.net/viewtopic.php?f=53&t=27760 14:07 erlehmann :D 14:09 rubenwardy screenshake? Rumble is something a gamepad does 14:11 erlehmann rubenwardy, i added the words “XBox compatible Gamepads” to make it clear 14:11 erlehmann i believe the correct name for such a middleware is game haptics router?! but no one uses that phrase 14:11 erlehmann like where your game connects and says: vibrate strenth 5 for 200 ms thank you 14:12 erlehmann and the middleware is doing all the talking to the hardware 14:12 erlehmann like bluetooth or usb or what do i know 14:13 erlehmann rubenwardy, i edited my post again, is it more clear now? 14:13 rubenwardy yeah 14:14 erlehmann sorry i did not even think of screenshake haha 14:14 erlehmann that would be interesting as well though 14:34 MTDiscord Hilariously, you could try player:set_look_dir(player:get_look_dir()) 14:34 MTDiscord MT probably doesn't check to see if those values are already the same, and will probably blindly send a "set look dir" packet to the client. 14:35 MTDiscord It will 14:35 MTDiscord The client will receive this, and set the lookdir to what it was about one round trip ago. 14:35 MTDiscord This should have the effect of creating a (probably small) "jerk" in camera angle 14:37 MTDiscord The effect wouldn't be well-calibrated, or even what you really envision, but the implementation would certainly get a lot of points for sheer irony. 14:37 rubenwardy hax 14:39 MTDiscord extra points for documenting that code with a comment that will only make you confused when you stumble across it 6 months from now while trying to fix an obliquely related bug. 14:44 erlehmann Warr1024 could you please make the counter-book to the rubenwardy book? 14:44 erlehmann i mean you are already nominated for the worst abuse of engine award 2022 14:44 erlehmann hilarious :3 14:45 rubenwardy I think that invector's abuse was so bad that it wins both 2021 and 2022 automatically 14:46 erlehmann guess i have to read the code then 14:46 erlehmann cora today found out how performant ABMs can be 14:47 erlehmann by debugging one that run like 20 times as often as a global step or so 14:47 erlehmann j45 your bubble columns are cursed and you should feel bad for MineClone5 which is suffering from your ABM shenanigans 14:47 erlehmann i did not understand when you were saying “never do i want to touch this code again” 14:47 erlehmann but i now do :D 16:21 MTDiscord the old implementation was more efficient but didnt work quite as well 16:22 MTDiscord and it isnt like mcl5 is super fast without my bubble columns 16:22 erlehmann yeah so 16:22 erlehmann mcl5 is a lagfest but cora is cleaning it up afaik 16:22 MTDiscord cora is trying the old implementation 16:22 MTDiscord (differently to how i did it) 16:23 MTDiscord hurray for cora lol 16:23 erlehmann cora is pretty good at fixing lag 16:24 debiankaios anybody here? 16:24 MTDiscord yes 16:25 debiankaios who can help me with wiki 17:08 MTDiscord @j45 well how did you implement it? I don't see why this would have to be laggy 17:09 MTDiscord i implemented it badly to be frank 17:09 MTDiscord #minetest-docs-irc btw 17:10 erlehmann nodenames = {"group:water"}, 17:10 erlehmann interval = 0.05, 17:10 erlehmann chance = 1, nodenames = {"group:water"}, 17:10 erlehmann sorry copypaste fail 17:11 MTDiscord pretty sure interval < 1s is pointless 17:11 MTDiscord interval = 0.05 shouldn't actually mean interval = 0.05 unless the server is configured to run the global ABM timer at 0.05, which seems pretty footgunny 17:11 MTDiscord I mean clearly the intent of that registration is itself problematic too 17:12 MTDiscord frankly interval=1, chance=1, nodenames = {"group:water"} is plenty bad enough. 17:12 erlehmann look this is all wrong 17:12 erlehmann making it on water 17:12 erlehmann seriously 17:12 MTDiscord amen 17:12 erlehmann nuke it from orbit 17:12 erlehmann it's the only way to be sure 17:13 MTDiscord but you cant only do things with a specific meta value for smt in abms afaik 17:13 erlehmann neighbours though 17:13 MTDiscord I mean I'll do nodenames = {"group:water"} but only with neigbors_invert=true but oh wait MT doesn't actually have that feature ? 17:13 erlehmann what would that do anyway 17:14 MTDiscord neighbors_invert swaps nodenames and neighbors in the registration, then swaps it back within the action. Makes it possible to scan for a common node with rare neighbors but pay only the same cost as scanning for rare nodes with common neighbors. 17:14 MTDiscord Well, that plus a little overhead, but nothing is quite as bad as throwing a neighbor check on top of scanning for a common node. 18:49 erlehmann brink back oerkki bird https://forum.minetest.net/viewtopic.php?p=1719#p1719 19:25 MTDiscord erlehmann, do you have good resources for learning about the dependency issues you talked about in CMake? I'm trying to research this and I'm finding almost nothing. 19:27 erlehmann josiah_wi there is surprisingly little literature regarding it. daniel j bernstein has these notes, from which avery pennarun extrapolated redo: https://cr.yp.to/redo.html i later figured out that djb is writing makefiles in a way that you would only do if you actually had a working implementation of a build system that would avoid specific bugs. 19:28 erlehmann i also talked to him, but he is a bit of a weirdo and never released anything. i later learned that ppl had to pester him for years about which license his software is published under and he was like go away it's public domain, but at that point others had written replacements. haha. 19:28 erlehmann i mean he never released his build system thing, djb released a lot of other stuff. 19:29 erlehmann josiah_wi there is a microsoft paper “build systems a la carte”, which explores the space of build systems, but it is a bit abstract. 19:31 erlehmann josiah_wi there is also alan grosskurths thesis “purely top-down software rebuilding” https://grosskurth.ca/papers/mmath-thesis.pdf 19:31 erlehmann josiah_wi reading the first ~20 pages of the thesis should give you an overview i guess 19:32 MTDiscord Thanks. 19:34 erlehmann josiah_wi there seem to be several big issues at hand: first, most of the (very little) discussion of this stuff is in the community around avery pennarun python-based build system. if you compare grosskurths notes about recursion with pennaruns implementation you realize that pennarun has avoided some hard problems by assuming that a target can only be built once during a “run”, which enables him to topologically s 19:34 erlehmann ort targets, then work on them in parallel. 19:34 erlehmann by this mean is that “a target will only be built once during a built” is – perhaps surprisingly – a constraint that real-world software projects do not have. 19:35 erlehmann and if you introduce it to handle parallel builds, they will be “better fast than correct” 19:36 erlehmann the other issue is that systems that are unable to output dependencies and non-existence dependencies as side effects (like make or cmake) can not ever handle this case. every few years someone tries and figures it out, but i have rarely seen people blog about it. they rather abandon the tool. 19:37 erlehmann it's a bit like when someone coming from xmpp tries to write a matrix bridge. those projects never go very far, because either the ppl adopt matrix or they realize that matrix is not only *really* complex (and necessarily slow), but also changes all the time. 19:38 erlehmann so the big issue here is that build systems that take a dependency tree, topologically sort inputs and then execute jobs can usually not be fixed to produce correct builds *unless* there are absolutely no non-existence dependencies and every target is built at most once per invocation. 19:38 MTDiscord I would like to see a minimal example of a CMake build with a fatal non-existence dependency. I understand what it is now, but I'm completely confused as to how it actually shows up. 19:38 erlehmann (the latter constraint does not apply if you just do not build in parallel) 19:39 erlehmann btw, embedded developers usually side-step this entire issue. they rarely have fallback-paths! 19:39 MTDiscord I can't find anything at all that so much as mentions this issue with CMake, anywhere on the internet. That's impressive, even. 19:39 erlehmann yeah, it's funny. people do not notice them. 19:39 erlehmann very very broadly, every time someone has to type “make clean” or so to rebuild, the build system messed up. 19:40 erlehmann there is a patch for cmake out there that *tries* to handle ne deps, but the author gave up. 19:40 MTDiscord That much makes sense. 19:40 erlehmann surprisingly, that patch is larger than my entire build system. 19:40 erlehmann so regarding embedded devs, i once told mitch altman (the tv-b-gone guy) about this problem and he was like “yes i rebuild everything everywhere, it's not the 80ies anymore” 19:41 erlehmann regarding c code on microcontrollers obv 19:41 erlehmann josiah_wi if you see a project or an organization insisting on rebuilding everything for reproducible builds, they have institutional experience with these kind of build system failures. 19:42 erlehmann ninja btw looks like it can handle some cases of dependencies, but i think it actually special cased c header files or something else that was really weird. 19:42 erlehmann josiah_wi i may have a minimal example for you, but i can only describe it 19:42 erlehmann not setup the cmake thing 19:43 MTDiscord If you do so I can implement it right now. 19:45 erlehmann josiah_wi so you make a c program that depends on some system header and include it with #include foo.h .then you build it. then you decide you want to deliver your own version of that header and put it in the local directory. then you rebuild it. unless you redo from scratch, make should not pick up on this, because this is an ne dep. 19:45 erlehmann funnily enough i have actually heard an (unverified) story from someone 19:45 erlehmann who said they had a gpl system library 19:45 erlehmann but wanted to use the bsd version in the release 19:46 erlehmann to avoid their software to be gpl-ized lol 19:46 erlehmann hehe 19:46 erlehmann josiah_wi does my description suffice? 19:47 MTDiscord Yep. 19:49 erlehmann josiah_wi i also have a less absurd example from the real world. assume you have a build system setup to generate an index page for irc logs or something – files named after a predictable scheme like YYYY-MM-DD.txt. ideally this system would only rebuild index.html when a new page (for the next day) shows up. so you always have a non-existence dependency on the file for the next day. 19:50 erlehmann so with build systems that can not actually represent this relationship (which is most of them), the file gets rebuilt on every invocation. 19:50 erlehmann because what else are you gonna do? 19:50 erlehmann (and yes, there are always horrible hacks that work like 90% or so) 19:51 erlehmann josiah_wi another example is if you have generic build rules for targets that can be superseded by more specific build rules. very often, build systems do not make targets depend on their build rules. 19:51 erlehmann so you get one of two situations: either, every target depends on, say, a makefile. when one rule is changed, everything is rebuild. 19:52 erlehmann or, you have a target built by a generic rule, then you add a more specific rule and the target does not get to be rebuilt. 19:52 erlehmann like imagine you have one rule for all html files and one specific how to build foo.html 19:52 erlehmann josiah_wi was that clear too? i am very sleepy :( 19:53 erlehmann i believe the build rule example is actually a case that you should be able to reproduce in cmake. 19:53 erlehmann if i understand cmake correctly 19:53 erlehmann ohhh 19:54 erlehmann josiah_wi there exists one widespread system that actually can depend on things that are not existing at the point where dependencies are specified: udev 19:54 erlehmann udev rules can be interpreted as a very weird broad class of non-existence dependencies 19:55 erlehmann i mean specification for them 19:55 erlehmann i need sleep 19:56 erlehmann josiah_wi this is probably the microsoft paper https://www.microsoft.com/en-us/research/uploads/prod/2018/03/build-systems.pdf 19:56 erlehmann > Excel is a build system in disguise. 19:56 erlehmann good start, if you ask me 19:57 erlehmann can't get worse, so it only gets better 19:58 erlehmann > To support dynamic dependencies, Excel’s calc engine [Microsoft 2011] is significantly different 19:58 erlehmann > from Make. Excel arranges the cells into a linear sequence, called the calc chain. During the build, 19:58 erlehmann > Excel processes cells in the calc-chain sequence, but if computing a cell C requires the value of a 19:58 erlehmann cell D that has not yet been computed, Excel aborts computation of C, moves D before C in the 19:58 erlehmann > calc chain, and resumes the build starting with D. 20:00 MTDiscord I reproduced your first example, and I see no way to fix it. xD 20:00 MTDiscord Thank you. 20:03 erlehmann josiah_wi oh also very funny: most ppl, if confronted with the existence of non-existence dependencies go through stages of grief or so. like it's almost exactly the same train of thought. 20:04 erlehmann it starts with “this example is an obscure corner case” and ends with “wait, there are a lot of ways you can have an ne dep and my build is probably incorrect, wtf” 20:05 erlehmann josiah_wi if you read the thesis, this is interesting out of historical interest https://web.archive.org/web/20160818124645/http://jdebp.eu./FGA/introduction-to-redo.html