Time |
Nick |
Message |
00:13 |
hmmmm |
<rubenwardy> I believe we decided on a cutoff of high end 12 years ago I guess this is reasonable |
00:14 |
hmmmm |
removing features just reminds me of nightmares where i needed that feature, and then it has dependencies that require the old version as well... but wait, those don't build because of some other dependencies that broke along the way... but you can't compile a couple of those dependencies because they require an older compiler... et cetera |
00:14 |
hmmmm |
you need to recreate the entire toolchain from that era to effectively get what you need back |
00:15 |
hmmmm |
for some applications it's harder, sure, (e.g. try building an old version of Chromium to practice exploit development, it's an adventure all by itself) |
00:16 |
hmmmm |
it sucks that voxelland is dead because that would have filled the niche i am describing |
00:16 |
hmmmm |
but yeh most people who would play minetest probably aren't using intel gma graphics anymore |
00:18 |
hmmmm |
kinda wonder if any of this matters since somebody's gonna come along and rewrite minetest in rust |
00:18 |
hmmmm |
lmfao |
00:27 |
rubenwardy |
win32 is often used to play very old games for this reason |
00:27 |
rubenwardy |
it doesn't break much |
00:28 |
hmmmm |
well how about a compromise |
00:28 |
hmmmm |
can somebody start creating/maintaining docker images with old stable releases installed? |
00:29 |
schwarzwald[m] |
I'm awed that people have the time and dedication to maintain a project like this as is. If someone came and rewrote the thing to the same quality in Rust I would be mindblown. |
00:30 |
hmmmm |
ohhhh you don't understand the depth of some peoples' obsession with rust |
00:31 |
rubenwardy |
It doesn't have the same goals, but Veloren exists |
00:31 |
schwarzwald[m] |
Someday people will hate Rust. |
00:32 |
schwarzwald[m] |
Well, maybe not... I don't know anyone who hates C, come to think of it. |
00:33 |
rubenwardy |
Hate is a strong emotion |
00:33 |
hmmmm |
i hate rust |
00:34 |
rubenwardy |
Try wk40 |
00:34 |
rubenwardy |
*wd40 |
00:34 |
hmmmm |
but i sorta have to deal with it because the writing's on the wall with linux's adoption of it |
00:35 |
rubenwardy |
I haven't had much opportunity to use it but I've enjoyed what I've seen |
00:36 |
MTDiscord |
<savilli> I believe that minetest will be replaced with other voxel engine written in Rust rather than someone will rewrite it |
00:36 |
MTDiscord |
<savilli> It has too much legacy |
00:36 |
hmmmm |
minetest IS the voxel engine |
00:36 |
MTDiscord |
<savilli> Yup, a voxel engine that will die one day |
00:37 |
hmmmm |
but the games live on? |
00:38 |
MTDiscord |
<savilli> Nice of them will be rewritten for other engine |
00:38 |
hmmmm |
yeah i could see that, but the way the API works might force the engine to work in a specific manner |
00:38 |
MTDiscord |
<savilli> Or someone will bother to add a compat layer |
00:38 |
MTDiscord |
<savilli> How many minetest games in active development do you know? |
00:38 |
hmmmm |
not even a slightest clue |
00:39 |
hmmmm |
the number of revisions i've made to the schematic format was like... 4... yet it required a ton of compatibility support |
00:39 |
MTDiscord |
<savilli> Their live cycle is rather small |
00:39 |
MTDiscord |
<savilli> *life |
00:39 |
hmmmm |
it's likely that it would just be recreated using the new api for the new game engine than imported over |
00:40 |
MTDiscord |
<savilli> One day, people will consider engines other than minetest, and old games will just die |
00:40 |
hmmmm |
that's not necessarily a bad thing i suppose |
00:41 |
schwarzwald[m] |
It'd be nice to have some kind of roadmap for maintenance and feature work with estimates of priority and work required. |
00:43 |
hmmmm |
as long as somebody makes an attempt to preserve the past (a manner like i described above would be sufficient imho), i guess i would find removing meshgen cache acceptable |
00:44 |
MTDiscord |
<savilli> Veloren looks quite nice actually. I'm impressed. |
00:44 |
schwarzwald[m] |
What's the downside of keeping the feature? |
00:44 |
hmmmm |
or what if you trim down meshcache for specific common meshes? 2 in particular |
00:44 |
hmmmm |
a fully solid mapblock, and a fully empty mapblock |
00:45 |
hmmmm |
downside to keeping the feature? none in my opinion, only time somebody will complain about it is when something doesn't work with it |
00:45 |
MTDiscord |
<Warr1024> Re: docker images with old versions, yeah, a few of us are already doing this. You just have to wait about 10 years for the versions we started on to become "old" too now. |
00:46 |
MTDiscord |
<Warr1024> In princple someone could extend the work backwards in time, but it would have to be somebody passionate about that history. |
00:46 |
hmmmm |
if there are quirks that it happens with when paired with newer gpus, could just make a disclaimer |
00:47 |
MTDiscord |
<Warr1024> There is the standard downside to keeping any feature, of course, i.e. that you now have one more feature to maintain, work around when adding other things, wait for it to compile, deal with the potential for it to kick out bugs, etc. |
00:47 |
hmmmm |
that's good that others have the foresight to keep a working copy of past MTs |
00:47 |
hmmmm |
lmao you've already lost the compilation speed war by virtue of using C++ |
00:47 |
hmmmm |
and making the system of header files a wreck |
00:48 |
MTDiscord |
<Warr1024> I've only ever seen like one or two really hardcore "archivists" who keep very old stuff in working order going way back in history, but I've seen a few people get really ancient MT versions to compile, and apparently they work fine. |
00:48 |
schwarzwald[m] |
Why don't we fix the header system instead of axing the feature? |
00:48 |
hmmmm |
i would begin to worry about compilation speed when it gets actually painful like a web browser |
00:49 |
MTDiscord |
<Warr1024> Even if you delete features or functionality wholesale, it will always be in the history, and deletions can always be reverted. |
00:49 |
hmmmm |
erm you misunderstand, the header system is one of the systemic issues leading to slow compilation |
00:49 |
hmmmm |
i'm not saying that's the reason for removing the feature |
00:50 |
hmmmm |
yeah that's the argument i heard back then as well |
00:50 |
hmmmm |
the thing is, out of sight == out of mind, and without old code being there (even block commented out with some #if 0s) people tend to forget what was tried, what didn't work, why not, and repeat history again |
00:51 |
hmmmm |
the lineage of the code gets lost when the file gets split into new files as well |
00:51 |
hmmmm |
git blame stops working, i've seen it with nerzuhl's first 'contributions' |
00:52 |
hmmmm |
people run way too fast with scissors imho |
00:52 |
MTDiscord |
<Warr1024> If you're never willing to delete old features, then you basically discourage any developer from adding any new features, because you raise how certain they need to be that the new feature is really exactly what they want. Eventually you raise the bar high enough that you'll ONLY ever have old features. |
00:52 |
schwarzwald[m] |
I'm suggesting focusing effort on improving the compilation as opposed to removing a feature. Although, improving the compilation probably isn't that pressing either. |
00:52 |
hmmmm |
isn't that good?? could you imagine the linux kernel being developed like that? |
00:53 |
MTDiscord |
<Warr1024> you mean not developed? |
00:53 |
MTDiscord |
<Warr1024> Of course I can imagine it; I run Debian. |
00:54 |
hmmmm |
no i mean, people keep repeating mistakes because they didn't know why feature XYZ wasn't that way to begin with |
00:54 |
hmmmm |
the only reason why linux gets away with it I think is because there's just such a wide body of knowledge |
00:54 |
hmmmm |
not so much with MT |
00:54 |
rubenwardy |
It's silly to keep a feature with no affect that no one uses, if that is the case |
00:54 |
schwarzwald[m] |
I don't care whether the feature is removed, but I'd like to find others who are willing to have some formal organization of work rather than doing things haphazardly. |
00:55 |
hmmmm |
you need to put rules in place because nobody is going to be principled in their development otherwise |
00:55 |
hmmmm |
everybody wants to add new stuff, nobody wants to maintain |
00:56 |
hmmmm |
nobody wants to fix the microstudder they added when they so helpfully "fixed" some STL container usage |
00:56 |
hmmmm |
nobody wants to write documentation or a story |
00:56 |
MTDiscord |
<Warr1024> Personally, I'd love to see some bugs get fixed, and some features we already have start to work well. I hear a lot of people talk about adding stuff that MT doesn't have, but I'd rather it complete delivery on a selection of existing promises first... |
00:57 |
hmmmm |
which you won't get from this bazzar model of development |
00:58 |
hmmmm |
I don't think it'll ever get high quality until there's actual funding behind it |
00:59 |
hmmmm |
I think the best thing MT could do for itself as a project is to seek industry partners somehow. that one guy who wanted to product-ize MT by creating an educational game with a rich set of game assets seemed to be our closest bet |
00:59 |
MTDiscord |
<Warr1024> Bazzar model doesn't mean everybody develops new features only, it means everybody scratches their own itch. It's basically just a question of whether somebody will be bothered enough by something working half-ass to actually fix it. |
01:00 |
schwarzwald[m] |
I turn on a couple aggressive warning flags and the list of warnings doesn't fit in my terminal history. People may argue that those warnings aren't indications of errors and some are false positives, but warnings aren't supposed to indicate errors, they're supposed to indicate code that is following patterns that often lead to errors. I think having so many warnings is an indication of sloppy work at a really fine-grained level. |
01:00 |
MTDiscord |
<Warr1024> I came pretty close to attempting a fix of the "ABM scheduler is trash" bug, but it went just a little too deep into the system for me to work on without risking actually learning C++ in the process. |
01:00 |
hmmmm |
some of those warnings are bollocks though, in which case it's best to add a comiler flag or pragma to ignore them |
01:00 |
schwarzwald[m] |
At a higher level, there's a big list of Coverity reports. |
01:01 |
hmmmm |
Warr1024: No, practically speaking, nobody will care about fixing and maintaining aside from the overworked core devs who actually want to see MT succeed |
01:01 |
MTDiscord |
<Warr1024> Gamedevs |
01:02 |
MTDiscord |
<Warr1024> I've got 2 core issues that are holding my game back. |
01:02 |
MTDiscord |
<Warr1024> One of them, at least, it sounds like there's already core dev attention on |
01:02 |
MTDiscord |
<Warr1024> the other one, nobody seems interested in, so I went in to tackle myself, but I'm just not ready for it yet. |
01:02 |
hmmmm |
gamedevs are gamedevs becaue they want an outlet for their creativity, I think most good ones are going to prefer making their own game instead of fixing somebody elses' |
01:02 |
hmmmm |
oh, you mean developers for the MT games |
01:03 |
MTDiscord |
<Warr1024> Yeah |
01:03 |
hmmmm |
yeah, that's one small demographic who would also help |
01:03 |
MTDiscord |
<Warr1024> Haha, how many of us are there? Like, 3 to 5 maybe? |
01:03 |
hmmmm |
right |
01:04 |
hmmmm |
you have no idea how guilty it makes me feel to just talk and not put in code myself while talking about how more people need to put in the code |
01:04 |
hmmmm |
maybe one day after I retire lol |
01:04 |
MTDiscord |
<Warr1024> We periodically get drafted into core roles. Some "stick" and end up focusing on engine dev and then forget about their games, others end up staying with game dev and don't do as much core stuff. |
01:05 |
schwarzwald[m] |
It comes down to a question of how much we are willing to invest in things like fixing warnings in order to maintain things long term. But I don't think we're putting too much effort into stuff like that rn. |
01:05 |
MTDiscord |
<Warr1024> I've only "soft" given up on fixing the ABM scheduler, myself :-D |
01:06 |
hmmmm |
you know what I wanna see fixed in my lifetime? |
01:06 |
hmmmm |
if i could only have one feature |
01:06 |
hmmmm |
i wanna make envlock mostly go away |
01:07 |
hmmmm |
maplock i mean |
01:07 |
MTDiscord |
<Warr1024> So, like, parallel access to the map? |
01:07 |
hmmmm |
ye |
01:07 |
hmmmm |
see I had this freaky concept long ago on how to make maplocks per-block |
01:07 |
rubenwardy |
Rejoin as a core dev, fix that, and then retire and sleep happy |
01:07 |
hmmmm |
using very lightweight sync primitives |
01:07 |
hmmmm |
that would be something similar to RCU but not quite |
01:08 |
hmmmm |
had the idea, but never coded it, and then got busy |
01:08 |
MTDiscord |
<Warr1024> Do you need to be a core dev? You can work on it without being a core dev, and you only need the core dev thing if you want to push the PR through with a 50% reduction in red tape. |
01:08 |
hmmmm |
lol sure |
01:08 |
MTDiscord |
<Warr1024> but if you could eliminate that big of a lock, I think you'd have a pretty good case either way. |
01:08 |
hmmmm |
yeah, next time I get that itch |
01:08 |
hmmmm |
so has anybody done the active mapblock idea? |
01:09 |
MTDiscord |
<Warr1024> We got multiple Lua threads now, so I guess it would be interesting if the "worker" lua states could ask for mapblock locks independently |
01:10 |
schwarzwald[m] |
Warr, I have a little time on Sundays I'd be willing to use for pairing on the ABM scheduler thing. I know the programming language at a basic level, and it sounds like you would have an idea of the algorithm perhaps. |
01:10 |
MTDiscord |
<Warr1024> I think I opened an issue for it long ago. It might be buried. It might have been closed with a half measure. |
01:13 |
MTDiscord |
<Warr1024> I want to stagger ABM runs across multiple globalsteps. Right now, when an ABM's timer goes off, it tries to batch every active mapblock into its queue and process them all in the current globalstep. I'd like to at least allow modders the option of spreading that out. It's a bit tricky because we run all ABMs per mapblock, not all mapblocks per ABM, so spreading them out is not so simple. |
01:13 |
MTDiscord |
<Warr1024> There are also implications, i.e. modders would have to opt IN, because some may have made the assumption that their ABMs run everywhere in one burst the way it is now. |
01:14 |
MTDiscord |
<Warr1024> It seems to me like we might need a queue of some kind, and I don't know the C++ standard library, or the preferred way to declare data structures like that, well enough. |
01:14 |
MTDiscord |
<Warr1024> I think I know the ABM system itself mildly well now; at least, I was able to successfully test my "pass all node positions to Lua in one table instead of calling the callback hundreds of times" thing. |
01:15 |
schwarzwald[m] |
If the problem and solution are well specified, implementation should hopefully just be busywork. |
01:15 |
MTDiscord |
<Warr1024> Though that was "successful" in the sense of "prove that it actually didn't make a difference." |
01:16 |
MTDiscord |
<Warr1024> I'll have to read through the code again sometime to make sure I remember/understand how ABMs are scheduled right now. If I'm going to defer execution of anything, I need to have a good idea exactly what it is I'm deferring and what I can't. |
01:16 |
schwarzwald[m] |
What's the behavior right now if the processing of the batched map blocks takes longer than the globalstep? |
01:17 |
schwarzwald[m] |
Or maybe we don't know? xD |
01:17 |
MTDiscord |
<Warr1024> If you have a globalstep of 0.1, an ABM timer interval of 1.0, and an ABM time budget of 20%, then what happens is most of your globalsteps are 0.1 (assuming no other lag sources) but if you have heavy ABMs, then you'll get one step of like 0.25 or 0.3 when ALL the ABMs fire. I'd much rather use up 20% of each globalstep for ABMs instead, if I can swing it. |
01:18 |
MTDiscord |
<Warr1024> Default ABM time budget is 20%, and default ABM timer interval is 1.0s, so that means that ABMs run one big 200ms chunk once every second. For some servers, that's quite a big lag spike. |
01:20 |
schwarzwald[m] |
Ah, so what happens is that all the ABMs run in 1 of every 10 globalsteps? |
01:20 |
MTDiscord |
<Warr1024> with default settings, basically, yes. |
01:21 |
schwarzwald[m] |
And your idea is to spread the ABMs out over all the globalsteps to avoid those big spikes? |
01:21 |
MTDiscord |
<Warr1024> On my server, I run a step of 0.05, so I get most of my steps at that size except one step in the 0.2 to 0.25 range each second, and for some machines you can really see the timing judder, and it's quite distracting, and makes some things harder to do, like debugging in-game circuits. |
01:22 |
MTDiscord |
<Warr1024> Right. |
01:22 |
schwarzwald[m] |
Sounds like a simple enough feature. "how hard can it be" |
01:22 |
MTDiscord |
<Warr1024> Right now, it runs something like 400 mapblocks in 0.2 seconds or something. If I could run like 50 mapblocks every 0.05 seconds, I'd be in good shape. |
01:22 |
MTDiscord |
<Warr1024> Well, I don't know how hard it can be, but I know at least some of how easy it can't be. |
01:23 |
MTDiscord |
<Warr1024> In theory I guess we could make it a global toggle, even, i.e. we don't need to allow modders to choose per-ABM whether to stagger or not, we could just allow a server owner to turn it on or off for all. Most server owners I know who muck about to try to fix ABM performance issues are making much more drastic changes already. |
01:24 |
MTDiscord |
<Warr1024> I've looked into some of the almost-alternatives for ABMs but they all have failure cases that only an ABM provides the full "eventually-reliable" firing necessary to recover form. |
01:25 |
schwarzwald[m] |
> 20% of each globalstep for ABMs instead |
01:25 |
schwarzwald[m] |
Doing literally this in the engine would probably be the simplest solution, right? But would break the behavior for people who want them to run intermittently? |
01:26 |
schwarzwald[m] |
So we have to keep track of which ABMs use the old behavior, and which ones use the new behavior? |
01:30 |
schwarzwald[m] |
Is that 20% default time budget already the time budget for ABMs in that particular globalstep run? Maybe this boils down to "do (if there's enough time budget) this ABM every x globalsteps" |
01:48 |
MTDiscord |
<Warr1024> Keeping track per-ABM would probably complicate the ABM system a lot. It might be enough to just make it a single global toggle. Then server owners can turn it on, try it out, and report to us what benefits or breakages they see. |
01:49 |
MTDiscord |
<Warr1024> It's possible that ABMs are written naively enough that they break ... but it's actualy likely that ABMs are generally written SO naively that they DON'T break because their authors never even tried to take the old behavior into account to rely on. |
01:49 |
MTDiscord |
<Warr1024> At least, a single global toggle might be the fastest way to start to get some field testing on it. |
04:00 |
|
MTDiscord joined #minetest-dev |
04:34 |
|
calcul0n_ joined #minetest-dev |
07:08 |
|
vampirefrog joined #minetest-dev |
08:22 |
|
Warr10248 joined #minetest-dev |
08:27 |
|
Fixer joined #minetest-dev |
08:32 |
|
Fixer joined #minetest-dev |
08:40 |
|
YuGiOhJCJ joined #minetest-dev |
08:41 |
|
ivanbu joined #minetest-dev |
08:41 |
|
ivanbu joined #minetest-dev |
09:03 |
|
Warr1024 joined #minetest-dev |
09:17 |
|
appguru joined #minetest-dev |
09:18 |
|
Fixer_ joined #minetest-dev |
10:06 |
|
Wuzzy joined #minetest-dev |
10:06 |
Wuzzy |
#11115 needs adoption. anyone interested? |
10:06 |
ShadowBot |
https://github.com/minetest/minetest/issues/11115 -- Add support for single and dead-end raillike textures by Wuzzy2 |
10:22 |
|
YuGiOhJCJ joined #minetest-dev |
10:30 |
Zughy[m] |
hmmmm: I do agree about the bazaar aspect and the educational funds (see kilbith, probably the one really earning money out of MT), but there is no common will. You ask sfan5 and Krock and they tell you they don't care about money. You ask c55 and you're lucky if they answer in the first place. You ask rubenwardy and he tells you that he'd like to, but that is complicated. You ask a few other core devs, and you realise they're not even |
10:30 |
Zughy[m] |
active. So in the end things "just go" |
10:38 |
Zughy[m] |
One positive thing is, at least now we have regular meetings every two weeks (next one is today) and PRs are going down. If we keep up the pace, this should allow the organisation to think about certain aspects within a reasonable future, as the ghost of PRs is a huge toll on development, I think (a ghost we've been exorcising) |
10:40 |
Zughy[m] |
Talking about that, there are 4 "two approvals" PRs waiting to be merged. That will bring us to 68 PRs, another brand new record :) |
11:40 |
pgimeno |
<MTDiscord> <Warr1024> We got multiple Lua threads now, so I guess it would be interesting if the "worker" lua states could ask for mapblock locks independently |
11:41 |
pgimeno |
last time I checked, Lua threads share a common environment and therefore are subject to a global interpreter lock |
11:46 |
|
jwmhjwmh joined #minetest-dev |
11:59 |
jwmhjwmh |
Lua "threads" share a common interpreter state, but Minetest runs its own async threads which have totally separate Lua states. |
11:59 |
jwmhjwmh |
Merge #12833, #12810, and #12771 in 5m. |
11:59 |
ShadowBot |
https://github.com/minetest/minetest/issues/12833 -- DevTest: Explain purpose of most items in tooltips by Wuzzy2 |
11:59 |
ShadowBot |
https://github.com/minetest/minetest/issues/12810 -- Improve documentation for `liquid_alternative_*` by Wuzzy2 |
11:59 |
ShadowBot |
https://github.com/minetest/minetest/issues/12771 -- add an 'equals' method to ItemStack and compatibility w/ lua '==' by fluxionary |
12:01 |
pgimeno |
are these async threads with separate states a recent addition? |
12:02 |
jwmhjwmh |
Pretty recent, I think they were added in 5.6. |
12:03 |
pgimeno |
ok, I've been away for some months |
12:12 |
pgimeno |
it's not in the changelog >.< |
12:13 |
|
kilbith joined #minetest-dev |
12:23 |
MTDiscord |
<luatic> it is in the changelog: "Add Async environment for parallelized Lua code execution (sfan5) " (https://dev.minetest.net/Changelog#5.5.0_.E2.86.92_5.6.0) |
12:34 |
pgimeno |
oh right |
12:34 |
pgimeno |
thanks |
12:43 |
|
proller joined #minetest-dev |
13:26 |
|
proller joined #minetest-dev |
13:31 |
|
appguru joined #minetest-dev |
14:35 |
|
jwmhjwmh joined #minetest-dev |
14:41 |
|
kilbith joined #minetest-dev |
14:45 |
jwmhjwmh |
Merging #12797 in 5m. |
14:45 |
ShadowBot |
https://github.com/minetest/minetest/issues/12797 -- Optimize lighting calculation by TurkeyMcMac |
14:57 |
Zughy[m] |
68 PRs open. Trivia: last time there were so few PRs was 8 years ago. More precisely, 2014-08-30. That's a big accomplishment, if you ask me |
15:11 |
sfan5 |
schwarzwald[m]: I don't see a reason to get rid of a reference couting in irrlicht and you also run into problems: in a scene graph that is not loop-free who owns what? |
15:14 |
sfan5 |
re mesh cache: the mesh cache can speed up meshgen times, amount of vertices uploaded to the GPU doesn't change |
15:16 |
sfan5 |
but it's also not enabled with smooth lighting so few people will have benefited in the last 5 years |
15:17 |
MTDiscord |
<savilli> So you're fine with removing it? |
15:24 |
sfan5 |
I guess it could be removed |
15:24 |
sfan5 |
is it broken? |
15:30 |
MTDiscord |
<savilli> Likely |
15:50 |
|
Desour joined #minetest-dev |
16:18 |
|
appguru joined #minetest-dev |
16:49 |
sfan5 |
ok wtf |
16:49 |
sfan5 |
can we please stop regressing graphics |
16:49 |
sfan5 |
the brightness is all bright |
16:50 |
sfan5 |
@x2048 |
16:50 |
sfan5 |
effectively smooth lighting is broken |
16:51 |
sfan5 |
nvm just had that turned off |
16:59 |
MTDiscord |
<x2048> Can you share a screenshot of what's broken? |
16:59 |
MTDiscord |
<x2048> Brightness... |
17:00 |
sfan5 |
https://a.uguu.se/WotOBUSY.png |
17:01 |
sfan5 |
probably this https://a.uguu.se/rWATBkMZ.png |
17:02 |
sfan5 |
(which ironically I approved) |
17:11 |
Krock |
yes, it's too bright but thought it's due to me messing with the shader files |
17:12 |
sfan5 |
pushing trivial fix |
17:13 |
sfan5 |
on another note I don't know who considers that over-bright tonemapping good |
17:13 |
|
Fixer joined #minetest-dev |
17:31 |
schwarzwald[m] |
Warr, to clarify, does "global" mean the setting would apply to the entire API? What I'm thinking is that if the reason for having a setting is that we need backwards compatibility, making the setting apply across all mods means that mods that require the old behavior are incompatible with mods that require the new behavior. |
17:34 |
Zughy[m] |
meeting time, amirite? |
17:35 |
Zughy[m] |
no I'm not, nevermind |
17:35 |
schwarzwald[m] |
What is the schedule for the dev meetings? I've observed that they're usually on Sunday. |
17:35 |
Zughy[m] |
in 25 minutes |
17:35 |
Zughy[m] |
every two weeks |
17:38 |
jwmhjwmh |
Merging #12813 in 5m. |
17:38 |
ShadowBot |
https://github.com/minetest/minetest/issues/12813 -- [NO SQUASH] Remove unused MapBlock functionality, in particular dummy blocks by TurkeyMcMac |
17:49 |
|
Desour joined #minetest-dev |
17:49 |
Krock |
kind reminder that there's a meeting in 15 minutes. jwmhjwmh sfan5 @x2048 (pinging those who recently showed activity). the list is quite short today. |
17:53 |
sfan5 |
I guess I'm present, haven't looked at the meeting notes yet |
17:54 |
Krock |
me neither. concept discussion of 4 PRs |
17:56 |
MTDiscord |
<x2048> Can we also discuss ^ brightness? |
17:58 |
|
x2048 joined #minetest-dev |
18:00 |
Krock |
added |
18:03 |
jwmhjwmh |
Should we begin? |
18:03 |
Krock |
> #11432 |
18:03 |
ShadowBot |
https://github.com/minetest/minetest/issues/11432 -- Add support for attached facedir/4dir nodes by Wuzzy2 |
18:03 |
Krock |
First meeting point. Concept discussion? |
18:04 |
jwmhjwmh |
See my comment there. I was wondering if there should be an attached_node variant based on the facedir axis. |
18:04 |
jwmhjwmh |
Rather than the facedir face. |
18:04 |
jwmhjwmh |
This could be useful for attached tree nodes and such. |
18:05 |
Krock |
why can't it have the same format as facedir? |
18:05 |
jwmhjwmh |
Then the log nodes would attach to nodes beside them. |
18:06 |
jwmhjwmh |
Instead of under them. |
18:06 |
Krock |
hmm |
18:06 |
jwmhjwmh |
I workaround in this case would be to change the orientation of the tree textures or to use "wallmounted" logs. |
18:07 |
jwmhjwmh |
But e.g. an attached chest would not work with wallmounted. |
18:08 |
Krock |
the most generic method I could imagine is to provide a bitfield that specifies where to attach into each axis using the rotated coordinate system |
18:08 |
sfan5 |
hm |
18:08 |
sfan5 |
not sure about the feature as a whole but if people think there's enough usecases then that's fine with me |
18:08 |
Desour |
you can express a rotated coordinate system using a facedir value |
18:09 |
Krock |
with a bitfield you could attach to multiple nodes |
18:10 |
Krock |
like a beam that's supported from both sides |
18:10 |
Krock |
it goes into the direction of what jwmhjwmh suggests, but taking it further to allow any combination |
18:11 |
jwmhjwmh |
A bit set could be represented in the attached_node group value, with one extra bit set to mark the format. |
18:11 |
Krock |
why do you need to mark the format? |
18:11 |
jwmhjwmh |
To distinguish it from other attached_node group settings. |
18:12 |
sfan5 |
minus the placement prediction games could actually implement all this on their own |
18:12 |
sfan5 |
so we should be wary of adding flexible but too complex formats |
18:12 |
sfan5 |
(right?) |
18:13 |
Krock |
it cannot get more complicated than that, I think. |
18:13 |
Krock |
also yes, it does not strictly need an implementation in Minetest |
18:14 |
Krock |
is this PR something that's wanted? |
18:15 |
jwmhjwmh |
The PR can be left as-is then. I wasn't going to use the feature myself. |
18:16 |
sfan5 |
I guess we should ask some mod authors to weigh in |
18:17 |
jwmhjwmh |
This use-case could be solved with the bit set approach, I think: https://github.com/minetest/minetest/pull/11432#issuecomment-876841336 |
18:18 |
Krock |
everything but altering attached modes could be implemented with bitfields |
18:20 |
Krock |
okay. I'll leave a link to the discussion there. modders are welcome to provide feedback there and proceed with the next topic |
18:20 |
Krock |
> #12739 |
18:20 |
ShadowBot |
https://github.com/minetest/minetest/issues/12739 -- Add callback on_mapblocks_changed by TurkeyMcMac |
18:21 |
Desour |
(for full flexibility, you'd also have to support OR, i.e. by using multiple bitfields for cnf or dnf) |
18:21 |
Krock |
why do we need this? |
18:21 |
sfan5 |
to reliably track when nodes change |
18:22 |
Krock |
well yes, but mods trigger node changes themselves |
18:22 |
Krock |
and there's also on_placenode callbacks |
18:22 |
MTDiscord |
<GreenXenith> The linked issue gives you reasons |
18:22 |
jwmhjwmh |
The example mod mesecons_detector2 is a fast version of the mesecons node detector. It can detect changes from voxelmanips, liquid, etc. |
18:22 |
sfan5 |
well not for vmanips |
18:23 |
jwmhjwmh |
Desour proposed an alternative API along the lines of "minetest.watch_area(pos1, pos2, func)" |
18:23 |
jwmhjwmh |
This could also be used to implement mesecons_detector2 |
18:23 |
MTDiscord |
<GreenXenith> As someone that has made over 5 iterations of a replay mod for the last 4 or 5 years, I would greatly appreciate a more generic state watcher |
18:23 |
jwmhjwmh |
Areas could be stored in an AreaStore |
18:23 |
MTDiscord |
<GreenXenith> watch area is not generic enough |
18:24 |
jwmhjwmh |
Is it OK if the API raises false positives? |
18:24 |
MTDiscord |
<GreenXenith> The mapblock callback can let me watch any mapblock or I can limit it to an area myself. The inverse is not true for the watch area method |
18:25 |
sfan5 |
making it not raise false positives is infeasible |
18:25 |
Krock |
how would mods know what to watch for in these callbacks? |
18:25 |
Krock |
specific nodes, as an alternative to ABMs? |
18:26 |
jwmhjwmh |
The mod mesecons_detector2 uses the callback to trigger detector updates. It rechecks the detectors when the callback fires. |
18:26 |
Krock |
there is no way to figure out what used to be there before the callback is executed without tracking the entire map |
18:26 |
Desour |
> well not for vmanips are you sure sfan5? It'd make the callback unsuitable for node detectors |
18:26 |
Krock |
I see. yes, for detectors it could make sense |
18:26 |
sfan5 |
Desour: that was in response to "on_placenode" |
18:26 |
Krock |
vmanip marks blocks as dirty |
18:26 |
Krock |
ah I see |
18:27 |
Desour |
ahh |
18:27 |
MTDiscord |
<GreenXenith> Krock: ideally the callback would begin as soon as a block is slated to change. I would hope thats how it is implemented at least |
18:28 |
|
appguru joined #minetest-dev |
18:28 |
sfan5 |
the callback runs after the fact |
18:28 |
Krock |
no, mapblocks are already modified at that point |
18:28 |
Krock |
you cannot trigger something before they're marked dirty |
18:28 |
jwmhjwmh |
It would be hard to run the callback before modification. |
18:29 |
Krock |
and somewhat uneffitient on top of that |
18:29 |
MTDiscord |
<GreenXenith> Is the returned data only positions? |
18:29 |
sfan5 |
yes |
18:29 |
sfan5 |
the idea with the PR is that the engine already tracks this stuff so exposing it to Lua is free and has a great effect in terms of new possibilities |
18:29 |
MTDiscord |
<GreenXenith> Alright then I change my opinion to indifference. |
18:30 |
MTDiscord |
<GreenXenith> What exactly are the great new possibilities you speak of |
18:30 |
jwmhjwmh |
In the PR description you can download an example mod mesecons_detector2. |
18:31 |
Krock |
modders always found something to do with it |
18:31 |
Desour |
if the callback is only called once per server-step ("at most", I guess the only way for this to be less often is if nothing changed?), does this actually have to be a callback? you could make a function to retrieve all blocks that changed since last server-step. mods can then pull the list of changed blocks on_globalstep |
18:31 |
MTDiscord |
<GreenXenith> Is that mod not just a reimplementation of a thing we can already do? |
18:31 |
Desour |
(+ core.is_block_dirty(pos) -> bool) |
18:31 |
sfan5 |
it is |
18:31 |
sfan5 |
for the first time there would be a way to actually receive a callback when a vmanip modifies a block |
18:31 |
MTDiscord |
<GreenXenith> Krock: by that logic you should be merging every feature pr without a second thought |
18:32 |
pgimeno |
what's the API for register_on_mapblocks_changed? it would be nice to mention it in the comments without needing to read the code |
18:32 |
MTDiscord |
<GreenXenith> Alright, the vmanip point is a good one |
18:32 |
sfan5 |
* `minetest.register_on_mapblocks_changed(function(modified_blocks, modified_block_count))` |
18:33 |
sfan5 |
* `modified_blocks` is the set of modified mapblock position hashes. |
18:33 |
sfan5 |
* `modified_block_count` is the number of entries in the set. |
18:33 |
sfan5 |
now we should be on the same page |
18:33 |
pgimeno |
thanks |
18:34 |
jwmhjwmh |
Desour: core.is_block_dirty(pos) suggests the dirty marker is cleared at some meaningful point, when in fact it is just cleared on every server step. |
18:34 |
MTDiscord |
<x2048> Why do we need the count separately? |
18:34 |
sfan5 |
lua has no efficient means of counting the number of keys in a table |
18:34 |
Krock |
Desour: blocks are only dirty for a rather short time, so a normal function could result in missed updates when implementing a rate limit |
18:35 |
MTDiscord |
<GreenXenith> Is it not an array? |
18:35 |
jwmhjwmh |
It is a set of position hashes. |
18:35 |
rubenwardy |
{ [hash] = true } |
18:35 |
MTDiscord |
<GreenXenith> Why this over a list, out of curiosity |
18:35 |
rubenwardy |
I assume. Doc could be more specific |
18:35 |
sfan5 |
a bit unusual but more efficient |
18:36 |
jwmhjwmh |
It allows for fast checking of whether a mapblock has been modified. |
18:36 |
Krock |
faster lookups than integer-indiced tables |
18:36 |
MTDiscord |
<GreenXenith> Fair enough |
18:36 |
Krock |
and yet there's only node hash positions and yet it's used to hash a mapblock |
18:36 |
pgimeno |
mmm... does that mean it would be triggered for any change anywhere? that sounds busy |
18:37 |
jwmhjwmh |
All changes on a single server step are collected into one step. |
18:37 |
MTDiscord |
<GreenXenith> Thats the point |
18:37 |
Desour |
jwmhjwmh: then `core.was_block_modified_in_last_server_step(pos) -> bool` (and `core.get_blocks_modified_in_last_server_step() -> map, count`) |
18:37 |
Krock |
pgimeno: changes are bundled in batch for saving, and that's also where the callback should fire |
18:37 |
jwmhjwmh |
Into one step, I mean. |
18:37 |
sfan5 |
any change anywhere per mapblock (including changes that Lua couldn't even see) |
18:37 |
jwmhjwmh |
One set, I mean, lol. |
18:37 |
Krock |
(never mind actually it's at most once per server step) |
18:38 |
sfan5 |
Desour: this has almost no advantages other that being confusing in regards to when do you have to call it |
18:38 |
sfan5 |
when + how often |
18:38 |
pgimeno |
providing a range on register sounds more reasonable to me; filling in long hash tables can potentially incur a performance penalty |
18:38 |
MTDiscord |
<GreenXenith> Hmm, upon further thought, I realize I can manually track changes as long as I choose the area to watch. I have to save the initial mapblock state and then save the mablock state every time it changes. Could be expensive but it also could be worse |
18:39 |
jwmhjwmh |
Desour: You could use `local my_modified = {}; core.register_on_mapblocks_changed(function(m) my_modified = m end)`, then use `my_modified` in a globalstep. |
18:40 |
jwmhjwmh |
GreenXenith: maybe you could use mapblock_lib. |
18:40 |
Desour |
ok, right, the callback is probably simpler and better |
18:41 |
|
x2048 joined #minetest-dev |
18:41 |
MTDiscord |
<GreenXenith> Once again +1 to the design then from me. Its generic enough and easy enough to understand. |
18:41 |
sfan5 |
not being able to tell what changed or how the MB was before is indeed annoying |
18:42 |
sfan5 |
but at least with this you can choose to watch an area and bring your own manual tracking |
18:42 |
MTDiscord |
<GreenXenith> I fear tracking the changes themselves is beyond the scope of this feature, or at least the pr |
18:43 |
MTDiscord |
<x2048> it is, change tracking can be done in a few ways outside this API |
18:43 |
jwmhjwmh |
pgimeno: I doubt _that_ many mapblocks will be modified per globalstep, and making mapblock hashes should be fairly cheap. |
18:44 |
Krock |
hmm. on a busy server with 20 players you surely get at least 20 mapblocks per tick |
18:44 |
Krock |
be it just for ABMs |
18:44 |
Krock |
or other metadata updates |
18:44 |
sfan5 |
maybe ask pandorabox people how many written mapblocks to db they get |
18:44 |
Desour |
I wonder if it is more performant to build a lua hash table in C++ or to build an array and then make it to a hash table in lua |
18:44 |
sfan5 |
IIRC there's already stats for this |
18:44 |
pgimeno |
20 is reasonable; 500 could be troublesome |
18:44 |
sfan5 |
via prometheus I mean |
18:44 |
pgimeno |
on top of that, the table passed is engine-generated, so it generates garbage |
18:45 |
MTDiscord |
<Jonathon> @BuckarooBanzai |
18:45 |
sfan5 |
and all modified mapblocks get written (instantly?) so that figure should be accurate |
18:45 |
MTDiscord |
<GreenXenith> This is a callback you should expect to be called in excess, which is not a bad thing. Just needs to be efficient |
18:45 |
Krock |
pgimeno: depends on how much the ABMs do. oh right. liquid flow too. and mapblocks with technic nodes will pretty much fire every globalstep unless metadata changes are ignored |
18:46 |
jwmhjwmh |
Metadata changes are included. |
18:46 |
pgimeno |
there isn't an option for providing your own table to fill, like some functions (was it noise?) do |
18:46 |
Krock |
so yes, a hundred mapblocks per tick isn't too far off |
18:47 |
Desour |
Krock: technic runs on abm step, afaik |
18:47 |
Krock |
Desour: yes, it's the switching station that does it each second |
18:48 |
Desour |
(so, once per second by default, not once per server-step) |
18:48 |
rubenwardy |
builtin could have a table for reducing garbage |
18:48 |
Desour |
how do you clean the table? |
18:49 |
jwmhjwmh |
LuaJIT has table.clear() |
18:49 |
sfan5 |
since the hashtable is the table itself there shouldn't be any garbage except for the table object |
18:49 |
sfan5 |
would be very different with a list of vectors |
18:50 |
jwmhjwmh |
Yes, reusing the table might be micro-optimization. Minetest does a bunch of other allocation anyway. |
18:50 |
sfan5 |
i think we're getting a bit off-topic though |
18:51 |
Krock |
maybe let's keep this for now and go to the next topic? |
18:52 |
sfan5 |
sure |
18:52 |
Krock |
because I do not see any clear progress any more |
18:52 |
Krock |
> #12611 |
18:52 |
ShadowBot |
https://github.com/minetest/minetest/issues/12611 -- Implement some VoxelManip functionality safely using LuaJIT's FFI library by TurkeyMcMac |
18:52 |
Krock |
> Decide whether the added complexity is worth it. |
18:53 |
jwmhjwmh |
I measured a speed up of almost 2x with this change to get_data etc. |
18:53 |
jwmhjwmh |
But it requires duplicating the implementations. |
18:53 |
sfan5 |
tending towards -1 from my side |
18:53 |
Krock |
well I'd say No. the API is supposed to work with LuaJIT and Lua the same way |
18:53 |
Krock |
also yes, code duplication and hence more maintenance efforts to keep it in sync and working well |
18:54 |
jwmhjwmh |
It does add pretty extensive unit tests for the API. |
18:54 |
sfan5 |
hm |
18:55 |
Krock |
I also implemented functions for FFI into Minetest as an experiment and it did indeed work pretty well |
18:55 |
Desour |
get_node can be made so fast that checking whether a node is near with get_node is almost as fast as get_nodes_near, last time I tried, btw. |
18:56 |
Desour |
it would be nice if we had a C api that we call from both C lua and luajit ffi, for consistency |
18:59 |
Krock |
rubenwardy: if you're around - do you have an opinion on this? |
18:59 |
rubenwardy |
didn't we try this years ago, and find no performance improvement? |
19:00 |
MTDiscord |
<x2048> Q: what is the biggest benefit from the faster voxelmanip? |
19:00 |
jwmhjwmh |
Mapgen, mesecons |
19:00 |
MTDiscord |
<Jonathon> probably worldedit as well? |
19:01 |
Krock |
schematic placement relies on it too |
19:01 |
sfan5 |
schematic placement is C++ |
19:01 |
Krock |
or was it only trees? well, I don't remember |
19:01 |
sfan5 |
this is only for voxelmanip interaction with lua, is it? |
19:01 |
Krock |
ah yes, internal vmanip. I got confused |
19:02 |
jwmhjwmh |
Their total speed probably would not increase enormously from this change, since get_data is only part of the cost. |
19:03 |
Krock |
#6863 |
19:03 |
ShadowBot |
https://github.com/minetest/minetest/issues/6863 -- Add LuaJIT FFI-friendly memory-intensive functions |
19:03 |
Krock |
that was pgimeno's original PR |
19:03 |
Krock |
well great. the diff is gone |
19:03 |
pgimeno |
I also made this mod: https://notabug.org/pgimeno/ffi_accel |
19:04 |
pgimeno |
and the diff is available in notabug I believe |
19:04 |
pgimeno |
https://notabug.org/pgimeno/minetest/pulls/2 |
19:06 |
pgimeno |
I was told that ffi_accel greatly accelerated mapgen |
19:06 |
pgimeno |
even though it's very restricted due to security concerns |
19:07 |
jwmhjwmh |
My PR still requires copying to and from the VM buffer, since it is designed to be used transparently by untrusted mods. |
19:09 |
pgimeno |
the mod was about transparent replacement; 6863 was about a new faster way of doing things, but the mods using it would need to be trusted |
19:10 |
hmmmm |
wow :D |
19:11 |
hmmmm |
what is the security concern in question now? this seems like something new, i guess mods can be 'trusted' or 'untrusted'? what is the privilege trusted mods have exactly? |
19:11 |
Krock |
restrictions on "os" and "require" functions that could potentially execute harmful code |
19:11 |
hmmmm |
if it's about writing raw memory to a buffer in the process, it's not like that can't be handled with some bounds checks (but I suppose that defeats the purpose of this PR) |
19:12 |
hmmmm |
well it's not like the mods that are using this functionality also have privileges to "os" |
19:13 |
pgimeno |
in raw FFI (6863) there are no possible bounds checks, that's why it's fast |
19:13 |
hmmmm |
since they are executing in different modules that did not import |
19:13 |
hmmmm |
i am really glad somebody is making luavoxelmanip better |
19:14 |
Desour |
hmmmm: 12611 doesn't need trust, it implements part of the API using luajit's ffi lib. the implementation must not have bugs though |
19:14 |
Krock |
if there's FFI for normal Lua we could switch to the FFI variant althogether? |
19:15 |
hmmmm |
i support the concept, but id need to put in real work into reading up on the mechanisms being used here to do a code review |
19:15 |
hmmmm |
sorry i can't be more useful :p |
19:15 |
jwmhjwmh |
https://github.com/facebookarchive/luaffifb |
19:16 |
Desour |
Krock: there is, eg. https://github.com/q66/cffi-lua |
19:16 |
hmmmm |
<Krock> or was it only trees? well, I don't remember |
19:16 |
pgimeno |
Krock: technically there is, I believe Facebook implemented one, but it's not worth it - it's about speeding up access, and PUC Lua FFI performs poorly |
19:16 |
hmmmm |
i'm sure there are mods that use lua for trees that they want to make not using the l-system or schematics |
19:16 |
pgimeno |
in facebook's implementation there was an incompatibility with nil being the null pointer I believe |
19:16 |
hmmmm |
i just added those into the core because those seem like the most common use case |
19:18 |
pgimeno |
I don't have time to look into 12611 for now, maybe I can review it in future |
19:18 |
Krock |
well I don't know what to do with that PR |
19:18 |
Krock |
> #12449 one more? |
19:18 |
ShadowBot |
https://github.com/minetest/minetest/issues/12449 -- [No Squash] Use .md extension for markdown files by rubenwardy |
19:18 |
hmmmm |
hmmmmmmmmmmmm.... tbh I think the requirement to remain secure should fall onto the mod writers who use FFI |
19:19 |
rubenwardy |
We have a mod sandbox, it's important not to just add holes in it |
19:19 |
hmmmm |
if you wanted to exploit minetest clients i'm pretty sure that's easy enough seeing as how you got ppl like nerzuhl running around making packet deserialize functions vuln as fuck |
19:20 |
hmmmm |
ahaha kidding |
19:20 |
hmmmm |
but MT seems like such a soft target |
19:20 |
hmmmm |
ye idk then ruben, but 2x speedup seems too appetizing |
19:20 |
MTDiscord |
<Warr1024> MT makes up for its weakness to attack by offering relatively little value to attackers. |
19:21 |
hmmmm |
true |
19:23 |
MTDiscord |
<x2048> It does not justify designing for vulnerability though. |
19:24 |
hmmmm |
do we actually know that there is a vulnerability or is the concern with the added surface area? |
19:25 |
rubenwardy |
This PR looks like it should be fine as it doesn't expose the ffi interface to mods, just upgrades the APIs to use it |
19:25 |
jwmhjwmh |
AFAIK my PR does not introduce a vulnerability. |
19:26 |
MTDiscord |
<x2048> I think the concern is with putting the basic security requirements on the mod authors. This PR does not do that. |
19:27 |
Desour |
the concern is mostly about attack surface. and minetest makes it hard to securely use the insec env, especially with mods having access to debug stuff, it's a bit less bad in builtin at least because no other mod loaded before |
19:28 |
hmmmm |
> #12449 good to merge |
19:28 |
ShadowBot |
https://github.com/minetest/minetest/issues/12449 -- [No Squash] Use .md extension for markdown files by rubenwardy |
19:28 |
hmmmm |
i don't think increased attack surface alone is reason enough to block something substantial |
19:29 |
hmmmm |
if there is a vulnerability, it'd get patched, and then we move onward |
19:29 |
hmmmm |
you don't see people whining about support for emojis because it pulls in libjpeg |
19:30 |
Desour |
I wish we had something more searchable than txt or md. I hate those `See "Nodes"` comments. without case-sensitivity, there are about 181 matches for "nodes" |
19:31 |
MTDiscord |
<luatic> md should allow references |
19:31 |
hmmmm |
i feel like a lot of these concerns are a bit perfectionist |
19:31 |
hmmmm |
this is an upgrade from where we are now |
19:31 |
MTDiscord |
<luatic> I vaguely remember that [Nodes] might work (if there is an appropriate header); otherwise [Nodes](#nodes) can reasonably be expected to work |
19:32 |
hmmmm |
as long as you are not working backwards, it's ok if a PR doesn't include the kitchen sink too |
19:32 |
hmmmm |
maybe you can add the references |
19:32 |
MTDiscord |
<luatic> AsciiDoc is the format we went with for the docs project |
19:32 |
rubenwardy |
Desour: Using MD would allow linking to Nodes directly |
19:32 |
rubenwardy |
As others have said |
19:33 |
rubenwardy |
GitHub also lets you search the table of contents, and a lot of IDEs allow that as well (it's often called "structure") |
19:33 |
rubenwardy |
(or symbols) |
19:34 |
MTDiscord |
<luatic> BTW Desour, just grep for # Nodes; as long as the heading doesn't use setext-style you'll be fine |
19:34 |
rubenwardy |
Most of the doc is setext style lol |
19:34 |
MTDiscord |
<luatic> we should also switch all our headings to ATX-style (#) |
19:35 |
MTDiscord |
<luatic> rubenwardy: then it's probably poorly structured, because setext-style only works for levels 1 & 2 |
19:35 |
MTDiscord |
<luatic> that'd be plenty of top level headings |
19:35 |
Desour |
Nodes is also the text style https://github.com/minetest/minetest/blob/b3503e7853a52a8c16431f6b983e30c9d25951bc/doc/lua_api.txt#L1008 |
19:36 |
MTDiscord |
<luatic> argh |
19:36 |
Krock |
it does not matter. you can use [Nodes](#nodes) to link there |
19:36 |
Krock |
or at least that should work |
19:37 |
Desour |
I guess md is an improvement ¯\_(ツ)_/¯ after all, we are we are already writing it in markdown format |
19:38 |
Desour |
but in the long run, I would really like to see something nicer, like ldoc (I've made pretty good experiences with it <https://github.com/Desour/dslib#documentation>) |
19:38 |
hmmmm |
oh so you're volunteering eh |
19:39 |
Desour |
not now, but I'm trying to manipulate peoples' minds in the long run |
19:40 |
hmmmm |
i know that feeling lmao |
19:40 |
MTDiscord |
<luatic> ldoc is unfortunately about the only option unless you write your own |
19:40 |
Desour |
after all, it's not in the roadmap and making a contribution would only lead to wasted work |
19:40 |
hmmmm |
i was sort of hoping somebody else would make the active mapblock idea a reality |
19:40 |
MTDiscord |
<luatic> writing my own is on my TODO list tho hehe |
19:41 |
hmmmm |
that + fixing mapgen + breaking down maplock were the three big things i wanted to accomplish |
19:42 |
Desour |
luatic: or fork it to add more features and fix bugs |
19:42 |
MTDiscord |
<x2048> Looks like .md extension is accepted. One note though is that Discord bots (and any other bots) will need to be adjusted. |
19:42 |
MTDiscord |
<x2048> Do we move on? |
19:46 |
MTDiscord |
<luatic> Desour: I don't like the style of it; I want my doc comments to be at the appropriate places (e.g. param comments next to params, return comments next to return statements, function description next to function definitions) |
19:46 |
Krock |
@luatic: I think it would be best to state your concerns in the PR |
19:47 |
Krock |
if that's related to the .txt -> md transition |
19:47 |
Krock |
> final topic: Shader brightness issue |
19:47 |
MTDiscord |
<luatic> Krock: I am pro the txt -> md transition |
19:47 |
Krock |
@x2048 on recent Minetest versions, the terrain is somewhat bright with only shaders enabled |
19:48 |
Krock |
sfan5 did propose a patch earlier on. is the discussion about this, or am I mistaken? |
19:49 |
MTDiscord |
<x2048> > sfan5: on another note I don't know who considers that over-bright tonemapping good |
19:50 |
MTDiscord |
<x2048> This is what I want to discuss. |
19:50 |
Krock |
mhm. yes, it's indeed very bright. the texture colors are no longer reflected properly (at least at sunlight levels) |
19:51 |
MTDiscord |
<Warr1024> IIRC the tone mapping function is literally just a naive color curve applied statically to the rendered scene. When I heard about it, what I had hoped for was something more dynamic, e.g. taking average brightness into account and e.g. auto-adjusting for dim scenes and such. I am not sure what actual use the original shader actually served other than as e.g. a placeholder and proof of concept? |
19:52 |
MTDiscord |
<x2048> Bloom PR converts all PP into linear color space, assuming that 3D step rendered in sRGB |
19:52 |
rubenwardy |
It's probably worth making sure it's implemented correctly, in terms of how it works in other games |
19:53 |
MTDiscord |
<x2048> Adding bloom, godrays etc. on top will make some areas overbright, and this is where some tonemapping helps. |
19:53 |
rubenwardy |
Isn't tone mapping designed to implement fake HDR? Or am I thinking about something else |
19:53 |
MTDiscord |
<x2048> Not fake, |
19:53 |
rubenwardy |
"auto adjusting for dim scenes" sounds like fake HDR |
19:53 |
MTDiscord |
<Warr1024> Fake HDR is what it should have done but I don't think our implementation even attempts that. |
19:53 |
MTDiscord |
<x2048> tonemapping maps from HDR colors of rendering into sRGB of the display |
19:54 |
MTDiscord |
<Warr1024> It's "fake" in the sense that we don't actually have enough precision to do it properly |
19:54 |
rubenwardy |
Software HDR then, as contrasted to hardware/display HDR |
19:54 |
MTDiscord |
<x2048> Bloom adds exposure control via settings. You can so /set exposure_factor 0.5 in your single player |
19:54 |
MTDiscord |
<Warr1024> /set exposure_factor auto is what I'd want :-) |
19:55 |
MTDiscord |
<x2048> My point: the previous tonemapping code added 2.5 to the exposure, probably to make a fake HDR |
19:55 |
MTDiscord |
<Warr1024> like, sample overall brightness from the scene (possibly smooth it over time) and adjust the tone map to bring the dominant brightness closer to the middle. |
19:55 |
MTDiscord |
<x2048> I kept that factor here: https://github.com/minetest/minetest/blob/master/src/client/renderingengine.h#L51https://github.com/minetest/minetest/blob/master/src/client/renderingengine.h#L51 |
19:55 |
MTDiscord |
<x2048> But I'd like to remove it |
19:56 |
MTDiscord |
<x2048> It will make entire scene dimmer by default, i.e. change for the players. |
19:56 |
MTDiscord |
<x2048> But it will make my life, gamedev and TP designer life easier |
19:56 |
MTDiscord |
<Warr1024> I currently play with shaders off most of the time. If you had HDR support in screen-space (cheap enough) then that would probably be enough to get me to turn it on. |
19:58 |
MTDiscord |
<Warr1024> Consequently, I have my game tuned based on whatever the rendering looks like with shaders completely off (dunno if that's linear or not?) |
19:59 |
MTDiscord |
<Warr1024> If the game experience got overall darker, that'd force me to redo a bunch of art and make me quite unhappy. If we had HDR and it auto-adjusted for it and boosted stuff back into a good range, then I'd probably be cool with that :-) |
19:59 |
MTDiscord |
<x2048> Shaders off is sRGB and weird math around voxel lighting. |
20:00 |
MTDiscord |
<x2048> I don't think removing 2.5 factor will be darker than w/o shaders. |
20:00 |
MTDiscord |
<Warr1024> Though, "voxel lighting" would just mean "mulitply colors by some brightness <1" with the brightness function itself being that weird gamma curve thing that MT does, right? |
20:01 |
MTDiscord |
<Warr1024> What setting is that 2.5 thing tied to, just the "Shaders" base option, or tone mapping, or bloom? |
20:03 |
MTDiscord |
<Warr1024> Ideally, regardless of the shader options you pick, the default overall brightness of MT across all scenes shouldn't change compared to the no-shaders option, at least to me. |
20:03 |
MTDiscord |
<Warr1024> If they differ, regardless of which one you consider "correct", people will adjust their images for one way or the other, and it will look wrong to any players who play the other way. |
20:04 |
MTDiscord |
<Warr1024> At least, any settings that we put on the "Settings" panel in the main menu shouldn't so drastically alter the appearance of the game that it would be considered "breaking" for anyone who expects a reasonably faithful rendering of their visual art. |
20:05 |
MTDiscord |
<x2048> I'd like to share the screenshots. Can I just paste them in Discord? |
20:06 |
MTDiscord |
<Jonathon> they should just get a discord cdn link they can view |
20:06 |
MTDiscord |
<x2048> Thank you |
20:08 |
MTDiscord |
<x2048> @Warr1024 It's designed to affect bloom and tonemapping. |
20:09 |
MTDiscord |
<x2048> Fector 2.5 w/ tonemapping |
20:09 |
MTDiscord |
<x2048> https://cdn.discordapp.com/attachments/747163566800633906/1028761213884182568/Screenshot_20221009_220813.png |
20:12 |
MTDiscord |
<x2048> Without tonemapping |
20:12 |
MTDiscord |
<x2048> https://cdn.discordapp.com/attachments/747163566800633906/1028761781801328723/Screenshot_20221009_221119.png |
20:12 |
MTDiscord |
<x2048> Without shaders |
20:12 |
MTDiscord |
<x2048> https://cdn.discordapp.com/attachments/747163566800633906/1028761954396942447/Screenshot_20221009_221226.png |
20:14 |
MTDiscord |
<x2048> Factor 1.0 with tonemapping |
20:14 |
MTDiscord |
<x2048> https://cdn.discordapp.com/attachments/747163566800633906/1028762338775547914/Screenshot_20221009_221353.png |
20:14 |
MTDiscord |
<Andrey01> what about #12843 ? |
20:14 |
ShadowBot |
https://github.com/minetest/minetest/issues/12843 -- Add modslist formspec for /mods command. by Andrey2470T |
20:16 |
MTDiscord |
<x2048> So the question of brightness is - do we change default tonemapping behavior from image 1 to image 4? Players can use exposure_factor setting to set the exposure correction they want. |
20:19 |
|
jwmhjwmh joined #minetest-dev |
20:27 |
MTDiscord |
<Warr1024> Hmm ... do you have a scene that shows contrast across the spectrum, e.g. a mix of dark and light areas? Tonemapping making things "brighter" is what I basically expected from an already-brighter-than-midtone scene to begin with... |
20:27 |
MTDiscord |
<Warr1024> but out of the ones you posted so far, image 1 does look the "most wrong" to me... |
20:45 |
schwarzwald[m] |
Has the meeting ended? It's been twenty minutes since the last comment. |
20:47 |
rubenwardy |
I guess so |
20:48 |
schwarzwald[m] |
Desour: I made the change across all of Irrlicht to handle mesh lifetimes using a shared_ptr, but it infected the public interface that Minetest uses, and Minetest doesn't build anymore after the change. |
20:49 |
schwarzwald[m] |
If anything like that is going to be done, it will not be limited in scope just to Irrlicht's internal implementation, unfortunately. |
20:52 |
MTDiscord |
<x2048> I would still appreciate opinions from coredevs on the default exposure for tonemapping, now that exposure control is a thing. |
20:52 |
sfan5 |
2.5 is just too much imo |
20:55 |
MTDiscord |
<x2048> I'd suggest going with 1.0 by default, as it matches the no-shader level, and it makes math easier. |
20:55 |
sfan5 |
wait are we discussing how it should look like with when the user chooses to enable tonemapping? |
20:55 |
sfan5 |
or new defaults? |
20:56 |
MTDiscord |
<x2048> We are discussing how it will look by default with tonemapping. Players can tune exposure_level to make it brighter or darker. |
20:57 |
sfan5 |
ok |
20:57 |
sfan5 |
my opinion probably doesn't count for that since I never enable tonemapping nor am I planning to |
20:57 |
MTDiscord |
<x2048> The image 1 is the current default, image 4 is the new proposed default for tonemapping. |
20:57 |
MTDiscord |
<x2048> 2 and 3 for reference without tonemapping / shaders. |
20:58 |
MTDiscord |
<x2048> Tonemapping is a must for bloom, dynamic light, godrays etc. |
21:02 |
MTDiscord |
<x2048> Another set of images: |
21:02 |
MTDiscord |
<x2048> No shaders: |
21:02 |
MTDiscord |
<x2048> https://cdn.discordapp.com/attachments/747163566800633906/1028774431029469194/Screenshot_20221009_230146.png |
21:02 |
MTDiscord |
<x2048> Tonemapping, Factor 1.0 |
21:02 |
MTDiscord |
<x2048> https://cdn.discordapp.com/attachments/747163566800633906/1028774521668386896/Screenshot_20221009_230113.png |
21:02 |
MTDiscord |
<x2048> Tonemapping, Factor 2.5 |
21:02 |
MTDiscord |
<x2048> https://cdn.discordapp.com/attachments/747163566800633906/1028774585451159572/Screenshot_20221009_230122.png |
21:03 |
sfan5 |
1.0 looks kinda dull, what about 1.5 or such? |
21:05 |
MTDiscord |
<x2048> What if the game can control the value? |
21:07 |
sfan5 |
the game should be able to anyway |
21:07 |
MTDiscord |
<x2048> Here is 1.5 |
21:07 |
MTDiscord |
<x2048> https://cdn.discordapp.com/attachments/747163566800633906/1028775669427097610/Screenshot_20221009_230522.png |
21:07 |
MTDiscord |
<x2048> I'd leave 1.5 to MTG then, as it will be different between the games. |
21:12 |
MTDiscord |
<x2048> BTW, having a factor of 1.5 is the same as saying that top 33% of all color values is overexposure. |
21:19 |
MTDiscord |
<x2048> Here is a different texture pack |
21:19 |
MTDiscord |
<x2048> No shaders |
21:19 |
MTDiscord |
<x2048> https://cdn.discordapp.com/attachments/747163566800633906/1028778849636450304/Screenshot_20221009_231044.png |
21:20 |
MTDiscord |
<x2048> Tonemapping, Exposure 1.0 |
21:20 |
MTDiscord |
<x2048> https://cdn.discordapp.com/attachments/747163566800633906/1028778946818478121/Screenshot_20221009_231503.png |
21:20 |
MTDiscord |
<x2048> Tonemapping, Exposure 1.5 |
21:20 |
MTDiscord |
<x2048> https://cdn.discordapp.com/attachments/747163566800633906/1028778992561569842/Screenshot_20221009_231740.png |
21:21 |
MTDiscord |
<x2048> Tonemapping will always tone-down colors from textures, because it reserves higher color values for 'HDR' part => tonemapping an SDR image will always make it 'dull' |
21:54 |
|
YuGiOhJCJ joined #minetest-dev |
22:12 |
|
jwmhjwmh joined #minetest-dev |
22:37 |
|
panwolfram joined #minetest-dev |