Time |
Nick |
Message |
00:20 |
|
Tablet_One joined #minetest-dev |
00:24 |
|
Zeno` joined #minetest-dev |
00:30 |
|
srifqi joined #minetest-dev |
00:33 |
srifqi |
any devs, please check #2561 |
00:33 |
ShadowBot |
https://github.com/minetest/minetest/issues/2561 -- [WIP] Add mapgen specific flags to create world dialog by srifqi |
00:37 |
Zeno` |
ShadowNinja, https://github.com/minetest/minetest/blob/30075467b84c79ff21736d6c447746caef07dcd0/src/camera.cpp#L124 |
00:38 |
Zeno` |
I think error_message should be explicitly set to empty before the if/else-if chain if it's going to be used to return true/false in that manner |
00:39 |
Zeno` |
(there is no pre-condition that error_message must be empty before calling that function) |
00:39 |
Zeno` |
(either that or set it to empty in a closing else) |
00:59 |
Zeno` |
ShadowNinja, also... isn't the return value umm inverted? |
00:59 |
Zeno` |
i.e. should it not be return !error_message.empty(); ? |
01:00 |
Zeno` |
err nvm about that one lol |
01:00 |
Zeno` |
too early in the day for me |
01:08 |
hmmmm |
est31, nope |
01:08 |
hmmmm |
i'd rather avoid the forums for any planning because noise |
01:08 |
hmmmm |
srifqi, nice |
01:08 |
hmmmm |
maybe it would be better if the button "Flags" were named "Map generator options" or something |
01:10 |
hmmmm |
i already don't like how whoever added the "Mapgen" combo box named it that. it should be something more end-user friendly like "Map generation algorithm" |
01:10 |
|
Miner_48er joined #minetest-dev |
01:11 |
hmmmm |
also for what it's worth, i had worked on a GUI mapgen configuration dialog, but i dropped it because working with formspec is just so horrible |
01:20 |
ShadowNinja |
Zeno`: Yes, I'll fix that just after I finish making the access denied reasons translatable... |
01:25 |
|
srifqi joined #minetest-dev |
01:26 |
srifqi |
Zeno` http://irc.minetest.ru/minetest-dev/2015-03-28#i_4203006 |
01:26 |
srifqi |
any ideas? |
01:30 |
paramat |
hmmmm, no rush for this but another request: dungeon params settable in .conf |
01:35 |
|
Tablet_One joined #minetest-dev |
01:38 |
ShadowNinja |
Hrm, GetText won't work. |
01:39 |
Zeno` |
delete it |
01:39 |
Zeno` |
srifqi has it been changed since I looked the other night? |
01:39 |
ShadowNinja |
Zeno`: Delete what, GetText? |
01:39 |
ShadowNinja |
Oh, not direted to me. |
01:40 |
Zeno` |
ShadowNinja, I was directing "delete it" to you, but was only joking |
01:41 |
* ShadowNinja |
is checking if his build changes broke it or if it was previously broken. |
01:41 |
Zeno` |
oh it doesn't work *at all*? |
01:41 |
Zeno` |
that's weird |
01:41 |
ShadowNinja |
Darn, it's my changes. |
01:41 |
ShadowNinja |
Zeno`: It'll build and link, but it just returns the unchanged string. |
01:44 |
|
srifqi joined #minetest-dev |
01:45 |
Zeno` |
mine has always done that :/ |
01:45 |
Zeno` |
(even if I change my language settings) |
01:45 |
Zeno` |
I dunno why |
01:45 |
hmmmm |
paramat, actually I would like to move away from mapgen-related params in the config entirely |
01:46 |
hmmmm |
i think it'd be better overall to have them as a lua mod |
01:46 |
paramat |
sounds good |
01:46 |
hmmmm |
you're already able to do this btw |
01:46 |
hmmmm |
core.set_noiseparams() |
01:46 |
hmmmm |
but it's a hacky way |
01:46 |
Zeno` |
Oh, ShadowNinja, while you're around can you check #2562 please? |
01:46 |
ShadowBot |
https://github.com/minetest/minetest/issues/2562 -- Add Lua function get_video_modes() for main menu by Zeno- |
01:47 |
Zeno` |
I changed it this morning (always returns a table now) |
01:47 |
hmmmm |
zeno`, you should put the function definition above get_video_drivers |
01:47 |
Zeno` |
i.e. never nil |
01:47 |
hmmmm |
oh nvm |
01:48 |
hmmmm |
Zeno`, what's wrong with the porting:: function that gets the video modes?? |
01:48 |
paramat |
yes my request is for settable dungeon params, i don't mind how that's done |
01:49 |
* ShadowNinja |
chuckles at sanity_check(nulldevice != NULL); |
01:49 |
Zeno` |
hmmmm, I believe it needs irrlicht to be initialised |
01:50 |
ShadowNinja |
Zeno`: Seems fine. |
01:50 |
hmmmm |
it doesn't |
01:50 |
hmmmm |
it creates a null device just like you have there |
01:50 |
Zeno` |
where? |
01:50 |
Zeno` |
doesn't it require that initIrrlicht() has been called? |
01:51 |
hmmmm |
ahh you're right |
01:51 |
hmmmm |
it hsouldn't work like that though |
01:52 |
Zeno` |
I could probably fix porting:: now as a new PR |
01:52 |
hmmmm |
or do it both in the same one |
01:52 |
Zeno` |
I'll look |
01:52 |
hmmmm |
both in the same PR i mean |
01:55 |
Zeno` |
yeah |
01:58 |
Zeno` |
getSupportedVideoDrivers() seems a bit odd also |
01:59 |
Zeno` |
both that functions use that silly static irr::IrrlichtDevice *device; |
02:00 |
hmmmm |
getSupportedVideoDrivers uses a static irrlicht function |
02:00 |
Zeno` |
yeah just noticed that; and getWindowSize() would need the real device as well |
02:01 |
hmmmm |
okay |
02:01 |
Zeno` |
it still makes me uneasy... seems as though it would be better to pass the device as a param, but *shrug* |
02:01 |
hmmmm |
if it doesn't actually need the current IrrlichtDevice to work, call it "getSupported**" |
02:01 |
hmmmm |
getSupportedVideoDrivers, getSupportedVideoModes, |
02:02 |
hmmmm |
Zeno`, it's because it doesn't always change and you don't always know device at the time of calling |
02:03 |
Zeno` |
correct, which is why I wrote my function at the time... but that's a different issue that I'll ponder separately :) |
02:05 |
Zeno` |
Then again... l_get_video_drivers(lua_State *L) uses porting::getSupportedVideoDrivers(); ... |
02:06 |
hmmmm |
you can't change settings like FSAA, video res, or video driver after starting |
02:06 |
hmmmm |
but it's really not that horrible to destroy and create a new irrlicht device during executon |
02:07 |
Zeno` |
Ok, let me state my concern. Is it ok to create a dummy device even if the real irrlicht device is already created; i.e. it won't cause issues? |
02:07 |
hmmmm |
correct |
02:07 |
Zeno` |
ok, I'll update the porting function to use dummy device then |
02:07 |
Zeno` |
and change its name |
02:08 |
ShadowNinja |
~tell nrzkt The server apparently always uses HandleCommand_Init_legacy, even with new clients and servers. This means that the new translatable access denied command isn't used. |
02:08 |
ShadowBot |
ShadowNinja: O.K. |
02:09 |
Zeno` |
I guess it's never been used because there is no function prototype for it |
02:09 |
ShadowNinja |
Zeno`: This was it: http://sprunge.us/KQMa?diff |
02:10 |
ShadowNinja |
Pushing in a moment, with the tweak Zeno`mentioned. |
02:12 |
ShadowNinja |
Zeno`: The function sets error_message destructively, without appending, so I think its being empty should be a precondition. I'll just add an assert, O.K.? |
02:14 |
Zeno` |
ok |
02:14 |
ShadowNinja |
http://sprunge.us/KVKO?diff |
02:15 |
Zeno` |
no hang on |
02:15 |
Zeno` |
why not just set it to "" if there is no error? |
02:15 |
Zeno` |
so error_message can be re-used without having to set it to "" before calling the function if some programmer happens to want to do that |
02:17 |
ShadowNinja |
Zeno`: I could do that too. |
02:17 |
Zeno` |
yeah I think that would make sense |
02:19 |
ShadowNinja |
http://sprunge.us/SGCe?diff |
02:19 |
ShadowNinja |
Good? |
02:20 |
Zeno` |
yeah looks fine :) |
02:21 |
hmmmm |
lol |
02:22 |
ShadowNinja |
? |
02:22 |
Zeno` |
hmmmm is in a jolly mood I guess |
02:23 |
hmmmm |
:/ |
02:23 |
hmmmm |
idk |
02:23 |
ShadowNinja |
lol |
02:24 |
Zeno` |
#2562 is updated. I don't like it but I guess at least it's in porting now |
02:24 |
ShadowBot |
https://github.com/minetest/minetest/issues/2562 -- Add Lua function get_video_modes() for main menu by Zeno- |
02:24 |
Zeno` |
I'll squash the commits when merging |
02:24 |
hmmmm |
well why not? |
02:24 |
hmmmm |
isn't it cleaner? |
02:24 |
Zeno` |
just me being strange |
02:25 |
Zeno` |
yeah it's cleaner and I like it being in porting |
02:25 |
hmmmm |
consistency! |
02:25 |
hmmmm |
i really wish dd had a progress bar |
02:25 |
hmmmm |
and i wish it also auto-selected block size based on which gives the maximum throughput |
02:25 |
hmmmm |
instead it's like... "okay, I'll try bs=16M this time and see if it's faster or slower" |
02:25 |
Zeno` |
The other day when I was writing this it actually reminded me I wanted limitFPS somewhere more suitable as well. |
02:26 |
hmmmm |
maybe all these functions could be classified as like... "irrlicht abstraction" |
02:26 |
Zeno` |
yeah, there's getting to be enough of them |
02:27 |
hmmmm |
does limitFPS run any irrlicht functions though, or is it just usleep()? |
02:27 |
Zeno` |
it uses irrlicht |
02:28 |
Zeno` |
no usleep() |
02:28 |
Zeno` |
game.cpp line 4124 |
02:28 |
Zeno` |
but the thing is, being hidden there means it hasn't been re-used (the main menu has its own -- kinda broken -- limit fps functionality) |
02:29 |
hmmmm |
yes i noticed that |
02:29 |
hmmmm |
which i think does use usleep on the other hand |
02:29 |
Zeno` |
it does, yeah |
02:30 |
hmmmm |
alrighty |
02:30 |
hmmmm |
crossing my fingers, hope this works |
02:30 |
|
srifqi joined #minetest-dev |
02:30 |
hmmmm |
see you guys on the other side |
02:32 |
Zeno` |
what are you dd'ing? |
02:32 |
Zeno` |
oh |
02:32 |
Zeno` |
must have been his main hdd |
02:33 |
|
paramat left #minetest-dev |
02:35 |
|
hmmmm joined #minetest-dev |
02:35 |
hmmmm |
well that didn't work |
02:35 |
hmmmm |
they win. i'll install a dvd player and burn a dvd. |
02:36 |
hmmmm |
i can't believe how heartless somebody would have to be to make an iso exactly 4.1GB |
03:13 |
Zeno` |
lol |
03:17 |
|
srifqi joined #minetest-dev |
03:24 |
Zeno` |
merging 2562 now |
03:25 |
Zeno` |
got distracted again :/ |
03:28 |
* Zeno` |
just realises why ShadowNinja chuckled at sanity_check(nulldevice != NULL); |
03:32 |
hmmmm |
so like |
03:32 |
hmmmm |
are we using sanity_check() over assert() now? |
03:32 |
Zeno` |
well, for things we want to remain in the release build |
03:33 |
hmmmm |
ahh |
03:33 |
Zeno` |
technically if that function returns NULL then irrlicht is probably broken anyway but *shrug* |
03:33 |
Zeno` |
I don't even know why I checked it |
03:34 |
Zeno` |
it'd likely segfault before it got the that if irrlicht was so broken it couldn't create a nulldevice |
03:34 |
hmmmm |
agreed |
03:34 |
hmmmm |
and even if you do assert and stop execution there, how is that any different from segfaulting? |
03:35 |
hmmmm |
it's not even exploitable |
03:38 |
Zeno` |
correct |
03:38 |
Zeno` |
I wish I could fix this menu being too big for 800x600 but I'm nervous changing the scaling related stuff |
03:39 |
Zeno` |
likely to cause world war 3 |
03:39 |
|
crazyR joined #minetest-dev |
03:42 |
Zeno` |
720x480 is even worse (of course) |
03:48 |
Tablet_One |
#2556 seems to be a duplicate of #2522 |
03:48 |
ShadowBot |
https://github.com/minetest/minetest/issues/2556 -- Missing fast move (USE) Button on android? |
03:48 |
ShadowBot |
https://github.com/minetest/minetest/issues/2522 -- Android: fast_move only works with free_move enabled |
03:52 |
Zeno` |
Not sure. Is 2556 the reason it's "broken"? |
03:54 |
Tablet_One |
I don't think so, because fast_move does work, but only when flying |
03:55 |
Tablet_One |
It would be kinda hard to hold a use button while walking and mining too |
03:55 |
Tablet_One |
Err |
03:56 |
Tablet_One |
Hmm |
03:56 |
Tablet_One |
Walking and steering, I should say |
04:02 |
Zeno` |
https://github.com/minetest/minetest/blob/master/builtin/mainmenu/init.lua#L142 <--- Can I change that to tv_main:set_fixed_size(false) for *all* platforms? celeron55 changed it in 4d744cf8, which I assume was at the time during the discussion about formspec scaling, but I don't really recall the main menu ever being discussed |
04:03 |
Zeno` |
the main problem is that on PC the main menu doesn't fit for 800x600 (as an example) |
04:04 |
Zeno` |
And I was just testing fullscreen for 720x480 and it obviously doesn't fit there either |
04:04 |
Zeno` |
Tablet_One, so on Android you should not hold the button... I'll check :) |
04:07 |
Tablet_One |
Ok |
04:31 |
|
Tablet_One joined #minetest-dev |
05:27 |
|
hmmmm joined #minetest-dev |
05:27 |
hmmmm |
wahh :D |
05:27 |
hmmmm |
yay |
05:43 |
Zeno` |
? you installed fedora? |
05:44 |
hmmmm |
no, i installed PC-BSD which is basically the same as freebsd except everything's already configured for you |
05:44 |
hmmmm |
i really like how it has GUI tools for all the ZFS shit |
05:44 |
hmmmm |
also KDE is bretty gud |
05:45 |
Zeno` |
I use KDE |
05:46 |
VanessaE |
meh, xubuntu ftw :) |
05:46 |
Zeno` |
I wish there were more Qt desktops (ones still being developed) |
05:46 |
Zeno` |
but KDE is ok once it's tamed |
05:46 |
hmmmm |
this feels like i'm cheating, but after configuring the same random /usr/local/etc/polkit/something/something.d/blah.xml.conf for the 500th time just to be able to plug a goddamn usb thumb drive in and have it pop up |
05:46 |
hmmmm |
it's just not worth it anymore |
05:47 |
VanessaE |
hmmmm: I'll admit, configuring every fucking little file DOES get old :-/ |
05:47 |
hmmmm |
there's almost never a happy medium either |
05:47 |
VanessaE |
coders seem to be adverse to the idea of "sane default" |
05:48 |
hmmmm |
it's always gentoo/lfs-tier nonsense or ubuntu where you get no choices |
05:48 |
hmmmm |
it's either their way or it breaks |
05:48 |
hmmmm |
what i'm currently using has the "happy medium" concept down, just wish it wasn't as crashy |
05:49 |
|
leat joined #minetest-dev |
05:50 |
hmmmm |
anyway yeah Zeno` I checked out QtBuilder and while it's nice, I found that I like Kdevelop even better |
05:51 |
VanessaE |
uh oh.. |
05:51 |
Zeno` |
Kdevelop is what I always used to use but I had to stop when the whole KDE 4.0/.1 was around and kdevelop was in a state of flux as well |
05:51 |
hmmmm |
basically the past couple of days I've been trying to fix my OS because i never actually recovered from the libpng disaster of january '15 |
05:51 |
VanessaE |
inb4 "let's port minetest's formspecs to Qt" |
05:51 |
Zeno` |
I might try it again |
05:51 |
hmmmm |
and my old IDE was in a half-broken state not displaying icons because of said problem |
05:59 |
Zeno` |
I think #2352 has been open long enough now |
05:59 |
ShadowBot |
https://github.com/minetest/minetest/issues/2352 -- Unused variable |
06:00 |
Zeno` |
why do I *always* type 3 and 5 backwards? |
06:00 |
Zeno` |
#2532 |
06:00 |
ShadowBot |
https://github.com/minetest/minetest/issues/2532 -- Update minetest.po (Japanese) by Rui914 |
06:01 |
Zeno` |
ShadowNinja, or are you doing something with gettext() before that can be merged? |
06:01 |
ShadowNinja |
Zeno`: Nope. |
06:01 |
Zeno` |
ok to merge then? |
06:02 |
ShadowNinja |
If it's good, sure, I haven't looked at it. |
06:02 |
hmmmm |
guys, i wonder if sometime soon we can go through *all* of the pull requests and merge as many as possible |
06:02 |
ShadowNinja |
(And I don't know Japanese) |
06:02 |
hmmmm |
or take some sort of action on all of them |
06:02 |
Zeno` |
Well I can't read Japanese but Rui has done all the previous translations |
06:02 |
Zeno` |
(well the last 3 at least) |
06:03 |
ShadowNinja |
BTW, I'm working on adding multi-socket support (as in listen=1.2.3.4:3000 [::1]:30001). |
06:04 |
Zeno` |
I'll merge it because there have been no issues with his previous translations |
06:04 |
Zeno` |
The Japanese language must move very quickly because there's always updates to it |
06:05 |
Zeno` |
multi-socket... for extra speed! |
06:06 |
Zeno` |
hmmmm, it doesn't seem to matter how many are merged those same 80 or so still remain :/ |
06:06 |
Zeno` |
they're like... rocks |
06:08 |
hmmmm |
we can do it |
06:15 |
Zeno` |
hmm |
06:16 |
Zeno` |
well, there is a lot of rebasing that would be needed |
06:19 |
|
neoascetic joined #minetest-dev |
06:20 |
|
Megaf joined #minetest-dev |
06:24 |
neoascetic |
3rd try. Could someone tell me why do we have this rule, please? :) https://github.com/minetest/mi[…]ent_cao.cpp#L1496 |
06:24 |
neoascetic |
https://github.com/minetest/minetest/blob/master/src/content_cao.cpp#L1496 |
06:25 |
hmmmm |
i think whether items are visible on the player or not should be up to the server |
06:28 |
neoascetic |
Sorry, didn't get it... This is client-related thing. What I want is to add sprite entity and attach it to the player. But when I touch it, it hides. Isn't this a bug? |
06:29 |
hmmmm |
you just referred to it as a rule before |
06:30 |
neoascetic |
Yeah, but WHY this rule exist? I sure it shouldn't |
06:35 |
|
chchjesus joined #minetest-dev |
06:41 |
hmmmm |
maybe it would be like cheating if other players knew what they were wielding |
06:41 |
hmmmm |
in any case, here's the exact commit where it happened: https://github.com/minetest/minetest/commit/756db8174aa6a05eb998cfcec8eb5127053c5ea9#diff-722710b5ecd9db42e7dd785dd517e186R1418 |
06:44 |
|
Krock joined #minetest-dev |
06:54 |
Zeno` |
wtf is STR_HELPER? |
06:54 |
hmmmm |
a very helpful macro |
06:54 |
Zeno` |
heh, yeah but.... it's not defined anywhere |
06:55 |
Zeno` |
https://github.com/minetest/minetest/blob/93fcab952b28f4db39d9326b83f14cbd86c0cf17/build/android/Makefile#L724 |
06:55 |
neoascetic |
hmmmm > maybe it would be like cheating if other players knew what they were wielding |
06:55 |
neoascetic |
but... why? |
06:55 |
hmmmm |
i don't know ask celeron |
06:55 |
Zeno` |
I assume that it used to be STRINGIFY and it must have forgotten to be updated... I'll just remove that line I think because STR() is being redefined |
06:56 |
hmmmm |
huh |
06:56 |
Zeno` |
oh I see |
06:56 |
hmmmm |
STR_HELPER is defined right above it |
06:56 |
hmmmm |
did you miss that? |
06:56 |
Zeno` |
it's right above it |
06:56 |
Zeno` |
I must have |
06:56 |
hmmmm |
great job |
06:56 |
Zeno` |
I'll remove them both :) |
06:56 |
hmmmm |
:( minetest crashes on my new installation |
06:58 |
Zeno` |
you can't blame me for missing where it was defined |
06:58 |
Zeno` |
I have a very small screen |
07:11 |
|
Hunterz joined #minetest-dev |
07:12 |
Zeno` |
I don't like all these preprocessor redefinitions being triggered by the android build |
07:14 |
hmmmm |
hmm |
07:14 |
hmmmm |
what do you think would be a better name for "things related to map generation that are registered before execution" than "gen element" |
07:16 |
Zeno` |
mapgen item? |
07:16 |
hmmmm |
GenItem? |
07:16 |
hmmmm |
GenItem, DefElement, ?? |
07:16 |
hmmmm |
DefElem? |
07:17 |
Zeno` |
GenItem sounds like General Item |
07:17 |
hmmmm |
GenerationItem |
07:18 |
hmmmm |
DefElement then? |
07:18 |
Zeno` |
Def? |
07:18 |
hmmmm |
Definition |
07:18 |
hmmmm |
if you notice a lot of older code is for a "ThingDef" |
07:18 |
hmmmm |
and then there are ThingDefManagers |
07:19 |
Zeno` |
yeah but is this specific to mapgen? |
07:19 |
hmmmm |
yeah |
07:19 |
hmmmm |
well i don't know because with client side scripting, a few of these definitions are going to be transferred over to the client |
07:19 |
hmmmm |
(i.e. biomes in particular) |
07:20 |
hmmmm |
and what about hud |
07:20 |
Zeno` |
hmm |
07:20 |
hmmmm |
the idea behind a hud is the same |
07:20 |
hmmmm |
you register the definition of some thing to be displayed on some client's UI |
07:20 |
hmmmm |
HudDef |
07:20 |
Zeno` |
MapgenDef ? |
07:21 |
hmmmm |
I think what is currently a GenElement may be expanded to other things |
07:21 |
hmmmm |
I mean we use these "Def" things everywhere |
07:21 |
hmmmm |
with ItemDef, NodeDef, SoundDef, |
07:21 |
hmmmm |
what if they were all unified |
07:21 |
|
jin_xi joined #minetest-dev |
07:21 |
hmmmm |
each has a unique ID |
07:21 |
Zeno` |
I guess with the current scheme ItemThing would be just as intuitive |
07:22 |
Zeno` |
But ItemDef has always sounded ok to me, so that's a bad example |
07:22 |
Zeno` |
MapgenThingDef |
07:22 |
hmmmm |
what if it was just a Def? |
07:22 |
hmmmm |
class BiomeDef : public Def { |
07:23 |
|
nore joined #minetest-dev |
07:23 |
Zeno` |
might be ok |
07:23 |
hmmmm |
what if it were a DefElem? |
07:23 |
Zeno` |
at what all the "Defs" have in common |
07:24 |
hmmmm |
they all can get CRUDed, they all have some ID numbers (some of them share the namespace though, such as items and nodes) |
07:24 |
hmmmm |
they all have string names |
07:25 |
Zeno` |
worth pondering. hth, didn't realise the time! |
07:37 |
|
blaze joined #minetest-dev |
07:43 |
Krock |
#2479 can be closed, that bug has been solved |
07:43 |
ShadowBot |
https://github.com/minetest/minetest/issues/2479 -- connect_to_raillike group doesnt work as it should |
07:54 |
|
nrzkt joined #minetest-dev |
07:54 |
nrzkt |
good news ! |
07:54 |
nrzkt |
google will remove Multicraft from playstore :) |
07:54 |
jin_xi |
nobody cares |
07:55 |
nrzkt |
you are not everybody :) |
07:56 |
neoascetic |
but why? |
07:56 |
nrzkt |
this permit users to switch to the original minetest app, and this is good for us, because more users = more feedback |
07:56 |
nrzkt |
because we do a DCMA request |
07:56 |
neoascetic |
they broke the license? |
07:56 |
nrzkt |
they study the problem themselves, that take 2 weeks and now they think they must remove the app |
08:00 |
ShadowNinja |
nrzkt: It's DMCA. And I thought Multicraft was a legal port. |
08:02 |
nrzkt |
when the report was done no source was available |
08:03 |
nrzkt |
good job with your commits this night ShadowNinja :) |
08:04 |
neoascetic |
But sources must be provided by request, not but default, am I right? |
08:05 |
ShadowNinja |
Yes neoascetic. (AFAIK) |
08:06 |
neoascetic |
So, what the problem with MultiCraft? |
08:06 |
nrzkt |
and what about the monetization of our work ? |
08:06 |
neoascetic |
just curious |
08:06 |
ShadowNinja |
Of course there has to be a working contact for that. |
08:06 |
neoascetic |
What's wrong with monetization? |
08:06 |
ShadowNinja |
nrzkt: LGPL allows that. |
08:06 |
neoascetic |
yep |
08:07 |
ShadowNinja |
(as does the GPL, although in a more limited form) |
08:07 |
nrzkt |
maybe, but everybody can take our work and make money with it, and personaly i don't agree. If i'm doing this work for minetest it's not for fatten somebody |
08:08 |
ShadowNinja |
nrzkt: Just fatten yourself instead. :-P |
08:08 |
nrzkt |
no, because i'm not the only developer |
08:09 |
neoascetic |
DCMA is bullshit |
08:09 |
jin_xi |
i think forks are legit and so is making money. DMCA sucks |
08:09 |
nrzkt |
and if i make money on minetest it's not normal if i was the only developer to get money because we are a community |
08:09 |
ShadowNinja |
neoascetic: DMCA! |
08:09 |
nrzkt |
DMCA, i do a mistake :p |
08:09 |
jin_xi |
g/D/Y \o/ |
08:09 |
nrzkt |
YMCA :D |
08:10 |
ShadowNinja |
Digital Millennium Copyright Act |
08:10 |
neoascetic |
anyway, it sucks |
08:11 |
jin_xi |
neoascetic: sorry i was mistaken when i assumed you could attach stuff to player. |
08:12 |
neoascetic |
jin_xi, I think this is a bug: set_attach doesn't work for player |
08:13 |
neoascetic |
nrzkt if I will setup a payed server (for example), will you also apply DMCA to me? |
08:14 |
nrzkt |
no |
08:14 |
nrzkt |
if you redistribute the sources properly |
08:15 |
nrzkt |
and you don't forget to mention your users that your server is running a minetest fork and quoting the original sources |
08:16 |
neoascetic |
ok, am I right that mods may be closed-source since it some kind of library and don't compiled statically with minetest? |
08:16 |
nrzkt |
of course |
08:16 |
nrzkt |
only the modifications to minetest core and minetest_game must be redistributed |
08:17 |
nrzkt |
and some other mods too if the licence tell it |
08:18 |
ShadowNinja |
neoascetic: They won't be allowed soon when mod security goes in though, since Lua doesn't do sanity checks on bytecode. |
08:18 |
ShadowNinja |
(although obfuscation will still work) |
08:19 |
ShadowNinja |
Aaand I'm off. o/ |
08:19 |
neoascetic |
wait |
08:19 |
nrzkt |
good night ShadowNinja, and good job :p |
08:19 |
neoascetic |
what if I run mods on server? |
08:19 |
neoascetic |
they not passed to client, right? |
08:20 |
ShadowNinja |
neoascetic: Yep, not yet, although that's TODO. |
08:20 |
neoascetic |
ok, good night then :) |
08:20 |
nrzkt |
ShadowNinja: this way must be securised properly , because we mustn't let the users to download backdoor mods |
08:30 |
Krock |
mhm I get a crash whenver I leave a singleplayer world but can't get the source of it. That debug viewer is confusing |
08:31 |
|
Calinou joined #minetest-dev |
08:39 |
|
FR^2 joined #minetest-dev |
08:48 |
|
nrzkt joined #minetest-dev |
08:49 |
nrzkt |
ShadowNinja: for http://irc.minetest.ru/minetest-dev/2015-03-28#i_4203178 it's normal, we don't use the new packets at this moment, it's too early and the new protocol design is incomplete. We are using the old way at this moment. |
08:49 |
nrzkt |
I need to work on it but i'm a bit busy these days, i will rework on it in next days |
08:49 |
neoascetic |
so, can someone say something against #2485 ? |
08:49 |
ShadowBot |
https://github.com/minetest/minetest/issues/2485 -- Simplify custom games packaging by neoascetic |
08:55 |
|
kilbith joined #minetest-dev |
09:04 |
|
selat joined #minetest-dev |
09:33 |
Krock |
Commit 56594 destroys the translation. Could the pointer variable be the reason for that? |
09:47 |
sfan5 |
nrzkt: wasn't multicraft a legal fork? |
09:48 |
nrzkt |
at the moment of the DMCA publication no, and i cannot stop it when it's sent because there is no following interface on google. |
09:49 |
nrzkt |
moreover, sources are not updated on github whereas the android build was updated |
09:51 |
kilbith |
legal != moral |
09:51 |
kilbith |
making money on the work of others ain't moral |
09:51 |
|
Jordach joined #minetest-dev |
09:51 |
sfan5 |
DMCA is about legal compliance not moral compliance |
09:53 |
nrzkt |
google validate the demand, i think they verify the thing, because the request was done more than 1 month ago |
09:55 |
|
blaze joined #minetest-dev |
10:26 |
Krock |
Debugger output of the crash caused by leaving a singleplayer world: http://pastebin.com/GRmjNkpv I couldn't find any helpful information in the .dmp file, so I ran minetest.exe in the debugger application |
10:27 |
|
Zeno` joined #minetest-dev |
10:35 |
Zeno` |
ugh... forgot to create a branch :/ |
10:40 |
|
Krock joined #minetest-dev |
10:43 |
Zeno` |
#2569 brb |
10:43 |
ShadowBot |
https://github.com/minetest/minetest/issues/2569 -- Android fix buildbugs by Zeno- |
11:00 |
|
SopaXorzTaker joined #minetest-dev |
11:11 |
|
MinetestForFun joined #minetest-dev |
11:14 |
Zeno` |
celeron55, https://github.com/minetest/minetest/commit/4d744cf87ad1cd108d125c58559cef4316e80a70#diff-d69c7583ef1ef0cddda66ac4cabfe779R142 |
11:15 |
Zeno` |
^--- I think that change (to builtin/mainmenu/init.lua only) needs to be reverted. 800x600 doesn't work, for example. |
11:15 |
Zeno` |
for main menu I think all platforms need to use tv_main:set_fixed_size(false) |
11:22 |
neoascetic |
~tell Taoki Could you explain why nothing can be attached to the player, please? https://github.com/minetest/minetest/commit/756db8174aa6a05eb998cfcec8eb5127053c5ea9#diff-722710b5ecd9db42e7dd785dd517e186R1418 |
11:22 |
ShadowBot |
neoascetic: O.K. |
11:45 |
Krock |
neoascetic, you know, that commit is 3 years old? |
11:47 |
neoascetic |
and what? he is the last who may know the reasons :) |
11:48 |
Zeno` |
neoascetic, perhaps it might be easier to explain why you think it's a problem |
11:49 |
Zeno` |
it'll certainly be faster :) |
11:50 |
neoascetic |
okay, I just want to attach something to the player. that's it |
11:50 |
Zeno` |
and it doesn't attach to them? |
11:50 |
Zeno` |
being attached and being visible are two different things... |
11:50 |
neoascetic |
yes |
11:50 |
Krock |
That's already possible, look at the wielditems in your hand |
11:51 |
neoascetic |
https://github.com/minetest/minetest/commit/756db8174aa6a05eb998cfcec8eb5127053c5ea9#diff-722710b5ecd9db42e7dd785dd517e186L1441 |
11:51 |
Krock |
(a mod who adds cubic entities to show the current item) |
11:51 |
neoascetic |
ok, I'll take a look. maybe I doing something wrong |
12:00 |
neoascetic |
Krock can you be more precise? what the mod name you are talking about? wield3d? |
12:00 |
Krock |
Yeah, that one. |
12:05 |
neoascetic |
Krock, great, you a right, it works for non-local players |
12:05 |
celeron55 |
Zeno`: but then people complain about font sizes relative to the UI and whatever |
12:06 |
neoascetic |
but what if I want local player be able to see the attached thing too? |
12:07 |
celeron55 |
Zeno`: you can revert it if you take care of those complaints |
12:07 |
Krock |
neoascetic, F7 doesn't show it? |
12:08 |
neoascetic |
nope |
12:08 |
neoascetic |
local player unable to see what is attached to it |
12:08 |
Krock |
then create a pull request :P |
12:08 |
neoascetic |
yeah, that's why I am asking for what reason these things are hidden |
12:09 |
|
leat joined #minetest-dev |
12:09 |
Krock |
I think you only should show it in 3rd person view because it may result in some strange effects :P |
12:10 |
neoascetic |
it neither shows in 3rd person view nor 1st person view |
12:16 |
Zeno` |
celeron55, I remember the debate |
12:17 |
Zeno` |
From memory it was the complaints were more related to in-game formspecs rather than the mainmenu, but I'll think about it some more |
12:18 |
Zeno` |
celeron55, I'm not suggesting I revert the whole commit... just lines that affect main menu |
12:18 |
Zeno` |
anyway, bbl :) |
12:46 |
|
Zeno` joined #minetest-dev |
12:47 |
Zeno` |
ok, I've just had a second email from one of the users on my server |
12:47 |
Zeno` |
nrzkt, are you issuing takedown notices on behalf of minetest? |
12:47 |
|
Tablet_One joined #minetest-dev |
12:48 |
Zeno` |
celeron55 you agree with this ^^^ ? |
12:48 |
Zeno` |
TBH I don't care WHAT client my users use so long as their client complies with the LGPL |
12:49 |
nrzkt |
not since more than 1 month, when a user doesn't give its sources, not since this time |
12:49 |
nrzkt |
you talk about google play store ? |
12:49 |
Zeno` |
which client's have not given source code? |
12:49 |
Zeno` |
well, yes of course. 90% of my users use android |
12:50 |
nrzkt |
multicraft sources wasn't release when the DMCA was done |
12:50 |
Zeno` |
so it's only multicraft? |
12:50 |
nrzkt |
right |
12:51 |
Calinou |
GPL/LGPL 2.1 do not have a grace period |
12:51 |
nrzkt |
one last multicraft release is on play store and is legal, i think, because the sources are on github, but i there is a new release without a github updated it will not be legal |
12:51 |
Zeno` |
where is their source code? |
12:51 |
Calinou |
GPL/LGPL v3 have a 30 day grace period, in which violations can be fixed |
12:51 |
nrzkt |
github, monte48 |
12:51 |
nrzkt |
we are in 2.1 |
12:52 |
Zeno` |
it was published in february! |
12:52 |
neoascetic |
btw does the license affects network protocol? |
12:52 |
Calinou |
yes |
12:52 |
Zeno` |
so there was no violation? |
12:53 |
Calinou |
actually it's a legally gray area |
12:53 |
nrzkt |
the application was release before that |
12:53 |
Calinou |
whether you can reimplement a protocol by reverse engineering |
12:53 |
sfan5 |
neoascetic: why would the license _not_ affect the protocol? |
12:53 |
sfan5 |
Calinou: depends on the country your're in |
12:53 |
Calinou |
Manic Digger got a C&D letter from Notch for implementing Minecraft protocol |
12:53 |
neoascetic |
because implementation is different |
12:53 |
Calinou |
reverse engineering is legal in EU for interoperability purposes (so exploitable…) |
12:53 |
Zeno` |
I dunno... who authorised the DMCA takedown notice? |
12:54 |
Zeno` |
and where is the notice, actually |
12:54 |
Megaf |
Hi all, how to I static link the libraries when compiling minetest? |
12:55 |
sfan5 |
Megaf: set the link flags to "-static" |
12:55 |
neoascetic |
what if I release a closed-source client (not based on minetest's code, but which uses its protocol) for minetest servers? |
12:55 |
|
MinetestForFun joined #minetest-dev |
12:55 |
Zeno` |
At least now I know why my user stats have dropped off |
12:55 |
nrzkt |
yeah, it's why the world of warcraft mangos/trinitycore emulator can exists, because the protocol is not a reason for a DMCA :) |
12:56 |
Zeno` |
I just don't understand why you are issuing DMCA takedown notices, nrzkt |
12:56 |
nrzkt |
Zeno` i don't know when google do something for the app, they send me a mail this night, but i forgot the DCMA done more than 1 month ago |
12:56 |
Calinou |
neoascetic, you are probably allowed to |
12:57 |
Calinou |
but as always, consult a lawyer before :) |
12:57 |
|
prozacgod joined #minetest-dev |
12:57 |
Zeno` |
great, so 90% of my users cannot connect now |
12:58 |
Zeno` |
they were using the ONE LGPL conforming android version out there |
12:58 |
Zeno` |
not what do I suggest they try? BuildCraft? |
12:58 |
nrzkt |
minetest |
12:58 |
nrzkt |
we have a official client on play store |
12:58 |
nrzkt |
why using a fork ? |
12:59 |
Zeno` |
I dunno... ask the kids who connect to my server :) |
12:59 |
Zeno` |
you are allowed to make money from LGPL btw. Did BuildCraft even make money? (I can't check because there is no page for it now) |
13:00 |
sfan5 |
i think they had ads |
13:00 |
Zeno` |
err MultiCraft* |
13:00 |
kilbith |
it might be forbidden to mix ads with a software with LGPL |
13:00 |
Zeno` |
ads? With src code published? How is that an LGPL violation? |
13:01 |
celeron55 |
by the way, if/when making DMCA takedown notices, make sure to act as yourself and on the part of code that you have made |
13:01 |
celeron55 |
not as or on behalf of minetest |
13:01 |
nrzkt |
celeron55: okay :) |
13:01 |
Zeno` |
I'm sorry, but if you what a "Free License" then you must respect freedom |
13:01 |
celeron55 |
because you have no right to do that |
13:01 |
celeron55 |
and can get everyone in trouble |
13:01 |
Zeno` |
and that freedom (under this license) includes making money from it |
13:02 |
Zeno` |
(I don't necessarily like it, but that's the way it is) |
13:02 |
nrzkt |
then we can make money for it and pay minetest infrastructure with it ? |
13:02 |
Calinou |
<kilbith> it might be forbidden to mix ads with a software with LGPL |
13:02 |
Calinou |
only if the ad library is proprietary |
13:02 |
Jordach |
Calinou, probably is: it's google ads |
13:02 |
sfan5 |
uh, what kind of infrastructure do we need to pay for? |
13:02 |
Calinou |
then we can DMCA! |
13:02 |
nrzkt |
the ad library is proprietary, it's google lib |
13:02 |
celeron55 |
really nrzkt probably cannot legally issue a takedown notice on multicraft or such because they likely use old enough code to not have nrzkt's stuff in them |
13:02 |
Zeno` |
no no no! The LGPL *can* be use is proprietary software |
13:03 |
Zeno` |
geez |
13:03 |
Calinou |
the LGPL is not as different as the GPL as you think |
13:03 |
Zeno` |
anyway nrzkt should not have been the one to issue it |
13:03 |
Megaf |
sfan5: Actually, that means -DCMAKE_CXX_CREATE_STATIC_LIBRARY=1 I believe |
13:04 |
nrzkt |
celeron55: noticed. Not more DMCA to do, because each application on play store now respect the LGPL as i see, they all include the minetest original sources reference |
13:04 |
sfan5 |
Megaf: no |
13:04 |
Megaf |
hm |
13:04 |
sfan5 |
Megaf: that option sounds like it will force cmake to create a static lib when it is used to create a lib |
13:04 |
Zeno` |
next thing people will be starting to say you can't use BSD-licensed code in commercial projects |
13:04 |
Megaf |
In either case I have to have the static libs installed on my system. Or not? |
13:05 |
sfan5 |
uh, wat |
13:05 |
celeron55 |
you can use windows libraries from GPL/LGPL code, why is google's ad library on google's platform different from that? |
13:05 |
nrzkt |
personnaly i use BSD licence when i don't care about source code destination, but AGPL or LGPL to protect the code copyright. |
13:05 |
sfan5 |
Megaf: you don't understand static libs |
13:05 |
Zeno` |
I hate people making money from minetest, but if they comply with the license then so what? |
13:05 |
nrzkt |
maybe the licence could be changed for NC licence ? |
13:05 |
Megaf |
sfan5: dynamic libs are .so, they are on the system, static libs are the .a files |
13:05 |
Zeno` |
then it's not an engine |
13:05 |
nrzkt |
what is the licence of our textures and meshes ? |
13:05 |
sfan5 |
cc-by-sa |
13:05 |
Zeno` |
it would be like changing the license of irrlicht to NC |
13:06 |
Zeno` |
nobody would use it |
13:06 |
sfan5 |
Megaf: static libs are statically linked to the executable (= the executable includes the libs) |
13:06 |
nrzkt |
we have BY ? and nobody cares about the BY ? this mean they must ask us if they want to use it, no ? |
13:06 |
sfan5 |
no |
13:06 |
Megaf |
sfan5: thats what I wish |
13:06 |
sfan5 |
it means attribution |
13:07 |
Calinou |
<celeron55> you can use windows libraries from GPL/LGPL code, |
13:07 |
nrzkt |
right |
13:07 |
Calinou |
they are system libraries |
13:07 |
nrzkt |
Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use. |
13:07 |
Calinou |
the Google ad libraries are not system libraries |
13:07 |
Calinou |
+nrzkt> maybe the licence could be changed for NC licence ? |
13:07 |
Calinou |
fuck you |
13:07 |
Calinou |
just, go away |
13:07 |
Calinou |
don't use CC licenses for software. |
13:07 |
sfan5 |
Megaf: this is why shared libs exist, if you update a shared lib all programs automatically use the new one |
13:07 |
Calinou |
http://freedomdefined.org/Licenses/NC |
13:07 |
nrzkt |
i don't tell creative common, i tell a non commercial licence, where do i talk about CC ? |
13:07 |
Calinou |
I hope to never hear this shit again |
13:08 |
nrzkt |
i only talk about the minetest_game components which are under CC-by-SA |
13:08 |
sfan5 |
Megaf: with static libraries you would need to re-link each executable |
13:08 |
sfan5 |
nrzkt: i think Calinou meant NC |
13:08 |
neoascetic |
I've even want to release minetest on Apple's app store once. But one-year developer license cons something about $200. Am I allowed to take money for minetest in this circumstances, nrzkt? |
13:08 |
sfan5 |
Megaf: -DCMAKE_EXE_LINKER_FLAGS="-static" |
13:08 |
sfan5 |
neoascetic: $99 |
13:08 |
Calinou |
neoascetic, yes, but ads are bullshit. |
13:08 |
sfan5 |
neoascetic: yes |
13:08 |
nrzkt |
neoascetic, i think the donations are good for that |
13:09 |
sfan5 |
nrzkt: pff, you won't get any donations |
13:09 |
Megaf |
sfan5: Yep, I was getting to that now, reading about cmake, thanks a million for your help |
13:09 |
Calinou |
sfan5, present your donation scheme properly |
13:09 |
Calinou |
lichess.org/donate |
13:09 |
Calinou |
not enough for you? |
13:09 |
sfan5 |
Calinou: people don't like donating, that's the truth |
13:09 |
Calinou |
people really do |
13:09 |
Calinou |
not everyone is selfish |
13:09 |
nrzkt |
sfan5: it depends |
13:10 |
nrzkt |
sfan5: and get 10$ is better than 0$ :) |
13:10 |
sfan5 |
"people don't like donating" does't mean "nobody donates" |
13:10 |
sfan5 |
+n |
13:13 |
Zeno` |
this is not the point |
13:13 |
nrzkt |
does this respect the LGPL ? https://play.google.com/store/apps/details?id=com.k1n9.minetest |
13:13 |
Zeno` |
the point is was the takedown notice valid in regards to whether or not the stupid app complied with the LGPL (and as far as I can see it did) |
13:14 |
Zeno` |
I dunno about Mine World... do they publish source code? |
13:14 |
Calinou |
no |
13:14 |
nrzkt |
https://github.com/att-kin9/MineWorld |
13:14 |
Zeno` |
ok well it doesn't |
13:14 |
nrzkt |
it's on the link i show you :p |
13:14 |
sfan5 |
it does respect the lgpl |
13:15 |
Zeno` |
yes it does if the src is on github |
13:15 |
Zeno` |
so, yeah, it complies |
13:15 |
nrzkt |
there are no minetest forks on play store which doesn't respect our licence at this moment as i see |
13:16 |
Zeno` |
they can charge a billion $ per download if they publish the source code |
13:16 |
neoascetic |
even if sources are on on github it still may respect LGPL if a) LGPL notice is in description b) src may be sent (in any way) by request |
13:16 |
neoascetic |
* no on |
13:17 |
Zeno` |
oh yeah.. it doesn't even have to be on there... just supplied if requested |
13:17 |
Zeno` |
neoascetic is correct |
13:18 |
Zeno` |
I think people should understand licenses before they submit DMCA takedown requests |
13:19 |
Zeno` |
they should also damn well be the right person to do so :/ |
13:19 |
* Zeno` |
does some calming exercises |
13:20 |
Zeno` |
hopefully my users come back... I guess I can save some money and shutdown the server if they don't at least |
13:20 |
nrzkt |
you users aren't stupid :) |
13:20 |
Zeno` |
you don't know them |
13:21 |
Zeno` |
some are most surely not |
13:21 |
Zeno` |
others... not so sure |
13:21 |
Zeno` |
anyway minetest "official" is broken atm |
13:23 |
nrzkt |
why broke N? |
13:23 |
Zeno` |
sound doesn't work, plus some other features |
13:23 |
Zeno` |
I mean broken at HEAD |
13:23 |
nrzkt |
oh, minetest on play store doesn't use HEAD and master, only stable-0.4 |
13:24 |
Zeno` |
#2569 |
13:24 |
ShadowBot |
https://github.com/minetest/minetest/issues/2569 -- Android fix buildbugs by Zeno- |
13:24 |
Zeno` |
ah, ok |
13:24 |
nrzkt |
and i release it manually because i must sign the apk with my keystore |
13:27 |
Megaf |
Folks, when static linking minetest I get this error. http://paste.debian.net/plain/163658 |
13:33 |
sfan5 |
Megaf: you can't link opengl, openal and luajit statically |
13:35 |
Megaf |
makes sense, any idea how do I tell cmake to not link those? |
13:36 |
|
crazyR joined #minetest-dev |
13:36 |
|
crazyR joined #minetest-dev |
13:37 |
sfan5 |
Megaf: your linking command needs to look like [all other libs] -Wl,-Mdynamic -lOpenGL -lopenal /usr/local/lib/libluajit-5.1.so -Wl,-Mstatic |
13:38 |
sfan5 |
Megaf: i don't think you can get cmake to do that, but you can change the linking cmd in src/CMakeFiles/minetest.dir/link.txt |
13:48 |
|
jin_xi joined #minetest-dev |
14:13 |
|
nrzkt joined #minetest-dev |
14:15 |
nrzkt |
i think i will work on the session system next week/month because we have some problems with it. Player objects are not correctly removed and the handling is sometimes incorrect. I experienced this easily. I disconnect and reconnect and a variable i set with a mod (which is not saved) keep the same value and some pointers are also valid. Player* object isn't deleted properly, some things must be rewrote. |
14:19 |
|
Zeno` joined #minetest-dev |
15:26 |
|
luizrpgluiz joined #minetest-dev |
15:27 |
luizrpgluiz |
celeron55: You know etha? |
15:39 |
|
selat joined #minetest-dev |
16:00 |
|
Tablet_One joined #minetest-dev |
16:04 |
Zeno` |
ok, I'll put it right out there because there seems to be a lot of confused people |
16:05 |
Zeno` |
I am going to make my own fork of minetest (I will of course keep contributing back to here and hopefully everything in my fork gets committed) |
16:05 |
Zeno` |
I am going to sell my minetest fork for $$ |
16:05 |
Zeno` |
who has a problem with that, and why |
16:06 |
Zeno` |
(this is kinda hypothetical... I'm not really forking, I just don't understand some people's attitudes or perceptions) |
16:06 |
kilbith |
how it's worth to buy your fork if you keep contributing to MT ? |
16:07 |
Zeno` |
each copy of my minetest fork I'll sell for $89.95 |
16:07 |
Zeno` |
kilbith, it's not. The user (market) has that choice |
16:07 |
Zeno` |
You'd be stupid to buy my fork |
16:07 |
Zeno` |
Doesn't mean my fork is not ok |
16:07 |
kilbith |
this is why i've asked |
16:08 |
Zeno` |
If we don't want people selling forks then we have to make OUR VERSION THE BEST |
16:08 |
Zeno` |
so nobody even bothers with the forks |
16:10 |
Zeno` |
They can still sell forks of course, but why would anyone bother if the "official" version was better and just as easily available? |
16:12 |
Zeno` |
sending a DMCA on a competing product that is 100% conforming though... |
16:12 |
Zeno` |
that's probably illegal |
16:13 |
Zeno` |
the only one's in the wrong here in "minetest", and I guess that's why I'm angry |
16:13 |
Zeno` |
s/in/is |
16:15 |
Calinou |
thank the market economy :P |
16:18 |
Zeno` |
even if sending a false or misleading DMCA takedown request *was* legal, the whole DMCA is wrong |
16:18 |
Zeno` |
DMCA should never have been enacted nor enforced |
16:20 |
|
proller joined #minetest-dev |
16:26 |
Zeno` |
in a PM to someone I said this (and it sums up how I feel): |
16:26 |
Zeno` |
<Zeno`> as I said I don't like it either |
16:26 |
Zeno` |
<Zeno`> but I *will* defend freedom |
16:26 |
Zeno` |
<Zeno`> whether I like it or not :( |
16:26 |
|
VanessaE joined #minetest-dev |
16:27 |
|
hmmmm joined #minetest-dev |
16:32 |
hmmmm |
Zeno`, yeah, but at the same time it's being used against us |
16:32 |
hmmmm |
minetest was banned from the play store because of that GPL violator |
16:34 |
Zeno` |
I don't know the history of that. The last I searched minetest got removed for using "spam keywords" |
16:34 |
hmmmm |
the spam keywords being a similar description to the clone |
16:34 |
Zeno` |
There was no mention of another app |
16:34 |
Zeno` |
and there was no DMCA takedown notice |
16:36 |
hmmmm |
i don't think they ever told us about the other app, we were supposed to just guess |
16:36 |
Zeno` |
either way, a DMCA takedown notice on that other application (can't even remember its name... buildcraft?) was not the correct approach and was a false report |
16:36 |
Zeno` |
the correct approach would have been say "hey, we're the real minetest and they're using OUR description" |
16:37 |
hmmmm |
right, the correct approach would be to kindly ask the other person for their modifications to the source, would it not? |
16:37 |
hmmmm |
both of those things |
16:37 |
Zeno` |
yeah it's on github |
16:37 |
Zeno` |
we've already established that |
16:37 |
Zeno` |
I'm sorry, it just makes us look silly |
16:38 |
hmmmm |
i agree, that was an embarassing move... |
16:50 |
hmmmm |
hey Zeno`, what was the reason why you opted not to use IrrlichtDevice::setGammaRamp? |
16:51 |
|
disableclouds joined #minetest-dev |
16:57 |
|
nrzkt joined #minetest-dev |
17:11 |
|
ElectronLibre joined #minetest-dev |
17:11 |
|
Tablet_One joined #minetest-dev |
17:13 |
Zeno` |
hmmmm, so long ago I cannot remember :( |
17:13 |
|
ElectronLibre joined #minetest-dev |
17:13 |
Zeno` |
I should have added a comment |
17:14 |
Zeno` |
perhaps it affected all textures and not just the "light"? |
17:33 |
hmmmm |
shrug |
17:34 |
hmmmm |
shouldn't it be named "brightness" instead of "gamma", in that case? |
17:35 |
|
Tablet_One joined #minetest-dev |
17:35 |
|
ElectronLibre joined #minetest-dev |
17:47 |
|
est31 joined #minetest-dev |
18:00 |
hmmmm |
hrm |
18:00 |
hmmmm |
do you think that CRC-4 is overkill for handle validity checking? |
18:01 |
hmmmm |
should make it parity instead |
18:06 |
|
roniz joined #minetest-dev |
18:08 |
nrzkt |
hmmmm: what do you want to validate with it ? |
18:08 |
hmmmm |
just a 32-bit handle passed between lua scripts and the engine |
18:09 |
nrzkt |
i think this is sufficient. Why would you want to check that ? |
18:09 |
Calinou |
what is this handle for? |
18:09 |
hmmmm |
for any Defs |
18:10 |
hmmmm |
whenever you call register_ore, register_decoration, register_biome, and in the future maybe even register_hud_element(), it'll return an opaque 32 bit id |
18:10 |
|
Tablet_One joined #minetest-dev |
18:10 |
hmmmm |
this way the end user can't possibly mix them up |
18:10 |
hmmmm |
and can't reuse old ones |
18:12 |
hmmmm |
maybe sounds as well, a SoundDef |
18:12 |
hmmmm |
and definitely GUI elements |
18:12 |
est31 |
what are those ids used for? |
18:13 |
hmmmm |
referencing the definition, or object, or whatever, referred to by the ID |
18:13 |
est31 |
and why is validation needed? |
18:13 |
hmmmm |
so the end user doesn't screw it up |
18:13 |
est31 |
? |
18:14 |
est31 |
also referencing how? in other lua calls? |
18:14 |
hmmmm |
yes |
18:14 |
hmmmm |
for example, let's say you use minetest.place_schematic("foobar.mts"); |
18:15 |
hmmmm |
that will return the ID of the "foobar.mts" registered schematic |
18:15 |
est31 |
yes like win32 api |
18:15 |
hmmmm |
so thereafter you can do minetest.place_schematic(foobar_id) |
18:15 |
hmmmm |
also all Defs have case-insensitive names |
18:16 |
est31 |
you mean filenames? |
18:16 |
hmmmm |
so a Biome might be referred to as "Jungle" or "jungle" or even "JUNGLE" but they all mean the same |
18:16 |
hmmmm |
yea, the filename bit is one thing I'm still not sure of the details on |
18:16 |
est31 |
names aren't ids |
18:16 |
hmmmm |
specifically for schematics (but later on might be more), the name of the schematic is assumed to be the filename if no explicit name parameter is specified |
18:17 |
hmmmm |
maybe certain Def types can be case sensitive and others aren't |
18:17 |
Calinou |
it should be consistent |
18:17 |
est31 |
yes |
18:17 |
hmmmm |
agreed |
18:17 |
Calinou |
there is no reason some stuff should be case sensitive, and some isn't |
18:17 |
hmmmm |
but what if one mod assumes it's capitalized "Jungle" and another uses "jungle" |
18:18 |
Calinou |
I am for case insensitivity, like we do for usernames |
18:18 |
hmmmm |
yeah but filenames |
18:18 |
hmmmm |
if somebody has sounds/AAHHH.vob and another is sounds/aahhh.vob, what then? |
18:19 |
jin_xi |
crash |
18:19 |
hmmmm |
so yeah, this is definitely Windows inspired, because it's a good language-independent way to pass around objects IMHO |
18:20 |
est31 |
I don't see any real beauty in handles. |
18:20 |
hmmmm |
language-independence! |
18:20 |
hmmmm |
inside the core, obviously, i'm going to be working with array indexes and pointers |
18:20 |
hmmmm |
just that interactions with lua are done with handles |
18:21 |
est31 |
so we have a number, thats ok and fine, but why then do some crc stuff to it? |
18:21 |
hmmmm |
so people don't mess it up on accident and refer to something else |
18:22 |
est31 |
you mean they dont add 2 to the number because it always worked for them? |
18:22 |
est31 |
they can still mess it up with crc sums |
18:22 |
hmmmm |
well this is intentionally made difficult to mess up |
18:25 |
est31 |
for me, its just additional complexity. What when mod A has registered a schematic, and mod B wants to use it too? |
18:25 |
hmmmm |
then they can reference it by name |
18:25 |
est31 |
then mod creator B has to ask A to make an API to hand over the ID |
18:26 |
est31 |
so those handles should only improve performance, nothing more? |
18:26 |
est31 |
fine with that. |
18:26 |
hmmmm |
well they're also a unique ID |
18:27 |
hmmmm |
each handle is unique, so that way you can't do core.clear_ore_definitions() core.register_ore({...} core.clear_ore_definitions() ... and have them be the same |
18:27 |
hmmmm |
so if somebody attempts to use an expired handle, it'll show up as invalid |
18:27 |
est31 |
handle expiration? |
18:27 |
est31 |
whats that for? |
18:28 |
hmmmm |
an invalidated one |
18:28 |
hmmmm |
because maybe some mod decided it's more important than the rest and cleared all the registered biomes, and then registered one of its own |
18:29 |
hmmmm |
when other mods come around to reference what they think is their biome with an ID of, say, 23, it'd reference that other mod's biome on accident |
18:29 |
hmmmm |
or maybe not even exist |
18:29 |
hmmmm |
here with this we can at least tell that it had been invalidated |
18:29 |
hmmmm |
"oh, another mod deleted that biome of yours" |
18:29 |
jin_xi |
are ores and biomes not in in registered_foo tables? |
18:29 |
hmmmm |
they are |
18:30 |
hmmmm |
the beauty of lua tables is that I don't have to modify *any* of that code to make this change |
18:31 |
hmmmm |
as long as nobody expects the undocumented behavior of biome/ore/deco/schematic IDs being sequential, everything will still work |
18:32 |
est31 |
still I dont see why CRC sums are needed for those |
18:32 |
est31 |
they are just numbers |
18:33 |
est31 |
"some stuff I get and don't touch" |
18:33 |
hmmmm |
we've had plenty of instances of 'just numbers' getting fudged up because of some wacky rounding that lua does |
18:33 |
est31 |
and if they touch it, then its their fault |
18:33 |
hmmmm |
like, remember the LuaVoxelManip index fiasco? |
18:33 |
est31 |
so its a hack around language problems... |
18:33 |
hmmmm |
everybody was convinced my shit was broken when it wasn't |
18:34 |
est31 |
that seems reasonable then. |
18:36 |
jin_xi |
it seems like overkill to me and i doubt any of these scenarios happen frequently, but yeah, its kinda neat |
18:36 |
est31 |
should be more than a parity bit though |
18:37 |
nrzkt |
i think we must use std::map instead of std::vector for our HUDs |
18:37 |
est31 |
although if lua does shit with numbers, then dont use them at all |
18:37 |
nrzkt |
in some case packets can be received in different order with HUD and this trigger this: void Game::processClientEvents(CameraOrientation *, float *): An engine assumption 'new_id == id' failed. |
18:38 |
nrzkt |
if we look at the HUD ids : 2015-03-28 19:33:04: ERROR[main]: 8/6 . 8 is the HUD received and 6 is the expected |
18:38 |
nrzkt |
the 7 and 8 arrives after, the client is too sensible and crash if we have this problem |
18:39 |
kahrl_ |
sounds like a case where previously reliable packets are now unreliable? |
18:39 |
kahrl_ |
reliable packets preserve order |
18:39 |
nrzkt |
hud is a reliable packet |
18:40 |
nrzkt |
only move and some activeobject are unreliable if you look at network/serveropcodes.cpp |
18:40 |
hmmmm |
est31: yeah, I am changing it to a parity bit and then I need to add 3 bits to some other places |
18:43 |
hmmmm |
currently a decoded handle consists of: http://fpaste.org/204220/68199142/ |
18:43 |
kahrl_ |
nrzkt: oh, some of them use channel 0 and some channel 1 |
18:43 |
kahrl_ |
not sure if that's intentional |
18:44 |
kahrl_ |
(some of the HUD messages, I mean) |
18:44 |
hmmmm |
that is not intentional |
18:44 |
hmmmm |
are reliable packets guaranteed to be ordered? |
18:44 |
kahrl_ |
hmmmm: within a channel, yes |
18:44 |
hmmmm |
ahhgh no, bad bad bad design! |
18:44 |
hmmmm |
that makes minetest UDP no better than TCP |
18:46 |
kahrl_ |
how would you do it? |
18:46 |
|
MinetestForFun joined #minetest-dev |
18:47 |
hmmmm |
I would define certain channels to be ordered and others not |
18:48 |
hmmmm |
instead of merely having reliable or unreliable, there should be a distinction between which individual features are desired for that channel |
18:48 |
est31 |
its stupid when commands you move some inventory stuff, and then trash it get reordered and then you trash the wrong things |
18:48 |
est31 |
s/you/to |
18:48 |
kahrl_ |
yeah, I guess one unordered reliable channel could be useful for some things |
18:48 |
hmmmm |
that being said, I don't think reliable/unreliable should be set on the packet level |
18:49 |
nrzkt |
est31 it's why MMORPG uses object UID's instead of positions :) |
18:49 |
kahrl_ |
(there's no point to having more than one, since you don't care about order anyway) |
18:49 |
hmmmm |
but rather at the channel level |
18:49 |
hmmmm |
we can't change that without breaking compat, though, so we're sort of stuck |
18:49 |
nrzkt |
hmmmm it's why i will rework all the layer to have a smaller layer and proper layer |
18:49 |
hmmmm |
well hold on now |
18:49 |
hmmmm |
what about enet? |
18:49 |
est31 |
all can be changed, just needs more complexity in handling |
18:49 |
hmmmm |
does that do what we want? we'll also gain compatibility with freeminer if that route is taken |
18:50 |
nrzkt |
i thought using native TCP + native UDP. One for reliability one for fast things |
18:50 |
hmmmm |
oh no don't mix tcp and udp that's bad |
18:50 |
hmmmm |
nrzkt: read this http://www.isoc.org/INET97/proceedings/F3/F3_1.HTM |
18:52 |
kahrl_ |
I wonder if there's any more recent studies about this |
18:52 |
kahrl_ |
there's been a lot of changes in TCP implementation since 1997... |
18:52 |
nrzkt |
hmmmm: these days that changed, RTC died |
18:52 |
nrzkt |
also, many providers now uses stateful firewalls, and TCP is better on this than UDP |
18:54 |
hmmmm |
quite possible, but instead of assuming that's the case i'd like to test it first |
18:55 |
kahrl_ |
selective ACK (the RFC appeared in 1996 but it was implemented later, I think), new congestion control parameters, to name a few |
18:55 |
hmmmm |
minetest can't afford to have a second screwup on the network layer |
18:56 |
nrzkt |
blizzard online games not, but they are using TCP. 500ms is the max to play in good condition for that games :) |
18:56 |
hmmmm |
latency is very important here |
18:57 |
hmmmm |
it's wrong to write off the massively increased latency as being acceptable because you assume MT is a specific genre |
18:57 |
hmmmm |
minetest is a game engine and needs to be good at everything |
18:57 |
hmmmm |
there are mods out there that make minetest an FPS |
19:01 |
nrzkt |
23ms of latency on blizzard's server with my connection and TCP :p |
19:02 |
hmmmm |
ya, your connection |
19:02 |
hmmmm |
once there's any bit of lossiness involved that number jumps quite a bit |
19:02 |
nrzkt |
~40ms with DSL |
19:02 |
nrzkt |
11 jumps to blizzard |
19:02 |
kahrl_ |
try satellite internet ;) |
19:02 |
hmmmm |
don't assume that everybody has the same connection as yours |
19:02 |
nrzkt |
satellite is not designed for FPS :p |
19:03 |
nrzkt |
right hmmmm, i have a quite good connection, not the best. |
19:03 |
nrzkt |
french connection is quite good generally |
19:03 |
kilbith |
french connection... :) |
19:03 |
hmmmm |
i think that's a pop culture reference but i'm not sure what it is |
19:04 |
hmmmm |
in any case, the more packet loss over TCP, the more latency |
19:04 |
Calinou |
they're quite bad, actually; South Korea and Japan have the best |
19:04 |
nrzkt |
Romania has best connections than france |
19:04 |
hmmmm |
what about US |
19:04 |
hmmmm |
we have the shittiest internet possible |
19:04 |
nrzkt |
but if you are around Paris, miam :D 100-750Mbps download 40-250 mbps upload :D |
19:05 |
nrzkt |
in fact the connection quality depends of the country surface |
19:06 |
kilbith |
*superficy |
19:06 |
Calinou |
no optic fiber here, despite two ISPs promising it |
19:06 |
nrzkt |
where are you Calinou ? nearly Bernadette Chirac ? :p |
19:07 |
Calinou |
Troyes |
19:07 |
nrzkt |
i see :) |
19:08 |
nrzkt |
then, yes hmmmm we need to do more tests |
19:09 |
nrzkt |
in fact the TCP part is quite ready, the only thing i need to handle is big packets which must be cutted, i'm thinking about different packet design |
19:09 |
hmmmm |
isn't there a length specifier |
19:10 |
hmmmm |
in any case there are entire *committees* dedicated to designing protocols |
19:10 |
hmmmm |
this shouldn't be something that one person makes up and that's it |
19:10 |
hmmmm |
there's going to be lots of discussion and lots of revision |
19:11 |
nrzkt |
i can limit the packet size, right, but the problem it not the packet sending, it's the packet receive :) |
19:12 |
nrzkt |
yes i could provide a patch for the TCP implementation, but before present it i want to present and merge a new session system. Our system is not good. Disconnection are not handled properly and a session is not really defined |
19:12 |
* ShadowNinja |
suggests SCTP. |
19:12 |
hmmmm |
I mean isn't there a length field inside the packet header already? |
19:13 |
nrzkt |
int recv(...) tell us how many bytes we receive |
19:13 |
ShadowNinja |
I'm working on multiple bind addresses now though, so please avoid conflicts. :-) |
19:13 |
hmmmm |
:) |
19:13 |
nrzkt |
okay ShadowNinja :p |
19:14 |
ShadowNinja |
(client and server works, but not singleplayer and some things like the menu need updating) |
19:14 |
nrzkt |
but the problem is: if we have a 4096 byte buffer and we receive a 4096 byte length data. is this packet complete or incomplete ? |
19:15 |
nrzkt |
i started to look at some current implementations, like apache |
19:15 |
kahrl_ |
is there any NAT yet that works with SCTP? |
19:17 |
kahrl_ |
(other than custom boxes running a full linux kernel or something like that) |
19:17 |
hmmmm |
hmm |
19:17 |
Krock |
nrzkt, I might be dumb but why not send a number that contains the length of the packet? |
19:17 |
nrzkt |
SCTP is a layer 4 protocol ? it's a bit difficult |
19:17 |
hmmmm |
if doc/protocol.txt is anything to go by, it seems that minetest packets don't include the length |
19:17 |
hmmmm |
:/ |
19:18 |
nrzkt |
Krock i thought about it, but i need to do tests with multiple clients to be sure, i thought sending a header with first packet to set the packet size and then read the corresponding bytes |
19:19 |
nrzkt |
SCTP is also a bit difficult to manage for many users, because it's a different protocol than TCP and UDP, it could be blocked by providers and also firewalling is not conventional |
19:19 |
hmmmm |
SCTP is a nice thought but ultimately not doable on a WAN |
19:20 |
kahrl_ |
also support for it in Windows looks non-existent |
19:20 |
nrzkt |
also the NAT was only designed in 2013, many provider devices not support it |
19:20 |
hmmmm |
does minetest really have that 32-bit id in every single packet header? |
19:21 |
nrzkt |
it seems, i do a packet capture today and i see a big header before the NetworkPacket :p |
19:21 |
hmmmm |
brb while I barf |
19:21 |
hmmmm |
I never looked too closely into the protocol, but I assumed there were sane design choices |
19:22 |
hmmmm |
thought that the 32 bit ID was only there for the startup/shutdown packets |
19:22 |
nrzkt |
now you understand why i want to change this ? :p |
19:22 |
nrzkt |
also it's easy to spoof peer_id and send wrong datas to server |
19:22 |
est31 |
O.o |
19:22 |
hmmmm |
that's an implementation detail though |
19:23 |
hmmmm |
what it should do is match up the claimed peer_id along with the sockaddr structure the server associated with that peer_id |
19:23 |
hmmmm |
and if it doesn't match, error |
19:23 |
hmmmm |
if the code doesn't do this currently that's pretty fucked |
19:23 |
hmmmm |
but it's not an inherent issue with the protocol |
19:23 |
nrzkt |
i remember it's the case, but because it's UDP, we doesn't care about that, spoof IP and peer_id and then do what you want |
19:24 |
hmmmm |
oh that's a bit tougher |
19:24 |
nrzkt |
i will rewrite all the session layer before any protocol change to ensure some things like peer_ids, sessions , addresses and (future) associated sockets/threads) |
19:24 |
est31 |
so, we need encryption, or other forms of authentication. |
19:24 |
hmmmm |
all this needs to be reverse compatible though |
19:25 |
nrzkt |
yes |
19:25 |
est31 |
doesnt have to be encrypted, srp for example gives you a common secret, you can use that to sign packets |
19:25 |
hmmmm |
encryption is a nice thing to have though |
19:26 |
nrzkt |
tcp can be signed too |
19:26 |
nrzkt |
like in some ipsec implementations |
19:26 |
nrzkt |
first fix the session layer, change the protocol layer and ensure compat with old clients for... 1 year ? |
19:27 |
nrzkt |
and fix the broken protocol packets (i started to add handlers for them) |
19:27 |
hmmmm |
minetest still supports 0.3.x maps |
19:27 |
Calinou |
we can implement AES in Minetest? |
19:27 |
hmmmm |
you can do way better than 1 year |
19:27 |
nrzkt |
the problem is not maps |
19:27 |
Calinou |
like Xonotic did |
19:27 |
hmmmm |
yes |
19:27 |
hmmmm |
I'm thinking about the key exchange though |
19:27 |
nrzkt |
maps are not related to protocol hmmmm, it's a different field, it's serialization version, not protocol version |
19:27 |
hmmmm |
nrzkt, my point is that it's not painful to keep legacy code around as long as it's well compartmentalized |
19:28 |
kahrl |
you have to be really careful that the compatibility doesn't undermine the security, though |
19:28 |
kahrl |
like this crap: https://code.google.com/p/google-security-research/issues/detail?id=222#c3 |
19:28 |
nrzkt |
maybe :) i think the new layers must be parallelized (i know how to do it) |
19:28 |
hmmmm |
that POODLE? |
19:28 |
hmmmm |
oh it's different |
19:29 |
kahrl |
yeah, POODLE is another example |
19:29 |
hmmmm |
can't we just have a prefer encryption/force encryption option? |
19:29 |
nrzkt |
kahrl i agree with you, but for the transition period we need to keep this :s |
19:30 |
est31 |
even that doesnt helpo |
19:30 |
est31 |
we need to trust the master list or dont trust it |
19:30 |
nrzkt |
don't forget encryption adds latency |
19:30 |
est31 |
or we have another mechanism |
19:30 |
est31 |
perhaps encryption only for special packets? |
19:30 |
est31 |
like chat? |
19:30 |
nrzkt |
authentication |
19:32 |
est31 |
also, with smart tricks such public information can be only encrypted once, and then sent to all clients |
19:32 |
hmmmm |
you can still use encryption with missing packets |
19:32 |
hmmmm |
blowfish in ECB mode seems to be a good cipher which does this |
19:32 |
est31 |
chat packets shouldnt be missed |
19:35 |
est31 |
replay protection can be done using other things too, I confirm. |
19:36 |
hmmmm |
hmm |
19:37 |
hmmmm |
we desperately need a mailing list for this sort of discussion |
19:37 |
hmmmm |
in a month everything we talked about will be forgotten |
19:38 |
est31 |
should I make a github issue? |
19:38 |
celeron55 |
if somebody knows of a mailing list system that doesn't suck, i can consider setting one up |
19:38 |
est31 |
"Implement encryption" |
19:38 |
celeron55 |
usually people just go to google groups if they want a mailing list |
19:38 |
hmmmm |
no this is way more than implementing encryption! |
19:39 |
hmmmm |
this is part of the protocol |
19:39 |
est31 |
github issues still allow discussion. |
19:40 |
est31 |
I agree though that its very linear |
19:40 |
hmmmm |
i don't look to github issues for heavy discussion |
19:40 |
hmmmm |
it's like ... something to talk about the code and that's it |
19:40 |
est31 |
you have to introduce sub-issues for getting non-inearity |
19:41 |
|
Tablet_One joined #minetest-dev |
19:44 |
ShadowNinja |
Maybe I'll set up mailman on my server later. |
19:45 |
hmmmm |
what about Nabble? |
19:45 |
hmmmm |
http://n4.nabble.com/free-mailing-list.html |
19:45 |
jin_xi |
we also could think of disabling logging irc for eternity if we had a ml |
19:45 |
hmmmm |
logging is useful for other reasons though |
19:49 |
celeron55 |
hmm what's nabble, can it be trusted to work in the long term? |
19:49 |
hmmmm |
i've seen it used on a lot of projects |
19:49 |
jin_xi |
been reading a list on it for years on its forum like interface |
19:49 |
celeron55 |
it looks like GNU Mailman is basically the only mailing list software for self-hosted lists; i could try it |
19:50 |
celeron55 |
but if that works, then i will happily be lazy and not do it |
19:50 |
jin_xi |
idk ShadowNinja said he'll try, and nabble can carry a ml hosted elsewhere |
19:51 |
jin_xi |
so i think self hosted would be better if someone can do it |
19:51 |
ShadowNinja |
celeron55: Do you already have a mail server set up? |
19:52 |
celeron55 |
not really |
19:53 |
celeron55 |
(or, well, i do, but not on the server i would want to use to host the mailing list) |
19:56 |
|
DFeniks joined #minetest-dev |
20:10 |
|
Player_2 joined #minetest-dev |
20:25 |
hmmmm |
celeron55: what was the reasoning behind making items attached to a player object invisible? |
20:25 |
hmmmm |
just curious |
20:25 |
celeron55 |
why are people asking me this |
20:25 |
celeron55 |
i have no ide |
20:26 |
Calinou |
gauges |
20:26 |
hmmmm |
you were the one who requested that it was done |
20:26 |
Calinou |
you don't want your own gauges to show above you, even in third person :P |
20:26 |
hmmmm |
taoki is the one who actually implemented it |
20:26 |
hmmmm |
what are gauges? |
20:27 |
celeron55 |
+a |
20:27 |
celeron55 |
(i am getting rather terrible lags) |
20:28 |
hmmmm |
anyway |
20:28 |
hmmmm |
celeron, did you read the backlog about unifying all the Defs and DefManagers? |
20:29 |
hmmmm |
how do you feel about that |
20:29 |
|
MinetestForFun joined #minetest-dev |
20:29 |
celeron55 |
no i didn't |
20:29 |
hmmmm |
NodeDef, ItemDef, SoundDef, BiomeDef, OreDef, all of these are Defs and they have a name, an ID number, they're stored in a vector (usually), etc. |
20:30 |
hmmmm |
what if they were all derived from a base Def class |
20:30 |
hmmmm |
and they were stored in a DefManager |
20:30 |
hmmmm |
a move like this would shake the foundation of minetest though |
20:31 |
celeron55 |
i'm fine with that, altough i can imagine many horrible ways of implementing it that someone might come up with |
20:31 |
hmmmm |
rest assured; no templates |
20:31 |
celeron55 |
well i'd probably go for templates |
20:31 |
hmmmm |
how terrifying |
20:31 |
celeron55 |
otherwise you |
20:32 |
celeron55 |
+have to do some kind of weird memory management |
20:32 |
hmmmm |
what I have right now for mapgen registered-def-things is "GenElementManagaer" and "GenElements" |
20:32 |
hmmmm |
I am generalizing and expanding upon that now |
20:32 |
celeron55 |
you don't want to allocate each item in a def list separately on the heap at least |
20:32 |
hmmmm |
well.... |
20:32 |
celeron55 |
they should be contiguous so that cache is happy |
20:33 |
hmmmm |
does it need to be contiguous exactly, or just all local to eachother |
20:34 |
hmmmm |
because another thing we could do is have a memory pool sort of setup |
20:34 |
celeron55 |
well... it's definitely good practice to go strictly contiguous in game programming but "local enough" obviously probably works |
20:34 |
|
ElectronLibre joined #minetest-dev |
20:34 |
celeron55 |
you'll have hard time making sure that that happens though |
20:34 |
celeron55 |
this is C++ we're talking about |
20:34 |
hmmmm |
there are different requirements i'd have to say |
20:35 |
hmmmm |
each of these Defs could be really tiny or really huge |
20:35 |
hmmmm |
or hot |
20:36 |
hmmmm |
FWIW if you've read the Sony PS2 optimization guide they'll tell you to keep pointers to structures instead of structures inside of structures so they stay small and more of them fit into memory |
20:37 |
hmmmm |
in general I feel like some hot structures such as NodeDef are too large; like look at all the 5000 bools for example |
20:37 |
celeron55 |
you still want them contiguous, especially if you're doing that |
20:37 |
celeron55 |
otherwise the pointers will just kill you and your babies too |
20:38 |
hmmmm |
if a NodeDef is larger than a cache line (which they most certainly are) I don't see how locality matters |
20:38 |
celeron55 |
and yes, it would be best to split each def into a hot and a cold part |
20:38 |
celeron55 |
possibly not more splitting than that though |
20:39 |
hmmmm |
the Defs I'm currently working with are relatively cold |
20:39 |
hmmmm |
on second though, although the organizational gain is nice, there are too many performance considerations |
20:39 |
hmmmm |
NodeDef and ItemDef should stay separate |
20:40 |
hmmmm |
so the thing about NodeDef is that it's hit quite randomly |
20:40 |
hmmmm |
not in order |
20:40 |
hmmmm |
and each structure is huge |
20:41 |
celeron55 |
that's generally true, yes; it would probably make sense to create a system to reorganize it based on access patterns 8) |
20:41 |
hmmmm |
in which situation are you ever going to iterate through every nodedef in an ID range? |
20:41 |
celeron55 |
for optimization |
20:41 |
hmmmm |
no dammit |
20:41 |
celeron55 |
but that might be quite complicated |
20:41 |
hmmmm |
don't do the cache's job |
20:41 |
hmmmm |
the cache knows better than you do |
20:41 |
hmmmm |
so I'm not really sure if we can do anything to help NodeDef aside from trying to lighten it up |
20:42 |
hmmmm |
bbl |
20:42 |
celeron55 |
well, one thing is |
20:42 |
celeron55 |
when nodedef is accessed, generally it's accessed randomly, but only one or a few properties are accessed |
20:43 |
celeron55 |
so it would make particularly much sense to organize it as structure of arrays instead of array of structures |
20:43 |
hmmmm |
data-oriented programming |
20:43 |
hmmmm |
i saw that talk too |
20:44 |
hmmmm |
that's a big change though and i have no idea if it'll help us, maybe some profiling with cachegrind will help |
20:44 |
hmmmm |
with the decision making process |
21:05 |
|
luizrpgluiz left #minetest-dev |
21:10 |
|
Wayward_One joined #minetest-dev |
21:16 |
|
Player_2 joined #minetest-dev |
21:30 |
|
jin_xi joined #minetest-dev |
21:30 |
|
proller joined #minetest-dev |
21:31 |
|
cheapie joined #minetest-dev |
21:48 |
|
johnnyjoy joined #minetest-dev |
21:50 |
|
err404 joined #minetest-dev |
22:01 |
nrzkt |
hmmmm: agree with an inheritance for those objects. Maybe ObjectDef as a parent of those objects, and ObjectMgr which handle all of this Ids ? |
22:01 |
hmmmm |
that's how GenElementManager already works |
22:01 |
hmmmm |
in any case, I'm not going to do this with any hot data |
22:47 |
|
shadowzone joined #minetest-dev |
22:49 |
|
ElectronLibre left #minetest-dev |
23:32 |
|
luizrpgluiz joined #minetest-dev |
23:37 |
|
est31 joined #minetest-dev |
23:53 |
|
srifqi joined #minetest-dev |