| Time |
Nick |
Message |
| 00:47 |
hecks |
I need a way to check the client protocol version in connectionthreads.cpp:580, any hints? |
| 00:53 |
hecks |
oh wait, I think I found a better place to hook into |
| 01:01 |
|
Fixer joined #minetest-dev |
| 01:08 |
hecks |
okay, the channel funnel is done - now how do we futureproof this to avoid having to do this ever again? |
| 01:10 |
hecks |
option 1: statically allocate like 32 or 64 channels on the premise that no more will ever be needed anyway |
| 01:10 |
hecks |
option 2: use a vector and ask the server how many channels it needs |
| 01:13 |
hecks |
but wait, does the client ever give a damn besides that assert? |
| 01:15 |
hecks |
option 3: preallocate 256 channels because it's not like silent channels eat much cpu or ram |
| 01:17 |
hecks |
screw this, I'll just give it 256 unless someone has a better idea |
| 02:03 |
|
Taoki joined #minetest-dev |
| 02:17 |
MTDiscord |
<exe_virus> 712*92 total possible entities? |
| 02:17 |
MTDiscord |
<exe_virus> That's easily going to be overrun in the future. |
| 02:18 |
MTDiscord |
<exe_virus> Why not just go uint64? |
| 02:33 |
|
lhofhansl joined #minetest-dev |
| 02:42 |
|
Genshin joined #minetest-dev |
| 02:45 |
hecks |
new problem, the funnel... isn't working? |
| 02:52 |
hecks |
help me out here, I commented out the funnel and by all logic the 5.3 client should just die |
| 02:52 |
hecks |
instead it's simply ignoring the packets |
| 03:02 |
lhofhansl |
Hey all... Going to merge #10698 within a few. |
| 03:02 |
ShadowBot |
https://github.com/minetest/minetest/issues/10698 -- Revert "Increase limit for simultaneous blocks sent per client and the meshgen cache." by sfan5 |
| 03:04 |
lhofhansl |
It ended up making not much a change in maploading after all. The important changes were the emerge queue limit increases and the "correct" parallel mapgen with multiple emerge threads. |
| 03:04 |
lhofhansl |
(Seem everyone is happier with this one reverted :) ) |
| 03:06 |
lhofhansl |
hecks: see of that improves your base problem. I still think we more channels! |
| 03:06 |
lhofhansl |
merged |
| 03:16 |
hecks |
lhofhansl: I already nerfed the block thing in my config, it helped a little but only delayed the queue death |
| 03:18 |
|
Ritchie joined #minetest-dev |
| 03:18 |
|
nathanfranke[m] joined #minetest-dev |
| 03:18 |
|
kb1000 joined #minetest-dev |
| 05:00 |
|
MTDiscord joined #minetest-dev |
| 05:21 |
celeron55 |
hecks: i think 256 channels (or less) is enough because it's not a problem to stuff a few extra things in one channel, you still get the same benefit |
| 05:22 |
celeron55 |
the server just has to map things to the available channels |
| 05:22 |
celeron55 |
so u8 is fine |
| 05:22 |
hecks |
I was asking more if anyone has any problems with having as many as 256 |
| 05:23 |
hecks |
as opposed to something that scales, I guess quiet channels aren't very expensive |
| 05:23 |
celeron55 |
well what's the overhead |
| 05:23 |
celeron55 |
apparently simply that many Channel objects |
| 05:24 |
celeron55 |
per connection |
| 05:24 |
celeron55 |
that's basically nothing |
| 05:24 |
hecks |
pretty much, there's a few places where it iterates over the channels but 256 iterations isn't much |
| 05:24 |
celeron55 |
there's a mutex in each i guess |
| 05:25 |
hecks |
now why could possibly my compat funnel not be working |
| 05:27 |
hecks |
https://github.com/hecktest/minetest/blob/8d7d7022ac62e446851005352cd358452e9d65a1/src/clientiface.cpp#L716 |
| 05:27 |
hecks |
what am I doing wrong here? |
| 05:28 |
lhofhansl |
I'll take a look tomorrow. |
| 05:28 |
hecks |
:[ |
| 05:28 |
lhofhansl |
celeron55: we reverted the 10627 :) |
| 05:28 |
lhofhansl |
night night folks. |
| 05:29 |
celeron55 |
legacyChannelMap should probably be a lookup table for optimization |
| 05:30 |
celeron55 |
it's just a 256->something mapping |
| 05:30 |
celeron55 |
i mean u8->something |
| 05:30 |
hecks |
the legacy map is something I did |
| 05:30 |
celeron55 |
i know |
| 05:30 |
hecks |
it's just new channels -> 3 old channels |
| 05:30 |
hecks |
and yeah |
| 05:30 |
hecks |
might as well be a u8[256] |
| 05:31 |
celeron55 |
i don't know why it doesn't work though, does that line of code run? |
| 05:32 |
hecks |
damned if I know, let me verbosestream it and try it on the server box |
| 05:32 |
celeron55 |
umm |
| 05:32 |
celeron55 |
well probably not, because you have protocol version set to 40? |
| 05:32 |
celeron55 |
i mean, is your client the appropriate version |
| 05:34 |
celeron55 |
eh whatever, should be easy to debug with a breakpoint or some stupid log prints |
| 05:41 |
hecks |
https://a.uguu.se/VJC87CuLjDxB_verbose.jpg |
| 05:42 |
hecks |
well this is a compat feature so I'm connecting with 5.3 |
| 05:42 |
hecks |
it's not a problem at all on a matching client |
| 05:46 |
celeron55 |
did you add some logging to ClientInterface::patchLegacyChannel()? |
| 05:47 |
celeron55 |
clearly there's no new log lines in that screenshot |
| 05:49 |
hecks |
yeah, now I added more and |
| 05:49 |
hecks |
by the looks of it, patching is never called |
| 05:50 |
hecks |
which would mean getClientNoEx(peer_id) is not working |
| 05:50 |
hecks |
because the negotiated version is definitely 39 and not 40 |
| 05:53 |
celeron55 |
well there are other places where Connection::Send() is called |
| 05:54 |
celeron55 |
ClientInterface::sendToAllCompat |
| 05:54 |
celeron55 |
i think you forgot that one |
| 05:54 |
hecks |
that isn't called anywhere |
| 05:54 |
hecks |
it's dead code |
| 05:55 |
celeron55 |
altough... yeah, i wonder what's up with that |
| 05:55 |
hecks |
it's actually failing to find the RemoteClient https://a.uguu.se/6zKsJaaYdNBl_notfound.jpg |
| 05:55 |
hecks |
this is init, those are nodedefs and media announces |
| 05:56 |
hecks |
getClientNoEx just fails |
| 05:57 |
celeron55 |
umm |
| 05:57 |
hecks |
does the code just not have a remote client at this stage? |
| 05:57 |
celeron55 |
what happens if you swap MTSCMC_INIT and MTSCMC_HUD |
| 05:57 |
celeron55 |
wait |
| 05:57 |
celeron55 |
there's 4, 6 and whatever also |
| 05:58 |
hecks |
inventory |
| 05:58 |
hecks |
media |
| 05:58 |
hecks |
position, and time of day I guess |
| 05:59 |
hecks |
in any case, remoteclient or not, I need to obtain the protocol version in this function somehow |
| 05:59 |
celeron55 |
ah |
| 05:59 |
celeron55 |
ClientInterface::getClientNoEx checks the client's initialization state |
| 06:00 |
celeron55 |
and the default for that argument is ClientState state_min = CS_Active |
| 06:00 |
hecks |
uhhhh the log occasionally says a packet has been patched on the HUD channel so that's working |
| 06:00 |
celeron55 |
pass CS_Invalid to it and it'll work |
| 06:00 |
celeron55 |
RemoteClient *rcl = getClientNoEx(peer_id, CS_Invalid); |
| 06:00 |
hecks |
oh? and uhhhh with that arg it'll always work? |
| 06:01 |
celeron55 |
by default it only gives out initialized clients and filters out the uninitialized ones |
| 06:01 |
hecks |
oh, it's like that, okay |
| 06:02 |
hecks |
whoaaaa |
| 06:02 |
hecks |
it worked |
| 06:03 |
celeron55 |
i kind of hate default arguments |
| 06:04 |
celeron55 |
nice idea but in the end they just confuse everyone |
| 06:04 |
celeron55 |
becaue nobody reads documentation or even headers |
| 06:04 |
celeron55 |
because* |
| 06:12 |
hecks |
it's more that the function is a little unusual, it's a getter but also a filter |
| 06:26 |
|
fluxflux joined #minetest-dev |
| 06:41 |
MTDiscord |
<exe_virus> Default args are great, in my opinion, why wouldn't someone check a header file? |
| 06:56 |
hecks |
wow, here's a bizarre development |
| 06:56 |
hecks |
I connected with a 5.3 client and it's even faster |
| 06:57 |
hecks |
makes me wonder if anything else changed along the way that made things slower in 5.4 |
| 07:04 |
hecks |
alright, that may have been a fluke |
| 07:53 |
hecks |
#10699 slam |
| 07:53 |
ShadowBot |
https://github.com/minetest/minetest/issues/10699 -- Break up the message queue by category by hecktest |
| 08:00 |
|
ShadowNinja joined #minetest-dev |
| 08:55 |
|
calcul0n joined #minetest-dev |
| 09:54 |
|
m42uko joined #minetest-dev |
| 11:26 |
|
absurb joined #minetest-dev |
| 11:39 |
|
T4im joined #minetest-dev |
| 11:46 |
|
MTDiscord joined #minetest-dev |
| 11:55 |
|
calcul0n joined #minetest-dev |
| 12:06 |
|
m42uko joined #minetest-dev |
| 12:19 |
|
proller joined #minetest-dev |
| 12:28 |
|
calcul0n joined #minetest-dev |
| 12:58 |
|
Icedream joined #minetest-dev |
| 14:11 |
|
YuGiOhJCJ joined #minetest-dev |
| 14:21 |
|
Fixer joined #minetest-dev |
| 18:07 |
|
lhofhansl joined #minetest-dev |
| 18:07 |
lhofhansl |
Please chime in on #10597 |
| 18:07 |
ShadowBot |
https://github.com/minetest/minetest/issues/10597 -- Increase defaults for viewing_range, active_object_range and related settings by lhofhansl |
| 18:18 |
|
Fractalis joined #minetest-dev |
| 18:27 |
lhofhansl |
I'm starting to get the feeling that we're not interested much in making MT better by default for reasonably decent machines. |
| 18:30 |
sfan5 |
the question is what about machines that aren't reasonably decent |
| 18:30 |
sfan5 |
perhaps there needs to be a choice between several preset settings |
| 18:30 |
sfan5 |
or even some kind of automatic detection |
| 18:30 |
|
lisac joined #minetest-dev |
| 18:31 |
lhofhansl |
That's what I am thinking. And more automatically derived settings as I suggest at the of #10683 |
| 18:31 |
ShadowBot |
https://github.com/minetest/minetest/issues/10683 -- Frame stutter seems worse since 2-3 months ago |
| 18:32 |
lhofhansl |
server and client need to be configured together |
| 18:32 |
|
homthack joined #minetest-dev |
| 18:37 |
|
hecks joined #minetest-dev |
| 18:46 |
|
fluxflux joined #minetest-dev |
| 18:56 |
|
Fractalis joined #minetest-dev |
| 19:04 |
|
Fractalis joined #minetest-dev |
| 19:46 |
lhofhansl |
Have a look at #10700. Simple change, only does mesh translation for visible blocks. |
| 19:46 |
ShadowBot |
https://github.com/minetest/minetest/issues/10700 -- Only translate meshes for visible blocks - reduces client stutter. by lhofhansl |
| 19:47 |
lhofhansl |
hecks: Has a better solution that we should work on afterwards. |
| 19:48 |
sfan5 |
I don't think that works |
| 19:48 |
lhofhansl |
Why not? |
| 19:49 |
sfan5 |
updateCameraOffset will move the meshes by how much the camera offset changed, if this is skipped the positions will be wrong once the blocks are visible again |
| 19:49 |
lhofhansl |
We never update all the blocks anyway in that loop. Only the sectors in range, so this does not rely on all blocks' meshes to be translated. |
| 19:49 |
sfan5 |
hmm |
| 19:50 |
sfan5 |
I guess each block stores its own offset then |
| 19:50 |
sfan5 |
because that'd work |
| 19:50 |
lhofhansl |
See the part in the loop above it. |
| 19:51 |
lhofhansl |
the camera offset also is a fixed value, no? I.e. it is known and final at any time when we render the map. |
| 19:51 |
sfan5 |
yes |
| 19:53 |
lhofhansl |
In the end hecks is right and we should just apply the offset to the model matrix. That would need some changes in the shaders (which are covered in #10688) |
| 19:53 |
ShadowBot |
https://github.com/minetest/minetest/issues/10688 -- Remove hardcoded matrices from OpenGL shaders. by lhofhansl |
| 19:54 |
sfan5 |
that doesn't work without shaders, does it? |
| 19:55 |
sfan5 |
at some point it will not feasible to support the fixed GL pipeline, if more rendering improvements are going to come in that point might be soon |
| 20:02 |
|
hecks joined #minetest-dev |
| 20:05 |
lhofhansl |
The standard pipeline would do the same. There's always a model, view, and project matrix. |
| 20:05 |
lhofhansl |
(i.e. Irrlicht would do the same) |
| 20:11 |
sfan5 |
oh right |
| 20:14 |
lhofhansl |
I'd still do 10700 for now, so we can reduce that jitter, then do it the right(tm) way |
| 20:15 |
sfan5 |
sure |
| 20:18 |
lhofhansl |
if you agree could add your approval to the PR? |
| 20:18 |
sfan5 |
once i've tested it I will |
| 20:19 |
|
hecks joined #minetest-dev |
| 20:22 |
lhofhansl |
Cool! Perhaps we can get paramat to test his scenario and see whether it improves. |
| 20:22 |
hecks |
what's up, are we talking about that stupid camera offset? |
| 20:25 |
sfan5 |
https://irc.minetest.net/minetest-dev/2020-12-05#i_5758366 |
| 20:27 |
lhofhansl |
Yes :) |
| 20:59 |
|
_Zaizen_[m] joined #minetest-dev |
| 20:59 |
|
Kimapr[m] joined #minetest-dev |
| 21:00 |
|
nathanfranke[m] joined #minetest-dev |
| 21:00 |
|
kb1000 joined #minetest-dev |
| 21:11 |
|
zughy[m] joined #minetest-dev |
| 21:12 |
|
celeron55[m] joined #minetest-dev |
| 21:13 |
|
Benrob0329[m] joined #minetest-dev |
| 21:14 |
hecks |
well the solution to that is basically done in my batching branch |
| 21:14 |
hecks |
I can extract that if you want |
| 21:19 |
|
LoneWolfHT joined #minetest-dev |
| 21:26 |
sfan5 |
yes please |
| 21:26 |
hecks |
on it |
| 21:36 |
pgimeno |
hecks: re #10699, please keep a channel number (or a few ones) reserved for possible future extensibility |
| 21:36 |
ShadowBot |
https://github.com/minetest/minetest/issues/10699 -- Break up the message queue by category by hecktest |
| 21:36 |
hecks |
pgimeno: the entire u8 of channels is up for grabs now |
| 21:37 |
hecks |
the channel array is just [256] |
| 21:37 |
pgimeno |
what if more are needed in future? you can't use the trick of mapping 255 to a longer integer |
| 21:37 |
hecks |
the channel ID is a u8 |
| 21:38 |
hecks |
and I doubt that more channels will be needed, instead I'd rather allocate subchannels for specific uses like per-entity queues |
| 21:38 |
hecks |
for the broadest categories of packets, 256 is more than enough |
| 21:38 |
|
calcul0n joined #minetest-dev |
| 21:38 |
hecks |
while things like modchannels and entities would benefit from a fully dynamic system layered on top of this |
| 21:39 |
hecks |
since entity packets already carry an entity ID right after the header, always |
| 21:39 |
pgimeno |
I'm just suggesting to reserve a code for possible future use |
| 21:40 |
hecks |
I still don't get it |
| 21:40 |
hecks |
we use 17 out of 256 available channels |
| 21:40 |
hecks |
most are still free for taking |
| 21:40 |
hecks |
and you don't need that many general categories |
| 21:40 |
hecks |
I'd feel safe even with [32] or [64], only 256 basically costs just as little so why not |
| 21:42 |
pgimeno |
or even limit it to 128 so in future a bit can be used to flag something |
| 21:43 |
pgimeno |
you just don't know what you will need, so using everything available knowing that you won't use it doesn't sound wise. |
| 21:43 |
MTDiscord |
<appguru> Ah yes, the future |
| 21:43 |
MTDiscord |
<appguru> TBH the future can break compat |
| 21:46 |
hecks |
then chop the protocol when you do that |
| 21:46 |
hecks |
it's only [256] to avoid ever having to expand it |
| 21:47 |
hecks |
because each expansion requires a funnel |
| 21:48 |
sfan5 |
you can theoretically switch the channel no to whatever type in the future, it just requires more annoying compat code |
| 21:50 |
hecks |
I suggested before that if we ever run out of 256 channels, you can use 255 as an escape for a longer number |
| 21:52 |
pgimeno |
re camera offset, please PLEASE get rid of that abomination, but do it carefully. I doubt that moving the matrix to GL is the solution. |
| 21:53 |
sfan5 |
I thought the camera offset was implemented for a reason |
| 21:53 |
sfan5 |
the implementation is awful, the concept is not the issue with it as far as I understand |
| 21:54 |
pgimeno |
the concept is an abomination |
| 21:54 |
pgimeno |
at render time, the camera should be at 0,0,0 and the geometry to render, around it |
| 21:55 |
pgimeno |
I implemented that for OpenMiner, and it works fine at a million km from the origin |
| 21:56 |
hecks |
https://a.uguu.se/WBvX3cTKA1GU_Clipboard01.jpg it's done and it works |
| 21:56 |
hecks |
no cracks, no vertex boil, no jitter |
| 21:56 |
hecks |
because you see, what you're supposed to do is collapse the offset and blockpos back to offset space before you BS it and feed it to the matrix |
| 21:57 |
hecks |
right as the block is being rendered - the GPU gets offset space stuff and everyone is happy |
| 21:58 |
pgimeno |
hecks: is there a PR for that? |
| 21:58 |
hecks |
in a minute, I just coded it |
| 21:59 |
pgimeno |
my point is that you shouldn't need to account for camera offset everywhere you need to do some rendering |
| 21:59 |
pgimeno |
that's what I'm strongly against |
| 22:01 |
pgimeno |
I need to go now, will check chat later |
| 22:01 |
sfan5 |
hm |
| 22:03 |
hecks |
#10702 |
| 22:03 |
ShadowBot |
https://github.com/minetest/minetest/issues/10702 -- Implement mapblock camera offset correctly by hecktest |
| 22:04 |
hecks |
from branch to PR in less time than it took to play the whole doom soundtrack =] |
| 22:18 |
lhofhansl |
Nice |
| 22:22 |
sfan5 |
haha ok my changes made it not build |
| 22:25 |
hecks |
sfan5: force push the original? |
| 22:25 |
sfan5 |
i'll fix it |
| 22:25 |
hecks |
ok |
| 22:58 |
lhofhansl |
sfan5: you wanna merge? Or want me to? |
| 22:59 |
sfan5 |
you can |
| 23:00 |
lhofhansl |
ok... In a few. One source of jitter down. |
| 23:02 |
lhofhansl |
(and I'll squash this time) |
| 23:03 |
lhofhansl |
done |