Time Nick Message 02:31 hmmmm hey guys, what are your opinions on escaped strings in the config? 02:31 hmmmm I am thinking of doing it backwards, like instead of a string having special chars escaped, all the special chars are escaped to begin with 02:32 hmmmm adding multi-line string settings while i'm doing this other thing because why not 02:47 ShadowNinja hmmmm: Um, I already did that... 02:48 hmmmm what? 02:48 ShadowNinja #1684 02:48 ShadowBot https://github.com/minetest/minetest/issues/1684 -- Add multi-line settings and setting escapes by ShadowNinja 02:49 hmmmm ah 02:49 hmmmm this is implemented in a totally different manner though 02:49 hmmmm in fact, what I wrote so far nukes everything in your commit 02:52 hmmmm ShadowNinja, this is a lot simpler. if """ is the value for a config setting all by itself, the next lines will be the multi-lined text until it sees the next """ on a line by itself 03:09 ShadowNinja hmmmm: Ah. You could also do the same with single quotes, since they'll probably not be at the start of a value. 03:09 ShadowNinja Er, single double-quotes ("). 03:11 hmmmm i wanted to use three double-quotes because that's the multiline-text specifier for pytho 03:11 hmmmm python 03:12 hmmmm and it's pretty rare 03:12 hmmmm i'm not bothering with escaping the text because that gets messy and it's not worth it in general 03:21 kahrl hmmmm: you could use serializeJsonStringIfNeeded from inventory.cpp 03:21 hmmmm absolutely disgusting 03:21 hmmmm this is not quite json 03:22 hmmmm http://fpaste.org/155226/41731774/ 03:22 kahrl that function leaves the string unchanged if there is nothing to escape 03:23 hmmmm so basically the parser is super simple 03:24 hmmmm parseConfigObject returns events now 03:24 hmmmm could be a comment, a key-value pair, a group ({}), a multiline value, etc. 03:25 hmmmm i also fixed updateConfigFile. not that it didn't work, but holy crap... 03:27 hmmmm settings are maps from strings to SettingsEntry, which is a struct with a string or a Settings *. if the settings * is not-NULL, then it has child settings. you can get settings from groups by either doing something like: Settings *mapgen_config = g_settings->get("mapgen"); mapgen_config->get("seed"); or you could do g_settings->get("mapgen.seed"); 03:27 hmmmm yes? no? 03:28 hmmmm as for setting defaults in settings sub-trees, i haven't figured that one out. there's no elegant interface there. 03:30 kahrl imo get() should return string and throw an error if the setting is actually a group 03:31 hmmmm get() already returns a string 03:31 kahrl have a getGroup() that returns a child settings object 03:31 hmmmm oh, whoops 03:31 hmmmm yeah, sorry. there's getEntry() now. get() just returns getEntry().value, and getChildren() returns getEntry().children 03:32 kahrl sounds good 03:34 kahrl how do you handle the case where one thread uses a child settings object and another thread deletes it? 03:35 hmmmm i don't! user beware, don't delete children Settings objects 03:36 hmmmm at first I was going to have getChildren return a deep copy of a std::map but that'd be a bit awkward to handle 03:39 kahrl what if one thread calls g_settings->set("blah", "something") and setting blah was a group? that would delete the child settings object, right? does every caller have to check for that case? 03:40 hmmmm that's one piece of behavior i haven't decided on yet 03:41 hmmmm i think what i'm going to have it do is what it does right now, which is lets it succeed, but doesn't get written back to the config file 03:41 hmmmm or maybe write two entries; blah = something \n blah = { ...child settings here... } 03:42 kahrl I prefer the second version 03:42 hmmmm same.. 03:53 ShadowNinja Groups would be great -- just make it accessible from Lua too. 03:53 ShadowNinja And if \n and friends aren't escaped in keys throw some kind or error if you try to use them. 03:54 ShadowNinja (That was a security issue in my security branch) 03:54 hmmmm security issue? 03:55 ShadowNinja Seems like only [a-zA-Z0-9_-.] should be allowed. 03:55 hmmmm maybe from lua... i dunno... 03:55 ShadowNinja hmmmm: minetest.setting_set("foo=true\nsecure.enable_security", "false") 03:56 hmmmm multiline is for values, not keys 03:56 ShadowNinja Causes a problem when reloaded. 03:56 hmmmm ahhhh 03:56 hmmmm i see what you're saying now 03:56 hmmmm that's clever 03:57 hmmmm though, isn't that true with the current Settings? 03:57 ShadowNinja hmmmm: Yes, just while you're at it. 03:57 hmmmm security in settings deserves a closer look 03:59 ShadowNinja if (!string_allowed(name, ...) throw UnsupportedOperationException("Only alphanumeric characters, underscores, and dashes allowed in setting keys"); 04:00 ShadowNinja Just something like that in set((. 04:00 hmmmm have to do the same thing for keys 04:00 hmmmm erm values 04:00 ShadowNinja Make foo.bar = true equivalent to foo = { bar = true } too 04:00 hmmmm also need to check to make sure they're not inserting a multiline specifier 04:01 ShadowNinja hmmmm: Yes, although I'd just make them escape properly. 04:01 ShadowNinja (values that is) 04:02 hmmmm agh the escaping 04:02 hmmmm no escapes! escaping strings opens a can of worms 04:03 kahrl how so? 04:03 hmmmm more potential security issues, more code complexity, more confusing to look at, etc. I'd personally rather have my settings a little bit less flexible instead 04:03 hmmmm if you can't write """ in a piece of multiline text... well then 04:04 ShadowNinja hmmmm: Alright, sanitize it then. 04:04 kahrl serializeJsonStringIfNeeded has been around for a long time without issues 04:04 hmmmm actually 04:04 kahrl it's also tested 04:04 hmmmm you can still write """ in multiline text 04:04 hmmmm it just can't be on a line all on its own 04:05 hmmmm i'll check out the serializeJsonStringIfNeeded 04:05 kahrl well, serializeJsonString is tested to be fully exact 04:05 ShadowNinja hmmmm: Er, so are the leading and trailing newlines stripped? 04:06 hmmmm not for multiline text 04:06 hmmmm http://fpaste.org/155226/41731774/ 04:07 hmmmm actually what i pasted is a tiny bit inaccurate.. the closing """ would not be indented otherwise that line would be treated as another part of the multiline string 04:08 ShadowNinja hmmmm: So that produces "\ntext begins here....\n"? 04:08 hmmmm no beginning and trailing \ns 04:08 hmmmm intermediate newlines are kept 04:08 hmmmm so that text would be: 04:08 ShadowNinja I'd prefer if leading indentation was stripped, but that would be trickier. 04:09 hmmmm "text begins here\nwhitespace is not removed\n in a multiline string" 04:09 hmmmm see 04:09 ShadowNinja hmmmm: Alright. 04:09 hmmmm I considered stripping the leading indentation 04:09 hmmmm sorta wonder if I could put an option for that in a config-meta-config 04:10 hmmmm i also had another idea for config directives 04:10 hmmmm @include "somefile.conf" 04:10 hmmmm @multiline_indentation off 04:10 hmmmm or something 04:10 ShadowNinja hmmmm: Just strip the indentation in front of the setting declaration, if any. 04:10 kahrl didn't you say that @include makes updateConfigFile almost impossible to write? 04:10 hmmmm not impossible 04:10 hmmmm just more difficult than it's worth 04:11 hmmmm including other files is pretty useless 04:11 hmmmm if I were REALLY bored I guess i'd put it in but i have so many better things to do 04:12 ShadowNinja It's usefull if you have more than one server, but I can see how it would be much more complex. 04:13 hmmmm you'd need to keep track of which settings originated from where 04:15 kahrl you could probably get away with not overwriting the included files and appending changed settings to the end of the main config file 04:16 ShadowNinja Just changed ones, yes. 04:17 hmmmm i guess that's true 04:17 hmmmm heh that's dirty but it works 04:20 ShadowNinja Another thing to do to Settings: Make them typed so you don't have to stoi/strtof/is_yes/etc on every get. I'd convert all settings that weren't obviously numbers or booleans to quoted strings to remove ambiguity (1337/"1337"/true) 04:21 ShadowNinja Possible issue: some people use 1 instead of true/yes/on. 04:22 Zeno` Sounds pretty complicated 04:22 ShadowNinja It would add a fair amount of complexity though. 04:23 hmmmm ShadowNinja, that's way outside the scope of this 04:23 ShadowNinja Zeno`: You said as as I typed ^. 04:23 hmmmm I originally wanted to do that but everybody told me it was worthless 04:23 ShadowNinja hmmmm: Yes, just saying. 04:24 ShadowNinja hmmmm: IMO you should use getGroup instead if getChildren, it sounds better. 04:24 ShadowNinja (If I understood you) 04:25 hmmmm I was debating between getSubtree, getChildren, getBranch, and getGroup 04:26 ShadowNinja subtree -> no, sounds complicated | branch -> not descriptive of what it is | children -> meh, just doesn't sound right to me 04:28 ShadowNinja Also, Settings isn't necessarily a RB tree, it could be a hashmap, or even a vector, that's an implementation detail. 04:29 hmmmm it becomes a tree in concept with this new feature though 04:30 ShadowNinja I see, but it still sounds complicated. Use simple words where possible. 04:31 ShadowNinja But I'll be off to sleep now. o/ 06:46 Zeno` Can anybody explain what https://github.com/minetest/minetest/commit/d0be27415eb9386b2367ab798268da6fbe8b7a68 actually does? 06:47 Zeno` It seems to be the source of https://forum.minetest.net/viewtopic.php?f=3&t=10655&p=163167#p163167 06:47 Zeno` s/source/cause 06:51 Zeno` https://gist.github.com/Zeno-/a6b5191d2190d053f219 07:06 Calinou https://github.com/minetest/minetest_game/pull/350 07:10 Calinou https://github.com/minetest/minetest_game/pull/351 07:16 Calinou https://github.com/minetest/minetest_game/pull/352 07:19 Calinou https://github.com/minetest/minetest_game/pull/353 07:19 Calinou they can all be tagged as low-priority enhancement 07:19 Calinou except the tools one, which can probably be enhancement 08:12 Calinou https://github.com/minetest/minetest_game/pull/354 – 3D signs 08:38 Krock Hello world. 09:45 jack_desktop Howdy, I'm currently wondering if there is a wiki or something that goes through the steps of developing what is now Minetest? I assume what I'm asking may not exist though, just thought I would ask, would love to know how Minetest was created from very basics to what it is now. 09:46 jack_desktop I know there is the dev.mintest.net wiki, does that fit the question, currently reading through bits of it now actually. 09:49 sfan5 i don't think we have a wiki entry for that 09:50 jack_desktop Ahh okay, thanks. 10:29 sapier any final thoughts on https://github.com/minetest/minetest/pull/1561 ? I'm gonna merge it in a few hours 10:31 Zeno` sapier, regarding #1885, my latest commit exposes the g_core_settings pointer as const, so I'm not sure how things can get out of sync. This also eliminates have to "sync back" to g_settings when the class is destroyed (i.e. all sets must be done through g_settings()) 10:31 ShadowBot https://github.com/minetest/minetest/issues/1885 -- Create CoreSettings class for time-critical sections to use by Zeno- 10:32 sapier Zeno what happens if someone changes the setting via directly accessing that member 10:32 Zeno` Which member? 10:32 sapier + bool enable_shaders; + bool enable_fog; + bool doubletap_jump; + bool node_highlighting; 10:32 Zeno` they can't 10:32 sapier for example 10:32 sapier why not? 10:32 Zeno` it's const 10:33 Zeno` the whole external reference (pointer) to the core_settings object is now const 10:33 sapier ok so they couldn't without using const_cast 10:34 sapier so only the unmaintainable shadowcopy remains 10:34 Zeno` well, yes, but if people are going to do that... *shrug* 10:34 sapier ppl are doing that 10:34 Zeno` why? 10:35 sapier because they don't see how they're supposed to change the value and will just thing you've ben over-cautious when making it const 10:35 sapier having two central copys of variables feels quite bad and I'm almost 100% sure this will cause errors in future 10:36 Zeno` At the moment there are more that two copies of this critical variables 10:36 sapier any "protection" you add can be easyly removed by someone not knowing the consequences 10:36 Zeno` every class makes their own copy 10:36 Zeno` of course protection can be removed :) 10:36 sapier not here ain't more then one central copy 10:37 Zeno` I can even access private members of a class, but I think if something went wrong it'd be my own fault 10:37 sapier 100 local copys which are controled by that local instance are better then two global stores to be kept in sync 10:37 sapier everyone usually looks for the first way to do something and wont continue to look for another one once this seemed to work 10:38 Zeno` ? 10:38 Zeno` this first way to do something is cast away const? 10:38 sapier It's useless to discuss who's fault it would be as it's allways gonna be someone else who has to fix it ;-) 10:38 Zeno` Anyway, I guess I just can't think of a better way :/ 10:39 sapier what's wrong with using the callback mechanism I suggested? 10:39 Zeno` I'm not sure how it's different to what I've implemented 10:39 sapier the difference is the lack of second central store 10:40 Zeno` So every function that want to keep copies of these values would register a callback? 10:40 sapier we're in c++ so it's more every class but that's a semantic detail 10:40 Zeno` err, yes, that's what I meant 10:41 sapier basically yes 10:41 Zeno` well, that's easily done now using my callback class 10:41 Zeno` I guess I could modify it 10:42 sapier As I said your callback mechanism is quite good, the minor change I'd like would be a way to pass a parameter to a callback 10:42 jin_xi hey Zeno, did you read the logs? there was some discussion regarding settings whey you were off 10:42 sapier I'll push the font_engine today there's a more simple callback mechanism for settings. I'd like to replace this by your one in next step 10:42 Zeno` I really don't see much of a difference though ;) An advantage, though, of the current method is the actual place where "perform the callbacks" can be isolated to somewhere it's safe(r) 10:43 Zeno` jin_xi, do I dare read it? 10:43 Zeno` (s/the current method/this patch) 10:44 jin_xi http://irc.minetest.ru/minetest-dev/2014-11-29#i_4043326 10:44 Zeno` All the callback does is set a dirty flag... the actual updates are done in a place where syncronisity shouldn't be an issue (as far as I can see) 10:44 Zeno` The font patch looks good 10:44 Zeno` celeron55, has misunderstood 10:45 Zeno` there is no necessity to add code in 10 different places :/ 10:45 jin_xi read on 10:45 Zeno` I have no idea where he got that idea (nor kahrl) 10:45 sapier looks like another variant of callbacks to me 10:45 Zeno` templates? 10:46 * Zeno` sighs 10:48 sapier :-) well I don't like templates to much too 10:49 Zeno` I don't think celeron55 actually read the code based on his comments :/ 10:49 Zeno` meh 10:49 Zeno` sapier, I haven't tried the font thing for about a month, but I tried it when you first made the PR 10:50 sapier I added Zeframs commit about a week ago so there might be a major difference 10:50 Zeno` When are you merging it? 10:50 sapier my part is only the basics, zefram fixed the formspecs 10:50 sapier in about 5-6 hours 10:51 Zeno` I'll test before then 10:51 sapier thanks 10:51 Zeno` If I don't find anything it will be because I found no issues and/or fell asleep :) 10:51 Zeno` If I don't say anything it will be* 10:52 sapier well there will be changes, quite reasonable as now font scaling is added :-) 10:56 nore ./minetest --address digitalaudioconcepts.com --port 30001 --name nore --password --go --config minetest.conf <-- if "video_driver = null" in minetest.conf, then I get floating point exception right after connecting 10:57 sfan5 nore: fixed in freeminer 10:57 sfan5 10:57 nore lol 10:57 sfan5 nore: suggestion: gdb it, fix it and pull request 11:00 nore SIGFPE in CNodeDefManager::fillTileAttribs 11:07 Zeno` sapier, where is doCallbacks() called? 11:17 Zeno` I'm not sure if people are going to add settings if they have to register a callback for every setting they're interested in :p 11:18 Zeno` sapier, are the valgrind leaks false positives? (in #1561) 11:18 ShadowBot https://github.com/minetest/minetest/issues/1561 -- Implement proper font handling by sapier 11:50 sapier Zeno`: for what I remember doCallbacks is called on setting a setting 11:51 sapier valgrind leaks? I'll check 12:02 sapier Nope no false positives. font is grabed once to often so it's not deleted on shutdown, fixed 12:03 sapier It'd be a shutdown leak only but better to have no leak at all 12:03 Zeno` That's the only issue I experienced. The only other (very minor) one was that on the pause screen my path was chopped off at the bottom 12:04 sapier is this a new issue? I remember this beeing told multiple times by now? maybe we need to implement some sort of size check for it 12:06 Zeno` I don't know if it's new... I just happened to notice it 12:07 Zeno` I can't check if it's a current issue or not because I'm fixing merge conflicts in another one of my branches :( 12:08 sapier no problem if it's new I'm gonna address it later guess that's nothing mission critical 12:10 Zeno` yep, very minor as I said (just cosmetic) 12:16 PenguinDad the path being cut off isn't a new issue for me 12:18 Zeno` It's new for me (just tested), but *shrug* 12:26 kilbith https://github.com/minetest/minetest_game/pull/327 12:26 kilbith https://github.com/minetest/minetest_game/pull/338 12:26 kilbith nore, sfan5 ^ 12:27 kilbith then we'll done with the textures for 0.4.11 12:30 sapier What about a feature freeze as of about 10th december to be able to do a release for christmas? 12:31 nore seems good 12:32 sapier but means that everyone who wants things in for this release has to get it polished till next weekend 12:32 nore together with the addition of snow biomes & other snow related things to minetest_game 12:32 nore yep 12:34 sapier I'm gonna check the android pulls and issues, hopefully most of them can be merged. My first check was quite positive but without real test I can't be sure 12:34 sapier And I don't know how much was broken through other commits since last android build ;-) 12:35 sapier -through + due to 12:45 rubenwardy https://github.com/minetest/minetest/pull/1603 12:45 rubenwardy "Use frame instead of words 'no screenshot available" 12:45 rubenwardy The build doesn't fail, Travis is lying 12:45 rubenwardy (I only changed an image) 12:46 PenguinDad rubenwardy: the build failing isn't caused by your change 12:46 rubenwardy Yeah. It is something to do with wrong version of irrlicht (no matching call to irr:: blah blah) 12:47 PenguinDad you just forked at a point where the build was failing 12:48 sapier rubenwardy: just rebase to latest version 12:53 rubenwardy Done 12:53 sapier thanks 13:03 rubenwardy Travis passed 13:14 Zeno` sapier, what if I close my PR and just work on the callback class 13:14 Zeno` would that be more digestible? 13:14 Zeno` and celeron55* 13:14 sapier good Idea, if you want to merge it I suggest waiting till font_engine is merged as you can replace that callback mechanism by yours too 13:15 sapier -merge +split 13:16 Zeno` Yeah, I think that's the way to go because it doesn't cause arguments and it can be used with whatever method is finally agreed upong 13:16 sapier yes 13:18 Zeno` If you want to cherry pick those two files (callback.cpp|.h) before I get around to it, feel free :p It's almost midnight here 13:19 Zeno` Also, the data type passed... std::string is good I think (to pass the setting name) but should there be user data as well? 13:19 Zeno` Actually it doesn't matter 13:19 Zeno` std::string is fine 13:20 sapier well we'll have to think about how to pass parameters in a generic mechanism. that's an open issue true 13:20 Zeno` yes 13:20 sapier I'd prefere to avoid passing a void* pointer ;-) 13:20 Zeno` same 13:21 celeron55 one way to do that kind of thing is to make an abstract base class for callback parameters and dynamically casting it when receiving it 13:22 celeron55 then it's a matter of preference whether to add template functions for getting and passing it directly as the final type or leaving that to the caller and callback 13:22 celeron55 the class can be completely empty, C++ will store the type of it 13:22 Zeno` quite possibly. But depending on what happens the name of the setting might be enough. They (the settings) don't change that much after startup, though. But that's an idea worth exploring 13:23 Zeno` I'm not sure about templates (only because I find them ugly... I am biased) 13:23 celeron55 for a simple purpose like that they don't look bad 13:24 Zeno` quite possibly yeah 13:24 celeron55 but they will cause weird errors when used wrong in any complexity 13:26 sapier well the first version (font_engine) one has built in callbacks. I think we should design the generic mechanism in a way it's most likely gonna handle all situations where we may need callbacks in future. Let's better take some time then rush into something we have to fix soon again 13:27 Zeno` I think callbacks are the way to go. I know there is that thing called, umm, main_game_callback or something, but it's not very useful atm (it might be client only as well) 13:28 sapier and of course once we have a solution we should replace ALL callback style things in mt by this one ;-) 13:29 Zeno` yeah 13:37 Zeno` #1889 ... feel free to modify/adapt/whatever. I need to rest (spent half the afternoon bisecting stuff heh) 13:37 ShadowBot https://github.com/minetest/minetest/issues/1889 -- Proposed callback manager. by Zeno- 13:37 sapier good night zeno 13:37 Zeno` I'll hang around, but night ;) 13:37 Zeno` night celeron55 16:18 sol_invictus I get a lot of messages like: Got packet command: 60 for peer id 642 but client isn't active yet. Dropping packet 16:18 sol_invictus What could be the reason? 16:19 sapier most likely some old client connects 16:19 sapier maybe a andoid fork 16:20 sapier there's been a lot of issues with client joining about a year ago sadly we couldn't fix them backwards for those old clients 16:21 sfan5 nore: did you already agree to #327? 16:21 ShadowBot https://github.com/minetest/minetest/issues/327 -- Localplayer check position by MirceaKitsune 16:22 sapier how often do you see those messages and on which loglevel sol_invictus, maybe we need to lower the level where that messages are shown 16:23 sol_invictus I see this in server console with --quiet 16:24 sol_invictus it's ERROR[ServerThread] 16:24 sapier did anyone check how much cpu load 327 gnerates? 16:24 sfan5 sapier: talking about minetest_game 16:24 sapier sol_invictus: hmmm guess we really should lower the loglevel for that entry 16:24 sapier ahhhh wrong link again :-) 16:25 sapier I wonder if we have that code in ... 16:25 sapier well I don't wonder enough to check it 16:28 nore sfan5, yes 16:32 sfan5 nore: I'l merge it then 16:32 nore ok 16:37 CraigyDavi Anything stopping https://github.com/minetest/minetest_game/pull/345 from getting merged? 16:38 sfan5 nore: ^ 16:39 nore no, nothing preventing merg 16:39 nore e 16:39 nore sfan5, your thoughts? 16:39 Zeno` well, I don't see why de-indenting the block mentioned can't be done now 16:39 Zeno` why make it a separate PR? 16:40 sfan5 nore: the PR looks good, but Zeno` is right 16:40 sfan5 CraigyDavi: can you do what Zeno` suggested? 16:40 CraigyDavi Ok I'll de-indent it 16:40 Zeno` I'm ok with it apart from that 16:40 nore sfan5, btw: your thoughts on the pine-* pull? 16:41 sfan5 nore: link? 16:41 nore https://github.com/minetest/minetest_game/pull/336 16:41 sfan5 nore: pine PR is ok 16:42 nore ok, and should we do it all at once, or add tree models & mapgen at the same time? 16:44 sfan5 nore: tree models & mapgen later 16:44 sfan5 nore: can i merge 336? (pine-pr) 16:44 nore yep, merge it 16:45 Zeno` yeah 16:45 Zeno` nore, but I thought you wanted it for a Christmas release :P~ 16:46 CraigyDavi #336 doesn't have any sapling growth code though? 16:46 ShadowBot https://github.com/minetest/minetest/issues/336 -- Settings checkboxes not saved if you quit without first leaving the Settings tab 16:46 nore no, not yet 16:46 sfan5 Zeno`: later doesn't imply after christmas 16:46 sfan5 CraigyDavi: correct 16:46 nore but it's easy to import the code from mg 16:47 CraigyDavi Updated minetest_game/pull/345 with de-indentation 16:47 Zeno` sfan5, my bad. I thought he said he wanted it as part of the Christmas release. I sometimes imagine things (and I was joking anyway) :) 16:47 nore sfan5, btw: what about adding code to get snow biomes in mgv6? (so that would be lua mapgen) 16:47 sfan5 nore: can i merge the new 345? 16:48 nore sure 16:49 sfan5 ok 16:50 sfan5 CraigyDavi: error: mods/bucket/init.lua: patch does not apply 16:50 CraigyDavi Oh that's due to https://github.com/minetest/minetest_game/commit/e707ba3 16:50 nore kaeza fixed a few globals too IIRC 16:51 CraigyDavi Well it was in my PR before kaeza... 16:51 sfan5 CraigyDavi: can you rebase it? 16:51 CraigyDavi Yeah I'll remove the bucket part 16:52 sapier I'm preparing https://github.com/minetest/minetest/pull/1561 for merge now so last chance to mention issues prior merge 16:56 sfan5 sapier: why XML? 16:56 sapier ask irrlicht guys that's the way they do fonts 16:57 sapier our old font was legacy only 17:00 sfan5 sapier: 1) see github comments 2) who agreed to that pull? 17:01 sapier all the comments have been handled 17:01 sapier unless there's been a new one within the last 10 min ;-) 17:02 sfan5 i made some new ones 17:02 CraigyDavi sfan5, rebased 17:03 sapier its desktop only because android for example provides valid dpi information automaticaly 17:03 sapier would you agree to replace "PC/MAC" to "Desktop" 17:03 Zeno` irrlicht probably uses XML because of fontconfig 17:04 sfan5 Zeno`: no 17:04 Zeno` no? 17:04 sfan5 the irrlicht xml files contain which chat is where in the png 17:05 sapier I don't know why irrlicht uses those fonts, and to be honest I don't care because I can't change it 17:05 sfan5 that has nothing to do with fontconfig 17:05 sapier sfan5 is "Desktop" ok? 17:05 sfan5 yes 17:08 sapier sfan5 only those 3 comments or don't I see the other ones yet? 17:09 sfan5 sapier: no, thats the only one 17:10 sapier ok in this case I'm gonna merge it. hopefully our formspec scaling issues are gone after this 17:11 kahrl ugh 17:11 kahrl I started downloading the patch when you said you're going to merge it to try it and it's not even downloaded yet 17:11 kahrl that's how bloated those XML files are 17:12 kahrl why not just drop non-freetype support? 17:13 kahrl for comparison, the current minetest working tree is about 44K, while 1561.patch is 5.08M 17:14 kahrl ok, download is finished now 17:15 kahrl still, requiring everyone who wants to git clone minetest to download this stuff (which they even probably won't use, as they'll enable freetype) is bad 17:16 kahrl especially since the download rate at github.com is so low 17:18 kahrl 17.5KB/s according to wget 17:18 Calinou <+kahrl> why not just drop non-freetype support? 17:19 Calinou I agree, it is worth it 17:19 Calinou (we could do the same for gettext.) 17:19 Calinou LANG=C forces english. 17:21 kahrl well supporting USE_GETTEXT=0 is quite trivial 17:21 Calinou gettext should be enabled by default 17:21 Calinou I don't like having to use cmake . -DENABLE_GETTEXT=1 -DENABLE_FREETYPE=1 -DENABLE_LEVELDB=1 -DENABLE_REDIS=1 17:21 kahrl just do #define gettext(String) String (as is done in gettext.h) 17:22 Calinou (LevelDB and Redis should be used if found on system, that's all) 17:22 Calinou (and could be explicitly disabled if found) 17:22 PenguinDad Calinou: Redis is enabled if it's found 17:22 Calinou but why not LevelDB? 17:24 kahrl how often do you actually run cmake? I never have to do it 17:24 Calinou a few times a month since I make builds I publish 17:24 Calinou (and I strip them of useless files by hand…) 17:25 kahrl sounds like a job for a script 17:27 Zeno` I run cmake maybe 12 times a week :3 17:28 PenguinDad I run cmake 4 times a week :D 17:29 kahrl I feel bad for neglecting my cmake now ;) 17:29 sfan5 Calinou: xyz wanted me to enable redis by default 17:31 Calinou both should be enabled if found 17:31 Calinou trying out my script… (I'll publish it when done) 17:32 kahrl is it as simple as changing OPTION(ENABLE_LEVELDB "Enable LevelDB backend") to OPTION(... 1)? 17:32 sfan5 kahrl: i think it is 17:32 kahrl if so then I support it 17:34 Zeno` Sort of related, why are debug builds built using -O1? 17:35 kahrl they would be way too slow otherwise 17:35 kahrl unplayable for most 17:35 PenguinDad Zeno`: because -Og is pretty new? 17:35 Zeno` PenguinDad, what about -O0 17:36 Zeno` kahrl, with no optimisation (compared to -O1) I find very little difference 17:36 Calinou what is your hardware? 17:37 Zeno` Calinou, not really relevant because there is very little difference 17:38 Zeno` But if you must know, Intel(R) Core(TM) i7-4770K CPU @ 3.50GHz 17:39 Zeno` I run debug builds with no optimisation on my laptop as well without -O1, though 17:40 Zeno` If there is a huge difference between -O0 and -O1 there is a big problem (IMO) 17:42 sapier kahrl you know that everyone not wanting to use freetype has to download those fonts too ;-) well true ttf files are only 5 mb compared to 10mb for the other ones. but I'm quite sure the xml files are heavyly compressed for transmission 17:42 sapier if you really wanna debug you have to set it to -O0 anyway, -O1 is quite useless for gdb debugging 17:45 sapier kahrl yes we could drop non freetype support. I'd not do this for two reasons: 1) Freetype code isn't anything different except it creates those "files" otf ... and second the code doing this is a nightmare, it's buggy as hell misses all checks and we don't have anyone who understands it 17:46 sapier if irrlicht would have native freetype support I'll be first to agree dropping non freetype support 17:46 kahrl what are those bugs? 17:47 sapier try setting your font file to something invalid ;) 17:48 kahrl it falls back to the builtin irrlicht font 17:48 sapier If I remember correct zefram mentioned some font parameters aren't exactly correct too, He did do special handling for this for his formspec fixes 17:48 sapier something invalid not something not existing ;-) 17:49 kahrl same thing 17:50 kahrl "works for me" (tm) 17:50 sapier well I don't know what you're doing different but I got various out of bounds memory accesses because the code did interpret a png file as ttf 17:52 sapier And as I don't have any knowledge about fonts so I can't fix it 17:55 kahrl maybe older versions of freetype didn't reject invalid files? 17:55 kahrl dunno 17:55 sapier is there any additional concern left except the size issues? I don't say they don't exist but that's the price to pay if we wanna have full scaling support 17:55 Calinou font size could be slightly larger by default 17:55 sapier it's crashing outside of freetype withing our own code 17:55 Calinou also make shadow alpha 255 instead of 128 17:56 Calinou makes font easier to read 17:57 sapier I don't have any preferences about the alpha does anyone agree to changing this? 17:58 sapier current size and alpha was checked by various ppl so I'd only change it if there's more then one person saying same 17:59 Calinou do these people play the game on a regular basis? 17:59 sapier I think so 18:04 sapier But as I said I don't really have a preference 18:26 sapier ok I'm pushing it now, we can change those parameters later if there's a majority for it 18:28 Calinou thanks 18:29 sapier thanks? I didn't change them by now 18:30 sapier but if you want to change them I wont stop you from doing it ;-) 18:44 kilbith sfan5: I still need your vote for the new header : https://github.com/minetest/minetest_game/pull/341 18:44 kilbith thanks again 18:54 shadowzone kilbith: I like the last one 19:01 Megaf sapier: take a look https://github.com/minetest/minetest/issues/1890 19:01 Megaf #1890 19:01 ShadowBot https://github.com/minetest/minetest/issues/1890 -- Copying text from gnome terminal to minetest causes both to crash. 19:02 Megaf Professional look you say. kahrl 19:02 Megaf :) 19:07 sapier is this new or as of font scaling? 19:07 kahrl I think it's a duplicate of #373 19:07 ShadowBot https://github.com/minetest/minetest/issues/373 -- Copy-paste doesnt work on GNU/Linux, from another program to Minetest 19:08 kahrl it's mentioned in the comments there 19:13 sapier hmm on kde there ain't a crash nor does copy n paste work 19:14 PenguinDad Megaf: I already noticed this ~6 months ago but thought it's not worth reporting :/ 19:14 Calinou whoa, why were so many files added to repository? 19:14 Calinou quite heavy ones 19:14 sapier fonts 19:15 Calinou that sucks 19:15 Calinou bitmap fonts should be buried 19:15 sapier well once irrlicht supports freetype we can do this 19:15 Calinou we have Freetype support? 19:16 sapier but irrlicht doesn't have 19:16 sapier and our freetype support is quite ugly and buggy code 19:16 Calinou works well enough 19:16 Calinou handles some Latin characters, better than nothing 19:16 sapier unless you try your own fonts 19:16 Calinou also we could have coloured chat :( 19:16 Calinou I've tried the Droid Sans fonts without issues 19:16 sapier once you do that youd recognize how broken our code is 19:17 Calinou I can't type stuff like é in chat, only in console 19:17 sapier I've read multiple times irrlicht guys want to support freetype maybe there's light at the end of the tunnel 19:17 Calinou yes, but when will we ship it? it takes years until all distributions package it 19:18 sapier true 19:18 sapier so we don't really have options 19:21 kahrl Calinou: I complained about the huge files (see log) but I was the only one, so I figured no one else cared 19:21 sapier well none of you seems to have mentioned that the biggest file (with huge difference) is a truetype font 19:22 Calinou it looks cleaner when you don't ship a lot of random files 19:22 Calinou but anyway the damage is done, you commited the files, they are in history :P 19:23 sapier still I can't merge truetypes font generator ;-) 19:23 sapier -truetype + irrlicht 19:26 sapier btw according to git size of all those files is 3.8m compressed, less then that single ttf fonts size 19:26 Megaf we should really migrate to other engine 19:26 Megaf irrlight is our biggest limitation... 19:26 Calinou no, just no 19:26 Calinou we can sure do a lot of things using it 19:26 Megaf no copy and paste, no proper fonts, lots of bugs 19:26 Megaf slow development 19:27 Megaf and so on 19:27 sapier no too ... any other engine will just have other limitations ... limitations we don't know yet 19:27 Calinou it would take too much time to change engine 19:27 Megaf and it's not that lightweight and simple 19:27 kahrl sapier: couldn't you have compressed that ttf file then? 19:27 kahrl I mean removed unused glyphs 19:27 Megaf Calinou: more time than fixing all bugs and implementing all resources? 19:27 sapier how to know which ones are unused? we do have i18n support? 19:28 kahrl do we really need the whole kanji set? 19:28 Calinou yes, way more 19:28 Calinou the game seems to support Latin and Russian 19:28 Calinou but remember about Japanese users… 19:31 kahrl even buildat, at its early stage of development, already had to make changes to its engine (urho3d) to work properly 19:31 Calinou Megaf, as for copy-paste, there are other doable chat improvements, like history in chat window, chat colours, … 19:32 Calinou shortcuts (Ctrl + U erases whole line to the left, Ctrl + K erases whole line to the right) 19:32 kahrl use f10 and those shortcuts work :) 19:35 sapier btw colored chat could be implemented if someone would care ;-) 19:37 nore sapier, I thought it was backported... 19:38 kilbith there's coloured chat in FM 19:38 sapier did someone check the license yet nore? 19:39 nore no, but it was said to have been backported from before the license change 19:39 nore I did not check that though 19:39 sapier well we have to be sure unless we wanna remove it again ;-) 19:39 sapier backporting is from fm is usually a bad idea better just look at what something does and implement yourself 19:41 nore https://github.com/freeminer/freeminer/commits/master/src/chat.cpp <-- chat colors were implemented before license change 19:41 sapier nice :-) 19:42 nore and not modified since then 19:42 nore (at least, chat.cpp did not have a change that affected colors it seems) 19:42 kahrl while talking about fm: does anyone agree that we should replace the server flags in the multiplayer tab by icons before the next release? 19:43 hmmmm I agree 19:43 sapier me too 19:43 nore me too 19:44 kahrl ok great, I'll work on it then 19:44 nore btw, about fm: their "COPYING" file says GPL but the "LICENSE" file says LGPL 19:44 sapier as there are so many dev online right now what do you think about feature freeze as of about 10th december to get a release till christmas? 19:44 kahrl sapier: sounds good to me 19:46 nore already told it looked good, that leaves about 1 week to complete a few features for mt_game too 19:56 nore sfan5, about what to do in minetest_game before the 0.4.11 release: make pine trees generate and grow, add snow biomes, maybe pine/jungle sticks? 19:56 nore any other thing I might have missed? 19:56 sfan5 i don't think you missed anything 19:58 nore should we add an issue somewhere for the TODO, or in the wiki? 20:00 kahrl I think something in #1561 is droppped too early 20:00 ShadowBot https://github.com/minetest/minetest/issues/1561 -- Implement proper font handling by sapier 20:00 kahrl if I switch tabs, I get a segfault on shutdown 20:00 kahrl s/droppped/dropped 20:00 sapier are you sure? it's been dropped to late before :-( 20:01 kahrl I saw that in the log 20:01 sapier hmm maybe order of deletion is wrong 20:01 kahrl gdb backtrace is not very helpful (it crashes in ~CGUIEnvironment()) 20:03 sapier can you try moving the fontenginne deletion behind device dropping in main.cpp l1572? 20:03 kahrl will try 20:05 kahrl http://sprunge.us/QFdI 20:07 sapier oh the other way round someone drops the font fontenginge is supposed to handle .. great 20:07 kahrl oh, forgot to mention this is a build without freetype 20:08 sapier was this backtrace prior or after modification? 20:08 kahrl after 20:08 kahrl I think when you do m_env->getFont() in initSimpleFont you have to grab() the font 20:10 sapier great ... I just removed that assuming it to be same memory leak as for freetype mode :-( 20:10 kahrl the irrlicht convention is: if a function name starts with create, you have to drop() the resulting object yourself, otherwise you must not 20:11 kahrl so drop the result of createTTFont but not the result of getFont 20:11 sapier hmm my fault, I always mix it up 20:17 sol_invictus what happened to freetype support, sapier? 20:18 jin_xi sol_invictus: use -DENABLE_FREETYPE=1 20:19 sol_invictus it's always on in my builds 20:19 sol_invictus I can't use custom fonts anymore with HEAD 20:19 Krock <3 costom fons 20:20 Krock -o+u+t 20:21 sol_invictus this was taken with droid sans set in config https://i.imgur.com/oBIECfL.png 20:21 sapier freetype should still be on 20:22 sapier there's no change in default settings just non freetype mode looks way better then before 20:24 sol_invictus then why doesn't it work anymore? 20:24 sapier can you give me your settings? 20:24 sol_invictus I reverted your commits and now it's fine https://i.imgur.com/oBIECfL.png 20:25 sapier still can you give me your settings ;-) 20:25 sol_invictus http://sprunge.us/gYVA 20:26 sapier do you have a DroidSans.ttf file there? 20:26 sol_invictus of course! 20:27 sapier can you post debug log of startup somewhere? 20:27 sol_invictus no, won't do this now 20:28 sapier btw both of your screenshots are same file 20:29 sol_invictus https://i.imgur.com/cD0MGfX.png * 20:30 sapier doesn't look to me like not working at all but just some slightly different font size 20:33 sol_invictus slightly different?! 20:33 sol_invictus what are smoking? it's tiny! 20:34 sapier well as mentioned before our freetype code doesn't really provide correct font sizes so zephram had to use some reference which most likely was 800x600 20:34 sapier you can verify my assumption about the size by setting it to a bigger value 20:34 celeron55 you should aim to preserve font size settings in a maximized full hd window though 20:34 celeron55 that's what people use anyway 20:35 sapier then next one will complain about not beeing identical in 800x600 20:35 celeron55 but who uses 800x600 for actual gameplay? 20:35 celeron55 sounds insane 20:36 sapier well we can tune the default size 20:36 celeron55 this isn't a large issue at all but this just seems like the wrong assumption anyway 20:36 sapier right now for the first time freetype and non freetype sizes are equal (within certain range) 20:36 celeron55 feel free to do nothing, i guess people can just adjust their settings 20:37 sapier don't get me wrong, I don't have any problem with adjusting the default size, as long as I don't have to change it every day due to someone complaining ;) 20:38 sapier prior someone mentions this as bug, the strange gui scaling due to y size of window was removed too 20:39 sapier celeron don't make me lookup the chat log where you did agree to this ;-) 20:40 celeron55 also, to make myself clear, i don't want default font sizes to be preserved; they have been too small for years 20:40 celeron55 (i was only referring to settings that users may have set by themselves) 20:41 sapier I agree that this is suboptimal but we'd get only one thing correct either freetype or non freetype as both haven't been consistent by now 20:42 sapier by definition you can't make two things consistent which haven't been without making one different from befor 20:47 sapier well I'm gonna wait for a little bit more feedback prior fixing the issues with those font changes. I'm quite sure there will be more 20:49 hmmmm alright done 20:51 hmmmm agh god damn 20:51 jin_xi lol 20:53 hmmmm merge conflict with the proper font handling patch 20:54 sapier :-) not very surprising 21:00 hmmmm usually it's not too bad but this needs a lot of manual intervention 21:05 hmmmm sapier... question 21:05 sapier yes? 21:05 hmmmm where are the settings.cpp modifications actually used 21:05 hmmmm I mean where is doCallback called 21:06 sapier I'll have a look, hope it's not been lost due to merge error 21:07 sapier oops 21:08 hmmmm don't fix it yet! 21:08 hmmmm woah those are big fonts 21:08 hmmmm heh it compiles and passes the unit tests 21:08 hmmmm ok good enough for me 21:09 sapier it's supposed to be called in the set functions, obviously it ain't 21:09 hmmmm ironically this callback mechanism was what zeno- was going to do 21:10 hmmmm hrmmm it's taking a long time to push to github for some reason 21:10 hmmmm https://github.com/kwolekr/minetest/commit/bc4fbc8567d9a35d463484e128a9b3fa40cf5132 21:10 hmmmm goot i just realized i forgot something 21:10 sapier well that mechanism was implemented quite some time before. And that part of zenos fix wasn't denied what was questioned was the shadowcopy of settings 21:11 hmmmm btw 21:12 hmmmm from now on, people should turn on their code editor's remove-trailing-whitespace feature no matter how messy it makes diffs 21:12 hmmmm I'm really getting tired of the trailing whitespace stuff 21:12 sapier I'm with you ... even I'll make sure it's on again ;-) 21:13 sapier tell me when I can fix the docallbacks bug 21:13 hmmmm well 21:13 hmmmm any concerns about my patch? 21:14 sapier what's it supposed to do? 21:14 hmmmm add settings groups and multiline settings entries 21:14 hmmmm see the test.cpp diff for a sypnopsis 21:16 sapier I'm not sure about the groups do we really need it? isn't it just a optical change? 21:16 hmmmm it's part of a bigger change 21:16 hmmmm i.e. noise parameters 21:16 hmmmm and map_meta.txt 21:17 sapier well I guess you wouldn't add it if you didn't need it so if it works merge it 21:17 hmmmm this way, map_meta.txt contents == g_settings->getGroup("mapgen"); 21:18 hmmmm and also now i'll be able to add noise params as i'd like 21:18 sapier hmm I wonder how groups do fit the callback mechanism 21:18 hmmmm okay, fetch from upstream, rebase, and then fix the set doCallbacks thing 21:19 hmmmm have them callback as well, why not 21:19 sapier how to call the callback for a parameter within a group ... or can't those be changed on their own? 21:20 sapier e.g. group1->param1 vs group2->param1 21:20 hmmmm oh.. 21:20 hmmmm your callback should pass the Settings object it was called frmo 21:20 hmmmm do you *assume* your callback was from g_settings? that's not a good idea 21:21 sapier well by that time there wasn't any other settings object ;-) 21:21 hmmmm sure there was 21:21 sapier Zenos callback mechanism would solve that issue 21:21 hmmmm just not global 21:21 sapier there was? where? 21:26 hmmmm well all the *_meta.txt files for one 21:26 hmmmm mapgenparams is a Settings 21:26 hmmmm i'm sure there are more 21:27 hmmmm now we have structured settings! 21:27 sapier well I don't see a immediate problem as a callback is registred to that specific settings instance. 21:28 sapier yet I see that right now you can't use same callback to handle different settings instances 21:28 hmmmm wonder if it would've been a better idea to move to an XML-based config file 21:49 sapier wow .... months ago mentioning xml would've caused an immediate flamewar 21:50 jin_xi resignation 21:50 hmmmm i'm being sarcastic :) 21:51 sapier hmm could someone write a world -> stl converter? I'd like to try printing a world :-) 21:51 sapier hmm a small one :-) 21:52 celeron55 just look in the forums, there have been topics about that 21:52 sapier really? :) 21:52 celeron55 probably better use google because forum search sucks 21:53 sapier wow there's really a mod to do this :-) 21:53 hmmmm why would anybody want to waste real-life resources on perlin puke 21:54 sapier well I'd guess "just for fun" ;-) 21:54 celeron55 looks like these guys did it succesfully https://forum.minetest.net/viewtopic.php?f=9&t=9949 21:54 celeron55 or... this guy 21:54 celeron55 it's only one talking there 8) 21:54 shadowzone http://picpaste.com/pics/Screenshot-rCli6W1i.1417384474.png <-- is it suppose to look like this? 21:55 sapier but I'm missing a photo of a actual print 21:55 * shadowzone waves at celeron55 21:55 sapier I think so yes 21:55 sapier I'd prefer it a little bit smaller but that's my personal taste 21:56 kahrl that's what she said 21:56 * kahrl hides 21:57 sapier I wonder how long the size finetuning will take this time ;) 22:20 kahrl sapier: shall I push the segfault fix? 22:20 sapier the non grabbed font? 22:20 sapier yes 22:20 kahrl ok 23:49 paramat nore > "sfan5, about what to do in minetest_game before the 0.4.11 release: make pine trees generate and grow ...", yes pine sapling growing code and the pine schematic will be done for 0.4.11, thanks for merging the pine nodes