Minetest logo

IRC log for #minetest, 2022-05-16

| Channels | #minetest index | Today | | Google Search | Plaintext

All times shown according to UTC.

Time Nick Message
00:18 riff-IRC joined #minetest
01:38 wallabra_ joined #minetest
02:24 alguien joined #minetest
02:37 riff-IRC joined #minetest
03:13 alguien I'm calling minetest.find_nodes_in_area_under_air in a callback to minetest.emerge_area for random coords, and I always get nothing. But when I TP there, there obviously are nodes under air. What gives?
03:13 fling joined #minetest
03:21 alguien In fact, even if I call minetest.find_nodes_in_area_under_air for an area next to the player, I still get 0 elements back!
03:37 MTDiscord1 joined #minetest
03:41 alguien Is there a group for walkable nodes?
04:00 MTDiscord joined #minetest
04:20 Lesha_Vel joined #minetest
04:23 Alias joined #minetest
04:52 YuGiOhJCJ joined #minetest
05:40 Lesha_Vel joined #minetest
05:42 Elouin joined #minetest
05:42 chilledfrogs joined #minetest
05:43 fossdev2 joined #minetest
05:43 Swift110-mobile joined #minetest
05:46 book` joined #minetest
05:48 ericnoan joined #minetest
05:48 rubenwardy joined #minetest
05:49 eggman joined #minetest
05:49 Teckla joined #minetest
05:49 calcul0n joined #minetest
06:01 TomTom joined #minetest
06:33 comrad joined #minetest
06:33 meldrian joined #minetest
06:33 meldrian joined #minetest
07:43 ___nick___ joined #minetest
08:04 harry-wood joined #minetest
08:09 lemonzest joined #minetest
08:15 alguien joined #minetest
08:16 alguien Just to update anyone who might have been following, I had no luck with find_nodes_in_area_under_air because by default it searches for dirt nodes. Instead I fed it a bunch of groups so it finds whatever
08:16 alguien A bunch of groups because it seems there is no "group:walkable"
08:52 calcul0n alguien, i didn't follow but you could list existing items at startup and define the group yourself
08:53 calcul0n existing nodes in fact
08:53 alguien calcul0n, eh, that doesn't help for my needs
08:53 erle what are your needs?
08:55 alguien erle, identifying nodes one can stand on, but i'm using basic_robot so the code should (ideally) be transient. A custom group would have to be updated every time a new mod is added. Plus even if there were a group "all" it's not the same as "walkable"
08:56 alguien (it's for a random teleporter that I wrote for basic_robots)
08:56 erle you take the task seriously, i admire that
08:56 alguien Thanks
08:57 alguien It's not ideal, right now I'm looking for any of {"group:cracky", "group:crumbly", "group:choppy", "group:water"} under 2 blocks of air at a random location
08:58 alguien But anyway, off to another thing: I don't suppose there's a handy way to access the log via the lua API?
09:01 erle water is not exactly something you can stand on
09:02 erle why would you want to access the log?
09:04 MTDiscord <GoodClover> You could create a group:walkable by looping over node defs and adding it to nodes with walkable=true/false. group:all the same but for every node.
09:04 MTDiscord <GoodClover> In an on_mods_loaded
09:06 alguien erle, when i pick a place, there's a high chance that the surface is water, so i allow random teleportation to dump you into water
09:08 alguien GoodClover: true
09:09 erle GoodClover does the way this API works look good to you? https://git.minetest.land/erlehmann/tga_encoder/src/commit/1f9c446a98c9082ac1083532f8419966773a8f1e/examples.lua
09:10 erle GoodClover also are you aware of the modlib written by luatic?
09:11 erle GoodClover like i wonder if anyone actually wants to do stuff like … save("fractal_24bpp.tga", {color_format="B8G8R8"})
09:11 erle maybe luatic can do the same for PNG some time
09:12 erle hmm, i should probably add a switch to control the pixel order, so the heart does not need to be upside down
09:14 alguien erle, i want to find out where the player's bones are after the fact. Would be nicer if I could just remember it, but I can't have any event triggers, it's basic_robots again
09:14 alguien (and bots other than the admin bot don't automatically start, and don't run after a person leaves an area)
09:14 erle (i will not change the default encoding option, after all it needs to be 100% compatible with existing stuff)
09:15 calcul0n alguien, are you working on a mod working with basic_robot or on robot code?
09:15 calcul0n btw they can be started by a machine signal like a keypad or clock gen
09:15 calcul0n if you also have basic_machines
09:15 Fixer joined #minetest
09:15 alguien calcul0n, i'm working on a quote-unquote mod that the basic_robot is going to run. Not planning on changing basic_robot code nor write a new mod.
09:16 alguien calcul0n, really? I didn't know that. I know they can be started with mesecons
09:16 calcul0n ho, didn't know that too :)
09:18 alguien calcul0n, what kind of signal does a basic_machine clock emit?
09:18 alguien I mean I'm not getting a lot of hits: https://github.com/ac-minetest/basic_robot/search?q=basic_machines
09:18 calcul0n the same as keypad in repeat mode, it just never stops
09:19 alguien heh, optional dependencies: what are those? https://github.com/ac-minetest/basic_robot/blob/master/depends.txt
09:19 erle GoodClover https://content.minetest.net/packages/LMD/modlib/
09:19 alguien calcul0n, no i mean but i thought it only worked with other basic_machines
09:21 calcul0n well machine signals just "activate" stuff, it's a list of predefined actions depending on the node receiving it
09:22 calcul0n for instance they can also turn a furnace on iirc
09:22 alguien calcul0n, just tried it with a clock, works
09:23 alguien (though not when the area unloads, so)
09:23 calcul0n yep, you have to forceload the area for that i guess
09:24 alguien yuck
09:25 alguien but thanks for the explanation of basic_machine clocks
09:25 alguien i guess they do something like the robot's activate.<direction>(1)
09:26 alguien intersting mod, too bad the mover UX is bad
09:27 calcul0n let's say it's not very intuitive :)
09:32 harry-wood joined #minetest
09:35 alguien punch source 1, you punch a 1 appears. So far so good
09:35 alguien punch source 2. -Ehm. source 2?
09:36 alguien You punch source 1 because there's no source 2. The one disappears. No new message appears
09:36 alguien You punch it again, 1 reappears
09:37 alguien Punch target. 2 appears
09:37 alguien okeh
09:38 alguien It's a bit different, but that illustrates the confusion
09:45 calcul0n yeah, that's because 1/2 marks are entities so you must "kill" the 1 before you punch again
09:47 calcul0n but indeed that's confusing
09:50 harry-wood joined #minetest
10:05 appguru joined #minetest
10:36 riff-IRC joined #minetest
10:39 specing joined #minetest
10:41 harry-wood joined #minetest
11:01 definitelya joined #minetest
11:24 riff-IRC joined #minetest
11:24 cation joined #minetest
11:25 debiankaios joined #minetest
12:33 ___nick___ joined #minetest
12:36 ___nick___ joined #minetest
12:43 proller joined #minetest
13:04 Thelie joined #minetest
13:20 proller joined #minetest
13:24 kamdard joined #minetest
13:33 alguien joined #minetest
14:13 orwell96 joined #minetest
14:31 Sven_vB joined #minetest
14:54 fling joined #minetest
15:04 fling_ joined #minetest
15:19 orwell96 joined #minetest
15:48 Fixer_ joined #minetest
15:51 debiankaios joined #minetest
16:05 specing_ joined #minetest
16:10 wallabra_ joined #minetest
16:15 sobkas joined #minetest
16:31 alguien calcul0n, the authort could've made it so that if you hit the 1 again it just skips to set destination
16:33 alguien also I'd've made the second message "Hit the source again or hit something else to set an additional source"
16:36 alguien But it's not just about numbers being entities, it's that sources are both marked "1", and the destination always "2", but the initial message is like "Hit source1, then source2, then destination"
16:36 alguien And since there is no difference in colors of the source1's "1" and source2's "1", that's even more confusing
16:46 erle palette encoding, finally! https://git.minetest.land/erlehmann/tga_encoder/src/branch/master/examples.lua#L104
16:48 Talkless joined #minetest
16:49 erle i meant https://git.minetest.land/erlehmann/tga_encoder/src/commit/45e405982a820c3fb81c11b65350ca7cae2a53e4/examples.lua#L104
16:59 alguien joined #minetest
18:00 Wuzzy joined #minetest
18:16 definitelya joined #minetest
18:17 proller joined #minetest
18:33 ___nick___ joined #minetest
18:35 Verticen joined #minetest
18:36 ___nick___ joined #minetest
19:09 erle luatic anything missing or inaccurate here? https://git.minetest.land/erlehmann/tga_encoder/
19:10 erle the color-mapped encoding is so simple i am surprised i did not do it before
19:10 erle also i have about 150 lines of code that are duplicated in a <500 lines mod, i should clean that up
19:12 harry-wood joined #minetest
19:34 MTDiscord <GoodClover> erle: Looks nice to me :)
19:35 MTDiscord <GoodClover> (The TGA lib)
19:35 MTDiscord <GoodClover> Though I prefer handling disk myself, being enforced to do it via a library is never nice.
19:37 MTDiscord <GoodClover> local bytes = tga.image(pixels):encode() or something
19:39 MTDiscord <GoodClover> oh! turns out :encode is a function!
19:40 MTDiscord <GoodClover> (personally I much prefer a stateless lib, without metatable-d "classes", but that's leaning into bikeshedding)
19:40 erle GoodClover i started with a very simple thing made by fleckenstein. this stuff keeps backwards compatibility with it.
19:40 erle GoodClover do you have any wishes?
19:41 erle except puttting it on cdb, i'll submit it when i'm sure there is not an obvious API wart
19:41 MTDiscord <Warr1024> If you accidentally guess an API function, then that's a sign of an intuitive interface :-)
19:42 MTDiscord <GoodClover> … to end world hunger? ^^ My only thing would be making the :encode()s return the data they produce do I don't have to do a pointless variable dance
19:42 erle i mean except that you can probably shave 150 lines off it because i triplicated the RLE encoder in a copy-paste orgy and better RGBA support in A1R5G5B5 and paletted encoding i don't have any ideas
19:43 erle GoodClover the “pointless variable dance” is reading out the images .data attribute?
19:44 erle i mean saving is basically
19:44 erle local f = assert(io.open(filename, "wb"))
19:44 erle f:write(self.data)
19:44 erle f:close()
19:44 erle end
19:44 erle (ignore the ”end” obv)
19:45 erle GoodClover, is the “pointless variable dance” that the *image* is a variable?
19:45 erle Warr1024 do you see any API warts?
19:45 erle in the examples.lua file
19:49 MTDiscord <GoodClover> file:write(tga:from_table(pixels):encode(format_options)) Is more my style of API, but again, this is pointless debate when the API is already existing
19:50 erle it was existing for a long time before i even made it that far
19:50 erle there are like 4 different mods named tga_encoder out there that all have the usage tga_encoder.image(pixels):save(filename)
19:51 erle they only differ in what they write
19:51 erle (raw vs rle, 24bpp vs 16bpp)
19:51 erle so i thought why not unify it
19:51 MTDiscord <GoodClover> By avoiding the dance I was meaning add return self.data, so image:encode(); f:write(image.data); could be reduced to f:write(image:encode());
19:52 MTDiscord <GoodClover> oh wait, does it encode when you create from the table?
19:52 erle as i said, the default is image(pixels):save(filename, put_encoding_options_here) … i had not thought of any other use case than my own, which are all file-writing-based
19:52 MTDiscord <GoodClover> oh, nope
19:52 erle it used to, but there is a problem
19:53 erle i wanted to retain the same image and encode it in different formats
19:53 erle obviously that means you need to encode on saving and not oncreation
19:53 erle also if you want to edit an image, encoding on saving is obv the more useful thing
19:55 sfan5 so what does tga.image(pixels) do? transform the data in some way?
19:55 MTDiscord <GoodClover> Though it does seem to me like this could've just been once function local bytes = tga.encode(pixels, format_options
19:58 erle the constructor only sets pixels, width, height. just in case anyone wants to play with the pixels before encoding.
19:58 erle as i said, i kept it compatible with the previous onces. i would probably have made a single encoding function that is stateless.
19:59 erle if i had designed it.
20:00 erle then again, i might use this to offer a better in-place editing interface.
20:00 erle anyways, i have no ideas what to do with this except maps, fractals and possibly much better signs.
20:01 MTDiscord <Warr1024> Personally I like the fluent interface
20:02 MTDiscord <Warr1024> I mean ideally anything that's not a getter would return the object and you can then just chain methods, like image(pixels):desaturate():to_palette():save(filename) or something
20:02 erle well it could definitely allow something like “image:scale(2)” or so later
20:03 erle i thought making desaturation and palette separate actions but it does not seem usable
20:03 MTDiscord <Warr1024> It depends
20:03 erle well, internally, mcl_maps actually has a palette of nodes when iterating over the surroundings
20:03 MTDiscord <Warr1024> desaturate sort of makes sense to convert to an 8-bit since grayscale fits anyway
20:03 MTDiscord <Warr1024> unless you allow partial desaturating
20:04 erle well, my desaturation is “save this thing as grayscale”, so obviously it is a bit ham-fisted haha
20:04 erle to_palette() is useless though, for me
20:04 erle because i always want to provide the palette
20:04 erle is there any case where you do not explictly want to give one?
20:04 MTDiscord <Warr1024> Yeah, I mean, gimp has a command it calls "desaturate" where it just removes ALL saturation, but it also has ones where you can play around with the amount of saturation, so partial desaturation is sort of "implied"...
20:05 MTDiscord <Warr1024> I mean to me to_palette() is like an RGBA-to-indexed operation.  Might take options like a palette (or choice of algorithm to generate one) and dithering options.
20:06 erle oh, i see, dithering
20:06 MTDiscord <Warr1024> I suppose at that point it might make sense to just expand this thing into a general image manip library and TGA encoding is just one option.
20:06 alguien joined #minetest
20:06 erle well, i probably won't add any general things that are not directly connected to serialization formats
20:06 MTDiscord <Warr1024> image(pixels):scale(2):rotate(180):to_palette({gen = "octree", dither = "patterned"}):format("tga"):save(file)
20:07 erle that looks disgusting
20:07 erle but i see what you mean
20:08 MTDiscord <Warr1024> If you really want to stick with a very narrow scope of just turning a palette and array of pixels into a targa file, then olive's suggestion starts to make more sense.  Fluent interfaces make more sense when you have enough operations ... it might make more sense to just have a function that takes the pixel inputs and spits out the encoded file content.
20:08 erle i will revisit this mod when i finally get to the map scaling and updating
20:08 erle so i guess then i will need a scale
20:08 erle and an overlay thing
20:09 erle in fact, i will need to scale textures *down*
20:09 erle because the map is always 128×128 pixels
20:09 MTDiscord <Warr1024> If you want to support full image operations but keep scope under control, splitting this into 2 libs might make sense, i.e. one abstract image handling library that wraps some pixels in an "image" object and then just lets you turn one image into another ... and a separate tga encoder that just turns pixels into targa.
20:10 erle well i just made the latter
20:10 MTDiscord <Warr1024> downscaling is a bit trickier, since you have to interpolate then...
20:10 erle downscaling for paletted images in particular
20:10 erle with a given palette
20:10 MTDiscord <Warr1024> Yeah, I guess I'm saying that rather than scope-creep your tga lib to do scaling and such, maybe it's time to spin off a separate project.
20:11 MTDiscord <Warr1024> downscaling with a palette and interpolation sounds like it could be tricky :-)
20:11 MTDiscord <Warr1024> Not necessarily terribly so, but tricky enough
20:13 erle my goal is to have maps not use B5G5R5 (as in mineclone2) or A1R5G5B5 (as in mineclonia) but colormapped bitmaps
20:14 erle because that makes editing as simple as updating a single byte
20:15 erle and also it makes it easier to actually create the thing
20:15 erle but yes, downscaling will be … weird
20:15 erle maybe i'll just stay with A1R5G5B5, no idea.
20:16 erle GloodClover Warr1024 given that you have given me the most feedback so far, what should i address before i submit it to contentdb?
20:19 MTDiscord <Warr1024> I'd say if it works then it's probably worth submitting, and you can always continue to improve the thing after it's released.  There's even a "maintenance state" field you can use to indicate how confident you are that you won't be making breaking changes to the API, i.e. you can still make breaking changes while managing expectations.
20:19 MTDiscord <Warr1024> Getting something published there is actually often a pretty good way to get it the kind of exposure that draws more useful feedback.
20:20 erle i try to *never* make incompatible changes to public APIs
20:21 erle i just think, maybe i am not seeing something here
20:22 erle oh btw, treasure maps. that is one more thing.
20:22 erle treasure maps will be great :)
20:29 erle GoodClover btw, what use cases are there to want to save yourself? using minetest.safe_file_write() or how it is called ig?
20:31 erle GoodClover i will edit my review after having tried your mod again, if i can do that. thank you for improving it!
20:32 riff-IRC joined #minetest
20:47 erle “Please make sure that this package has the right to the names tga_encoder.” – given that it's a drop-in replacement for code i have been improving as part of mineclone2, i'm … pretty sure.
20:55 erle ok, i submitted it! https://content.minetest.net/packages/erlehmann/tga_encoder/
21:00 MTDiscord <Warr1024> Heh, nice, proactively addressed the inevitable issue :-)
21:06 erle Warr1024 well, unfortunately there is something worse to come in the future. after fleck and me had done a lot of work on mcl_maps, kay27 at some point changed it in several incompatible ways, against the advice of literally everyone with knowledge about maps. so mineclone2 and mineclonia mcl_maps now work differently from mineclone5 mcl_maps. i guess i will have the discussion about the name some time later then.
21:07 MTDiscord <Warr1024> I don't think the CDB team has figured out what we should do in cases like those either, tbh.
21:07 erle well, basically everything in mcl5 accumulates incompatible changes over time
21:07 MTDiscord <Warr1024> i.e. where multiple things all had claim to a name in good faith, and then over time they simply drifted apart...
21:08 erle it relates to the desire to stuff new features in existing mods
21:08 erle to ”reduce dependency problems” haha
21:08 MTDiscord <Warr1024> I mean packages are allowed to have incompatible changes with themselves over time, i.e. a package is not required to rename itself simply because they changed certain things...
21:09 erle yeah, but in this case it's literally, like mcl5 maps before a specific date were compatible, after a specific date were not, because kay had … different opinions on how maps should work.
21:09 MTDiscord <Warr1024> The idea was just to discourage everyone for making their own default and throwing dependencies into chaos, but without policing change control across the entire community (which I'm not willing to do and I think few if any others are) there will still be loopholes.
21:10 erle the thing is, the mod has to be called mcl_maps so that i can make one that is largely compatible and can be a drop-in replacement
21:10 MTDiscord <Warr1024> Games, at least have generally gotten a bit of a pass because if they throw a whole mod ecosystem into chaos, it's generally only their own, so they sort of internalize the consequences.  Also because like 80% of the games out there are just more MTG soups...
21:10 erle i.e. my goal is to unfuck mcl5
21:11 MTDiscord <Warr1024> Unfortunately if mcl5's goal is to be ununfuckable, according to the definition of fuckedness you're using, then that's gonna be hard.
21:11 erle well, mcl5 is incompatible to its own earlier versions often enough, so i hope people see that it is very different from mcl2 or mcla if it escalates
21:11 erle it's the ”move fast and break things” style
21:12 erle whereas almost all other games gradually upgrade and do not break compat willy-nilly
21:12 erle i can't really aim for compatibility with mcl5 beyond “probably works, unless it has changed in incompatible ways again”
21:15 erle i think the best thing was how i saw AFCMS do it with mcl_tmp_message or how it was called
21:15 erle AFCMS just made a new mod that had a similar purpose, new name, everything goes
21:15 erle and then updated all the callers to the new mod i think
21:16 erle that way you get zero compatibility problems
21:17 MTDiscord <Warr1024> Well, you're a fork of mcl2, not of mcl5, right?  You can take responsibility for compat with upstream, but not with every "cousin" repo, right?
21:18 erle i will argue that, obviously
21:18 erle on the other hand, someone might argue that kay27 managed to be the first on cdb (with the compatible version of mcl_maps, he changed it much later)
21:19 erle i hope the argument “i managed to submit code to cdb first and then changed it even though the original authors were against it, so i have the right to the name” does not work obv, because that's not a good general rule at all.
21:20 MTDiscord <Warr1024> No, it's not just first on CDB; forum posts made before CDB was a thing (at least) also count.
21:20 erle how about git history
21:20 erle or bug trackers
21:21 erle fleck made mcl_maps, the only issue why he was not the first on cdb is because mcl2 for a long time had no release
21:21 erle so people were using git HEAD to play
21:21 erle (it's better now)
21:21 rubenwardy in that situation, I'd argue that mcl2 owns mcl_maps
21:21 erle good
21:22 erle then i can stop caring about what mcl5 does entirely i guess
21:23 MTDiscord <Warr1024> The reason for the "right to a name" policy is to enforce at least SOME kind of stability over "public interfaces", e.g. APIs, equivalent game functionality, etc.
21:23 MTDiscord <Warr1024> that basically means that you claim a name when you "publicize" it.
21:23 MTDiscord <Warr1024> Git commit history is evidence that something was written, NOT that it was published/publicized.
21:23 erle well “move fast and break things” is a belief in that API stability considerations are holding you back.
21:24 MTDiscord <Warr1024> Arguably just dropping something out on GH is also not really making it "public" in the sense of the broarder community.
21:24 rubenwardy this isn't something I'd considered when writing the policies.   In this case, it's not that someone has independently come up with the mod name, they've forked it and pushed it to CDB first
21:24 MTDiscord <Warr1024> "move fast and break things" isn't about breaking API compatibility, it's just about not letting API compatibility hold you back as much.
21:25 erle look, when kay did the incompatible changes he knew about the arguments, knew the other code, i have even contributed to mcl5 myself to fix mcl_maps issues there.
21:25 MTDiscord <Warr1024> Our stance on the RTAN policy has evolved over time.
21:25 erle RTAN?
21:25 rubenwardy If Mcl2 made a mod called "fishing", took ages to releases, and then a third-party developer make an independent fishing mod - then the independent modder would have the rights
21:25 MTDiscord <Warr1024> Right To A Name
21:25 erle rubenwardy it would of course be mcl_fishing
21:25 erle yeah, my problem is not with unreleased stuff
21:26 erle unreleased stuff can be renamed easily
21:26 rubenwardy yeah, using game namespaces like that helps - and also preempts these issues a lot
21:26 erle but if something is out there, people rely on it working
21:26 MTDiscord <Warr1024> Lately we're trying to strongly encourage authors of games to use unique namespaces for their games unless they're more or less direct copies of an existing thing.
21:26 erle yeah, but this still does not really work well for the mcl5 case
21:27 MTDiscord <Warr1024> So really what kay should have done, ideally, is as soon as they decided to make changes that would break compat, just rename the affected mod(s). to like mcl5_whatever.
21:27 erle i mean it's not malice or so, it's just the belief that compatibility with upstream is unimportant
21:27 MTDiscord <Warr1024> If you don't think that compat is important, then renaming a mod is no problem for you :-)
21:27 erle Warr1024 i think so too. would be the cleanest way.
21:28 erle yeah, the problem is of course that “this is not important” in practice means “i'll do the minimum of work i need to do”
21:28 erle that's always the case in software
21:28 erle in my experience
21:29 MTDiscord <Warr1024> To me, "move fast and break things" doesn't mean you just allow compatibility bugs to pile up, it means you tend toward addressing those bugs by declaring flag days more often than you address them by introducing compat code...
21:30 erle yeah and to others it means “this API is ugly, i'll change it and change all the callers in my repo, screw everyone else”
21:31 erle or even “unknown nodes or items can happen when updating this game/mod”
21:32 MTDiscord <Warr1024> I actually followed a "move fast and break things" philosophy through the early days of NodeCore, but most of the changes have been "internal" APIs (it has no official external API), and things like recipe or process changes, but even today I can still load ancient map backups from the early closed beta server and run them, and they still load and, as far as I can tell, mostly still work the same.
21:33 MTDiscord <Warr1024> Unknown nodes are so easy to solve, though ... just aliases.
21:33 erle hahahaha
21:33 MTDiscord <Warr1024> The easy way to avoid ugly API issues is to shoot for a medium amount of ugliness across everything, so that no single part of it sticks out.
21:33 erle i think you are misunderestimating the stupidity that some people come up with
21:34 erle for example, i recently saw something where an existing name did not really fit the item
21:34 erle i'll keep it vague to protect the guilty
21:34 erle so you have item A with an itemstring that would be better suited for the newly introduced item B (according to someone™)
21:34 erle obviously if you change that, all the users' A items turn into B items
21:35 erle and no amount of aliasing can fix it
21:35 erle my response to that is of course: do not do this, the name is used once, then it is burned.
21:36 erle but if someone thinks it is very important that the itemstring is a meaningful string that must refer to something else instead, they will not be satisfied with that advice.
21:37 erle in general, i have learned that in situations where doing nothing is a proper alternative to something stupid, people really dislike the ”do nothing instead” advice.
21:39 erle (as it was in this case)
21:40 MTDiscord <Warr1024> Oh, right, yeah, discontinuing use of a name does NOT free it up to be used by something else
21:40 MTDiscord <Warr1024> unless you've got some crazy trick you can pull :-)
21:40 erle the person in question had a bunch of ideas
21:41 MTDiscord <Warr1024> As a general rule, if you want to rename B to A and then C to B, then the second rename should fail because the alias you created during the first step blocks it :-D
21:41 erle watching the inventory, converting the items, adding meta to the items
21:41 erle introducing crafting recipes so that A can become B and B can become A
21:41 MTDiscord <Warr1024> The ugliness of that kind of hack has GOT to be worse than the ugliness of a not-so-logical internal name.
21:42 erle obviously
21:42 erle but some people just can't do architecture
21:42 MTDiscord <Warr1024> Well, I did run into a situation where I had 1 node def I needed to change into 2.
21:42 erle they see one wart in the code and then nuke everything to get rid of it
21:42 MTDiscord <Warr1024> NC has tree trunks that cannot be rotated and are falling_node, and logs that can be rotated and are not falling.  It used to have only tree trunks.  I had to replace all trunks in inventories with logs.
21:43 erle well
21:43 erle that doesn't sound stupid
21:43 erle a “stupid” thing for me is an architectural choice that is very hard to recover from
21:44 erle like the ”put everything in one mod” idea
21:44 erle oh, btw, what's also interesting: there are mods on cdb that were pulled into mcl2 and mcl5
21:44 erle or other games, for that matter
21:45 erle like, i wonder if there ever comes a point at which there is a conflict bc of that
21:45 erle the stupidest thing is the mesecons redstone :/
21:45 erle but we are kinda stuck with it
21:49 MTDiscord <Warr1024> If you pull a mod into a game, and either keep the name and compat, or keep neither, then it should all work out (barring, of course, engine problems involving multiple copies of a mod being installed due to e.g. modpacks ... I can't remember if they've worked those out yet 😅)
21:50 MTDiscord <Warr1024> Putting everything into one mod is not necessarily a stupid idea either, as long as you have some kind of plan for breaking it out if things end up expanding more than you thought.
21:52 MTDiscord <Warr1024> NodeCore used to have a HUGE nc_api mod, and then it got broken out into an nc_api base mod, a bunch of ncapi* stuff, and then an nc_api_all that acts like a metapackage for depending on all the ncapi* mods under it, reestablishing the "big ball of mud" interface that the old nc_api monolith offered.  There was no graceful way to do this, but I was in touch with the authors of pretty much all mods for the game (more than half were me)
21:52 MTDiscord and so it wasn't so bad to just manage the flag day by hand.
21:54 MTDiscord <Warr1024> Sometimes you just couldn't anticipate a need well enough in advance.  I prefer to design in a lot of adaptability rather than focusing too hard on anticipating and preparing for specific challenges.
22:00 Sven_vB joined #minetest
22:17 behalebabo joined #minetest
22:28 erle Warr1024 the thing i find stupid is stuff like mcl5 putting the respawn anchor into mcl_beds (because there is a convenient respawn function there)
22:28 erle which obviously means you can not *ever* depend on the respawn anchor (because for many years mcl_beds did not have it)
22:28 erle or putting crying obsidian into mcl_core
22:29 erle i have a solution for that, but it's ugly: make a “shim” mod for such cases that checks if the node or item or function exists, and provides it itself if it does not.
22:30 erle but really, this should not be necessary (and i think many people do either not understand or not care about the dependency issues)
22:32 erle Warr1024 “flag days” are possible if you control everything. it is not possible if people meaningfully interface with your stuff and you can't get hold of everyone.
22:32 erle in any way, i prefer having compatibility shims forever
22:33 erle and if they aren't good enough to keep around forever, they aren't good enough to be used in the first place
22:33 erle (i.e. they are too complex for the problem they solve)
22:34 panwolfram joined #minetest
22:36 specing_ joined #minetest
22:36 MTDiscord <Warr1024> The respawn code being in the bed mod in the first place, instead of being in a separate utilities and APIs mod, seems like a problem that should have been refactored...
22:39 erle Warr1024 you are, again, thinking about the problem from a POV of a person who does software architecture. if you think from the POV of a person who wants THIS FEATURE RIGHT NOW, it all makes sense.
22:40 erle maybe i should play nodecore one day
22:57 MisterE[m] erle: https://m.youtube.com/watch?v=10DQeSk1LaY
23:01 erle MisterE[m] thanks for increasing the hand range so fast. btw, why did you clear the arena in this weird way? is bulk_set_node not good enough or so?
23:02 erle MisterE[m] also it was a fun game, except for the fun-haters who start to build letters. is there a way to vote them out or so?
23:03 erle i was especially impressed when Li0n managed to guess “candle” from someone building up a tower of white wool blocks and then slowly removing them one by one
23:03 MisterE[m] I used set_node 2 commits ago. But that was causing massive lag on a weaker server
23:03 MisterE[m] Yeah, a vote-out system would be good
23:03 erle like those kind of people ruin the entire game
23:04 erle what i have been successful with is the rule “30% of the people in the group, but at least 3” to be enough to kick someone out
23:04 erle (of a groupchat, mostly)
23:04 erle like if you manage to piss off 3 people in such a small game, it does not matter what you did, you need to go
23:05 MisterE[m] I think 50% may be better
23:05 MisterE[m] But at least 3
23:05 erle doesn't work from my experience to actually require half or a majority
23:05 erle i copied the idea of the qualified minority from ”natural selection”
23:05 MisterE[m] I don't want poeple being mean with it...
23:06 erle hahaha this reminds me when Li0n and me and someone else played on a server with votekick (in another game) and kept it to ourselves, by votekicking every new arrival
23:06 erle until the admin came and we got banned hehe
23:06 MisterE[m] This is why
23:07 erle yeah, but the thing is
23:07 erle this is rare
23:07 MisterE[m] * this is why we can't have nice things XD
23:07 erle btw, did you test if bulk_set_node() was slow too? i mean, set_node() individually is, i know that.
23:07 erle and if it is slow, do you have any on_construct or on_destruct that is relevant?
23:08 erle or is it just naturally slow?
23:08 erle i mean the volume is not even that big
23:08 erle like i don't get why it *has* to be slow
23:09 MisterE[m] No, I unfortunately don't have a lot of time to split among my plethora of projects. So I do a 'if it works, don't fix it' approach often
23:10 MisterE[m] I was useing setnode over the entire inner area
23:10 MisterE[m] That caused massive lag on aes (but not on MG)
23:11 MisterE[m] So when I moved, I was forced to come up with something else.
23:12 MisterE[m] I had used tracking what nodes are changed and repairing them for gems, after placing a huge schem froze MG
23:13 MisterE[m] So I knew that that approch worked
23:13 MisterE[m] And bc ppl were playing and lagging aes, that was quickest to implement
23:14 MisterE[m] Hey erle, if you are interested, I would entertain PRs for improving the minigames
23:15 MisterE[m] Since you seem to be interested enough to read the code :)
23:16 MisterE[m] just for quikbild, sumo, gems, balloonbop, and wormball, those are the oly ones I have control of
23:16 erle so far i only play kwikbild
23:18 MisterE[m] My next focus for improvement is gems tho, I think. Its currently the worst of the bunch
23:18 MisterE[m] Some people like it, but there are serious problems,
23:18 MisterE[m] .
23:20 Cork joined #minetest
23:20 Sven_vB joined #minetest
23:58 Cork joined #minetest

| Channels | #minetest index | Today | | Google Search | Plaintext