Time |
Nick |
Message |
00:25 |
|
ImQ009 joined #minetest-dev |
00:51 |
|
dexter0 joined #minetest-dev |
01:05 |
|
Weedy_lappy joined #minetest-dev |
01:05 |
|
Weedy_lappy joined #minetest-dev |
02:01 |
|
ecube joined #minetest-dev |
02:54 |
|
kaeza joined #minetest-dev |
03:04 |
|
ffoxin joined #minetest-dev |
03:41 |
|
Weedy_lappy joined #minetest-dev |
03:41 |
|
Weedy_lappy joined #minetest-dev |
04:24 |
|
ssieb joined #minetest-dev |
04:37 |
|
Miner_48er joined #minetest-dev |
04:45 |
|
neko259 joined #minetest-dev |
05:00 |
hmmmm |
@_@ l_register_decoration is starting to become a real terror |
05:01 |
VanessaE |
uh oh |
05:01 |
hmmmm |
i like to keep my lua api wrappers small, this managed to come out to ~130 lines so far |
05:10 |
Exio |
hmmmm: well, 130 lines of code OR code+comments+spaces+useless stuff? |
05:10 |
hmmmm |
all of it is solid code, written in my comparatively compressed format too |
05:11 |
hmmmm |
written celeron style it might be twice as big |
05:20 |
Exio |
how heavy is the cos in isBlockInSight? |
05:20 |
Exio |
as that function is used everywhere; and for lots of stuff |
05:20 |
hmmmm |
should be pretty fast since there's an SSE instruction for it |
05:21 |
Exio |
i'll "timetake" it here *netbook/intel atom* |
05:33 |
kahrl |
minetest.add_to_creative_inventory(itemstring) <-- should this be removed from lua_api.txt? |
05:33 |
VanessaE |
yeah |
05:34 |
VanessaE |
that's been deprecated for like, forever |
05:34 |
kahrl |
or, actually, moved to "Deprecated but defined for backwards compatibility" |
05:35 |
VanessaE |
what would be the point of keeping it? |
05:36 |
VanessaE |
I mean, something like that is pretty much dead anyway and should be NOP'd anyway |
05:36 |
VanessaE |
(since the default is to add to creative anyway) |
05:36 |
kahrl |
then should the list of digprop_* functions be removed too? |
05:37 |
VanessaE |
now that I'm not sure of |
05:37 |
VanessaE |
(I haven't really familiarized myself with how digging groups work) |
05:37 |
kahrl |
they don't do anything either other than logging something |
05:38 |
VanessaE |
imho, if it has been explicitly made not to work, or has been replaced with something better, it should just be removed from the main API, and *maybe* moved to a second document |
05:38 |
VanessaE |
that way a general search of the API doesn't return stuff the coder can't actually use. |
05:39 |
kahrl |
I agree |
05:39 |
kahrl |
especially since the document currently only lists them but does not say what should be used instead |
05:39 |
VanessaE |
yeah |
05:41 |
hmmmm |
grr where's sapier |
05:41 |
VanessaE |
shiding :P |
05:41 |
VanessaE |
hiding, too. |
05:42 |
hmmmm |
sapier, i have a specific kind of table that i read multiple times, and i'd like to make a read_schematic() function, but where does that get put? |
05:42 |
hmmmm |
it's certainly not common, it's specific to the lua api only |
05:43 |
hmmmm |
it's not related to content, so it doesn't go in c_content.cpp |
05:43 |
kahrl |
okay if no one objects I'll push this: https://gist.github.com/kahrl/5820555 |
05:47 |
Exio |
one call to isBlockInSight here is between 2 to 4 ms here |
05:48 |
kahrl |
hmmmm: aside from some register_craft related functions all read* functions are in common |
05:49 |
hmmmm |
in common what though |
05:49 |
kahrl |
c_content.cpp/h or c_converter.cpp/h |
05:49 |
hmmmm |
oh wait a scond |
05:49 |
hmmmm |
why is read_server_sound_params there too |
05:49 |
hmmmm |
that's not related to content.... |
05:50 |
hmmmm |
alright, c_content it goes into then |
05:50 |
kahrl |
everyone seems to have a different idea what "content" encompasses |
05:50 |
kahrl |
I'm not quite sure myself |
06:37 |
hmmmm |
arghh |
06:38 |
hmmmm |
readnode() requires ndef, which means people can't register structure decorations using the raw format before registering all their |
06:38 |
hmmmm |
nodes |
06:39 |
hmmmm |
this is not easy to fix |
06:39 |
hmmmm |
welp, my advice is that they just suck it up. |
06:40 |
hmmmm |
if they want to be able to be able to do obscure trick #45 before registering some nodes, the project's open source, so they can fix it themselves |
06:52 |
|
Weedy joined #minetest-dev |
06:52 |
|
Weedy joined #minetest-dev |
06:59 |
|
Calinou joined #minetest-dev |
07:06 |
kahrl |
hmmmm: does that mean aliases can't be used in structure decorations? |
07:07 |
|
Zeg9 joined #minetest-dev |
07:07 |
hmmmm |
they can't be used if the structures are being used as decorations and they're being defined raw, not in a file |
07:08 |
kahrl |
maybe just tell everyone that raw definitions are unsupported? |
07:08 |
hmmmm |
well i don't support them in the first place |
07:08 |
hmmmm |
i'm just putting it in because it wasn't too hard to do and it'd make things way more flexible for the modder |
07:12 |
kahrl |
the use case for it is allowing a mod to make their own structure format parser? |
07:12 |
kahrl |
or a parser for a different format |
07:12 |
hmmmm |
that's one possibility, yeah. |
07:13 |
hmmmm |
in that particular situation |
07:13 |
kahrl |
sounds fine to make the caller handle stuff like aliases then |
08:55 |
|
darkrose joined #minetest-dev |
08:55 |
|
darkrose joined #minetest-dev |
09:00 |
|
Calinou joined #minetest-dev |
09:15 |
|
PilzAdam joined #minetest-dev |
09:50 |
|
proller joined #minetest-dev |
10:03 |
|
Taoki joined #minetest-dev |
10:43 |
|
Calinou joined #minetest-dev |
11:54 |
|
proller joined #minetest-dev |
12:17 |
|
iqualfragile joined #minetest-dev |
13:06 |
|
celeron55 joined #minetest-dev |
13:11 |
|
jin_xi joined #minetest-dev |
13:44 |
|
iqualfragile joined #minetest-dev |
13:56 |
|
AllegedlyDead joined #minetest-dev |
14:07 |
|
iqualfragile joined #minetest-dev |
14:09 |
|
proller joined #minetest-dev |
14:19 |
|
iqualfragile joined #minetest-dev |
14:49 |
|
hmmmm joined #minetest-dev |
14:50 |
|
iqualfragile joined #minetest-dev |
15:03 |
hmmmm |
how do i get the ModSpec of the currently executing mod? |
15:03 |
|
rubenwardy joined #minetest-dev |
15:04 |
hmmmm |
ah nevermind i got it, getServer(L)->getModSpec(modname); |
15:10 |
proller |
correct command in linux to test listening udp server: ss -anpu |
15:10 |
proller |
and ipv6 branch works! |
15:11 |
PilzAdam |
the updated one? |
15:17 |
proller |
now compiling client to connect.. |
15:17 |
proller |
yes, updated |
15:29 |
|
Jordach joined #minetest-dev |
15:38 |
proller |
PilzAdam, maybe resolving of v6-only hosts dosnt work |
15:38 |
proller |
oh, no, my problem |
15:43 |
|
kosc joined #minetest-dev |
15:46 |
proller |
no, not my |
15:47 |
proller |
and cant connect to ipv6 long address |
16:05 |
|
Zeg9 joined #minetest-dev |
16:09 |
proller |
getaddrinfo: Invalid value for hints |
16:19 |
|
Calinou joined #minetest-dev |
16:20 |
proller |
its FreeBSD error |
16:22 |
|
kaeza joined #minetest-dev |
16:22 |
proller |
fixed |
16:24 |
proller |
next level: Server: peer_id=2: failed to emerge player |
16:31 |
|
dexter0 joined #minetest-dev |
16:32 |
PilzAdam |
proller, that failed to emerge player is different bug, not related to ipv6 |
16:35 |
|
proller joined #minetest-dev |
16:48 |
|
ssieb joined #minetest-dev |
16:53 |
proller |
дщÑфд цщклы щл |
16:53 |
proller |
::1 works! |
16:58 |
kosc |
proller: Are you russian? |
16:58 |
proller |
yes |
16:59 |
kosc |
What is дщÑфд цщклы щл? |
17:00 |
proller |
local works ok on my keybord layout |
17:00 |
proller |
"local works ok" |
17:00 |
kosc |
Oh, OK. |
17:05 |
Exio |
what would be the best way to do https://github.com/EXio4/minetest/commit/abfc50f31e32f542220cb9abe53137a7e1050c48 ? |
17:07 |
Zeg9 |
Exio: bool damage = g_settings->getBool(...) then just use this bool (this should be faster than reading settings every time) |
17:15 |
Exio |
test it with a server and a client |
17:15 |
Exio |
and different enable_damage settings |
17:16 |
Exio |
should it check for the hp? |
17:32 |
|
kaeza joined #minetest-dev |
17:36 |
|
sapier joined #minetest-dev |
17:39 |
hmmmm |
erm |
17:39 |
hmmmm |
Exio, it does that? |
17:39 |
Exio |
what? |
17:39 |
hmmmm |
i was under the impression that enable_damage sets the player's HP to 0, damageLocalPlayer wouldn't register it as damage if it's already at 0 |
17:40 |
hmmmm |
i'm saying, i'm not sure your patch is needed... have you actually tried it, and drowning still damages you? |
17:40 |
Exio |
no, i mean the bar |
17:40 |
PilzAdam |
hmmmm, its about the bubbles, they are still displayed |
17:41 |
hmmmm |
oh, so what? |
17:41 |
sapier |
hmmmm common es meant as "common functions used from different files of skript api" |
17:41 |
sapier |
at least that was my intention |
17:41 |
hmmmm |
hide the bubblebar hud |
17:42 |
hmmmm |
sapier, i read it as "what's common between lua_api and cpp_api" |
17:42 |
hmmmm |
also c_content.cpp is where everything seems to be put, but my impression was that it was for things related to content |
17:42 |
sapier |
that's one special case yes but also between different files |
17:42 |
hmmmm |
(e.g. nodes, items, contentfeatures, tiledef) |
17:43 |
sapier |
yes I used converter for basic datatypes and content for minetest specific datatypes ... maybe names aren't perfect but I didn't find a better yet short name |
17:43 |
Exio |
so, just hide it if hp is 0? |
17:44 |
hmmmm |
exio, or hide it if enable_damage is false |
17:44 |
hmmmm |
i would do this in the localplayer ctor. |
17:44 |
Exio |
but, isn't enable_damage "local"? |
17:45 |
hmmmm |
erm |
17:45 |
hmmmm |
good question |
17:45 |
PilzAdam |
of course its not |
17:45 |
PilzAdam |
the client doesnt know about the setting |
17:45 |
PilzAdam |
only hint is that HP = 0 all the time |
17:45 |
hmmmm |
to the local player, right? |
17:46 |
hmmmm |
is setHP sent right after the player emerge? |
17:46 |
hmmmm |
indeed |
17:47 |
hmmmm |
so if a set hp is never sent, then damage is never enabled |
17:49 |
hmmmm |
erm.. if hp == 0, breath == 0 |
17:49 |
hmmmm |
there, solved. |
17:49 |
PilzAdam |
breath = 11 |
17:49 |
hmmmm |
what? |
17:50 |
PilzAdam |
if breath > 10 then its not displayed, 11 is used as "not show" |
17:50 |
hmmmm |
nevermind any of this |
17:50 |
hmmmm |
Exio, change those g_settings->getBool("enable_damage") to player->hp |
17:51 |
hmmmm |
lplayer->hp rather |
17:51 |
Exio |
ok |
18:07 |
hmmmm |
anywya, i need to extend worldedit in order to properly test the new schematic api. for setting probabilities, i'd like to be able to punch a node and a formspec pops up where you enter the probability value, does it already have some functionality like this? |
18:08 |
|
kosc left #minetest-dev |
18:15 |
|
rubenwardy joined #minetest-dev |
18:24 |
proller |
maybe merge https://github.com/minetest/minetest/pull/776 ? |
18:29 |
sapier |
+1 for content but -1 for some cleanup missing |
18:29 |
sapier |
e.g. setAddress(a,b,c,d) that function signature is plain wrong actually it doesn't take int but byte/u8 only |
18:30 |
sapier |
yes I know this was wrong before this commit but why not fix it if you already change almost everything there |
18:35 |
sapier |
Address(const unsigned char * ipv6_bytes, unsigned short port) isn't quite good style either you pass a pointer to a non null terminated string implicitly assuming internal function knows size of this pointer |
18:40 |
|
BlockMen joined #minetest-dev |
18:42 |
|
neko259 joined #minetest-dev |
18:44 |
|
ffoxin joined #minetest-dev |
18:47 |
proller |
maybe merge and than fix ? |
18:47 |
sapier |
no one ever fixes such errors |
18:48 |
sapier |
they don't cause immediate failure so there's no pressure to fix |
18:49 |
proller |
waiting one more year to collect all network fixes in this merge - bad idea |
18:50 |
sapier |
I guess the one commiting this should clean it up prior adding it's just code in bad shape it's not difficult to fix but of cours it's an hour or two to get it done properly |
18:51 |
proller |
maybe write comment to pull? |
18:51 |
proller |
and matttpt can fix it fast? |
18:53 |
sapier |
I'll do but I won't write any single issue ;-) |
18:56 |
|
kaeza joined #minetest-dev |
19:28 |
|
diemartin joined #minetest-dev |
19:28 |
|
BlockMen joined #minetest-dev |
19:38 |
|
VanessaE joined #minetest-dev |
19:41 |
|
proller joined #minetest-dev |
20:03 |
proller |
https://github.com/minetest/minetest/pull/659 - is anybody against json params in config ? (exept PilzAdam) |
20:03 |
VanessaE |
json for a config? fuck no |
20:04 |
proller |
only for some long params |
20:04 |
proller |
https://github.com/minetest/minetest/pull/659/files#L0R359 |
20:05 |
proller |
with {} by default |
20:06 |
Jordach |
and fuck tjat |
20:06 |
Jordach |
that* |
20:06 |
Jordach |
Lua + JSON = HELL |
20:07 |
proller |
maybe make api for configuring from lua |
20:08 |
proller |
but its much more to write |
20:13 |
|
BlockMen left #minetest-dev |
20:19 |
|
iqualfragile joined #minetest-dev |
20:22 |
|
sapier joined #minetest-dev |
20:25 |
sapier |
I'm against json in config too for same reasons as pilzadam it breaks format and makes config a nightmare to read (not by a single parameter of course but it won't be as less as a single parameter over time) |
20:33 |
kaeza |
once there's client-side scripting, that stuff can be completely moved to Lua |
20:33 |
kaeza |
you could even ditch minetest.conf and have e.g. config.lua :P |
20:43 |
|
PilzAdam joined #minetest-dev |
20:45 |
proller |
kaeza, but reading structure from lua is hell |
20:46 |
kaeza |
it's not so hard, but the ":P" suggested it was a joke |
20:46 |
PilzAdam |
kaeza, client side Lua is not intended to run scripts that are on the client |
20:46 |
PilzAdam |
its rather for executing predict functions send by the server |
20:48 |
kaeza |
whatevs |
20:49 |
proller |
kaeza, its fully server side mapgen thing |
20:56 |
|
sapier joined #minetest-dev |
21:21 |
Taoki |
Mmh. I'm glad drowning was added to Minetest. But why would something so simple not be added to Lua instead x_x |
21:21 |
Taoki |
I was hoping we could eventually completely remove health from the code, and make damage and health entirely a Lua thing |
21:21 |
Taoki |
Especially now that HUD elements can be drawn from Lua |
21:22 |
sapier |
taoki drowning needs to permanently check position of player without api changes that operation cant be done in a performant way from lua |
21:22 |
Taoki |
sapier: What if there was a Lua function to only return the position of the player when it changed? |
21:23 |
sapier |
is still heavy load |
21:23 |
sapier |
it's a lua call triggered on each step while a player moves |
21:24 |
VanessaE |
what really begs the question isn't why it isn't in Lua, but why it requires a Lua mod to *disable* the function |
21:24 |
VanessaE |
as opposed to a checkbox in the menu or some such. |
21:24 |
hmmmm |
hey guys |
21:24 |
VanessaE |
(or a config option anyway) |
21:24 |
sapier |
best possible solution I can think of is a lua call triggered once center of player changes node |
21:24 |
VanessaE |
afternoon, hmm |
21:24 |
hmmmm |
why would for k,v in pairs(table) do print(k,v) end only print out the key and not the value? |
21:24 |
Taoki |
It's just that I'm more of a fan of the idea to only add hooks and functions usable for ideas in the code, and have Lua do all of the actually logical stuff |
21:25 |
VanessaE |
hmmmm: can print() take comma-separated arguments? |
21:25 |
Taoki |
eg: Code should be concerned with networking, rendering, how things work, etc. Lua should know what drowning or health even mean as concepts :P |
21:25 |
sapier |
taoki generally I'm with you but lua for environmental checks is quite slow |
21:25 |
hmmmm |
i don't know, it says so in the official lua tutorial |
21:25 |
Taoki |
True too |
21:25 |
VanessaE |
hm, guess so |
21:25 |
hmmmm |
it must be the print with a comma |
21:26 |
sapier |
that's not a lua problem itself but a problem how environment/map is done in minetest |
21:26 |
VanessaE |
PiL says that should work |
21:26 |
sapier |
vanessae it never worked for me |
21:26 |
sapier |
I only got first element and others have been ignored |
21:27 |
VanessaE |
odd |
21:27 |
hmmmm |
word |
21:27 |
hmmmm |
well w/e |
21:27 |
VanessaE |
we're not intercepting the standard print function are we? |
21:27 |
hmmmm |
ahh we might be |
21:27 |
hmmmm |
i think we do, cba to check though |
21:28 |
sapier |
great ... I guess I should write a bad email to apc ... a ups beein responsible for power fail isn't exactly what's purpose of a ups |
21:30 |
VanessaE |
sapier: CyberPower makes a good UPS. |
21:30 |
sapier |
that's been told of apc too ;-) |
21:30 |
VanessaE |
heh |
21:30 |
VanessaE |
oh wait, random chit-chat again. |
21:30 |
VanessaE |
->#minetest |
21:31 |
sapier |
the really annoying thing is it did handle the net power fail but crashed and shutdown server after power was restored |
21:32 |
|
PilzAdam joined #minetest-dev |
21:32 |
kaeza |
hmmmm, isn't print() redefined by minetest to redirect to log file? |
21:32 |
kahrl |
yep, print = minetest.debug |
21:32 |
sapier |
https://github.com/minetest/minetest/pull/774 any opinions about the api change of set_animations? |
21:33 |
sapier |
to be implemented if accepted ;-) |
21:33 |
hmmmm |
yeah, well that explains why i was seeing that odd behavior |
21:33 |
hmmmm |
no biggie, just something to be aware of anymore |
21:34 |
kahrl |
guess it should be changed to behave like normal lua print() |
21:34 |
kahrl |
principle of least surprise |
21:35 |
sapier |
+1 but I don't have any idea how to do that ;) |
21:35 |
PilzAdam |
Taoki, no way to get drowning properly done in Lua without client side Lua |
21:35 |
PilzAdam |
VanessaE, a mod _is_ a checkbox in the GUI |
21:36 |
Taoki |
PilzAdam: I see. Same for health I imagine? |
21:36 |
PilzAdam |
yep |
21:36 |
Taoki |
I have actually started wondering if client side Lua would have an use. Though I initially thought it would be a waste, I think it would really |
21:37 |
sapier |
taoki don't expect to much compared to server side client side will be extremely limited |
21:37 |
PilzAdam |
client side Lua would be most useful to predict stuff like doors |
21:37 |
Taoki |
Yeah. Would mostly work for effects and the like I imagine |
21:37 |
ShadowNinja |
Jeija has a proof-of-concept client-side Lua branch. |
21:38 |
sapier |
do you have a link? |
21:38 |
VanessaE |
PilzAdam: that isn't what I meant and you know it. |
21:39 |
sapier |
found it |
21:40 |
sapier |
shadowninja that's not what pilzadam and i understand by clientside lua |
21:41 |
sapier |
what we're talking about is lua code beeing sent to client by server on connect to be executed by a client side lua enginge (that's what jejia started there) |
21:42 |
sapier |
but jeijas code looks more like client only lua modding |
21:42 |
ShadowNinja |
Ah, but it might be helpfull. |
21:43 |
sapier |
at first glance yes but it'll result in very strange effects |
21:44 |
sapier |
prediction code needs to be transmitted by server ... but if any code is sent to client by a server the client lua engine has to be sandboxed very very carefully |
21:47 |
sapier |
pilzadam,kharl, hmmmm whats you oppinion on changeing signature of set_animation to specify an additional value "base_animation_speed" ? this obviously needs a protocol change too |
21:47 |
hmmmm |
no opinion here =/ |
21:47 |
hmmmm |
do whatever you need to do for the animation things |
21:47 |
PilzAdam |
if it doesnt break the current API |
21:47 |
sapier |
it will even break client compatibility |
21:48 |
hmmmm |
ouch |
21:48 |
Exio |
are there any things |
21:48 |
sapier |
the other option is do it the way I did it now ... add a new message but thats ugly |
21:48 |
Exio |
that may break client compatability "in a TODO list"? |
21:48 |
Exio |
compatibility* |
21:50 |
|
Anchakor_ joined #minetest-dev |
21:50 |
Taoki |
PilzAdam: About the drowning thing. What if for example, when the player is drowning each impulse is sent to a Lua function (in which you can put anything you want). In that Lua function you'd put a damage call by default. It would prolly be a tiny lua call every 1 second when you update the damage, so how slow would it get? |
21:50 |
sapier |
maybe using some exception handling client/server will be able to cope with it but I can't promise |
21:50 |
Taoki |
eg: minetest.on_drown { player.damage(0.5) } |
21:51 |
sapier |
is there any use for this call except drowning? |
21:51 |
Taoki |
minetest.on_drown being called every 1 second while the player is drowning |
21:51 |
Taoki |
sapier: People could find inventive thins to add, so I'd say sure |
21:51 |
Taoki |
*things |
21:52 |
sapier |
if you have any idea I'm with you ;-) |
21:52 |
Taoki |
Another way which could be more useful: Have a function which runs when a player / entity is in water. You can simply add a timer which checks for how long you've been below water surface |
21:52 |
Exio |
Taoki: what about client-side prediction |
21:53 |
Exio |
that is why it is coded in C++ and not lua |
21:53 |
Taoki |
What would prediction have to do with damage? |
21:53 |
Taoki |
Ah... |
21:53 |
sapier |
why in water? not i lava? liquid concrete ... |
21:53 |
Taoki |
Yeah, to simulate the effect more quickly |
21:53 |
Exio |
Taoki: and the red effect |
21:53 |
Taoki |
Well, that would go away. I think Minecraft doesn't have prediction for drawning (not to say it's an excuse :P) |
21:54 |
Exio |
can't MT be better than MC? |
21:54 |
Taoki |
That yes :P |
21:54 |
sapier |
client side lua is on my schedule for late summer/early autumn ... so don't expect it until then ;-) |
21:54 |
Taoki |
ok |
21:54 |
Exio |
we will wait for other 10k commit of sapier |
21:54 |
Taoki |
Yeah, overall I'm getting so support client side lua |
21:54 |
Exio |
:P |
21:54 |
sapier |
I hope it won't be 10k again ;-) |
21:54 |
Exio |
9.5k then ;P |
21:54 |
Taoki |
When it's added though, I hope health and drowning can be moved fully to Lua then |
21:55 |
sapier |
could be it's not that easy to handle |
21:55 |
sapier |
but I'm only guessing atm I haven't done much more than thinking about basic concepts |
21:56 |
kahrl |
I looked up what lua's print() does and reimplemented it in minetest.debug |
21:57 |
kahrl |
https://gist.github.com/kahrl/5827069 |
21:57 |
PilzAdam |
Taoki, no -> server lag |
21:57 |
|
emptty joined #minetest-dev |
21:57 |
emptty |
Hello there. |
21:58 |
emptty |
I'm trying to update the debian package to 0.4.7, and I see that the common mod was not tagged as 0.4.7 |
21:58 |
emptty |
should I take the 0.4.6 or drop it completely? |
21:58 |
PilzAdam |
emptty, common, survival and build are dropped |
21:58 |
Exio |
now all the "changes" are managed by mods |
21:58 |
PilzAdam |
only pack the minetest_game game |
21:58 |
emptty |
oki, I'll do so |
22:00 |
kahrl |
should I push the minetest.debug fix? or does it need testing? (I tested it here, of course) |
22:00 |
PilzAdam |
kahrl, seems good |
22:00 |
ShadowNinja |
^ |
22:01 |
kahrl |
hmm, the result of lua_getglobal isn't popped |
22:01 |
kahrl |
but that should happen automatically |
22:01 |
PilzAdam |
it also fixes the print(nil) crash if you call tostring() |
22:02 |
kahrl |
ah, that's nice |
22:03 |
Exio |
you fixed two bugs when trying to fix one |
22:03 |
Exio |
nice! :P |
22:03 |
PilzAdam |
another award for kahrl ;-) |
22:05 |
kahrl |
hooray! :D |
22:05 |
VanessaE |
what, I gotta make yet *another* build now? ;) |
22:05 |
VanessaE |
PilzAdam: can you push that hacky liquid fix to master before it gets "lost"? |
22:05 |
Exio |
hacky to master? what? |
22:06 |
VanessaE |
Exio: it limits the CPU load of flowing liquids. |
22:06 |
Exio |
i mean, something hacky to master? |
22:06 |
Exio |
it already has a lot of black magic :P |
22:06 |
VanessaE |
lol |
22:06 |
kahrl |
which I made it perform less often ;) |
22:06 |
PilzAdam |
VanessaE means basically these two commits: https://github.com/PilzAdam/minetest/commit/8256f28105c5523cf1c9307ff66618a3c821ebfc https://github.com/PilzAdam/minetest/commit/92aefdf2466a23b3a8d503fd3e27def98a9a4d8b |
22:06 |
VanessaE |
yes |
22:07 |
Exio |
the liquid setting, if i recall correctly |
22:08 |
kahrl |
why does the second commit read from g_settings inside the loop? |
22:08 |
PilzAdam |
the first one is just a hacky workaround |
22:09 |
PilzAdam |
kahrl, as you can see from the commit message and the setting name it was done in 2 seconds ;-) |
22:09 |
VanessaE |
there is a caveat though: |
22:10 |
VanessaE |
that hacky fix doesn't stop the TODO list from overflowing |
22:10 |
Exio |
why should it |
22:10 |
kahrl |
PilzAdam: that's at least 240 wpm |
22:10 |
kahrl |
not bad ;) |
22:10 |
proller |
PilzAdam, bad name 'liquid' |
22:10 |
proller |
liquid_queue |
22:10 |
VanessaE |
Exio: because if it gets backed up, *all* liquids stop flowing entirely. |
22:11 |
|
kaeza joined #minetest-dev |
22:11 |
PilzAdam |
Ill rename the setting to liquid_loop_max or something similiar |
22:11 |
VanessaE |
it needs to throw away old events or randomize how they're put into the queue so that liquids never stop flowing but merely get slower. |
22:11 |
VanessaE |
I had it reach 500k TODO events before I stopped it, once :) |
22:11 |
PilzAdam |
VanessaE, I already told you that randomizing it is not useful at all |
22:12 |
proller |
PilzAdam, and make same in https://github.com/PilzAdam/minetest/blob/92aefdf2466a23b3a8d503fd3e27def98a9a4d8b/src/map.cpp#L1657 |
22:12 |
VanessaE |
PilzAdam: sure it is |
22:12 |
Exio |
VanessaE: i know, but the thing is, it should be faster enough to not have that "limit" |
22:12 |
proller |
PilzAdam, for finite* |
22:12 |
PilzAdam |
proller, k |
22:12 |
VanessaE |
Exio: true, but as that isn't the case now, something else needs done |
22:12 |
VanessaE |
PilzAdam: either you populate the queue in some mathematical manner, like lowest-coordinate-first or some such, or you populate it randomly. |
22:13 |
VanessaE |
if you do the former, then all the events that belong to far-way blocks that someone else is looking at won't get any CPU time at all |
22:13 |
proller |
PilzAdam, and via temp var, for speed |
22:13 |
VanessaE |
do it randomly and everyone gets at least some time. |
22:13 |
VanessaE |
s/one/ area/ |
22:14 |
proller |
PilzAdam, and default 1000 is ok |
22:14 |
PilzAdam |
<VanessaE> do it randomly and everyone gets at least some time. <- you get same by popping the front always (like we do currently) |
22:15 |
VanessaE |
PilzAdam: then it isn't working as you predicted. |
22:16 |
PilzAdam |
stuff is always enqueued at the end, so the loop doesnt stay at the same spot |
22:16 |
VanessaE |
I've been testing it out, and the only way to make liquids flow everywhere after the queue starts to get backed up is to briefly set the value fairly high (10k is enough), wait a few seconds, and then back it back down to 500 or so. |
22:17 |
VanessaE |
the fact that the code exists is incredibly beneficial, don't get me wrong, enough so that it needs to be pushed out as a temp fix for 0.4.8, but there's something about it that doesn't work quite as desired |
22:18 |
proller |
VanessaE, just start using finite* 8) |
22:18 |
VanessaE |
proller: finite water is broken in other ways plus it's not really compatible with how people on my server tend to use water. |
22:18 |
kahrl |
do some nodes occur multiple times in the queue? |
22:18 |
VanessaE |
(and pipeworks isn't, yet) |
22:19 |
proller |
VanessaE, broken? |
22:19 |
VanessaE |
proller: after the water spreads down a hill and starts to evaporate, it leaves pieces behind |
22:19 |
proller |
people not usin water, they using blue marmelade blocks |
22:19 |
VanessaE |
pieces that neither spread nor dissipate. |
22:19 |
VanessaE |
haha |
22:20 |
Exio |
kahrl: seems so |
22:20 |
proller |
VanessaE, somw pieces was fixed ~week+ ago via abm |
22:20 |
kahrl |
maybe at some point there are enough duplicate nodes in the queue that they block everything else from updating |
22:20 |
VanessaE |
ah, I last tried a bit over a week ago, that's why I never saw that |
22:20 |
VanessaE |
but isn't an abm the wrong way to fix such? |
22:22 |
kahrl |
VanessaE, btw, popping randomly would break things (pushing, not as much, but possibly too) |
22:22 |
proller |
VanessaE, not very bad, maybe best way |
22:23 |
kahrl |
some functions (e.g. removeNodeAndUpdate) rely on the fact that the nodes are updated in the order they were added to the queue |
22:23 |
VanessaE |
kahrl: I'm actually proposing random-ordered pushing, but I'm talking specifically about whatever queue is used for the water flowing code. |
22:23 |
VanessaE |
proller: I dunno, that seems ...hacky :) |
22:25 |
PilzAdam |
kahrl, maybe do a simple search on every 10th element or so before adding new things to the queue? |
22:26 |
PilzAdam |
heres the updated commit: https://github.com/PilzAdam/minetest/commit/3335e0df775e86c11d0e098bc710687c2eafd12f |
22:26 |
proller |
VanessaE, look at Map::transformLiquidsFinite , its 80% hacky, but works good and fast, exept rare small bugs like your |
22:27 |
proller |
PilzAdam, okay now |
22:28 |
proller |
my future wish is make 8->64 levels of liquids |
22:29 |
proller |
for smoother flows |
22:30 |
PilzAdam |
does everyone agree to push that commit to master now? |
22:30 |
proller |
push! |
22:38 |
proller |
VanessaE, liquid_update = 0.1 - for faster update |
22:38 |
proller |
to return old update speed but without lagging server |
22:39 |
kahrl |
so does loop_max = 1000 work in the standard case? |
22:39 |
kahrl |
that value was tweaked from 1000 to 10000 a year ago (commit 3e754382) |
22:40 |
PilzAdam |
kahrl, VanessaE had major problems with 10000 in her server |
22:40 |
PilzAdam |
and in singleplayer you dont really get that high |
22:40 |
Exio |
because huge fountain + lua |
22:41 |
Exio |
i'm pretty sure the abm was one of the things that killed it |
22:41 |
Exio |
abm + lots of liquid updates |
22:41 |
PilzAdam |
Exio, VanessaE has a different ABM for her water+lava reactions than default, right? |
22:41 |
proller |
10000 too much, it can take 1 second |
22:42 |
Exio |
yep PilzAdam |
22:42 |
VanessaE |
PilzAdam: no, same ABM, just that I hooked into it to produce a different set of blocks |
22:42 |
Exio |
and iirc it does some basic cheks |
22:42 |
Exio |
checks* |
22:42 |
VanessaE |
(remember those two hooks you added?) |
22:42 |
Exio |
VanessaE: what ABMs? exactly the same but generating other nodes? |
22:43 |
Exio |
iirc they are something with a if node_up; something; if under; other and so |
22:43 |
VanessaE |
Exio: gloopblocks hooks into the lavacooling abm per PilzAdam's methd |
22:43 |
VanessaE |
method |
22:43 |
kahrl |
/etc/init.d/methd start |
22:43 |
PilzAdam |
VanessaE, with same ABM I mean exactly same code, not same "register_abm" call |
22:44 |
VanessaE |
PilzAdam: https://github.com/VanessaE/gloopblocks/blob/master/init.lua#L418 |
22:45 |
VanessaE |
nearly identical to the default abm if I remember right. |
22:46 |
PilzAdam |
VanessaE, ehm, you have 6 get_node calls there, default has 0 |
22:46 |
Exio |
12 you mean |
22:46 |
PilzAdam |
ohm yea |
22:46 |
Exio |
6 is the best case |
22:46 |
PilzAdam |
- |
22:46 |
PilzAdam |
-m |
22:47 |
PilzAdam |
VanessaE, thats why I dont check if the water nodes touch lava directly in the default code |
22:47 |
Exio |
well, in the best case it is just one call |
22:47 |
Exio |
the worse is 12 :P |
22:47 |
Exio |
and VanessaE; for the first, you can remove the checks |
22:47 |
VanessaE |
well this is more of a backward-compatibility thing anyway - gloopblocks has always made the combo of nodes seen there, so it was either hook into the new lavacooling abm or lose a feature |
22:47 |
PilzAdam |
Exio, mostly its triggered by flowing water in a fountain, so 6 to 12 average |
22:48 |
Exio |
VanessaE: one thing, remove the checks in the cool_lava_source |
22:48 |
Exio |
if that function called, that is because the water IS near |
22:49 |
Exio |
PilzAdam: even if it was just 2 calls, it is a lot |
22:49 |
PilzAdam |
VanessaE, in cool_lava_flowing, do the water_flowing check first |
22:49 |
VanessaE |
Exio: can't - it needs to be exactly that code or it changes the pattern and I wasn't about to do that to neko's code |
22:49 |
VanessaE |
besides, abms aren't expensive on my box |
22:49 |
Exio |
generating one mesh isn't expensive |
22:50 |
Exio |
generating 50k is expensive |
22:50 |
Exio |
the same here |
22:50 |
VanessaE |
maybe later I'll change it |
22:50 |
VanessaE |
can't be bothered to right now |
22:51 |
PilzAdam |
VanessaE, the default code only runs once for a node, because it always replaces the node; your code will trigger the ABM over and over again, and do the 12 checks every single second for each water and lava nodes that are diagonal to each other |
22:51 |
PilzAdam |
this isnt cheap on any box |
22:52 |
VanessaE |
um...look at the set_node() call. I replace the node that triggered the ABM. |
22:53 |
VanessaE |
but only if it's immediately adjacent |
22:53 |
VanessaE |
abms don't care for face-adjacent |
22:53 |
VanessaE |
they check for corner-/edge-adjacent also |
22:53 |
PilzAdam |
if both gloopblocks_search_nearby_nodes() checks fail, you dont replace the node |
22:53 |
PilzAdam |
so its triggered again |
22:54 |
VanessaE |
well the only other way to make it work the way it always used to (and it's been this way for months and months) is to add a field to the ABM def to let me explicitly specify "only on neighboring *faces*" |
22:55 |
VanessaE |
and that still doesn't allow me to take a different action depending on exactly *which* neighbor the trigger node has |
22:55 |
kahrl |
how would you override the abm in default? |
22:56 |
VanessaE |
kahrl: I suppose if I were to override the whole ABM I'd try to modify the global table where it's stored. |
22:56 |
VanessaE |
assuming that would work anyway |
22:56 |
PilzAdam |
if we get this functionality in the engine then I would use it in default too |
22:58 |
kahrl |
that would break a lot of existing maps |
22:58 |
kahrl |
like cobble generators and other machines |
22:58 |
VanessaE |
kahrl: it already did. |
22:58 |
VanessaE |
lavacooling went into default a while back, this change to gloopblocks went in a week later after those hooks were added. |
22:59 |
VanessaE |
I argued against it on the grounds that it would break mods. |
23:03 |
|
PilzAdam joined #minetest-dev |
23:04 |
Exio |
kahrl: util/container.h:48 |
23:04 |
Exio |
if i understand correctly, there shouldn't be duplicated nodes in the queue |
23:04 |
kahrl |
oh, it's a UniqueQueue |
23:05 |
Exio |
:P |
23:07 |
proller |
maybe merge ipv6? |
23:09 |
PilzAdam |
I have tested ipv6 on my ipv4 machine and it doesnt break anything |
23:10 |
proller |
windows ? |
23:10 |
kahrl |
would it be okay to remove the setting ipv6_server later? |
23:11 |
VanessaE |
bbl |
23:11 |
proller |
kahrl, yes |
23:11 |
Exio |
does it listen to ipv4 and ipv6 |
23:11 |
proller |
yes |
23:11 |
Exio |
or just one of them? |
23:11 |
proller |
4 6 |
23:11 |
kahrl |
Exio, that's why I want to do it a different way |
23:11 |
kahrl |
"listen = 0.0.0.0" <-- only IPv4 |
23:11 |
PilzAdam |
Exio, depends on your OS configuration |
23:12 |
kahrl |
"listen = ::0" <-- only IPv6 |
23:12 |
kahrl |
"listen = 0.0.0.0, ::0" <-- both |
23:12 |
|
ch98 joined #minetest-dev |
23:12 |
PilzAdam |
uh, oh, mingw build fails |
23:13 |
PilzAdam |
https://gist.github.com/PilzAdam/5827608 |
23:13 |
proller |
kahrl, "listen = ::0" <-- 46 socket, it can recieve ipv4 connections as ::ffff:80.240.216.1 |
23:14 |
proller |
* in normal OS |
23:14 |
kahrl |
most people don't use a normal OS |
23:15 |
kahrl |
PilzAdam: it requires _WIN32_WINNT 0x501 |
23:15 |
kahrl |
but the value of that is only 0x500 afaik |
23:15 |
PilzAdam |
socket.cpp:27 |
23:16 |
kahrl |
it is possible to use getaddrinfo etc. on w2k but it requires a horrible hack |
23:16 |
proller |
http://stackoverflow.com/questions/12765743/getaddrinfo-on-win32 |
23:16 |
kahrl |
PilzAdam: maybe something else defines it? |
23:17 |
kahrl |
like debug.h? |
23:17 |
PilzAdam |
its defined in several places |
23:17 |
PilzAdam |
3 times as 0500 and 2 times as 0501 |
23:17 |
kahrl |
ugh |
23:17 |
kahrl |
someone fix this please? :) |
23:18 |
PilzAdam |
is it safe to just set them all to 501? |
23:18 |
kahrl |
I suppose |
23:25 |
PilzAdam |
jmutex.h defines it as 500 too, should that be changed? |
23:25 |
kahrl |
yeah, that file has been changed a lot already anyway |
23:25 |
PilzAdam |
ummmm... it still fails with the same error message |
23:25 |
hmmmm |
agh someday when i get around to it, i'll fix jmutex so it never attempts to use the system version |
23:26 |
hmmmm |
or if someone else wants to do that, they should, because some distros treat jthread as its own library |
23:27 |
kahrl |
PilzAdam: try adding #include <ws2tcpip.h> |
23:27 |
hmmmm |
hmm, when i call lua_getfield(L, LUA_REGISTRYINDEX, "minetest_current_modname"); it seems to push something that's not a string onto the stack (probably nil...) |
23:28 |
hmmmm |
erm, doesn't winsock2.h already include that? |
23:28 |
PilzAdam |
kahrl, is already there, line 32 |
23:29 |
kahrl |
hrm... |
23:29 |
kahrl |
does something include it before _WIN32_WINNT is set? |
23:29 |
PilzAdam |
nope |
23:29 |
kahrl |
hmmmm, looks like it doesn't |
23:30 |
kahrl |
why does everything on windows have to be horrible? :P |
23:31 |
PilzAdam |
nope |
23:31 |
PilzAdam |
ooops |
23:31 |
PilzAdam |
(window focus fail) |
23:32 |
hmmmm |
great, okay.. so that one thing is nil |
23:32 |
hmmmm |
what does this mean, and how do i get the path to the current mod? |
23:33 |
hmmmm |
anybody know? |
23:34 |
kahrl |
hmmmm: how do you call it? |
23:34 |
kahrl |
because it really should work |
23:35 |
hmmmm |
just like that... http://pastebin.com/58WMcVdc |
23:36 |
proller |
PilzAdam, maybe define _WIN32_WINNT everywhere before windows.h? like in gettext.h |
23:36 |
kahrl |
hmmmm: and how is the whole function called from lua? |
23:37 |
hmmmm |
how? it's in a lua api that's called after initialization |
23:37 |
proller |
PilzAdam, only in gettext.h |
23:37 |
kahrl |
you mean from a callback? |
23:37 |
hmmmm |
not a callback |
23:37 |
hmmmm |
the mod calls it |
23:37 |
kahrl |
the modname only exists during the registration phase |
23:37 |
hmmmm |
figures |
23:38 |
hmmmm |
great, so now how do i get the mod path? |
23:38 |
kahrl |
maybe let the mod specify the path? |
23:38 |
hmmmm |
hm okay |
23:38 |
PilzAdam |
proller, nice, that worked! |
23:39 |
kahrl |
that would also allow mod X to use schematic Y from mod Z != X |
23:39 |
PilzAdam |
proller, I have added it in socket.h, porting.h and gettext.h |
23:39 |
hmmmm |
I guess |
23:40 |
hmmmm |
i'm not sure why i wanted to limit it to that one directory anyway in the first place |
23:41 |
PilzAdam |
so, here are all changes that I made: https://gist.github.com/PilzAdam/5827742 |
23:43 |
kahrl |
PilzAdam: looks good |
23:45 |
PilzAdam |
posted it on the pull request |
23:47 |
emptty |
Ok, 0.4.7 is on the debian servers |
23:47 |
emptty |
every pages will eventually get regenerated |
23:48 |
emptty |
could someone please remove the word "outdated" alongside debian on http://minetest.net/download ? |
23:48 |
PilzAdam |
emptty, the license is LGPL |
23:49 |
emptty |
PilzAdam: I know |
23:49 |
emptty |
PilzAdam: what do you say so? |
23:49 |
emptty |
*why |
23:49 |
PilzAdam |
http://packages.debian.org/sid/minetest still says "GPL" |
23:50 |
emptty |
ah, yeah |
23:50 |
emptty |
the package description is wrong |
23:50 |
emptty |
let me fix it |
23:50 |
emptty |
do you want to rewrite this description completely? |
23:51 |
PilzAdam |
it seems fine |
23:52 |
PilzAdam |
what is the "minetest-common" package? |
23:53 |
PilzAdam |
oh, nvm |
23:54 |
PilzAdam |
emptty, "outdated" removed: http://minetest.net/download |
23:54 |
emptty |
thanks |
23:55 |
emptty |
is there a list to which I should subscribe to get pinged when a new release comes out? |
23:56 |
PilzAdam |
releases are usually announced here: http://forum.minetest.net/viewforum.php?id=18 |
23:56 |
PilzAdam |
(there is a RSS feed) |
23:56 |
|
BrandonReese joined #minetest-dev |
23:57 |
PilzAdam |
emptty, I also added you here: http://dev.minetest.net/Releasing_Minetest#Notify_other_known_package_maintainers so people dont forget about you ;-) |
23:58 |
emptty |
thanks ! |
23:58 |
emptty |
that's very convinient because I tend to avoid RSS |
23:58 |
emptty |
there's too much to read on the net and too few time |
23:58 |
PilzAdam |
we will throw you a /msg when a new release comes out |
23:59 |
celeron55 |
what |
23:59 |
celeron55 |
Package: minetest (0.4.6+repack-6 and others) |
23:59 |
celeron55 |
how is 0.4.6 "new"? |
23:59 |
emptty |
the page is not regenerated yet |
23:59 |
PilzAdam |
<emptty> every pages will eventually get regenerated |
23:59 |
emptty |
but 0.4.7 is in |
23:59 |
hmmmm |
anything made in the past 5 years is new by debian standards. |
23:59 |
emptty |
the good old troll |