Time |
Nick |
Message |
00:00 |
hmmmm |
well I guess that's just reversing it |
00:00 |
hmmmm |
but it'd unify the interface i believe |
00:00 |
hmmmm |
because right now the game loop needs to know about every event producer, and every event producer has to maintain their own event queue |
00:02 |
VanessaE |
having a single unified event queue would make more sense to me. |
00:05 |
hmmmm |
wow |
00:05 |
VanessaE |
? |
00:05 |
hmmmm |
the more i think about this, the more we can theoretically remove envlock from scripts =] |
00:05 |
VanessaE |
uh oh. |
00:05 |
hmmmm |
the more I realize* |
00:06 |
VanessaE |
est31: batten down the hatches. hmmmm is getting ideas again :) |
00:06 |
est31 |
lol |
00:07 |
* sofar |
handwaves a multi-threaded server |
00:08 |
hmmmm |
well |
00:08 |
hmmmm |
not so fast |
00:08 |
hmmmm |
this has major implications to the design of mapgens |
00:08 |
sofar |
can't mapgen be parallelized? |
00:08 |
est31 |
isnt it? |
00:09 |
hmmmm |
also i have many other things to work on :/ |
00:09 |
hmmmm |
I don't know what to do first |
00:09 |
sofar |
Given the slow speed, and my 11 cores sitting idle, I doubt it is |
00:09 |
VanessaE |
hmmmm: what's your TODO list so far? |
00:09 |
hmmmm |
hahahahaha |
00:09 |
hmmmm |
you really wanna know |
00:09 |
VanessaE |
sure, what the hell :) |
00:09 |
sofar |
VanessaE: his SO? |
00:10 |
VanessaE |
sofar: well of course his SO is on his TODO list, but I'd figure that's a perpetual entry :P |
00:11 |
VanessaE |
hmmmm: what I was really saying was, maybe just go after whatever's easiest at this point, or let one of us pick it for you if you're brave >:-) |
00:11 |
est31 |
I'd like to add better authentication and encryption support from the protocol side (where currently only nothing is encrypted yet, only that the server can send the key in the init packet) in one step, but I'm not sure whether others want it too. |
00:12 |
hmmmm |
http://fpaste.org/207442/82791341/ |
00:13 |
sofar |
nice list |
00:13 |
VanessaE |
est31: it's my understanding that other modern games dispense with the whole username/password thing entirely, aiming for just in-game name with some kind of server-generated crypto key for ident. |
00:13 |
hmmmm |
and then |
00:13 |
hmmmm |
client side modding |
00:13 |
hmmmm |
mapgen v8 |
00:13 |
hmmmm |
and now this ^_^ woot |
00:13 |
hmmmm |
minetest can easily be a full time job |
00:14 |
VanessaE |
hmmmm: "OGL lightmaps" <--- as in multi colors? |
00:14 |
hmmmm |
yeah |
00:14 |
hmmmm |
oh yeah also! |
00:14 |
hmmmm |
fix transparency Z-sorting |
00:14 |
VanessaE |
oh G*d yeah |
00:15 |
hmmmm |
that requires a lot of coding |
00:15 |
VanessaE |
if I had to pick from that pasted list + these last few things, honestly it would be z-sorting and lights roughly equally. |
00:15 |
VanessaE |
howEVER... |
00:16 |
hmmmm |
lol |
00:16 |
VanessaE |
"implement DecoLSystem" looks like it might amoung the low-hanging-fruit category |
00:16 |
hmmmm |
actually not quite |
00:16 |
hmmmm |
a prerequisite to that is fix the horror known as treegen.cpp |
00:16 |
VanessaE |
heh |
00:17 |
VanessaE |
well I meant since code already exists to generate the trees, and to place the spawner objects, all that's needed is some glue to turn one into the other (instead of the usual ABMs) |
00:17 |
|
paramat joined #minetest-dev |
00:17 |
|
cvtsx1 joined #minetest-dev |
00:17 |
hmmmm |
i'd rather do things right |
00:17 |
VanessaE |
I know. |
00:18 |
hmmmm |
this list makes me want to drink |
00:18 |
VanessaE |
heh |
00:24 |
|
Taoki joined #minetest-dev |
00:25 |
|
est joined #minetest-dev |
00:25 |
paramat |
i added water and lava to this PR and will push soon game#484 |
00:25 |
ShadowBot |
https://github.com/minetest/minetest_game/issues/484 -- Default/nodes: Make water, lava and ice is_ground_content = false by paramat |
00:31 |
VanessaE |
hmmmm: btw, |
00:31 |
VanessaE |
there is something new to add to your TODO, and I have no fucking idea how it could be solved :P |
00:31 |
hmmmm |
thanks |
00:32 |
paramat |
lol |
00:32 |
VanessaE |
today while I was worldediting some land that was already flat, I kept running into parts of the air above the region that was not already loaded, or which kept getting UNloaded after some time (it was a huge area). long story short: black shadows on my work space at the bottom of the stack. |
00:33 |
VanessaE |
(worldediting e.g just some routine stuff on the top layer of the work area) |
00:33 |
VanessaE |
the sunlight propagating code was tripping me up. |
00:37 |
paramat |
that might be related to the black shadows sometimes i get when growing large numbers of tree saplings, that code also uses non-mapgen voxelmanip and update_map |
00:37 |
hmmmm |
that has nothing to do with my sunlight propogation code |
00:37 |
hmmmm |
that's all Map::updateLighting |
00:37 |
hmmmm |
blame it on celeron |
00:38 |
VanessaE |
oh? |
00:38 |
VanessaE |
wait, mine or paramat's? |
00:38 |
paramat |
perhaps both |
00:38 |
paramat |
worldedit uses update_map |
00:40 |
paramat |
now pushing to game.. |
00:40 |
VanessaE |
I assumed it was the sunlight propagation code because I could fix the shadows extending my selection to include a much taller area than I was otherwise working on, say 5-10 mapblocks higher, and then just doing, //replace air air |
00:46 |
paramat |
done |
00:47 |
|
Zeno` joined #minetest-dev |
00:49 |
hmmmm |
hmrm |
00:49 |
hmmmm |
ShadowNinja, the mailing list password doesn't work for the Administrator Authentication |
00:49 |
hmmmm |
it wants my mail to be moderator approved first |
00:50 |
est |
hi Zeno`! |
00:50 |
est |
do you feel better? |
00:50 |
hmmmm |
er nevermind |
00:51 |
hmmmm |
http://lists.minetest.net/archives/minetest-dev/2015-April/000001.html |
00:51 |
hmmmm |
=] |
00:51 |
est |
http://pastie.org/10075588 |
00:51 |
est |
^ what I think auth protocol should look like |
00:51 |
hmmmm |
est: post it to the mailing list |
00:51 |
hmmmm |
not here |
00:52 |
paramat |
lots of testys =) |
00:52 |
hmmmm |
it's like "heeeere kitty kitty kitty" |
00:53 |
hmmmm |
"heeeere minetesty-testy-testy" |
00:53 |
Zeno` |
est, hi. Getting there. complications with flu == bronchitis == feel crap |
00:53 |
hmmmm |
that sucks man |
00:53 |
est |
:( |
00:53 |
Zeno` |
kinda ruined easter weekend but feeling better now so life moves on :) |
00:53 |
est |
bronchitis is pretty bad |
00:54 |
hmmmm |
hey Zeno`, don't feel bad, the whole weekend I had to struggle with getting gcc to work on FreeBSD |
00:54 |
hmmmm |
and i ultimately was defeated |
00:56 |
Zeno` |
really? |
00:56 |
Zeno` |
Last time I used freebsd gcc was a breeze; that's pretty weird |
00:57 |
Zeno` |
although it has been 2 years since fbsd |
00:57 |
hmmmm |
http://stackoverflow.com/questions/29461123/segfault-on-startup-of-application-compiled-with-g49-on-freebsd-10-x |
00:57 |
hmmmm |
I never post on forums |
00:57 |
hmmmm |
this is my first time I had ever posted on a forum like this |
00:57 |
hmmmm |
that's how desperatei am |
00:58 |
Zeno` |
different ABI? |
00:58 |
Zeno` |
64 vs. 32? |
00:58 |
hmmmm |
clang and gcc should have a compatible abi |
00:59 |
hmmmm |
the only real guess is that there's some problem with libcxxrt.so being used in place of libsupc++.so but that's BS because all the addresses in the backtrace happen inside of libstdc++ |
00:59 |
Zeno` |
hope you get an answer |
00:59 |
hmmmm |
=] |
00:59 |
Zeno` |
that seems pretty wrong |
01:00 |
hmmmm |
now I remember why I wanted to switch to Linux |
01:00 |
est |
so its sent |
01:01 |
Zeno` |
Ok with me changing client.cpp line 1711 to strftime(timetstamp_c, sizeof(timetstamp_c), "%Y%m%d_%H%M%S", tm); ? |
01:01 |
hmmmm |
sure why not |
01:01 |
Zeno` |
to fix the high priority bug #2603 |
01:01 |
ShadowBot |
https://github.com/minetest/minetest/issues/2603 -- Crash caused by taking a screenshot |
01:01 |
est |
so no serials anymore? |
01:02 |
Zeno` |
the serial is added after that |
01:02 |
Zeno` |
(and only if necessary) |
01:02 |
est |
ok then |
01:02 |
Zeno` |
phew, I'm glad to close this one and avert disaster |
01:02 |
est |
lol |
01:03 |
est |
yea perhaps a bit too exagerated... |
01:03 |
Zeno` |
It *is* a bit strange that it crashed though |
01:04 |
est |
hmmmm, can you approve my email, or do I simply have to wait now? |
01:05 |
hmmmm |
no idea |
01:05 |
hmmmm |
There are no pending requests. Click here to reload this page. |
01:06 |
est |
perhaps it doesnt like because I havent set a subject |
01:06 |
hmmmm |
well, try that |
01:06 |
Zeno` |
approve your email? |
01:06 |
Zeno` |
I sent an email to my mum this morning without approval :( |
01:07 |
hmmmm |
aha now i got it |
01:08 |
Zeno` |
you got the email I sent my mum? |
01:08 |
Zeno` |
you... are my mum? |
01:08 |
est |
haha "modern" |
01:08 |
Zeno` |
lol, sorry... must be the medicine |
01:08 |
hmmmm |
you are being 1 cheeky kunt m8, i sware i am going 2 wreck you, i sware on me mum |
01:09 |
VanessaE |
hmmmm: ow. that hurt to read. |
01:09 |
hmmmm |
"i sware on me mum" is a meme lol |
01:10 |
hmmmm |
read it with an scottish accent |
01:10 |
* Zeno` |
goes to the pet shop to buy a scotch terrier so he can get it to read the comment aloud |
01:11 |
hmmmm |
http://lists.minetest.net/archives/minetest-dev/2015-April/000002.html |
01:11 |
hmmmm |
:D |
01:11 |
hmmmm |
we have mailing list liftoff |
01:11 |
est |
fine |
01:11 |
VanessaE |
hmmmm: actually I can'y help but read that with a british accent :) |
01:11 |
VanessaE |
can't* |
01:12 |
Zeno` |
is this one of those mailing lists that reminds me of my password once a month? |
01:12 |
hmmmm |
nope |
01:12 |
est |
I think yes |
01:12 |
Zeno` |
the stupid freetype mailing listed reminds me of my password :/ |
01:12 |
Zeno` |
list* |
01:12 |
hmmmm |
it's going to get disabled if it does |
01:13 |
Zeno` |
there was once a guy who replied to the reminder telling them to stop that shit (which had his email in it of course) and of course it went to the entire list |
01:13 |
Zeno` |
email and password in it |
01:13 |
est |
http://pastie.org/10075614 |
01:13 |
est |
this is the welcome email |
01:14 |
hmmmm |
lol |
01:14 |
est |
and no dont try, I have replaced the password |
01:14 |
hmmmm |
yes, disable it |
01:14 |
hmmmm |
we prefer |
01:14 |
hmmmm |
@ ShadowNinja reminder to disable monthly password resets |
01:15 |
hmmmm |
i bash ye fookin head in |
01:16 |
* paramat |
wonders when #2501 will be attended to, considers bisecting |
01:16 |
ShadowBot |
https://github.com/minetest/minetest/issues/2501 -- creative & damage disabled: tnt deals damage and kils player |
01:16 |
paramat |
lol hmmmmm you sound so british |
01:17 |
Zeno` |
jolly good show; I'll sign up when I'm sure it doesn't store my password plain text and remind me of it every so often |
01:18 |
est |
just use a random string for the password |
01:19 |
est |
then wait for the remainder |
01:19 |
Zeno` |
haha |
01:19 |
Zeno` |
goo show! |
01:19 |
Zeno` |
goo goo |
01:20 |
Zeno` |
I think I've subscribed |
01:20 |
Zeno` |
I see a picture of RMS... wait, that's a GNU |
01:22 |
Zeno` |
est, https://github.com/minetest/minetest/commit/ed3ebd633d23184c65128fae72f2b6c10c932e73#commitcomment-10577203 |
01:22 |
ShadowNinja |
est: It should be whitelisted now, but everything not whitelisted is greylisted. There's a default whitelist that includes a lot of domains, but not yandex. |
01:22 |
est |
ok |
01:22 |
ShadowNinja |
hmmmm: It should just be a monthly reminder. |
01:22 |
Zeno` |
est, nerzhul put the return in the wrong place |
01:23 |
est |
why |
01:23 |
est |
is clang still not happy? |
01:23 |
Zeno` |
ShadowNinja, but those monthly reminders send your passwords as plain text? so they're stored plain text? |
01:23 |
Zeno` |
est, style |
01:23 |
hmmmm |
that's not dangerous or anything, naw |
01:23 |
Zeno` |
clang would be happy if the return was at the end of the function where it should be |
01:23 |
ShadowNinja |
Zeno`: Yep. I know, bad security. It does warn you about that though. |
01:24 |
paramat |
also 'override day nght ratio' is broken, seems to be related to network commits, another one to bisect |
01:24 |
hmmmm |
the asserts() get removed when compiled for release, so in the case where it did get an illegal hash type, it'd return randomish junk |
01:24 |
Zeno` |
ShadowNinja, well I'm glad it will remind me really because I've forgotten what I used already lol |
01:25 |
est |
they do get removed?? |
01:25 |
est |
I have thought minetest has custom asserts that dont |
01:25 |
Zeno` |
hmmmm, nah, it'd drop through to the end of the function which *should* be return 0; |
01:25 |
est |
Zeno` has said something along those lines |
01:25 |
Zeno` |
est, no, asserts go away in release builds |
01:25 |
Zeno` |
man assert <--- that is how it behaves (and how it should always have behaved)\ |
01:25 |
est |
damn thats bad |
01:26 |
est |
so what to do |
01:26 |
est |
exit(0)? |
01:26 |
Zeno` |
you can use FAIL_IF(... |
01:26 |
est |
? |
01:26 |
Zeno` |
using assert for lazy error checking is silly |
01:27 |
Zeno` |
umm I think it's in debug.h |
01:27 |
est |
either way its a pre condition |
01:27 |
Zeno` |
#define FATAL_ERROR_IF(expr, msg) \ |
01:27 |
Zeno` |
that's correct, so it should never happen... EVER |
01:27 |
est |
so I cant guarantee for anything if that code is called that way |
01:28 |
Zeno` |
so putting the return 0 at the end of the function so all code paths at least return 0 is the preferred style (I would think) |
01:28 |
est |
so then its fine? |
01:28 |
Zeno` |
if it's truly a pre-condition then you know the condition before the function is even called |
01:29 |
est |
so pre-conditions are things that you assume that are fulfilled when you are inside some function? |
01:29 |
Zeno` |
not assume, know |
01:30 |
Zeno` |
you assert that such-and-such is always true and if it's false then the laws of the universe have changed |
01:30 |
hmmmm |
or there was a soft memory error |
01:31 |
hmmmm |
the laws of the universe allows for cosmic rays corrupting electronics |
01:31 |
est |
hm, then perhaps I've got it wrong, but still I do know that I dont call that method in another way |
01:32 |
est |
so the condition is always fulfilled |
01:32 |
Zeno` |
a = 10; a few hundred lines later if you have never changed assert(a == 10); <--- I doubt many people would want that assert to persist in release builds to account for cosmic rays |
01:32 |
|
err404 joined #minetest-dev |
01:32 |
est |
I've mostly added it so that when people change code, they will notice that the asserts break, and they dont have to debug a long time |
01:32 |
Zeno` |
yeah, so you've used assert correctly |
01:33 |
Zeno` |
that's what they're meant for |
01:33 |
est |
fine then |
01:33 |
Zeno` |
:) |
01:33 |
Zeno` |
it's only the position of the return value that I consider bad style, but perhaps that's a personal preference |
01:33 |
Zeno` |
s/value/statement |
01:34 |
est |
I guess I should also have avoided the if construct, and used assert(expression) directly |
01:34 |
est |
but thats also style |
01:34 |
est |
when I have time, I guess I will refactor that whole file |
01:34 |
est |
lots of duplicate code |
01:37 |
Zeno` |
hmm |
01:37 |
Zeno` |
it's not toooo bad |
01:38 |
Zeno` |
I looked at it yesterday while still in a delirium and it even then it looked good :) |
01:38 |
est |
lol |
01:39 |
est |
there is higher prio stuff to do first, either way |
01:39 |
est |
like auth |
01:41 |
Zeno` |
est, I see what you mean now... I would, too, have written it like: http://dpaste.com/3Y83XNX |
01:41 |
Zeno` |
with proper formatting of course lol |
01:42 |
est |
yes |
01:43 |
est |
ok going oflline now, awaiting response for my email. |
01:44 |
paramat |
#2607 |
01:44 |
ShadowBot |
https://github.com/minetest/minetest/issues/2607 -- player:override_day_night_ratio() now results in a dark landscape |
01:45 |
Zeno` |
email? |
01:45 |
Zeno` |
paramat, *sigh* |
01:45 |
Zeno` |
paramat, can you bisect it? :) |
01:46 |
paramat |
yes i will |
01:47 |
|
est31 joined #minetest-dev |
01:47 |
ShadowNinja |
Zeno`: I think he means http://lists.minetest.net/archives/minetest-dev/2015-April/000002.html |
01:47 |
est31 |
yes |
01:48 |
Zeno` |
oh |
01:48 |
est31 |
initial goal for the auth change should be adjusting the init packets |
01:48 |
est31 |
I'm offline but will read chat |
01:48 |
* Zeno` |
reads |
01:50 |
Zeno` |
ShadowNinja, did I join the mailing list correctly? |
01:50 |
* Zeno` |
hopes he put in the correct email address |
01:51 |
|
paramat left #minetest-dev |
02:12 |
Zeno` |
lol |
02:12 |
Zeno` |
http://stackoverflow.com/questions/25726331/strftime-f-does-not-work-on-windows |
02:13 |
Zeno` |
not a filename bug at all |
02:13 |
Zeno` |
a secret MS developer let me know |
02:15 |
Zeno` |
I guess we should stick to c89 for c functions |
02:55 |
hmmmm |
hrmm |
02:55 |
hmmmm |
sorta wondering what i should do for the schematic filename thing |
02:56 |
hmmmm |
i can get the current mod path easily enough - but modifying the filename inside the API modifies the shadow lookup table in lua |
02:56 |
hmmmm |
err doesn't modify* |
03:11 |
Zeno` |
that's a problem |
03:12 |
ShadowNinja |
Zeno`: Seems not. Check your email for a confirmation message. Could be in spam. |
03:13 |
Zeno` |
ok |
03:13 |
hmmmm |
i think this is a larger problem |
03:13 |
hmmmm |
am I obligated to fix up lua-land shadow tables from within C++? |
03:14 |
hmmmm |
do I instead duplicate the logic in lua? |
03:14 |
Zeno` |
well, it's not in junk. I'll look after lunch. bbs |
03:14 |
hmmmm |
later |
03:16 |
hmmmm |
hehe |
03:16 |
hmmmm |
I wonder how much would break if we changed the memory layout of a MapBlock to be y-x-z instead of x-y-z |
03:28 |
ShadowNinja |
hmmmm: Map and protocol for a start, without copies and conversions. |
03:28 |
hmmmm |
trudat |
03:33 |
hmmmm |
what, you wouldn't like sideways minetest? |
03:34 |
ShadowNinja |
Well, it would be interesting... ;-) |
03:55 |
sofar |
why would the protocol change? you could keep it the same ... swapping a few bytes sent over the wire shouldn't be too expensive? |
04:42 |
hmmmm |
well it would change the protocol version |
04:42 |
hmmmm |
it's not changing the actual protocol of the game |
04:43 |
hmmmm |
after thinking long and hard about it, i believe it's safe to say my mapblock transaction idea is crap because everyone's a reader |
04:43 |
hmmmm |
and everyone's a writer |
04:43 |
hmmmm |
why would anybody be reading mapnodes unless they intend to write to the map |
04:51 |
VanessaE |
hmmmm: plants_lib. |
04:52 |
VanessaE |
it reads the map, but it doesn't necessarily *write* the map right away. |
04:52 |
VanessaE |
that's not to say that it invalidates your "my idea is crap" self-deprecation ;) but don't assume everyone's a automatically a writer if they're a reader. |
04:54 |
hmmmm |
would you take an api that lets you read and then when you go to do those writes it turns out that region of the map changed since when you read it |
04:54 |
VanessaE |
also mob mods. they don't write the map at all int he usual sense. they just spawn some entities. |
04:54 |
hmmmm |
probably not |
04:54 |
VanessaE |
oh of course not. |
04:55 |
VanessaE |
in fact you'll surely recall the tsuris we had before when exactly that was the case when mixing mapgen mods that uses set_node() with those which used vmanips. |
04:55 |
hmmmm |
well that was different |
04:55 |
hmmmm |
but yeah, people will get into a shitstorm if the data isn't exactly consistent with what they expect |
04:56 |
hmmmm |
by that i mean: act as if it were single-threaded |
04:56 |
VanessaE |
*nod* |
04:57 |
hmmmm |
so like i asid |
04:57 |
hmmmm |
the transaction idea only really helps if you have a lot of readers |
04:58 |
VanessaE |
which won't really be the case in practice |
04:58 |
hmmmm |
correct. |
04:58 |
hmmmm |
you're a writer if you are ever going to do any write ever, contingent on the state of the data you have in front of you |
04:59 |
hmmmm |
one really simple mechanism i could add that would help a bit is if i had a callback when a lock isn't being held anymore |
05:01 |
VanessaE |
might work so long as the callback doesn't come with too much overhead |
05:01 |
hmmmm |
probably not |
05:04 |
hmmmm |
dammit vanessa when are you going to become a core dev |
05:04 |
VanessaE |
when I actually understand C++ enough :) |
05:05 |
hmmmm |
that's never going to happen if you don't try |
05:05 |
VanessaE |
oh I do try actually. a goodly portion of the PR's that come across, I read through the code trying to learn. |
05:05 |
hmmmm |
ya gotta write |
05:05 |
VanessaE |
yep I know. |
05:05 |
hmmmm |
that's like thinking you're going to learn math by reading other peoples' math notes |
05:06 |
VanessaE |
heh, well to be fair, when you're coding, you DO usually start by reading other peoples' code, but I get your point. |
05:06 |
hmmmm |
true i guess |
05:06 |
VanessaE |
the last time I wrote any real C++ was... fuck... 15 years ago? |
05:06 |
hmmmm |
seriously though |
05:06 |
hmmmm |
you know a lot about minetest |
05:06 |
hmmmm |
you're pretty valuable |
05:07 |
hmmmm |
if you have any language questions i can certainly help |
05:09 |
VanessaE |
it'll be soon I think. |
05:10 |
VanessaE |
I am starting to figure it out, don't get me wrong, just some stuff turns to gibberish sometimes :) |
05:14 |
VanessaE |
back in college, I learned K&R C, did well enough to pass the class with an average grade. the one thing that sticks out in my mind was how dissimilar the language was from languages I was used to at the time (BASIC, 65xx assembly). |
05:14 |
VanessaE |
of course today that difference doesn't much matter, it's not like I can't figure out how a for() loop works |
05:15 |
hmmmm |
yup |
05:15 |
VanessaE |
it's the little shit that gets you, like why you put a * before a variable versus after it, etc. |
05:15 |
hmmmm |
there aren't as many hard parts as you might think |
05:15 |
hmmmm |
yea, see, i can explain those things just fine |
05:16 |
hmmmm |
it's the logic that matters most |
05:16 |
VanessaE |
yep |
05:16 |
hmmmm |
so anyway help me reason this out: |
05:16 |
hmmmm |
so we have the base state of this mapblock |
05:17 |
hmmmm |
someone wants to possibly do writes to it, so it gets copied |
05:17 |
hmmmm |
somebody else wants to do a possible-write to the same mapblock but they need the finished version of the thing that came before it |
05:18 |
hmmmm |
the second gets the callback when the first is done, "hey you can do your read/possible write now" |
05:18 |
hmmmm |
the original idea was to have all this crazy merge stuff optimized for the read only case but that's not realistic |
05:19 |
VanessaE |
well. |
05:19 |
VanessaE |
if your only goal were to add decorations, ores, and so on to the mapblock, the emerge-read-copy-read_a-bunch idea actually works fine in practice |
05:19 |
VanessaE |
BUT |
05:20 |
VanessaE |
you're gonna be adding trees, lakes, or hell doing entirely new map data over the old (depending on the mod being used)( |
05:21 |
VanessaE |
what I do, and this should work for the more generic read-copy-write case, is give each block it's own queue, identified by blockhash. |
05:21 |
hmmmm |
hrmm |
05:21 |
VanessaE |
disregarding for the moment that Lua is single-threaded of course |
05:21 |
hmmmm |
the queue contains wanted node modifications? |
05:22 |
hmmmm |
these queues are atomically updated? |
05:22 |
VanessaE |
something like that yeah |
05:22 |
hmmmm |
i can see what you're getting at |
05:22 |
hmmmm |
that would clearly work but it's very expensive |
05:22 |
VanessaE |
you could even create entries that point to difference maps |
05:22 |
VanessaE |
yeah, that's the only problem - it would be both RAM and CPU hungry |
05:22 |
hmmmm |
that defeats the purpose basically |
05:22 |
VanessaE |
(whereas a single queue is just CPU hungry) |
05:23 |
hmmmm |
pfth |
05:23 |
hmmmm |
I don't know, this problem is too hard |
05:23 |
hmmmm |
thinking about it a bit more, I don't know when the callback-on-finished idea will help |
05:24 |
hmmmm |
if anything that's akin to having a trylock on a spin |
05:24 |
VanessaE |
yeah |
05:24 |
hmmmm |
errm, i mean except not on a spin* |
05:24 |
VanessaE |
oh right |
05:24 |
VanessaE |
that makes a little more sense. |
05:25 |
hmmmm |
a trylock on a spin is just a regular lockl ol |
05:25 |
VanessaE |
sounds like the only place the callback would be of much help is in a fairly generic server (i.e. mostly unmodded) on a slow machine |
05:26 |
hmmmm |
okay so what about a rather optimistic algorithm |
05:26 |
hmmmm |
this is the "true" transaction/commit algorithm |
05:26 |
hmmmm |
you get your mapblock |
05:26 |
hmmmm |
if somebody else tries to get the same mapblock it sets a bit |
05:27 |
hmmmm |
you try to commit your version of the mapblock and it fails |
05:27 |
hmmmm |
so you at that point get a copy of the modified mapblock and you... I guess, retry your loop logic? |
05:27 |
hmmmm |
this is STM |
05:27 |
VanessaE |
ehhh... |
05:28 |
VanessaE |
that would get really messy really fast unless you also included a "re-read mapblock" callback also |
05:28 |
VanessaE |
(even then it would still be messy) |
05:29 |
hmmmm |
so it's like do { for (int i = 0; i != MAPBLOCK_SIZE* MBSIZE * MBSIZE; i++) if (mapblock.m_data[i].getContent == c_grass) mapblock.m_data[i].setContent(c_snow); } while (core.commit_mapblock(mapblock) == false); |
05:29 |
hmmmm |
for example that's the way the snow mod would work |
05:29 |
hmmmm |
or anything really |
05:29 |
hmmmm |
the point here is that it's *optimistic* |
05:29 |
VanessaE |
right |
05:29 |
hmmmm |
if it does fail, then... so what? |
05:30 |
hmmmm |
just try it again |
05:30 |
hmmmm |
you're not going to be doing anything else better with your time other than sitting there like a bump on a log |
05:30 |
hmmmm |
(this is assuming mods are in their own threads) |
05:30 |
VanessaE |
oK |
05:30 |
VanessaE |
that changes things |
05:30 |
hmmmm |
welllll |
05:30 |
VanessaE |
I wasn't thinking in terms of multi-threading Lua here. |
05:30 |
hmmmm |
I am going to qualify this with mostly |
05:31 |
hmmmm |
the way I want to do lua multithreading isn't one thread per mod |
05:31 |
hmmmm |
it'd have to be an apartment model with multiple tenants per thread |
05:31 |
VanessaE |
suddenly this seems way less messy. |
05:31 |
hmmmm |
of course this is adjustable by the server |
05:32 |
hmmmm |
but yeah... you can't have like 200 threads running because it's vanessa's big-ass-world mod |
05:32 |
hmmmm |
or whatever |
05:32 |
VanessaE |
the way I could see a thread model working is really just one main thread (like now) for well, "all", and just spawn a new thread or two here or there as callbacks are executed |
05:32 |
hmmmm |
big-freaking-dig i mean, and that's jordachs, sorry |
05:32 |
hmmmm |
yeah |
05:32 |
VanessaE |
(not that there's much for "all" to do since Lua is pretty much entirely event driven in practice) |
05:33 |
hmmmm |
that's the way sapier's async crap works right now pretty much |
05:33 |
hmmmm |
and it's great because mods work off of callbacks |
05:33 |
hmmmm |
events |
05:33 |
hmmmm |
so most of the time they'd be sitting there doing nothing |
05:33 |
VanessaE |
yup |
05:34 |
hmmmm |
the problem is when they *do* finally get an event... |
05:34 |
hmmmm |
see that's the problem with minetest |
05:34 |
VanessaE |
by the sound of it, each thread would need a whole fresh copy of the Lua environment |
05:34 |
hmmmm |
everything is polled so there's this spike of CPU usage all at once |
05:34 |
hmmmm |
well, yes |
05:34 |
hmmmm |
we'd use something like lua lanes |
05:35 |
VanessaE |
damn i t stop making me google stuff :P |
05:35 |
VanessaE |
hm, you'll have a problem here. |
05:35 |
VanessaE |
Lanes doesn't appear to support *BSD. |
05:35 |
hmmmm |
r u kidding me |
05:35 |
hmmmm |
dammit |
05:35 |
hmmmm |
lanes was being advertised to me as the way, the light, the truth, when i first heard of it |
05:36 |
VanessaE |
supports OS X PPC and Intel, Linux x86, and win 2k/xp and up it says. |
05:36 |
VanessaE |
http://cmr.github.io/lanes/ |
05:36 |
hmmmm |
oh |
05:36 |
hmmmm |
they're probably just not aware that freebsd exists |
05:36 |
hmmmm |
i bet it's just a couple compile issues if anything |
05:36 |
VanessaE |
of course this page was last updated two years ago, so who knows :) |
05:37 |
VanessaE |
https://github.com/LuaLanes/lanes/blob/master/README#L80 |
05:37 |
VanessaE |
the redme contradicts the .io page |
05:37 |
VanessaE |
readme* |
05:38 |
hmmmm |
ahh |
05:38 |
VanessaE |
notes at line 124 about JIT also. |
05:39 |
hmmmm |
noted. |
05:41 |
VanessaE |
hm. "heavily-threaded" dual-core performance is 50-60% faster than single-thread/core. |
05:42 |
hmmmm |
it's better than 0% |
05:42 |
VanessaE |
this is true. |
05:45 |
VanessaE |
well, it looks like it has everything one would need. |
05:45 |
VanessaE |
including a fork() equivalent :) |
05:47 |
hmmmm |
hopefully lanes has a preemption mechanism |
05:48 |
VanessaE |
http://cmr.github.io/lanes/#status |
05:48 |
hmmmm |
i don't know, VanessaE, if I add in transactions for mapblocks, would you use it? |
05:48 |
VanessaE |
I don't know if I would or not, to be perfectly frank... |
05:49 |
VanessaE |
but, I'll bet you paramat would love it |
05:49 |
hmmmm |
well just think of it this way: in the current case where there's one gigantic lock, the transaction will always succeed |
05:49 |
VanessaE |
SPlizard too |
05:49 |
hmmmm |
now one thing bout mapblock transactions |
05:49 |
hmmmm |
i will attempt to merge them even if it's marked as dirty |
05:50 |
VanessaE |
well, so long as two block copies are marked dirty *but* they're both "finished" and neither conflicts with the other, I see no reason not to merge them |
05:50 |
hmmmm |
so if there's a portion of the mapblock that has an air node set to a flower or something |
05:50 |
hmmmm |
that should be okay for another mod with the same thing set to a flower |
05:50 |
VanessaE |
right |
05:51 |
hmmmm |
VanessaE: this would be optional though because you can't trust the entire mapblock if one thing has been changed |
05:51 |
hmmmm |
how do I know you hadn't based your decision to set the node in the center mese based on all of the surrounding nodes? |
05:51 |
VanessaE |
good point |
05:51 |
hmmmm |
well I guess that mutual exclusion is the only case where this would happen |
05:51 |
VanessaE |
I Was of course assuming the simple case of two or more mapgen mods just adding random shit to the mapblock |
05:52 |
hmmmm |
it needs to be a case where mod #1 has a problem with certain nodes being there AND mod #2 has the same problem |
05:52 |
hmmmm |
like you have place_things_by_water_mod |
05:52 |
hmmmm |
where it only places a block if it's completely surrounded by water |
05:52 |
hmmmm |
but there's also another mod that does the same thing |
05:53 |
VanessaE |
then whoever gets the block first wins, that's pretty simple. |
05:53 |
hmmmm |
in the traditional setup, this would work fine because your mod would come first, see the water, place your node |
05:53 |
hmmmm |
right |
05:53 |
hmmmm |
hrmm |
05:53 |
hmmmm |
anyway this is why it has to be optional |
05:59 |
VanessaE |
I'm reading through this lanes stuff... one thing they're a little unclear on, they push their Lindas feature for IPC, but what if I just want to deal with a big global table... |
06:10 |
VanessaE |
"Data passing (parameters, upvalues, Linda messages) is generally fast, doing two binary state-to-state copies" |
06:10 |
VanessaE |
ew. |
06:10 |
VanessaE |
*imagines passing a 100 kB table between processes* |
06:10 |
|
Hunterz joined #minetest-dev |
06:54 |
|
jin_xi joined #minetest-dev |
07:11 |
|
denis_ joined #minetest-dev |
07:36 |
|
leat joined #minetest-dev |
07:55 |
|
Calinou joined #minetest-dev |
07:57 |
* hmmmm |
scratches head |
07:58 |
hmmmm |
lua_sethook(L, preempt_script, LUA_MASKCOUNT, 10000); |
07:58 |
hmmmm |
that was easy! |
07:59 |
VanessaE |
*raises eyebrow* |
07:59 |
hmmmm |
haha, it took quite a bit of searching to find that |
08:09 |
|
selat joined #minetest-dev |
08:13 |
|
Jordach joined #minetest-dev |
08:16 |
|
kilbith joined #minetest-dev |
08:49 |
|
leat joined #minetest-dev |
09:58 |
|
cib0 joined #minetest-dev |
10:30 |
|
Taoki joined #minetest-dev |
10:45 |
|
deezl joined #minetest-dev |
11:16 |
|
roniz joined #minetest-dev |
11:34 |
|
T4im joined #minetest-dev |
11:53 |
|
proller joined #minetest-dev |
12:34 |
|
Player_2 joined #minetest-dev |
12:41 |
|
Player_2 joined #minetest-dev |
13:13 |
|
Zeno` joined #minetest-dev |
13:17 |
|
Player_2 joined #minetest-dev |
13:26 |
|
cib0 joined #minetest-dev |
13:29 |
|
jin_xi joined #minetest-dev |
13:45 |
|
MinetestForFun joined #minetest-dev |
13:46 |
|
MinetestForFun_ joined #minetest-dev |
13:55 |
|
OldCoder joined #minetest-dev |
13:55 |
|
Lunatrius joined #minetest-dev |
13:55 |
|
Robby joined #minetest-dev |
13:55 |
|
Aaron1011 joined #minetest-dev |
13:55 |
|
Eivel joined #minetest-dev |
13:55 |
|
daswort joined #minetest-dev |
13:56 |
|
Taoki joined #minetest-dev |
13:56 |
|
JeDa joined #minetest-dev |
13:56 |
|
geheimni1 joined #minetest-dev |
13:56 |
|
Brains joined #minetest-dev |
13:56 |
|
compunerd joined #minetest-dev |
13:56 |
|
harrison joined #minetest-dev |
13:57 |
|
book` joined #minetest-dev |
13:58 |
|
AnotherBrick joined #minetest-dev |
13:58 |
|
cvtsx1 joined #minetest-dev |
13:58 |
|
msantana joined #minetest-dev |
13:58 |
|
jin_xi joined #minetest-dev |
13:58 |
|
Zeno` joined #minetest-dev |
14:01 |
|
book` joined #minetest-dev |
14:08 |
Zeno` |
how do we move forward? |
14:09 |
Zeno` |
I think that minesest is currently the in the buggiest state since I discovered the project and I don't know if I enjoy that |
14:09 |
Zeno` |
so we probably need a plan |
14:10 |
Zeno` |
The thing is I cannot code new features when there are so many (IMO) critical bugs. That's just my personality |
14:10 |
Zeno` |
I won't add things when things are not at least semi-stable :/ |
14:10 |
Zeno` |
And it's starting to annoy and frustrate me |
14:11 |
Zeno` |
celeron55, you're the boss. Any suggestions? |
14:17 |
celeron55 |
...uhm, well, sounds like it would be a good idea to look into the matter and figure out where and from which practices and from whom the bugs have come from and deal with it so that when fixing the bugs, people can have confidence in bugs not appearing again so much |
14:19 |
|
proller joined #minetest-dev |
14:19 |
Zeno` |
I will think |
14:22 |
celeron55 |
are these bugs that you consider critical marked somehow as such on github? |
14:22 |
Zeno` |
most of them I think |
14:22 |
Zeno` |
oh, do they have critical label? |
14:23 |
Zeno` |
no, because they can't really be isolated (AFAIK) |
14:23 |
celeron55 |
that label doesn't exist |
14:24 |
celeron55 |
i don't know if it should, but assessing what you said is difficult without it :P |
14:25 |
Zeno` |
critical is not necessary; high priority covers things |
14:25 |
celeron55 |
can you make a list of the "imo critical" bugs? |
14:26 |
Zeno` |
one the other day took me 4 hours to actually reproduce and another 2 to get a backtrace; they're not really deterministic as far as I can tell and that's the problem |
14:26 |
Zeno` |
I guess I can do that, surew |
14:26 |
Zeno` |
sure* |
14:27 |
Zeno` |
sounds like a good place to start |
14:36 |
|
Etzos joined #minetest-dev |
14:37 |
|
hmmmm joined #minetest-dev |
14:38 |
|
selat joined #minetest-dev |
15:11 |
|
Krock joined #minetest-dev |
15:16 |
|
proller joined #minetest-dev |
15:33 |
|
chchjesus joined #minetest-dev |
15:44 |
|
proller joined #minetest-dev |
15:49 |
|
proller joined #minetest-dev |
16:19 |
|
Gethiox joined #minetest-dev |
16:22 |
ShadowNinja |
... http://pastebin.ubuntu.com/10751384/ |
16:22 |
ShadowNinja |
Caching the result of a cast, anyone? |
16:32 |
Krock |
Uh. that's the new place 1 of the worst codes |
17:08 |
celeron55 |
lol |
17:22 |
|
ud1_ joined #minetest-dev |
17:54 |
|
SopaXorzTaker joined #minetest-dev |
18:15 |
hmmmm |
i think we should make an edict to outlaw dynamic casts |
18:15 |
hmmmm |
rtti is kind of useless imo |
18:16 |
hmmmm |
that looks like sapier code |
18:16 |
hmmmm |
celeron55, http://lists.minetest.net/archives/minetest-dev/2015-April/000001.html |
18:16 |
hmmmm |
your thoughts? |
18:36 |
ShadowNinja |
hmmmm: Currently there are only UDPPeers, so the dynamic_cast is kind of useless. And if other protocols are supposed to be easily interchangeable it certainly doesn't look like it. And yes, it's sapier's connection code. |
18:37 |
hmmmm |
well I think it would be useless even if there were other peer types |
18:37 |
hmmmm |
i suppose it depends on whether or not you store all peers homogenously |
18:37 |
hmmmm |
i personally wouldn't |
18:48 |
|
SudoAptGetPlay joined #minetest-dev |
19:09 |
|
proller joined #minetest-dev |
20:06 |
|
MinetestForFun joined #minetest-dev |
20:12 |
|
proller joined #minetest-dev |
20:22 |
|
cib0 joined #minetest-dev |
20:38 |
|
est31 joined #minetest-dev |
20:46 |
|
roniz joined #minetest-dev |
21:03 |
VanessaE |
is it just me, or is the yellow hue from light sources particularly "obvious" lately? |
21:04 |
VanessaE |
http://digitalaudioconcepts.com/vanessa/hobbies/minetest/screenshots/Screenshot%20-%2004062015%20-%2005%3a07%3a36%20PM.png |
21:05 |
est31 |
that doesnt look nice |
21:48 |
|
Gethiox joined #minetest-dev |
21:52 |
celeron55 |
lol what |
21:52 |
celeron55 |
since when has it looked like that |
21:56 |
sofar |
well, that question could be answered if there was a visual regression tester. Might not be so hard to build one, too. |
21:57 |
kahrl |
sounds hard to me |
21:57 |
celeron55 |
hmmmm: you probably should attach a description of the intended optimal map generator api usage to such proposals |
21:58 |
kahrl |
the only drivers that are possibly deterministic are the software drivers, and they don't really work for minetest at all |
21:58 |
sofar |
should be easy with a little mod to put a test player on a specific map with test objects, then start, logon automatically and take a screenshot |
21:59 |
celeron55 |
hmmmm: i mean, that thing doesn't give any solutions to lua-based map generation locking the server for long periods of time |
22:00 |
|
paramat joined #minetest-dev |
22:00 |
celeron55 |
or, umm... does it do that in the way that the server would run, but the lua environment would be in a stopped state? |
22:00 |
kahrl |
ah, if you mean just making the screenshots automatically (but not automatically comparing them to some known-good screenshot), that should be doable with some effort |
22:01 |
celeron55 |
that's probably not a good idea as the server has to be able to call callbacks defined by mods in many places... i think |
22:03 |
celeron55 |
(i don't intend to look hard into this right now) |
22:04 |
hmmmm |
celeron: why not reply to the mailing list thread then |
22:04 |
hmmmm |
i think this mailing list thing is great because it's not noisy and much less temporal than irc |
22:06 |
celeron55 |
i might answer there if i decide to take the time to take a better look |
22:11 |
|
Gethiox joined #minetest-dev |
22:13 |
est31 |
pushing in 15 mins, doc rename: http://pastie.org/10077145 |
22:13 |
est31 |
(currently comments are wrong) |
22:49 |
est31 |
pushed |
22:55 |
|
proller joined #minetest-dev |
23:09 |
est31 |
:/ as it seems there is more -> _LEGACY renaming required... :/ |
23:37 |
|
cib0 joined #minetest-dev |
23:45 |
paramat |
oops .. when i added 3d noise tunnels to mgv5/v7 i forgot to make them check for 'is ground content' *=/ will be fixed in the upcoming PR |
23:59 |
|
Fritigern joined #minetest-dev |
23:59 |
est31 |
the csrp project ShadowNinja linked seems to not fulfil what I need... |
23:59 |
est31 |
it can be modified though |