Time |
Nick |
Message |
00:10 |
|
behalebabo joined #minetest-dev |
00:27 |
|
Extex joined #minetest-dev |
00:28 |
|
Extex joined #minetest-dev |
00:37 |
|
rubenwardy joined #minetest-dev |
00:40 |
|
Extex joined #minetest-dev |
02:46 |
|
v-rob joined #minetest-dev |
03:09 |
MTDiscord |
<Benrob0329> What does Minetest use for unittests? (do we even have unit tests?) |
03:40 |
rubenwardy |
Busted for Lua tests |
03:40 |
rubenwardy |
Own framework for CPP tests |
03:59 |
MTDiscord |
<Benrob0329> thanks |
04:01 |
MTDiscord |
<Benrob0329> would be nice if this was mentioned in README or CONTRIBUTING files |
05:15 |
MTDiscord |
<Warr1024> I guess you need a second for 9315 ... am I qualified for that? I'm not making the assumption here that "I see nothing wrong with your code" means I would... |
05:16 |
MTDiscord |
<Warr1024> I can at least test the 5.5 client against a 5.4 server though... |
05:21 |
MTDiscord |
<Warr1024> Seems to work for me, and I neither see nor smell any problem with the code. |
05:46 |
|
specing_ joined #minetest-dev |
06:33 |
|
appguru joined #minetest-dev |
06:49 |
celeron55 |
<+rubenwardy> any objections to ignoring `/irrlicht` in the repo <+rubenwardy> actually, I suppose it should be `/lib/irrlicht` maybe |
06:50 |
celeron55 |
i think i requested this already so obviously no objection |
07:21 |
|
tekakutli joined #minetest-dev |
07:28 |
sfan5 |
there's already a PR that adds the "automatically use irrlichtmt if we see it" and it uses /lib/irrlichtmt for that |
07:51 |
celeron55 |
ah, and the related irrlicht PR was merged already |
07:52 |
celeron55 |
so this one https://github.com/minetest/minetest/pull/11276 |
07:54 |
* celeron55 |
tests |
08:01 |
celeron55 |
well, works for me, i guess there's that irrlicht sub library thing still being figured out |
09:32 |
Calinou |
hmm, I just noticed now that there's auto-walk functionality in the client |
09:32 |
Calinou |
it's nice, but it doesn't make you float in liquids, so you end up drowning if you use it to travel through a lake |
09:32 |
celeron55 |
it's a debug feature not intended for gameplay |
09:33 |
celeron55 |
...having said that, i guess it also could require the debug privilege |
09:33 |
celeron55 |
that is being added |
09:33 |
Calinou |
I'm aware this used to exist as `continuous_forward` in minetest.conf, but it's exposed in the key settings now |
09:33 |
Calinou |
so I assume it's an user-facing feature |
09:33 |
Calinou |
I think nrzkt added it because WoW also has auto-walk |
09:33 |
celeron55 |
wait did someone add a key binding to it |
09:33 |
Calinou |
yeah, it's in 5.5.0-dev at least |
09:34 |
Calinou |
it doesn't have a default shortcut, you have to add one |
09:34 |
celeron55 |
ehm... well i guess it's there to stay then |
09:34 |
Calinou |
to be fair, it's useful on servers that don't have fast mode and you have to travel through a long straight road… so I'd be for keeping it |
09:34 |
celeron55 |
i think it shouldn't do anything but walk though |
09:35 |
Calinou |
with automatic jump, you can also travel on natural terrain as long as it's not too steep |
09:39 |
specing |
Calinou: those servers also tend to dislike automated clients |
09:39 |
specing |
you are supposed to enjoy that 1000 node walk! |
09:39 |
specing |
(and the one back, and the next one there, and so on) |
09:40 |
celeron55 |
it's an interesting problem in real time games actually |
09:40 |
celeron55 |
you'd like to have the gameplay effects of a long walk that you can have in a single player game with adjustable time speed |
09:40 |
celeron55 |
but you can't adjust the speed of time |
09:41 |
celeron55 |
how can you then make a long distance have any kind of meaning |
09:41 |
celeron55 |
probably by making it consume some kind of resource instaed of consuming time |
09:43 |
celeron55 |
you see that all the time in online games with some kind of travelling, you start by walking but then sometime later when the developers expect you to be bored of it they enable some kind of fast travel which usually consumes something |
09:44 |
celeron55 |
while in a single player game they could have just made fast travel which fast forwards the calendar |
09:49 |
|
queria joined #minetest-dev |
09:56 |
|
CeeGee joined #minetest-dev |
09:57 |
VanessaE |
so, a bit of a discussion with someone just now, he doesn't like MT, thinks "the physics are fucked up".. after a bit of distilling it down :P seems all he's complaining about is that there's no real accel/decel for going from standstill to regular walk speed or the inverse, and that there should be a "cooldown delay" for multiple jumps. thoughts? |
09:58 |
celeron55 |
my opinion is that the MC character is clumsy and weak |
09:59 |
celeron55 |
anyway, it should be the (sub)game's decision, not the engine's |
09:59 |
VanessaE |
agreed |
10:00 |
VanessaE |
since I never mess with player physics, I don't know.. do those capabilities already exist? |
10:00 |
Calinou |
you can tweak friction/acceleration already |
10:00 |
VanessaE |
that's what I thought |
10:00 |
Calinou |
but the way Minetest does friction/acceleration is a bit weird compared to other games |
10:00 |
Calinou |
it's more like linear instead of quadratic or something |
10:00 |
VanessaE |
so his real complaint is that the defaults need adjusted :P |
10:01 |
Calinou |
also, modern games *love* their near-instant friction/acceleration |
10:01 |
Calinou |
compare Quake to something like Overwatch |
10:01 |
VanessaE |
heh, tell HIM that |
10:01 |
VanessaE |
it was like pulling teeth just to get him to describe what "fucked up physics" actually means :P |
10:02 |
VanessaE |
he was looking at the motion/physics as a ....a sort of "black box" |
10:02 |
Calinou |
current Minetest physics are mostly fine to me, the main thing I lament is the slow walking speed |
10:02 |
VanessaE |
to him, those "other" games (again, unspecified) have much better motion controls |
10:02 |
VanessaE |
same here |
10:03 |
Calinou |
one of my ideas was to make continuous walking in one direction progressively faster, effectively acting as a kind of automatic sprinting |
10:03 |
Calinou |
e.g. if you walk straight for 3 seconds, your speed increases to 5 nodes/s |
10:03 |
VanessaE |
while I'm on the ground I pretty much always run if it's more than a few meters |
10:03 |
VanessaE |
(while flying, I vary a lot between fast and slow due because of my own slow reaction times) |
10:04 |
Calinou |
also, you know what's fun? Swimming physics in Minecraft feel a lot like Minetest's now, default sinking is slower and you can manually sink by sneaking while in water |
10:04 |
Calinou |
so they pretty much copied Minetest on this :P |
10:04 |
VanessaE |
well that's kind of a half sprint. run speed is like, 15 m/s isn't it? |
10:04 |
VanessaE |
(I don't remember offhand) |
10:04 |
Calinou |
it's 20 m/s |
10:04 |
VanessaE |
close enough. |
10:04 |
VanessaE |
good idea though |
10:05 |
|
tekakutli joined #minetest-dev |
10:05 |
Calinou |
fast mode is kind of overpowered for survival mode, so we need something more reasonable that works automatically |
10:05 |
VanessaE |
I wonder how easy it would be to make a mod out of that |
10:05 |
Calinou |
sprintjumping in Minecraft is about 5.6 nodes/s, and sprinting in Minecraft with a Speed II potion is around 6 nodes/s |
10:05 |
Calinou |
so I guess automatic sprinting could be between 5 nodes/s and 5.5 nodes/s |
10:06 |
VanessaE |
for comparison, I have "Nitro" stations on a couple of my servers that boosts your speed to 3x normal, so 60/ms, for a couple of minutes once you've "fueled up" |
10:06 |
Calinou |
making a server-side mod with this should be fairly easy, but it involves global step for every player |
10:06 |
celeron55 |
i think currently it's perfectly doable for a mod to increase speed when walking for some time |
10:06 |
celeron55 |
maybe a bit laggy |
10:06 |
celeron55 |
adding some more engine support would make sense |
10:06 |
Calinou |
detect the player's forward input and see if it was held for more than X seconds, then increase speed until the forward key is let go |
10:07 |
VanessaE |
yeah, it's the globalstep part that I figured would be the hang-up |
10:07 |
VanessaE |
Calinou: problem there is there isn't any kind of "on key press"/"on key release" events |
10:07 |
VanessaE |
if we had those, this would be trivia; |
10:07 |
VanessaE |
trivial* |
10:08 |
Calinou |
yeah, so you need polling :( |
10:08 |
Calinou |
also, another way to make walking speed more controllable would be to give aome bonus speed when holding nothing in your hand. This could work in tandem to automatic sprinting, or as an alternative |
10:08 |
Calinou |
some* |
10:08 |
Calinou |
say, walking at 4.5 nodes/s instead of 4 nodes/s |
10:08 |
VanessaE |
technic did something like that |
10:08 |
VanessaE |
or the armor mod rather |
10:08 |
Calinou |
like holding a knife in Counter-Strike :P |
10:08 |
VanessaE |
if you were wearing a hazmat suit, your speed was reduced |
10:09 |
VanessaE |
(jump height too I think) |
10:09 |
celeron55 |
i think we could have a "general good ideas for games with example code" wiki or forum page or something |
10:09 |
celeron55 |
so that not everyone has to invent everything that makes sense from scratch |
10:09 |
VanessaE |
celeron55: we could, but really I just wanted to pass along his arguments in a more.... constructive form :) |
10:09 |
celeron55 |
these are things that can't necessarily be added by default to the engine, or it isn't the right place |
10:10 |
Calinou |
we can make a mod for this kind of stuff, but we have to figure out a way to make it easy on server resources |
10:10 |
VanessaE |
(because honestly, I'm happy with the way movement is handled now, though I might find uses for on-key/on-release callbacks if they came into being some time) |
10:10 |
celeron55 |
checking they keys of players in globalstep doesn't take enough resources to matter |
10:10 |
VanessaE |
you sure? |
10:10 |
celeron55 |
110% sure |
10:11 |
celeron55 |
but it might be laggy due to other code the server is running |
10:11 |
VanessaE |
well if you're *110%* sure then I'll accept that :D |
10:11 |
VanessaE |
yeah, that's the prob |
10:11 |
sfan5 |
*cough* CSM |
10:11 |
celeron55 |
it can't be helped even if it's C++ |
10:11 |
celeron55 |
sfan5 is on point |
10:11 |
VanessaE |
the code in the globalstep might be super fast, but general game lag would be a prob |
10:11 |
celeron55 |
altough, i'd like to not call it CSM but just a physics modifier script |
10:11 |
VanessaE |
well, a CSM might be a place for this, |
10:12 |
VanessaE |
but it would have to be SSCSM for sure |
10:12 |
sfan5 |
sure that's what I meant |
10:12 |
celeron55 |
if someone isn't taking the ball on this, i will, some day |
10:12 |
VanessaE |
I mean, altering physics client-side will definitely break some games, like Nodecore |
10:12 |
celeron55 |
but i read through that last implementation i made and it was over 1000 lines |
10:12 |
celeron55 |
a bit scary for such a simple feature |
10:13 |
VanessaE |
eep |
10:13 |
celeron55 |
well i guess it's not that simple |
10:13 |
VanessaE |
1000 LOC to implement SSCSM> |
10:13 |
celeron55 |
i'm pretty sure it will be revolutionary |
10:13 |
celeron55 |
and think i'm stupid for not adding it then |
10:13 |
celeron55 |
back then |
10:13 |
VanessaE |
that's a little on the... verbose side I guess |
10:14 |
VanessaE |
but maybe not stupid big |
10:14 |
VanessaE |
I mean, how much of that was whitespace, comments, and shit like proper code style? |
10:14 |
celeron55 |
it's not generic SSCSM, i'm not sure if i want generic SSCSM |
10:14 |
Calinou |
I can try my hand at writing such a mod if there's interest, it's been a while since I wrote a Minetest mod |
10:14 |
Calinou |
might not be ideal, but can be a decent stopgap for smaller servers |
10:14 |
Calinou |
(or singleplayer) |
10:14 |
sfan5 |
what would "generic SSCSM" entail? |
10:15 |
celeron55 |
the server sending code to run within the current client-side lua environment |
10:15 |
VanessaE |
as opposed to what? |
10:15 |
specing |
> celeron55 | i'm pretty sure it will be revolutionary |
10:15 |
specing |
yes |
10:15 |
celeron55 |
i think it makes sense to inject just a little bit of lua into the client to specific places to run synchronously and replace some hardcoded calculations |
10:15 |
celeron55 |
in very tight sandboxes |
10:15 |
VanessaE |
mmmmm |
10:15 |
VanessaE |
no... |
10:16 |
specing |
Also, I'd like to see the "SSCSMs" being downloaded from a central contentDB and not individual servers |
10:16 |
celeron55 |
none of this "make everything possible and make the client and server fight with each other" |
10:16 |
VanessaE |
that'll put things into that real of "oh damn it, now I have to expose this, this, and THIS to Lua, this is nasty" |
10:16 |
VanessaE |
realm* |
10:16 |
VanessaE |
(did I get your general speech pattern right this time? l;) ) |
10:16 |
VanessaE |
;) |
10:17 |
VanessaE |
I mean on the one hand, a CSM shouldn't be able to send keystrokes or tell the server "hey I'm zapping over to this spot 200m away" |
10:17 |
celeron55 |
again, read this if you want to know what i want to make https://github.com/celeron55/minetest/compare/297546af3d3b5b3a07a61ade041ad7c26e9a531d..1f4ca9df4219768d7678ccccd5e6ceba720e2930 |
10:18 |
VanessaE |
but on the other hand if you try to limit how much the code is allowed to do, you'll end up forever adding more and more to the client's Lua API |
10:18 |
celeron55 |
you end up forever adding more and more anyway, that's not something you can avoid |
10:18 |
VanessaE |
mmm, yeah I suppose |
10:18 |
celeron55 |
unless you just decide not to |
10:18 |
VanessaE |
but there's a limit to how specific an API call should be |
10:18 |
celeron55 |
just have some discipline |
10:20 |
VanessaE |
I mean take the aforementioned key-down/key-up events -- it would be enough to just have the client send a packet to the server any time a key is pressed identifying the key, regardless of what that key is assigned as (along with exchanging a map of assignments at login), rather than say sending "sneak pressed", "sneak released", "run pressed", etc. etc |
10:20 |
celeron55 |
why i want this is mostly a security thing, to be honest |
10:21 |
celeron55 |
VanessaE: you still can't avoid lag, the server is inhrently laggy internally |
10:21 |
VanessaE |
nono |
10:21 |
VanessaE |
nevermind that |
10:21 |
specing |
CSMs should be able to intercept all but one key |
10:21 |
VanessaE |
nonononono |
10:21 |
specing |
I said CSMs, not SSCSMs :P |
10:21 |
VanessaE |
I'm just using it as an example, because it was the first thing to come to mind |
10:22 |
VanessaE |
I fear that if "generic SSCSM" is disallowed, then API calls will tend more toward the latter, overly-specific stuff |
10:22 |
VanessaE |
plus, |
10:22 |
celeron55 |
there's benefit to limiting the keymapping to a reasonable size, it allows other control methods than a keyboard to be used |
10:23 |
VanessaE |
it's SSCSM, so shouldn't the server already be ready to deal with the results of the code it sends to the client? :) |
10:23 |
celeron55 |
of course it would be a nice trick for server owners to ban all mobile clients by asking them to press a key on the keyboard |
10:23 |
VanessaE |
haha |
10:24 |
specing |
on-screen keyboards exist |
10:24 |
celeron55 |
you can't usually open one without a text field to input into |
10:24 |
VanessaE |
I was thinking more like assigning keys to do neat shit in-game that the client can't do now, but triggering server-side code rather than relying on the client to do something with it |
10:25 |
celeron55 |
anyway you're both getting into something completely different than what i wanted to discuss |
10:25 |
VanessaE |
like, I dunno, pressing say "B" to pop up the contents of your most recently used bag or something |
10:25 |
celeron55 |
so i'll now go mow the grass that i wanted to do yesterday -> |
10:25 |
VanessaE |
yeah, sorry about that. off on a tangent again |
10:26 |
celeron55 |
that sounds like everyone will just use a CSM that sends all keys to the server and you'd be better off just hardcoding sending all the keys into the client |
10:26 |
VanessaE |
btw the lawn can wait :) |
10:27 |
VanessaE |
I didn't even notice that the previous convo was kinda on this subject heh |
10:27 |
|
entuland joined #minetest-dev |
10:28 |
VanessaE |
this was not intended to encroach on that. it had been 13 minutes, so I thought y'all were idle |
10:28 |
VanessaE |
(that much I *did* check, to avoid interrupting) |
10:30 |
specing |
> that sounds like everyone will just use a CSM that sends all keys to the server |
10:30 |
specing |
nah, latency is a problem |
10:31 |
VanessaE |
well, latency would still be a problem even without that, after all a command to start walking still takes time to reach the server so that it can relay the player's movements to other clients. |
10:32 |
VanessaE |
but in this case I was talking about using this hypothetical feature for things where lag wouldn't really be any more of a problem than, say, opening the inventory |
10:32 |
VanessaE |
than say, lag while opening* |
10:33 |
celeron55 |
you can't even imagine the things i want to make possible 8) |
10:34 |
specing |
VanessaE: client-side prediction |
10:34 |
specing |
client can start walking before others take note of it |
10:35 |
VanessaE |
still all of this boils down to: it's possible to fake what that guy wants right now by polling during globalstep and altering player physics in a semi-smart way |
10:36 |
celeron55 |
that's not faking |
10:36 |
celeron55 |
it's an implementation |
10:36 |
specing |
Hmm |
10:36 |
celeron55 |
i just faked firefox onto my computer in order to read the news |
10:36 |
celeron55 |
wait, that's called installing |
10:36 |
specing |
the whole walking logic could be moved to a CSM that traps w,a,s,d,space,sneak |
10:37 |
celeron55 |
now i'll go fake the lawn |
10:37 |
VanessaE |
well, it's faking in that the client wouldn't be sending discrete start/stop actions or controlling the physics on its own, the server would be doing it. but your point stands. |
10:37 |
specing |
then you could implement a chessboard server, where players take the role of some figurines and can only move by pointing and clicking at a valid tile |
10:37 |
specing |
the server would just not load the movement CSM |
10:37 |
VanessaE |
specing: don't forget the aux key :) ) |
10:37 |
specing |
VanessaE:? |
10:38 |
specing |
I don't know of any aux key |
10:38 |
VanessaE |
"E" on mine, its use varies |
10:38 |
celeron55 |
i'm still going to link this one more time https://github.com/celeron55/minetest/compare/297546af3d3b5b3a07a61ade041ad7c26e9a531d..1f4ca9df4219768d7678ccccd5e6ceba720e2930 |
10:38 |
VanessaE |
but I use it for fast running, and for descend while flying |
10:38 |
celeron55 |
maybe someone some day will tell me one comment about it |
10:39 |
specing |
VanessaE: ah,yes |
10:39 |
VanessaE |
celeron55: I would, but I'm just not qualified :P |
10:39 |
sfan5 |
- |
10:40 |
sfan5 |
oops |
10:40 |
sfan5 |
celeron55: what is your opinion on client scripts stalling the client? (as in: is it okay if this happens) this could be avoided by moving them to a separate thread and doing everything over IPC but that'd be a lot of extra work |
10:43 |
VanessaE |
why not have a timeout, which if exceeded kills the offending function and prevents it from running again (until the next restart)? |
10:43 |
VanessaE |
like say 10s (during which time the client would display some message) |
10:43 |
sfan5 |
how do you safely recover your main thread from being stuck inside a function? |
10:44 |
sfan5 |
you pretty much need the IPC solution if you'd want to do this |
10:44 |
VanessaE |
or a watchdog thread? |
10:44 |
VanessaE |
but I see your point |
10:46 |
specing |
You know, CSMs seem like a "fresh start" where you force people to get used to multithreaded lua |
10:46 |
sfan5 |
you cannot multithread lua |
10:46 |
specing |
you can force* |
10:46 |
specing |
Why not? |
10:46 |
sfan5 |
isolated environments in separate threads is not multithreading |
10:47 |
sfan5 |
not according to my mental definition at least |
10:47 |
VanessaE |
I'm just thinking that for some mods, it might be desirable to offload some work to the client, though only during times when the player wouldn't be expecting instant responses. Maybe you have an inventory button that if clicked, launches a feature that would lag the server....unless it triggers that code to run on the client. then only that one client lags. |
10:47 |
specing |
sfan5: it is when those isolated environments are concurently accessing the same API |
10:49 |
specing |
sfan5: the point here is to get people used to multithreading |
10:49 |
specing |
so that at some later point, it'll be easier to multithread server lua |
10:50 |
sfan5 |
ok so here's the thing with multithreaded server lua: if you want all those environment to use the exact same APIs you will end up with a giant lock that covers the server |
10:50 |
sfan5 |
then you have multiple threads only one of which can only ever do real work |
10:51 |
specing |
Why would you need to lock say the whole inventory manipulation API just to access one list of one node? That's crazy |
10:51 |
specing |
you just lock that node and that's it |
10:53 |
sfan5 |
map access is probably one of the easier problems |
10:55 |
VanessaE |
it's not like you'd have to worry about lua threads stomping on each others' states either, if you sandbox them |
10:56 |
celeron55 |
if every node has a lock, that slows down the entire works |
10:56 |
VanessaE |
even globals would be local within the sandbox, so you'd have to explicitly request access to a truly meta-global environment for ... well I guess you could call it a primitive IPC |
10:56 |
celeron55 |
even if every mapblock has a lock |
10:56 |
celeron55 |
any locks whatsoever actually |
10:57 |
celeron55 |
if the threaded mods only communicated through ipc, then of course it's an entire different thing and would owrk |
10:57 |
celeron55 |
work* |
10:57 |
celeron55 |
the apis would be hideous though and nobody would want to use it |
10:57 |
celeron55 |
and nobody would want to make it |
10:57 |
pgimeno |
if two Lua threads have to share variables, every access to every variable needs a global lock. That's how emerge threads are working now, and it's awful. |
10:58 |
celeron55 |
if the api was just a communication queue to a part of the mod in the non-threaded lua environment, i.e. worker threads, it would be doable |
10:58 |
sfan5 |
I do have a WIP PR for that |
10:58 |
celeron55 |
so just tell me if you want worker threads or not, if the answer is yes i say ok that'll happen sometime, if the answer is no i'll say that will never happen, don't even propose it |
10:58 |
sfan5 |
though there's no IPC yet |
10:58 |
|
calcul0n joined #minetest-dev |
10:59 |
sfan5 |
(apart from pushing jobs to a worker) |
10:59 |
sfan5 |
(and getting a result back) |
10:59 |
VanessaE |
let's be clear, |
10:59 |
celeron55 |
sfan5: that's actually already enough |
10:59 |
VanessaE |
"worker threads" would be chunks of lua running async from the "normal" server process? |
10:59 |
sfan5 |
yes |
10:59 |
celeron55 |
yes, with no synchronous interfaces available whatsoever |
11:00 |
celeron55 |
i.e. pretty much no interfaces |
11:00 |
celeron55 |
just data in, data out |
11:00 |
sfan5 |
it *is* enough but you do want to be able to push a vmanip into there without serializing to and endless string first |
11:00 |
VanessaE |
if biome_lib could benefit from such a thing, then by G*d yes, I want. :) |
11:00 |
sfan5 |
push = copy, not by reference |
11:01 |
sfan5 |
#11131, it's probably not of any use unless you have computationally intensive work that doesn't touch the map or can work on a copy |
11:01 |
ShadowBot |
https://github.com/minetest/minetest/issues/11131 -- Async environment for mods to do concurrent tasks by sfan5 |
11:01 |
specing |
sending stuff to a thread will often outweight the benefits, esp with vmanip |
11:01 |
celeron55 |
what's the main workload of biome_lib? |
11:01 |
specing |
just give us proper locking |
11:01 |
VanessaE |
it would mean I could finally ditch the thing I do now which is *almost* multi-thread (if you use the old definition from back in the day) |
11:01 |
celeron55 |
i started minetest by trying to allow locking parts of the map, it wasn't possible and made everything slow |
11:01 |
VanessaE |
celeron55: writing nodes to the map |
11:01 |
celeron55 |
it won't happen, it's impossible |
11:02 |
VanessaE |
if I could launch an async thread, I could run an entire block's worth of actions in one go, instead of splitting them up across many globalsteps. |
11:02 |
specing |
celeron55: locking blocks? |
11:02 |
celeron55 |
writing node to the map will always stop almost everything because almost everything depends on the map content |
11:02 |
VanessaE |
it would undoubtedly be faster than what I'm doing nowe |
11:02 |
VanessaE |
-e |
11:02 |
specing |
celeron55: or nodes or random shapes? |
11:03 |
celeron55 |
specing: i recall it was mapblocks at the time |
11:03 |
specing |
take technic reactor check ABM for example.It would lock a maximum of 8 blocks and run the check, then unlock (technically it could work even without locking, by just reading data that could change underneath) |
11:04 |
VanessaE |
celeron55: well in this instance, I might have the async thread write to its own buffer, and then relay that to the map in the main thread via vmanip or something |
11:04 |
specing |
but at the same time, all other threads can run on the other 1000 blocsk |
11:04 |
specing |
including more reactor check abms |
11:04 |
VanessaE |
which would be more or less what the engine does with decorations |
11:04 |
sfan5 |
does the ABM do any write operations? |
11:04 |
celeron55 |
VanessaE: so if vmanip was transferrable to the worker thread and out, that would enable you to do it? |
11:04 |
specing |
sfan5: none, but it can trigger meltdown (after warning siren) |
11:04 |
celeron55 |
i think vmanip is probably the key to these |
11:04 |
specing |
meltdown swaps the reactor node afaik |
11:05 |
sfan5 |
it can safely operate on a copy then, good |
11:05 |
sfan5 |
is it that slow? |
11:05 |
celeron55 |
copying them, that is |
11:05 |
specing |
sfan5: copying takes time |
11:05 |
VanessaE |
celeron55: it might -- I'm kinda guessing here, since like most MT folks, I have no real experience with coding for a multi-thread environment (though I did try to make sure biome_lib would be thread-safe if that day ever came) |
11:05 |
celeron55 |
copying is just memcpy, it's very fast |
11:05 |
celeron55 |
faster than locking |
11:05 |
sfan5 |
and locking halt everything, your point? |
11:05 |
celeron55 |
that's why it's used |
11:05 |
sfan5 |
+s |
11:05 |
specing |
sfan5: it just counts node names, that's it |
11:05 |
specing |
sfan5: no, locking halts everything only in the locked blocks |
11:05 |
specing |
all the other stuff can still run elsewhere |
11:06 |
sfan5 |
I asked about slow because if the ABM is fast then you don't need to optimize it |
11:07 |
celeron55 |
what does the reactor check actually do, and in how big area? how slow is it now? |
11:07 |
VanessaE |
celeron55: but sure, provided I can come to understand how vm's work, if the engine passed me a vm for a mapblock or a chunk or whatever, and I could DO ALL THE THINGS on it while the engine goes on to handle normal stuff, and just hand it back to the engine whenever I feel like it, that may just work. again, 100% guessing, 0% experience here. |
11:07 |
specing |
it runs a dozen ifs in a loop over 7^3 nodes |
11:08 |
celeron55 |
copying a vmanip is ideal for operating on 7^3 nodes |
11:08 |
specing |
It's probably not much, but if you have hundreds of reactors active on a server.... it adds up |
11:08 |
celeron55 |
it's literally made for it |
11:08 |
celeron55 |
imagine that |
11:08 |
celeron55 |
there's already a thing designed for what you want to do and it can be copied into a thread |
11:08 |
celeron55 |
and you don't want it |
11:09 |
sfan5 |
https://github.com/minetest-mods/technic/blob/1c219487d3f4dd03c01ff9aa1f298c7c18c7e189/technic/machines/HV/nuclear_reactor.lua#L141-L210 |
11:09 |
celeron55 |
...what, it already uses a vmanip also |
11:09 |
specing |
it does |
11:10 |
celeron55 |
we don't need to even discuss about this, what sfan5 is doing will work almost directly for it |
11:10 |
specing |
I didn't say that I don't want it. What I don't want is minetest being 100% cpu on one core and others being idle |
11:10 |
sfan5 |
question is will it even matter? that code looks like it should be fast |
11:11 |
sfan5 |
though it can't hurt to offload everything that can be offloaded |
11:11 |
celeron55 |
if there are hundreds of those and they are forceloaded, then i guess it adds up |
11:12 |
VanessaE |
of course where technic is concerned, the biggest CPU suck can't really be offloaded, as it involves reading from the map in an ABM |
11:12 |
celeron55 |
especially as the abm is set up so that every one runs at the same step |
11:12 |
celeron55 |
no spreading of work at all |
11:12 |
VanessaE |
(the switching station and battery loops) |
11:12 |
celeron55 |
it would be a good idea to have a higher chance value and lower interval value |
11:13 |
sfan5 |
I guess I do need to finish my PR after all |
11:13 |
celeron55 |
set it to interval=1 and chance=10 and you'll probably have no lag at all, you won't even know the code is there |
11:13 |
celeron55 |
and it'll have some fun randomness also |
11:14 |
celeron55 |
abms are highly optimized for random effects, having a very short interval and low 1/chance value makes them happyu |
11:14 |
VanessaE |
that would almost certainly work for the nuke integrity check |
11:14 |
celeron55 |
-u |
11:46 |
|
appguru joined #minetest-dev |
12:28 |
rubenwardy |
merging #11374 as trivial doc fix in 10 |
12:28 |
ShadowBot |
https://github.com/minetest/minetest/issues/11374 -- Document hypertext escaping by Wuzzy2 |
12:31 |
|
tekakutli joined #minetest-dev |
12:36 |
|
hecks joined #minetest-dev |
12:41 |
|
queria^clone joined #minetest-dev |
13:10 |
|
queria joined #minetest-dev |
13:10 |
|
queria joined #minetest-dev |
13:59 |
|
olliy joined #minetest-dev |
14:11 |
nrz |
celeron55, strange it's a debug feature, it's my favourite feature in world of warcraft while traveling on long distances :D |
14:11 |
nrz |
oops i have few hours late... i talk about auto walk :D |
14:14 |
celeron55 |
i think a game design where auto walk is needed is automatically questionable |
14:17 |
celeron55 |
a bit like C++ code with gotos... like ok maybe if you insist and it feels nice, but very oldskool |
14:20 |
|
Fixer joined #minetest-dev |
15:26 |
MTDiscord |
<Benrob0329> Some thoughts/notes: Nodecore has gradual sprinting. fast_mode has a settable speed. There are Lua modules for multithreading, these may just spawn up multiple instances though. |
15:38 |
|
tekakutli joined #minetest-dev |
15:39 |
|
tekakutli joined #minetest-dev |
15:50 |
MTDiscord |
<Warr1024> NodeCore automatically handles player speed and doesn't require a "sprint" keybinding ... but its base "walking" speed is already 25% faster than MTG's anyway... |
15:51 |
MTDiscord |
<Warr1024> Is "auto-walk" like where you run by default but automatically slow down when you near boundary conditions or points of interest? |
15:51 |
celeron55 |
no, it's like putting a stone on your up key on the keyboard |
15:53 |
MTDiscord |
<Warr1024> oh, you mean like the "auto-forward" toggle that MT has? |
15:53 |
MTDiscord |
<Warr1024> I use that feature all the time. It's a great way to fall into a ravine while you're trying to chat and travel at the same time :-D |
16:05 |
|
olliy joined #minetest-dev |
16:33 |
nrz |
celeron55, whats the point to press up key for 1 hour to go straight forward ? instead just run and go make a coffee :D |
16:43 |
celeron55 |
what's the point to make a game where you have to press up key for 1 hour? |
16:43 |
celeron55 |
or, walk for 1 hour |
16:44 |
celeron55 |
it, of course, really emphasizes the distance, but on the other hand 1 hour of walking isn't that much anyway |
16:45 |
celeron55 |
it's like 5 kilometers, barely enough for a trip to another town |
16:45 |
celeron55 |
if you compare to real life |
16:47 |
nrz |
celeron55 map is pretty huge, imagine you build at 1000 1000 1000 and you need to go to friend house at -24000 1000 1000 :D |
16:47 |
nrz |
it's not fun to walk like IRL in a game :D |
16:48 |
celeron55 |
well i would argue it's not fun to walk IRL either |
16:48 |
celeron55 |
but what i'm saying is travelling should be fast in time but cost something else |
16:48 |
celeron55 |
in most games |
17:01 |
MTDiscord |
<Jonathon> Auto forward sounds like a good thing if your making run(flash game) in minetest |
17:05 |
|
Wuzzy joined #minetest-dev |
17:27 |
nrz |
or just for servers with very big corridors :D |
17:31 |
Krock |
sfan5: negative setting layer values might not even be needed. `*m_hierarchy` defines whether it's bound or not |
17:32 |
Krock |
but then again, it makes no difference |
17:36 |
sfan5 |
I think so too |
17:37 |
nrz |
i think you always have a setting layer, then -1 has no sense :) |
17:37 |
nrz |
why create empty settings ? |
17:38 |
Krock |
I think the map_meta.txt uses its own Settings object |
17:38 |
Krock |
err. world-mt |
17:38 |
nrz |
and it's not possible to setup the Settings on world.mt with virtually one layer ? at least we are coherent everywhere |
17:39 |
Krock |
stuff that happens to be unrelated to the normal settings, such as mod.conf, override.txt (perhaps?), world.mt |
17:39 |
Krock |
layers are only needed for fallbacks |
17:39 |
Krock |
if there's no need for a fallback, layers are useless anyway |
17:39 |
nrz |
then i think i didn't understood the purpose of layers |
17:39 |
nrz |
it's not to haveff settinga.sub_b.sub_c setting ? |
17:39 |
nrz |
have* |
17:40 |
Krock |
nope. they define the order of fallback in case a setting was not found |
17:40 |
nrz |
okay then i think we have a naming issue :D |
17:40 |
nrz |
it's why i asked for a zero layer :p |
17:43 |
Krock |
will push https://krock-works.uk.to/u/patches/0001-Server-Ignore-whitespace-only-chat-messages.patch to supersede #11187 in 15 minutes. followed by #11355 |
17:43 |
ShadowBot |
https://github.com/minetest/minetest/issues/11187 -- Disallow empty messages by DiamondPlane |
17:43 |
ShadowBot |
https://github.com/minetest/minetest/issues/11355 -- Buildbot: Use posix on Win64 builds while running from Ubuntu based distributions by juozaspo |
17:44 |
Krock |
unless there are objections for former |
17:44 |
rubenwardy |
I haven't been tracking that setting hierarchy PR, but I hope it doesn't make world specific settings harder |
17:44 |
Krock |
no, it's unaffected |
17:44 |
sfan5 |
if anything it makes it easier |
17:45 |
nrz |
then you have my approval |
17:45 |
Krock |
well it depends on whether the mapgen needs fallback to world-specific settings, but I doubt that. |
17:45 |
sfan5 |
because right now we have settings layer called SL_MAP which is *not* a world-specific minetest.conf like you might guess |
17:45 |
Krock |
but it can be abused as such |
17:46 |
Krock |
since the API functions are there and are accessible to all mods |
17:50 |
Krock |
however now this could be restricted by checking whether the setting is contained in m_defaults, and only allow write for those |
17:58 |
Krock |
pushing/merging |
18:41 |
|
appguru joined #minetest-dev |
19:04 |
|
v-rob joined #minetest-dev |
19:09 |
hecks |
Any idea why minetest.exe started being written to /src/ instead of /bin/? Older PRs still write to the correct location. mingw64 cygwin |
19:16 |
sfan5 |
I changed that for cross-compiling |
19:16 |
sfan5 |
so I could build multiple builds from a single source folder safely |
19:52 |
hecks |
hm okay |
20:14 |
|
queria^clone joined #minetest-dev |
20:19 |
|
queria joined #minetest-dev |
21:32 |
|
specing joined #minetest-dev |
21:45 |
|
v-rob joined #minetest-dev |
23:04 |
|
Alias joined #minetest-dev |
23:12 |
|
v-rob joined #minetest-dev |
23:15 |
|
calcul0n joined #minetest-dev |
23:20 |
v-rob |
Is it possible to make a PR on top of another PR, but make it in the Minetest repo instead of my fork's repo so everyone can see it? |
23:31 |
pgimeno |
is your repo private? |
23:32 |
v-rob |
No, but if it's in the main Minetest repository, I could get feedback better |
23:33 |
pgimeno |
I don't understand well. PRs are sent to the Minetest repository, and the commits are visible by others. |
23:36 |
MTDiscord |
<exe_virus> don't make it in the minetest/ repo, please fork and do it in yours, it's absolutely public for everyone and will get auto compiled by the CI just as you would expect |