Time |
Nick |
Message |
00:04 |
|
ecube joined #minetest-dev |
00:07 |
|
RealBadAngel joined #minetest-dev |
03:28 |
hmmmm |
celeron55, can you explain to me what exactly happens when a block is marked as underground? |
03:30 |
hmmmm |
all i can actually see is that it's used in Map::isNodeUnderground() and it's marked as underground in a diagnostic string description of a block |
03:30 |
hmmmm |
like, other than that, is it totally useless...? |
03:47 |
hmmmm |
I don't understand why you need to emerge the neighbors of what's being generated either |
03:55 |
hmmmm |
why is m_map->emergeBlock(obj->m_static_block) called without allow_generate = false in ServerEnvironment::removeRemovedObjects()? surely an object won't be in a nonexistent block...? or not? I'm thinking of the case where someone has noclip on, and they go into some far off area and the block hasn't been generated yet - you drop an object, such as a pickaxe, it falls, and it gets removed by something |
03:56 |
hmmmm |
now i can get that, but this is being called in the main server thread, no? not the emerge thread where it's supposed to be, so the main thread will be held up by this douche who dropped his pickaxe in the wrong spot and it's being removed |
03:57 |
hmmmm |
I personally think it should be changed to createBlock() |
03:57 |
hmmmm |
do you forsee any undesirable side effects from this? |
04:02 |
hmmmm |
i can't really continue until this is resolved somehow |
04:47 |
VanessaE |
darkrose, thexyz: Can someone push this to upstream? It does look a bit better than what we have now. |
04:47 |
VanessaE |
https://github.com/jordan4ibanez/minetest/commit/37d6c3a2f19854caf6dfeb352cb9f6c50bb52757 |
04:50 |
* VanessaE |
wanders off to bed. |
04:58 |
OldCoder |
VanessaE, good night |
07:01 |
celeron55 |
hmmmm: i am not exactly sure if it is used for something else, but i think this is the main thing: |
07:01 |
celeron55 |
can you think of how the game can figure out from where the sunlight comes from? |
07:03 |
celeron55 |
it does it so that if a block is not underground and there is no generated stuff above it, it assumes sunlight is coming from the top of it; otherwise it is not |
07:03 |
celeron55 |
that may be a bit obscured or not used currently because it generates so large areas at a time; i am not exactly sure |
07:04 |
celeron55 |
hmmmm: you need to get the neighbors because parts of trees and things like that need to be able to be placed on them |
07:04 |
hmmmm |
?!? |
07:05 |
hmmmm |
are you sure about that? from what i'm reading, you just scan downward until you find a node which has sunlight_propogates = false |
07:05 |
celeron55 |
i can't remember that much about what the code currently does; i just know the ideas behind the stuff |
07:08 |
hmmmm |
indeed, it has nothing to do with isNodeUnderground |
07:08 |
celeron55 |
there are probably three or more sunlight-related algorithms for different situations (node placed, mapblock generated, miscellaneous area generated; or something alike) |
07:11 |
hmmmm |
if it's not too slow, i'd eventually like to have the sun at an angle (maybe like 8 directions total?) instead of directly above |
07:11 |
hmmmm |
but, later |
07:12 |
celeron55 |
it's probably possible; just statically offset the lookup of "above" every 8 nodes in the y direction |
07:13 |
celeron55 |
or whatever |
07:13 |
celeron55 |
ah, you meant to calculate 8 different lighting values? |
07:13 |
hmmmm |
no |
07:13 |
hmmmm |
what you said first was what i had in mind |
07:13 |
celeron55 |
ok; it's worth a try |
07:14 |
hmmmm |
but i mean the two ideas could be combined |
07:14 |
hmmmm |
any thoughts on this? [22:47] <hmmmm> I don't understand why you need to emerge the neighbors of what's being generated either |
07:14 |
celeron55 |
i answered that already |
07:15 |
hmmmm |
oh |
07:15 |
hmmmm |
didn't see that |
07:15 |
hmmmm |
if the tree placement and what not gets put in lua, you know SOMEBODY is going to make a tree larger than 16 blocks in some direction though |
07:15 |
hmmmm |
which might break things |
07:16 |
celeron55 |
minecraft has it's own way of making that happen: it generates only a single "mapblock" at a time, but generates caves and trees and things like that in a larger area around it to make sure everything that might end up in it gets put in it |
07:16 |
celeron55 |
and discards the leftovers |
07:17 |
hmmmm |
uber inefficient |
07:17 |
celeron55 |
maybe; maybe not; depends on the details |
07:17 |
hmmmm |
the cave generation algorithm i still don't entirely understand... the bottom line is that it's probably really slow and it's probably going to stay that way for some time |
07:18 |
hmmmm |
i like the current caves anyway |
07:19 |
celeron55 |
optimizing generation for speed only is not wise in the long run; the priority should be on the output of it |
07:21 |
celeron55 |
people don't care if they get 10000000000 boring nodes per second; they care if they get whatever amount of awesome stuff at almost whatever speed |
07:21 |
hmmmm |
it's awesome to have both, though. :) |
07:22 |
celeron55 |
but if it's either or, then it must be the "not speed" one |
07:22 |
hmmmm |
i'll agree with that |
07:23 |
hmmmm |
now what do you think about emergeBlock being called with allow_generate = false? |
07:23 |
hmmmm |
there are only two instances of that being used, both in environment.cpp |
07:23 |
hmmmm |
i'd like to really get rid of any non-emerge-thread map generations for various reasons |
07:24 |
hmmmm |
er, allow_generate = true* |
07:24 |
celeron55 |
the same thing is done by the map generator/loader thread too, and it is invoked in more places afaik |
07:24 |
celeron55 |
it doesn't use emergeBlock |
07:25 |
celeron55 |
umm... |
07:26 |
hmmmm |
the thing is i don't know where i'd plop the mapgen object for emergeBlock generation calls |
07:26 |
hmmmm |
i intended for each emerge thread to have one mapgen object |
07:27 |
celeron55 |
i see more than two instances of it being used with and with no allow_generate in environment.cpp |
07:28 |
celeron55 |
and what is the problem with allow_generate=false compared to ture? |
07:28 |
celeron55 |
true* |
07:28 |
hmmmm |
lines 1275, 1518, 1768 |
07:28 |
hmmmm |
yea i missed one |
07:28 |
hmmmm |
and there's one with it explicitly true in server.cpp |
07:29 |
hmmmm |
....which is in findSpawnPos |
07:29 |
celeron55 |
^ answer the question |
07:29 |
hmmmm |
[02:26] <hmmmm> the thing is i don't know where i'd plop the mapgen object for emergeBlock generation calls |
07:29 |
celeron55 |
so it applies to false and true? |
07:29 |
hmmmm |
just true, because that's the only case where it'd be using the mapgen |
07:31 |
celeron55 |
i think all cases could work so that if the block isn't generated, they'd ask for the generation and come back polling for it later until it is |
07:31 |
hmmmm |
ekh |
07:31 |
hmmmm |
i wonder how it'd carry out the polling |
07:32 |
hmmmm |
for example in findSpawnPos the only reason it uses emergeBlock is to ensure that the spawn position actually exists |
07:32 |
celeron55 |
i think all of the places can just cancel what they are doing and automatically come back to try again, as they currently are |
07:32 |
hmmmm |
but with the new mapgen setup i'd just add that block to the emerge queue |
07:32 |
celeron55 |
findSpawnPos can't do that as-is, yes |
07:33 |
celeron55 |
ehm... and ServerEnvironment::addActiveObjectAsStatic is some kind of a mapgen-with-mobs helper |
07:33 |
celeron55 |
...i guess |
07:33 |
hmmmm |
and the other two are removeRemovedObjetcts and deactivateFarObjects apparently |
07:33 |
celeron55 |
but for example ServerEnvironment::removeRemovedObjects can just queue, cancel and come back later |
07:33 |
hmmmm |
right |
07:33 |
hmmmm |
now why can't i just use createBlock for that? |
07:34 |
hmmmm |
that particular one |
07:34 |
celeron55 |
maybe |
07:35 |
hmmmm |
i was saying before that it tries to emerge m_static_block, which is "the block frmo which the object was loaded from, and in which a copy of the static data resides" |
07:35 |
celeron55 |
i don't see why that couldn't be done |
07:35 |
hmmmm |
so if it didn't exist, then... |
07:35 |
hmmmm |
basically |
07:35 |
hmmmm |
is there something like createBlock except it'll fail if it's not in memory and not on disk? |
07:36 |
celeron55 |
emergeBlock with allow_generate=false? |
07:36 |
celeron55 |
dunno |
07:36 |
hmmmm |
oh that's true |
07:36 |
hmmmm |
hah |
07:37 |
hmmmm |
yeah, so i'll just add ", false" there, and that should do the trick |
07:37 |
hmmmm |
and there are the two remaining which will poll like you said |
07:38 |
celeron55 |
it could be useful to have a working system for creating blocks without generating the node data, and have it work properly (leaving everything else in it intact) when it finally is generated |
07:39 |
celeron55 |
including non-generator node data |
07:39 |
celeron55 |
it probably works already though |
07:39 |
celeron55 |
because tree-like thing scurrently need that |
07:39 |
celeron55 |
s<<1 |
07:46 |
hmmmm |
will do |
07:46 |
hmmmm |
but i'll have to do it in a different commit |
07:46 |
hmmmm |
this is already ginormous |
07:47 |
hmmmm |
'night |
08:27 |
|
SpeedProg joined #minetest-dev |
14:11 |
|
PilzAdam joined #minetest-dev |
14:17 |
|
doserj joined #minetest-dev |
14:37 |
RealBadAngel |
hi |
15:02 |
|
hmmmm joined #minetest-dev |
15:37 |
PilzAdam |
Im currently developing a farming mod for upstream |
15:38 |
PilzAdam |
should there be some functions like register_plant() or should I define every growing step by hand? |
15:39 |
celeron55 |
register_plant() sounds like the way to go |
15:39 |
celeron55 |
make it public so other lazy mods can use it |
15:40 |
PilzAdam |
i already have some test code for this: https://github.com/PilzAdam/minetest_game/blob/farming/mods/farming/init.lua |
15:48 |
RealBadAngel |
Hi celeron55 |
15:49 |
RealBadAngel |
what do you think about my modifications to the formspec? |
17:16 |
hmmmm |
i was looking at addActiveObjectAsStatic again, and i've gotta wonder |
17:16 |
hmmmm |
why must the emerge succeed? |
17:17 |
hmmmm |
when would it possibly be valid for a static active object to be added to a nonexistant block? |
17:23 |
|
Calinou joined #minetest-dev |
18:00 |
|
sstrandberg joined #minetest-dev |
18:03 |
hmmmm |
would you say that a definition of all the available biomes belongs in ServerEnvironment? |
18:04 |
PilzAdam |
OldCoder, https://github.com/downloads/PilzAdam/minetest_game/farming.zip |
18:04 |
OldCoder |
Hi |
18:04 |
OldCoder |
Thank you! |
18:04 |
OldCoder |
Working |
18:07 |
PilzAdam |
oops, that was the wrong channel |
18:07 |
OldCoder |
I got it anyway |
18:09 |
celeron55 |
hmmmm: is addActiveObjectAsStatic even called anywhere |
18:09 |
celeron55 |
appears it is not |
18:09 |
hmmmm |
oh |
18:09 |
celeron55 |
throw it in the bin |
18:10 |
hmmmm |
that's true :)! |
18:10 |
hmmmm |
well wait, what does it actually do? what's a "static" object? |
18:11 |
celeron55 |
a static object is an active object that is stored in the non-active state... the state in which they are on disk, and the state in which they are when they are far away from players, to not have the full infinite world active at the same time |
18:12 |
celeron55 |
it is basically a serialized AO |
18:12 |
celeron55 |
stored in the mapblock, not environment |
18:13 |
hmmmm |
hmm, i can't think of any situations where that'd be helpful |
18:13 |
hmmmm |
what were you thinking of at the time when you wrote it? |
18:14 |
celeron55 |
i... think it was used for at least testing the generation of mobs in the mapgen |
18:14 |
celeron55 |
not sure |
18:14 |
celeron55 |
but it's kind of useless for that too |
18:14 |
hmmmm |
i don't think mobs will ever be a part of the engine |
18:14 |
hmmmm |
again |
18:14 |
hmmmm |
alright, to the trash it goes |
18:15 |
PilzAdam |
what are the params active_object_count and *_wider that are passed to abms? |
18:18 |
hmmmm |
active_object_count is the number of objects in that block |
18:18 |
hmmmm |
active_object_count_wider is the total number of objects of that and all the neighbors |
18:19 |
PilzAdam |
thx |
18:19 |
PilzAdam |
there should be a hint in lua-api.txt |
18:20 |
hmmmm |
i think someone was supposed to make a lua api documentation wiki |
18:20 |
hmmmm |
all this crap should be added there |
18:21 |
celeron55 |
well... cornernote had it, and he just quit |
18:21 |
hmmmm |
pft |
18:21 |
celeron55 |
the data has been copied, but we don't have the platforms he used |
18:21 |
celeron55 |
http://api.minetest.net/ currently serves a static copy from thexyz's servers |
18:24 |
celeron55 |
would be quite convenient to just add it now here, but well... http://api.minetest.net/type/view/name/abm.html |
18:25 |
celeron55 |
thexyz: by the way, can you make that one available as a .tar.gz? |
18:31 |
OldCoder |
The API site is back? |
18:35 |
celeron55 |
it's in fact back by cornernote too, but he filled it with the vegan crap he started flooding everywhere 8) |
18:36 |
hmmmm |
why did he quit again? |
18:36 |
PilzAdam |
people sometimes go crazy |
18:36 |
hmmmm |
it seems like it's a little better than it was, but people leave all the time |
18:36 |
hmmmm |
like too often |
18:36 |
celeron55 |
he was burned out and trolled out and got finally completely pissed off when thexyz kicked him |
18:37 |
hmmmm |
this is basically the only minecraft clone project that's worth a shit |
18:37 |
hmmmm |
i don't know where else he'd go to |
18:37 |
PilzAdam |
RL? |
18:38 |
hmmmm |
RL is overrated |
18:38 |
PilzAdam |
+1 |
18:38 |
celeron55 |
i hope he first takes a break and then re-figures out his time management so he can possibly focus on something without going crazy |
18:39 |
hmmmm |
i actually have a huge project due on the 17th for school but i'm procrastinating with minetest |
18:39 |
celeron55 |
i seriously hope people don't screw up their lives because of minetest |
18:39 |
celeron55 |
it's not worth it 8D |
18:40 |
PilzAdam |
btw: if someone is interested in the farming mod I currently develop for upstream: https://github.com/PilzAdam/minetest_game/tree/farming/mods/farming |
18:40 |
hmmmm |
nah if it weren't this it'd be some other video game |
18:57 |
OldCoder |
celeron55, MT probably is not the leading cause of cancer :p |
18:57 |
OldCoder |
If anything it is a stress reducer |
18:58 |
OldCoder |
Except for those who must keep it working O_o |
18:58 |
OldCoder |
:-) |
18:58 |
OldCoder |
Calinou, tell me true // if you // can connect |
18:58 |
Calinou |
nope |
18:58 |
OldCoder |
PilzAdam, I will update farmingminus in a bit |
18:58 |
OldCoder |
Calinou, Hmm?! |
18:58 |
OldCoder |
I will connect myself, then |
18:59 |
Calinou |
europe.minetest.org port 30010 |
18:59 |
OldCoder |
No! |
18:59 |
OldCoder |
There is only 30000 |
18:59 |
OldCoder |
That is a separate VPS |
18:59 |
OldCoder |
No connect to the first dozen or so worlds |
18:59 |
OldCoder |
The entire point is that that VPS is in Europe |
18:59 |
OldCoder |
For our Europe friends |
19:00 |
hmmmm |
ermm let's not get too carried away with the off-topic conversation, okay? |
19:00 |
Calinou |
ok |
19:00 |
OldCoder |
I may have other Europe VPS lined up |
19:00 |
celeron55 |
OldCoder: you're on #minetest-dev |
19:00 |
OldCoder |
celeron55, yes? |
19:00 |
OldCoder |
If that is not core dev |
19:00 |
OldCoder |
I was simply answering his question |
19:00 |
celeron55 |
that discussion started in #minetest |
19:00 |
OldCoder |
Hmm? |
19:00 |
OldCoder |
I am confused; one moment |
19:01 |
OldCoder |
I have lost track of things celeron55 and am needed elsewhere regardless. If the load is slow on with the show it is regrettable. |
19:01 |
* OldCoder |
will return |
19:02 |
celeron55 |
to put it more simply: talk about your servers on #minetest, because this is simply not meant for those, especially as there is other discussion in here tonight |
19:02 |
OldCoder |
<PilzAdam> OldCoder, https://github.com/downloads/PilzAdam/minetest_game/farming.zip |
19:02 |
OldCoder |
celeron55, I am very very literal |
19:02 |
OldCoder |
I regret this but it is true |
19:03 |
OldCoder |
If somebody addresses me I do answer |
19:03 |
OldCoder |
Your own remarks are not entirely on-topic as well; but of course as the head it is your privilege |
19:03 |
celeron55 |
but calinou asked you on #minetest, not here |
19:03 |
OldCoder |
That quote is from right here |
19:03 |
OldCoder |
One hour ago exactly |
19:04 |
OldCoder |
I will add, Sir, that some of my server issues are core dev issues as they are about testing core chanegs |
19:04 |
OldCoder |
*changes |
19:04 |
celeron55 |
ummmmmm |
19:04 |
OldCoder |
Farming is not the case for that |
19:05 |
OldCoder |
But for farming I was answering here |
19:05 |
OldCoder |
A question that was asked here |
19:05 |
hmmmm |
what the hell |
19:05 |
OldCoder |
Hmpph. |
19:05 |
OldCoder |
|
19:05 |
celeron55 |
i don't understand; you haven't replied anything to that line of PilzAdam |
19:05 |
hmmmm |
just don't talk about it any more |
19:05 |
OldCoder |
I am confused; which line? |
19:05 |
celeron55 |
ah, you did, but immediately after it |
19:05 |
celeron55 |
i didn't mean those when i asked you to move to #minetest |
19:05 |
celeron55 |
i meant the stuff you talked about with calinou |
19:06 |
OldCoder |
Looking up, that appears to be an honest mistake. I am in about 30 channels ATM. |
19:06 |
OldCoder |
It is not as you characterized it. I have no intent to be argumentative. |
19:06 |
OldCoder |
More than 30 it appears. I have no idea how you more experienced IRC people do this. |
19:07 |
OldCoder |
celeron55, mistakes are going to be made. I feel there is no need to emphasize the issue. |
19:07 |
PilzAdam |
OldCoder, just stop talking in -dev |
19:07 |
celeron55 |
OldCoder: i am not trying to emphasize it, but rather i haven't yet really seen you understand what i said |
19:07 |
OldCoder |
As you wish, Mr. Adam. celeron55 please ban me from this channel. |
19:07 |
celeron55 |
apparently you did understand it then |
19:08 |
OldCoder |
Will you do as I ask? |
19:08 |
OldCoder |
Ban now, please |
19:08 |
celeron55 |
wtf |
19:08 |
OldCoder |
There is no need for a kick |
19:08 |
celeron55 |
i have no reason to ban you |
19:08 |
OldCoder |
I am exitinhg |
19:08 |
PilzAdam |
cornernote? |
19:08 |
OldCoder |
Hmm? |
19:08 |
OldCoder |
Nothing to do with him |
19:08 |
OldCoder |
Though I see something of his point of view |
19:08 |
celeron55 |
this doesn't make any sense |
19:08 |
OldCoder |
<PilzAdam> OldCoder, just stop talking in -dev |
19:08 |
OldCoder |
Honestly, Pilz, was that necessary? |
19:08 |
|
OldCoder left #minetest-dev |
19:09 |
celeron55 |
http://weknowmemes.com/wp-content/uploads/2012/04/what-the-fuck-man.jpg |
19:09 |
celeron55 |
i'm actually laughing here, this has become hilarious |
19:10 |
celeron55 |
i'm fucking glad i have zero money or anything involved in this :------D |
19:12 |
celeron55 |
oh, anyway; back to figuring whether i can whip up a quick fix for the bad bandwidth throttling |
19:13 |
celeron55 |
hmmmm: i assume you are making some kind of both-hands-and-feet facepalms in there and thus not being able to comment? 8) |
19:14 |
PilzAdam |
... |
19:14 |
hmmmm |
i'm actually watching an episode of the 'minecraft world tour' |
19:14 |
* PilzAdam |
doesnt understand what is going on with people |
19:14 |
hmmmm |
what's wrong with the bandwith throttling? i didn't even know that there was bandwith throttling |
19:15 |
celeron55 |
there has to be if you have the intention of stuffing up miscellaneous blobs of data through UDP |
19:15 |
celeron55 |
as in moving media from the server to the client |
19:16 |
celeron55 |
otherwise you'll just cause most of the packets to be dropped and you've basically failed networking |
19:18 |
celeron55 |
in largeish servers it would make much more sense to use TCP for those, but it'll hurt small-scale hosting and testing and... ehm... well, this is an another case of "it's just not that simple" |
19:19 |
hmmmm |
the original Starcraft has a udp transfer system much like this |
19:19 |
PilzAdam |
would it be possible (in theory) to add a setting in config to switch UPD and IP? |
19:19 |
hmmmm |
i remember transferring maps that were > 500KB being horribly slow |
19:19 |
hmmmm |
pilzadam, sure... if you feel like rewriting the socket class |
19:20 |
hmmmm |
which isn't actually too bad |
19:27 |
celeron55 |
the correct name for what i talked about appears to be congestion control |
19:27 |
PilzAdam |
so we have a name for the topic, now code it ;) |
19:28 |
celeron55 |
it's really a full-blown research field |
19:28 |
hmmmm |
of course |
19:28 |
celeron55 |
which means i'll just whip up something from the top of my head! |
19:29 |
hmmmm |
and if you want congestion control, TCP is where it's at |
19:29 |
hmmmm |
seriously - the OS already has all sorts of great algorithms for congestion control and they're really good |
19:29 |
hmmmm |
the reason to use UDP would be low latency |
19:29 |
celeron55 |
oh well; we could use udp and tcp on the same port |
19:29 |
hmmmm |
which i can see latency being really bad for FPSes and and racing games or whatever |
19:30 |
hmmmm |
but this game... not as much |
19:30 |
hmmmm |
right, and like you and pilzadam said, you can easily have both. i suggest that UDP be used for the regular game commands and a TCP connection is made for bulk transfers |
19:31 |
hmmmm |
i think a lot of games do that as well |
19:31 |
PilzAdam |
so you have to tell all the n00bs that they have to forward both, TCP and UDP |
19:31 |
PilzAdam |
*port forward |
19:32 |
celeron55 |
i find it somewhat useful, because there are some things that are updated very often and that are not that important to reliably go through (positions of entities and players, or whatever), and if you do that over tcp, you can get stupid hiccups because they didn't get through and tcp ends up re-sending them |
19:33 |
celeron55 |
packet loss is a real thing on the internet, in any case |
19:34 |
hmmmm |
unrelated but |
19:34 |
hmmmm |
what's up with the naming scheme for things that are in gamedef? |
19:35 |
celeron55 |
how so? |
19:35 |
hmmmm |
what do you mean by "SomethingDef" |
19:35 |
hmmmm |
'definition'? |
19:35 |
celeron55 |
yes |
19:36 |
celeron55 |
it's a very common abbreviation almost everywhere in the source |
19:37 |
hmmmm |
ahh yes, because whatever derived class that uses that interface is "defined" by that interface |
19:37 |
hmmmm |
? |
19:37 |
celeron55 |
well... GameDef basically defines what the game is |
19:38 |
celeron55 |
or, well, everything apart from the mechanisms that the engine does |
19:38 |
celeron55 |
then there are some odd-but-per-game things like the sound and event thingies on the client |
19:39 |
celeron55 |
because the pointers are so conveniently transferred in it |
19:39 |
PilzAdam |
has anyone anything against this? https://github.com/celeron55/minetest_game/pull/26 |
19:40 |
hmmmm |
nah, it's fine |
19:40 |
PilzAdam |
(except that the commit is gramaticaly nonsense) |
19:40 |
hmmmm |
consistency is better than grammar i say |
19:40 |
PilzAdam |
(there is a missing "of") |
19:40 |
PilzAdam |
k |
19:42 |
celeron55 |
there are two things that PilzAdam could have meant with "gramaticaly nonsense" 8) |
19:43 |
celeron55 |
and i think hmmmm understood it the other way than PilzAdam meant |
19:43 |
hmmmm |
right, bucket being capitalized in that context, and the commit message |
19:43 |
hmmmm |
i realized what he ment after i pressed the enter key |
19:43 |
hmmmm |
doesn't matter though |
19:43 |
PilzAdam |
well, actualy i mean there has to be an "of" in front of bucket (in the commit message) |
19:46 |
celeron55 |
i think i'll try how much of effort it is to make minetest set up a TCP connection in addition to the UDP one (well, technically it isn't a connection at UDP level, but minetest makes it be) |
19:47 |
celeron55 |
this has to be made transparent to the upper layers, because i am lazy |
19:47 |
PilzAdam |
in my farming mod I use textures were I cant remember were i got them from; but they are WTFPL iirc |
19:47 |
celeron55 |
happily there is already enough abstraction to do it transparently :-D |
19:47 |
hmmmm |
make a base ISocket class, have UDPSocket a derived class from that, then make another derived class for TCP that's literally just a wrapper for the standard TCP functions |
19:47 |
PilzAdam |
can I use them if i want it to be upstream? |
19:47 |
hmmmm |
should take like an hour tops |
19:47 |
celeron55 |
ehm |
19:48 |
celeron55 |
hmmmm: there is no benefit from making a common interface to them though |
19:49 |
celeron55 |
they are both handled specially |
19:49 |
hmmmm |
yeah i guess you're right |
19:49 |
celeron55 |
and because minetest is built to use UDP, there is no thing called "connection" at the socket level; it is at the upper level from it |
19:50 |
celeron55 |
but whatever; it'll turn out somehow |
19:50 |
hmmmm |
oh ew, i need to add epoll() and kqueue() for WaitData |
19:51 |
hmmmm |
select is ancient technology from the 1970s |
19:51 |
celeron55 |
you need to make it work on windows in addition to posixy things |
19:52 |
hmmmm |
simple, fall back to select where no alternative is available |
19:53 |
celeron55 |
oh god this Connection class had these funny naming things... |
19:54 |
celeron55 |
i don't want to touch this :D |
19:56 |
celeron55 |
there's two generations of interfaces put in one class, and the naming of some public thread-safe things as compared to some internal things differ only in capitalization of first letter, and the public interface has the different convention than minetest mostly has... |
20:00 |
hmmmm |
hmmmmmm...? http://codepad.org/GUbhC4mI <--- is this not really needed any longer? |
20:01 |
hmmmm |
(well, i don't intend on removing it, just wondering if in theory that wouldn't be necessary) |
20:02 |
celeron55 |
i don't know; i suspect the problem still exists |
20:03 |
hmmmm |
if that still exists but there are no static objects being added, i think that'd classify as map corruption |
20:06 |
hmmmm |
hrmm, how am i going to poll to see if the block is created or not in deactivateFarObjects, exactly? |
20:06 |
hmmmm |
i am _not_ blocking in the main server thread - hell no. |
20:08 |
hmmmm |
looking at what calls it, i guess it's alright to block in ~ServerEnvironment() since it's shutting down, but in ServerEnvironment::step, i think i can just return with no ill consequences |
20:09 |
hmmmm |
i would rather let the caller know if i had actually completed deactivating far objects though so i'll have it return true or false if it did |
20:09 |
hmmmm |
and of course if force_delete = true, it'll always succeed (return true) |
20:11 |
hmmmm |
it seems like i'm going to have to make that "emerge blank block" function now |
20:13 |
hmmmm |
okay nevermind any of that crap |
20:15 |
hmmmm |
here's what i'm going to do: change emergeThread to: get from memory, load from disk, and if not existing, create a blank MapBlock with a "needs generating" flag set |
20:16 |
hmmmm |
then if the emergeThread loads a mapblock from disk with "needs generating" set, it'll send it to the mapgen |
20:48 |
celeron55 |
gotta hate these stupid header dependencies |
20:48 |
celeron55 |
modifying connection.h causes like everything to be rebuilt |
20:50 |
celeron55 |
well, 17 files out of almost 100... i guess that's reasonable |
20:54 |
hmmmm |
speaking of modifying the map format... what do you say to me adding a noiseparams field along with a seed and other metadata |
20:54 |
hmmmm |
or would you like me to include those things in the same text file where the seed is |
20:57 |
celeron55 |
noiseparams field... to what? |
20:57 |
hmmmm |
the map database itself |
20:57 |
hmmmm |
instead of the map database containing only blocks, why can't it contain metadata as well? |
20:58 |
hmmmm |
oh that's what you're asking... noiseparams fields of the terrain, biomes, humidity, temperature, etc. |
20:58 |
celeron55 |
because it's there to only hold blocks; there is for example the leveldb implementation being developed somewhere |
20:58 |
hmmmm |
if this mapgen is going to be modifiable i need to store it so that it stays consistent between people changing those parameters |
20:59 |
hmmmm |
if someone modifies their mapgen parameters, that is |
21:00 |
celeron55 |
(i wonder how hell of a job integrating this https://github.com/minetest/minetest/commits/db_backends to your stuff might be) |
21:01 |
hmmmm |
that? not a problem at all |
21:02 |
hmmmm |
so it's settled, i'll store the metadata in map_meta.txt |
21:05 |
hmmmm |
and for the mapblock thing, i don't even need to add a flag, i can just use a so-called 'dummy' block |
21:12 |
|
Bad_Command joined #minetest-dev |
21:12 |
|
Bad_Command joined #minetest-dev |
21:13 |
hmmmm |
well... THERE was a bug waiting to happen. if you tried to serialize a dummy block, it's segfault |
21:14 |
hmmmm |
MapBlock::serialize, it tries to copy over the mapnodes without checking if data == NULL first |
21:14 |
hmmmm |
so i'm going to add something like if (isDummy()) flags |= 0x10; after all |
21:51 |
|
nyuszika7h joined #minetest-dev |
22:34 |
|
sstrandberg joined #minetest-dev |
23:07 |
celeron55 |
lol i should sleep but i can't go now |
23:07 |
celeron55 |
SOCKETS, SOCKETS EVERYWHERE |
23:08 |
celeron55 |
lol minetest serves HTTP now :-----D |