Minetest logo

IRC log for #minetest-dev, 2021-06-21

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

All times shown according to UTC.

Time Nick Message
00:28 MTDiscord <Warr1024> A confirmation dialog would be a nice feature to offer users, but don't make it mandatory.  Anyone who already has an external confirmation/selection process is going to be annoyed.
00:29 MTDiscord <Warr1024> A lot of apps already have undisablable confirmation dialogs, don't be part of the problem.
00:37 rubenwardy there could be a setting to turn it off
00:37 v-rob With appropriate dire warnings
00:37 rubenwardy the problem is that you can't otherwise preview the URL before opening it
00:38 MTDiscord <Warr1024> Hidden settings to turn it off would be fine, yeah, no need to advertise it...
00:39 MTDiscord <Warr1024> I preview URLs in the program I have registered as my "browser" before picking which browser to send it to.
00:39 v-rob Out of curiosity, why do you use multiple browsers?
01:12 rubenwardy you're not an average user
01:12 v-rob Me or him?
01:18 MTDiscord <Warr1024> If I were an average user I probably wouldn't be a Minetest user either.
01:20 kilbith joined #minetest-dev
01:27 Pexin most users just have a single default browser. anyway, how extensive are the formspec proposals? specifically, would tooltip popup text be feasible?
01:28 Pexin actually, a popup confirmation box wouldnt necessarily be very intrusive if positioned in a smart way
02:12 v-rob Success! I have fixed the source of the setViewPort bug in Irrlicht in irr#41! Now #10801 can start moving again
02:12 ShadowBot https://github.com/minetest/minetest/issues/10801 -- Add CSM 2D Drawing API by v-rob
02:12 ShadowBot https://github.com/minetest/irrlicht/issues/41 -- Fix `getViewPort` returning incorrect results by v-rob
02:13 v-rob I would appreciate it if someone could review the Irrlicht PR. It's pretty simple.
02:25 queria joined #minetest-dev
02:31 queria^clone joined #minetest-dev
02:40 v-rob Also, Irrlicht is a liar: irr#42
02:40 ShadowBot https://github.com/minetest/irrlicht/issues/42 -- Fix incorrect documentation on `setRenderTarget(Ex)` by v-rob
03:30 kilbith joined #minetest-dev
03:56 kilbith_ joined #minetest-dev
04:02 MTDiscord1 joined #minetest-dev
04:02 T^4im joined #minetest-dev
04:03 Alias2 joined #minetest-dev
04:03 rubywarden joined #minetest-dev
04:09 specing joined #minetest-dev
04:13 kilbith joined #minetest-dev
04:27 wsor4035 joined #minetest-dev
04:39 v-rob joined #minetest-dev
05:04 kilbith joined #minetest-dev
05:16 nrz joined #minetest-dev
08:01 specing_ joined #minetest-dev
08:13 VanessaE something's gotta be done about how lagy the crack animation when I'm using HDX.
08:14 VanessaE this is right after restart, I tried to dig some grass:
08:14 VanessaE https://imgur.com/4dycFe6.png
08:15 VanessaE this has been an ongoing problem for all of HDX's existence, so a number of year, but this is the first time trying to dig something actually triggered an error message
08:15 VanessaE years*
08:15 VanessaE I'm pretty sure I already filed an issue ages ago, but damned if I can remember.
08:38 VanessaE laggy*
08:40 VanessaE and by that I mean, start to dig and it isn't dig-and-gone.. it's more like:  d....hang...i...hang....i...hang....i...hang..ig!-and-gone-and-gone (i.e. it will sometimes insta-dig one or two mode nodes)
08:41 VanessaE more*
09:11 calcul0n__ joined #minetest-dev
09:24 hecks joined #minetest-dev
09:41 celeron55 hecks, my man
09:41 hecks hi =]
09:41 hecks bad times are upon us...
09:41 celeron55 i was surprised you didn't rip liso's shadows apart more than you did
09:42 hecks well, i simply wasn't around for the PR, I was busy
09:42 hecks and I've already got enough of a reputation of being literally Hitler for criticizing this feature
09:42 celeron55 not that i particularly like them either, i think we might need more map renderers
09:42 hecks so I must be careful
09:42 hecks but the dismissive attitude of the maintainers is what bothers me the most
09:42 celeron55 one for toasters and one for stuff with some kind of performance
09:44 celeron55 what do you think of the irrlicht fork
09:44 hecks we already have a toaster renderer technically, the no-shaders mode but
09:44 hecks well the fork is a step in the right direction, it lets us fix some issues
09:44 hecks I need to migrate the EJUOR_CONTROL bone fix when I get the time
09:44 celeron55 the fork is a bit of a "if only we had time" thing
09:44 hecks although
09:45 hecks the fork should be a stepping stone to divorcing irrlich entirely, there's no reason to layer one engine on top of another
09:45 hecks irrlicht's bad design is part of the everyday tech debt you have to deal with when fixing things, I'm dealing with SMaterial issues right now for instance
09:45 hecks and might do a shader system to replace it
09:45 hecks one compatible with rawdogging OpenGL if you ever decide to go that route
09:46 hecks anyway, this isn't good: https://a.uguu.se/exKcC7M3IuFt_after.png
09:46 kilbith joined #minetest-dev
09:46 hecks can I enlist your moral support in this issue?
09:47 hecks the maintainers, all due respect to them, keep breaking my upstream and it's been very stressful to deal with
09:47 celeron55 well again shadows are a stylistical feature and i think games should have control over those
09:48 hecks yup
09:48 hecks no engine ever leaves this up to the end user, it's always something the developer has to expose first
09:48 hecks and it just so happens that in minetest, the game is the server
09:48 kilbith sfan5: I recommend to go easy on hecks. this tone may be unbearable sometimes but they have a lot to bring to MT
09:49 hecks there's no need to go easy on me as in being overly polite, i don't require that of anyone ;]
09:49 hecks but I wish people actually listened when I point out problems
09:49 hecks cause I'm often the only one doing anything complex enough to expose said problems
09:49 celeron55 kilbith: that's almost parodic coming from yourself
09:50 hecks minetest_game doesn't look much worse with shadows because the visuals are too abstract for that to matter
09:50 kilbith celeron55: because I find myself in hecks somehow and I know how he may feel
09:50 hecks there are no soft normals on meshes or anything that could produce those artifacts
09:51 hecks my plan is to make a game that only requires the vanilla Minetest client to run, without the need to install anything
09:52 hecks this can promote MT as a platform and it also frees me from burdens of distributing things
09:52 celeron55 i have a plan like that too, the likelihood of me finding time for it within other projects sometime is about 20%
09:53 hecks I ideally need some sort of covenant with the maintainers that they will not spill bugs all over it, but they just keep doing it
09:54 hecks so if you could at least use your clout as the first developer to nicely ask them to start considering it, I'd be grateful
09:55 hecks My intention is not to block any new features or graphical experiments, I just need a safety valve on those
09:55 sfan5 we do (and have for a long time) needed a definition of what engine actually means
09:55 hecks well why not ask the guy who's been using a lot of engines in his life? =]
09:55 sfan5 currently it's stuck in an undefined place between "you can make Minecraft clones" and "you can make anything you want"
09:55 hecks it's like
09:55 hecks following my advice will not make MT any worse, quite the opposite
09:56 hecks anything I ask for is leaning towards supporting everyone's cases
09:56 sfan5 nobody says that, hopefully
09:56 hecks hopefully, but I sense some paranoia that I want to take people's features away, or something
09:56 hecks when all I ask for is an option that's present in every engine I've been dealing with to date
09:57 hecks Unity lets you just make a game that doesn't use shadows, and that's a valid choice - the more cartoony an art style is, the more difficult it is to make it work with dynamic features
09:57 hecks I'm not even opposed to shadows per se, but I would require server-sent-shaders and possibly SSCSM to even consider it - in short, I'd be implementing them myself
09:58 hecks that and I think shadow volumes like Doom 3 would look lovely compared to this
09:58 kilbith that's what I recommend to Liso
09:59 kilbith recommended *
09:59 hecks If shadow volumes aren't feasible for some reason, then high-res unfiltered shadows would at least look similar
09:59 hecks I got an almost acceptable result with those, but sadly Z precision and resolution were very lacking and I can't roll with that
10:00 kilbith aren't shadow volumes more computationally expensive than shadowmapping?
10:00 hecks it's a different kind of cost
10:01 hecks it's a CPU cost of extruding meshes, but sampling is easier, and no shadowmap render targets are used
10:13 hecks so yeah uh. stop breaking my stuff? thanks. https://a.uguu.se/WS7e5GmEzsKh_monch.png
10:15 pgimeno what are we looking there?
10:16 hecks nothing, just the game looking as it ought to
10:16 pgimeno ah
10:16 hecks as opposed to this https://a.uguu.se/xTLnFFagF6JL_after.png
10:17 kilbith interestingly your screens are still 4:3
10:17 hecks small side monitor...
10:18 hecks but for UI I use a reference resolution of 1280x720
10:18 pgimeno FWIW I think the request to have the server limit the client features is necessary, and not new. Fly, run, minimap, debug are all server-limitable.
10:19 hecks also FOV
10:19 pgimeno I guess that the argument here is that shadows are not a cheat, therefore there's no priority for it.
10:19 entuland joined #minetest-dev
10:19 hecks no, they only make everything look like a nightmare and make the game go from 70 to 17 fps
10:20 hecks there isn't even a way to control casting/receiving behavior yet so have fun with FX like fire casting shadows...
10:25 pgimeno OTOH I always dreamt with something like this for Minetest: http://www.formauri.es/personal/pgimeno/temp/Minecraft-shader_00235143.jpg
10:25 pgimeno even if only to take pictures
10:25 hecks that looks like SSAO and actual tonemapping (not the weird LDR kind we do)
10:26 hecks I also see some DOF
10:27 pgimeno the DOF isn't called for in my opinion
10:30 hecks none of it is called for in my opinion =] it's a block game...
10:31 celeron55 sharp blue shadows, yellow light, tone mapping to make a bit of an overexposure look to the light and SSAO to make variation to the shadows
10:31 hecks the blueness of the shadows is from the color grading / tonemapping curve
10:31 hecks using different black and white points or gamma for different color channels
10:32 celeron55 mapped as darker = bluer?
10:32 hecks let's see, to make bluer shadows you uh....
10:32 kilbith all of that isn't difficult to reach - it just needs a proper postprocessing framework
10:32 hecks I think you raise the black point of R and G?
10:32 celeron55 obviously
10:32 hecks there was a server sent shaders PR... it went to rot in hell
10:32 celeron55 that kind of tonemapping wouldn't hurt
10:32 hecks there was also a postprocessing stack PR
10:33 pgimeno I mean, it doesn't contribute much, maybe except the sensation to be a miniature
10:33 kilbith there was at least 3 different ones
10:33 hecks yeah tonemapping should be applied as a screen effect, putting it into the fragment shader was a mistake and we ought to delete that
10:33 kilbith all aborted
10:33 hecks how come things like that are aborted but this half finished shadow mapper wasn't...
10:33 celeron55 i don't even recall a postprocessing stack PR, probably was busy at the time doing something else... eh, like usual
10:33 hecks I'd gladly take a half finished shader API "so that we can improve it later" over this
10:34 hecks someone did that a couple years back
10:34 celeron55 inb4 fist comment to it is from myself
10:34 celeron55 first*
10:34 hecks =]
10:34 hecks anyway this shadows PR also gave us some tech debt
10:35 hecks we now urgently need shader variants in order to control it, this should've been Liso's job but I bet he'd have some choice words about me for this as well
10:35 celeron55 my only personal issue with these shadows is they're too slow for my haswell integrated graphics and my nvidia card doesn't work
10:35 celeron55 the lowest setting works and looks like garbage
10:35 celeron55 but whatever, i run weird settings anyway
10:36 hecks something is wrong with the shadow sampling, it's way slower than I've ever seen
10:36 celeron55 in true linux fashion default settings should be unusable and only those who dig themselves up from the settings grave are worthy of using the product
10:36 hecks normally I've never had problems with like 3x3 or 5x5 PCF but somehow this implementation sucks on anything other than sharp hard shadows
10:37 hecks celeron55: cool but the game developer should also have this way out
10:37 hecks I'm fine with everyone else's stuff looking like crap if they don't read the manual, but keep me out of it =]
10:38 hecks either way I've been a little busy https://paste.uguu.se/?612aadce1e3503bd#BM4hAL4wTkXQA5Tc89iFthuYJz72dMRY8NV5jTBhnxd
10:38 hecks but before I do this I'd appreciate a resolution on this... organizational issue
10:39 hecks I'll clean up after Liso and continue contributing if I can get some sort of agreement that this will never happen again
10:40 celeron55 i think the only way that's possible is you make all the requested features so that others can't make them badly
10:42 celeron55 i don't think we even have a document stating what things are subject to change and what things are not
10:42 celeron55 so we can't add visual style of games to it
10:43 celeron55 i'm certain there are two camps regarding to graphics
10:43 hecks can't you help me in any way here
10:44 celeron55 one is what you represent, those who think games should decide what they look like
10:45 celeron55 the other one is what i think is actually more prevalent, those who think the engine is like a viewer that you can adjust which which you view the world and whatever content is in it
10:45 celeron55 the same camps apply to for example web browsers
10:45 hecks well, browsers are a little different
10:46 hecks and I cannot stop anyone from forcing shadows on with an engine edit even after a fix
10:46 kilbith and then there is the one who ultimately decide between these two camps...
10:46 hecks I just don't want to make it that easy for the user to shoot himself in the foot
10:47 hecks also if I'm forced to make all the requested features so that nobody else breaks it, well, we're back to battered wife mode
10:47 hecks I have other things to do as well...
10:49 celeron55 what i'd like to write down is "games should be able to define what they look like in every aspect and the player should be able to easily make them look the way they want to"
10:49 celeron55 however i don't have a place to put this where people would read it and care about it
10:49 celeron55 umm
10:50 hecks that's a bit ambiguous, it doesn't define anything at all almost
10:50 celeron55 "games should be able to define what they look like in every aspect and the player should be able to easily make games look the way the games want to look like"
10:50 hecks how about simply
10:50 celeron55 well it just efficiently takes into account the fact that the user will probably always be able to force all kinds of settings if they want to
10:51 hecks well I don't have a problem with engine edits, but
10:51 celeron55 they just need to be aware of when they've done it
10:51 hecks https://a.uguu.se/nt1esNVwuEd7_after.png you know...
10:51 hecks also consider that most users are idiots and they'll blame the wrong person
10:52 celeron55 well okay, tell me what you would write
10:52 hecks "visual features significantly affecting a game's artwork should always be controllable by the server"
10:52 celeron55 be the CEO and we'll look at how many start laughing
10:53 hecks that means a feature like shadows is gated with an AND gate, it must be enabled on both the client and the server
10:54 hecks if you make no concessions for content creators, nobody will want to make anything nice in this
10:55 celeron55 a feature then should be defined so that always a change towards configurability adds a feature, i.e. if something has been hardcoded and is removed, then removing it is a feature and hardcoding is the default; if something didn't exist then the feature obvious
10:56 celeron55 is obvious*
10:56 celeron55 well, actually no
10:56 hecks that was a bit confusing
10:56 celeron55 that doesn't work right either
10:57 hecks the expectation should be that existing content can be presented the way it was made
10:57 hecks I started making this in 0.4, which had no gouraud shading or shadows
10:57 hecks literally the first thing I did was import a model and try to probe the capabilities of the engine to see what I have to work with
10:57 hecks and pulling this featureset from under me now isn't fair
10:59 celeron55 well then it should be defined exactly so: "development should be made so that existing content doesn't change functionally or (emphasis) visually"
10:59 celeron55 the "functionally" part has always been followed... mostly
11:00 celeron55 the problem there too is, stuff happens and some interfaces and settings have been so stupid nobody wanted to see them ever again
11:00 hecks well in case something is so terrible that nobody wants it, like the auto normal maps, delete it
11:00 hecks the test should be "will anybody miss this"
11:00 pgimeno as a user, I would like the possibility of forcing shadows on even in games that want them off
11:00 celeron55 well in case of shadows, somebody could think nobody would miss not having shadows
11:01 celeron55 and somebody probably thought so
11:01 pgimeno the settings should be something like: off, on, force off, force on; and while in off/on, the server has control over that
11:01 hecks wellll
11:01 hecks that brings us back to the point, why do you even want to do this
11:02 hecks what's so great about this https://a.uguu.se/ho20HHpzSdMB_after.png
11:02 celeron55 personally, i don't care, but i think what people are thinking is http://www.formauri.es/personal/pgimeno/temp/Minecraft-shader_00235143.jpg
11:02 celeron55 and there's a desire to make that possible
11:02 hecks well yeah, except that's not what we got here
11:02 pgimeno hecks: I may want to take a picture with shadows of a part of the game that doesn't include a close-up of the character
11:02 hecks and I think even if you put my artwork in that renderer, it wouldn't look good
11:03 Fixer joined #minetest-dev
11:03 hecks pgimeno: okay then, but bury this deep in the .conf
11:04 celeron55 i think we need to review the current game settings model
11:04 celeron55 actually
11:04 hecks that is true, some settings live in the wrong place
11:04 celeron55 it's probably wrong and useless
11:04 celeron55 not even looking at it
11:04 hecks or shouldn't be settings, or should be API instead of settings
11:05 hecks what do you mean by useless, like
11:05 hecks the per-game section of .conf?
11:06 celeron55 actually, let's go through a thing first
11:06 hecks uh huh?
11:07 celeron55 no games had shadows until this point, and then shadows were added. in the model you suggest no games would now have shadows even while they were added, while i guess 90% of them want shadows and 10% don't want
11:07 hecks uhhh I suggest something different, like
11:07 celeron55 are you still saying the default "game setting" for having shadows should be false?
11:07 hecks I'm okay having to add a few lines of code to suppress it on my end
11:07 hecks it's fine if it's all on by default
11:07 celeron55 or are you saying the default game setting could be true, but the client would follow the server
11:08 hecks it's more like
11:08 hecks by default the game doesn't care (I'd rather have this be a matter of lua scripts rather than server .conf)
11:08 hecks and so all games get the new feature by default
11:08 celeron55 (i agree game settings should be a lua interface)
11:09 hecks I mean just for the reason that
11:09 pgimeno again, the setting should be (functionally) like: on / off / force on / force off - where on could be the default, but on/off is overridable by the server (but not force on/force off)
11:09 hecks this is a game's decision and so it should come with an installed game too without extra config
11:09 hecks anyway
11:10 hecks everything is on by default, and a game gets to call some sort of API to forbid it
11:10 hecks anything is fine as long as it can get the desired effect
11:10 hecks like
11:10 celeron55 well i guess game could set a setting like "legacy mode", which would cause the engine to not automatically enable any new features
11:10 hecks if I get a sun/moon flag to stop rendering shadows, that's an acceptable workaround and I'll stop bitching about it
11:10 celeron55 and the game would have to exclusively enable new features
11:10 hecks just like I'm fine with setting shaded=false; on all CAOs
11:10 celeron55 that would make it future proof
11:10 celeron55 or i guess "compatibility mode"
11:10 hecks it's okay to expect the developer to follow the git repo and keep up with this
11:11 hecks as long as there's some opt-out that can be toggled at minimal cost
11:11 hecks and by that I mean, very little code to support it and no unreasonable bandwidth demand on the server
11:12 hecks so let's say sending each player a packet on login to say that this game shouldn't be rendered with shadows is an acceptable burden
11:12 hecks while let's say that using shadow caster/receiver flags on every material in the game to suppress it would not
11:13 celeron55 so actually what's needed is not "existing content can be presented the way it was made" as in it automatically would be, but as in the server can make clients show existing content as it was made (functionally or visually), assuming the user hasn't forced some settings and having been bashed for it by the engine
11:13 hecks and in the case of something like shadows, the performance cost must be entirely mitigated (which is why I have to do this variant thing now...)
11:13 hecks yeah that's about it
11:13 hecks as long as a game is maintained, it should be able to not have to deal with forced art style changes like this
11:13 hecks but it's fine to require the developer to add a line here and there
11:14 hecks this is all that this drama has been about, I just asked Liso for this stupid trivial opt-out feature
11:14 hecks and I want any nontrivial feature like this to come with that
11:16 celeron55 "as long as a game is maintained, it should be able to maintain its function and art style without players having to change settings"
11:16 hecks yes
11:16 hecks and for the long term, as an ideal
11:16 celeron55 that took a moment to type
11:16 hecks "the game server should ideally not have to beg the player to change their config"
11:17 hecks this is for any future de-hardcoding of things like camera control
11:17 celeron55 there's the guide, now where to put it
11:18 hecks your roadmap thread that everyone links to, dev wiki, the recently added roadmap thing
11:18 celeron55 MT does have a long history of compatibility with old content and it is one of its selling points so this does make sense and not really a new thing
11:18 celeron55 *isn't really a new thing
11:19 celeron55 the art style part is something nobody had really cared about, it's a new concept around here that somebody is trying to have an art style
11:20 celeron55 i guess i said that already
11:20 hecks yes, I'm aware that nobody else has had this sort of requirement
11:20 hecks at least that we know of
11:21 celeron55 oh man this devwiki certificate thing too
11:21 hecks huh? oh yeah
11:22 hecks let me guess, letsencrypt?
11:22 celeron55 you won't believe how big a project that is, don't ask
11:22 celeron55 you'll lose all hope
11:22 hecks the uh
11:22 hecks the dev wiki?
11:22 celeron55 :D
11:22 celeron55 let's continue
11:22 hecks I mean if we have a documentation problem I can start helping out...
11:23 celeron55 i mean the "getting the certificate sorted out" thing
11:24 hecks haha
11:24 hecks the wiki could use a cleanup cause at the moment the best source of knowledge about the code is groveling it manually
11:24 hecks or maybe the documentation should just be in the code, that's easier to maintain
11:28 celeron55 oh yes we have this now https://github.com/minetest/minetest/blob/master/.github/CONTRIBUTING.md
11:28 celeron55 of course it's completely impossible to find being in that silly .github subdirectory
11:29 celeron55 and https://github.com/minetest/minetest/blob/master/doc/direction.md
11:34 hecks right, even better
11:36 celeron55 my roadmap is a museum of sorts
11:37 celeron55 it's not necessarily outdated, it's like electric cards in the 60s
11:37 celeron55 the time will come
11:37 celeron55 lol
11:37 celeron55 eh
11:37 celeron55 electric cars*
11:39 celeron55 the formatting was messed up in some forum update too... i'll at least fix  that
11:44 calcul0n_ joined #minetest-dev
11:46 MTDiscord <Liso> I was reading the conversation and I didn't want to get into, I've said it before I'm not here to fight, but the personal references force me to do it.  Just remove the shadows PR if you want, I'm not going to get mad at all and there is a lot of work to do. And I'm nobody to say anything else about this behavior, so that's all I'm going to say.
11:46 hecks it's not wrong, we just need a complete rewrite and cold fusion before we even begin with most of that =]
11:58 celeron55 in the end all it's really missing is just an on/off switch in the right place
11:58 hecks yes, though it'll be a bitch to add now
11:58 hecks I already wrote this off switch actually and it works but
11:59 hecks now I've got shaders trying to use nonexistent shadows and still consuming fill - and it turns out, all this stuff is decided in client init
11:59 hecks and then worse, shader IDs are propagated by value to all new objects on creation with no anticipation that the GL program might ever want to change
11:59 VanessaE Liso: no, it's got its warts but its better to have it than not.  it just needs some TLC.
11:59 hecks so the whole shader API must be replaced with one that supports variants, and works with references, not by value
12:02 MTDiscord <Warr1024> I think the shadow merge as it is already is a net positive, even though I maintain a game that can't benefit from it in its current form and I had to disable it server-side.  If we wait until things are perfect before adding them, they'll never get tested in the field and thus never can actually improve, and we'll just have nothing.
12:04 MTDiscord <Liso> probably just force the setting, like server send a ¨force_enable_shadows: false¨ and just disable the setting for that game, could be a good option and can work with all the settings ( like tonemapping, shaders, etc)
12:04 celeron55 https://forum.minetest.net/viewtopic.php?p=396525#p396525
12:04 celeron55 surprising how many roadmap items were done in a way or another
12:05 hecks ah, VAEs
12:05 hecks I'll want VAEs at some point so there's a nonzero chance of this happening... someday
12:05 hecks cause I want sky pirate fights on airships and whatnot
12:05 MTDiscord <Warr1024> I have an 8-year-old business-grade laptop (not a gaming rig) with an Ivy Bridge iGPU and shadows run perfectly fine for me at the lower quality end, don't have a measurable drop on my FPS, look as good as anything else in the engine, and I don't even have to bother turning them off when playing a game that doesn't utilize them.
12:05 celeron55 yeah... yeah
12:05 celeron55 we'll see
12:05 hecks >Measure and fix rendering bottlenecks
12:05 hecks also on my list
12:05 celeron55 i'd make a hacky implementation if i knew i could force it upstream
12:06 celeron55 but i know i really can't
12:06 hecks actually the measurement is done, I know where the bottlenecks are
12:06 hecks well, some really dedicated people have made hacky implementations in lua
12:06 VanessaE apart from the judder/stutter problem, shadows work mostly fine for me too, once I landed on some good settings.
12:06 hecks but I think MT needs a concept of multiple worlds in a client environment for VAEs to work elegantly
12:07 hecks VanessaE: Most models used in Minetest are flatshaded, with hard edges and flat faces - I use a model with round features and few hard edges, which exposes a lot of problems
12:07 celeron55 yeah, i'm not willing to implement multiple worlds
12:07 celeron55 they would require their own lua environments too
12:08 celeron55 what i would be willing to do is allocate a node volume from the main world to be used as VAE content
12:08 celeron55 so that the single signed 16-bit x,y,z space remains
12:08 celeron55 and mods are happy, and the network protocol is happy, everything is happy
12:08 celeron55 but
12:08 hecks but there isn't a whole lot of off-map space to use for this
12:08 celeron55 with multiple lua environments mods would be happy, just make everything else happy too
12:08 hecks and it's limited, you can run out of it
12:09 MTDiscord <Warr1024> VanessaE, even with well-tuned settings you didn't manage to get rid of the judder?  That's a shame ... also having a conversation involving abbreviations for Voxel Area Entities while VanessaE is present is confusing.
12:09 celeron55 you could even partition the main world into multiple server-side lua environments to use multithreading
12:09 hecks hey, I didn't even think of that
12:09 celeron55 the scale (at least in potential resource use) could get almost MMORPG-like
12:09 VanessaE Warr: nope, the judder is very much still there.
12:10 Wuzzy joined #minetest-dev
12:10 hecks also, multiple worlds solves a lot of other problems like... multiple worlds =] and possibly extending the map boundary
12:10 VanessaE but Liso said he has an idea why
12:10 celeron55 a 32-core server with a terabyte or RAM? no problem
12:10 celeron55 just mix in the users
12:10 hecks you could designate the current MT concept of a "world" as a superchunk with its own execution environment
12:11 hecks just have a way to dock those worlds together seamlessly, possibly by duplicating entities at boundaries
12:11 hecks so an entity is "visible" to both worlds temporarily
12:11 celeron55 i'll add this to my roadmap that i'll never do but it sounds cool
12:11 hecks look, if I can get mibi off the ground, this will become realistic
12:15 MTDiscord <Liso> Yes, working on it
12:16 MTDiscord <Warr1024> multi-world seems like it could be implemented a lot more simply with just multiple servers and the ability for a server to redirect a client to log into a different server with the same credentials...
12:16 celeron55 but it's the most boring VAE usecase
12:17 hecks well of course, movable ships are a part of this
12:17 hecks also if you have multiple world-sized VAEs available, and a bigger coordinate space to work with, you can have the space game you've always wanted
12:17 celeron55 really i'm wondering, why nobody has made the voxel MMORPG with movable ships open source project
12:18 celeron55 or engine
12:18 hecks it's hard!
12:18 celeron55 nah
12:18 hecks we're the ones holding this bag
12:18 celeron55 it's not hard
12:18 celeron55 just do it shitty enough
12:18 celeron55 my motto
12:19 hecks :o
12:19 celeron55 can somebody come mow my lawn? i could write cool ideas on my roadmap instead
12:19 hecks get a goat
12:19 celeron55 it'd die when winter comes
12:20 freshreplicant[m Veloren has airships, but it's a pretty different beast to MT.
12:20 celeron55 not very nice
12:20 hecks oh right uhhhh
12:20 hecks get one of those fluffy cows
12:20 hecks that wouldn't die
12:21 hecks you made me briefly wonder why hasn't anyone made a lawn mowing roomba but then realize that putting that on a stupid robot is not a brilliant idea
12:21 Noisytoot joined #minetest-dev
12:21 celeron55 umm
12:21 celeron55 well there are lawn mowing robots
12:22 celeron55 not very cheap if you have a big lawn but don't have to waste the time then
12:22 hecks uhhhhhhh yeah
12:22 celeron55 if there was an open source one maybe i'd get one
12:22 hecks knowing the quality of software around the world in general, you won't catch me going anywhere near one of those
12:22 celeron55 the proprietary crap with android apps and other things make me puke
12:23 hecks just in case I become a floating point rounding error statistic
12:24 celeron55 that being said, why isn't there a minetest mod where grass grows stupidly high and annoying if you don't mow it every week
12:24 celeron55 and mosquitoes live in the long grass
12:24 hecks yeah actually why is grass height randomized and not growing
12:25 VanessaE there was.
12:26 VanessaE I had junglegrass mod that would spawn it, make it spread kinda like flowers do now, and it would grow in height over time.  if you didn't "mow the lawn" now and then, well, you get the idea.
12:26 VanessaE it ... wasn't well received.
12:26 hecks great, now we can have homeowners associations on minetest servers
12:26 hecks trim your lawn or ELSE
12:27 VanessaE ha.
12:27 hecks I've already seen rental flats in minetest... nothing would surprise me
12:27 hecks MT servers are depressingly realistic
12:28 hecks you start as a broke hobo in a gigantic city where everything is owned by someone and you can't even pilfer an apple to save your life
12:31 celeron55 well at least there's no lawn anywhere to be seen
12:31 Alias joined #minetest-dev
12:32 VanessaE (but then again, that was before MT has its own tall grasses, maybe they'd work-out better, considering junglegrass is huge by comparison)
12:32 celeron55 it for sure is funny how, when given an imaginary world where you can do anything, most people start copying the real world to the most depressing details
12:33 VanessaE I think that's a matter of control.
12:33 hecks this is why I sympathize with griefers
12:33 VanessaE you build a realistic-ish world, but doing things in-game in ways you can't or are forbidden from in the real world.
12:33 hecks don't leave me unattended with a lava bucket next to a mall... just in case
12:34 celeron55 griefers completely understand the situation, and ruin it for all the others
12:34 celeron55 it's an interesting dynamic
12:34 hecks I just actually call them mall servers, that's what they feel like
12:34 hecks only Just Test got it right because the city was all there was
12:34 hecks and it felt more like a Fallout kind of game
12:35 hecks JT also more importantly used vending machines and had an economy, based on heavy scarcity
12:35 hecks it wasn't that easy to just claim a big patch of wilderness
12:35 hecks and not as desirable
12:36 hecks any of you played Gundul's 3xile server?
12:36 hecks well crap, we're kind of in the wrong channel for this, sorry
12:37 celeron55 i mostly used my editor for ruining the game for people rather than actually opening the game and playing
12:40 celeron55 i think i should run a devs-only minetest server
12:41 celeron55 altough, i would expect nobody to be there
12:41 hecks i would
12:42 hecks until i get banned for nsfw pixel art or something
12:42 celeron55 it would have no rules, other than your code being included in what's running
12:43 celeron55 i mean, the code of the persons on the invitation list
12:43 hecks uhhh um
12:43 hecks at least one commit in the repo?
12:43 hecks and pure anarchy otherwise? excellent :DDD
12:43 hecks hide your buckets
12:44 celeron55 i think anarchy is the only way to go for something i run
12:44 celeron55 by running it, i have the biggest hammers
12:44 hecks what if we ran another exile server... but i'd have to ask Gundul for his version
12:44 hecks he patched that game to sort of work online
12:45 hecks so what's the link that I have to use next time someone tells me visual breakage is not a bug?
12:54 pgimeno <celeron55> [multiple worlds] would require their own lua environments too
12:54 pgimeno what problem is that intended to solve?
12:54 hecks the API assumes a single world
12:54 hecks it's best to leave it that way
12:54 rubywarden I can see that causing issues
12:54 rubywarden For example, what about more global state like chat and player connections
12:55 hecks that doesn't really depend on a world, does it?
12:55 rubywarden I think doing something like virtual mapping of memory would work better
12:55 rubywarden Where different worlds occupy different coordinate spaces
12:55 hecks sparse worlds?
12:55 hecks but I see no reason to like
12:55 hecks pin a VAE ship in the space of some other world
12:56 hecks this offers no utility other than not needing a new VM environment, however
12:56 hecks the separate VM thing is a cool opportunity to use more CPUs on a server
12:56 hecks entities would simply be visible to all worlds that they are reasonably within the range of
12:57 celeron55 https://forum.minetest.net/viewtopic.php?p=396527#p396527
12:57 hecks as for docking, I think that a docked VAE ship is best handled by temporarily blitting it to the world it just docked into
12:57 hecks avoiding all problems
12:58 hecks celeron55: https://a.uguu.se/RFFBknhFfmZp_3.png
12:58 MTDiscord <josiah_wi> Small bump for irr#39
12:58 ShadowBot https://github.com/minetest/irrlicht/issues/39 -- Fix unintentional introduction of public variables by NeroBurner
12:58 celeron55 it's just my roadmap though, anyone is free to call me an idiot and not follow it
12:59 hecks well
12:59 hecks it's a step in the right direction
12:59 hecks people tend to listen to you
13:05 pgimeno <rubywarden> For example, what about more global state like chat and player connections
13:05 pgimeno <hecks> that doesn't really depend on a world, does it?  <--- In a way. Imagine worldediting with chat commands. These chat commands need to reach the world being edited, so they need to be broadcast. Also, if each world has its own players, chat needs to be passed from world to world.
13:05 pgimeno Hm, the second part may not be true.
13:05 hecks yeah there's stuff like this to solve
13:06 hecks for legacy purposes I'd just broadcast actions like this to all worlds
13:06 rubenwardy The only compatible solution here would be to have a chat per world, in which case it could be better to have different servers
13:06 hecks and allow extra parameters to specify a world
13:06 rubenwardy Then you end up with duplicate consumption
13:06 rubenwardy For example, an IRC bridge
13:06 hecks well chat itself per se has no relation to the voxel map
13:06 hecks it's a part of the server environment
13:07 hecks but right, separate VMs would all consume the same message
13:07 hecks so you'd need like
13:07 hecks a master VM and map VMs
13:07 celeron55 i'd say it would only go to the world where you are
13:07 hecks and that's a hell of a restructuring
13:08 celeron55 the mods in the world would be responsible for broadcasting it to other worlds
13:08 celeron55 if the message needs to be
13:08 hecks well in the case of VAEs, which world are you really in?
13:08 hecks you're kind of in both temporarily
13:08 celeron55 it doesn't matter, either or
13:08 hecks your SAO is visible to both, and collides with both
13:08 pgimeno ugh, so local world mods? like, multiple servers in one?
13:08 hecks if you shout from a ship, people on the ground ought to hear it
13:08 rubenwardy I think there's a bit of confusion here with VAEs Vs dimensions
13:08 celeron55 maybe it is displayed to the player whether the player is on the VAE or the static world
13:09 hecks well that's because the discussion started with the two sharing functionality
13:09 celeron55 so that the player knows which worlds' worldedit they're commanding
13:09 hecks VAEs with their own maps would be "clean" for lack of a better word
13:09 hecks as opposed to allocating them dynamically off map
13:09 hecks but okay, I kinda see the merit of like
13:10 hecks a unified coordinate space, but I'd rather introduce a W coordinate for this purpose
13:10 hecks where w is the world index
13:10 hecks if w=0, we're referring to the "base world"
13:10 hecks but at the same time we are not playing with fire by pretending that VAEs or dimensions are somewhere off map
13:11 hecks even though this is how we're hacking dimensions and instances right now
13:12 pgimeno I can understand having multiple worlds being like having multiple servers except maybe sharing the network, where the benefit over running multiple servers would be the inter-thread communication speed. But writing a game for multiple servers would be N*trouble for game creators, where N is the number of worlds (double the trouble for two worlds like nether and normal)
13:13 hecks I simply see two constraints on this design
13:14 hecks one is that mods must still work, another is that the VAE and dimension implementation shouldn't be too hacky
13:14 hecks separate voxel maps in memory and a new W coordinate in positions seems to satisfy this?
13:15 hecks the question of entities remains but I think the entity would just be in superposition over several world layers
13:15 hecks like
13:15 celeron55 the lua api is completely incompatible with any added coordinates, even if the engine supported both coordinate formats (assuming whatever for when there's no fourth coordinate), mods provide interfaces to other mods that will drop the 4th coordinate when they're trying to use it and where would the location even point to when the 4th coordinate is missing
13:15 celeron55 basically there would have to be a new generation of mods (or updated old ones) that support the 4th coordinate, and if you use multiple worlds or VAEs, you couldn't use any non-updated mods
13:16 pgimeno I was thinking more about minetest.setWorld(w) to work on a different world, and entity:moveToWorld(w) to move entities between worlds
13:16 hecks in one way or another mods will have to start supporting VAEs
13:16 hecks I don't think this can be done without *any* upgrades
13:16 hecks just the entity superposition is puzzling enough
13:16 celeron55 well, that's  what the 4th coordinate update problem looks like
13:16 hecks say you have a ship that's allocated somewhere off-map
13:17 hecks and you want to compute a distance between one of its nodes and a player that's on the ship
13:17 hecks and maybe another SAO that's off the ship
13:17 celeron55 the "multiple lua environments" update problem looks different, basically some mods have to start supporting inter-environment communication with other instances of the mod
13:17 celeron55 but not all mods, only those that want to have global effects
13:17 celeron55 many mods are local
13:17 hecks the problem wardy pointed out is pretty serious
13:18 hecks you need a "master VM" for certain global things
13:18 celeron55 yeah, or maybe just assign one world as such
13:18 hecks so basically
13:19 hecks dimension/VAE api comes with a new VM per instance and it's stated with big red letters
13:19 celeron55 i've done a segmented MMORPG that's quite like this, it's not really a problem
13:19 hecks and if you want to support it, you must deal with that
13:19 celeron55 of course nothing came of it but it worked
13:19 hecks "i've done an MMORPG, nothing came of it but it worked"
13:19 hecks hey that's my line
13:19 celeron55 altough, it did have the master server
13:19 celeron55 not a master world
13:19 rubenwardy You can't add a 4th coordinate, which is why my suggestion is to use virtual mapping
13:20 hecks we (the server crew) considered server side engine modifications to utilize all the spare computer junk we've got
13:20 hecks so maybe we'll do some more R&D on this
13:24 celeron55 "You can't add a 4th coordinate" is wrong, i just described the problem it creates, it's not that serious if we look at the long term. it's just really annoying in the short term
13:24 rubenwardy virtual coordinate mapping would map multiple worlds onto the same coordinate system
13:25 rubenwardy I'm aware
13:25 hecks it's just two versions of the same problem
13:25 hecks or rather moving the problem
13:25 hecks offworld coordinates could be handled by mods without being dropped but
13:25 celeron55 the main thing that will make this choice is whether the CPU load split is desired or not
13:25 hecks they would no longer correspond to valid XYZ coordinates for things like distance calculations
13:26 hecks meanwhile with a W coordinate, the XYZ space calculations for things like entity positions would always be consistent
13:26 celeron55 whatever the answer to that is already forces our hand
13:26 hecks or at least sane
13:26 hecks I mean in the end, if a mod doesn't support this it's hosed anyway
13:26 hecks no matter which way it's implemented
13:27 rubenwardy you could do both - virtual mapping for a legacy api, 4th coord for a new api
13:27 hecks VAEs will need extra work from modders to support
13:27 hecks what purpose does the virtual mapping provide though, other than maybe not losing the W coord in transit
13:27 rubenwardy it prevents mods from breaking
13:28 rubenwardy or at least breaking so much
13:28 hecks won't they still be broken if they don't know how to interpret this strange vector?
13:28 rubenwardy not in most cases
13:28 celeron55 i guess you could support a 4th coordinate somehow so that when calling a mod, the engine will set a global variable in the lua environment to indicate which 4th coordinate it is in, and any calls back to the engine will assume that 4th coordinate if the 4th coordinate isn't set
13:28 celeron55 i think it would allow compatibility surprisingly far
13:28 rubenwardy and they'd still be broken with 4th coord and VAEs: as VAEs are freefloating
13:29 hecks I mean sure, maybe provide pack/unpack functions to map XYZW to XYZ and back when you want to hand this to a legacy mod
13:29 rubenwardy that's an interesting approach
13:29 hecks and oh right
13:29 celeron55 i don't want virtual mapping, it's too hacky and it creates persistent problems
13:29 hecks you can metatable W to the current world ID
13:30 hecks I still think no matter what happens, VAE support will require explicit work on the modders' part, just because it's such a huge upheaval
13:30 olliy joined #minetest-dev
13:31 celeron55 i think no matter what happens there will be enough compatibility for someone to install a mod with say a furnace-type thing and it will still work, and anything less complex than that
13:31 celeron55 anything with entities will probably act weird on VAEs
13:31 hecks ABMs and pipelines will work without any modifications
13:32 hecks while yeah, any inter-VAE calculations are inherently complicated
13:32 hecks but, hear me out
13:32 hecks which is easier, using a VAE's transform matrices to translate between consistent XYZ coords
13:32 rubenwardy given how the other longterm feature is going (client-side scripting), I have doubts about VAEs ever working
13:32 hecks or doing the same but with the VAE space offset on top?
13:33 hecks VAEs aren't a hairy security risk like CSS
13:34 hecks if nothing else, a W coordinate makes the math easy
13:35 hecks you're just one matrix mul away from converting a point in one map's space to another's
13:37 hecks maybe even w isn't necessary, like
13:37 hecks the coordinates just depend on who's asking
13:39 pgimeno that's where minetest.setWorld(w) comes into play
13:39 hecks what you'd need is APIs like
13:40 hecks ObjectRef:get_world(), ObjectRef:set_world() to set the current reference world for a SAO
13:40 pgimeno it seems you're ending up at what I suggested :)
13:40 hecks then, a WorldRef type with
13:41 hecks WorldRef:translate_coords_from( WorldRef, vec )
13:41 hecks and translate_coords_to
13:41 hecks also any world related APIs are now methods of WorldRef
13:41 hecks WorldRef:get_objects_in_radius
13:42 hecks and their legacy versions either fall through to world 0 or maybe a "bound" world
13:42 hecks like GL makes you bind objects
13:44 pgimeno something like WorldRef:translate_coords_from seems to assume that the other world's coordinates are translatable to this world, I'm also thinking about parallel worlds and I don't see how it would fit in that model
13:45 pgimeno parallel worlds as in parallel dimensions
13:48 nrz hecks, i'd be glad to review your PR about your issues, tell me when it's ready :)
13:52 hecks nrz: uhh what exactly?
13:55 hecks my "issues" at the moment are: covenant between maintainers and modders to not break visuals, a shader api upgrade, shadows displaying without a source, sky layers API (in that order)
14:01 pgimeno and no settings API improvements to allow the server to override client settings?
14:01 hecks not at the moment, this is outside of the scope
14:01 celeron55 that sounds more of a workaround than a design
14:02 hecks yeah I don't like the "settings negotiation" idea
14:02 hecks there's nothing wrong with the current PlayerObjectRef apis controlling things
14:02 hecks that's the preferred mechanism imo
14:03 hecks anyway I want a quick fix for this incomplete shadows feature and concidentally fixing one bug with it will give me a way out
14:03 hecks and then the sky layers will give even better control over it
14:04 hecks by reframing the sun and moon as generic directional light objects and letting you specify if they should cast a shadow
14:04 celeron55 i also like the ObjectRef client control interfaces
14:05 hecks there's nothing wrong with how fov or other settings are currently limited
14:05 hecks so for future fixes like camera mode overrides, we can continue doing it
14:05 celeron55 i think i'll mention this in my roadmap
14:05 hecks reframing this issue as "settings negotiation" misses the point and kinda bureaucratizes it
14:05 hecks it's a great way to avoid doing it
14:06 celeron55 so that people don't slip into the setting override mess
14:06 hecks ha
14:06 hecks could you believe that I've heard a proposal for a built in feature
14:07 pgimeno uh, I can foresee something like, "for this game I absolutely need shadows"
14:07 hecks hmmm
14:07 rubenwardy definitely a bad idea for a game to require shadows, think of the potatoes
14:07 pgimeno (it's the other side of the "for this game I absolutely need to disable shadows" coin)
14:07 hecks anyway... where the client receives a pop-up on login saying that the server recommends certain features and whether you'd like to set them that way, someone suggested that, that's pretty upside down
14:08 hecks a formalization of begging the client to enable something :DDDD
14:08 hecks but interesting point pgimeno
14:08 nrz at a point camera should be decoupled from player and handled diferently, this will permit specific animations, imagine you talk to a NPC and the camera front him :)
14:08 pgimeno rubenwardy: think of it like an example, we're talking about future-proofing
14:09 hecks a game that uses light and shadow as a mechanic could be able to force shadows on in at least a minimal capacity
14:09 hecks I will consider that in the sky layers
14:09 hecks so that shadow=true can also be shadow="force" in this extreme case and the client will attempt to obey (without being too resource intensive hopefully)
14:10 hecks >imagine you talk to a NPC and the camera front him :)
14:10 hecks nrz: you can point the player's view direction at an NPC already
14:10 hecks I tried it and it felt kinda bad
14:13 pgimeno again, I believe the user needs to have the power to override server-mandated settings, at least those that don't allow cheating, so a force-on/force-off value should be allowed. Maybe force-on/off could only be set in the file, if you want it well hidden.
14:13 celeron55 https://forum.minetest.net/viewtopic.php?p=396527#p396527
14:19 celeron55 we'll see about those force settings when someone starts actually requesting them
14:19 celeron55 it's just a client addition
14:19 celeron55 we need to have these apis and protocols first
14:20 celeron55 yes, i don't count your request "actually requesting" because you haven't even seen the still non-existing system in action
14:24 hecks pgimeno: I understand the screenshot sentiment but uh
14:24 hecks it's risky
14:24 hecks users are stupid and they'll break things and blame it on the wrong people, can this be no more than an obscure .conf setting?
14:26 celeron55 this is free software, we allow people to be stupid if they want to. but that being said an option only available in the file will already allow people to be stupid
14:26 pgimeno imagine "My client crashes every time shadows are enabled, but the server activates shadows. Can I have some way to disable shadows even if the server wants them on?"
14:26 celeron55 the goal wasn't to force enable shadows, just force disable
14:27 celeron55 we know some clients can't run with shadows anyway
14:27 celeron55 you can even disable shaders in the client if your hardware needs it
14:27 pgimeno that's very application-specific, I'm thinking about something more general that applies to more settings, and using shadows as an example
14:28 celeron55 well i am proposing not to make anything general
14:28 celeron55 but make everything have a specific api
14:28 celeron55 then you can make them behave exactly in the way that makes sense in each case
14:29 hecks yup
14:29 pgimeno that's the philosophy that makes things a mess, if you pardon my bluntness
14:29 hecks no, there's no need to shoehorn things into config
14:29 hecks we've already got too many bad things in there as it is
14:29 celeron55 can you describe the mess it would create, in practical terms or as an example
14:30 hecks and for instance, things like third person camera don't have a .conf entry, would you make one just to fit it into this settings negotiation system? nonsense
14:31 pgimeno well... we have a FOV API, a sky API, and we want to have a shadow API, instead of having one common API for FOV, sky, and shadow
14:31 hecks correction, I want to roll shadows into sun/moon which already exists
14:32 hecks just as an extra flag
14:32 hecks and then into the generalized "directional skybox sprite object" form once the road is clear
14:32 celeron55 pgimeno: those seem like well organized APIs, unlike a "settings api" which in actuality is all of those
14:32 hecks you'll be able to flag any skybox object as a light emitter and whether or not it uses shadows
14:33 hecks nothing wrong with adding more API as long as there's a use for it
14:33 hecks much better than creating a server-side option for shadows
14:33 hecks I'm just gonna make shadows go away when there's no sun and moon initially
14:33 pgimeno I'm not saying they aren't well organized, I'm saying it explodes the number of APIs instead of having a uniform interface for things that boil down to a client setting that the server can manage
14:34 hecks so that overcast scenes can look right
14:34 pgimeno as a result, lua_api.txt grows, the number of functions grows, the complexity grows
14:34 hecks this is a great attitude but just not in this particular case
14:35 hecks because settings negotiation is the worse approach of the two
14:35 hecks I will be adding no new functions to fix this
14:35 pgimeno negotiation? it's easy, server sends the desired setting, if client doesn't have "force" that's the prevalent setting, if client has "force" then the client's choice prevails
14:37 hecks ok pgimeno, but now a game wants to force it off, it either has to put it in its root folder minetest.conf (a semi obscure feature) or change a .conf entry in init (is that even possible?)
14:37 pgimeno no, it just has to send the setting on client login
14:37 hecks all while introducing a new point of failure, the server admin's home folder minetest.conf which may be shared with other server instances
14:38 hecks also it's inflexible, what if I want to only disable shadows in specific circumstances?
14:38 pgimeno Settings:set_client_conf_bool('shadows', false)
14:38 hecks like when the player is underground
14:39 pgimeno actually, make that player.settings:set_conf_bool('shadows', false)
14:39 pgimeno the server-sent setting would be run-time only
14:39 pgimeno it won't be stored
14:39 hecks this is an abuse of the concept of settings
14:39 hecks you might as well be using CAO properties as a communication channel for this, and it's used for some things
14:40 MTDiscord <Warr1024> I would very much like to be able to send at least "advisory" settings to players too.  Disabling shadows is one of those things.  Recommending a higher base display gamma is another.  However, I still want players to be able to override that decision if they really are sure that their settings are right.
14:40 hecks it just feels filthy
14:40 hecks also it's not as simple as
14:40 hecks setting a client setting to toggle shadows, it's not gonna work the way you think it will
14:40 hecks the client currently decides to create shaders with the shadow feature on init
14:40 hecks then propagates this particular shader to objects and MapBlockMesh instances
14:41 MTDiscord <Warr1024> Yes, it'd have to be done only on_join or even prejoin, so the client has some means of being able to interpret the settings before initializing everything
14:41 MTDiscord <Warr1024> I'd be fine with that kind of limitation
14:41 hecks so now if you want to support any dynamic toggling of settings like that, upon receiving the packet for this you have to do the exact same things in the client environment as you would for this in API form
14:42 hecks and it becomes an API by another name
14:42 MTDiscord <Warr1024> I mean, I've got a minetest.conf in my game and I'd be fine with the settings being absolutely static based on that and being all-or-nothing for all players all the time, i.e. I can live with mod code not being able to be choosy about it.
14:42 pgimeno ok, there may be settings that can't be changed during play and can only be changed say on preinit, but the idea remains the same
14:42 hecks it becomes an RPC invoked by setting a boolean... what the hell?
14:42 hecks you won't even get less lines in lua_api.txt for it
14:42 MTDiscord <Warr1024> Maybe simpler would be just sending a game/mod's minetest.conf as part of media, so it can be interpreted by the client as part of the init process
14:43 hecks but what you'll lose is an autogenerated documentation link to this implicit procedure
14:43 hecks the point of a config is to store permanent settings
14:43 MTDiscord <Warr1024> One problem is that MT doesn't really handle "layering" configs very well.  There are cases where I'd like to have a system-wide default that's different from MT's built-in defaults for some things, but I'd want to allow server-level or game-level alternative defaults, BUT clients still need the ultimate say.
14:43 hecks and you want to abuse it to store ephemeral state? to what end
14:43 hecks with side effects on reception no less
14:44 MTDiscord <Warr1024> It feels like what we need is something like CSS's !important flag, but I also hate the way CSS does that too...
14:44 hecks the only reason you might ever want a settings negotiation API is because someone, at some point, made a setting that shouldn't ever have been a setting
14:44 MTDiscord <Warr1024> Writing these things back to the settings on disk wouldn't make sense, yeah
14:44 hecks or because the setting's intent is poorly communicated
14:45 pgimeno hecks: it's working like that in Second Life. I'm not saying it's a particularly well designed client, but the net result works quite well.
14:45 MTDiscord <Warr1024> I mean there are plenty of settings that shouldn't be settings.  I have to override time_speed, for example, and then that ends up polluting my settings in all worlds that don't override it back.
14:45 hecks I wouldn't consider Second Life a good engineering example to take inspiration from, just saying
14:45 pgimeno heh
14:46 hecks nothing will convince me that this is just an RPC (remote procedure call) invoked in a stupid roundabout way
14:46 MTDiscord <Warr1024> There are a lot of things in settings that should be stored in the world, not the client.
14:46 hecks that this isn't*
14:48 hecks I already imagine it on the binary side, there is this big Game::HandleSettingsChange function with a gigantic switch statement checking for various settings and producing side effects
14:48 nrz joined #minetest-dev
14:48 hecks and you've just created a weird RPC mechanism for no reason to do what was best left to individual code paths
14:49 hecks what's the point of it being a setting if you have to push notifications about it to things, and if you never save it?
14:49 pgimeno notifications to things?
14:50 nrz joined #minetest-dev
14:50 hecks yes, in case you want this to ever work in runtime, you need to propagate the side effect of the change
14:51 pgimeno we're talking client side effects here, aren't we?
14:51 hecks I mean this is just a network packet in this weird form
14:51 hecks yes
14:51 hecks what's worst, it's a god packet handling several things
14:51 hecks there's a reason why we even have packet opcodes and don't do a whole lot of subpacketing
14:52 pgimeno think FOV, FOV is a client setting; regardless of whether it's stored, there's such thing as the current FOV. Changing the current FOV is a change of the setting. You can call it RPC if you want.
14:52 rubenwardy server-sent settings is a whole bag of worms
14:52 hecks so it's now ugly both on the API side (setting a keyed bool to actually dispatch an RPC) and on the plumbing side (opaque network protocol, a mini-VM to decode each so-called setting into the relevant procedure call)
14:53 hecks server sent settings are just a bad hack solution
14:53 celeron55 <Warr1024> There are a lot of things in settings that should be stored in the world, not the client.
14:53 MTDiscord <Warr1024> Moving things out of settings would help a lot.  Settings could be used to set defaults, but a lot of things like time_speed or shadows should exist at the game/world/player level...
14:53 celeron55 this doesn't mean everything should be a setting, it means less things should be settings
14:53 hecks and if it starts turning into people *creating* settings just to support this mechanism, we're all the way in clown town
14:53 celeron55 and if you hate CSS's !important, why on earth do you want it here too
14:53 celeron55 seems like stockholm syndrome
14:54 MTDiscord <Warr1024> I don't want it, I want something better ... but if the CSS folks couldn't think of something sane, well...
14:54 hecks it's like
14:55 hecks following this logic, why isn't player movement speed a setting OH WAIT HAHA
14:55 pgimeno rubenwardy: stored server-sent settings would be a can of worms. I'm talking about on-the-fly changes to settings that don't get stored. The client would have a copy of the settings in memory that doesn't go to a file. The server can control them, but they wouldn't get stored.
14:55 hecks why isn't every single thing defining the game a setting
14:55 hecks let's call this
14:55 hecks config oriented programming
14:55 MTDiscord <Warr1024> I could see an argument in favor of keeping some settings around to act as default values where not specified by a game/mod/world/etc.  I could also see an argument in favor of just retiring them entirely and forcing the game/mod/world/etc to specify to avoid muddying the waters and having too much unpredictability in how things work at the client level.
14:55 hecks write a game just by writing a complicated enough .conf file!
14:56 rubenwardy Lua was designed partly as a config language
14:56 hecks =]
14:56 pgimeno a distinction between "run-time settings" and "permanent settings" would be necessary here
14:56 MTDiscord <Warr1024> I'd really like to see game creators have more control over how their games are presented and experienced, and use client settings ONLY to manage accessibility and other factors that can't easily be managed by game creators universally...
14:56 hecks I've no objection to sending Lua scripts to clients...
14:56 hecks but WHY
14:56 hecks pgimeno, why must it be a config entry
14:56 celeron55 >config oriented programming
14:57 celeron55 this is genius, it must be like programming in bash
14:57 pgimeno hecks: to unify changing minor things under a single API to avoid exploding the APIs
14:57 MTDiscord <Warr1024> Re: code-in-configuation, lately I just call both code and configuration "codefiguration" since I end up keeping default config in the same tree as code, and deploy them together, so there ends up being little reason to differentiate...
14:57 celeron55 or programming in CSS
14:57 hecks celeron55: *linux users looking around nervously*
14:57 MTDiscord <Warr1024> The idea that there exists some concept of "configuration" that's easy to change and "code" that's hard to change made sense back in a world before everything was CI and rolling releases.
14:58 hecks pgimeno: you are still exploding the APIs, just in a very confusing way
14:58 MTDiscord <Warr1024> If we move a whole bunch of stuff out of settings and into mod code territory, mods still will have the option of reading values out of settings anyway.
14:59 pgimeno this is about changes that amount to changing a value; in some cases it's true that the change is not as simple as a variable in memory and instead needs supporting code to activate/deactivate
14:59 hecks lua_api.txt will need as many lines to describe the magic options as it does for an API
14:59 hecks because putting them anywhere other than lua_api.txt is even worse
14:59 hecks uhhh
14:59 hecks there's always side effects
15:00 hecks there must be, unless a piece of code polls the setting every invocation (also bad design!)
15:00 hecks it's like
15:00 hecks we're starting to use settings as registers for flow control or something
15:01 hecks we're regressing to programming microcontrollers in assembly by writing to magical addresses
15:01 pgimeno and?
15:01 pgimeno is there a performance impact to that?
15:01 hecks there is a readability impact
15:01 hecks there is a moral impact
15:01 rubenwardy I would like to see shared architecture/designs for things like feature flags, but mixing it with settings doesn't necessarily feel right. It should be whitelisted, for one
15:01 hecks you are submitting to the unholy ones and their unclean ways
15:02 hecks your code will forever be cursed and you will never be free of their tortured screaming
15:02 MTDiscord <Warr1024> Having to tell players to quit so they can change certain settings and rejoin does suck...
15:03 celeron55 how do you differentiate between settings that you can send to the client and settings you can't send
15:03 hecks by having a hardcoded list of them, of course!
15:03 hecks we'll call them... opcodes
15:03 celeron55 what does the documentation look like
15:03 MTDiscord <Warr1024> Send all the settings, have the clients just ignore the ones that don't apply.
15:03 hecks documentation is either something in minetest.conf.example or just as many lines in lua_api.txt as an API would take
15:03 MTDiscord <Warr1024> As for hard-coding settings, settings are already used by hardcode, so it makes sense that way
15:04 hecks the latter is bad, the former is clawing-my-eyes-out atrocious
15:04 pgimeno celeron55: by splitting the configuration, what is not tolerable is the current mess of client setting mixed with server settings with world settings with game settings
15:04 MTDiscord <Warr1024> After all it's not like you can make a setting work or not work based on configuration; all you can really do is apply an additional filter over top of what already has to make sense.
15:04 pgimeno no, not on minetest.conf please
15:05 celeron55 wait what
15:05 hecks he wants more .conf files...
15:05 celeron55 so in addition to having all those mixed up, you make it better by allowing even more mixing up?
15:05 pgimeno what? no
15:05 hecks they're multiplying... https://a.uguu.se/ZRsSg5aT5wFd_1611960927306.jpg
15:06 pgimeno what I mean is what hecks said, more .conf files
15:06 celeron55 so what's the configuration file called which contains the settings that the server sends to the client?
15:06 hecks don't forget it needs documentation in the form of a sister .conf.example file :D
15:06 pgimeno client.conf
15:06 celeron55 ...what
15:06 celeron55 what's the client configuration file called?
15:07 pgimeno minetest.conf, for compatibility
15:07 pgimeno wait, no
15:07 celeron55 what's the server configuration file called?
15:07 celeron55 what configuration files does singleplayer use?
15:07 pgimeno sorry, the client configuration file is called client.conf
15:07 pgimeno singleplayer is a client + a server, so both server.conf and client.conf
15:08 hecks ....haha
15:08 celeron55 how does a person know where to put a setting
15:08 pgimeno if it's a server setting, in server.conf; if it's a client setting, in client.conf
15:08 hecks well I do actually support separation of client and server settings but please do not misconstrue me as wanting anything to do with this negotiation idea
15:09 hecks anyway the original question was, where's the documentation?
15:09 hecks client.conf.example innit?
15:09 pgimeno remember that the server sent settings do not get stored in client.conf, they are just overrides (if the client allows them)
15:09 celeron55 i don't support any of this
15:09 pgimeno but they are run-time overrides
15:09 hecks now how is this better than a flag in the SunSpec table...
15:10 hecks what is the goddamn difference other than adding what's actually an extra network opcode
15:10 hecks unless you want to migrate any client state to this config..... but what would be pure wtf
15:10 celeron55 what if someone makes a minetest client rewrite that uses the same server? then they're forced to use the same setting names and an identical setting system to begin with
15:10 celeron55 that's ridiculous
15:10 hecks and contrary to the idea of network opcodes, which I've wanted to put on different channels, there's a PR for it
15:11 celeron55 just to make games work that the server runs
15:11 hecks now
15:11 hecks there are precedents for this but they're not a good example to copy
15:11 hecks I think idtech and related engines also abuse cvars a lot but that's bad design
15:12 pgimeno celeron55: that's happening in SL and the third party clients add their own settings for things that are specific of them
15:12 hecks we are not second life, thank the gods
15:12 MTDiscord <Warr1024> How do we make games work under the CURRENT system though?
15:12 MTDiscord <Warr1024> We can't even check whether the client has certain settings set, we just need to beg them to set them.
15:12 pgimeno celeron55: it's no different than the client needing to acknowledge an enable shadow API call, really
15:13 celeron55 we have too little examples here now
15:13 celeron55 Warr1024: make a list of settings you have to beg clients to change
15:13 celeron55 now
15:13 celeron55 no talking, instead list making
15:13 MTDiscord <Warr1024> We end up with a bunch of clients trying to play but their game is basically broken because they have the wrong settings but they ignored the warning about settings, and then other clients being annoyed by the settings warnings that they've already addressed.
15:13 celeron55 i know you have a problem but instead of describing the problem you're force feeding me a solution
15:14 celeron55 that won't work
15:14 MTDiscord <Warr1024> The biggest one for me right now is display_gamma.  I have to advise players to start with a higher base setting (1.5 or 2, instead of default 1) and then "adjust to taste" from there.  Funnily enough that one is also a quagmire because it can't be FULLY controlled by the game.
15:14 hecks it's no different, but how about using CODE to represent CODe
15:14 MTDiscord <Warr1024> I set a higher default in the game's minetest.conf file, under the assumption that that MAY be honored in SP, but I can't do anything about MP as far as I know.
15:15 celeron55 well display gamma is basically a very simple colorless tonemap, it's part of a game's style if you want everyone to change it
15:16 MTDiscord <Warr1024> Yeah, if there was like a player:set_gamma_adjust(num) or something then that would work for me, but ugh, not more APIs and more packets...
15:16 celeron55 the end user adjustment should be needed only by a portion of players depending on their display and environment
15:16 pgimeno celeron55: I have described the problem in enough detail, I believe. Hecks wants to be able to let the server mandate settings, and it's a reasonable request, but I *also* want to be able to override whatever settings the server wants on.
15:16 hecks I think I'm missing some people's messages, I guess there's a discord bridge or something?
15:16 hecks >Hecks wants to be able to let the server mandate settings
15:16 hecks wait no
15:16 MTDiscord <Warr1024> It's really an XY problem anyway, where gamma is the Y and the fact that light intensity and light spread are linked is the X. If I could make brighter light_sources but with faster falloff then that would also solve the issue for me.
15:16 celeron55 there's Warr1024 on discord
15:16 hecks I just want APIs for things that a game should have control over
15:17 hecks shouldn't the discord bot echo messages from there?
15:17 celeron55 yes, i'm seeing them here
15:17 MTDiscord <Warr1024> You have to unignore the bot
15:17 celeron55 maybe you've /ignored the bot
15:17 MTDiscord <Warr1024> or read the backlog on the log site I guess
15:17 pgimeno MTDiscord is the name of the bot if that helps
15:17 hecks i haven't :o
15:18 hecks maybe he's broke
15:18 celeron55 pgimeno: "Hecks wants to be able to let the server mandate settings" that's simply not true
15:18 hecks I want sane APIs
15:18 celeron55 pgimeno: that was never even said
15:19 pgimeno I consider shadows on/off a setting in this context.
15:19 celeron55 that setting will always exist
15:19 celeron55 the server can just turn them off if that's the game's style
15:19 celeron55 next problem please
15:20 MTDiscord <Warr1024> It is really pretty annoying that there is just one set of settings and they all apply to all worlds, all servers, etc.
15:20 hecks what were we even...
15:20 MTDiscord <Warr1024> Wait, what can the server turn off?
15:20 MTDiscord <Warr1024> Shadows?
15:20 celeron55 worlds need their own settings but not any settings, they can be their own setting namespace completely detached from other settings
15:20 hecks let's just consider the setting a graphics quality setting
15:20 hecks where on/off is still a matter of a quality/performance tradeoff
15:21 hecks and then the game's control over it is a separate concern
15:21 celeron55 or are you saying a world should be able to decide for example what the key mappings should be? or, let's say whether waving leaves are enabled?
15:21 hecks engines usually have very fine control over this stuff, it's usually a config variable *and* a light flag *and* object caster/receiver flags *and* a shader variant define
15:22 MTDiscord <Warr1024> Shadows would have bothered me if there weren't a workaround to disable them from the server/game-side, since they're only a positive-quality setting if you use the default skybox.
15:22 hecks because shadows are a heavy and hacky effect and they must be used with care, it's not something you can expect to toggle on and have it looking good
15:22 hecks without realtime path tracing, shadows will always be this "trick"
15:22 MTDiscord <Warr1024> As it is, I can make it so shadows don't cause visual problems in my game by disabling them, but players will still have to suffer any performance impact that calculating null shadows has.
15:23 pgimeno celeron55: if it's implemented the way I suggest, the server would have that control, yes
15:23 hecks celeron55: the key mappings thing is an interesting question
15:23 appguru joined #minetest-dev
15:23 MTDiscord <Warr1024> Also, anyone who DOES use the default skybox can't use the same hack I did to disable shadows.
15:23 celeron55 if worlds literally should be able to change any settings, yes, then obviously layered settings are needed
15:24 pgimeno mostly *client* settings, and run-time only, not persistent
15:24 celeron55 it's not even a question for worlds then
15:24 celeron55 but the server only needs to control a few things that are client settings currently, and they can be made to be APIs with client-side quality/performance control
15:24 celeron55 just like for shadows
15:25 celeron55 shadows are a bit special because one performance option has to be disabling them regardless of the server requesting them
15:25 hecks the only other things I can think of that require controls like this are
15:25 hecks camera bobbing, FPP/TPP camera modes, and pitchmove
15:25 hecks those are the only problems left to solve in this domain and all of them can happily be rolled into existing apis
15:26 celeron55 well, and i guess a display gamma multiplier
15:26 hecks one of them doesn't even have a conf entry
15:26 hecks gamma too, but an api to like
15:26 hecks add a relative modification on top would be fine
15:26 hecks I understand that people need a brightness setting because people have different eyes and monitors and rooms
15:27 hecks and then the game can further modify that in a relative fashion for a visual effect
15:27 celeron55 but it is obviously something you can make a game's style
15:27 celeron55 also
15:27 hecks in fact if there was an ObjectRef:set_gamma(num) api, you could have this amazing HDR-like effect
15:27 hecks that is, eye adaptation based on the light level of the node you're standing on
15:28 hecks setting tonemapping curves for a client would also be cool
15:28 hecks but the gamma settings can coexist with that, it's not either or
15:28 MTDiscord <Warr1024> There's also that PR that's been in limbo for a year or two to allow games to require privs to access certain F5 info...
15:28 celeron55 if you make those, i'm here waiting with my cursor on the "rebase and merge" button
15:28 hecks a proper tonemapper and color grading?
15:28 MTDiscord <Warr1024> That one is at the top of my "engine problems that are effectively breaking my game" list.
15:29 hecks consider it planned ;]
15:29 hecks todo... soon.... someday....
15:29 celeron55 i mean the things that will make Warr1024 not want server-sent settings
15:29 hecks ah I can't see his stuff, sorry
15:29 hecks fix the bot sometime, folks
15:29 celeron55 i.e. the gamma
15:29 celeron55 the bot works, i can't understand why you don't see it
15:30 freshreplicant[m Works for me too, but I'm on Matrix.
15:30 celeron55 it's connected here just like any user
15:30 hecks Warr, try saying something
15:30 celeron55 the format it's using is "<name> message"
15:30 pgimeno hecks: are you sure you don't have it in /ignore ? it works fine in the logs, https://irc.minetest.net/minetest-dev/2021-06-21#i_5836179
15:30 celeron55 does your client automatically ignore those somehow
15:30 hecks maybe I did have it in ignore for some reason
15:31 hecks but that must have happened on freenode
15:31 MTDiscord <Warr1024> The gamma adjust would be a big help, and also #9315
15:31 ShadowBot https://github.com/minetest/minetest/issues/9315 -- Require debug priv to view gameplay-relevant debug info (2nd try), add wireframe priv by Wuzzy2
15:32 Wuzzy before you go into String Freeze: #11370
15:32 ShadowBot https://github.com/minetest/minetest/issues/11370 -- Fix some typos in builtin by Wuzzy2
15:32 celeron55 Warr1024: i agree that PR should go in
15:32 celeron55 why is it even hanging there still
15:33 MTDiscord <Warr1024> Hahaha, SO much why
15:33 celeron55 this is stupid
15:36 pgimeno see, that can also be implemented via server->client settings override. Just don't have one that allows the client to force them.
15:36 MTDiscord <Warr1024> As I understand it, merges require 2 core dev approval, but core devs have no obligation to take any action on anything they don't have an interest in, don't feel qualified to evaluate, or maybe just don't want to try to dig through the thread and figure out the current state of consensus.
15:37 MTDiscord <Warr1024> That means effectively things stay in limbo unless someone is willing to pester core devs and find advocates, and maybe risk being banned for said pestering...
15:37 rubenwardy that PR just doesn't the hype factor :D
15:37 MTDiscord <Warr1024> On a 100% volunteer-based project though I'm not sure if there's a good solution...
15:38 celeron55 the solution would be some core devs being actual game developers also
15:38 MTDiscord <Warr1024> Well, if celeron and ruben both agree that the PR seems to pass a "preponderance of the evidence" decent-idea test, either of you could just hit the merge button?  Rock paper scissors?
15:38 rubenwardy I'm checking it over now, been on my to do list for a while
15:38 MTDiscord <Warr1024> You might have to actively recruit from game devs in that case
15:39 rubenwardy I think I count as a game developer, just a shitty game designer
15:39 celeron55 rubenwardy: i trust you to test it and merge it if it still works
15:39 MTDiscord <Warr1024> If I were asked to become a core dev, I would consider it, depending on the level of responsibility involved.  By far most of my MT time is spent working on NodeCore, so I have been mostly focused on engine things that affect what it wants to do specifically...
15:39 rubenwardy well, you could always ask celeron55 for thar
15:40 MTDiscord <Warr1024> I was under the impression that a core dev needed to contribute a lot of CODE to the core, and I've only done a few scattered bugfix-like things here and there.
15:40 MTDiscord <Warr1024> but if a core dev is mostly a reviewer/integrator then I suppose I might be useful after all...
15:40 rubenwardy there's no formal requirements, c55 is the benevolent dictator with some consultation
15:41 celeron55 core devs are the thing that gets good PRs merged and bad PRs not merged
15:41 rubenwardy but pretty much all the core devs have done plenty of PRs before becoming one, and often PR review too
15:41 celeron55 if somebody can and is willing do part of that, they should be a core dev
15:42 MTDiscord <Warr1024> Y'all got like a "so you want to become a core dev" guide or anything?
15:42 rubenwardy telling if someone can do that is typically measured by past involvement, as well other credentials
15:42 rubenwardy that guide would be 3 lines
15:42 rubenwardy # So, you want to be a core dev?
15:42 rubenwardy What is wrong with you?
15:42 MTDiscord <Warr1024> ha
15:42 rubenwardy oh, IRC skipped my empty line  there
15:42 hecks I could do it but it's shitwork and people wouldn't like it =]
15:43 hecks like I have time to review other people's code, I can barely manage my own
15:43 celeron55 Warr1024: https://dev.minetest.net/All_rules_regarding_to_development
15:43 celeron55 just tell me once you've read those and still want to be a core dev
15:43 rubenwardy core deving is a bit mixed on my mental health, so I tend to disappear a lot of the time
15:43 MTDiscord <Warr1024> The certificate for dev.minetest.net expired on 5/24/2021. (in case you weren't already aware)
15:43 hecks fix the TLS and I'll read it ;]
15:43 celeron55 yeah just trust the old one
15:43 rubenwardy I guess that means we don't have any rules now? ANARCHY!
15:44 celeron55 my certificates age like wine, they only get better
15:44 hecks at least I have a sane browser that lets me do this
15:44 MTDiscord <Warr1024> If there isn't like a huge demand for me to dedicate time to core deving and I can do it on an as-available or when-somebody-gets-my-attention basis then it's possible...
15:44 celeron55 the bigger problem is let's encrypt is completely shot for the regular wiki and forum also, they're ticking time bombs
15:44 hecks >Be nice
15:44 hecks I'm fired
15:44 celeron55 and i haven't had time to fix it. fixing it basically means moving all the shit to another host with another OS
15:44 hecks there's no country for old linuses
15:45 rubenwardy I made the mistake of switching to LetsEncrypt wildcard certs to simply my nginx config. Unfortunately, this means I need to manually renew as certbot doesn't support namecheap for DNS updates
15:45 rubenwardy as wildcard certs require DNS verification via a text record
15:45 MTDiscord <Warr1024> With LE I've found I need to run an update client, AND have external monitoring to warn me when the certs are starting to get too close to expiring, because the clients sometimes break.
15:45 hecks but honestly with some sort of veto power over really really bad ideas, I wouldn't have to yell at anyone
15:45 hecks maybe I'd be more polite
15:45 MTDiscord <Warr1024> Nah, you'd just end up yelling at your fellow core devs.
15:45 hecks but of course there's always people who take code criticisms personally, and I can't help with that
15:46 celeron55 yeah the problem there is the client i use, which is at the same time the newest client i can find for that version of that OS, doesn't support ACME v2 :D
15:46 celeron55 and let's encrypt stopped supporting v1
15:46 MTDiscord <Warr1024> I, for one, tend to like bad ideas.  I've found the most effective way to find good ideas is to try a whole bunch of bad ones and see which ones suvive...
15:46 MTDiscord <Warr1024> NodeCore is a pretty good example of that.
15:46 celeron55 i'm not going to sink any more time to that openbsd box, it's all going to a linux VPS... when there's the time
15:46 rubenwardy #9315 code changes look good, testing now
15:46 ShadowBot https://github.com/minetest/minetest/issues/9315 -- Require debug priv to view gameplay-relevant debug info (2nd try), add wireframe priv by Wuzzy2
15:46 sfan5 I use simp_le which should only need a working python3 runtime
15:47 MTDiscord <Warr1024> Yeah, I think that sounds like what I run on my openbsd systems
15:47 pgimeno I think a core dev needs to have a fairly decent understanding of the engine as a whole, in order to ensure that the reviews keep the consistency of said whole as much as possible
15:47 celeron55 sfan5: throw me a link and i'll make that shitbox run for 10 more years
15:47 rubenwardy pls no
15:47 sfan5 https://github.com/zenhack/simp_le
15:47 sfan5 needs manual wiring up, unix-style (not that that's a bad thing)
15:48 celeron55 it's the best thing
15:48 celeron55 i want zero automation
15:48 rubenwardy the forums are so terrible, so slow
15:48 freshreplicant[m I was wondering, what's the policy for posting here? If you're not a developer, is it considered bad form to post here, even if it's on topic?
15:48 MTDiscord <Jonathon> the forums are a joke
15:48 celeron55 all paramters as command line arguments - perfect
15:48 celeron55 +e
15:48 sfan5 "chit-chat goes to #minetest" is the policy
15:48 rubenwardy freshreplicant[m: this channel is for engine development, any one can talk here as long as it's about that
15:49 hecks if you're looking for a bug you're already a developer
15:49 rubenwardy I want all the automation
15:50 freshreplicant[m I've found some bugs, but don't look for them. And I seldom share the findings, because I usually forget a few minutes later. I don't mean to hoard them.
15:50 rubenwardy I made the mistake of rewriting/modernising the Jenkins pipeline at work, to do UI testing and linting and such, now I only get assigned to devops/pipelines/automation/cloud stuff. Not that I'm complaining
15:50 celeron55 i want all the automation, but made by me
15:50 MTDiscord <Warr1024> > If a core developer is doing almost nothing but blocking everything that comes their way, they will be unassigned. Haha, how long has that rule been in place?  :-D
15:50 rubenwardy freshreplicant[m: so, bugs can be discussed here as long as they're actual bugs - user help is in #minetest. So go ahead
15:50 celeron55 i can't stand systems made by others breaking
15:50 rubenwardy haha oh same
15:50 rubenwardy I prefer bugs to be my own bugs
15:51 rubenwardy which I why I can't stand unity
15:51 rubenwardy (Ironically, I'm breaking this channel's rules now)
15:51 MTDiscord <Warr1024> I hate stuff breaking and don't care whether it's mine or not.  Whether I prefer my own code or not depends on whether I feel like I'd have the time to actually maintain it.
15:52 celeron55 i guess you should prefix your messages with [off] or something if they're offtopic
15:52 celeron55 not a rule but i'm always glad when some people do that
15:53 hecks why, for filtering?
15:53 MTDiscord <Warr1024> The [off] prefix is more like "off the record" (don't log or bridge) than "off topic"
15:53 pgimeno ^
15:53 MTDiscord <Jonathon> ^
15:54 celeron55 for quick visual filtering, you can skip them if you're only interested in dev stuff and can keep your mind out of the unnecessary stuff
15:54 celeron55 well, any prefix is fine
15:54 hecks oh well, github is the more formal place anyway
15:54 hecks I don't grovel IRC logs expecting to find anything useful
15:55 rubenwardy not sure if this is considered a breaking bug: https://github.com/minetest/minetest/pull/9315#issuecomment-865149416
15:55 rubenwardy I think it would be
15:55 hecks any good design draft should probably be written on gh to avoid losing it
15:55 MTDiscord <Warr1024> As a core dev, are there any "active" obligations, such as attending regular meetings, being available at certain times, or meeting some kind of quota of activity?  Or is it just a matter of following the guidelines when you do act, and just making sure you don't do stuff that would make somebody want you not to be a core dev?
15:56 celeron55 rubenwardy: i don't think that's important, the common use case is to not give the privilege to normal players to begin with
15:56 rubenwardy The design doesn't really account for this, tbf. I'd personally design this feature differently - as an enum which you'd derive the UI flags from
15:56 rubenwardy ok, merging #9315 in 10 then
15:56 ShadowBot https://github.com/minetest/minetest/issues/9315 -- Require debug priv to view gameplay-relevant debug info (2nd try), add wireframe priv by Wuzzy2
15:57 rubenwardy wait, found another bug
15:57 MTDiscord <Warr1024> If anybody needs me, I'll be holding my breath for the next 10 minutes :-D
15:57 celeron55 Warr1024: the only obligation is to not do stupid stuff
15:57 rubenwardy when you first join the game, you don't have any privileges. If the debug UI is shown, this results in the position not being shown until you toggle again
15:57 celeron55 and follow the rules when doing something
15:58 sfan5 that sounds like the same bug
15:58 celeron55 rubenwardy: that's an actual usability problem, needs to be fixed
15:58 celeron55 same bug but this time it matters
15:58 MTDiscord <Warr1024> celeron55: I apply to become a core dev, then, assuming there are no objections.
15:59 MTDiscord <Warr1024> I figure if I would have some say in whether things get merged (i.e. I only need one additional vote) then it may motivate me to tackle some of the problems I've been putzing about with, like seeing if there's anything I can do about ABM performance and such...
15:59 celeron55 hecks: design drafts in MT? i've found them to be more like wishlists, code always ends up in some other way 8)
15:59 rubenwardy yeah, exactly
16:00 rubenwardy replying to "same bug but this time it matters"
16:00 celeron55 Warr1024: that's the usual motivation for a core dev
16:00 hecks I don't draft things I don't intend to code
16:00 hecks but design documents for WIP features would be nice in case the original committer gets hit by a truck before he's done
16:01 hecks at the very least, please write more comments, folks
16:01 celeron55 yes, assuming the feature was taking more than a day to complete
16:01 MTDiscord <Jonathon> hecks: do you have any plans to reopen your world line render PR?
16:02 MTDiscord <Jonathon> https://github.com/minetest/minetest/pull/10619
16:02 celeron55 btw, if someone doesn't deem Warr1024 worthy of core dev privileges, you should /msg me now
16:03 hecks I think I missed the convo, also the bot is just hopelessly broken for me
16:03 hecks maybe this will do it...
16:03 rubenwardy Warr1024: do you have any C++ experience? Have you been involved with professional or any code review before? I'm not familiar with your background
16:04 rubenwardy Nodecore is pretty good though, so you seem technically competent
16:04 hecks what's Warr's GH handle?
16:04 rubenwardy same as username @Warr1024
16:04 wsor4035 ill post from here then, hecks: do you have any plans to reopen/keep working on https://github.com/minetest/minetest/pull/10619 ?
16:05 wsor4035 and on gitlab
16:05 rubenwardy C++ experience isn't necessarily a hard requirement though, there's still the Lua
16:05 MTDiscord <Warr1024> The totality of my C++ experience in the past several years is probably the PRs I've submitted for MTE itself, but I think those demonstrate that I'm at least passably competent at it.
16:06 hecks wsor4035: sadly no, the line renderer is blocked by the lack of a GUID system for objects, there is no way for ObjectRefs to safely point to one another
16:06 MTDiscord <Warr1024> I never considered myself a C++ "expert" or anything, but it was one of the first languages I learned, and I'm also used to the landscape moving a lot and needing to learn new shit all the time.
16:06 wsor4035 ah ok, thank you
16:06 hecks any implementation of this without fixing that would be very hacky and need scrapping later
16:06 rubenwardy ha, very few people are C++ experts
16:06 hecks oh I finally see the discord bot
16:07 MTDiscord <Warr1024> hecks you can hear me now?
16:07 hecks yes
16:07 hecks you're the nodecore guy right?
16:07 MTDiscord <Warr1024> weird; what changed?
16:07 MTDiscord <Warr1024> yeah, that's me.
16:07 celeron55 a GUID system for objects should probably be added
16:07 MTDiscord <Jonathon> wasnt desour working on one?
16:07 celeron55 it's, like, just an additional data item in each object
16:08 rubenwardy yeah, there's an open PR for it
16:08 celeron55 eh, that too? lol
16:08 MTDiscord <Jonathon> https://github.com/minetest/minetest/pull/11050
16:08 MTDiscord <Jonathon> theres open PRs for a lot of things.....
16:09 hecks discord was in my ignore list but I had to go and manually delete it for some reason, it wasn't enough to just toggle ignore
16:09 hecks anyway
16:09 MTDiscord <Warr1024> (heh, don't get me started on the mess that is the UUID data type specifically...)
16:09 celeron55 Warr1024: you're Warr1024 on github, right?
16:09 hecks Warr is being considered for coredev now, right?
16:09 MTDiscord <Warr1024> Yes, I'm Warr1024 everywhere that I'm aware a Warr1024 exists :-)
16:10 MTDiscord <Jonathon> hecks: correct
16:10 celeron55 doesn't seem like a common nickname but eh
16:10 celeron55 doesn't hurt to ask 8)
16:10 hecks I wouldn't mind a gamedev being a maintainer but the merged PRs are a bit scant
16:10 hecks if he gets accepted, I'm applying too
16:10 MTDiscord <Warr1024> I was Warr back before I first registered for AIM, but they told me Warr was already taken and suggested like Warr11 or something, so I figured I'd just skip WAY ahead and avoid having that problem again :-)
16:12 celeron55 hecks: well, i just added him to the github engine repo
16:12 MTDiscord <Warr1024> If MT wants to be more enginey and less specific-game-ey then having multiple gamedevs as coredevs seems like it would help.  Only having one gamedev might tend to bias decisions toward specific games still, after all.
16:12 hecks although in the long run I don't care about formalities, I just don't want maintainers to commit untested crap
16:13 MTDiscord <Jonathon> i thought core devs would get added to the organization? https://github.com/orgs/minetest/people
16:13 celeron55 i could ask you to read the wiki but i wouldn't believe you read it even if you said so so whatever
16:13 celeron55 so does someone object hecks then
16:14 hecks probably all the people I've insulted the entire time :] whoops
16:14 rubenwardy Jonathon: he needs to accept the invite first
16:14 MTDiscord <Jonathon> ah
16:14 hecks but if I'm on equal standing I won't have to yell at anyone
16:14 MTDiscord <Warr1024> I'd prefer the game devs represented among core devs to be maintaining open source published games rather than server-specific experiences, but I don't have an objection against server-specific games being represented either.
16:14 MTDiscord <Warr1024> I have no objection to hecks
16:14 celeron55 hecks: blackmailing the entire team is a good start, yes
16:15 MTDiscord <Warr1024> I really appreciate the work hecks did on entity attachment fixing, btw.  It seemed like making that actually work was a real slog, but it's been great and it supports a prominent feature in NodeCore.
16:15 hecks you won't hear from me unless you're about to do something really stupid, I promise
16:15 pgimeno that's not blackmailing, just lobbying
16:15 hecks and so far I haven't lobbied for one feature or fix that doesn't benefit everyone
16:16 hecks I've worked in videogames before and have my own (offline) engine
16:16 hecks experience in lua and c++ both
16:16 freshreplicant[m I am pretty much nobody, but I would hope that core devs are also required to possess a certain level communication skills and finesse.
16:16 celeron55 pgimeno: ah good ol' politics
16:16 hecks as well as some languages MT doesn't need
16:17 hecks also some former irrlicht experience
16:17 celeron55 what, irrlicht experience
16:17 hecks I've used it... for a few weeks once ok?
16:17 hecks before MT
16:17 celeron55 ok so this is like a resume now
16:17 hecks I'm just shilling myself
16:17 celeron55 tried javascript for an evening = javascript expert
16:18 MTDiscord <Warr1024> Well, I once got a job programming in C#, and then spent my first week or so on the job learning C#.
16:18 celeron55 it's a nice strategy, you get paid for learning something
16:19 celeron55 win-win
16:19 hecks c# was my main before MT showed me lua, my code kinda stinks of it a little
16:19 MTDiscord <Warr1024> Haha, well, the standard learning curve for other departments was like 6 months of training, but we had to train concurrently with our work, so it was a bit of a trial by fire.
16:19 celeron55 on the other hand if you already know C++ and Lua and contribute to MT, you learn nothing and get nothing
16:19 celeron55 lose-lose
16:19 celeron55 wait i didn't say that
16:20 MTDiscord <Warr1024> If you want your game to work well and you make the engine it depends on work better, then I think you win something at least :-)
16:20 MTDiscord <Warr1024> (even if you're just wasting your time developing new ways for other people to waste THEIR time)
16:21 rubenwardy merging #11370 in 5
16:21 ShadowBot https://github.com/minetest/minetest/issues/11370 -- Fix some typos in builtin by Wuzzy2
16:21 celeron55 Warr1024: 9000 IQ play: make others waste their time than you wasted yours -> you end up ahead
16:21 celeron55 +more
16:23 celeron55 hecks: i'm adding you as a core dev now, try to behave and you might get to keep that status
16:23 hecks :o wow
16:24 hecks i promise to only yell at people on sundays
16:24 Krock ah yes my favourite time
16:24 MTDiscord <Warr1024> I promise to only provoke hecks Monday through Saturday.
16:24 hecks what, celeron giving random people commit power?
16:25 celeron55 hecks: the thing they do in churches is called singing
16:25 hecks actually this is a legit worry, I once attempted to force-push something to master in a stupor...
16:25 celeron55 i recommend disabling force pushes to master, i recall there was a way to do that
16:25 MTDiscord <Warr1024> Mistakes can be fixed, and they are a risk with anyone anyway.
16:26 MTDiscord <Warr1024> Yeah, IIRC github should let you configure specific branches with different protection levels
16:26 hecks I mitigate it now by always naming my remotes manually
16:26 celeron55 well we want to allow force pushes, when they're needed
16:26 celeron55 i think it's mentioned in the rules
16:26 hecks so I name no remote "origin" just to avoid the "what origin" issue
16:26 hecks the mt repo is simply "mt"
16:26 celeron55 i do that too, "origin" is an absolutely silly name for a remote, you never know where iti s
16:27 MTDiscord <Warr1024> I generally have my main/master branches protected, and if I want to force-push, I just go into settings, unprotect, do the push, and then reprotect...
16:27 hecks it's more like
16:27 hecks you fork something with github and then you clone it
16:27 hecks origin is now actually your fork... confusing
16:27 celeron55 github? bitbucket? some server at work? my own server? one of my VPSes? who knows
16:27 hecks best to add remotes explicitly
16:27 hecks with good names
16:27 sfan5 I have a remote named "upstream" for minetest/minetest
16:27 MTDiscord <Warr1024> origin is always "one hop upstream"...
16:28 MTDiscord <Warr1024> Heh, I use the "upstream" branch name to mean de facto "two hops" too actually
16:28 hecks also because i have random people's repos in the folder too
16:28 hecks to make PRs to PRs
16:28 MTDiscord <Warr1024> If I let things being confusing confuse me I'dn't've gotten anywhere to begin with...
16:29 MTDiscord <Warr1024> If I want to PR somebody else's PR I make a whole nother clone and just burn disk space.  I can handle some chaos but I also know my limitations...
16:30 freshreplicant[m From an outside perspective the points you made during shadowmap-gate were fair enough and logical, Hecks, but the way you communicated them was pretty abysmal. I really hope that as a core dev this changes. Not trying to stir anything up here, but opinions were being solicited.
16:31 hecks consider that I communicated this way because there has been this tug of war going for months where I had to fight tooth and nail to even get people to acknowledge that visual bugs are bugs
16:31 Krock you're literally stirring it up but it has to be mentioned, yes.
16:31 MTDiscord <Warr1024> In my experience it's easier to be belligerent when you have no power, but once you're handed power, and the accompanying responsibility, it's pretty sobering.
16:31 hecks if we can get that out of the way, I won't have a reason to yell at anyone
16:32 MTDiscord <Warr1024> I used to fight authority a lot but authority had the last laugh by must making me one too...
16:32 rubenwardy I agree with that. The points are valid, but not so much the way they were communicated. So I hope this won't be a problem in the future :) As a core dev, you represent the project
16:32 hecks and just by being accepted as a dev I have less of a reason to yell at anyone because well I don't know, at least I'm arguing from equal footing, or something
16:32 freshreplicant[m But I just don't personally understand it. Your points were valid, your solution sane. It seems like your Issue would have been a...non-issue...if you didn't write paragraphs upon paragraphs of how useless other people are.
16:33 hecks instead of having to beg for an acknowledgment that a bug is a bug
16:33 hecks I'll also work towards formalizing this further
16:33 hecks I don't know, get c55's opinion about this into the roadmap.md or how it's called
16:34 MTDiscord <Warr1024> Formalizing the design philosophy of a project is really hard.
16:34 MTDiscord <Warr1024> I've tried with NodeCore and I still feel like it's not there.
16:34 rubenwardy I don't think that's a strictly bug, but it's an important feature that should be high priority as it prevents breaking games. Something doesn't need to be a bug for it to be important and a blocker
16:34 rubenwardy *it's at least an
16:34 hecks re: shadows I'll clean this mess up myself along the way and then just ensure that this doesn't happen again
16:34 hecks by not giving a PR like this an approval unless it does the due work of providing compat
16:35 hecks MT is some people's upstream and we gotta be responsible about it
16:36 lhofhansl joined #minetest-dev
16:37 rubenwardy lhofhansl o/
16:38 Krock but unlike enterprise solutions, Minetest, especially the master branch, is not guaranteed to be stable
16:38 rubenwardy yeah, things may break in development versions but should/must be fixed by release
16:38 Krock a 5.5.0 release date is yet not set; and there's surely plenty of time to fix up stuff
16:38 rubenwardy that being said, MT has had a worrying tendency of breaking APIs recently
16:38 Krock .. which is exactly now.
16:38 sfan5 which apis would that be?
16:39 sfan5 the milestone for 5.5.0 says roughly August btw
16:39 rubenwardy the object API nillability and node alpha
16:39 Krock and for 0.5.0-dev, the player model offste
16:39 rubenwardy whilst not things guaranteed by the API, they broke a bunch of mods
16:39 sfan5 the latter did not
16:39 rubenwardy still improvements though, just annoying for modding
16:40 freshreplicant[m As a Minetest user of no real technical skill, as imperfect as shadowmapping may be, I theoretically least get some tangible benefit from it if I want to toggle it on. As an optional engine feature, any potential pluses are also universal and not game specific. I've noticed a few issues with it, but I presume they can be ironed out. But then again, I don't know enough to say that it is or isn't 'redeemable'.
16:40 Krock node alpha was tested well and did certainly not result in broken mods
16:40 rubenwardy oh right yeah, it's painful to migrate but didn't break anything
16:40 sfan5 you may be thinking of the first iteration of that pr which was not optimal
16:40 Krock unless you consider slight alpha shifts in transparent nodes (water) as breakage
16:41 MTDiscord <Warr1024> freshreplicant: the exception re: shadows always being an enhancement is when a game uses a custom skybox that doesn't have a sun, or otherwise has light sources in positions that don't match the calculations baked into the shader.
16:41 rubenwardy hecks: I eagerly await you and Liso fixing all our graphics issues :D
16:42 MTDiscord <Liso> Don't worry about me.
16:42 hecks liso, we need to talk about the shadow sampling performance
16:43 hecks I don't know why is it so slow but it somehow is
16:43 MTDiscord <Warr1024> Re: the alpha thing, having to migrate all the alpha = 160 properties I had to ^[opacity:160 texturemods was not fun, and I had considered doing a monkey-patch to apply this automatically in nodecore ... but in the end decided it was easier to bite the bullet and do it by hand.
16:43 kilbith joined #minetest-dev
16:43 hecks it's best if you link me to the whitepaper or tutorial you implemented here
16:43 MTDiscord <Warr1024> Supporting the true/false to clip/blend/none change was a bit trickier but I managed to survive that okay.  I think games/mods are probably okay as long as they don't try to support too wide a range of versions.
16:44 MTDiscord <Liso> Because it renders  a lot clientmap to get the huge buildings Mt has, and irrlitch doesn't support depth pass
16:44 sfan5 @Liso make sure to send a PR with shadowmapping fixes when you have them
16:44 MTDiscord <Liso> And it makes an insane amount of drawcalls
16:44 hecks I'm not talking about the shadowmap creation pass
16:44 hecks but actually about its use in the fragment shader, that is ungodly slow compared to any implementation I've seen
16:45 Krock rubenwardy: I think you're familiar with Docker; does #11313 seem reasonable to you? If so, it could be merged
16:45 ShadowBot https://github.com/minetest/minetest/issues/11313 -- Update Dockerfile and improve build speed on CPUs with a lot of core by bensuperpc
16:45 rubenwardy will check
16:45 Krock thank you
16:46 hecks also consider what I said about normal bias vs linear bias; linear is more reliable
16:46 MTDiscord <Liso> It's not optimized in any way, but it seems to be related with shadow texture access
16:46 hecks and lastly I'd like to investigate the cascading as the shadow resolution for the shadowmap size and distance doesn't seem to match my experience
16:46 MTDiscord <Liso> ?
16:47 hecks I couldn't get a good shadow even with a distance of 100 and a 4K map
16:47 hecks maybe the cascade steps could use rebalancing?
16:47 MTDiscord <Liso> It's not csm
16:47 hecks oh
16:47 hecks well f me, it should be
16:47 hecks for a directional light? we need cascades
16:48 MTDiscord <Liso> I discarded that because making 3-5 passes to create shadow maps was crazy slow
16:48 hecks otherwise all the work this does actually happens in places the player doesn't even see
16:48 hecks like 75% of the work is wasted in the distant under-mipped area of your field of view
16:48 hecks but oh right, we have a drawcall bottleneck
16:49 hecks we really need some form of MultiDrawElements in the engine
16:49 MTDiscord <Liso> No, with PSM we increase the texel density near the camera and reduce the density far away from the camera
16:49 hecks well it doesn't seem to offer the precision I'm used to with cascades
16:49 hecks but something like half that
16:50 MTDiscord <Liso> In fact  there is still some CSM residual names in the impl. Like createSplitFrustum
16:50 hecks maybe that's why I thought it's CSM, I've been reading it some
16:50 MTDiscord <Liso> If we reduce by 10x the drawcalls we can use CSM
16:51 hecks multidraw can do this
16:51 hecks I'm toying with the idea of a pure GL 4.5 renderer that uses all the tools available
16:51 MTDiscord <Liso> Also the current shadows have a HUGE bug that makes the frustum too big. I'm fixing it in other branch
16:52 hecks what are the obstacles if any to just using raw OpenGL in MT? Should I do this in IrrMt instead?
16:52 MTDiscord <Liso> Me too
16:52 rubenwardy hecks: technical ability and effort
16:52 hecks =]
16:52 rubenwardy oh wait, you meant along side irr
16:52 hecks yeah, sidestepping irr for it
16:52 MTDiscord <Liso> The draw pipeline and graph mostly
16:52 hecks would technically begin the divorce from irrlicht entirely
16:53 rubenwardy Well, replacing Irr with OpenGL would be great, but we currently lack experience with raw OpenGL for that and it's a lot of effort. But it may be more viable with you around
16:53 hecks this is relevant to my interests because I'm simultaneously developing a GL4.5 renderer as a toy project and doing a lot of research in the area
16:53 rubenwardy Using OpenGL alonside Irr is possible I believe
16:53 MTDiscord <Liso> I was playing with the idea of making an alternative renderer similar to MC optifine
16:53 hecks the part I'm afraid of is wrangling GL I guess; the part where you manage the OS-specific subtleties
16:53 hecks talking to xorg won't be fun
16:54 rubenwardy SDL is a good choice for that
16:54 hecks so maybe irrmt can be trimmed down to just doing what libs like SDL do
16:54 hecks or yeah just move to SDL
16:54 rubenwardy well supported, use a lot with opengl
16:54 hecks or better yet glfw, if you're minimalistic
16:54 celeron55 irrlight doesn't do much of anything if you don't call it
16:55 celeron55 so for the new renderer just skip the part that calls irrlicht for rendering and call opengl directly
16:55 hecks well if you made a GL4.5 renderer for mt, there would be no reason to do things like use irrlicht scene nodes and keeping models and textures in irrlicht objects
16:55 celeron55 you might have to add some interfaces to irrlicht to pull up the relevant handles
16:55 hecks it would be easier to just use internal objects for this stuff and write a fallback for old GL
16:55 hecks one more thing I'm not familiar with is how different GLES is from GL
16:55 celeron55 well, a gl4.5 requirement isn't acceptable to upstream MT
16:55 hecks other than some vague correspondence between the versions
16:55 hecks oh sure, not a requirement
16:56 celeron55 there needs to be some mode that works without
16:56 hecks but see above; a starting point
16:56 celeron55 oh
16:56 kilbith_ joined #minetest-dev
16:56 hecks there's basically a handful of hardware cutoff points that must be considered
16:56 hecks first one is GL1 itself, anything supports this
16:56 celeron55 i think GLES is mostly a limited version of GL, it has the most common things that are easy to implement on cheap mobile hardware
16:56 hecks second is probably GL2 where shaders are widely available
16:56 celeron55 the api listings are easily available
16:57 celeron55 i've sometimes compared some of them for some gl projects
16:57 MTDiscord <Liso> At the end irrlicjt only have the scenegraph and use it to order objs and materials to render in order and then calls gl fn
16:57 celeron55 because webgl is gles also
16:57 hecks GL3 adds geo shaders and the unified memory model, GL4 gives you compute and almost vulkan-like memory freedom
16:57 celeron55 https://www.khronos.org/registry/OpenGL-Refpages/es2.0/
16:57 celeron55 just look up what you'd be using
16:57 hecks I have skimmed the khronos specs, just wondering what exactly is the extra work that you have to do to keep supporting android
16:58 celeron55 not much more than a ctrl+f
16:58 hecks guess the answer lies in irrlicht's code
16:58 MTDiscord <Liso> IMHO the best option is the one that could be compatible with gles2
16:58 MTDiscord <IhrFussel> Don't make it so that MT requires a recent OpenGL version though...my pc got 2.1 for example
16:58 hecks gles levels roughly correspond to desktop GL levels
16:58 hecks and sure, I have no plans to *require* anything other than GL/GLES 1
16:59 rubenwardy eh, I think that OpenGL 2.1 is a reasonable requirement these days
16:59 MTDiscord <Liso> 2.1 has glsl include, texture arrays and up to 16 slots for textures. Good enough for me ?
16:59 celeron55 do you think it would be easier to get rid of irrlicht's scene and related things than to iterate them as-is and render using opengl instead of irrlicht
17:00 rubenwardy 2.1 was released in 2006
17:00 hecks celeron55: irrlicht's scene and entity system is awful and we're basically using it like 30% of the time
17:00 celeron55 i'm open to getting rid of it
17:00 hecks irrlicht also duplicates a lot of C++11 features
17:00 celeron55 it has a lot of stuff MT doesn't touch or need at all
17:00 MTDiscord <Liso> I'm with Hecks. But that's a huge amount of work
17:00 hecks it has basically clones of STL containers and smart pointers
17:01 hecks anything you do with IReferenceCounted can be done with a shared_ptr
17:01 celeron55 so, feel free to, essentially, but i'm not much help
17:01 rubenwardy big rewrites this is one way to kill Minetest development, mind
17:01 hecks and lastly entity-component systems are superior to irrlicht's loose "bag of nodes" approach
17:01 hecks and I've written many before, this is a trivial task
17:01 hecks like
17:01 hecks the scene and entity stuff
17:02 hecks minetest already has most of this implemented as far as I know, just in a disorganized way
17:02 rubenwardy merging #11313 in 10
17:02 ShadowBot https://github.com/minetest/minetest/issues/11313 -- Update Dockerfile and improve build speed on CPUs with a lot of core by bensuperpc
17:02 hecks while using SceneNodes in the client environment as rendering dummies
17:02 celeron55 well i don't know about entity-component, it an almost irrelevant detail
17:02 hecks we also have our own collision don't we?
17:02 hecks well an ECS is more maintainable, that's all
17:02 celeron55 +'s
17:02 hecks i would not expose it to the lua api at first at least
17:02 hecks it's just to compartmentalize the gigantic mess that content_cao.cpp is
17:03 hecks and lastly
17:03 hecks it would be an opportunity to really rigidly formalize object lifecycles
17:03 celeron55 i believe irrlicht's scene and node system basically just iterates through objects and renders them one by one, it's almost nothing
17:04 hecks and possibly introduce a persistent reference system, which is a prerequisite to doing that line renderer thing this plan9 guy wanted but which I couldn't deliver
17:04 hecks yup
17:04 celeron55 maybe distance culls them, but MT doesn't have much to cull because it manages that due to network and server reasons itself
17:04 celeron55 and rotates
17:04 celeron55 but that's like one matrix operation
17:04 celeron55 of course iterates through the mesh buffers or however a scene node renders itself
17:05 celeron55 did you look at https://github.com/minetest/minetest/pull/11050
17:05 hecks a part of this rewrite would involve being smarter about this, it's something that interests me a lot
17:05 hecks hmm interesting
17:05 MTDiscord <Liso> Or even make a proper culling.
17:05 MTDiscord <Liso> ?
17:06 Krock Patch to replace #11187 : https://krock-works.uk.to/u/patches/0001-Server-Ignore-whitespace-only-chat-messages.patch   is there any reason that an error message is necessary? if not; I'll just push that today to close the PR
17:06 ShadowBot https://github.com/minetest/minetest/issues/11187 -- Disallow empty messages by DiamondPlane
17:06 celeron55 i think a modern renderer wouldn't ask objects to render themselves but instead view objects as data and be more freeform in how to make them all display
17:07 hecks yes, you'd collect drawcalls, sort and prune them, and then compile them into an optimized command list, and dispatch to GL in one short burst
17:08 hecks I have done some experiments with this (in pure luajit) https://a.uguu.se/7z5hY8qcoxCV_mdi.png
17:08 MTDiscord <Liso> And With that you have the gpu culling for "free"
17:08 hecks actually this is pure irony, luajit is so good you could write almost everything in it...
17:09 celeron55 that's why CSM and SSCSM make sense for graphics, at least 2D and UI
17:09 hecks well GPU culling ought to ideally occur in a compute shader pruning a MultiDrawIndirect drawcall list
17:09 celeron55 but it's irrelevant to this
17:09 Pexin [']p----++-3.
17:09 hecks and as long as you have MultiDrawElements or MultiDrawArrays (much more compatible) present, you can emulate this behavior on the CPU
17:10 celeron55 also, MT is sometimes run with non-jit lua if luajit isn't available on a platform
17:11 celeron55 i think to get started on what you're proposing, you need to start by making the simple stupid gl1 or gl2 renderer for old hardware with the supporting changes in scene management
17:11 celeron55 then get to the gl4 version
17:11 lhofhansl #10788 is ready for a final (hopefully) review.
17:11 ShadowBot https://github.com/minetest/minetest/issues/10788 -- Switch MapBlock compression to zstd by lhofhansl
17:12 celeron55 i mean, gles1 or gles2
17:12 celeron55 i assure you it's going to be a bit of a shitshow, we still have users that don't use shaders at all
17:12 rubenwardy sorry, Krock, not-so-ninja edited https://github.com/minetest/minetest/pull/11338#issuecomment-865199426 for the last time
17:12 hecks yeah i'm aware
17:12 celeron55 but by this point we should be able to get through it
17:12 hecks i wouldn't try to drag you into my luajit abuse
17:13 hecks some of it is real esoteric
17:13 hecks re: the order in which this is done
17:13 rubenwardy OK, edited again, typo
17:14 hecks I would much rather create a GL4 renderer and then make fallbacks because the modern way is good practice anyway
17:14 hecks of course as a single task, it's just a design philosophy
17:14 celeron55 well either way, just try to get it to a testable state soon enough
17:14 hecks this is far off on the roadmap but possible
17:15 hecks i could try monkey hacking MDI into irrlicht for a quick fix
17:15 hecks which just means making it concat VBOs and produce multidraw lists if the relevant GL extensions are present
17:15 Krock rubenwardy: yes the inconsistency sucks. we could add a helper function but I don't know whether it would be any good. Rather hijack the metatable or direct table of "io" so that io.lines() behaves correctly
17:15 hecks this will reduce drawcalls from materials*blocks into just materials
17:16 hecks and then texture array support would reduce it to just material types
17:16 Krock where "correctly" is to be debated, since `\r` may also be intended as a new line
17:16 hecks isn't what counts as a newline in lua locale dependent?
17:16 hecks er
17:16 hecks system dependent
17:17 rubenwardy files are shared between computers
17:17 Krock that's the problem. it must support line endings universally
17:17 rubenwardy so all computers should be able to handle all line endings
17:17 rubenwardy CRLF and LF most importantly, but CR too
17:17 celeron55 hecks: i would expect it to require rewriting quite a lot of irrlicht, but if it's reasonably possible it would be worth it. it should result in basically the same performance as any custom implementation
17:17 celeron55 it would just be uglier
17:17 rubenwardy I mean, CR is rare enough these days that it's not as important
17:18 Krock well, Macintosh is long gone, and MacOS uses \n
17:18 hecks not that much from what I've scouted last time I poked at map rendering
17:18 hecks it's just a change of how VBOs are committed to GPU memory
17:18 Krock \r could just be ignored I guess
17:18 rubenwardy right, might as well ignore \r then
17:18 MTDiscord <appguru> ignoring \r makes matters harder
17:18 rubenwardy no, makes it easier
17:18 hecks don't some systems use CR only?
17:18 rubenwardy you only need to look for \n then, and remove trailing \r
17:19 hecks if you only consider unix and windows then you can just drop CRs
17:19 hecks but I've heard of CR only systems, just don't remember what they were
17:19 Krock macintosh for example, but that's safely to assume as dead
17:19 rubenwardy by "ignoring \r" we mean ignore the fact that \r is sometimes used as a line ending, and only support \r\n and \n
17:19 MTDiscord <y5nw> I don't think MT currently (officially) supports CR-only systems
17:20 celeron55 yeah don't even bother with CR-only
17:20 hecks then LF only should work
17:20 hecks even windows mostly tolerates LF only
17:20 rubenwardy problem is when users edit files or checkout using git, that often introduces \r\n
17:21 hecks uhhhh
17:21 hecks that's their fault basically
17:21 rubenwardy so even if MT only emits \n, \r\n needs to be supported when reading
17:21 celeron55 on windows notably notepad doesn't support \n, it only works with \r\n
17:21 sfan5 never had that happen to me on linux ;)
17:21 hecks yes but who uses notepad?
17:22 hecks and i wouldn't be surprised if windows 10 notepad tolerates pure \n
17:22 celeron55 and git has chosen its default really badly, converting text files by default is so stupid
17:22 queria joined #minetest-dev
17:22 celeron55 it creates problems both ways, trying to run a BAT file on linux won't work either when git helpfully converts \r\n to \n and the windows cmd doesn't support \n
17:22 Krock even wine's notepad.exe can read \n line endings properly, and pretty sure windows 10' notepad does too
17:23 MTDiscord <Warr1024> I would not be surprised if git removes the \r\n <-> \n conversion thing at some point and just starts relying on all modern OS
17:23 MTDiscord <Warr1024> to handle \n
17:23 rubenwardy hm, io.lines is never used by MT and *line is only used in the settingtypes
17:23 rubenwardy I guess there's not that many custom formats
17:23 hecks git at least shows you big ugly blocks in git show when you accidentally commit something with CRs
17:24 hecks i just fix that and squash when it happens
17:25 kilbith_ I personally am uncomfortable with Warr1024 being a core-dev, for personal reasons. The guy has been portraying me as the "most insane person to speak with" on Discord and has been mocking me publicly for my alternative job that we aren't supposed to talk about. For these reasons it'll be hard for me to collaborate with Warr1024. I also dislike Discord'ers unhealthy mindset to seek for higher ranking and flashy accolades when an opportunity arises.
17:26 pgimeno <Liso> At the end irrlicjt only have the scenegraph and use it to order objs and materials to render in order and then calls gl fn  <-- And to hinder extending the coordinate range, and causing coding horrors like the "camera offset", by using single precision floats for positions.
17:27 pgimeno as for CRLF and git, git has a .gitattributes that unfortunately isn't used as much as it should.
17:27 hecks camera offset... is that still there? i remember killing it
17:28 hecks at least in the map renderer
17:28 hecks it did literally nothing of value
17:28 hecks and neither does the *BS scale, i'd love to squish that one too
17:28 Krock you cannot kill the camera offset without, only fix its bugs. the camera offset exists to not cause jerky textures at the world edges
17:28 pgimeno +1 about BS scale. It's literally BS.
17:28 hecks uhhhhh
17:28 hecks oh i remember what it was now
17:29 hecks the camera offset was literally implemented by shifting mesh vertices around :DDDD
17:29 hecks good times
17:29 hecks yeah i guess it's still there, just being done with a matrix
17:30 hecks honestly if some rare, critical transformations were just done in double precision, this wouldn't matter
17:30 pgimeno Krock: you can kill it by making it continuous and transparent to the rest of the code, but that basically needs a rewrite of the scenegraph renderer
17:30 hecks BS scale might have some history in the context of like
17:30 hecks serializing positions over the network? just a guess
17:30 Krock pgimeno: wouldn't that rather be "moving it somewhere nobody will ever look again"?
17:30 pgimeno hecks: mostly position transformations. Rotations and scales can remain single prec.
17:30 hecks I'd like one of the elder gods to tell me exactly how that happened
17:31 hecks but even having to mentally convert between world space and BS space in the lua api is taxing
17:31 pgimeno Krock: yes, making it no longer be a problem anymore. That's also what MC did for what I read once.
17:31 hecks I've got a vague plan to iron that out actually
17:31 hecks provide renamed, correct-coordinate copies of properties that use the BS scale and deprecate the originals
17:32 Krock BS is (still) used for better precision for network-sent positions (as integers) and to notice when a calculation didn't work properly
17:32 pgimeno And basically what I did for OpenMiner, which has a +-2^31 range of coordinates with leave waving working everywhere.
17:32 Krock latter is just a "meh" side-effect I guess
17:32 hecks but in that case BS should just be converted immediately as a packet is constructed or unpacked
17:32 hecks if it has any use in serialization, that's the only place it should live
17:33 hecks and not peppered all over the code
17:33 pgimeno I tried setting BS to 1 just to test, and it affected more than it should, including inertia and scaling of some nodes.
17:33 Krock summon cccc55. he might know.
17:33 hecks BS is basically the client environment coordinate space from what I gather
17:33 hecks the actual space that the irrlicht scene nodes live in
17:33 hecks while metric space is what the server environment and lua apis use... for the most part?
17:34 hecks but then any property that is in object space is also in BS, like visual_size
17:34 hecks anyway there's that deprecation plan if anyone wants to poke holes in it
17:35 hecks provide good space properties with good names, old ones are only used if present and converted. what could possibly go wrong?
17:35 rubenwardy god, I hate how attachments are 10x world coords
17:35 rubenwardy I wish 5.0 had fixed that
17:35 hecks that's BS space for you
17:35 rubenwardy also, degrees vs radians
17:35 rubenwardy yeah, but it sucks that it was leaked into the Lua API
17:35 celeron55 BS means bullshit, it's a mistake
17:35 Krock rubenwardy: inb4 API breakage
17:36 rubenwardy :'(
17:36 rubenwardy 5.0 was the opportunity to fix it
17:36 hecks i think the migration plan is sound
17:36 hecks we can do it for 6.0
17:36 hecks also an opportunity to resolve some WTF naming in the api like
17:36 celeron55 i was using BS initially to debug node alignment and other stuff
17:36 hecks visual_size -> that's a "scale" for you
17:37 celeron55 and then left it as 10 like an idiot
17:37 hecks and then if someone still uses visual_size, that's read as BS space and converted
17:37 hecks and by default it's nil and "scale" is used
17:37 rubenwardy yeah, that's another thing - scale should be an object transformation, not an object property. And there should be a visual size like property that doesn't effect children
17:37 hecks oh like
17:37 hecks scrap the property altogether and just have a transform api?
17:37 hecks sure thing
17:37 rubenwardy object transformation is position + rotation + scale, and effects children
17:38 celeron55 if you're changing the function name and leaving the old one you don't need a major version to change the api
17:38 celeron55 you can do that any time
17:38 celeron55 it's completely compatible
17:38 rubenwardy could use `:attach` as the new name, better grammar than `:set_attach`
17:39 pgimeno remember, all of that has to be done while keeping 100% compatibility. And BS has issues for that. I looked into it a bit.
17:39 hecks well 6.0 can delete the old apis to trim lua_api.txt
17:39 rubenwardy problem with this is that it can cause confusion between the different versions
17:39 hecks and to trim the code we have to maintain
17:39 hecks the idea is
17:39 hecks convert all internal coordinates to metric in the client and server env. this is the ground truth
17:39 hecks use BS for serialization, transparently
17:40 hecks and then convert BS data quietly to metric in legacy apis
17:40 pgimeno and for some APIs too
17:40 hecks for legacy apis, like people still using the visual_size property, that overrides transform scale if present
17:41 hecks and is converted from BS to metric (and then back when the packet is sent, but that's legacy support for you)
17:41 celeron55 that's a lot of work for effectively no result or new bugs at best, but feel free to 8)
17:41 hecks overall the lack of *BS in c++ code will remove a lot of noise
17:41 hecks it's a minor hurdle for new contributors trying to understand the code
17:41 hecks and anyone trying to maintain it
17:41 hecks you have to mind the BS space at all times when working with CAOs because they're used arbitrarily
17:43 pgimeno camera offset space is also an obstacle for the same reasons, I've run into it often enough
17:44 pgimeno you can identify the issues by setting BS=1 and watching the effects, e.g. the player becomes a lot more slippery
17:44 celeron55 well that just means you'll have to divide something by 10 somewhere
17:45 pgimeno yeah, but you must make sure not to miss any of these in order to keep compatibility
17:45 celeron55 at least i was wise enough to not propagate the BS in the lua api, lol
17:45 celeron55 imagine not doing that
17:45 celeron55 into*
17:45 hecks =]
17:45 rubenwardy merging #11371, #11338, and #11313 in 10
17:45 ShadowBot https://github.com/minetest/minetest/issues/11371 -- Update builtin locale by Wuzzy2
17:45 ShadowBot https://github.com/minetest/minetest/issues/11338 -- Strip carriage returns from lines in settingtypes.txt by neoh4x0r
17:45 ShadowBot https://github.com/minetest/minetest/issues/11313 -- Update Dockerfile and improve build speed on CPUs with a lot of core by bensuperpc
17:45 hecks oh right, config too
17:46 hecks gotta find all the places BS is present in .conf, but there aren't many of those are there?
17:46 celeron55 ...none?
17:46 rubenwardy I don't recall configs for that?
17:46 rubenwardy you can't set attachments there
17:46 hecks I mean, any config values that are in BS space
17:46 hecks do those exist?
17:46 rubenwardy I don't think so
17:46 celeron55 as i said, possibly none
17:46 rubenwardy unless there's a camera offset one
17:47 pgimeno are the player physics settings in config?
17:47 rubenwardy no
17:47 hecks there sadly are some player physics in the config (yuck!) but they're in metric
17:47 specing joined #minetest-dev
17:47 Wuzzy I think hecktest has a point about dynamic shadows tho. Yes, is a problem that games cannot defend against dynamic shadows
17:47 rubenwardy we agree on that
17:48 hecks I'll tie the shadows to the presence of sun and moon at the moment
17:48 pgimeno hecks: see what I said above about becoming slippery, maybe there's a bug that makes some physics settings use BS somewhere
17:48 hecks and then provide a better api for this stuff
17:48 hecks https://a.uguu.se/Uq0VWazX0teT_physconfig.png anyway we do have physics in .conf sadly
17:48 hecks let's delete this someday
17:48 rubenwardy surely that's in metric?
17:48 hecks yes
17:49 hecks luckily no BS scale here
17:49 pgimeno no friction there, I believe it's friction what affects the slipperiness
17:52 Wuzzy What does the "Roadmap" label do?
17:53 rubenwardy https://github.com/minetest/minetest/blob/master/doc/direction.md
17:53 rubenwardy also search for roadmap in here: https://github.com/minetest/minetest/blob/master/.github/CONTRIBUTING.md#code
17:54 Wuzzy oh. is the Roadmap label new?
17:54 rubenwardy I think it's been around for a while, but it has a new purpose now
18:02 rubenwardy hecks: #11130 might be a good one for you
18:02 ShadowBot https://github.com/minetest/minetest/issues/11130 -- Fix rendering of allfaces nodes with transparent textures by x2048
18:05 rubenwardy sfan5: why did you add possible close to #10430 ?
18:05 ShadowBot https://github.com/minetest/minetest/issues/10430 -- Add core.MAX_MAP_GENERATION_LIMIT constant to builtin by kay27
18:06 rubenwardy guessing the feature is flawed? In which case, it's been a month so can be closed :)
18:08 MTDiscord <Warr1024> If they're talking about adding a constant to interpret mapgen_limit, then yeah, that'd be flawed.  I tried doing the math for it myself and I got it only like 90% working, but it's definitely not something that can be represented with a single constant.
18:08 rubenwardy yeah that's what I suspected
18:10 MTDiscord <Warr1024> I used mapgen_limit on a server and wanted to add a visual effect using particles at the world boundaries.  I tested it on a few values and got it to work for those test cases, but I kept running into fenceposty issues at different scales.  It seems as though very small worlds, or particular round-number effects may change where exactly the boundaries show up.
18:10 MTDiscord <Warr1024> Probably there's some combination of margins and adjustments plus knowing when to > and when to >= that would fix it for me but I just never figured it out and didn't want to dive into the code for it at the time.
18:11 sfan5 rubenwardy: because of the alternate suggestions probably
18:11 MTDiscord <Liso> #11130 seems to work fine. And the code doesn't seems to be bad. It has some weird looking glass because the backculling but removing it will break other blocks like water and leaves
18:11 ShadowBot https://github.com/minetest/minetest/issues/11130 -- Fix rendering of allfaces nodes with transparent textures by x2048
18:12 hecks I'm concerned about performance
18:12 rubenwardy has anyone else noticed just how many word wrapping functions minetest has
18:13 Krock not enough
18:13 rubenwardy loads of elements have their own implementation, chat.cpp, minetest.wrap_*
18:13 rubenwardy I need to finish #10853, but text is a pain
18:13 ShadowBot https://github.com/minetest/minetest/issues/10853 -- Add WordWrapper util (with unit tests, ellipsis truncation, and fixes) by rubenwardy
18:14 hecks hopefully this sorting is only done when necessary and only on the meshes that actually need it
18:14 hecks quick check; do we use index buffers...
18:15 MTDiscord <Warr1024> "text is a pain" ... haha, especially when you're dealing with unicode, and stuff like the fact that you might have UTF-16 text but "string length" functions interpret them as UCS-2...
18:16 rubenwardy my word wrapper ignores RTL languages :(
18:16 rubenwardy no wrapper in Minetest correctly deals with RTL languages anyway
18:16 hecks it seems that we do use indexbuffers and DrawElements
18:16 hecks in this case x2048's thing probably ought to sort primitives and not regenerate a mapblock
18:17 sfan5 it also changes which side of a node generates the face IIRC
18:17 sfan5 couldn't do that by changing the order
18:17 hecks hmmmmm
18:18 hecks can't that be handled with backface culling?
18:18 hecks you can flip a primitive's winding order by manipulating an index buffer
18:18 hecks just by changing it from clockwise to counter
18:19 hecks let's say that
18:20 hecks if it only regenerates alpha blend and nothing else and nobody suffers too much stutter, it's fine but with a "todo" attached
18:20 hecks but if it lags even under these constraints, guess we'll need to avoid a full remesh
18:20 hecks and if it regenerates meshes that don't need it, that's a priority to fix
18:21 hecks I'll read it in a moment...
18:22 hecks ok so it satisfies the basic condition
18:22 sfan5 re indexed rendering: Irrlicht is missing the ability to do non-indexed rendering
18:22 hecks no DrawArrays?
18:22 hecks that could be easily patched in
18:22 hecks would help particles
18:22 sfan5 yes
18:22 hecks although wait, particle sorting is best done with an index buffer...
18:22 sfan5 I think it's mentioned in the "recondier irrlicht workarounds" issue too
18:22 hecks and particles usually need sorting
18:22 sfan5 reconsider*
18:22 sfan5 particle depth sorting is also broken
18:22 sfan5 and there's a PR for it or something
18:23 hecks alright
18:23 hecks link the issue because I might have something to add to it
18:23 hecks the ejuor_control bone thing
18:23 hecks if someone hasn't already
18:23 sfan5 #11040
18:23 ShadowBot https://github.com/minetest/minetest/issues/11040 -- Revisit Irrlicht workarounds
18:23 hecks there's hacks regarding bones in content_cao and they probably should be fixed properly
18:24 hecks oh ok i posted it already
18:24 hecks todo...
18:28 Jordach joined #minetest-dev
18:28 MTDiscord <IhrFussel> Where do you plan to put the movement_speed_* settings instead? They are useful on servers since they also apply to clients
18:29 MTDiscord <IhrFussel> I limit 'fast' for everyone that way
18:31 MTDiscord <IhrFussel> I guess they could be included in the 'set_physics_override' method
18:34 Noisytoot joined #minetest-dev
18:36 kilbith joined #minetest-dev
18:40 kilbith__ joined #minetest-dev
18:48 kilbith_ joined #minetest-dev
19:05 celeron55 obviously in set_physics_override
19:06 celeron55 or something similar, if there's a reason to not use that exact one
19:06 sfan5 oh I get the point of it now
19:06 sfan5 we transparently multiply the movement speed in the .conf into the value set using physics overrides
19:06 sfan5 but obviously you could delegate to games
19:07 celeron55 yeah, the non-override values should probably be set with.... set_physics
19:07 celeron55 lol
19:09 celeron55 which could be extended to eg. a supplied physics lua script to the client, to instead do the physics in a separate sandboxed environment like my demo years ago
19:11 celeron55 https://github.com/celeron55/minetest/compare/297546af3d3b5b3a07a61ade041ad7c26e9a531d..1f4ca9df4219768d7678ccccd5e6ceba720e2930
19:41 rubenwardy merging #11283 in 10
19:41 ShadowBot https://github.com/minetest/minetest/issues/11283 -- Move build/android directory to root of project by NeroBurner
19:50 pgimeno are there any plateforms where Minetest runs that lack support for LuaJIT?
19:51 MTDiscord <appguru> @《Safari》
19:51 Krock LuaJIT runs on more platforms than Minetest, all overlapping.
19:51 pgimeno well, iOS lacks support for JIT
19:51 Krock iOS is not supported, officially.
19:51 pgimeno good
19:51 rubenwardy what about Android?
19:52 pgimeno works fine there (current 2.1 beta)
19:52 sfan5 pgimeno: I believe we discussed this before and I couldn't come up with one
19:52 rubenwardy well, for iOS you can disable the JIT of LuaJIT
19:52 Krock https://luajit.org/luajit.html  iOS and Android are listed there too
19:52 sfan5 (still I wouldn't be okay with dropping non-lj support)
19:52 pgimeno Krock: it's a politics thing, not technical. App Store rules.
19:53 rubenwardy in terms of LuaJIT causing security issues, is that just a JIT thing?
19:53 Krock pgimeno: yes I know
19:53 rubenwardy I believe there were concerns about having LuaJIT and SSCSM
19:53 sfan5 those were about the jit yes
19:54 pgimeno rubenwardy: I believe so, if dofile, loadstring, require, etc. are disabled
19:54 rubenwardy I think those are overridden but not disabled
19:54 pgimeno otherwise there's also problems with bytecode
19:54 rubenwardy overridden to not allow bytecode or reading from files
19:54 MTDiscord <appguru> yep
19:54 sfan5 that's all taken care of by the sandbox we already have
19:55 rubenwardy any sources on LJ vulns without bytecode or jit.*
19:55 rubenwardy I guess there's spectre-esque issues
19:55 pgimeno oh did you mean jit.* or JIT-compiled code?
19:56 rubenwardy by JIT off I meant `jit.off()`
19:56 pgimeno ah
19:56 Krock but can't Lua also generate its own bytecode? perhaps only for newer version though, I'm not sure.
19:56 nrz nice tech merging :) <3
19:56 pgimeno with JIT off and with those disabled, it should be pretty safe
19:56 rubenwardy I've merged 6 PRs today, shock
19:58 pgimeno of course all assuming that FFI is not available, otherwise it's open season
19:58 MTDiscord <Jordach> macOS/iOS will kill all unsigned JIT apps by the kernel
19:58 MTDiscord <Jordach> requiring a developer license
19:58 MTDiscord <Benrob0329> FFI is already behind mod security
19:59 celeron55 Krock: lua can run bytecode, but it can be disabled (and hopefully is disabled already)
19:59 celeron55 standard thing to do when sandboxing it
20:01 sfan5 random thought: we should write our own linter that catches obvious things like trailing whitespace, spaces vs tabs but leaves everything else alone
20:01 sfan5 it would then actually provide useful feedback for PRs
20:01 MTDiscord <Benrob0329> Just a Luacheck conf would probably suffice, its the tool for that and has a lot of options.
20:02 sfan5 luacheck on C++ code?
20:02 MTDiscord <Benrob0329> (Including comment-set ignoring of lines)
20:02 MTDiscord <Benrob0329> Oh, no sorry. Lua was the last language talked about
20:02 rubenwardy Yeah
20:02 sfan5 true, I didn't mention it
20:02 rubenwardy I also think obvious stuff like pointer and brace placement makes sense
20:02 sfan5 but we do already have luacheck for builtin
20:08 v-rob joined #minetest-dev
20:20 MTDiscord <josiah_wi> There have been attempts to fix the clang format checker, but to my knowledge all of them eventually died; why is that?
20:26 queria joined #minetest-dev
20:27 rubenwardy it's hard to get it to exactly match Minetest's particular code style
20:28 rubenwardy the closest I've gotten is basing it off of the Linux kernel's clang format config, but that's unfortunately GPL
20:28 v-rob Ugh, the IRC logs for today are disgustingly long. So, Warr1024 and hecks are core developers now?
20:28 rubenwardy clang-format just doesn't have a chill mode
20:28 rubenwardy v-rob: yes
20:29 hecks i guess?
20:29 hecks call it the gamedev lobby
20:29 v-rob Hoo boy, this should be interesting.
20:29 specing rubenwardy: why are you people using LGPL for Minetest?
20:30 rubenwardy \o/
20:30 hecks instead of full GPL? or instead of MIT/BSD
20:30 specing Instead of full GPL or AGPL, even
20:30 hecks full GPL would be hairy with regards to the murky definition of linking code
20:30 rubenwardy Minetest isn't a library. The only real use LGPL has is when wrapping Minetest in a proprietary Java wrapper to show ads on Android
20:30 hecks AGPL would be a showstopper for me and a nightmare to enforce, many server admins make tiny changes and that's just a mess
20:31 hecks it's not a library but I'm sure you could find a lawyer who defines the running lua code as linked
20:32 hecks LGPL avoids all issues and provides decent freedom protection still
20:32 specing lmao, so put in a linking exception if that ever becomes an issue
20:32 hecks there isn't much incentive to keep fixes private anyway
20:32 rubenwardy running Lua code isn't a linkage, I believe the gnu website has an example of thise
20:33 specing hecks: though as you mention this, SpringRTS is GPL-something and the devs consider lua scripts as derivative works and also covered by the GPL-something
20:33 hecks only crappy part is unscrupulous android app developers making ad-ridden versions
20:33 pgimeno <rubenwardy> the closest I've gotten is basing it off of the Linux kernel's clang format config, but that's unfortunately GPL   <-- is that a problem? you're not linking to it are you?
20:33 rubenwardy it's not strictly a problem, but mixes up the repo
20:33 specing hecks: so? convert to agpl already
20:33 sfan5 reminder that we have openssl code in our codebase
20:33 sfan5 with who knows what license
20:34 specing There's no reason to use LGPL other that to say loudly that you wont bother enforcing anything
20:34 specing But really, do you like seeing ad-wrapped MT on phones and/or heavily modified proprietary servers?
20:34 specing if you do,then keep the LGPL
20:36 hecks if someone makes ad wrapped clones as a scam, will a license really deter them?
20:36 specing With the AGPL, all it would take is one sufficiently pissed off contributor to put a stop to that
20:36 v-rob No
20:36 hecks do we even have the resources to enforce this?
20:37 v-rob No
20:37 hecks do we care about phone users falling for "free minecraft" apps?
20:37 rubenwardy the answer for that is very much no, because there are already many violating apps on google play
20:37 hecks probably no as well
20:37 hecks I'll just have a disclaimer on the server, if you paid for this, you got scammed
20:37 v-rob Well, I care, but I can't do anything about it
20:38 pgimeno sfan5: according to /usr/share/doc/openssl/copyright it's BSD 6(?!)-clause and BSD 4-clause, IIRC that's incompatible with the GPL, not sure about the LGPL.
20:39 sfan5 https://github.com/minetest/minetest/blob/master/src/util/sha256.c#L4 "the OpenSSL license [found in ../../LICENSE]."
20:39 sfan5 very useful thanks
20:39 hecks the mythical 6 clause license of the ancients
20:40 sfan5 I know other LGPL programs link to it so it'll be compatible
20:41 pgimeno a frigging SHA-256 routine? I'm sure there are hundreds with very liberal license
20:41 pgimeno +s
20:42 pgimeno hm, for what I see, no, the LGPL has the same problem as the GPL with the advertising clause. See https://www.gnu.org/licenses/gpl-faq.en.html#OrigBSD about the reason and https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html section 10 on the same wording used in the LGPL as in the GPL.
20:43 specing hecks | I'll just have a disclaimer on the server, if you paid for this, you got scammed
20:43 specing hecks: and what will the player[s] do?
20:44 specing they can't do anything. The "scam" was legal
20:44 v-rob Well, often they aren't
20:44 hecks feel like an idiot? it's a phone user, I don't really care
20:47 pgimeno https://code.woboq.org/userspace/glibc/crypt/sha256.c.html - LGPL 2.1 ; https://github.com/B-Con/crypto-algorithms public domain
20:48 * celeron55 is licensed under the BSD 12-clause license
20:49 * pgimeno is licensed under the sanity clause
20:50 * v-rob is forking celeron55... please wait
20:51 v-rob sfan5: I made the change to irr#41, could you finish looking over it?
20:51 ShadowBot https://github.com/minetest/irrlicht/issues/41 -- Fix `getViewPort` returning incorrect results by v-rob
20:52 sfan5 hm a dimension is not a rect why did I propose that
20:52 v-rob Because the upper left corner is always (0, 0)
20:53 sfan5 >setViewPort(core::recti(0, 0, size.Width, size.Height));
20:53 sfan5 intended or did you forget this one?
20:53 v-rob That's not setViewPortRaw
20:53 sfan5 exactly
20:53 pgimeno joined #minetest-dev
20:53 v-rob It doesn't use OpenGL coordinates (which seem to be upside down on the Y axis)
20:54 v-rob But setRenderTarget does internally, so it uses Raw
20:57 sfan5 so it's intended that OnResize calls setViewPort (not raw!) which clips against the current render target?
20:57 sfan5 sorry if I'm asking stupid questions
21:03 sfan5 (because I thought the point was to s/CacheHandler->setViewport/setViewPortRaw/)
21:03 v-rob Um, I had to think for a moment, and I guess that could lead to incorrect behaviour if a viewport should be preserved between separate driver->begin/endScene, but no one should do that. But otherwise, OnResize will essentially update the viewport (which could be a render target pretending to the the screen) to the new screen size, which is correct.
21:04 sfan5 CNullDriver::OnResize sets the viewport but only if it matches the screen size, huh?!
21:06 v-rob Wait, that doesn't make much sense. Why is it doing that?
21:06 sfan5 who knows
21:06 v-rob I don't like Irrlicht
21:07 pgimeno joined #minetest-dev
21:10 v-rob I guess that code is a lame attempt to ensure that the current render target is the screen or a render target pretending to be the screen.
21:10 sfan5 v-rob: added 2 small comments, I swear these are the last
21:11 v-rob OK, yeah, OnResize doesn't need the setViewPort, you are correct.
21:12 sfan5 if you change CNullDriver that is, or do you mean even without that?
21:12 pgimeno joined #minetest-dev
21:12 sfan5 ahh wait
21:12 v-rob CNullDriver works since it sets ViewPort if it's probably the screen
21:12 sfan5 yeah your explanation makes sense
21:12 sfan5 a bit hacky but it has purpose
21:15 v-rob OK done
21:16 pgimeno joined #minetest-dev
21:17 v-rob Thanks
21:17 pgimeno joined #minetest-dev
21:20 sfan5 the global setting layers are never deallocated and now that my PR does it differently valgrind complains about it
21:20 sfan5 ugh
21:21 MTDiscord <IhrFussel> If MT used AGPL it still wouldn't affect custom mods right? Then I wouldn't care as long as I can keep the majority of my mods unique
21:21 v-rob Somehow, I doubt Minetest will be relicensed
21:21 v-rob Just a guess judging by the numerous discussions in the past.
21:22 MTDiscord <IhrFussel> I know that but just wanted to know in case it ever happens
21:22 v-rob We're very good at discussing not-going-to-happen things here at Minetest, such as name changes
21:22 sfan5 there's still opportunity to rename it to Mesetint
21:22 MTDiscord <IhrFussel> Is there any license that would also affect mods written for the software?
21:28 specing It doesen't have to be "relicensed"
21:29 specing just new code under AGPL that will absorb the LGPL one
21:31 Wuzzy rubenwardy: now the only thing in my pr is the version check. i have no idea what to do ....
21:55 MTDiscord <Warr1024> So I started looking into that a bit
21:55 MTDiscord <Warr1024> it seems as though the server has a lot of places where it knows the client's proto version, but the reverse does not seem true
21:55 MTDiscord <Warr1024> unless it gets stuffed in some other variable of some other name
21:56 MTDiscord <Warr1024> It seems as though maybe the design here is that the server just tells the client that its protocol version is the same as the client's, and it's the server's responsibility to protocol-downgrade where necessary
21:56 sfan5 sounds accurate
21:56 MTDiscord <Warr1024> If that's true then protocol version wouldn't be workable in this case.
21:57 sfan5 the client says I support [A, B] the server picks an X out of that
21:57 YuGiOhJCJ joined #minetest-dev
21:57 MTDiscord <Warr1024> I suppose though that a server would receive PV 40 from a 5.5 client but only be able to talk 39, and protocol upgrade and downgrade are different beasts
21:58 MTDiscord <Warr1024> so if a newer client can connect to an older server at all then there must be some place this is handled somewhere and I'm just not finding it yet?
21:58 MTDiscord <Warr1024> TOCLIENT_HELLO definitely includes a protocol version
21:58 MTDiscord <Warr1024> I just need to figure out where, if anywhere, this is already stored
21:59 sfan5 it contains the version the server has chosen
21:59 MTDiscord <Warr1024> okay, searching for /protocol_version/i only works well if the client doesn't decide to name the variable /proto_ver/i
21:59 sfan5 it will never be higher than the max version supported by the client
21:59 MTDiscord <Warr1024> In this case the client would ask for 40, but the server would only be able to send 39, so we'd still be able to detect a server that wouldn't yet know about basic_debug this way.
21:59 sfan5 wait is this for 5.5 client on 5.4 server?
22:00 sfan5 ah yes
22:00 sfan5 the reverse doesn't make sense anyway...
22:01 MTDiscord <Warr1024> u16 Client::m_proto_ver seems to be where the client remembers this.
22:02 MTDiscord <Warr1024> Wuzzy's checks are all in game and gameui, so all I need to do is figure out how the 2 are connected to each other...
22:02 sfan5 game should have a m_client or something
22:05 MTDiscord <Warr1024> client has a gameui
22:05 sfan5 you can't go Client -> Game
22:05 MTDiscord <Warr1024> it seems that gameui must somehow get the flags to game, but it looks like the wuz has already figured that much out somehow...?
22:05 sfan5 only the other way
22:05 sfan5 wait
22:05 sfan5 ignore what I said
22:05 MTDiscord <Warr1024> okay, I'll check game again and see if it has a client...?
22:06 MTDiscord <Warr1024> game does have a gameui
22:06 sfan5 I was thinking you'd check m_client->m_proto_ver somewhere in the game to override the debug check thingy
22:06 MTDiscord <Warr1024> yeah, if there's a client->gameui instance, then I should be able to just push the flag in from there...
22:07 sfan5 why gameui?
22:07 MTDiscord <Warr1024> I dunno, that's where I found references to basic_privs
22:08 MTDiscord <Warr1024> er basic_debug
22:08 MTDiscord <Warr1024> if I can figure out how client and game talk to each other then I could do it there
22:08 MTDiscord <Warr1024> it looks like game check m_game_ui->flags anyway?
22:08 MTDiscord <Warr1024> so gameui seems to be the primary "owner" of this option
22:09 MTDiscord <Warr1024> oh no wait, there's a gameui option probably for whehter it's requested, and a client->checkPrivilege() call for whether it's allowed
22:09 MTDiscord <Warr1024> maybe checkPrivilege just needs to check proto version if the priv name is basic_debug
22:10 MTDiscord <Warr1024> bool checkPrivilege(const std::string &priv) const { return (m_privileges.count(priv) != 0); }
22:10 MTDiscord <Warr1024> in client.h
22:11 MTDiscord <Warr1024> seems like it could just be something like return ((priv == "basic_debug") && (m_proto_ver < 40)) || (m_privileges.count(priv) != 0);
22:11 sfan5 you can call client->getProtoVersion() from there
22:11 MTDiscord <Warr1024> oh, if there's a getter then that works too
22:12 MTDiscord <Warr1024> wrapping it in a nice allowBasicDebug() or something would be nice instead of copypasta all over, I gues.
22:13 sfan5 that's the only place you need to do it
22:13 MTDiscord <Warr1024> So basically every if (client->checkPrivilege("basic_debug")) would become if (client->getProtoVersion() >= 40 && !client->checkPrivilege("basic_debug"))
22:13 MTDiscord <Warr1024> or are you saying to do it inside the checkPrivilege call?
22:13 sfan5 I think that's better yes
22:14 sfan5 even better: you could insert the privilege into the list when the packet is received
22:14 MTDiscord <Warr1024> Hmm, I thought about doing that
22:14 MTDiscord <Warr1024> I'll take a peek at how priv receiving happens
22:15 sfan5 src/network/clientpackethandler.cpp
22:15 sfan5 ctrl+f privilege or something
22:16 MTDiscord <Warr1024> Yeah, adding 2 lines of code to clientpackethandler looks like it'll be easey
22:16 sfan5 don't forget the explanatory comment ;)
22:17 MTDiscord <Warr1024> Heh, I was gonna turn the code over to Wuzzy once I did some basic verification of it and let him style it up :-)
22:18 MTDiscord <Warr1024> https://paste.ubuntu.com/p/bF54KhTXZT/
22:19 MTDiscord <Warr1024> I'm making the assumption there that either a 5.4 server will never send a basic_debug priv, or that duplication in that list is either already handled (like maybe it's a set or something under the hood) or at least that it won't cause problems.
22:20 MTDiscord <Warr1024> If that's wrong then it shouldn't be hard to fix though, just my machine is already stuttering from the build so I'm not gonna go and try to perfect it just yet.
22:21 sfan5 it's an std::unordered_set<std::string>
22:22 MTDiscord <Warr1024> nice
22:22 MTDiscord <Warr1024> I like when people use set types to store set-typed data instead of arrays or naive lists :-)
22:30 MTDiscord <Warr1024> Wuzzy: https://paste.ubuntu.com/p/2PrvfgY7hz/ I just tested this and it seemed to work: 5.5-dev SP, coords did not show, connected to a 5.4 server, coords showed, all as expected based on my understanding.
22:35 MTDiscord <Warr1024> I have some concerns that that protocol version bump thing is going to result in some politicking as people who were not part of the conversation want to know what this has to do with protocols.
22:35 MTDiscord <Warr1024> Protocols are not just about serialization formats; they're about interpretation and meaning too.
22:36 sfan5 I have never seen anyone question protocol bumps
22:37 MTDiscord <Warr1024> well, I think enough of us agreed that we were okay with this general idea that the only question at this point should be the exact code review: formatting, comments, squash, stuff like that.
22:42 MTDiscord <Warr1024> If nobody questions protocol bumps then I'd be happy to see them used more :-)
22:45 Wuzzy OK thanks, added to the PR. Please have fun with the new PR!
23:04 Alias2 joined #minetest-dev
23:11 calcul0n joined #minetest-dev
23:17 rubenwardy any objections to ignoring `/irrlicht` in the repo
23:17 rubenwardy actually, I suppose it should be `/lib/irrlicht` maybe
23:18 rubenwardy also, reviewed and approved #9315
23:18 ShadowBot https://github.com/minetest/minetest/issues/9315 -- Require 'basic_debug' priv to view gameplay-relevant debug info (2nd try), require 'debug' priv to view wireframe by Wuzzy2
23:43 Wuzzy after all those years ... finally approval
23:58 rubenwardy Wuzzy can finally quit

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