Time |
Nick |
Message |
00:04 |
|
younishd joined #minetest-dev |
00:20 |
VanessaE |
sapier: ok, installing that pull now. |
00:24 |
sapier |
thanks VanessaE |
00:25 |
VanessaE |
it'll take effect at tonight's restart |
00:26 |
sapier |
ok if you don't complain till next weekend we're gonna merge it |
00:27 |
VanessaE |
ok. |
00:27 |
sapier |
unless someone else does complain ;-) |
00:29 |
acerspyro |
Yall ugly. |
00:29 |
acerspyro |
That's my complaint. |
00:46 |
hmmmm |
hello |
00:46 |
hmmmm |
oh man |
00:46 |
hmmmm |
so what's going with 0.4.12 |
00:47 |
sapier |
considering the amount of changes merged recently I'm not sure if it would be a good idea |
00:47 |
hmmmm |
some people wanted to do it soon |
00:47 |
hmmmm |
if we merge 2119, it's going to have to wait |
00:47 |
hmmmm |
something that huge is going to definitely crop up bugs |
00:47 |
hmmmm |
and bad ones |
00:48 |
hmmmm |
i'll try looking it over |
00:48 |
hmmmm |
how far have you gotten? |
00:48 |
sapier |
it's difficult to review as it's almost only code copy ... but diff messes everything up |
00:49 |
hmmmm |
i looked at some, what's up with src/network/toserverpacket.cpp and toclientpacket? |
00:49 |
hmmmm |
they're entire source files for a constructor |
00:50 |
sapier |
well he intends to do some work on how packets are created I assume it's preparation |
00:51 |
hmmmm |
so it's a work-in-progress? |
00:51 |
sapier |
partial |
00:51 |
hmmmm |
i thought it was ready |
00:51 |
sapier |
it's ready as of packet handling |
00:51 |
hmmmm |
yeah but definitely not to merge.. |
00:51 |
sapier |
but he's already doing additional stuff |
00:51 |
hmmmm |
okay |
00:51 |
hmmmm |
just checking because there has been a lot of talk about that recently |
00:52 |
sapier |
the new stuff ain't actually related to this change ... at least not direct |
00:52 |
hmmmm |
hmm what is the new stuff? |
00:52 |
sapier |
but you're right an entire source file for a constructor doesn't seem right |
00:52 |
hmmmm |
and how much does this interfere with enet integration? |
00:52 |
hmmmm |
it does if you're coding Java :-) |
00:52 |
sapier |
I don't know guess he wants to rewrite everything again |
00:53 |
hmmmm |
hrmm |
00:53 |
hmmmm |
rewriting things isn't necessarily good |
00:53 |
hmmmm |
does he want to rewrite the protocol itself? |
00:53 |
sapier |
I'm gonna let him surprise me what exactly he does ... but this part is reasonable work as it's doing some stuff we wanted to do for quite some time |
00:53 |
hmmmm |
or the way packets are processed? |
00:54 |
sapier |
I told him not to rewrite the protocol without asking why things where done the way they are done ... not sure if he's gonna really ask |
00:54 |
hmmmm |
humm |
00:54 |
hmmmm |
so what's your motivation for adding enet support? |
00:54 |
acerspyro |
sex |
00:54 |
sapier |
well let's focus on the current work not on future things |
00:55 |
hmmmm |
compatibility with certain minetest derivatives? |
00:55 |
sapier |
replacing the if/else cascade by a lookup table is a good approach |
00:55 |
hmmmm |
okay then |
00:55 |
acerspyro |
btw, why can't we provide an iOS app on the website? |
00:55 |
sapier |
acerspyro: no |
00:55 |
hmmmm |
what? |
00:55 |
acerspyro |
why |
00:56 |
sapier |
because we don't have one |
00:56 |
acerspyro |
What if we make one |
00:56 |
sapier |
do it |
00:56 |
hmmmm |
you mean why don't we magically come up with an apple iOS port? |
00:56 |
acerspyro |
hmmmm: like android building, yeah |
00:56 |
hmmmm |
yeah, do it, don't just tell us to make magicial stuff happen when there's already way too much work.. |
00:56 |
sapier |
android port took about two years and it's still beta |
00:56 |
acerspyro |
Ah, so iOS is to come |
00:56 |
sapier |
nope |
00:57 |
acerspyro |
in a far future |
00:57 |
hmmmm |
it is to come if somebody wants to implement it |
00:57 |
sapier |
I don't know about anyone working on an ios port |
00:57 |
hmmmm |
nobody here has plans for that |
00:57 |
acerspyro |
lol |
00:58 |
acerspyro |
you guys have a VERY VERY VERY VERY VERY long to-do list anyways and are late in your stuff, so I think the iOS port could wait :P |
00:58 |
sapier |
I don't even think any core dev does have a ios device ;-) |
00:58 |
acerspyro |
lol |
00:58 |
acerspyro |
I have an iPad 1 |
00:58 |
acerspyro |
That's it |
00:58 |
hmmmm |
maybe you should start working on an iOS port if you're interested in having it |
00:58 |
acerspyro |
sure |
00:59 |
acerspyro |
I am annoyed of shitty ass unofficial iOS clients |
01:00 |
sapier |
feel free to write the official port |
01:00 |
acerspyro |
ipadian? |
01:00 |
acerspyro |
Some kind of iOS VM |
01:00 |
sapier |
you'll always need the real thing for porting |
01:01 |
sapier |
btw I don't think apple does allow native apps on ios |
01:03 |
acerspyro |
Bitch, no more Adobe Air for Linux |
01:03 |
acerspyro |
I don't fucking care! |
01:03 |
acerspyro |
:D |
01:15 |
|
gregorycu joined #minetest-dev |
01:16 |
hmmmm |
hey VanessaE, you there? |
01:16 |
VanessaE |
yes |
01:16 |
acerspyro |
no |
01:17 |
acerspyro |
She's busy reading my chat on #minetest |
01:17 |
VanessaE |
(if I'd have said no, he'd have said "maybe" or something :P ) |
01:17 |
acerspyro |
lol |
01:17 |
hmmmm |
can you pleasepleaseplease profile Database_LevelDB::listAllLoadableBlocks for me on your big map |
01:17 |
VanessaE |
how would I do that? |
01:17 |
acerspyro |
Magic. |
01:17 |
acerspyro |
you need to believe. |
01:18 |
sapier |
acerspyro: stop trolling |
01:18 |
acerspyro |
not trolling anyone. |
01:18 |
acerspyro |
Just spewing random crap |
01:18 |
acerspyro |
And I will stop spewing random crap, sure |
01:18 |
hmmmm |
add a TimeTaker t("listAllLoadableBlocks); printf("listAllLoadableBlocks: %dms\n", t.stop()); to that function |
01:18 |
VanessaE |
ok, one moment |
01:19 |
hmmmm |
acerspyro, #minetest-dev is for serious development discussion, not randomness |
01:19 |
sapier |
acerspyro: in this case it's quite fine to kick you because you just said yourself you're violating the rules |
01:19 |
hmmmm |
please take silly banter elsewhere |
01:19 |
acerspyro |
I just said I'd stop |
01:19 |
hmmmm |
VanessaE: copy your map first, and run clearobjects on your copy |
01:19 |
VanessaE |
eep |
01:19 |
hmmmm |
note that you don't need to wait for the entire command to finish |
01:20 |
hmmmm |
just when you get how long that thing took |
01:20 |
hmmmm |
this is one of those things where frankly I have no idea how big the number is going to be |
01:20 |
hmmmm |
it could be half a second, it could be 2 minutes, i have no idea |
01:20 |
VanessaE |
I better run it on a local copy of the map then. |
01:20 |
hmmmm |
yea |
01:21 |
|
NakedFury joined #minetest-dev |
01:23 |
hmmmm |
also this could have radically different results based on the db used... |
01:23 |
VanessaE |
this'll be a while, I need to update my local map first |
01:23 |
hmmmm |
this would be simpler if i had a really honking huge map in all kinds of different formats right here |
01:23 |
gregorycu |
What are you investigating? |
01:24 |
hmmmm |
if it's a good idea to filter the blocks selected from the list |
01:25 |
hmmmm |
frankly I don't think I'm going to be able to do it without math directly in the SQL |
01:25 |
hmmmm |
and that's with sqlite3 |
01:26 |
VanessaE |
meanwhile, if you wanna download the map and fiddle with it, you can grab it from here: http://digitalaudioconcepts.com/vanessa/hobbies/minetest/worlds/ |
01:26 |
hmmmm |
yeah but how many GB is it... |
01:26 |
hmmmm |
i have dsl |
01:26 |
VanessaE |
6.3 GB |
01:26 |
VanessaE |
expands to about 6.7 or so |
01:26 |
hmmmm |
are any of those sqlite3 maps |
01:27 |
VanessaE |
all are leveldb |
01:27 |
VanessaE |
but minetest can migrate from one to another |
01:27 |
hmmmm |
okay |
01:27 |
hmmmm |
well this is going to take some time :) |
01:27 |
VanessaE |
ETA for remaining download, ~10 mins |
01:27 |
hmmmm |
31 hours it seems |
01:27 |
VanessaE |
(I have a fast pipe ;) ) |
01:28 |
hmmmm |
ahh nice |
01:28 |
hmmmm |
downloading at 50 KB/s |
01:28 |
hmmmm |
well at least it's not killing my bandwith while I wait 31 hours, haha.. |
01:29 |
VanessaE |
averaging about 7.3 MB/sec here |
01:30 |
VanessaE |
meanwhile, the bit you wanted me to add works out to this, yes? http://pastebin.com/V46QauWq (src/database-leveldb.cpp, lines 83 on down) |
01:30 |
hmmmm |
:/.. no |
01:31 |
hmmmm |
first of all the code being profiled needs to be between the TimeTaker declaration and the printf statement |
01:31 |
hmmmm |
second, the string needs to be closed.. |
01:31 |
VanessaE |
eek |
01:32 |
hmmmm |
if I made a typo telling you to jump off a cliff, would you do it !?!? |
01:32 |
VanessaE |
heh |
01:32 |
VanessaE |
well given that it's C++ I'd hardly be able to spot the typo ;) |
01:33 |
VanessaE |
so more like this: http://pastebin.com/iEEfqdqa |
01:33 |
hmmmm |
yeah, that's it |
01:33 |
hmmmm |
haha |
01:33 |
VanessaE |
and...failed to compile |
01:33 |
hmmmm |
oh |
01:34 |
VanessaE |
database-leveldb.cpp:85:2: error: ‘TimeTaker’ was not declared in this scope |
01:34 |
hmmmm |
#include "util/timetaker.h" |
01:34 |
hmmmm |
put that above void Database_LevelDB::listAllLoadableBlocks( ... |
01:34 |
VanessaE |
there we go, that got it |
01:34 |
VanessaE |
ok that's set |
01:34 |
* VanessaE |
waits for the map |
01:35 |
hmmmm |
this also determines whether or not I'm going to keep a saved block bitmap in the db for my upcoming trick :) |
01:40 |
|
proller joined #minetest-dev |
01:40 |
|
acerspyro joined #minetest-dev |
01:41 |
VanessaE |
jeez. note to self: don't untar big gazonga files like this on a routine basis |
01:47 |
est31 |
VanessaE: you offer whole downloads for all of your worlds? |
01:47 |
VanessaE |
yep |
01:47 |
est31 |
cool |
01:49 |
est31 |
@all encountered segfault in latest master |
01:49 |
VanessaE |
ok, done un-taring |
01:49 |
VanessaE |
making the backup now. |
01:50 |
est31 |
how to tell cmake to do debug symbols? |
01:51 |
est31 |
-DCMAKE_BUILD_TYPE=Debug doesnt work |
01:51 |
hmmmm |
-DCMAKE_BUILD_TYPE=Debug |
01:51 |
acerspyro |
Should have debug symbols. |
01:51 |
est31 |
gives stuff like 0x00000000006806b3 in MapBlock::serialize(std::ostream&, unsigned char, bool) () |
01:51 |
hmmmm |
odd |
01:51 |
acerspyro |
thread apply all bt full? |
01:52 |
acerspyro |
(I think) |
01:52 |
hmmmm |
do ctrl+F for "-O1" in src/CMakeLists.txt and change it to -O0 |
01:52 |
VanessaE |
hmmmm: ok, map updated and backed up. starting /clearobjects now. |
01:53 |
hmmmm |
yay |
01:54 |
hmmmm |
did you see the clearAllObjects: <whatever>ms output yet? |
01:54 |
VanessaE |
listAllLoadableBlocks: 52958ms |
01:54 |
hmmmm |
ouch |
01:54 |
hmmmm |
okay you can cancel that one |
01:55 |
hmmmm |
does it take too long to convert that map to sqlite3? |
01:55 |
VanessaE |
there's no way to cancel a /clearobjects ecept with a ctrl-C at the command line |
01:55 |
hmmmm |
yea that's okay |
01:55 |
hmmmm |
it's just a copy of the map, right? |
01:55 |
VanessaE |
yep |
01:56 |
VanessaE |
ok, canceled. |
01:56 |
VanessaE |
converting to sqlite3 will take a while, probably upwards of 10 minutes I guess |
01:56 |
hmmmm |
oh that's not too bad |
01:56 |
hmmmm |
i was expecting hours |
01:57 |
VanessaE |
shall I? |
01:57 |
hmmmm |
yea |
01:57 |
hmmmm |
please |
01:58 |
VanessaE |
ok, migrating it now. |
01:58 |
hmmmm |
thank you |
01:58 |
|
impact joined #minetest-dev |
01:59 |
VanessaE |
listAllLoadableBlocks: 50577ms was printed right before it started the actual migration process |
01:59 |
hmmmm |
ahh |
01:59 |
|
sapier left #minetest-dev |
01:59 |
hmmmm |
that's right, it's called in more than one place |
01:59 |
hmmmm |
haha |
02:00 |
hmmmm |
vanessae, while you're waiting, i was just wondering how often you typically *want* to clear all objects from the entire map |
02:00 |
VanessaE |
not often - in practice, probably once every few months |
02:00 |
hmmmm |
would you want to be able to clear objects in a radius? |
02:00 |
est31 |
eg killing old rats? |
02:01 |
VanessaE |
there's no need - worldedit has a function for that |
02:01 |
VanessaE |
//pos1, //pos2, //clearobjects (with two slashes) |
02:01 |
hmmmm |
how about a time-to-live feature for objects? |
02:01 |
VanessaE |
already exists. |
02:01 |
hmmmm |
ahh okay |
02:01 |
VanessaE |
by default, it's set to infinite; item_tweaks and related are supposed to set it to a sane value like 10minx or so |
02:02 |
VanessaE |
mins* |
02:02 |
hmmmm |
oh, so it's a part of the engine? |
02:02 |
hmmmm |
good |
02:02 |
VanessaE |
as I understand it, yeah |
02:02 |
hmmmm |
ahh so i don't need to bother with the objects then |
02:03 |
VanessaE |
lemme double-check that |
02:03 |
hmmmm |
and, as far as I can tell right now, I'm going to need an in-db structure to cache which blocks exist |
02:04 |
est31 |
sorry segfault was my error, everything works fine |
02:04 |
hmmmm |
basically my idea involves running listAllLoadableBlocks() every time the map is loaded, which isn't plausible at this moment |
02:05 |
acerspyro |
Is it the same dev as the MC WE who made MT WE? |
02:05 |
hmmmm |
as a side effect to implementing this I suppose I can shave a minute of time off of /clearobjects :) |
02:06 |
VanessaE |
hm, if there's indeed a TTL parameter for an entity, it's not documented in lua_api.txt |
02:06 |
VanessaE |
acerspyro: no |
02:07 |
T4im |
I think you could set one in the config though |
02:07 |
VanessaE |
yes |
02:08 |
VanessaE |
remove_items parameter |
02:08 |
VanessaE |
but that doesn't seem like an engine setting. |
02:08 |
hmmmm |
my gut feeling says that should be a mod-settable param |
02:08 |
T4im |
"item_entity_ttl = 900" |
02:08 |
VanessaE |
oh, or that |
02:08 |
VanessaE |
(my config is outdated) |
02:08 |
T4im |
Time in seconds for item entity to live. Default value: 900s. |
02:08 |
hmmmm |
some things you'd want to expire fast like maybe leaf blocks that have fallen |
02:08 |
hmmmm |
and then maybe something like super ultra rare item you'd want to never expire |
02:08 |
VanessaE |
# Time in seconds for item entity to live. Default value: 900s. |
02:08 |
VanessaE |
# Setting it to -1 disables the feature. |
02:08 |
VanessaE |
#item_entity_ttl = 900 |
02:10 |
VanessaE |
I think I remember now, it's set to infinite for everything except items that have been spawned/dropped, where that ^^^ setting takes precedence |
02:10 |
hmmmm |
ahh that's a sane object despawn scheme |
02:13 |
VanessaE |
https://github.com/minetest/minetest/blob/d7b3046cf699641f14148463ed7d77e038548f12/builtin/game/item_entity.lua#L99 |
02:13 |
VanessaE |
interesting. I thought it was handled inside the engine, not in the Lua part. |
02:13 |
hmmmm |
god that is such ugly code |
02:14 |
hmmmm |
lua would be so much nicer if it had simple things like "continue" |
02:14 |
VanessaE |
btw, I was dead wrong on the migration time :) |
02:14 |
VanessaE |
it's only at ~5 percent |
02:14 |
hmmmm |
:/ |
02:15 |
hmmmm |
on the bright side, only 29 hours left until i'm finished downloading your map |
02:16 |
T4im |
hopefully that download is continuable if it should stop D: |
02:17 |
est31 |
with http you can request single chunks of a file |
02:17 |
T4im |
also hmmmm, apparently lua has goto statements, which could be used inplace of a continue.. though.. ew.. why the heck would they add goto instead of continue D: |
02:18 |
hmmmm |
hah |
02:18 |
n4x |
why even add loops though |
02:18 |
hmmmm |
actually goto was added recently as a new feature iirc |
02:19 |
T4im |
also its probably best nobody uses that, or we will see gotos cargoculted into mods.. .S |
02:19 |
T4im |
:S |
02:19 |
hmmmm |
Lua is such an objectively bad language |
02:19 |
hmmmm |
the only thing it has going for it is easy integration |
02:19 |
T4im |
the language everybody hates and still uses ;) |
02:19 |
acerspyro |
lol |
02:20 |
VanessaE |
hmmmm: it could have been worse... |
02:20 |
VanessaE |
coulda been some form of BASIC :) |
02:21 |
kaeza |
<hmmmm> lua would be so much nicer if it had simple things like "continue" |
02:21 |
kaeza |
this comes up REALLY frequently on #lua :/ |
02:21 |
hmmmm |
ternary operator |
02:21 |
hmmmm |
overly verbose if statements |
02:21 |
hmmmm |
etc. |
02:21 |
est31 |
ternary is weird but it exists |
02:21 |
hmmmm |
when I look at lua code, all I see is too much indentation |
02:22 |
n4x |
bad code doesn't mean the language is bad |
02:22 |
hmmmm |
it's because it's lacking a lot of stuff that would make it neater |
02:22 |
n4x |
I would say it has lots of features nobody uses |
02:22 |
n4x |
or barely uses |
02:22 |
T4im |
hmmmm: at least they didn't choose to make indentation part of the syntax like some popular markup languages :/ |
02:22 |
hmmmm |
have you tried writing lua? it's REALLY hard to keep your number of indentation levels to a sane amount |
02:22 |
kaeza |
from your points, only the lack of 'continue' and a *real* ternary op is valid IMHO |
02:22 |
hmmmm |
yup.. |
02:23 |
kaeza |
the rest are subjective |
02:23 |
hmmmm |
lack of static typing too is a huge gripe of mine, but that's not along the same lines |
02:23 |
est31 |
T4im: not just some markup langs use it, also a very popular programming language which I despise out of that reason |
02:24 |
n4x |
hmmmm: it actually allows you to write nice 'functionalish' high order functions which basically have the patterns you want to abstract |
02:24 |
T4im |
ah, yea, nearly forgot about that one, est31 :D |
02:24 |
hmmmm |
honestly, trolling aside, I feel like javascript would've been the ideal choice |
02:24 |
hmmmm |
writing the API would be much more difficult but god damn it'd be worthi t |
02:26 |
T4im |
angelscript was afaik designed as a js similar language for games |
02:26 |
hmmmm |
maybe, but javascript has all that commercial backing and it's fast for what it is |
02:26 |
VanessaE |
hmmmm: are you channeling lamefun or something? *shudder* |
02:27 |
VanessaE |
next we hear, he'll be pushing HTML5 also |
02:27 |
T4im |
librocket? ;) |
02:30 |
est31 |
so thats bad because old hw? |
02:30 |
acerspyro |
make it out of CSS and JS! |
02:30 |
acerspyro |
:D |
02:35 |
kaeza |
thinking about it, you could somewhat implement a script[<luacode>] formspec element to fully predict and do advanced things with FS client-side (assuming a proper sandbox, of course) :P |
02:35 |
kaeza |
the formspec system is kinda like HTTP/HTML anyway :P |
02:44 |
est31 |
does the new font rendering look at least nicer on retina displays? |
02:49 |
VanessaE |
est31: in theory, but I've never tried it :) |
02:52 |
est31 |
has someone tried sth like if(retina)then font=large else font=normal |
02:54 |
VanessaE |
fonts right now are supposed to be displayed at the same angular size regardless of resolution, so long as the screen DPI can be detected, and the minetest instances running on the screens you're comparing have their gui_scaling set the same |
02:56 |
est31 |
so they got larger because MT takes dpi now as a baseline? |
02:57 |
VanessaE |
if they're larger, turn them down :P |
02:57 |
VanessaE |
they're supposed to be about the same size as they were back in e.g. 0.4.9 |
02:58 |
* est31 |
is compiling 0.4.9 |
03:06 |
|
shadowzone joined #minetest-dev |
03:08 |
est31 |
0.4.9 has normal size |
03:08 |
est31 |
master has weird large size |
03:09 |
VanessaE |
got before-and-after screenshots ? |
03:09 |
est31 |
ill make some |
03:09 |
VanessaE |
also, windows or linux? |
03:09 |
est31 |
ubuntu |
03:09 |
VanessaE |
ok |
03:10 |
est31 |
minetest_game also on 0.4.9 |
03:13 |
DFeniks |
have you changed dpi settings in ubuntu , but dont ask me where to change them , i dont remember |
03:17 |
est31 |
0.4.9 https://lut.im/jYNdj1t6/fc91aksT 0.4.11 before change https://lut.im/TKHbOqV6/Y8PoS3Mr master https://lut.im/5prnMIPq/JGlIMqp0 |
03:18 |
est31 |
not knowingly |
03:18 |
VanessaE |
they all look approximately the same to me |
03:19 |
VanessaE |
just the overall formspec size and layout differs |
03:19 |
est31 |
VanessaE: compare the "Minetest" in the upper left corner |
03:19 |
VanessaE |
master is slightly larger, yeah |
03:19 |
VanessaE |
I thought you meant the fonts were gigantic |
03:19 |
est31 |
no not that |
03:20 |
est31 |
but chat uses more screen space |
03:20 |
* VanessaE |
shrugs |
03:20 |
VanessaE |
you can turn the size down a tad |
03:21 |
VanessaE |
just turn gui_scaling down a little, maybe to 0.99 or so |
03:22 |
est31 |
ok will do that |
03:24 |
VanessaE |
(best to do that directly in your .conf) |
03:27 |
est31 |
yes |
03:27 |
VanessaE |
sapier said before that tiny differences like this are usually just rounding errors |
03:28 |
est31 |
really then they should use double instead of float |
03:38 |
|
Zeno` joined #minetest-dev |
03:44 |
|
TriBlade9 joined #minetest-dev |
03:49 |
hmmmm |
that isn't going to fix the main issue |
03:49 |
est31 |
which is |
03:50 |
hmmmm |
imprecision in float-string conversions |
03:51 |
hmmmm |
using a double instead of a float will 'fix' errors that crop up after doing a lot of floating point math requiring a lot of precision |
03:52 |
est31 |
conversion? |
04:01 |
est31 |
Man a "Duplicated seqnum 385 non matching packet detected:" results in a segfault |
04:18 |
kahrl |
since you were talking about dpi |
04:18 |
kahrl |
does anyone know if there is intentionally no dpi detection on windows or if just nobody has done it yet |
04:19 |
kahrl |
the code for it should be pretty simple, something like https://gist.github.com/kahrl/ae1213d791014d4afffb |
04:20 |
kahrl |
(I can't test ^ since I don't use windows) |
04:21 |
|
diemartin joined #minetest-dev |
04:21 |
kahrl |
of course this is just the "logical" dpi which can be changed in the control panel |
04:22 |
kahrl |
but using that makes sense anyway, if the user increases that they most likely want bigger fonts in minetest too |
04:23 |
hmmmm |
sapier said he was going to implement windows dpi detection |
04:24 |
hmmmm |
huh... what's SetProcessDPIAware |
04:24 |
kahrl |
he also said he doesn't want anything to do with dpi and scaling issues any longer |
04:24 |
kahrl |
dunno, I got that from http://stackoverflow.com/questions/12652835/getting-actual-screen-dpi-ppi-under-windows |
04:25 |
hmmmm |
ehh |
04:25 |
kahrl |
seems to be a function introduced in vista |
04:25 |
hmmmm |
I don't know what that api does and it's supported on vista and up |
04:25 |
hmmmm |
you should probably remove it |
04:25 |
hmmmm |
it doesn't seem like it does anything we'd want anyway |
04:25 |
hmmmm |
msdn doesn't even say what it does |
04:26 |
Zeno` |
http://msdn.microsoft.com/en-us/library/ms701681%28v=vs.85%29.aspx |
04:26 |
Zeno` |
As usual though I cannot understand their documentation heh |
04:26 |
hmmmm |
yes definitely remove, even if you did it the "correct" way, http://support.microsoft.com/kb/921337 |
04:26 |
kahrl |
if you don't call then the DWM scales your whole window as a bitmap |
04:27 |
kahrl |
obviously this results in blurriness |
04:27 |
kahrl |
I'm not sure if this affects opengl/directx applications though |
04:27 |
hmmmm |
of course not |
04:27 |
kahrl |
I wouldn't be so sure |
04:28 |
hmmmm |
that would be horribly inappropriate behavior |
04:28 |
hmmmm |
already, it's inappropriate behavior |
04:28 |
kahrl |
windows is full of inappropriate behavior |
04:28 |
hmmmm |
windows is FUBAR |
04:29 |
hmmmm |
hrmm |
04:29 |
hmmmm |
well the dwm is only on vista+ |
04:30 |
kahrl |
do we still support xp? |
04:30 |
hmmmm |
msdn lists a possible race condition as the rationale for its recommendation to use a manifest |
04:30 |
hmmmm |
which is completely bupkis for us |
04:30 |
kahrl |
eww |
04:30 |
hmmmm |
I support XP |
04:30 |
hmmmm |
the thing is |
04:30 |
kahrl |
well ok |
04:30 |
hmmmm |
if we don't put the manifest in and call that directly |
04:30 |
hmmmm |
the function won't be found on vista |
04:31 |
kahrl |
so this needs to be GetProcAddress'd |
04:31 |
hmmmm |
if we do put the manifest in and have it set along with exe loading, we have mingw problems and it'd restart the computer after it fails to open on windows xp sp2 ... |
04:31 |
hmmmm |
yes, that's precisely what i'm getting at |
04:31 |
hmmmm |
and if it's not found in user32, then don't bother calling it since DWM won't be doing its crazy things |
04:32 |
kahrl |
well that KB article problem can probably be avoided |
04:32 |
kahrl |
just don't use a tag with two schema properties |
04:32 |
hmmmm |
even if you do solve it, how well does it work with mingw |
04:33 |
kahrl |
no idea |
04:36 |
kahrl |
well it seems to be possible with a certain line in the resource file http://stackoverflow.com/questions/20255591/manifest-being-ignored-in-mingw-app |
04:37 |
kahrl |
now somebody just needs to write that manifest |
04:41 |
|
paramat joined #minetest-dev |
04:42 |
paramat |
hi hmmmm please could you review/merge #2123 ? |
04:42 |
ShadowBot |
https://github.com/minetest/minetest/issues/2123 -- Mgv7: New cave system with fewer large caves and new 3D noise tunnels by paramat |
04:44 |
hmmmm |
looks good |
04:55 |
est31 |
hmmmm: can you have a look at this too? we can ship it without package changes I think https://github.com/minetest/minetest/pull/2073#issuecomment-69466825 |
05:14 |
paramat |
https://cdn.mediacru.sh/0/0B9YkaARQdGV.png https://cdn.mediacru.sh/i/i2aSNNW1Ioux.png there are water caverns and endless abysses below v7 rivers, i remember you saying they are't intentional. this rare one looks good but mostly they are ugly thin vertical walls of water columns directly under the river walls, extending down to -31000. i plan to fix these, or at least remove the ugly structures |
05:37 |
paramat |
2 more things i might do are to make rivers a little narrower and have less of them |
05:37 |
|
paramat left #minetest-dev |
05:37 |
hmmmm |
how are you going to do that |
05:42 |
hmmmm |
looking at generateRidgeTerrain() a bit closer right now... a lot of the math in that function is quite arbitrary |
05:43 |
hmmmm |
the problem with the endless abysses happens when |uwatern| > width |
05:44 |
hmmmm |
basically the problem is that I don't take absolute values at the appropriate points in the calculation |
05:56 |
est31 |
why does minetest have LGPL not GPL? |
06:01 |
hmmmm |
paramat, I'd rather hold out on merging that |
06:02 |
hmmmm |
http://i.imgur.com/mIdaFP8.png |
06:03 |
|
chchjesus_ joined #minetest-dev |
06:05 |
|
selat joined #minetest-dev |
06:10 |
gregorycu |
I'd be a lot better optimiser if I knew assembly |
06:14 |
Zeno` |
If anyone feels like doing some thorough checking: https://github.com/Zeno-/minetest/commit/544cdd3f39f004ef3aa1a13bcd2bb520f6a99583 |
06:14 |
Zeno` |
I looked at every usage of MapNode and cannot see any issue (but there are quite a few to look at) |
06:18 |
Zeno` |
Oh, the reason I'd like to do that is so https://github.com/minetest/minetest/blob/master/src/voxel.cpp#L177 can be fixed |
06:19 |
gregorycu |
Zeno`: Do you know much about right shift? |
06:19 |
gregorycu |
Of signed numbers |
06:19 |
Zeno` |
gregorycu, yes, undefined behaviour |
06:19 |
gregorycu |
No, implementation specified behaviour |
06:19 |
Zeno` |
err yes |
06:19 |
gregorycu |
I'm just wondering if you know of any implementations that do the "wrong" thing |
06:20 |
Zeno` |
I haven't tested every compiler available, no :) |
06:20 |
Zeno` |
Why would you need to do that anyway? |
06:20 |
gregorycu |
Check out line 51 of numeric.h |
06:20 |
Zeno` |
All compilers that I know of optimise stuff like x / power_of_2 to bit shifts anyway |
06:21 |
gregorycu |
return (p>=0 ? p : p-d+1) / d; |
06:21 |
gregorycu |
This is equiv to (p >> d) on windows |
06:21 |
gregorycu |
Where d is number of bits, not block size |
06:22 |
Zeno` |
err |
06:22 |
Zeno` |
I don't understand what that function does |
06:22 |
gregorycu |
it's easily explained |
06:23 |
gregorycu |
It performs an integer division with a round towards negative infinity |
06:23 |
gregorycu |
(As opposed to the default integer division which rounds towards 0) |
06:23 |
|
chchjesus joined #minetest-dev |
06:23 |
Zeno` |
Why isn't the function called that then? lol |
06:24 |
gregorycu |
So, -10 / 16 gives you -1, not 0 |
06:24 |
Zeno` |
I don't think you can simply use implementation defined behaviour though :( |
06:24 |
Zeno` |
let me look at some of my bit fiddling implementations |
06:24 |
gregorycu |
I think it may be every implementation we care about |
06:24 |
gregorycu |
But yeah, not sure |
06:25 |
gregorycu |
I was expecting a bit of a speedup |
06:25 |
Zeno` |
Are you sure the compiler doesn't optimise it anyway? |
06:25 |
gregorycu |
I'm pretty sure it doesn't |
06:25 |
gregorycu |
Err... It could, I suppose |
06:25 |
gregorycu |
Depends how smart it is |
06:26 |
gregorycu |
Because d is a parameter |
06:27 |
Zeno` |
I reckon it would anyway. I should write a test case |
06:27 |
gregorycu |
This seems like a micro-optimisation, but it's part of a large optimisation |
06:28 |
Zeno` |
easiest way to check would be write a test case and look at the ASM :p |
06:29 |
Zeno` |
or profile both versions |
06:29 |
Zeno` |
say for 4 million or so random numbers |
06:32 |
Zeno` |
Anyway, the problem is that it's implementation defined. MSCV could change the behaviour in their next release. So could gcc. So could any compiler |
06:32 |
Zeno` |
I don't think they would, but... |
06:33 |
Zeno` |
I can do it for powers of two :D |
06:33 |
Zeno` |
but... not very useful |
06:35 |
gregorycu |
Ok, the compiler is smart enough |
06:35 |
gregorycu |
I just checked out the dis |
06:36 |
|
Kalabasa joined #minetest-dev |
06:38 |
gregorycu |
I am getting hung up on unimportant details |
06:42 |
Zeno` |
Thought it might |
06:45 |
hmmmm |
if getContainerPos(x, MAP_BLOCKSIZE) is hot *enough* to the point where that would matter, then I would say yes, change it to x >> 3 |
06:45 |
hmmmm |
x >> 4 rather |
06:46 |
hmmmm |
but the thing is you'd need to add a test to see what kind of shift the compiler places |
06:46 |
hmmmm |
and if it's logical, take care of that case |
06:46 |
hmmmm |
i know that compilers simply will not optimize the ternary variant. they're not as smart as you'd want to believe |
06:47 |
gregorycu |
hmmmm: I didn't think they would |
06:47 |
gregorycu |
But Visual Studio seems to have done just that |
06:47 |
hmmmm |
really .. |
06:47 |
gregorycu |
It probably recognises the pattern as a arth shift |
06:48 |
gregorycu |
It replaces the whole thing with sar |
06:48 |
hmmmm |
well it depends a lot on how you coded your test file |
06:48 |
gregorycu |
This was in minetest src |
06:48 |
gregorycu |
I'm still investigating |
06:49 |
Zeno` |
gcc optimises it |
06:49 |
gregorycu |
I'll have more data is 10 min |
06:49 |
gregorycu |
in |
06:50 |
hmmmm |
ahh it's marked as inline |
06:50 |
gregorycu |
Right |
06:50 |
hmmmm |
yeah i can see that happening |
06:50 |
hmmmm |
i'm surprised |
06:50 |
gregorycu |
This all came about because there was code to back-calculate the remainder of the division |
06:51 |
hmmmm |
i usually have problems getting gcc to make very obvious optimizations |
06:51 |
gregorycu |
And then that set me down this merry path of looking at division etc. |
06:52 |
Zeno` |
"back-calculate the remainder"? O.o |
06:52 |
gregorycu |
Yes |
06:52 |
gregorycu |
One sec |
06:53 |
hmmmm |
when i was 15 i used to initialize my variables like this: int x = x ^ x; |
06:53 |
gregorycu |
v3s16 relpos = pos - blockpos_last * MAP_BLOCKSIZE; |
06:54 |
Zeno` |
hmmmm, yes... the compiler won't xor eax, eax to clear it |
06:54 |
Zeno` |
that's a very good optimisation :) |
06:54 |
gregorycu |
In scalar terms, that's remainder = number - (quotient * DIVISOR) |
06:54 |
hmmmm |
except compiler don't place xor eax, eax anymore except for generating small code |
06:55 |
hmmmm |
compilers |
06:55 |
Zeno` |
yep |
06:55 |
Zeno` |
who knows what happens at the microcode level though (you might, lol) |
06:56 |
hmmmm |
nobody really does aside from the intel people |
06:56 |
Zeno` |
gregorycu, well I'm glad you're looking at that because I'm lost now :) |
06:56 |
hmmmm |
since the format is undocumented, and even if it were documented, they encrypt microcode updates |
06:56 |
hmmmm |
;; |
06:57 |
gregorycu |
I'll put it simply, if you want to get the quotient and the modulus there are a few ways of doing it |
06:58 |
gregorycu |
quot = number / divisor; mod = number - (quot * divisor); is one way |
06:58 |
gregorycu |
Where quot is the result of integer division |
06:58 |
gregorycu |
For some reason quot * divisor was coming up as a hotspot |
06:59 |
Zeno` |
ok, that makes sense |
06:59 |
gregorycu |
quot = number / divisor; mod = number % divisor; is another way |
07:00 |
Zeno` |
yeah of course |
07:00 |
gregorycu |
And those two statements with actually get optimised into a single asm statement |
07:00 |
gregorycu |
will |
07:01 |
kahrl |
number % divisor is implementation defined if number < 0 |
07:01 |
kahrl |
(and most implementations implement it in a stupid way) |
07:01 |
Zeno` |
that is also true |
07:01 |
Zeno` |
so we have two implementation defined optimisations now :) |
07:02 |
gregorycu |
kahrl: They actually implement it in the sane way |
07:02 |
gregorycu |
Anyway, yeah, implementation defined |
07:04 |
kahrl |
well I guess yeah if / rounds towards zero then % should leave negative numbers negative |
07:04 |
kahrl |
but that's (another reason) why / should round towards minus infinity |
07:04 |
Zeno` |
anyway, with the current getContainerPos() it takes my CPU 7 seconds to generate two random numbers and pass them to getContainerPos() (for 400000000 iterations) |
07:05 |
Zeno` |
that's with -O3. With -O0 it takes 8 seconds |
07:05 |
Zeno` |
(non-inlined version as well) |
07:06 |
hmmmm |
you could've messed up the test :) |
07:06 |
Zeno` |
I could have |
07:06 |
|
cib0 joined #minetest-dev |
07:06 |
Zeno` |
here's the older version: http://codepad.org/YvOMwrKe |
07:07 |
|
paramat joined #minetest-dev |
07:07 |
Zeno` |
I didn't bother implementing getContainerPos2() |
07:08 |
Zeno` |
my new version is the same but without inline. *shrug* |
07:08 |
Zeno` |
I must be bored |
07:09 |
paramat |
yep hmmmm your screenshot is not showing the new caves but the 'thin vertical walls of water columns directly under the river walls' created by your buggy river code, i recognise them they have that vertical spike structure, fly into one it will be water |
07:10 |
paramat |
to be sure you could disable rivers to see the new cave system on it's own |
07:11 |
hmmmm |
sorry yeah |
07:11 |
hmmmm |
those are rivers |
07:11 |
hmmmm |
i just noticed they're filled with water |
07:12 |
hmmmm |
sorry, it sounded like a miscalculated index to a noise buffer |
07:13 |
paramat |
cool =) |
07:13 |
hmmmm |
hey paramat, is it okay if i reduce the Y spread factor for the cave noise |
07:13 |
hmmmm |
right now caves are a bit too vertical |
07:14 |
paramat |
yes good idea, but remember that will reduce headroom |
07:14 |
paramat |
a few passages may become unpassable |
07:16 |
paramat |
to make rivers narrower there is a number in the code that can be reduced. to make fewer rivers i will increase the spread of river 2d noise (plus extra reduction of width to compensate) |
07:18 |
hmmmm |
hhmmm |
07:18 |
hmmmm |
it's reducing the headroom a little too much |
07:18 |
hmmmm |
how do we control this... |
07:18 |
paramat |
perhaps increasing x and z spreads instead? to 150 or 200 |
07:18 |
hmmmm |
yeah but |
07:18 |
hmmmm |
you make them thicker too at the same time |
07:19 |
paramat |
to preserve headroom thats unavoidable |
07:19 |
hmmmm |
i want the folding to happen on the Y direction more often, but not reduce the height |
07:19 |
hmmmm |
no, i'm certain it's not unavoidable |
07:19 |
hmmmm |
hrmm |
07:19 |
paramat |
okay to be more positive, difficult |
07:20 |
hmmmm |
noise can be hard to control =] |
07:22 |
paramat |
1.5 times wider in x, z directions is not a problem, i would increase x, z spreads to 150 |
07:23 |
hmmmm |
well |
07:23 |
hmmmm |
one way this *can* be done is to not use the noise values directly to decide whether or not to place an air node |
07:24 |
hmmmm |
but instead whether or not to place a shape |
07:24 |
hmmmm |
the shape in particular could be a 3 node vertical line |
07:24 |
hmmmm |
messy |
07:25 |
hmmmm |
another way we can do it is by adding a noise post-procesing step to do some kind of unidirectional gaussian blur on the Y axis |
07:25 |
hmmmm |
I'm not sure how it'd be possible to coax a Y bias directly out of the noise results.. |
07:26 |
paramat |
interesting ideas but perhaps for v8 instead? that'll get you started on that ;) |
07:26 |
hmmmm |
yeah. |
07:26 |
hmmmm |
I think I'll try going with idea #2 out of those |
07:28 |
paramat |
v7 tunnels are slow enough i suggest just squashing them simply with x, z spreads of 150 |
07:28 |
paramat |
i mean v7 is slow enough |
07:28 |
hmmmm |
it was fast until v5 caves came along |
07:28 |
hmmmm |
haha.. =/ |
07:28 |
hmmmm |
seriously |
07:28 |
paramat |
hehe |
07:28 |
hmmmm |
it was like 70ms per chunk |
07:28 |
hmmmm |
now it's 220 |
07:29 |
paramat |
70 with mountains and rivers? |
07:29 |
hmmmm |
yes |
07:29 |
paramat |
wow thats shocking |
07:29 |
paramat |
cant see how |
07:29 |
paramat |
just 2 more 3d noises on top of 2 existing |
07:29 |
hmmmm |
maybe i should check |
07:30 |
paramat |
could reduce tunnel octaves to 3 |
07:31 |
hmmmm |
130-160 without caves |
07:31 |
|
twoelk joined #minetest-dev |
07:34 |
paramat |
i would prefer to keep caves as in my PR, not squashed, verticality is good, after all players want to descend, making them more horizontal will frustrate, it's already hard enough finding a route down. speed descending is huge fun too |
07:36 |
|
Hunterz joined #minetest-dev |
07:38 |
hmmmm |
ohh |
07:39 |
hmmmm |
i forgot about my ore-generated caves |
07:39 |
hmmmm |
derp |
07:39 |
hmmmm |
no wonder why it's so slow |
07:45 |
paramat |
maybe calculation of river and mountain noises can be skipped when underground? i'll look into it |
07:46 |
hmmmm |
they can |
07:46 |
hmmmm |
i'm not very interested in further developing v7 though |
07:46 |
hmmmm |
it's a piece of junk - it always was a piece of junk |
07:46 |
hmmmm |
half developed ideas |
07:48 |
|
SopaXorzTaker joined #minetest-dev |
07:50 |
paramat |
its actually my favourite core mapgen |
07:52 |
gregorycu |
Zeno`: If you get a chance, did you want to pull #2140 locally and check it out |
07:52 |
ShadowBot |
https://github.com/minetest/minetest/issues/2140 -- Water perf improvements by gregorycu |
07:56 |
paramat |
i'm inspired to tune it and improve it, i see the potential in it, so could you perhaps leave it mostly in my care while you start fresh with v8? =) |
08:00 |
paramat |
a problem with more horizontal caves is increase of surface griefing: scars and gouges along the surface |
08:04 |
paramat |
the way i see it, with caves, being a vertical route is more important than being a horizontal route, so squashing them not desirable (while still being a cool idea in isolation) (sorry ... i am opinionated and passionate) |
08:08 |
paramat |
O/ |
08:08 |
|
paramat left #minetest-dev |
08:18 |
|
Player_2 joined #minetest-dev |
08:23 |
|
Krock joined #minetest-dev |
08:24 |
Krock |
updated #2138 |
08:24 |
ShadowBot |
https://github.com/minetest/minetest/issues/2138 -- Hide minetest version string by SmallJoker |
08:25 |
|
Calinou joined #minetest-dev |
08:32 |
|
TriBlade9 joined #minetest-dev |
08:38 |
|
nrzkt joined #minetest-dev |
08:49 |
|
Zeno` joined #minetest-dev |
08:51 |
|
cib0 joined #minetest-dev |
08:55 |
|
ImQ009 joined #minetest-dev |
09:06 |
|
ImQ009 joined #minetest-dev |
09:20 |
|
kilbith joined #minetest-dev |
09:24 |
|
Calinou joined #minetest-dev |
09:30 |
Zeno` |
gregorycu, are you awake? |
09:30 |
Zeno` |
void raiseModified(u32 mod, const char* reason) <--- the preferred minetest style is void raiseModified(u32 mod, const char *reason); |
09:30 |
Zeno` |
same with & |
09:32 |
nrzkt |
Zeno, can you open a test server with #2119 for diagnostic if all is right, if i do the diagnostic myself it's not clear. Sapier request a 1 week running server to test functions |
09:32 |
ShadowBot |
https://github.com/minetest/minetest/issues/2119 -- Rewrite client/server packet handling by nerzhul |
09:33 |
Zeno` |
nrzkt, looking at how I might do it now |
09:33 |
nrzkt |
you can simply pull my own branch https://github.com/nerzhul/minetest/tree/packet-handling and compile it |
09:34 |
Zeno` |
yeah I know that :P I really meant *where* I can do it |
09:34 |
nrzkt |
oh :) sorry |
09:34 |
Zeno` |
I can testing using my server I guess |
09:35 |
Zeno` |
give me a few moments. I'll set it up |
09:36 |
kilbith |
thanks very much Zeno` |
09:37 |
kilbith |
minetest_game only should be sufficient |
09:38 |
Zeno` |
Oh, it'll just be using my normal minetest_game |
09:38 |
Zeno` |
doing backups and stuff now |
09:39 |
Zeno` |
takes a while (database, excluding anything else, is 14GB) |
09:41 |
leat |
Zeno`: what backend are you using? |
09:41 |
Zeno` |
leveldb |
09:42 |
leat |
never corrupted so far? |
09:42 |
Zeno` |
none that were an issue |
09:42 |
hintss |
xD |
09:43 |
Zeno` |
I have had corruptions but they were caused by something related to teleporting near to world boundaries |
09:43 |
Zeno` |
still haven't worked that one out |
09:44 |
Zeno` |
nrzkt, I'm testing #2119, right? |
09:44 |
ShadowBot |
https://github.com/minetest/minetest/issues/2119 -- Rewrite client/server packet handling by nerzhul |
09:44 |
nrzkt |
yes |
09:44 |
nrzkt |
it's the branch to test, packet-handle_2 is next PR, and is not ready for production |
09:44 |
Calinou |
can you host a server to test? |
09:45 |
nrzkt |
me ? |
09:45 |
Calinou |
you or Zeno` |
09:45 |
|
ImQ009 joined #minetest-dev |
09:45 |
Calinou |
we'd need a large server to ensure it works well :/ |
09:45 |
kilbith |
hmmmm: the nerzhul's pull is for the layer 7, not the layer 4 (Enet). |
09:46 |
Zeno` |
I am building now, nrzkt |
09:46 |
Zeno` |
I'll host the test |
09:47 |
nrzkt |
perfect, it's better someone other than me have the hosting, neutral server :) |
09:48 |
Zeno` |
ok it's up and running |
09:48 |
Zeno` |
mtzeno.com 30000 |
09:49 |
* kilbith |
is coming... |
09:50 |
Zeno` |
Calinou, I will reset your password |
09:50 |
Calinou |
no need |
09:50 |
Zeno` |
got it now? :) |
09:50 |
Calinou |
works |
09:51 |
|
ImQ009 joined #minetest-dev |
09:52 |
nrzkt |
for somes which are saying the code is huge, i cannot do a more little commit because we need all of those parts for the base. I know two classes are useless, but they are there for compatibility of the code reading, i'll remove it later. |
09:56 |
Zeno` |
nrzkt, well no immediate issues and the server load does seem to be a bit lower |
09:56 |
Calinou |
https://github.com/minetest/minetest_game/pull/401 |
09:56 |
Calinou |
comments? |
09:57 |
nrzkt |
packet processing is faster when huge amount of packets, but load is due to map, not network |
09:57 |
Calinou |
I'd like the default crosshair to be an image |
09:57 |
gregorycu |
I am awake, but I'm watching the game |
09:58 |
gregorycu |
void raiseModified(u32 mod, const char *reason) |
09:58 |
gregorycu |
What's the difference? |
09:59 |
gregorycu |
Oh |
09:59 |
gregorycu |
Seriously? |
09:59 |
Zeno` |
nrzkt, the biggest bottleneck in communications is zlibCompress anyway |
09:59 |
nrzkt |
ofc |
10:00 |
Krock |
Calinou, looks horrible, srsly |
10:00 |
nrzkt |
i'm rewriting L7 part, because there are duplicated and optimization. Next part will be packet rewrite, to have a common interface and also remove some duplicate code and optimize some processing (like session search) |
10:01 |
Krock |
good luck |
10:04 |
nrzkt |
i'm blocked on a byte conversion problem it seem |
10:04 |
nrzkt |
the input is correct but the server output is incorrect... the problem was in u32 conversion |
10:04 |
Zeno` |
nrzkt, be sure to let me know of updates/fixes since I'm running the test on my real server :P |
10:04 |
nrzkt |
i have no fixes to do on this pr |
10:04 |
Zeno` |
oh, phew |
10:05 |
Zeno` |
but if you do, let me know :) |
10:05 |
Zeno` |
testing client now... |
10:05 |
nrzkt |
it's working very well, problems are on PR-2 , no problem, i don't see any probme |
10:08 |
Zeno` |
ok, well the server is running with the patch and now my client is as well |
10:08 |
Zeno` |
I don't think I've seen any issues so far |
10:19 |
Zeno` |
so far so good nrzkt. I'll let you know if I have issues in the coming week |
10:19 |
Zeno` |
let sapier know I'm hosting the patch as well |
10:19 |
nrzkt |
no problem i'm waiting the merge |
10:20 |
nrzkt |
vanessaE uses the merge too since this night |
10:20 |
kilbith |
he will read the logs, the admins feedbacks would be useful |
10:20 |
|
cib0 joined #minetest-dev |
10:22 |
Zeno` |
well the more testers the better ;) |
10:25 |
kilbith |
the start-up loading seems faster now that L7 is improved |
10:28 |
est31 |
there is an issue with master: the hearts are drawn over the HUD when it has two lines |
10:37 |
est31 |
https://lut.im/WZc5eNkR/79pCAwO4?t |
10:38 |
est31 |
that was on VanessaE survival |
10:56 |
|
rubenwardy joined #minetest-dev |
11:00 |
|
SudoAptGetPlay joined #minetest-dev |
11:01 |
gregorycu |
Back |
11:06 |
Zeno` |
gregorycu, scroll up ;) |
11:06 |
Zeno` |
also your PR doesn't seem to apply? |
11:07 |
gregorycu |
You talking about merge conflicts? |
11:08 |
Zeno` |
Not sure. Just looking at the PR for now |
11:08 |
Zeno` |
"we cannot automatically merge this" |
11:08 |
Zeno` |
I haven't tried to apply it myself yet |
11:09 |
gregorycu |
Yeah, merge conflict |
11:22 |
|
gregorycu_ joined #minetest-dev |
11:22 |
|
sapier joined #minetest-dev |
11:22 |
sapier |
https://github.com/minetest/minetest/pull/2132 http://imgur.com/zfSqJji,NUxEBYx guess that's all we can do about reducing buttons on mainmenu. |
11:23 |
sapier |
-mainmenu + mainscreen |
11:23 |
kilbith |
sapier: read logs plz. |
11:23 |
sapier |
somethin special there? |
11:23 |
kilbith |
yes, testing 2119 on zeno's server |
11:24 |
sapier |
and? |
11:24 |
kilbith |
no problem to signal for the moment |
11:25 |
kilbith |
that's seems (subjectively) faster |
11:25 |
Zeno` |
I'd ignore the subjective thing ;) |
11:25 |
sapier |
no issues yet is nothing worth to mention 1 day after start of testing |
11:25 |
Zeno` |
there are too many variables |
11:26 |
sapier |
Zeno`: as of code design it should be faster, yet I don't know if the effect is large enough to realize |
11:26 |
sapier |
if your server ain't close to the edge about what it can handle you most likely wont notice a difference |
11:26 |
Zeno` |
sapier, I agree. The performance *is* increased but I don't know if a user could notice it |
11:27 |
sapier |
I think it's more about increasing the maximum amount of clients |
11:27 |
Zeno` |
yes |
11:27 |
Zeno` |
and neither my server nor VanessaE's get 15+ clients these days :( |
11:27 |
sapier |
and of course it's code cleanup :-) |
11:28 |
sapier |
still imho we should wait a week and see what's gonna happen |
11:28 |
Zeno` |
yeah, that's why I applied the patch |
11:49 |
gregorycu |
Zeno`: So, what do I do? |
12:00 |
Zeno` |
rebase? |
12:01 |
Zeno` |
who wrote the particle system? |
12:03 |
Zeno` |
ParticleManager::handleParticleEvent() is using unitialised stuff |
12:09 |
gregorycu |
We leak a lot of stuff |
12:10 |
gregorycu |
About 150k leaks |
12:11 |
gregorycu |
Do we close lua down properly? |
12:11 |
Zeno` |
it's not a leak |
12:11 |
Zeno` |
it's using objects that are not initialised |
12:13 |
gregorycu |
I'm not talking about the particle system, I'm talking about what I am doing |
12:13 |
gregorycu |
Investigating pipeworks |
12:14 |
Zeno` |
actually it might be a bug in #2119 |
12:14 |
ShadowBot |
https://github.com/minetest/minetest/issues/2119 -- Rewrite client/server packet handling by nerzhul |
12:15 |
|
jin_xi joined #minetest-dev |
12:15 |
gregorycu |
What is |
12:16 |
Zeno` |
Particles using unititialised data |
12:16 |
Zeno` |
rebuilding now |
12:17 |
nrzkt |
i don't modify the current running code, this may be uninitialized before |
12:20 |
Zeno` |
well, I dunno |
12:20 |
Zeno` |
running tests again |
12:20 |
Zeno` |
https://github.com/nerzhul/minetest/blob/packet-handling/src/client.cpp#L1806 |
12:21 |
Zeno` |
it's hard because each test takes about 20 minutes |
12:21 |
Zeno` |
but id is supposed to be 32-bit |
12:26 |
nrzkt |
in packet it's 16bit |
12:26 |
nrzkt |
we need to cast it, then |
12:26 |
nrzkt |
i'll fix it soon, i go to lunch |
12:28 |
|
cib0 joined #minetest-dev |
12:34 |
|
n4x joined #minetest-dev |
12:52 |
|
gregorycu_ joined #minetest-dev |
12:58 |
gregorycu |
Good news, I found a (the?) leak |
12:59 |
gregorycu |
We are leaking WieldMeshSceneNode objects |
13:01 |
|
ElectronLibre joined #minetest-dev |
13:02 |
|
Mine-aholic joined #minetest-dev |
13:03 |
nrzkt |
Zeno, a cast from u16 to u32 resolve the problem ? |
13:07 |
|
Mine-aholic joined #minetest-dev |
13:10 |
Zeno` |
I changed u16 id; to u32 id; |
13:10 |
nrzkt |
no |
13:10 |
nrzkt |
BAD |
13:10 |
Zeno` |
I know, but something very odd is happening here |
13:10 |
nrzkt |
if you do that extractor tries to extract u32 value whereas packet has ONLY a u16 value (yes it's stupid but server send that) |
13:11 |
nrzkt |
look at SendDeleteParticleSpawner in server.cpp in master |
13:13 |
|
Mine-aholic joined #minetest-dev |
13:13 |
|
iqualfragile joined #minetest-dev |
13:13 |
Zeno` |
yeah |
13:15 |
Zeno` |
I actually can't work out wtf is going on :/ |
13:17 |
Zeno` |
the code is complicated |
13:17 |
Zeno` |
I'll look again tomorrow I think |
13:18 |
nrzkt |
i updated the pull request and cast read u16 to u32 |
13:19 |
nrzkt |
i you can confirm the bug disappear it would be cool |
13:22 |
Zeno` |
I don't know if this is an issue at all now :/ |
13:23 |
sapier |
guys never ever change types of packet elements!!! that's gonna horribly fail! |
13:26 |
Zeno` |
s/an/the |
13:31 |
gregorycu |
Fucking hell, I thought I found the leak, all I found was _a_ leak |
13:31 |
gregorycu |
lol, same story as you Zeno |
13:32 |
Zeno` |
All I know is that https://github.com/minetest/minetest/blob/master/src/particles.cpp#L476 causes an initialized variable to be accessed/used down the line |
13:33 |
Zeno` |
whether that's because of the patch or not I haven't determined |
13:34 |
Zeno` |
mainly because I find the whole of particles.cpp fairly confusing. I dunno why |
13:35 |
gregorycu |
Maybe because it is confusing? |
13:35 |
Zeno` |
Could be |
13:36 |
|
ElectronLibre_ joined #minetest-dev |
13:48 |
sapier |
https://github.com/minetest/minetest/pull/2132 anyone to provide better starter button icons? |
13:50 |
sapier |
is there still a leak in particles? |
14:01 |
gregorycu |
Are you referring to pipeworks? |
14:01 |
gregorycu |
It's leaking entities |
14:01 |
gregorycu |
By "it", I mean the core engine |
14:03 |
gregorycu |
I really wish I knew what I were doing |
14:03 |
gregorycu |
was |
14:03 |
gregorycu |
am |
14:04 |
gregorycu |
Anybody know much about irrlicht? |
14:06 |
sapier |
didn't you use pipeworks to flood a mapblock? |
14:06 |
sapier |
irrlicht is not related to pipeworks ;) |
14:08 |
gregorycu |
I think you're confusing me with a modder or something |
14:09 |
gregorycu |
We are leaking objects |
14:09 |
gregorycu |
WieldMeshSceneNodes, to be precise |
14:11 |
sapier |
great |
14:12 |
gregorycu |
Looks to be a dodgy refcount |
14:12 |
gregorycu |
I'll have a solution within the hour |
14:23 |
|
iqualfragile joined #minetest-dev |
14:27 |
kahrl |
gregorycu, try removing the grab() at content_cao.cpp:948 |
14:27 |
gregorycu |
Already have :) |
14:27 |
kahrl |
ah |
14:27 |
gregorycu |
I'm trying to figure out what's going on, I think there are more issues |
14:28 |
gregorycu |
It's lines like that kahrl, that really bug me |
14:28 |
gregorycu |
It's like a dash of magic to make it work |
14:29 |
kahrl |
I don't know why I added it |
14:30 |
kahrl |
probably because all the other cases grab their node |
14:30 |
kahrl |
but those aren't allocated with new so it makes more sense there |
14:31 |
gregorycu |
I really dislike the... informal nature of it all |
14:31 |
gregorycu |
That's cause of irrlight |
14:31 |
gregorycu |
Too easy to stuff up |
14:37 |
kahrl |
well I don't really see a good way to make it more formal |
14:37 |
kahrl |
nobody is going to rewrite minetest in rust |
14:37 |
kahrl |
and smart pointers... bleh, even easier to stuff up |
14:39 |
gregorycu |
What's rust? |
14:39 |
gregorycu |
Doesn't matter |
14:39 |
gregorycu |
The metrics I was using are inaccurate, that may have fixed it |
14:40 |
kahrl |
a programming language, compiled like C++, supposedly with similar performance, but pointer types with built in memory management semantics |
14:40 |
gregorycu |
But I know C++ |
14:40 |
gregorycu |
Let's stick to C++ |
14:40 |
kahrl |
yeah |
14:41 |
gregorycu |
I'll rephraise, I though I knew C++ |
14:41 |
gregorycu |
thought |
14:51 |
|
cib0 joined #minetest-dev |
14:51 |
|
T4im joined #minetest-dev |
14:51 |
|
nore joined #minetest-dev |
14:58 |
nore |
sfan5, thoughts about game#400, game#397 and game#388? |
14:58 |
ShadowBot |
https://github.com/minetest/minetest_game/issues/400 -- Add straw by kilbith2 |
14:58 |
ShadowBot |
https://github.com/minetest/minetest_game/issues/397 -- Follow naming convention of textures and sounds in doors by CraigyDavi |
14:59 |
ShadowBot |
https://github.com/minetest/minetest_game/issues/388 -- Add fancy inventory for bones by CraigyDavi |
14:59 |
|
shadowzone joined #minetest-dev |
14:59 |
|
shadowzone joined #minetest-dev |
14:59 |
|
shadowzone joined #minetest-dev |
15:00 |
sfan5 |
nore: game#388 is good |
15:00 |
ShadowBot |
https://github.com/minetest/minetest_game/issues/388 -- Add fancy inventory for bones by CraigyDavi |
15:00 |
sfan5 |
(good = you can merge it) |
15:00 |
sfan5 |
s/you/we/ |
15:01 |
nore |
ok, doing that |
15:01 |
sfan5 |
game#397 is ok too |
15:01 |
ShadowBot |
https://github.com/minetest/minetest_game/issues/397 -- Follow naming convention of textures and sounds in doors by CraigyDavi |
15:03 |
sfan5 |
i commented on game#400 |
15:03 |
ShadowBot |
https://github.com/minetest/minetest_game/issues/400 -- Add straw by kilbith2 |
15:05 |
shadowzone |
Any news on my PR or is that not gonna be merged and instead made into a button on the pause menu? |
15:06 |
nore |
shadowzone, link? |
15:07 |
shadowzone |
https://github.com/minetest/minetest/pull/2135 |
15:09 |
kilbith |
sfan5: better ? https://lut.im/VYEr5qfk/Q957kKA2 |
15:10 |
sfan5 |
kilbith: i don't see a difference |
15:10 |
kilbith |
i've lightened more top & bottom |
15:10 |
sfan5 |
try making it even more lighter |
15:11 |
|
Megaf joined #minetest-dev |
15:13 |
kilbith |
sfan5: https://lut.im/qnCt65RU/T3h0iQxY |
15:13 |
sfan5 |
those look exactly identical |
15:13 |
sfan5 |
are you sure the texture changed |
15:14 |
kilbith |
hmm, no. +10 of light and +10 of contrast |
15:18 |
Krock |
kilbith, I like those |
15:19 |
kilbith |
like everyone |
15:24 |
kilbith |
sfan5: i was saving the file in the wrong folder, sorry |
15:24 |
kilbith |
sfan5: better now ? https://lut.im/u4ChbFNs/zHgR7lWg |
15:24 |
sfan5 |
kilbith: yep |
15:24 |
kilbith |
ok, pushing... |
15:26 |
kilbith |
ok, ready. |
15:28 |
sfan5 |
nore: game#400 is good too |
15:28 |
ShadowBot |
https://github.com/minetest/minetest_game/issues/400 -- Add straw by kilbith2 |
15:29 |
nore |
sfan5, ok |
15:31 |
nore |
done :) |
15:35 |
kilbith |
someone has tested game#395 ? |
15:35 |
ShadowBot |
https://github.com/minetest/minetest_game/issues/395 -- Make furnace work even when unloaded by Kalabasa |
15:37 |
|
selat joined #minetest-dev |
15:37 |
nore |
not yet |
15:41 |
|
booly-yam-4217 joined #minetest-dev |
15:47 |
est31 |
I think the issue in #395 is a very basic one related to abms. When you walk away from your farm, you expect your plants to grow when you are not present |
15:48 |
ShadowBot |
https://github.com/minetest/minetest/issues/395 -- Config file on XDG dir on Linux |
15:48 |
est31 |
meant game#395 |
15:48 |
ShadowBot |
https://github.com/minetest/minetest_game/issues/395 -- Make furnace work even when unloaded by Kalabasa |
15:50 |
sapier |
est31 how is furnace related to farm? |
15:50 |
est31 |
so I think we should have a param to the register_abm method that contains whether the abm should be simulated when loading the map again |
15:50 |
est31 |
^that way |
15:50 |
sapier |
no we shouldn't |
15:50 |
sapier |
abm is a basic mechanism |
15:51 |
sapier |
if this complexity is needed by a mod (even default game mods) the mod has to handle it |
15:51 |
est31 |
and another method? This is neeeded more often than just once |
15:52 |
sapier |
because mods abuse abms for things they haven't been meant for |
15:52 |
sapier |
and as always once someone did it others copy the bad example |
15:53 |
est31 |
so that speaks against a "hand-made" solution for the furnace and for an engine solution |
15:54 |
sapier |
imho if it's needed that hard we'd have to add some sort of "complex_abm" but don't bloat regular abm handling by that complexity |
15:55 |
sapier |
most abm's work just fine without simulation, if they'd have to do it too that'd cause a lot of additional overhead for no reason |
15:55 |
gregorycu |
How do you simulate an abm reliably? |
15:56 |
sapier |
see the commit he's calculation the time from last abm at this position by storing information in metadata |
15:56 |
sapier |
doing this for all abms is quite crazy |
15:56 |
est31 |
you could give the method a param that sais how often it would have been invoked if it were loaded |
15:56 |
est31 |
yes i agree |
15:56 |
sapier |
you'd bloat metadata as well as cause additional overhead for each single node |
15:57 |
est31 |
therefore we need to separate between "bloated" nodes and nonbloated ones. |
15:57 |
sapier |
and even more severe what to do if there are multiple abm's attached to a node? |
15:57 |
est31 |
we only need to store when a mapblock/chunk/whatever was last offloaded by the server |
15:57 |
est31 |
in the db |
15:58 |
sapier |
we don't know when it was last offloaded by server |
15:58 |
sapier |
if we wanted to know we'd have to update all nodes prior saving block |
15:59 |
sapier |
and it wouldn't help for the situation the the furnace commit fixes too because you still wouldn't know when this abm was called last |
15:59 |
est31 |
we can't invoke something when the server offloads? |
16:00 |
sapier |
we can but we don't do it and it's quite significant overhead for guessed 0.01 nodes per block which really need it |
16:00 |
sapier |
and as you see in furnace commit there is another way to do it not causing this overhead |
16:00 |
est31 |
through code duplication, i see |
16:00 |
sapier |
not necessaryly |
16:01 |
est31 |
but? |
16:01 |
sapier |
you could encapsulate that code within a register_simulated_abm |
16:01 |
est31 |
ok thats goos |
16:01 |
est31 |
good |
16:01 |
sapier |
better register_timed_abm |
16:02 |
sapier |
those who really need the time information may use it those who don't can still use the lightweight version |
16:02 |
gregorycu |
I think it's better just to have the ability to force nodes to be loaded |
16:02 |
sapier |
no it's not |
16:02 |
gregorycu |
You can't possibly be accurate trying to "fast forward" node abms to catch up |
16:02 |
sapier |
it's violating minetest design specification |
16:03 |
gregorycu |
How dare the wants of the people violate the design specs! |
16:03 |
sapier |
it's just a workaround used by those who don't wanna write sufficient code |
16:03 |
est31 |
you are never accurate, as ambs always have a probability |
16:03 |
gregorycu |
I'm not talking about probability |
16:03 |
gregorycu |
What if one node influences another node |
16:03 |
|
Zeno` joined #minetest-dev |
16:03 |
gregorycu |
And that node was loaded |
16:03 |
sapier |
gregorycu: you didn't think your suggestion to the end |
16:03 |
est31 |
and its stupid to keep a bytestring in memory and call all n seconds a method to check change |
16:04 |
gregorycu |
Why? |
16:04 |
gregorycu |
How did I not? What am I missing? |
16:04 |
est31 |
because you can offload it, execute the stuff and load it again |
16:04 |
sapier |
if server shuts down a node will be saved anyway so you'd actually need the persistency code to preserve the states |
16:04 |
est31 |
do you want to keep all furnaces in memory? all workstations? all everything? |
16:04 |
sapier |
unless you're lazy and ignore those errors |
16:04 |
gregorycu |
I thought we were talking about things working in the background? |
16:05 |
est31 |
yes there are administrative world anchors see technic mod for details |
16:05 |
est31 |
but those introduce lag |
16:05 |
sapier |
so once you are able to keep your states throughout server restart, don't you think those states won't be available throughout block reload too? |
16:05 |
est31 |
and bloat memory |
16:05 |
gregorycu |
I think you are misunderstanding what I'm saying |
16:05 |
gregorycu |
Well, est31 understands |
16:05 |
sapier |
I do gregorycu |
16:06 |
sapier |
whatever a node would've had to do can be done on node loading too IF this is implemented |
16:06 |
gregorycu |
That's not true |
16:06 |
sapier |
it is |
16:06 |
gregorycu |
What if a node influenced another node |
16:06 |
est31 |
yes of course for that there is another mechanism |
16:07 |
est31 |
the same one the administrative world anchor uses |
16:07 |
sapier |
a node is a static element not supposed to interact to other nodes |
16:07 |
gregorycu |
But the other node is in memory the whole time |
16:07 |
sapier |
if you wanna have active elements use entities |
16:07 |
gregorycu |
People often make machines as nodes |
16:07 |
sapier |
gregorycu: following your logic server would've to keep whole map active all the time |
16:08 |
est31 |
^ |
16:08 |
gregorycu |
When did I say keep the whole map loaded? |
16:08 |
gregorycu |
Just keep the important blocks loaded, via the anchors |
16:08 |
sapier |
there always will be a node unloaded which could be checked by some other node |
16:08 |
gregorycu |
Not with anchors |
16:09 |
sapier |
anchors wouldn't help |
16:09 |
gregorycu |
Why not? |
16:09 |
sapier |
because it'd still not guarantee that noone relies on nodes not anchored |
16:09 |
gregorycu |
Right, but the onus is on the player to get that right |
16:09 |
T4im |
est31: it should introduce less lag than an additional player though if configured right… especially in technic it seems common for players to start idling around their quarries keeping 3x3 blocks loaded instead of possibly just one from an anchor |
16:10 |
T4im |
also seen players multiaccounting for that purpose |
16:10 |
est31 |
VanessaE doesn't want to give me some for some reason. I'll idle now. |
16:10 |
gregorycu |
I agree with est31 however that we need some way to run code just before a block unloads |
16:11 |
gregorycu |
Or server shutdown |
16:11 |
sapier |
gregorycu: there's very very very little reason for keeping a node active, almost anyone asking for it by now did specify a reason which could be done without keeping a node active. |
16:12 |
est31 |
gregorycu: this API might interest you https://github.com/minetest/minetest/blob/master/builtin/game/forceloading.lua |
16:12 |
gregorycu |
Well, I just said one |
16:12 |
gregorycu |
One node influencing another |
16:12 |
sapier |
it is additional work yes ... but I don't wanna support violating design rules just because of lazyness |
16:12 |
sapier |
if one node knows about the other one influencing it it could store the other nodes state too |
16:13 |
gregorycu |
Every node could store every other nodes state |
16:13 |
sapier |
as long as it's unloaded that state will be valid |
16:13 |
est31 |
the most clean way is as sapier said an own method register_counting_abm or sth along that line and then give the method an integer of how often it would have been called. |
16:13 |
gregorycu |
This is a very good point |
16:13 |
gregorycu |
sapier just made an excellent point |
16:14 |
gregorycu |
Rather than put the logic in the nodes, put the logic outside the nodes |
16:14 |
gregorycu |
But where do you save it? |
16:14 |
sapier |
actually nodes are not supposed to contain complex logics |
16:14 |
est31 |
even plants have |
16:14 |
gregorycu |
Is that also against the design rules? |
16:15 |
est31 |
if dirt if light if not overpopulated |
16:15 |
sapier |
see gregorycu we've got heavy entities and lightweight nodes. I try to keep the nodes lightweight because if you add all those features entities already provide they're gonna be as heavy as entities are now |
16:16 |
sapier |
node metadata storage is a heavy operation it's supposed to be used with caution and not excessive |
16:16 |
gregorycu |
Well, is there some mod design guidelines somewhere? |
16:16 |
sapier |
nothing written |
16:17 |
Zeno` |
how people write mods is not controllable (IMO) |
16:17 |
est31 |
due to LGPL |
16:17 |
gregorycu |
*sigh* |
16:17 |
sapier |
we can just tell how core code is done |
16:17 |
T4im |
well, you do have a lot of cargo culting in the mod area.. so write good code that is being copied and you get better copies |
16:17 |
gregorycu |
I think everyone is being retarded in different ways |
16:17 |
Zeno` |
no, due to the Lua API |
16:18 |
gregorycu |
Or I'm fucking cranky |
16:18 |
sapier |
T4im: ppl tend to copy worst example |
16:18 |
gregorycu |
Or both |
16:18 |
sapier |
because good ones usually look complex at first glance |
16:18 |
est31 |
:D |
16:18 |
gregorycu |
Only if the developer is stupid |
16:18 |
* VanessaE |
peeks in |
16:18 |
est31 |
(or learning) |
16:18 |
T4im |
sapier: from what I've seen they tend to copy anything that they understand does something they want to have done.. |
16:19 |
Zeno` |
yes, and the mods that are "stupid" tend to end up at the bottom of the pile |
16:19 |
sapier |
nope in lua you can't hide the implementation details behind a clean api |
16:19 |
gregorycu |
Give me a good example on how to structure a mod, and I'll follow it |
16:19 |
T4im |
the good examples are often not as clearly separated enough to be recognizeable |
16:19 |
gregorycu |
I'll even especially follow it if I can understand how it is good |
16:19 |
Zeno` |
more people should use the Lua profiler thing that sapier (?) added |
16:19 |
sapier |
gregorycu: we don't wanna force any mod structure that's up to everyone elses opinion |
16:20 |
est31 |
good to know there is one |
16:20 |
gregorycu |
good for you |
16:20 |
gregorycu |
Because when I said provide guidelines, and good examples |
16:20 |
T4im |
for example everyone seems to copy isolating crafting recipes into own crafts.lua files or similar.. this is _bad_ design, as it breaks functional cohesion.. put the recipes to their node definition! and separate node from node instead of layer by layer (nodes, abs, crafts each in own file just makes you have to edit every single file every single time) |
16:20 |
gregorycu |
I actually meant rules that must never be broken |
16:20 |
sapier |
yes it's been added because it's always been mobf to be blamed about bad minetest performance ... while it's quite often been a different mod causing the lag |
16:20 |
T4im |
this is bad design copied from default: |
16:20 |
jin_xi |
a collection of best practice example code for "how can i..." type questions would be nice |
16:20 |
T4im |
fix default, and you have that less often in mods |
16:22 |
est31 |
like give a nice register_lossless_abm method ppl can use before they start forceloading |
16:22 |
sapier |
jin_xi: you are the modders you're free to maintain this database us core devs are quite busy improving the internal things ... and trying to gain performance even for abusive mods ;-) at least most times |
16:23 |
|
impact joined #minetest-dev |
16:24 |
sapier |
pipeworks issues for example aren't fixable in general because forceloading is against basic design decisions ... that's why the api is "use on your own risk" too |
16:24 |
gregorycu |
Can you explain why pipeworks is broken |
16:24 |
gregorycu |
What has forceloading got to do with it |
16:24 |
sapier |
by design minetest is a game for players keeping as less of world active as possible |
16:24 |
gregorycu |
Right, but forceloading a block is like someone standing there |
16:25 |
gregorycu |
Do we support people standing in the world? |
16:25 |
sapier |
exactly and if you do this too often you're gonna cause a lot of server load |
16:25 |
T4im |
less bad as that.. someone standing there loads all the blocks around too |
16:25 |
gregorycu |
We are not talking about server load |
16:25 |
gregorycu |
Here, let me play the aces |
16:25 |
sapier |
server has to do almost same as if a player was there |
16:26 |
gregorycu |
I'm looking at one memory leak that exists in core, that is causing from creating entities |
16:26 |
gregorycu |
caused |
16:26 |
sapier |
e.g. handle abms handle entities |
16:26 |
sapier |
AND send all of them to clients |
16:26 |
jin_xi |
i think mt should also offer some flexibility, not every type of game needs all stuff. maybe a skeletal game intended for supporting more dynamic mods/machine building in singleplayer can be considered? |
16:26 |
gregorycu |
This memory leaks occurs regardless if there is forceloading or not |
16:26 |
gregorycu |
This has actually been discussed |
16:26 |
sapier |
gregorycu: that's something different ;-) |
16:27 |
gregorycu |
Oh |
16:27 |
gregorycu |
But you said pipeworks was broken because people abuse forceloading |
16:27 |
sapier |
yes they use forceloading causing lot of additional load, if there's a entity leak without forceloading that's a different issue |
16:27 |
sapier |
yet most ppl do use forceloading and pipeworks |
16:28 |
gregorycu |
Right, that's very good, but irrelevant |
16:28 |
sapier |
can you provide a situation where entities are lost without forceloading? |
16:28 |
gregorycu |
Yes |
16:29 |
sapier |
tell me I'll have a look at it |
16:29 |
gregorycu |
Just make a mod that spawns a WieldMeshSceneNode |
16:30 |
gregorycu |
And that also deletes it |
16:30 |
sapier |
how can a mod spawn a wieldmeshscenenode? |
16:32 |
sapier |
wait, I was looking at that code some time ago because of gles2 bugs in there ... I guess you just need a nodebox inventory item |
16:32 |
gregorycu |
register_entity with visual = "wielditem" |
16:32 |
sapier |
you shouldn't even need a mod for it we should have those items in default game |
16:33 |
gregorycu |
Ok, spawn a whole bunch of entities with that |
16:33 |
gregorycu |
And make sure you clean them up properly |
16:33 |
sapier |
entities don't have wieldmeshscenenodes |
16:33 |
sapier |
for what I remember those are only used for the player hand |
16:34 |
gregorycu |
Well, I've been looking at the code |
16:34 |
gregorycu |
So, I don't know |
16:34 |
gregorycu |
Your memory vs my eyes |
16:34 |
sapier |
can you tell me? maybe there's some location I haven't in mind right now |
16:34 |
gregorycu |
I've already found the leak |
16:34 |
gregorycu |
You know, the one you were pretty convinced didn't exist |
16:35 |
sapier |
ok world creation dialog is broken :-) |
16:35 |
sapier |
how to reproduce? ;-) |
16:35 |
Zeno` |
so are particles |
16:36 |
T4im |
sapier: btw not "_if_ there's a leak without forceloading", there _is_ a leak, (puhfa told me you didn't believe him :P) and dozens of people can confirm that.. since over 2 years at least already freezing up computers occasionally by swapping gbit's to death |
16:36 |
sapier |
Zeno`: what's broken on particles? |
16:36 |
T4im |
gregorycu: oh you found it? :D |
16:36 |
gregorycu |
Yes, I found one leak |
16:36 |
Zeno` |
sapier: use of unititialised variables |
16:36 |
T4im |
yay \o/ |
16:36 |
gregorycu |
That specifically is around "weilditem" entities |
16:37 |
gregorycu |
Which is used heavily by pipewrosk |
16:37 |
sapier |
T4im: we've had multiple leaks in minetest some new some old ... I doubt everyones out of memory was related to a single bug |
16:37 |
sapier |
Zeno`: line of code or precise description of error ;-) |
16:37 |
Zeno` |
sapier, I believe I pasted it earlier |
16:37 |
T4im |
sapier: this one behaves similar since then though.. always triggered around massive amounts of entities, even after they are gone |
16:38 |
Zeno` |
I'll track it down properly tomorrow I guess |
16:39 |
sapier |
what's uninitialized there? |
16:39 |
gregorycu |
T4im: There looks to be another leak, this isn't over |
16:39 |
T4im |
ah, still thank you :D |
16:40 |
|
blaze joined #minetest-dev |
16:40 |
sapier |
I guess I need to define how to report bugs ... "it's broken fix it" ain't a bug report but nonsense |
16:40 |
Zeno` |
sapier, I will give the full valgrind results tomorrow |
16:41 |
gregorycu |
Are there guidelines on how to report bugs? |
16:41 |
Zeno` |
I wasn't going to come back online (to IRC) tonight so I didn't bother earlier |
16:41 |
sapier |
well I just used valgrind and there are obviously new leaks in minetest since I last used valgrind |
16:41 |
puhfa |
sapier: uh yeah, you seemed to misunderstand me the other day. i didnt use forceloading, just good old-fashioned forceful spawning of entities :P |
16:41 |
puhfa |
so now we got that one cleared |
16:41 |
Zeno` |
I'm not using valgrind to detect leaks. I'm using it to detect use of data (objects) that are not initialised |
16:42 |
gregorycu |
puhfa: He understood you, it was just easier to blame something else |
16:42 |
T4im |
sapier: you've been ignoring bug reports that even came with unit test… defining "hot to handle pull requests and bug reports" might help just as much as to define how to wrote a bug report |
16:42 |
T4im |
write* |
16:42 |
sapier |
nope I thought he had forceloading enabled. Yet massive entity spawning as reason ain't someting putting a bug on top priority ;-) |
16:43 |
gregorycu |
What about entity leaking |
16:43 |
gregorycu |
Which was what was reported |
16:43 |
puhfa |
isnt there a mod that causes mined stuff drop on the ground as entities minecraft-like? |
16:43 |
sapier |
if it's leaking in regular usage it's important, by now I only did understand it's happening on massive entitiy overload |
16:43 |
Zeno` |
It's kind of hard to write a coherent bug report because particles.cpp is just about unreadable. So if I can't fix it I'll just paste the valgrind results |
16:44 |
VanessaE |
puhfa: item_drop and item_tweaks can both do that. |
16:44 |
puhfa |
i mean, that would be 'spamming' in the same sense, almost at the same rate |
16:44 |
sapier |
Zeno`: a bug report contains following things: |
16:44 |
T4im |
sapier: I think it only is then noticeable.. small amount of entities over longer time seem to have the same effect |
16:44 |
sapier |
1) exact version (commit) |
16:44 |
VanessaE |
puhfa: and default game/engine will do that too if your inv is full |
16:44 |
Zeno` |
sapier, please don't tell me what a bug report should contain :P |
16:44 |
sapier |
2) detailed desctiption what you do to cause the bug to happen |
16:44 |
gregorycu |
It has to be an item spawned with the weilditem view type |
16:44 |
sapier |
3) what exactly is wrong |
16:44 |
sapier |
4) what do you expect to happen |
16:44 |
puhfa |
all this ive told you :P |
16:45 |
sapier |
that's only the minumum requirement! |
16:45 |
Zeno` |
sapier: what I expect to happen is for objects not to be used unititialised! |
16:45 |
Zeno` |
And I know how to report a bug :/ |
16:45 |
sapier |
well Zeno` usually ppl don't follow this rule recently but just tell somethin it's broken wehn I do some thing |
16:45 |
gregorycu |
This whole conversation is a joke |
16:46 |
gregorycu |
I'm going back to finding those remaining entity leaks |
16:46 |
VanessaE |
sapier: to be perfectly fair, didn't you JUST say that the world creation dialog is "broken", without giving an exact description of how broken it is? :) |
16:46 |
puhfa |
isnt that worth knowing as well? even tho it might not be a full bug report fully investigated pointing to a source line you need to change and probably even a piece of code for you to put there |
16:46 |
VanessaE |
gregorycu: where do you stand on that btw? |
16:46 |
Zeno` |
I will post a bug report tomorrow if I cannot fix it |
16:46 |
Zeno` |
I've already said that |
16:46 |
VanessaE |
gregorycu: or rather, how deeply is pipeworks involved in it? I'm a tad lost |
16:46 |
puhfa |
i mean, people who report these things are doing charity there |
16:47 |
sapier |
because it's something I'm gonna have to fix myself anyway VanessaE ;-) |
16:47 |
Zeno` |
And you'll have more data than you can poke a stick at :P |
16:47 |
gregorycu |
VanessaE: There is a specific bug that causes entities with visual = "wielditem" to leak |
16:47 |
sapier |
of course if you don't want someone else to fix your bugs you can report it the "it's broken" way too ;-) |
16:47 |
VanessaE |
sapier: while you're at it, can you tune the "client" tab a bit? the username/password/port/server fields are a little too narrow imho |
16:47 |
sapier |
nope |
16:47 |
gregorycu |
Pipeworks spawns a lot of these things, so it's sensitive to this bug |
16:48 |
sapier |
client tab is formspec and not my work |
16:48 |
puhfa |
well its really up to you wether you only react to 'complete' reports |
16:48 |
sapier |
puhfa: you can report incomplete too but chances someone is gonna fix it are way less then if it's complete |
16:49 |
sapier |
if I first have to spend hours on reproducing a bug I'm not even start to fix it |
16:49 |
puhfa |
and that is understandable |
16:49 |
sapier |
if reproducing takes only a few min I can start fixing it within a few min ;-) |
16:49 |
puhfa |
but thing is, i think there has been a pretty clear issue reported here (because i havent found no other official channel to report them), confirmed by other people |
16:49 |
T4im |
sapier: as said, I've seen very slow response on bug reports including a reproducing unit test… |
16:50 |
puhfa |
yet you dont seem to be interested in anything else but going on the defense |
16:50 |
T4im |
that's reproduceable in seconds |
16:50 |
sapier |
puhfa: best to report a bug is still a github issue there the information is at one location and everyone can find it |
16:50 |
puhfa |
i dont care if its your code that is at fault here. heck, mt is a huge project and c++ is error prone |
16:50 |
sapier |
that's not a matter of c++ or something else ;-) |
16:51 |
puhfa |
it is when you have to handle the memory yourself (which happens to be something i enjoy) |
16:51 |
Zeno` |
puhfa, it's not that huge |
16:51 |
puhfa |
so in that sense leaks are expected. i just dont get the attitude |
16:52 |
sapier |
all of those "automemoryhandling"-languages require a lot more cpu and memory then non auto ones ... price is developer has to take more care |
16:52 |
sapier |
hmm I only see shader memory lost in regular usage |
16:52 |
est31 |
sapier: its called garbage collect |
16:52 |
puhfa |
thats why i like using c myself when doing recreational stuff, even though i would probably be better off with something that would hold my hand a bit more |
16:53 |
puhfa |
its fun to take care of it yourself, i get it |
16:53 |
puhfa |
and if you do it right, you get some more cycles which is a bonus |
16:53 |
sapier |
yet who can tell me how to reproduce one of those leaks |
16:53 |
puhfa |
me, T4im and i think gregorycu has managed to reproduce them as well |
16:53 |
gregorycu |
With pipeworks? Have you got pipeworks? |
16:53 |
T4im |
sapier: the truth is some of us are cobbling frustrated because bugreports and even finished bugfixes are being ignored… I would add a lot more of that stuff if those I did wouldn't be ignored allready… it seems features are always taken with more gratitude than bugfixes… tell us what we can do to improve that… not what we might already have tried… |
16:54 |
sapier |
better without pipeworks it'd be more easy |
16:54 |
puhfa |
well. just toss stuff from your inventory to the ground and pick it back up. rinse and repeat about 10000 times if you want to do it manually |
16:54 |
sapier |
they're not igored we're just slow on merging pulls |
16:54 |
gregorycu |
That may not be good enough |
16:55 |
T4im |
sapier: you seem quicker on merging features than bugfixes |
16:55 |
gregorycu |
Ease up |
16:55 |
gregorycu |
register_entity with visual = "wielditem" will get you an entity which will leak |
16:56 |
sapier |
I see only a single fix on first pull request page T4im anything else is a feature addon or language update |
16:56 |
sapier |
and the "fix" is actually a feature addon too |
16:56 |
sapier |
gregorycu: do you have that code already? |
16:57 |
gregorycu |
No, I've used pipeworks |
16:57 |
sapier |
how much do I have to do in pipeworks to reproduce it? |
16:58 |
puhfa |
i had 64 nodes spawning/killing entities every abm, ate about 1 Gb in 10 minutes that way |
16:58 |
gregorycu |
Not much |
16:58 |
sapier |
puhfa: sorry but I'll first fix gregorycu's one as you're doing a hardcore benchmark and not regular usage |
16:58 |
VanessaE |
sapier: seems to me a few nodebreakers and deployers in a closed loop would be enough |
16:58 |
gregorycu |
Again |
16:59 |
gregorycu |
puhfa is not doing a hardcore benchmark |
16:59 |
puhfa |
again sapier it was not a benchmark :/ just a pipeworks machine built for regular gameplay |
16:59 |
VanessaE |
[breaker] ====tubes==== [deployer] ---> back around to the breaker several loops like that |
16:59 |
gregorycu |
You're doing what you did yesterday |
16:59 |
VanessaE |
with blinky plants activating the deployers/breakers |
16:59 |
VanessaE |
and you placing nodes between them until the tubes are nicely full |
17:00 |
VanessaE |
then just let it run on its own after thjat |
17:00 |
VanessaE |
that* |
17:00 |
sapier |
64 nodes spawning killing entities every abm seems like hardcore to me |
17:00 |
T4im |
the more the faster it will fill… but even a single machine like that will suffice if you are willing to wait |
17:00 |
gregorycu |
It's spawns one a second |
17:00 |
gregorycu |
64 entities a second is a benchmark? |
17:00 |
puhfa |
sapier: :D why does it matter anyway? |
17:00 |
puhfa |
there is a leak somewhere |
17:01 |
VanessaE |
or you could spawn a bunch of dummy entities |
17:01 |
VanessaE |
what was the command kahrl added? |
17:01 |
sapier |
yes because it's about 3/4 of maximum entities per block |
17:01 |
VanessaE |
surely that's enough to trigger this bug isn't it? |
17:01 |
puhfa |
so less than the maximum? doesnt sound like a benchmark to me |
17:01 |
gregorycu |
You're just saying random metrics |
17:01 |
sapier |
so chances you're actually overloading a block are quite high |
17:01 |
VanessaE |
/dummyball or some such? |
17:01 |
gregorycu |
You can overload a block? |
17:02 |
gregorycu |
:/ |
17:02 |
gregorycu |
I missed that code |
17:02 |
sapier |
wait :-) |
17:02 |
gregorycu |
Is the only reason you're trying to find the leak because I found a leak? |
17:02 |
sapier |
actually it's 1.5 times the max entities per block ... VanessaE wasn't this changed to more then 49 some time ago? |
17:03 |
gregorycu |
This doesn't seem like an efficient way to work |
17:03 |
VanessaE |
sapier: no. |
17:03 |
gregorycu |
Anyway, we don't know that the 64 spawners were on the same block |
17:03 |
gregorycu |
Chances are, they were not |
17:03 |
VanessaE |
sapier: I think it's still stuck at 49 by default, but I raised it to 500 on my servers. |
17:03 |
gregorycu |
So, it doesn't matter |
17:03 |
sapier |
gregorycu: I'm just interested how wieldscenemesh is supposed to be related to entities |
17:04 |
sapier |
because the only usage of this I know about is players hand |
17:04 |
gregorycu |
line 950 of content_cao.cpp |
17:04 |
jin_xi |
i remember some of the first mob mods used wieldmesh visuals to get non quad 3d entities on screen |
17:05 |
kahrl |
so... did my suggested fix (removing the grab()) fix it? |
17:05 |
sapier |
ahhh |
17:05 |
sapier |
a entity can be a wielditem too |
17:06 |
gregorycu |
Yes, though I think there are more leaks |
17:06 |
puhfa |
the spawners actually were on the same block |
17:06 |
sapier |
jin_xi: yes that's long ago |
17:06 |
puhfa |
didnt know the limit was that low |
17:06 |
puhfa |
anyway, the output added up. the machine itself worked perfectly, my client just leaked memory |
17:06 |
gregorycu |
I have 12 spawners |
17:06 |
puhfa |
dunno about the server itself |
17:06 |
gregorycu |
The server is fine |
17:06 |
sapier |
puhfa: try increasing max_objects_per_block above the amount of entities you do create if this fixes the error we know it's related to block overload handling |
17:06 |
gregorycu |
It's not |
17:07 |
gregorycu |
Because |
17:07 |
gregorycu |
I found the leak |
17:07 |
puhfa |
is max_objects_per_block a client-side setting? because that i can change and i can test it next monday |
17:07 |
gregorycu |
And kahrl and I had the same solution |
17:07 |
gregorycu |
Except it took him 10 minutes, and me 2 hours |
17:07 |
T4im |
puhfa: no its serverside, and its increased usually on servers |
17:07 |
sapier |
puhfa: no it's a server side setting |
17:08 |
puhfa |
okay. so we must have a higher value since the machine worked |
17:08 |
T4im |
sapier: we are talking client side leaks though |
17:08 |
T4im |
clients have to restart after a while to empty swap and ram |
17:08 |
sapier |
T4im: if a server drops a entity without telling about it beeing deleted it's gonna cause a client to use more and more memory ... although this wouldn't even be a "real" leek |
17:08 |
sapier |
leak |
17:08 |
T4im |
ah |
17:09 |
puhfa |
that could explain what happened |
17:09 |
puhfa |
still, in my opinion that is an issue |
17:09 |
kahrl |
yeah, can confirm too: valgrind reports a lost WieldMeshSceneNode when I drop & recollect an item, it's fixed when the grab() call is removed |
17:09 |
sapier |
we've got reason to believe this might happen for some time but without someone doing that excessive overspawning it's not a big issue |
17:09 |
puhfa |
what was your fancy word for it |
17:09 |
T4im |
gregorycu: you mean an additional one, or the wieldmesh one? |
17:10 |
kahrl |
I don't get any other leaks (none that we can fix, anyway) |
17:10 |
sapier |
gregorycu: as you found it please write a pull request so we can merge it |
17:10 |
gregorycu |
I get increased memory usage over time |
17:10 |
Zeno` |
you need to use massif to see the leaks |
17:10 |
puhfa |
>we've got reason to believe this might happen for some time but without someone doing that excessive overspawning it's not a big issue |
17:10 |
Zeno` |
valgrind won't show them because theyre' |
17:10 |
puhfa |
... |
17:10 |
kahrl |
what I do get is use of uninitialized memory in Sky::Sky() |
17:10 |
gregorycu |
I also have code that tracks the number of irrlight entities, and that seems to be increasing |
17:10 |
Zeno` |
valgrind won't show them because they're properly deallocated when the client exits |
17:11 |
puhfa |
that 'excessive overspawning' caused my os to come tumbling down in less than 30 minutes |
17:12 |
puhfa |
because win7 apparently doesnt handle too well the case in which all memory is used up |
17:12 |
kahrl |
http://sprunge.us/idhD |
17:12 |
Zeno` |
but, massif shows them quite clearly |
17:12 |
sapier |
imho everything mentione by now would fit to client believing a lot of already deleted entities beeing still alive |
17:12 |
sapier |
kahrl: that's deep inside irrlicht |
17:13 |
puhfa |
could an automated deletion timer solve it then pretty easily and without much overhead? |
17:13 |
sapier |
no |
17:13 |
kahrl |
sapier: well, perhaps we are passing an uninitialized string |
17:13 |
sapier |
puhfa: if we did this we'd risk loosing entities which are still active |
17:14 |
sapier |
we have to find out exactly why client and server get out of sync |
17:14 |
puhfa |
hmm, thats a better approach yes |
17:14 |
T4im |
wouldn't the server resend those serverside still existing ones if the client side ones were max_entities constrained too? |
17:14 |
sapier |
no server only sends entities once |
17:15 |
T4im |
but updates their movement/velocity etc? |
17:15 |
sapier |
there's no reason to send them more then once because there's no legit reason to loose them |
17:15 |
sapier |
T4im: only if something changes |
17:16 |
puhfa |
so a stationary entity on the ground could disappear that way |
17:16 |
sapier |
yes |
17:16 |
gregorycu |
Wow |
17:16 |
T4im |
unless you leave/enter the area? |
17:16 |
gregorycu |
What is going on |
17:16 |
gregorycu |
What's the bug? Client is dropping updates? |
17:16 |
puhfa |
well, the timeout would help in our use-case but i get it that in the big picture it would only make things worse |
17:16 |
sapier |
T4im: if someone uses forceloading this wouldn't help |
17:17 |
T4im |
fair enough |
17:17 |
gregorycu |
What's the bug here? Client is dropping updates? |
17:17 |
sapier |
gregorycu: curent working thesis is client for some reason doesn't know about a entity beeing deleted |
17:17 |
gregorycu |
Thesis for what? |
17:17 |
gregorycu |
The pipeworks issue? |
17:17 |
sapier |
for why you need more and more memory over time |
17:18 |
puhfa |
sapier: wouldnt the entities still be visible in the client eyes then? |
17:18 |
sapier |
and why this occurs that often on overloading a mapblock with entities |
17:18 |
puhfa |
because they were not |
17:18 |
kahrl |
these getTexture() that use unitialized memory also cause these messages: "Irrlicht log: Could not load texture: " |
17:18 |
gregorycu |
I have no data to suggest I'm accumulating entities |
17:18 |
kahrl |
(yes, with no filename after that) |
17:18 |
sapier |
puhfa: depends |
17:18 |
gregorycu |
In fact, I'm sure I'm not accumulating entities, I checked that |
17:18 |
sapier |
did those entities have a speed? |
17:18 |
gregorycu |
That was one of the first things I checked |
17:19 |
puhfa |
yes they did. but they didnt leave my sight, always disappeared before going too far even with a slight lag |
17:19 |
sapier |
ok gregorycu if you're not accumulating entities the tesis is wrong |
17:19 |
sapier |
what's output of valgrind if you exit? |
17:19 |
gregorycu |
I'm on windows |
17:20 |
sapier |
puhfa: bad because if they go out of sight they'll still have to be stored somewhere to be deleted once server tells this |
17:20 |
gregorycu |
I wonder if Visual Studio has a nice memory checker |
17:20 |
Zeno` |
can someone review and merge #2141 please? |
17:20 |
ShadowBot |
https://github.com/minetest/minetest/issues/2141 -- Create empty default constructor for MapNode by Zeno- |
17:20 |
Zeno` |
I'll need it merged for tomorrow |
17:20 |
puhfa |
again, they did not go out of sight, not even close |
17:20 |
sapier |
Zeno`: for what do you need it if it's empty? |
17:21 |
sapier |
sorry puhfa misread |
17:21 |
puhfa |
they went into node inventories |
17:21 |
Zeno` |
for unrelated stuff |
17:21 |
puhfa |
np |
17:21 |
sapier |
puhfa: do you have a small map having exactly this situation? |
17:21 |
puhfa |
no |
17:22 |
Zeno` |
But stuff that works with MapNode |
17:22 |
gregorycu |
sapier: Visual Studio reports about 100k leaks |
17:22 |
sapier |
can you guide me through building this? |
17:22 |
puhfa |
maybe gregorycu can share his test map, he had the same issue |
17:22 |
sapier |
gregorycu: I can't help about visual studio results |
17:22 |
Wayward_One |
#2143 |
17:22 |
ShadowBot |
https://github.com/minetest/minetest/issues/2143 -- Minetest.conf ignored on new world creation |
17:22 |
sapier |
in worst case it's a bug occuring on windows only ... rare but happens |
17:22 |
puhfa |
sapier: you familiar with technic? basically i had lots of technic machines ejecting stuff, then one or two tubes and a chest receiving it all |
17:23 |
puhfa |
i think T4im is running his mine testings on linux and he has experienced the same issue |
17:23 |
|
roniz joined #minetest-dev |
17:23 |
sapier |
Zeno`: did you check MapNode with empty default constructor creates a valid object? |
17:24 |
sapier |
puhfa: sorry I'm not, I never used technic |
17:24 |
Zeno` |
sapier I checked every instance where MapNode is used |
17:24 |
puhfa |
i guess pipeworks blinky plant with a filter does exactly the same |
17:24 |
Zeno` |
(yes, all of them) |
17:24 |
puhfa |
thats what gregorycu is doing |
17:25 |
sapier |
well then merge it and hope it's not gonna break something ... having a empty constructor enables you to create a object without the parameters you HAVE to supply right now ... sometimes there's a reason for not having this constructor. Yet I don't know mapblock good enough to tell about it. |
17:26 |
Zeno` |
The problem was is that before there was a default constructor (by proxy because of default values) |
17:26 |
sapier |
ok pipeworks installed |
17:26 |
Zeno` |
sapier, before this you did NOT have to supply values |
17:26 |
sapier |
why was it changed? |
17:27 |
sapier |
puhfa: ok in game and in creative mode so what to place? |
17:27 |
|
cib0 joined #minetest-dev |
17:27 |
Zeno` |
because of https://github.com/minetest/minetest/pull/2141/files src/voxel.cpp line 176 |
17:27 |
puhfa |
chest -> filter -> pneumatic tube segments connecting the arrowhead of the filter back to the chest |
17:28 |
puhfa |
then a blinky plant next to the filter to make it work automatically |
17:28 |
puhfa |
repeat 64 times |
17:28 |
Zeno` |
Note that previously there was: MapNode(content_t content = CONTENT_AIR, u8 a_param1=0, u8 a_param2=0) |
17:28 |
gregorycu |
10 times will be enough |
17:28 |
puhfa |
probably :P |
17:28 |
gregorycu |
We're not doing a benchmark here |
17:29 |
gregorycu |
Just want to repo the leak |
17:29 |
Zeno` |
whihc was the "proxy" default constructor |
17:29 |
Zeno` |
that initialised data when it didn't need to be initialised |
17:29 |
puhfa |
gregorycu: unless going over the max entities per block limit has something to do with it |
17:29 |
sapier |
itemwise filter injector? |
17:29 |
puhfa |
actually scratch that, we had the setting set much higher so it didnt happen |
17:29 |
puhfa |
sapier: will do, doesnt matter |
17:30 |
puhfa |
then some stuff in the chest |
17:31 |
VanessaE |
sapier: http://digitalaudioconcepts.com/vanessa/hobbies/minetest/screenshots/Screenshot%20-%2001172015%20-%2012%3a31%3a20%20PM.png |
17:31 |
VanessaE |
build a few of those |
17:31 |
sapier |
argh ... mesecons too? |
17:31 |
VanessaE |
sapier: yes, if you want it to run autonomously |
17:31 |
puhfa |
you can always punch the filter repeatedly yourself :) |
17:31 |
sapier |
I hate mesecons it's always incompatible |
17:32 |
Zeno` |
sapier, the kludge was added here: https://github.com/minetest/minetest/commit/8621e6de5dc031b547739ab3ff8dc1575a284d1b |
17:32 |
VanessaE |
just get latest git of it and latest git of pipeworks and they'll work together fine |
17:32 |
T4im |
sapier: yes, linux here with the same issue… difference is just that I don't crash the system, but it still swaps like mad |
17:33 |
T4im |
freezing up th xserver a bit (still responding, but slow) |
17:33 |
Zeno` |
and now I want to remove the kludge; hence the PR |
17:33 |
gregorycu |
Ok, the other leak |
17:33 |
gregorycu |
Wasn't a leak, it was only happening in debug |
17:33 |
gregorycu |
I think it was just Visual Studio being shit |
17:34 |
T4im |
sapier: I think you have to deactivate the mesecons-compatibility mod to be compatible with current git, as that one seems to be for old releases only |
17:34 |
VanessaE |
sapier: keep placing chairs in that space between the deployer and breaker any time you get the chance; you probably won't get more than 3 or so circulating through the tubes, but that's enough |
17:34 |
sapier |
when did minetest get to multisecond place lag on singleplayer? |
17:35 |
VanessaE |
if you set up a higher-speed timer on the wire controlling them, you can get more of them circulating. |
17:35 |
VanessaE |
er, I've never had placing lag get THAT bad unless the server was overloaded |
17:36 |
|
Calinou joined #minetest-dev |
17:37 |
sapier |
hm mI don't have a chair guess a fence will be good enough |
17:37 |
VanessaE |
sapier: example of a higher-speed timer, much more effective. http://digitalaudioconcepts.com/vanessa/hobbies/minetest/screenshots/Screenshot%20-%2001172015%20-%2012%3a37%3a53%20PM.png |
17:38 |
VanessaE |
a fence will do, I just used a chair because it's a nodebox. wanted to be absolutely sure it would invoke the bug (wasn't sure if just *any* drawtype would do) |
17:38 |
|
Mine-aholic joined #minetest-dev |
17:38 |
T4im |
VanessaE: node detector triggered? |
17:38 |
VanessaE |
in the above circuit, put a whole stack of your test node into the deployer's inventory |
17:38 |
sapier |
doesn't look like somethings happening at all vanessae |
17:38 |
VanessaE |
T4im: that would work too but it would be slower and take longer to get started |
17:39 |
sapier |
the plant blinks slowly but nothing else |
17:39 |
VanessaE |
sapier: build the above second version then, put a stack of your test node into the deployer. |
17:40 |
sapier |
does it work with fence too? |
17:40 |
VanessaE |
it'll work with pretty much any test node, yerah |
17:40 |
VanessaE |
yeah* |
17:40 |
puhfa |
hmm, if drawtype really matters, the issue originally occurred with ingots and other ingot-like craft items |
17:40 |
|
rubenwardy joined #minetest-dev |
17:41 |
T4im |
possible.. ore processing is one of the main applications after all |
17:41 |
gregorycu |
visual = "wielditem", |
17:41 |
gregorycu |
Unless there are two bugs |
17:42 |
sapier |
how to rotate the arrow mesecon element? |
17:42 |
puhfa |
place it from a different angle |
17:42 |
VanessaE |
sapier: it turns based on your facedir |
17:42 |
VanessaE |
or use a screwdriver |
17:43 |
VanessaE |
in my screenshot, the grey one is a delayer, the white one is a NOT gate |
17:43 |
T4im |
mese sandtube might work too btw |
17:43 |
T4im |
without mesecon |
17:43 |
T4im |
dropping out stuff, collecting again |
17:43 |
VanessaE |
T4im: this is more controllable |
17:44 |
T4im |
true |
17:44 |
sapier |
ok fast blink ... guess I have wrong tubes ... which ones do I have to use? |
17:44 |
VanessaE |
sapier: "Pneumatic Tube Segment" |
17:45 |
VanessaE |
pipeworks:tube_1 |
17:45 |
VanessaE |
to be exact |
17:46 |
sapier |
ok all done ... still empty pipe |
17:46 |
VanessaE |
now put your test node into the Deployer's inventory |
17:46 |
T4im |
make sure you don't have anything in the nodebreaker inventory slot |
17:46 |
VanessaE |
and yeah, keep the nodebreaker's slot empty, that's for the tool you want it to dig with |
17:46 |
sapier |
ok |
17:46 |
VanessaE |
(by default, it digs with a virtual mese pick) |
17:47 |
sapier |
ok deployer is non empty and fence is created in between but still empty tubes |
17:47 |
VanessaE |
screenshot? |
17:47 |
T4im |
make sure to connect to the nodebreaker from the back, not the side or top |
17:47 |
T4im |
the tubes that is |
17:48 |
T4im |
side is for said inventory slot, not for the digging-results |
17:48 |
T4im |
also connect mesecons from the side, mesecons has some issues when connecting diagonally to other stuff sometimes |
17:48 |
jin_xi |
hm well pipeworks seems to still use wielditem for stuff in tubes |
17:51 |
sapier |
grr this damn nodebreaker alwas rotates different |
17:51 |
VanessaE |
heh |
17:52 |
sapier |
ok better |
17:52 |
T4im |
try to face the pipe you are trying to connect it to with a meter distance and build against it |
17:53 |
sapier |
ok time to use valgrind |
17:53 |
VanessaE |
sapier: you got it to act as in my screenshot? |
17:54 |
sapier |
looks quite similar, fences move from node destroyer to deployer |
17:54 |
VanessaE |
T4im: it's not so much that it has issues connecting diagonally, rather that machines have connection rules that dictate if they'll take a connection from above, which is all a diagonal connection really is |
17:54 |
VanessaE |
sapier: good deal |
17:55 |
T4im |
VanessaE: yea, thing is visually it does connect, just doesn't actually propagate signals then, which is sometimes confusing |
17:55 |
sapier |
why does it report I am placing those nodes? |
17:55 |
T4im |
meseblocks for example propagate vertically to other meseblocks but not to mesecons |
17:55 |
VanessaE |
sapier: it has to use a "fake" player in order to comply with the engine's node protection code |
17:55 |
sapier |
I haven't even joined completely |
17:55 |
VanessaE |
T4im: ah, if it visually connects but doesn't register the signal, that's a bug |
17:56 |
VanessaE |
sapier: and in this case, the "fake" player is the original placer of the node |
17:56 |
sapier |
well different issue |
17:57 |
VanessaE |
sapier: you're seeing a perfect example of something that needs an allowance for being ignored by the rollback recorder |
17:57 |
T4im |
yea for that stuff running before fully connected we might have some input too regarding lua controllers overheating on_join, but more to that another time I guess |
17:57 |
VanessaE |
(every one of those place actions is being recorded, if you have rollback) |
17:57 |
T4im |
that'll spam the logs with a few machines quite a bit, huh? |
17:57 |
sapier |
calloing this a diashow doesn't really match |
17:58 |
|
Sokomine joined #minetest-dev |
17:58 |
VanessaE |
well those "runs before you join" is just because you effectively fired up a server first and the client took a short while to "connect" to it, I guess. |
17:58 |
sapier |
it's about 2fpm |
17:58 |
VanessaE |
sapier: haha |
17:58 |
VanessaE |
that's about right :D |
17:58 |
T4im |
ya :D |
17:59 |
sapier |
already enough to find the bug |
18:00 |
VanessaE |
how bad is it? |
18:01 |
sapier |
metadatalisthandling is broken I'll see how to fix it give me a couple of minutes ... |
18:02 |
sapier |
ok I think I have it, now verify with valgrind |
18:04 |
sapier |
nodemetadata.cpp L112 ... you should never clear a map containing pointers to allocated memory |
18:04 |
sapier |
just use the "clear" function already implemented there |
18:05 |
gregorycu |
... |
18:06 |
sapier |
gregorycu: doesn't visualstudio have a tool like valgrind too? |
18:06 |
sapier |
not sure about it guess on windows you''ll have to pay for it |
18:06 |
gregorycu |
I don't know, I don't have to find leaks often |
18:07 |
sapier |
in minetest they're quite common |
18:07 |
sapier |
"definitely lost: 0 bytes in 0 blocks" |
18:07 |
sapier |
gregorycu: is your pull ready? |
18:08 |
gregorycu |
No |
18:08 |
gregorycu |
I don't know how to git very well, so I've hashed up a branch of mine |
18:10 |
sapier |
no problem I'll push it for you what to write for author? "gregorycu" ? |
18:10 |
gregorycu |
I don't care, as long as it's fixed |
18:10 |
gregorycu |
gregorycu is fine |
18:12 |
|
NakedFury joined #minetest-dev |
18:15 |
|
ImQ009 joined #minetest-dev |
18:16 |
sapier |
gregorycu: can you verify that there ain't more leaks I haven't triggerd with my example by now? |
18:16 |
kahrl |
wow |
18:16 |
gregorycu |
No, the memory increase over time was due to some leak checking code I inserted |
18:16 |
gregorycu |
ironically |
18:16 |
kahrl |
the irrlicht image readers read data from a file and don't even check if the read succeeded |
18:16 |
gregorycu |
What is wow kahrl? |
18:17 |
kahrl |
that's probably where http://sprunge.us/idhD comes from |
18:17 |
sapier |
kahrl: I'm not really surprised ;-) |
18:17 |
T4im |
gregorycu: on a side note: "nonenone.none" is a problematic email, as it is connectable (as opposited to .invalid tld's or example.org/net/com for example)… a better solution might be to use the anonymizing mail-addies from github instead |
18:17 |
kahrl |
(take for example CImageLoaderBMP::isALoadableFileFormat) |
18:17 |
sapier |
T4im: humans usually understand what's meant and I don't care about bots ;-) |
18:18 |
gregorycu |
I didn't author it, it's a fake author |
18:18 |
kahrl |
ok, what leads to http://sprunge.us/idhD is this, as far as I can tell: |
18:18 |
kahrl |
1. getTexturePath returns an empty string |
18:18 |
sapier |
gregorycu: good to know |
18:18 |
kahrl |
2. this is passed to CNullDriver::getTexture |
18:18 |
T4im |
sapier: maybe care about inocent dos victims by those bots :p |
18:18 |
gregorycu |
I was letting T4im know |
18:18 |
kahrl |
3. getTexture calls getAbsolutePath on that, this returns "/" |
18:19 |
kahrl |
4. an IReadFile is opened on "/", which succeeds (a directory is treated like an empty file by fopen) |
18:19 |
sapier |
T4im: whoever takes nonenone.none will recognize quite soon it's been a bad idea |
18:19 |
T4im |
"<username>@users.noreply.github.com" is sponsored by github :) |
18:20 |
kahrl |
5. then createImageFromFile calls the various image loaders' isALoadableFileFormat methods, which don't check if the reads succeed |
18:21 |
gregorycu |
Night all |
18:21 |
T4im |
oh, he was gone fast… wanted to thank him first, :S |
18:21 |
T4im |
thank you too sapier |
18:21 |
T4im |
these fixes are very appreciated |
18:22 |
sapier |
well thank VanessaE she provided the example I needed to fix it |
18:22 |
kahrl |
note that each of my listed steps 2 to 5 is missing error checking :D |
18:22 |
sapier |
without her help It'd have required hours to reproduce it just to do a 1min fix |
18:22 |
T4im |
would a mts for unit testing help in cases where lua scripting can't assert? |
18:22 |
T4im |
like this |
18:22 |
T4im |
for the future that is |
18:23 |
VanessaE |
sapier: and *gasp* I got you to install two mods and play the game for a while ;) |
18:23 |
VanessaE |
(well pipeworks was gregorycu's idea really) |
18:23 |
sapier |
well another 3mb of precious ssd space wasted for mods ;-) |
18:24 |
VanessaE |
haha |
18:25 |
sapier |
btw he didn't tell about this two changes really fixing all issues can someone verify this? |
18:25 |
sapier |
puhfa: are you able to compile mintest yourself? |
18:25 |
nrzkt |
is DSTACK(__FUNCTION_NAME); used somewhere ? |
18:26 |
kahrl |
nrzkt: press p in-game to see what it is used for :) |
18:26 |
puhfa |
sapier: probably not. i have a very old version of mingw only. |
18:26 |
nrzkt |
ty kahrl |
18:26 |
VanessaE |
I'm updating both my client and my servers now. the latter will take effect at the next restart |
18:26 |
puhfa |
so anything post c++98 and it wont work |
18:26 |
* T4im |
will test the commit too |
18:27 |
T4im |
commits* |
18:33 |
sapier |
nrzkt: DSTACK is debugging code |
18:35 |
sapier |
puhfa: ok then we have to wait till you get a version containing these fixes to find out if they fix your issue. I'd expect you to have additional problems. |
18:38 |
|
Megaf joined #minetest-dev |
18:44 |
hmmmm |
do you guys have an opinion on lens glare for light sources? |
18:45 |
hmmmm |
basically, an IBIllboardSceneNode centered on a light source node whose texture is a mostly transparent circle or something that gets colored to whatever color the light source eminates |
18:45 |
Calinou |
good, as a setting? |
18:45 |
sapier |
imho that'd be to realistic for rest of minetests graphics |
18:45 |
hmmmm |
lol. |
18:45 |
hmmmm |
calinou: i was thinking more or less definiable by mod |
18:46 |
Calinou |
the flare could be cubic if you wanted |
18:46 |
hmmmm |
you'd want this for torches maybe, not so much for other thing |
18:46 |
hmmmm |
other things* like furnaces |
18:47 |
Calinou |
lens_flare = {r = 255, g = 255, b = 255} like this? |
18:47 |
hmmmm |
yeah, i could do that |
18:48 |
T4im |
a sprite fake one, or a real one? |
18:48 |
Calinou |
changeable colour would be good to fake coloured lights |
18:49 |
sapier |
VanessaE: https://github.com/minetest/minetest/pull/2132 does this match what you meant with hiding chat button too? |
18:49 |
hmmmm |
the reason why i'm hesitant on making it rgb user specifiable is because if you make the flare color different from the light color then it'd look odd as you get closer to it |
18:50 |
VanessaE |
sapier: yes, basically that. I'd put it over on the right, below the other one, though. |
18:50 |
VanessaE |
btw, what does the "down arrow" do? |
18:51 |
sapier |
drop an item, that's why I kept it there so you can touch it without having to take hand off |
18:52 |
sapier |
as I made the buttonbar generic moving it around ain't a big deal |
18:52 |
VanessaE |
sapier: ah, ok. fwiw, it might make more sense if that icon were a tiny cube with the arrow curving from it to the "ground line" |
18:52 |
VanessaE |
e.g. suggesting the motion of an item when you see someone in-game drop it |
18:53 |
sapier |
I didn't invent that icon but I agree to your suggestion. yet I'm not capable of realizing this suggestion ;-( |
18:54 |
VanessaE |
need me to draw it? |
18:55 |
sapier |
sure you're welcome ;-) |
18:55 |
VanessaE |
what sizew? |
18:55 |
VanessaE |
-w |
18:55 |
sapier |
I'd suggest same size as current, but it's scaled to fit the buttonbar anyway |
18:55 |
VanessaE |
idk what the current size is :) |
18:56 |
VanessaE |
there it is |
18:56 |
VanessaE |
64px |
18:58 |
puhfa |
sapier: the server wont be online before monday anyway |
18:59 |
puhfa |
but if it fixes any issue ill be happy, even if mine would still persist |
18:59 |
sapier |
if you find a easy way to reproduce just tell me |
19:00 |
sapier |
usually the hardest thing about leaks is reproducing it once this is done the fix is trivial .. most time ;-) |
19:00 |
puhfa |
without building the actual machine i think thats as close as anyone can get |
19:00 |
puhfa |
we have had the same in both linux and windows builds since at least 0.4.5 |
19:00 |
est31 |
sapier I can write a replacement for game#395, introducing mintetest.register_lossless_abm |
19:00 |
ShadowBot |
https://github.com/minetest/minetest_game/issues/395 -- Make furnace work even when unloaded by Kalabasa |
19:00 |
est31 |
does that sound good? |
19:01 |
sapier |
writing yes .. your name for that function no |
19:01 |
est31 |
other ones |
19:02 |
sapier |
register_timekeeping_abm or something like this |
19:02 |
sapier |
and of course you have to add a separate metadata variable for each abm |
19:02 |
puhfa |
heh, make the function name long enough to avoid unnecessary overuse :) |
19:02 |
T4im |
is it still an active bm? ;) |
19:03 |
puhfa |
register_enhanced_amb_factory_solution_builder |
19:03 |
sapier |
lossless supposes the other one misses things which just ain't true |
19:05 |
est31 |
register_timekeep_abm? |
19:06 |
sapier |
ok |
19:06 |
T4im |
isn't it more like a lazy block modifier? :D |
19:06 |
sapier |
no most time coder is lazy not the abm |
19:08 |
est31 |
ok it gets the time of offload, or a number of times it should have been called but didn't get? |
19:08 |
sapier |
why? number of times? if someone really needs this it's a simple division |
19:08 |
* est31 |
would prefer second |
19:09 |
T4im |
why not use notetimers for that anyway? they return the time it was unloaded included |
19:09 |
T4im |
nodetimers* |
19:10 |
sapier |
good question I never used nodetimers so if they do it this way why modify abm at all? |
19:11 |
* est31 |
points at https://github.com/minetest/minetest/blob/master/src/nodetimer.h#L30 |
19:11 |
T4im |
they do.. noticed then with the bones mod (they never timed out in active blocks, only if they were unloaded for a certain time) |
19:11 |
T4im |
est31: hehe, nice one |
19:12 |
sapier |
hmm it's already suggest to be used for this ;-) |
19:12 |
sapier |
guess 395 should be rewritten using a node timer |
19:13 |
T4im |
keep in mind, that after each time it is being called it snaps the parameter-passed time back to 0 |
19:14 |
VanessaE |
sapier: http://digitalaudioconcepts.com/vanessa/hobbies/minetest/images/drop_btn.png (it'll be white on white in the browser, so download it and view in GIMP or something) |
19:15 |
kahrl |
new PR: #2144 |
19:15 |
ShadowBot |
https://github.com/minetest/minetest/issues/2144 -- Fix use of uninitialized data in Sky and (potentially) GUIChatConsole constructors by kahrl |
19:17 |
sapier |
https://github.com/minetest/minetest/pull/2132 additional comments? (screenshots included!) |
19:18 |
VanessaE |
you didn't put my image in! D: |
19:27 |
|
loggingbot_ joined #minetest-dev |
19:27 |
|
Topic for #minetest-dev is now Minetest core development and maintenance. Chit-chat goes to #minetest. Consider this instead of /msg celeron55. http://irc.minetest.ru/minetest-dev/ http://dev.minetest.net/ |
19:28 |
|
roniz joined #minetest-dev |
19:40 |
sapier |
http://www.fileconvoy.com/dfl.php?id=g9c63a08b33eb932899961019369bd677d164a74aa VanessaE latest apk package for you containing your icoon |
19:40 |
sapier |
-o |
19:41 |
VanessaE |
\o/ |
19:52 |
sapier |
does it work VanessaE? |
19:53 |
VanessaE |
I haven't tried it, don't have the tablet handy right now |
19:53 |
sapier |
ok |
19:55 |
|
ElectronLibre joined #minetest-dev |
20:01 |
|
casimir joined #minetest-dev |
20:06 |
|
Hunterz joined #minetest-dev |
20:30 |
VanessaE |
bbl |
20:50 |
|
[ElectronLibre] joined #minetest-dev |
20:56 |
kilbith |
any objection to format the README in .md ? |
20:57 |
est31 |
freeminer has markdown |
20:57 |
kilbith |
it's more lisible |
21:36 |
|
ElectronLibre left #minetest-dev |
21:41 |
|
acerspyro joined #minetest-dev |
22:11 |
|
kaeza joined #minetest-dev |
22:18 |
|
Garmine joined #minetest-dev |
22:43 |
|
roniz joined #minetest-dev |
22:53 |
|
Garmine42 joined #minetest-dev |
23:04 |
|
nrzkt left #minetest-dev |
23:23 |
|
shadowzone joined #minetest-dev |
23:25 |
|
sapier left #minetest-dev |
23:42 |
|
Sokomine joined #minetest-dev |
23:51 |
hmmmm |
allrighty |
23:51 |
hmmmm |
i'm back |