Luanti logo

IRC log for #luanti-dev, 2025-06-27

| Channels | #luanti-dev index | Today | | Google Search | Plaintext

All times shown according to UTC.

Time Nick Message
00:10 fluxionary joined #luanti-dev
00:35 YuGiOhJCJ joined #luanti-dev
01:38 MTDiscord <exe_virus> Why is this a std map?       std::map<v3s16, BlockEmergeData> m_blocks_enqueued;  This is in EmergeManager - not seeing the value in being ordered - small perf gain
02:14 fluxionary joined #luanti-dev
02:25 repetitivestrain joined #luanti-dev
03:15 v-rob joined #luanti-dev
03:24 alias joined #luanti-dev
04:00 MTDiscord joined #luanti-dev
06:14 fluxionary joined #luanti-dev
07:14 SFENCE_arch joined #luanti-dev
09:48 TenPlus1 joined #luanti-dev
10:51 sfan5 hoping we can get #16289 in for 5.13 to ease future changes
10:51 ShadowBot https://github.com/luanti-org/luanti/issues/16289 -- Add core.get_mapgen_chunksize() by sfan5
10:58 MTDiscord <the4spaceconstants2181> #1
10:58 ShadowBot https://github.com/luanti-org/luanti/issues/1 -- GlowStone code by anonymousAwesome
11:29 sfan5 also do we really not have comparison operators or helper functions for vectors in Lua?
11:36 MTDiscord <the4spaceconstants2181> not in lua vectors aren't even part of lua but we have vector in luanti
11:44 [MatrxMT] <Zughy> #14135 too please, we've been postponing it since 5.10 and it can be very useful for modders..
11:44 ShadowBot https://github.com/luanti-org/luanti/issues/14135 -- Add persistent unique identifiers for objects by sfence
11:54 MTDiscord <the4spaceconstants2181> yeah I had to make this myself
13:12 SFENCE_arch joined #luanti-dev
14:06 SFENCE joined #luanti-dev
14:38 SFENCE joined #luanti-dev
14:41 SFENCE joined #luanti-dev
14:45 SFENCE joined #luanti-dev
14:57 v-rob joined #luanti-dev
14:57 SFENCE joined #luanti-dev
15:07 SFENCE joined #luanti-dev
15:15 SFENCE joined #luanti-dev
15:19 tibtoblezob joined #luanti-dev
15:34 SFENCE joined #luanti-dev
15:36 [MatrxMT] <repetitivestrain> Hmm, am I missing anything or why is it not feasible to assign entities UIDs by yourself?
15:40 MTDiscord <wsor4035> you can, but your limited to engine scope/api. if you wanted to get and modify a non active entity iirc you cant do that
15:40 [MatrxMT] <repetitivestrain> Does this branch enable you to load unloaded entities?
15:41 [MatrxMT] <repetitivestrain> a global entity index, as it were
15:41 MTDiscord <wsor4035> its been done as a mod before (no idea if this one is any good, fastest one i could find) https://content.luanti.org/packages/zeuner/mtobjid/
15:41 MTDiscord <wsor4035> no
15:41 [MatrxMT] <repetitivestrain> There you have it then
15:41 MTDiscord <wsor4035> i just used the non active entity thing as a an example
15:41 MTDiscord <wsor4035> have what?
15:42 [MatrxMT] <repetitivestrain> Mineclonia has a number of makeshift systems for entities that really require UIDs
15:42 [MatrxMT] <repetitivestrain> It's a figure of speech which suggests that someone's point has been communicated
15:42 [MatrxMT] <repetitivestrain> But does this branch actually provide this functionality?
15:43 MTDiscord <wsor4035> https://irc.luanti.org/luanti-dev/2025-06-27#i_6268936
15:43 [MatrxMT] <repetitivestrain> Well then I fail to see how this argument is material
15:44 [MatrxMT] <repetitivestrain> as UIDs in their present condition hold no advantages over existing systems
15:45 MTDiscord <wsor4035> of which i said in my first response.
15:45 [MatrxMT] <repetitivestrain> and for most objects they would be redundant to begin with, such as sign text, chest visuals, etc.
15:46 MTDiscord <wsor4035> im not the pr author, but its useful for two reasons currently, engine provided api so you dont have to reimplement it yourself, depend on some mod, etc. and its a building block potentially for expanded functionality
15:46 MTDiscord <wsor4035> *seems usefule
15:47 [MatrxMT] <repetitivestrain> It ought at least to be optional
15:47 MTDiscord <wsor4035> ....why?
15:49 MTDiscord <wsor4035> (absurd example to make a point) its not like this is the engine assuming all nodes should be red or something. that i would agree should be optional. this is just an api, if you dont want it, dont use it
15:51 [MatrxMT] <repetitivestrain> Why would a completely ephemeral entity, say, an arrow, require a UID?
15:51 [MatrxMT] <repetitivestrain> Occupying more resources in the map database and in memory?
15:52 [MatrxMT] <grorp> re useless for signs, chest visuals: actually it might be useful, instead of doing get_objects_in_radius every time to find those entities, you could store their GUID in node metadata and get them from the global lookup table
15:52 [MatrxMT] <repetitivestrain> or dropped items, of which there could literally exist several dozens in a single mapblock
15:52 MTDiscord <wsor4035> by that logic, why support say (any feature), it just takes up more resources and memory
15:52 [MatrxMT] <repetitivestrain> these entities are not persistent to begin with, I think
15:53 sfan5 if you cannot afford 16 additional bytes per entity I suggest switching to a different engine
15:53 MTDiscord <wsor4035> i would agree if it was expensive/wasteful, but from a brief looking at the pr, that doesnt seem to be the case
15:53 [MatrxMT] <repetitivestrain> No, that's a non sequitur
15:53 sfan5 or better yet write your own to work on constrained hardware
15:53 [MatrxMT] <repetitivestrain> Features whose utility is only important in specialized circumstances should be optional
15:54 [MatrxMT] <grorp> I don't think storage/memory is a concern here, it's just 16 bytes
15:54 [MatrxMT] <repetitivestrain> Arrows, item entities, and non static_save objects generally don't need UUIDs and are the lion's share of objects on a server
15:55 [MatrxMT] <grorp> It would be more complexity to make it optional, how is that complexity justified?
15:55 [MatrxMT] <repetitivestrain> So why waste this perfectly good storage?  Even if it's only 16 bytes per entity
15:55 MTDiscord <wsor4035> grorp just ninjad me
15:55 [MatrxMT] <repetitivestrain> It is justified in that it keeps a redundant feature from getting in my hair, and that it isn't very great
15:56 sfan5 wait how exactly does this feature obstruct you?
15:56 MTDiscord <wsor4035> it wont be in your hair if you just dont use it lol
15:56 sfan5 actually nevermind I'll stop wasting time and instead construct the new table I bought
15:56 [MatrxMT] <repetitivestrain> It'll probably alter the mapblock format
15:56 [MatrxMT] <repetitivestrain> Consequently I need to update my fork of the old Java mapserver
15:57 MTDiscord <wsor4035> sfan5, good point, i also have better things to do
15:57 [MatrxMT] <repetitivestrain> Anyway, why not assign particles UIDs too as Minecraft does
15:58 [MatrxMT] <repetitivestrain> since it's so imperative that everything should be globally and uniquely indexable
16:00 SFENCE joined #luanti-dev
16:11 SFENCE joined #luanti-dev
16:15 MTDiscord <jordan4ibanez> If you are concerned about memory, minecraft is a very bad example lol
16:16 [MatrxMT] <repetitivestrain> That's my point
16:17 MTDiscord <jordan4ibanez> Darn, now I have to read
16:19 MTDiscord <jordan4ibanez> Okay so we have no access to particle entities in the lua api at all, I do not see why this was brought up
16:20 MTDiscord <jordan4ibanez> Secondly, I do not know why you are concerned about this being optional. Is your game bouncing against the 1024mb limit?
16:21 MTDiscord <jordan4ibanez> Thirdly, it seems like this is actually a computation improvement at the cost of memory
16:22 [MatrxMT] <repetitivestrain> I simply don't see the necessity in assigning UUIDs to every entity, particularly entities that play much the same part as long-lasting particles
16:22 MTDiscord <jordan4ibanez> You might actually see a bigger difference in memory limiting the map generation threads to 1 than you would with this feature and particle entities having a uuid that you can index in a csm
16:23 MTDiscord <jordan4ibanez> That is okay, you do not need to see it. There are many components of the engine that I do not see on a daily basis. All you should know is that it is improving runtime performance
16:24 [MatrxMT] <repetitivestrain> How is it improving runtime performance?
16:24 [MatrxMT] <repetitivestrain> What are you on my dear friend
16:25 [MatrxMT] <repetitivestrain> And the default emerge thread setting is 1
16:30 MTDiscord <jordan4ibanez> Well first of all, you are being quite rude now.   Secondly let's see here, for example https://github.com/luanti-org/luanti/issues/5012 orwell maintains adv trains, adv trains uses entities to the extreme. I actually now see around 50-70 uses for this in crafter, within the translated components alone. So I do appreciate you complaining and whining about this or else I would have never seen this.   Thirdly, it is improving runtime
16:30 MTDiscord performance because I can get an entity by it's UUID instead of scanning or holding an object reference to something that might not exist and having to check if it still exists every time.  Fourthly, that is fantastic, but that does not mean you are using the stock settings.   Fifthly, as grorp said, if you are having an issue with 16 bytes of data then having 1000 entities spawned into the world is using 16kb of data. Do you happen to be running
16:30 MTDiscord windows 98 se?
16:32 [MatrxMT] <repetitivestrain> If you have applications in mind for such a feature, you can enable it for your objects, but it is simply not necessary to enable it by default, if only because most objects do not require identifiers or even remain existent across loads
16:33 [MatrxMT] <repetitivestrain> and if it were actually 16kb my reaction would be far more frantic
16:34 [MatrxMT] <repetitivestrain> on the average mineclonia server, most objects are item entities, followed by mobs
16:34 [MatrxMT] <repetitivestrain> Of the mobs only participants in raids or jockeys require UUIDs, and item entities do not at all
16:36 [MatrxMT] <repetitivestrain> > <@blocknerdgamesmatterbridge:matrix.org> <MTDiscord> performance because I can get an entity by it's UUID instead of scanning or holding an object reference to something that might not exist and having to check if it still exists every time.  Fourthly, that is fantastic, but that does not mean you are using the stock settings.   Fifthly, as grorp said, if you are having an issue with 16 bytes of data then having 1000 entitie
16:36 [MatrxMT] <repetitivestrain> If you have applications in mind for such a feature, you can enable it for your objects, but it is simply not necessary to enable it by default, if only because most objects do not require identifiers or even remain in existence across loads
16:37 [MatrxMT] <repetitivestrain> mobs and players, too, may have entities attached such as wielditems, or eyeballs with glow=14
16:37 [MatrxMT] <repetitivestrain> Why would these need UUIDs?
16:37 [MatrxMT] <repetitivestrain> or even to appear in get_objects_in_area?
16:37 MTDiscord <jordan4ibanez> Okay so because you think that this should not be enabled by default, we should stop mod developers from having access to this important feature? If you have to opt in that means that you have added in another layer of complexity to what is already a pretty complex system to learn by default
16:37 [MatrxMT] <repetitivestrain> When did I propose this?
16:37 [MatrxMT] <repetitivestrain> I only proposed that the feature be disabled by default
16:38 MTDiscord <jordan4ibanez> You just keep talking about it. Don't enable this by default. It's still going to exist in the background. You could just ignore it. I think you're losing more memory with every message that gets sent to your irc client than you will ever notice during runtime with every entity having this feature enabled
16:38 [MatrxMT] <repetitivestrain> Which is not "denying mod developers this important feature" in any sense of the word, nevermind that this feature is already trivial to implement with a pair of on_(de)activate callbacks and a UUID generator
16:38 MTDiscord <jordan4ibanez> Well it sure seems like you are
16:39 MTDiscord <jordan4ibanez> Basically what I am seeing is: Make this optional or don't add it in. It's not going to be optional
16:39 MTDiscord <jordan4ibanez> That is another feature, another layer of complexity, on top of a new feature, that has to be maintained
16:40 [MatrxMT] <repetitivestrain> Don't exaggerate to make a point and then you might actually sound persuasive
16:40 MTDiscord <jordan4ibanez> Same to you
16:40 [MatrxMT] <repetitivestrain> I am not exaggerating
16:40 [MatrxMT] <repetitivestrain> It is not very complex, and it is not universally necessary
16:41 [MatrxMT] <repetitivestrain> Therefore it shouldn't be enabled by default
16:41 [MatrxMT] <repetitivestrain> It is equally absurd as assigning particles UUIDs
16:41 [MatrxMT] <repetitivestrain> It is not very complex, but it is not universally necessary
16:43 MTDiscord <jordan4ibanez> You know how grorp said this: "<grorp> re useless for signs, chest visuals: actually it might be useful, instead of doing get_objects_in_radius every time to find those entities, you could store their GUID in node metadata and get them from the global lookup table"
16:43 MTDiscord <jordan4ibanez> https://codeberg.org/mineclonia/mineclonia/src/branch/main/mods/ITEMS/mcl_signs/init.lua#L328 I know this because I just rebuilt a predecessor to your mod, it could use this very feature
16:44 [MatrxMT] <repetitivestrain> No it doesn't, since signs are not saved to begin with
16:44 MTDiscord <jordan4ibanez> Yes, but, they could be
16:45 [MatrxMT] <repetitivestrain> Why should they?
16:45 [MatrxMT] <repetitivestrain> Sign entities are _temporary_
16:45 MTDiscord <jordan4ibanez> You're using more processing power having them regenerate every time. Every time that chunk gets unloaded you must regenerate a new entity in memory. It could be persistent data
16:46 MTDiscord <jordan4ibanez> If you have a lot of signs, you have to regenerate them all. They could be saving their texture modifiers
16:47 [MatrxMT] <repetitivestrain> that's negligible given the number of signs that actually exist at any point in time
16:48 [MatrxMT] <repetitivestrain> But this is a matter of principle: why assign UUIDs to entities that could as easily be particles
16:49 MTDiscord <jordan4ibanez> My honest question is: Why hasn't this been added already? Maybe we should be adding this first before we talk about making it optional
16:52 [MatrxMT] <repetitivestrain> Or maybe people should ask why it is necessary to introduce what already exists, and force it upon everyone: https://codeberg.org/mineclonia/mineclonia/src/branch/raid_mechanics_rewrite/mods/ENVIRONMENT/mcl_raids/init.lua#L188
16:53 MTDiscord <jordan4ibanez> Ohhhh, you are just angry that you spent the time on it and it feels like a slap in the face that now everyone gets it by default
16:53 MTDiscord <jordan4ibanez> I understand now, thank you
16:54 [MatrxMT] <repetitivestrain> No, but that's a very peculiar assessment I've never heard before
16:56 [MatrxMT] <repetitivestrain> It would be infinitely more useful to have a place_schematic available in async environments, or a functioning VoxelManip:update_liquids, but instead the engine receives new facilities that are mostly redundant while existing features, which are never exercised, continue to languish
16:58 [MatrxMT] <repetitivestrain> Simple example: trying to add liquids to the transformation queue in an async environment is impossible, because VMs copied into these environments don't receive their own transformation queues, as those in mapgen environments do
16:59 [MatrxMT] <repetitivestrain> I forgot whether they crash or liquids simply aren't transformed, but that's .5 ms for every column of mapblocks that are processed
17:00 [MatrxMT] <repetitivestrain> or where async environment auto-scaling rapidly inflates memory consumption by creating dozens of threads when a server has been idling for some time and has been swapped
17:00 [MatrxMT] <repetitivestrain> Again, almost as though core.handle_async is never used
17:00 [MatrxMT] <repetitivestrain> or utilized extensively
17:02 [MatrxMT] <repetitivestrain> or where async environment auto-scaling rapidly inflates memory consumption by creating dozens of threads when a server has been idling for some time, has been swapped, and an existing async environment hangs waiting for I/O
17:07 fluxionary joined #luanti-dev
17:14 sfan5 ok the table is done, have we reached a conclusion?
17:15 [MatrxMT] <repetitivestrain> Not really
17:16 [MatrxMT] <repetitivestrain> I just stand by my words that it comes off as redundant to enable it by default
17:16 [MatrxMT] <repetitivestrain> almost Minecraft-ish in the undesirable sense of the word
17:16 [MatrxMT] <repetitivestrain> where even particles receive UUIDs
17:17 sfan5 I suspect nobody agreed
17:17 sfan5 agrees*
17:18 [MatrxMT] <repetitivestrain> btw could you answer my heightmap-related question?
17:18 lhofhansl joined #luanti-dev
17:18 [MatrxMT] <repetitivestrain> is it impossible for Lua mapgens to provide an engine heightmap at the moment?
17:19 [MatrxMT] <repetitivestrain> I am encountering some very peculiar lighting issues that come down to the engine's assuming that nodes above the default singlenode sea level are exposed to sunlight
17:31 sfan5 call it rude if you want but I am not in the mood to answer questions from someone who rants about features I have worked heavily on
17:32 sfan5 I'd rather not have people spit on my work
17:32 lhofhansl Merging #16288 is a few
17:32 ShadowBot https://github.com/luanti-org/luanti/issues/16288 -- Use MapBlock::copyTo to fill MeshMakeData by lhofhansl
17:36 lhofhansl And... Done.
17:38 lhofhansl By the way I closed #16152 for now. I cannot possibly prove that we have no multi-threading bugs in accessing MapBlocks.
17:38 ShadowBot https://github.com/luanti-org/luanti/issues/16152 -- Monoblocks: optimize blocks that contain a single type of node by lhofhansl
17:42 sfan5 manual code review works :)
17:42 sfan5 we might want to revisit that PR later
17:44 lhofhansl Maybe I'll leave it open, can always close later. :)
17:46 lhofhansl The only use of MapBlock::getData is now in test code, I intent to change the test code and then remove MapBlock::getData altogether (it's a bad abstraction leak IMHO). Any concerns?
17:48 lhofhansl Hmm... I force pushed into the mono-block branch before I re-opened, now it seems I can't reopen the PR. :(
17:51 lhofhansl I'll open a new one.
20:08 lhofhansl joined #luanti-dev
21:07 tibtoblezob joined #luanti-dev
21:27 MTDiscord <exe_virus> I'll jump in on the UUID discussion:  1. Same memory usage either way, arguably more if you push that work to Lua.  2. Fair on the whole temporary entity thing, but if they're that temporary, we should just make particles better, then all entities are ones that need unique IDs.   3. Fair on the other features stuff, but as with all things open source, progress happens in lots of random places, and often core issues never are fixed, or
21:27 MTDiscord long in coming.  4. Most importantly: good APIs built-in are always great. They help reduce the problem of that XKCD and the competing standards thing.
21:59 SFENCE joined #luanti-dev
22:02 SFENCE joined #luanti-dev
22:31 SFENCE joined #luanti-dev
22:33 panwolfram joined #luanti-dev
22:44 MTDiscord <the4spaceconstants2181> should particles be pointable? (also do particles have mesh and node drawtypes or drawtypes at all I can't really look at the docs right now)
22:48 cheapie AFAIK particles are just always sprites like in pretty much any other game, for the most part they're best for things like smoke effects
22:55 MTDiscord <jordan4ibanez> It would be kinda cool if we could do little cube sprites like vintage story to layer in effects
22:56 MTDiscord <jordan4ibanez> No rush though, it's just an idea
23:02 cheapie Do you have a picture/video of that effect? I'm curious now but I'm not familiar with that game(?) and searching isn't helping much with the effect
23:05 Eragon joined #luanti-dev
23:16 MTDiscord joined #luanti-dev
23:45 MTDiscord1 joined #luanti-dev
23:48 MTDiscord1 <jordan4ibanez> Oh sorry cheapie, I got distracted by my horrific code, one second
23:50 MTDiscord <jordan4ibanez> cheapie: https://youtu.be/tkq0tIX22WY&amp;t=138
23:53 MTDiscord <jordan4ibanez> Okay so that's a really old version, but it shows you the effect completely by itself
23:54 cheapie I see... yeah, I'm not aware of any way to do that in Luanti (short of spawning a ton of entities) but you could probably do a mediocre approximation with the particle system
23:56 MTDiscord <jordan4ibanez> Okay you ready? So this is the blended mixture of particles: https://youtu.be/qV4ZLkug1n4&amp;t=387
23:57 MTDiscord <jordan4ibanez> This is what I was referring to. You can give it some interesting texture

| Channels | #luanti-dev index | Today | | Google Search | Plaintext