Time |
Nick |
Message |
01:06 |
|
VanessaE joined #minetest-dev |
01:36 |
|
cib0 joined #minetest-dev |
01:56 |
|
paramat joined #minetest-dev |
02:09 |
|
cib0 joined #minetest-dev |
02:21 |
|
paramat left #minetest-dev |
02:27 |
ShadowNinja |
celeron55: I discussed it with several other devs, and you only review PRs very rarely. |
02:27 |
ShadowNinja |
hmmmm: What exactly is the bug? |
02:27 |
ShadowNinja |
infostream isn't working somehow? |
02:28 |
|
thatgraemeguy joined #minetest-dev |
02:28 |
|
thatgraemeguy joined #minetest-dev |
02:29 |
ShadowNinja |
hmmmm: Oh, BTW, I thought of a nice solution to your categories idea that doesn't require massive changes. |
02:30 |
ShadowNinja |
You could use a scoped object. |
02:31 |
ShadowNinja |
Eg: server::step() { LogScope("ServerStep"); /* Any stream writes will use the provided category name unless you enter another log scope */ } |
02:32 |
ShadowNinja |
This should be very helpfull for the debugging case that you had in mind, since you just have to add that line to the top of each function/ |
02:33 |
ShadowNinja |
(but actually assigning it to a variable :-P) |
02:36 |
ShadowNinja |
Oh, BTW, also note that kwolekr made some modifications to that PR, and est did some after for his console patch, so it's not necessarily my bug. |
02:44 |
|
dandelion joined #minetest-dev |
03:21 |
|
VanessaE joined #minetest-dev |
03:33 |
|
crazyR_ joined #minetest-dev |
04:06 |
|
dandelion left #minetest-dev |
04:26 |
|
paramat joined #minetest-dev |
04:29 |
|
Supertanker2 joined #minetest-dev |
04:49 |
paramat |
kwolekr == hmmmmm |
04:51 |
* VanessaE |
wishes hmmmm would just go by kwoelkr here too :) |
05:09 |
paramat |
hi hmmmm i'd like to merge mgflat soonish if you're able to check it https://github.com/minetest/minetest/pull/3313 i'm currently working on adding a choice of 4 formulas to mgfractal |
05:34 |
|
Hunterz joined #minetest-dev |
05:41 |
|
paramat left #minetest-dev |
06:20 |
|
paramat joined #minetest-dev |
06:33 |
paramat |
i'll merge mgflat in 3 hrs, it was reviewed earlier and i trust myself with the recent changes |
06:38 |
|
Hunterz joined #minetest-dev |
06:59 |
|
jin_xi joined #minetest-dev |
07:04 |
|
Player2 joined #minetest-dev |
07:23 |
|
Supertanker2 joined #minetest-dev |
07:30 |
celeron55 |
ShadowNinja: it turned out that it probably is not the fault of your code; however, it still is not working |
07:30 |
celeron55 |
ShadowNinja: i have no idea why; i am even suspecting that libstdc++ 4.9...5.1 is broken |
07:55 |
|
paramat left #minetest-dev |
08:04 |
hmmmm |
celeron, maybe it would help if you disassembled the function at that point |
08:05 |
hmmmm |
ShadowNinja: the scoped name thing sounds good but you're making the same god damn mistake that sapier, nerzhul, and est all make with temporary objects and their lifetimes |
08:05 |
hmmmm |
please PLEASE don't do this for something important and subtle like MutexAutoLock |
08:05 |
hmmmm |
I know you like to generate enormous commits where it's easy for reviewers to miss things like that |
08:07 |
hmmmm |
paramat: I guess it looks good at first glance |
08:37 |
celeron55 |
hmmmm: it might help but i have to use my day for developing this actual feature if i am to ever get it done |
08:37 |
hmmmm |
you shouldn't rush as much |
08:38 |
celeron55 |
this is not about rushing; this is about focusing |
08:38 |
|
Gael-de-Sailly joined #minetest-dev |
08:40 |
celeron55 |
even now i'm ending up fixing way more stuff than i would have wanted in the first place |
08:41 |
celeron55 |
and in any case you don't even want a huge changeset from me that touches every part of minetest just because there were some small nitpicks here and there |
08:42 |
hmmmm |
i hope it's not too much to ask for |
08:43 |
hmmmm |
as much as you focus on your actual task at hand, commits should be as focused as possible as well |
08:43 |
hmmmm |
otherwise what's the point? might as well just attach a script to your IDE's "save" button that runs git commit -m "WIP" |
08:43 |
celeron55 |
oh, you want me to explain that? well i'll explain that then |
08:44 |
celeron55 |
(i didn't think i would have to) |
08:44 |
celeron55 |
i make three kinds of commits when i am working on a big feature like this |
08:44 |
hmmmm |
explain what |
08:44 |
celeron55 |
type 1: a commit that implements or fixes something in an unrelated part of the code |
08:46 |
celeron55 |
type 2: a commit that i made because i am either switching direction in my design so considerably that i might just forget how many times exactly to undo things to get where i was, or i am just leaveing my computer and want to know where i was then (often called just WIP) |
08:46 |
celeron55 |
type 3: a commit where i see that the subfeature that i was making now works; often called something more reasonable and intended to be at least squashed with all the previous WIP commits |
08:47 |
celeron55 |
but i squash absolutely nothing before i have to, because i would be losing information |
08:47 |
hmmmm |
so in other words, with your workflow it isn't so difficult to keep the unrelated things separated |
08:47 |
celeron55 |
i recommend this to everyone, in fact |
08:51 |
celeron55 |
i know how much attention span i have for this and that is how i budget the unrelated things |
08:52 |
celeron55 |
it's not something you can choose |
08:52 |
hmmmm |
shouldn't you be coding instead of talking right now? |
08:53 |
celeron55 |
well, you were the one asking but i guess i'll go make some breakfast now |
09:00 |
celeron55 |
you might be under the impression that i'm just making huge meshes on the client, but now i have actually spent days reworking the map sending algorithm so that it can reliably and efficiently support loading and sending this stuff |
09:01 |
celeron55 |
this is much harder than i thought it would be |
09:01 |
hmmmm |
what is the map sending algorithm now? |
09:01 |
celeron55 |
i have ended up with the server choosing what to sent based on a few parameters periodically updated by the client |
09:02 |
celeron55 |
it's essentially the same as before but, like, not a prototype made in a few hours like the previous one was |
09:02 |
celeron55 |
and with these things required for FarBlocks |
09:02 |
|
nrzkt joined #minetest-dev |
09:03 |
hmmmm |
that is a rather vague description |
09:03 |
celeron55 |
...or i don't know if "essentially the same" is a correct way to put it |
09:03 |
celeron55 |
ask a detail and i will tell a detail |
09:03 |
celeron55 |
there are many details |
09:04 |
hmmmm |
well you say it's essentially the same but then you say that it was a lot harder than you thought |
09:04 |
hmmmm |
soooo.. |
09:05 |
celeron55 |
the old algorithm was kind of inefficient due to multiple reasons, and this one is less inefficient; and it contained multiple bugs that i had to sort out |
09:05 |
celeron55 |
FarBlocks require this to be able to first determine what MapBlock and what FarBlock would be sent, and then prioritize between them |
09:06 |
celeron55 |
then there's the logic that determines when to send a farblock because they are loaded from disk in such small pieces (that are MapBlocks) |
09:06 |
celeron55 |
stuff like that |
09:06 |
hmmmm |
just to be clear; FarBlocks are not saved to disk, correct? |
09:07 |
celeron55 |
yes; i don't intend to save them; they are an in-memory cache (i guess) |
09:07 |
hmmmm |
cool |
09:13 |
celeron55 |
overally this is such a dynamic system that it is hard to test; but i have managed to break it apart into more meaningful smaller pieces so that's good |
09:14 |
hmmmm |
yeah that's another thing I'm concerned about |
09:14 |
celeron55 |
but the logic has to pull all kinds of information from everywhere in order to do what it needs to do |
09:14 |
hmmmm |
many things in minetest are not testable due to the lack of separation of concerns |
09:14 |
celeron55 |
not more than before really, but that was already many things |
09:14 |
hmmmm |
would people be able to write unit tests for this new code? |
09:15 |
celeron55 |
if you'd replace some direct references to things with interfaces, then possibly |
09:15 |
celeron55 |
because the autosend algorithm is now a separate class |
09:16 |
celeron55 |
instead of being mangled inside RemoteClient |
09:18 |
|
Gael-de-Sailly joined #minetest-dev |
09:34 |
|
paramat joined #minetest-dev |
09:36 |
paramat |
now merging flat mapgen https://github.com/minetest/minetest/pull/3313 |
09:43 |
paramat |
merged |
09:59 |
paramat |
i appreciate the work on farmap, excellent feature, love the screenshots |
09:59 |
|
paramat left #minetest-dev |
10:01 |
|
Calinou joined #minetest-dev |
10:17 |
|
crazyR joined #minetest-dev |
10:49 |
celeron55 |
i am happy to announce that the emerge system is happily coping with the utterly ridiculous amounts of emerge requests when the new algorithm (which finally works properly) is racing to load hundreds of FarBlocks |
10:50 |
celeron55 |
well, properly in the speed aspect (in other aspects it's still WIP) |
10:51 |
celeron55 |
or, well |
10:52 |
celeron55 |
the only thing now is that the idle sleep is broken so it consumes a lot of CPU but that's easily fixed i suspect and i think i'll do it now |
10:53 |
celeron55 |
or, not the sleep but the triggering of it... whatever! |
10:59 |
|
proller joined #minetest-dev |
11:05 |
|
proller joined #minetest-dev |
11:14 |
|
proller joined #minetest-dev |
11:37 |
|
Amaz joined #minetest-dev |
11:37 |
|
Megaf joined #minetest-dev |
11:38 |
Megaf |
https://github.com/minetest/minetest/issues/3357 |
11:38 |
Megaf |
#3357 |
11:39 |
thatgraemeguy |
that was done in _game, not in engine |
11:39 |
thatgraemeguy |
it makes sense too, trees need light to grow |
11:40 |
Megaf |
oh |
11:40 |
Megaf |
ok |
11:40 |
Megaf |
I will close the issue there and open in game |
11:41 |
Megaf |
thatgraemeguy: minetest is not aobut realism, is about freedom, and that breaks a lot of stuff in my server |
11:41 |
thatgraemeguy |
don't shoot the messenger |
11:42 |
celeron55 |
thank god that is not an engine issue; at least something in this design is working 8D |
11:44 |
Megaf |
celeron55: lol |
11:45 |
Megaf |
https://github.com/minetest/minetest_game/issues/724 |
11:45 |
Megaf |
just moved the issue to the right place |
11:47 |
thatgraemeguy |
heh, good luck |
11:51 |
Megaf |
thatgraemeguy: https://github.com/minetest/minetest_game/issues/724#issuecomment-155751466 |
11:56 |
crazyR |
Megaf. You could write a mod to overide it. it wouldnt be that hard |
11:57 |
|
jin_xi joined #minetest-dev |
11:57 |
Megaf |
crazyR: I can not, I have no idea how to do that |
11:57 |
|
cib0 joined #minetest-dev |
12:07 |
crazyR |
Il see what i can do if i get some spare time today. as i doubt they will change it back unless a lot of people demand it |
12:10 |
crazyR |
celeron55 whats the deal with overiding abm's. can it be done, or would not register ? |
12:16 |
crazyR |
actually scrap that, its not needed :) |
12:17 |
Megaf |
Calinou: mosh is fantastic, I no longer have to reconnect to my server, it does on its own |
12:17 |
Megaf |
wrong channel |
12:45 |
|
Darcidride joined #minetest-dev |
13:22 |
|
zat joined #minetest-dev |
13:26 |
|
PilzAdam joined #minetest-dev |
14:01 |
|
VargaD joined #minetest-dev |
14:15 |
|
zupoman joined #minetest-dev |
14:15 |
|
Calinou joined #minetest-dev |
14:15 |
|
Fritigern joined #minetest-dev |
15:24 |
|
Hunterz joined #minetest-dev |
15:35 |
|
rubenwardy joined #minetest-dev |
15:53 |
celeron55 |
the fact that in minetest node id 0 is just a random regular node is actually pretty annoying |
15:53 |
celeron55 |
you can't just rely on arrays initializing at 0 |
15:54 |
celeron55 |
it's surprisingly hard to spot every place that needs to be explicitly set to CONTENT_IGNORE |
15:58 |
rubenwardy |
Would it be impossible/difficult to change w/o incompatibility? To set CONTENT_IGNORE=0? |
15:59 |
celeron55 |
here's some modern art: http://i.cubeupload.com/9gqPHU.jpg http://i.cubeupload.com/qtJqfN.jpg http://i.cubeupload.com/MtiQPF.jpg |
16:00 |
|
CraigyDavi joined #minetest-dev |
16:00 |
celeron55 |
rubenwardy: that would require looking up a huge amount of version compatibility details |
16:01 |
celeron55 |
it would work straight away if you dropped old worlds and network compatibility but those are the hard part |
16:01 |
rubenwardy |
So the CONTENT_IGNORE isn't declared by the server, it's a constant that's always the same |
16:02 |
celeron55 |
the modern art i just linked is actually quite effective |
16:03 |
celeron55 |
looking at it makes me almost feel like i'm suffocating |
16:03 |
rubenwardy |
When a player emerges, does it create a dummy MapBlock whilst it waits for mapgen to work? |
16:04 |
|
hmmmm joined #minetest-dev |
16:06 |
* VanessaE |
hopes celeron55 pushes soon... wanna test ;) |
16:09 |
celeron55 |
the problems in dreambuilder are reproducible, by the way |
16:09 |
celeron55 |
and i can't figure out what causes them |
16:10 |
celeron55 |
use less nodes and it works |
16:10 |
VanessaE |
at least that rules out a hardware or driver fault |
16:10 |
celeron55 |
i tried looking up some simple-ish errors i might have made but didn't find any (like using u8 in place of u16) |
16:14 |
|
Lunatrius` joined #minetest-dev |
16:15 |
|
Warr1024_ joined #minetest-dev |
16:16 |
|
Icedream- joined #minetest-dev |
16:16 |
|
who_wants_some joined #minetest-dev |
16:36 |
celeron55 |
http://i.imgur.com/BQWudzF.jpg |
16:36 |
celeron55 |
nodetopia and mgv7 |
16:36 |
celeron55 |
it's cute |
16:36 |
VanessaE |
that actually looks pretty good. |
16:36 |
celeron55 |
ok i think i'll push now |
16:37 |
VanessaE |
btw about dreambuilder, does it help you if I mention there are come 16,500 nodes in that game? |
16:37 |
celeron55 |
i know how many there are |
16:37 |
VanessaE |
(nodes/items) |
16:37 |
celeron55 |
too god damn many |
16:37 |
VanessaE |
lol |
16:38 |
celeron55 |
pushed https://github.com/celeron55/minetest/commits/far_map_wip |
16:38 |
celeron55 |
now there is a setting called "far_map_allow_generate" that defaults to false |
16:41 |
rubenwardy |
and 90% of those nodes are probably from homedecor ;) |
16:41 |
VanessaE |
rubenwardy: actually, about half of them come from mods like colored woods, stained glass, etc. |
16:42 |
VanessaE |
if the engine had in-the-map colorization of nodes, I could probably cut the item count in half. meta_set_nodedef could improve that further. |
16:45 |
VanessaE |
celeron55: did you decide if you're going to allow the farmap texture atlas to be used for general non-facedir terrain? |
16:45 |
celeron55 |
why would it use the same atlas |
16:46 |
VanessaE |
well you mentioned something along those lines yesterday |
16:46 |
celeron55 |
well i'm not doing it in a loooong time |
16:46 |
VanessaE |
no worries. |
16:46 |
celeron55 |
if that's what you are asking |
16:47 |
|
Hunterz joined #minetest-dev |
16:49 |
|
est31 joined #minetest-dev |
16:49 |
|
Icedream joined #minetest-dev |
16:50 |
VanessaE |
seems to work mostly. one thing though is if the server lags, it loves to load in the farmap data before it loads in the corresponding "detailed" terrain |
16:50 |
VanessaE |
maybe it shouldn't load either one in that case. |
16:51 |
VanessaE |
(well, whatever you call the "server half" of singleplayer) |
16:51 |
est31 |
that "color nodes" or "hardcode slabs into the engine" disscussion doesn't bring much. You still will have to address all those nodes some way, and every system you could think of would be less flexible than the current one. |
16:52 |
est31 |
ofc, its bad that it pregenerates all the textures for the whole nodedef, but that can be optimized without introducing categories |
16:53 |
est31 |
just generate them when you want to render a mapblock with that node, and un-generate them when you delete that mapblock from the client's env. |
16:53 |
VanessaE |
celeron55: here's an example of what I mean by that: http://digitalaudioconcepts.com/vanessa/hobbies/minetest/screenshots/random/Screenshot_2015-11-11_11-52-52.png |
16:53 |
celeron55 |
yes; people shouldn't falsely think adding more identifiers alongside the node id and facedirs would make performance better |
16:53 |
VanessaE |
(as you can see, the edge of the road is only 2 or 3 meters in front of me) |
16:53 |
celeron55 |
if anything, each of those additions makes it worse |
16:54 |
celeron55 |
VanessaE: i don't know what you are talking about |
16:54 |
celeron55 |
or what that screenshot is about |
16:55 |
celeron55 |
oh, you mean that |
16:55 |
VanessaE |
celeron55: that screenshot is me running down the road and stopping when the game lagged. you can see farmap terrain that shouldn't even BE there yet imho. here's the same scene after letting the lag subside and the terrain load: http://digitalaudioconcepts.com/vanessa/hobbies/minetest/screenshots/random/Screenshot_2015-11-11_11-54-12.png |
16:55 |
celeron55 |
well, it's just a priorization system |
16:56 |
celeron55 |
it can't magically help server lag |
16:56 |
est31 |
hmmmm's map locking plans would help there I guess |
16:56 |
VanessaE |
oh I'm not worried about the lag, that's just some inefficient entity-related mod or something |
16:56 |
est31 |
but thats another discussion |
16:56 |
celeron55 |
well let me add a thing to the client's configuration that you can use to control the priorities |
16:58 |
|
Krock joined #minetest-dev |
17:08 |
celeron55 |
okay, added |
17:09 |
celeron55 |
https://github.com/celeron55/minetest/commit/05850ce25ec2e0a2ae4bb8382d14d67ba778e817 |
17:09 |
VanessaE |
your timing is impeccable. |
17:09 |
VanessaE |
not 2 seconds before you said that, I pulled :) |
17:09 |
celeron55 |
set that lower if you want to prioritize regular map transfers |
17:10 |
celeron55 |
i think i'll lower the default to 4 |
17:10 |
|
damiel joined #minetest-dev |
17:10 |
celeron55 |
or... maybe 5 |
17:11 |
* VanessaE |
tries it with 4. |
17:14 |
VanessaE |
4, with a farmap range of 300 seems good |
17:17 |
VanessaE |
hm. note to self: tell cheapie about the junkyard having been raided. |
17:19 |
VanessaE |
make that range 200. I think if you can sort out that "too god damn many" nodes ;-) glitch, you've got something very usable. |
17:22 |
celeron55 |
use the built-in watershed and be impressed |
17:22 |
celeron55 |
you want to up the range to like 700 |
17:23 |
VanessaE |
oh I was just keeping the range at 200 because this world just has horrible fps in built-up areas anyway |
17:23 |
* VanessaE |
tries watershed |
17:23 |
VanessaE |
hm. watershed is not offers as a mapgen in the "new" dialog. |
17:24 |
celeron55 |
(it's not in the menu but there are some ways you can get a world to use it) |
17:24 |
celeron55 |
i just put it in minetest.conf and start a server at a new world, stop the server and then start singleplayer on it |
17:25 |
celeron55 |
paramat had some other way |
17:26 |
VanessaE |
editing map_meta.txt and deleting map.sqlite seems to work |
17:27 |
VanessaE |
kinda. :P |
17:27 |
VanessaE |
there we are. it couldn't find a spot to spawn me, had to fly up to +230 :P |
17:28 |
VanessaE |
hah, segfaulted :D |
17:29 |
celeron55 |
it isn't segfaulting for me exactly all the time so you need to get a backtrace |
17:29 |
celeron55 |
and i've been running it all day |
17:29 |
VanessaE |
oh I'll grab a bt later |
17:29 |
VanessaE |
just amused is all :) |
17:33 |
|
cib0 joined #minetest-dev |
17:35 |
VanessaE |
your "topmost node" calculation looks to have an off-by-1 error |
17:35 |
VanessaE |
http://digitalaudioconcepts.com/vanessa/hobbies/minetest/screenshots/random/Screenshot_2015-11-11_12-34-41.png versus http://digitalaudioconcepts.com/vanessa/hobbies/minetest/screenshots/random/Screenshot_2015-11-11_12-34-48.png |
17:35 |
VanessaE |
(minetest_game, unmodified, mgv7) |
17:46 |
Krock |
http://i50.photobucket.com/albums/f324/ann1024/DevelopersAreBornBrave_Small.jpg |
17:46 |
VanessaE |
heh |
18:06 |
celeron55 |
umm? |
18:06 |
celeron55 |
off-by-1 based on what? |
18:07 |
celeron55 |
it doesn't use the leaves unless it has no other choice because leaves propagate light and thus aren't as solid as something else is that it prefers |
18:08 |
celeron55 |
it desperatetly wants something solid; it's all it's got in life |
18:08 |
celeron55 |
don't go mocking it like that |
18:09 |
celeron55 |
also, you are still looking it up too close; it's never going to look good that close |
18:10 |
VanessaE |
based on height? what I mean is, why are tree trunks showing when there's nothing but leaves on the top layer (and certainly more of them than trunks) |
18:10 |
celeron55 |
i just explained that |
18:10 |
VanessaE |
well I guess |
18:11 |
VanessaE |
but in practice, you really should be just showing whatever the cube has the most of |
18:11 |
celeron55 |
that's a much more expensive calculation than to just go throgh one Y column |
18:11 |
celeron55 |
how many leaves are there on top of that trunk? |
18:12 |
celeron55 |
inside the farnode |
18:12 |
VanessaE |
1 or 2 nodes. |
18:12 |
VanessaE |
if you flip between the two screenshots, you can see what I was trying to point out. also look to the left, where you can see a chunk of leaves appear/disappear entirely. |
18:15 |
VanessaE |
as for being too close, I only got up close to this spot to show the issue; I see this happening 50, 100 nodes away too. |
18:15 |
celeron55 |
i think it's fine, but let me add a profiling timer in there so people can figure out if they can make it better without making it much slower |
18:22 |
|
Calinou joined #minetest-dev |
18:26 |
celeron55 |
https://github.com/celeron55/minetest/blob/5f0402b36e2208446250aca25df0aadc9fbefe57/src/far_map_server.cpp#L98 |
18:27 |
celeron55 |
this is what decides how each FarNode looks like |
18:28 |
|
Robert_Zenz joined #minetest-dev |
18:29 |
VanessaE |
yeah, that's the issue then, you only search the center column, so every so often you hit the tree trunk (as in my example), so you get what looks like a block of trunks, even if there are far more leaves. |
18:29 |
celeron55 |
well, obviously |
18:29 |
VanessaE |
yeah, in practice I don't think that's gonna satisfy users |
18:30 |
VanessaE |
you've only got 256 nodes to search (and sort by count) in a block, I'd think the engine could do that in a couple of milliseconds? |
18:31 |
VanessaE |
..in a farnode block thingy I mean |
18:32 |
celeron55 |
in a 1024x384x1024 area of map (which is roughly what you get when you use a range of 500), there are 98304 MapBlocks that the thing has to go through |
18:32 |
celeron55 |
you don't want it taking a millisecond for sure |
18:33 |
celeron55 |
that would be two minutes of purely churning that code |
18:33 |
celeron55 |
currently it takes something like 13-16µs for me which is quite fine |
18:34 |
VanessaE |
ok well maybe a millisecond or two is an exaggeration |
18:34 |
VanessaE |
but that said, how long does it take to load that much map data in practice? (assuming it's already been generated) |
18:35 |
celeron55 |
not as long as you think |
18:35 |
VanessaE |
by my experience, that's at least 5-10 mins of flying around to get that much map loaded |
18:35 |
|
Niebieski joined #minetest-dev |
18:35 |
celeron55 |
i'm testing now |
18:35 |
VanessaE |
that aside, if it takes 16 uS for one column, then it should take between 250 and 300 uS to search all 16 columns, including time to count and sort it |
18:37 |
celeron55 |
looks like about 2 minutes |
18:38 |
celeron55 |
and the average for that function went as high as over 30µs |
18:39 |
|
VanessaE left #minetest-dev |
18:39 |
|
VanessaE joined #minetest-dev |
18:39 |
VanessaE |
oops. |
18:39 |
celeron55 |
i'm of course using this laptop with a 512GB SSD and a quad core processor running at over 3GHz |
18:40 |
celeron55 |
and 16GB of RAM |
18:40 |
celeron55 |
so your values will be worse i guess |
18:40 |
VanessaE |
yeah, I'm speaking in terms of playing on a server such as VE-Basic |
18:47 |
celeron55 |
i guess i'll test something |
18:49 |
celeron55 |
i made a simple implementation for finding what the most common node is and it takes over 400µs on average |
18:49 |
celeron55 |
that's unacceptable |
18:49 |
celeron55 |
it's 40 seconds from the total load time of 2 minutes; no way |
18:49 |
celeron55 |
that would be ridiculous |
18:51 |
celeron55 |
and this makes all ground be stone |
18:51 |
VanessaE |
400 uS is about in line with what I'd expect. |
18:52 |
VanessaE |
ok so just find only the top nodes |
18:52 |
VanessaE |
and sort those |
18:52 |
VanessaE |
at worst, 16 entries to be counted (once found) |
18:59 |
VanessaE |
and at least with that, you can be sure grass will remain as grass :) |
19:03 |
VanessaE |
one thing that would be nice, but probably way too expensive, would be to sort each of the 6 sides of the farmap cubes |
19:03 |
VanessaE |
so e.g grass on top, dirt or stone or something on the sid etc. |
19:03 |
VanessaE |
side* |
19:03 |
VanessaE |
not sure if it would actually look good though |
19:10 |
VanessaE |
this is the part where someone is supposed to pipe up and mention that octrees would be the magic bullet :) |
19:10 |
celeron55 |
this is way too slow |
19:11 |
celeron55 |
if i try to do anything fancy in there, it goes to the range of hundreds |
19:11 |
VanessaE |
(to that end, I remember a couple years ago some minecraft-related blog discussing how to do something like your farmap, but with variable-sized cubes) |
19:11 |
celeron55 |
i am not interested in technical fancytalk like that; it's never actually useful and is just basically some kind of wankery |
19:11 |
celeron55 |
if you didn't know |
19:12 |
VanessaE |
I assumed as much |
19:12 |
VanessaE |
:) |
19:13 |
celeron55 |
i can tell you that this looks incredibly boring when the trunks are missing |
19:14 |
VanessaE |
I'd say boring is fine as long as it looks more accurate |
19:17 |
celeron55 |
well that's the problem |
19:18 |
VanessaE |
damn it where is that blog post |
19:25 |
VanessaE |
I guess the only sane thing to do, once you have an accurate way to "scale down" the terrain data, is to cache it in the map :-/ |
19:26 |
Warr1024 |
if you cache that metadata server-side, you could have the option of sending only that metadata to clients for distant mapblocks, too. |
19:26 |
celeron55 |
meh; i'll just make it configurable and then everyone can decide by themselves how much time they want to waste in that function |
19:26 |
celeron55 |
caching this is out of question |
19:26 |
celeron55 |
on disk that is |
19:27 |
Warr1024 |
is it going to be a lot of data or something? or do you just not want to mess with the file formats? |
19:27 |
celeron55 |
i won't do it, and it won't be accepted because it's not needed and complicates things too much |
19:29 |
celeron55 |
why are you even suggesting that; it's ridiculous |
19:29 |
VanessaE |
celeron55: because you're trying to create these meshes in realtime. why? |
19:29 |
celeron55 |
i think i got the result you want by checking four Y columns |
19:30 |
VanessaE |
four? |
19:30 |
VanessaE |
ok I'm listening :) |
19:30 |
VanessaE |
(you can be sure you'll never end up with a tree turning into only trunks, for sure) |
19:30 |
celeron55 |
well it looks almost the same as the other result |
19:32 |
VanessaE |
if this were normal terrain (rather than voxels), this might have been helpful: http://www.gamasutra.com/view/feature/131596/realtime_dynamic_level_of_detail_.php?print=1 |
19:32 |
VanessaE |
(it's not the page I was looking for, though) |
19:41 |
VanessaE |
another related, http://www.sea-of-memes.com/LetsCode64/LetsCode64.html |
19:42 |
celeron55 |
i won't open any of those but if someone is bored, i guess those are fun |
19:42 |
VanessaE |
just "thinking out loud". |
19:43 |
celeron55 |
i think i'm going to end up with something that you might be okay with |
19:52 |
VanessaE |
ok. |
19:54 |
|
who_wants_some_ joined #minetest-dev |
19:57 |
|
who_wants_some joined #minetest-dev |
20:01 |
|
who_wants_some_ joined #minetest-dev |
20:03 |
|
who_wants_some_ joined #minetest-dev |
20:05 |
|
who_wants_some joined #minetest-dev |
20:11 |
|
est31 joined #minetest-dev |
20:17 |
VanessaE |
est31: you mentioned before about wanting to rework /clearobjects to get down into the 20 min range. still going to do that? |
20:17 |
est31 |
well I have it coded actually |
20:17 |
est31 |
I just need to tidy it up |
20:18 |
est31 |
but the question is rather whether its wanted or not |
20:18 |
VanessaE |
well |
20:18 |
VanessaE |
given that I tried to do a /clearobjects on VE-survival (local copy) and 8 hours later it was still chewing on it.... |
20:18 |
VanessaE |
'nuff said? :) |
20:19 |
est31 |
okay, then I'll tidy it up |
20:19 |
est31 |
I just wonder how much of minetest's code to re-use |
20:20 |
VanessaE |
at the time, I was trying to rig up a sort of "optimum test map" - an empty game dir (literally zero mods), so that there'd be nothing in the world but unknown nodes and zero entities. |
20:20 |
VanessaE |
(basically a sort of "let's find where it is REALLY crapping out map) |
20:24 |
|
who_wants_some joined #minetest-dev |
20:54 |
celeron55 |
this is fiddly as fuck |
20:54 |
celeron55 |
nobody is allowed to touch this anymore after i make my next commit; it can only get worse |
20:54 |
VanessaE |
what's fiddly about it? |
20:54 |
celeron55 |
there are so many little details the output must conform to in order to be useful |
20:55 |
celeron55 |
for example, if the area is mostly air, the result still cannot usually be air because it would reveal the underground |
20:55 |
celeron55 |
but if the area is almost completely air by an arbitrary limit that i had to come up with, it will be considered to be air because otherwise, again, it looks stupid |
20:58 |
celeron55 |
and i had to make it check 8 Y columns; otherwise it's too fiddly |
20:59 |
celeron55 |
i mean, otherwise it has a slightly too random output |
20:59 |
celeron55 |
but with 16 it goes above the time i am going to allow it to take |
20:59 |
celeron55 |
even now it's taking 20% of emergethread's time |
20:59 |
|
RethaiN joined #minetest-dev |
21:00 |
celeron55 |
which is around 100us per MapBlock |
21:02 |
VanessaE |
too bad your farblock size isn't 5x5, then you could use a 5-column sample (center and corners), which would probably be optimal |
21:03 |
celeron55 |
that doesn't matter |
21:20 |
celeron55 |
pushed |
21:20 |
celeron55 |
i am not happy with this but i cannot make it better |
21:20 |
celeron55 |
so that's what it will be |
21:22 |
VanessaE |
actually, that looks pretty good |
21:25 |
VanessaE |
you got some un-init data happening though: http://digitalaudioconcepts.com/vanessa/hobbies/minetest/screenshots/random/Screenshot_2015-11-11_16-24-25.png |
21:26 |
celeron55 |
no, that's just the same old glitch |
21:26 |
VanessaE |
(mgv7, mt_game, flying into some newly-generated terrain, I think) |
21:26 |
VanessaE |
oh ok. |
21:26 |
celeron55 |
it happens in mt_game too during some conditions that i don't understand |
21:28 |
VanessaE |
well that at least rules out "too G*d damn many nodes" as the cause. :P |
21:32 |
celeron55 |
it seems that for some reason the mesh ends up with wrong texture coordinates |
21:33 |
celeron55 |
when you go close to it, different meshes are rendered instead of the large one and then the effect disappears with the large mesh |
21:33 |
celeron55 |
and stays in it |
21:34 |
celeron55 |
or, well, a wrong texture atlas texture |
21:34 |
celeron55 |
all of the textures that end up in them are valid as far as i know; they are just some completely random weird ones |
21:35 |
celeron55 |
or... well if the atlas texture is switched, then maybe it can also contain some uninitialized areas that the others don't |
21:35 |
celeron55 |
but i haven't seen such yet |
21:39 |
VanessaE |
am I seeing this right that you're doing 4^3 at one distance, and then 8^3 further out? |
21:40 |
celeron55 |
yeah, there's a further LOD level hardcoded to begin at 500 |
21:40 |
celeron55 |
and no, it's not 8^3; it's full MapBlocks at that point |
21:40 |
VanessaE |
ah |
21:41 |
VanessaE |
couldn't tell at that distance :) |
21:42 |
VanessaE |
would it take a lot of resources to do 2^3 and 8^3 also? |
21:44 |
celeron55 |
dunno, maybe |
21:46 |
|
cib0 joined #minetest-dev |
21:46 |
celeron55 |
that's completely out of scope for me; it's not useful in my opinion compared to any work reequired to make it or any resources it would use |
21:47 |
VanessaE |
this is actually pretty impressive. I've got pieces of terrain visible almost 1000 meters away now, with farmap range set to that, and still managing 30 fps with a "detail" view range of 130 |
21:47 |
VanessaE |
(the whole strip between there and where I am is loaded) |
21:48 |
celeron55 |
it's the power of huge static VBOs and as low level of detail as humanly possible :P |
21:48 |
VanessaE |
heh |
21:48 |
VanessaE |
one thing though, the detailed terrain is taking an ice age to load, yet the farmap stuff is loading instantly |
21:48 |
VanessaE |
(well as instantly as terrain ever has anyway) |
21:49 |
celeron55 |
that depends on so many factors that the complaint is useless to me |
21:49 |
celeron55 |
it has always worked for me 100% fine |
21:50 |
celeron55 |
maybe lower far_map_far_factor even more |
21:50 |
celeron55 |
i mean |
21:50 |
celeron55 |
what was it called |
21:50 |
celeron55 |
far_map_far_weight |
21:51 |
VanessaE |
http://digitalaudioconcepts.com/vanessa/hobbies/minetest/screenshots/random/Screenshot_2015-11-11_16-50-27.png this farmap area here took 15 seconds to fill in with detailed terrain |
21:51 |
VanessaE |
normally terrain like this would load in a fair fraction of a second at most |
21:52 |
celeron55 |
well if there's a farblock nearby that is closer when the distance is divided by far_map_far_weight than those mapblocks, it will be loaded first |
21:52 |
celeron55 |
is that server running anything laggy? |
21:52 |
VanessaE |
this is vanilla mt_game on singleplayer. |
21:52 |
VanessaE |
fresh map, mgv7 |
21:53 |
celeron55 |
did it have to generate it? |
21:53 |
VanessaE |
yes, but the area you see in the screenshot was generated at least a minute or so before I snapped the shot |
21:56 |
celeron55 |
i guess the farblock loading could make such an emerge queue that it will trigger the generation of multiple mapgen chunks |
21:56 |
celeron55 |
and as it is a queue, nothing will get past it |
21:57 |
celeron55 |
i assume you have far_map_allow_generate set to true |
21:57 |
VanessaE |
ye |
21:57 |
VanessaE |
s |
21:58 |
celeron55 |
it kind of needs to heavily fill up the queue though because otherwise the queue will just run out and things will just idle if the stuff is coming from disk |
21:58 |
celeron55 |
and then you'd get long loading times for no reason |
22:03 |
celeron55 |
i guess that can be solved somehow if it ends up being a problem |
22:04 |
VanessaE |
something of note:" |
22:05 |
VanessaE |
the minimap indicates that distant terrain that has at least farmap blocks is not actually loaded. |
22:06 |
VanessaE |
(if the "detailed" terrain isn't showing, that is) |
22:06 |
VanessaE |
example: http://digitalaudioconcepts.com/vanessa/hobbies/minetest/screenshots/random/Screenshot_2015-11-11_17-05-36.png |
22:08 |
* VanessaE |
tries something.. |
22:08 |
celeron55 |
yeah the minimap doesn't know anything about the farmap |
22:09 |
celeron55 |
the data is probably reasonably easy to pass there assuming the minimap is fast enough to process all that |
22:10 |
celeron55 |
but maybe it needs a new interface for pushing low-resolution data into it so that it doesn't need to be upscaled first 8) |
22:10 |
VanessaE |
something = turning block send distance up to 25 and adding the two "simultaneous block sends" params I use with my servers. no effect though. |
22:12 |
celeron55 |
the server only sends the distance that the client requests, and the client only requests the distance that it renders |
22:13 |
VanessaE |
meanwhile, it's sitting here hammering two cores, but very little is happening on screen |
22:13 |
celeron55 |
it doesn't push unnecessary mapblocks to clients anymore |
22:13 |
VanessaE |
that's good |
22:13 |
celeron55 |
it's probably generating some faraway stuff to be slowly created into farblocks |
22:13 |
celeron55 |
don't expect to see anything in a good while... |
22:14 |
celeron55 |
and expect the map size to go up like crazy |
22:14 |
celeron55 |
that's why there is the setting 8) |
22:16 |
VanessaE |
that would explain it to some degree then. |
22:17 |
VanessaE |
in my current view (after a restart), render distance of 81 at 30 fps; minimap needs 128+ to fill it out. |
22:18 |
celeron55 |
somebody can just implement the farmap-to-minimap thing |
22:18 |
celeron55 |
i have never found the minimap useful or used it nor did i even want it |
22:19 |
celeron55 |
so this is easy to prioritize to me |
22:19 |
VanessaE |
minimap isn't important for this |
22:19 |
VanessaE |
that's just something I noticed. |
22:21 |
VanessaE |
interesting thing about that texture coordinate glitch is that it's consistent across restarts. |
22:23 |
celeron55 |
it seems to me |
22:28 |
VanessaE |
ok 9 minutes after a restart, without moving or changing yaw, it's still hitting 2 cores solid |
22:29 |
VanessaE |
overlooking terrain that's long since been generated |
22:29 |
VanessaE |
though every so often I see something appear in the distance |
22:29 |
VanessaE |
something new* |
22:29 |
VanessaE |
(like once a minute or so) |
22:31 |
VanessaE |
bbl |
22:33 |
celeron55 |
i pushed some profiler additions to EmergeThread and whatever |
22:33 |
celeron55 |
now some kind of an average queue size is visible there along with some other useful stats |
22:34 |
celeron55 |
i found a quite magical place in nodetopia+mgv7 |
22:34 |
celeron55 |
it's a tower of floating islands on top of a thick large forest which grows on the surface of a lake |
22:34 |
celeron55 |
this is some intense stuff |
22:35 |
celeron55 |
http://i.imgur.com/oxSRUlm.jpg |
22:51 |
|
proller joined #minetest-dev |
22:54 |
celeron55 |
hi proller; here is a new screenshot: https://forum.minetest.net/viewtopic.php?p=197801#p197801 |
22:54 |
celeron55 |
8) |
22:54 |
|
who_wants_some joined #minetest-dev |
22:57 |
hmmmm |
lol you're so proud of your farmap thing |
22:57 |
celeron55 |
it's glorious |
22:59 |
celeron55 |
actually what is even more glorious than it itself is how it gives new value to all of these generator things |
23:46 |
|
cib0 joined #minetest-dev |
23:48 |
|
Soni joined #minetest-dev |
23:53 |
|
est31 joined #minetest-dev |