Time Nick Message 00:00 paramat with water level + 128 all spawns are close to (0, 0) 00:00 celeron55 ehm 00:00 celeron55 you're forgetting that watershed generates huge oceans 00:00 paramat oh yeah 00:00 celeron55 don't forget that 00:01 twoelk if water at sawn then add boat :) 00:01 paramat heh 00:02 twoelk you may leave out the tiger though 00:02 celeron55 boating 1500 nodes is not fun 00:02 twoelk ok add some rations 00:03 paramat the big oceans are a dilemma, maybe i'll only allow those away from world centre 00:05 twoelk mmh like my old dream with a mt.meru at the center? (drool) 00:06 paramat i actually considered a multi-level world with a connecting tower at (0,0) 00:07 hmmmm maybe there should be a new strategy instead making another tweak to a fundamentally flawed algorithm 00:08 hmmmm this should really be information provided by the mapgen 00:08 twoelk http://www.woelknet.de/pages2/minetest/screenshots/lone-isle.jpg <- another suggestion for watershed spawn :D 00:08 hmmmm getPlayerSpawnArea() ? 00:08 hmmmm getIdealSpawnLocation()? 00:09 twoelk if we get a mapgen preview, couldn't that be used? 00:10 hmmmm huh? 00:10 hmmmm no idea what you mean by that. 00:11 twoelk thought I heard talk about seed preview in this channel 00:11 twoelk or whatever it was called 00:13 twoelk :( cant find it 00:14 paramat hmmmmm ok, i know you are thinking of working on findSpawnPos. a range of +-1000 nodes is big enough 00:15 paramat core watershed needs a lot of work. i may well bias it towards dry land, or at least near world centre 00:17 twoelk http://irc.minetest.ru/minetest-dev/2015-07-09#i_4315545 00:20 paramat well a simple auto-mapgen-preview could provide an 'ideal spawn location' 00:21 paramat it would be code in the mapgen file that just uses the basic terrain height noise to find an area of dry land 00:21 paramat easy to do 00:22 paramat it means the primary player spawn area could be a few 1000n away from 0,0 00:24 paramat perhaps it could provide the central point around which the existing findSpawnPos extends it's search 00:32 paramat one idea behind watershed/riverdev is variation on every scale. the largest (8000-16000 nodes) being average terrain height, some areas being continents with large lakes, in other areas the tops of the mountain ridges form chains of islands in huge oceans 00:36 est31 hmmmm, can you please give people a chance to answer on your answers on a PR before merging it? 00:36 hmmmm you said +1 if I fix the documentation 00:36 hmmmm I fixed the documentation 00:36 est31 no you didnt 00:36 hmmmm yes I did 00:36 est31 "Queue all blocks in the area from `pos1` to `pos2`, inclusive, to be asynchronously fetched from memory, loaded from disk, or if inexistent, generates them." 00:37 est31 I have asked you to change it "generates them" to "generated" 00:37 est31 -it 00:37 hmmmm that's incorrect English grammar 00:37 est31 whats there ,thats incorrect english grammar 00:38 est31 I admit I'm not the native speaker here tho 00:38 est31 but why not say then: "Queue all blocks in the area from `pos1` to `pos2`, inclusive, to be asynchronously fetches them from memory, loads them from disk, or if inexistent, generates them." 00:38 hmmmm wait a minute 00:38 hmmmm this isn't the right sentence 00:39 hmmmm oh 00:40 hmmmm what happened was that I thought the sentence was "Fetched from memory, loaded form disk, or if inexistent, generates them" 00:40 hmmmm you know how in the Lua API a new line sometimes ends the sentence of documentation 00:41 est31 the line break was after "asynchronously". 00:42 hmmmm well it's a simple fix, who cares 00:43 est31 This really seemed like pushed in a rush 00:43 est31 My mapgen did take more than 2 secs and it didnt print the update 00:43 est31 but lemme check again 00:44 hmmmm oh that's another thing 00:44 hmmmm it's "at least 2 seconds after the next environment step" 00:44 hmmmm so if you're using a lua mapgen and serverthread is blocked on generation, it'll take longer than 2s 00:44 hmmmm this is literally unavoidable 00:44 est31 no prob with that I tried with mgv6 vanilla mtgame 00:45 est31 no mods active 00:45 est31 hmm seems to work now 00:45 est31 nvm then 00:46 est31 heisenbug 00:46 est31 :) 00:46 hmmmm it's simple 00:46 hmmmm I chose literally the simplest way to demonstrate the correct usage of this callback mechanism to do something useful the players might want 00:47 hmmmm of course it's not perfect though because of the mentioned locking issues 00:48 est31 ok 00:48 est31 well that cant really be avoided 00:48 est31 not unless you fix the locking stuff 00:48 est31 which that pr wasnt about 00:49 est31 and its useful already now 00:49 hmmmm you can't fix the locking stuff without having separate lua environments 00:49 hmmmm we'll eventually have to do that 00:49 hmmmm i still haven't decided if i want to use lua lanes or the serialization library we have for the main menu 00:51 est31 pipe it through python 01:17 hmmmm oh uh oh i really understand what happened now 01:18 hmmmm i had two instances of kwrite open on lua_api.txt at the same time 01:18 hmmmm i edited one and then i mistook it for the other and when i updated the old version to have optional params it overwrote my edited sentence 01:19 JohnnyComeL8ly That's too bad... at least you caught the mistake. 02:42 gregorycu What's happening nigs 02:53 gregorycu So, I've been thinking 02:54 gregorycu The ways settings are shared across threads has always offended me 02:55 gregorycu The fact there is locking to read a setting, is pretty bad 02:55 gregorycu Especially because it seems that the server component and the client component share the same settings map 02:56 JohnnyComeL8ly Offended you? 02:56 gregorycu Yes, as a professional 02:57 JohnnyComeL8ly Well, it doesn't sound too professional to say that. 02:57 gregorycu I couldn't care less what sounds professional 02:58 gregorycu Anyway, back on track, I think I'll do some work to remove the contention with the settings 03:18 hmmmm [09:55 PM] The fact there is locking to read a setting, is pretty bad 03:19 hmmmm there is a lot of contention in g_settings on singleplayer 03:19 gregorycu Yeah, I figured as much 03:19 hmmmm because of the way it's shared between both client and server and both loops hit hard on it 03:19 hmmmm est has a PR to speed up Settings that we just didn't get around to merging 03:20 hmmmm you don't need to worry, it's getting worked on 03:20 gregorycu There are other ways to share data, apart from locks, segmentation is one way, we can segment between client/server, or segment per thread 03:20 gregorycu Oh, ok 03:20 hmmmm thread local settings 03:20 hmmmm heh 03:20 hmmmm TLS 03:20 gregorycu It works, in practice :) 03:21 JohnnyComeL8ly TLS security is in the works too? (Or wrong TLS?) 03:21 hmmmm I'm honestly not too sure which settings are set in threads other than where they're used 03:21 hmmmm TLS is completely unnecessary 03:21 gregorycu In that case, yeah, it would be 03:21 gregorycu Obviously, we want proper segmentation between server and client in any case 03:21 Hijiri which channel does modding discussion/questions go? 03:21 hmmmm minetest already has a key exchange by virtue of authenticating with SRP, all that needs to be done is a cipher for encryption over UDP 03:21 JohnnyComeL8ly #minetest 03:22 Hijiri alright, thanks 03:22 gregorycu Well, guess I'll go back to optimizing lighting :) 03:22 JohnnyComeL8ly np 03:26 gregorycu Where does infostream go? 03:49 hmmmm ? 03:53 gregorycu Couln't make it log to file, just changed the level to warn 04:03 hmmmm check out debug_log_level 04:14 paramat gregorycu good to see you around, i remember you worked on the liquid flow code, i'm keen to see this fixed if you are ever inspired to work on it #2977 hmmmmm suggests a new method in the thread. it would be good to have tidy columns of water falling from floatlands 04:15 gregorycu Let me take a look 04:16 gregorycu Is kwolekr == hmmmm ? 04:17 paramat yes 04:19 gregorycu What's the problem? Distill it down for me. When there are floatlands, water doesn't go through unloaded blocks? 04:19 gregorycu Unloaded chunks? 04:20 paramat it hits ignore in an ungenerated mapblock and then stops and and spreads outwards horizontally 04:21 paramat (-and) 04:21 gregorycu Urgh 04:21 gregorycu What should it do? Stop spreading right? 04:22 paramat a column of water should just stop, not spread outwards, then when the block gets generated/loaded whatever it should continue down as a column 04:23 gregorycu Or spread out horizonally if that block is land 04:23 paramat yeah 04:23 paramat might be a difficult one to solve it seems 04:23 gregorycu mm.... maybe 04:24 gregorycu Lol, it's been so long, how do I give myself a bucket? 04:26 paramat creative mode or /giveme bucket:bucket_water 04:27 gregorycu Thanks 04:31 gregorycu Ok, yeah, I understand the approach 04:32 gregorycu Gotta figure out a way to test this 04:33 gregorycu Fuck me single player is slow 04:33 paramat erm i have some floatland mods i'll find you one.. 04:34 gregorycu I need to toggle and untoggle chunk loading 04:36 paramat hm 04:37 gregorycu I'll add a command to unload/load pointed to block 04:37 gregorycu (blockchunk) 04:37 gregorycu lol, actually, how the fuck would loading work 04:38 paramat didn't 'disable camera update' do that (f4?) but it may have been removed 04:40 paramat 'keymap_toggle_update_camera = ' it's there but no key assigned 04:41 hmmmm gregorycu: There is the /emergeblocks command to load a block 04:41 gregorycu In debug, it's f4 04:41 hmmmm there is no command to unload a block though 04:41 gregorycu Maybe I should add one 04:41 hmmmm that would technically require a complete overhaul of the way blocks are retrieved by the client 04:42 gregorycu urgh 04:42 gregorycu Maybe I won't add one 04:43 gregorycu I'll look at this in 30 min, I should get my perf improvement submitted 04:46 hmmmm hmmm 04:47 gregorycu gregorycu 04:48 hmmmm let's see what's on my todo list.. 04:49 hmmmm mostly annoying things like switch all the ore/decoration gen stuff to PcgRandom 04:49 hmmmm and move log level conversions to log.cpp 04:50 hmmmm i was supposed to resume client side modding after that but celeron took it over (phew, that's a load off my chest) 04:50 hmmmm hmmm 04:50 hmmmm I'll do the water thing I guess, or do you want to? 04:51 gregorycu Go for it 04:51 gregorycu I made it fast, you can make it work 04:52 hmmmm ultimately, i'd want water and lighting computations would have their own threads 04:52 hmmmm that's a bit further off into the future though :/ 04:52 hmmmm need to do a lotta other stuff before then 05:07 gregorycu So, looks like I made spreadLight 3.5x faster 05:09 hmmmm cool stuff 05:09 hmmmm how's that? 05:10 gregorycu Inside spreadLight it would assemble a set::set iteratively 05:10 gregorycu It only added to the set, and at the end of the function, it would recursively call spreadLight 05:11 gregorycu Anyway, if you replace the std::set with a std::vector+sort+unique you get better perf 05:12 gregorycu std::set is great if you need uniqueness guaranteed at all times, but sometimes less optimal if you don't mind duplicates temporarily 05:14 gregorycu Not claiming 3.5x improvement on all arch, would be good if someone could test on linux (I'm on win x64) 05:15 gregorycu Maybe it's only 2.5x, my maths is a little wonky I think 05:16 paramat nice 05:22 hmmmm gregorycu: do you mind writing a unit test to compare exact results of spreadLight()? 05:22 hmmmm just to make sure there are no regressions here 05:22 gregorycu How does one write a speed unit test? 05:22 gregorycu or do you mean correctness? 05:22 hmmmm dunno, not particularly concerned about speed though. 05:23 hmmmm looking for correctness. 05:24 gregorycu That's a pretty big task 05:24 hmmmm need to make sure "optimizations" don't break things 05:26 gregorycu Well, in answering your question, I would mind 05:26 gregorycu (No offense intended) 05:37 hmmmm people need to get into the habit of writing unit tests 05:38 hmmmm as a developer, I want assurance that an optimization of some feature will not modify the output of said feature to something unexpected 05:38 sofar that kind of discipline is really hard to teach new programmers 05:39 sofar and tools are more of a barrier than help, often 05:39 gregorycu I am in the habit of writing unit tests, just not going to do it for this change 05:39 hmmmm well okay then :/ 05:40 gregorycu I'd have to understand exactly how the Map class works 05:40 gregorycu Because there are heaps of methods, and no clear SoC 05:41 hmmmm fair enough =D 05:41 hmmmm somebody's gotta fix all this stuff at some point though 05:42 gregorycu Yeah, would be nice if the light spreading engine wasn't part of map for instance 05:42 hmmmm minetest is so close to going bankrupt, it's in such TD 05:42 gregorycu lol 05:42 hmmmm but no, the users want features 05:42 gregorycu My sole job in RL is to wind back the technical debt 05:43 hmmmm the pull request section never dips below 90 05:43 hmmmm would-be contributors keep piling them on 05:43 hmmmm then get angry when they sit for too long 05:44 hmmmm my past 5 or 6 commits have been, "Fix thing" 05:44 hmmmm speaking of which, it doesn't look like est fixed the getTimeOfDay mutex 05:53 gregorycu What should i do? 05:55 hmmmm whatever you feel like :-) 05:57 gregorycu What would benefit MT the most? 05:57 gregorycu And don't say unit tests 05:58 hmmmm trashing the whole thing and starting from scratch 05:58 hmmmm i don't know, do i look like a business analyst to you? 05:59 hmmmm do you play minetest? 05:59 gregorycu No 05:59 hmmmm well then why work on it 05:59 gregorycu For funsies 05:59 hmmmm if you spent enough time in the code the problems would be immediately obvious 05:59 gregorycu I mean, to spend quality time with you folk 06:00 hmmmm and it'd drive you insane 06:00 gregorycu When I go to play singleplayer, it's slow as shit 06:00 hmmmm "slow" how 06:00 hmmmm FPS? 06:00 gregorycu Jerky, FPS is poor 06:00 hmmmm ya 06:00 gregorycu I'm putting that down to the shared settings 06:00 hmmmm it's not 06:00 hmmmm the FPS problems are mostly due to crappy rendering code 06:01 hmmmm things are not getting occluded that should be for example 06:02 hmmmm also the frustrum culling got F'd up the last time somebody touched it btw 06:02 gregorycu isBlockInSight is broken? 06:02 hmmmm I think so yea 06:02 hmmmm it's all broken 06:02 hmmmm god dammit 06:02 gregorycu lol 06:04 hmmmm https://github.com/kwolekr/minetest/commit/6ba4f3775e9b2a5bacb2537c058728a67222b67d PTAL 06:06 paramat ah the warning during compiling, nice 06:10 gregorycu I'll take a look at isBlockInSight 06:11 hmmmm paramat what compiler do you use 06:12 hmmmm you know what I'm going to make a pull request for this commit just in case 06:13 paramat erm i'm not sure how to find out 06:13 hmmmm cc --version 06:13 hmmmm lol -.- 06:15 paramat cmake version 2.8.12.2 ? 06:16 hmmmm on second thought nevermind 06:18 paramat ok :] 06:20 gregorycu haha wtf 06:21 gregorycu You're funny paramat. I like you. 06:21 gregorycu hmmmm: With regards to isBlockInSight, it doesn't appear to be horribly broken 06:21 hmmmm it's subtly broken though 06:21 gregorycu Does look a little wrong in places though 06:21 gregorycu Yeah 06:22 hmmmm so things look great at ground level 06:22 hmmmm fly up 100 nodes, turn full view range on, look down at the ground 06:22 hmmmm fly up 100 more, then look down again 06:22 gregorycu how does one fly? 06:22 hmmmm hmm I don't know 06:23 hmmmm i changed the keybinding from the default, but I press "F" 06:23 paramat '/grant singleplayer all' turn on fly with 'k' 06:23 hmmmm yep KEY_KEY_K 06:25 gregorycu Well, it seems to show less than it should 06:25 hmmmm there was some "optimization" 06:25 hmmmm it worked fine before, now it doesn't work fine... 06:26 gregorycu Sounds like something I'd do, but worse 06:27 hmmmm actually nvm it wasn't an optimization, it was a fix: https://github.com/minetest/minetest/commit/1369503aba1ae0c64e6c25b32cc5552bbdead8fb 06:28 hmmmm / WTF is this? It can't be right 06:30 paramat ah the way blocks disappear at screen corners, something to do with fov? 06:31 gregorycu Yeah 06:31 gregorycu Surely we are second-guessing opengl here 06:33 gregorycu Can't we just ask it if a point will be inside the frustum 06:34 paramat i use a 16:9 ratio game screen and get this problem a lot 06:34 hmmmm gregorycu: the problem is that code needs to run on the server too 06:34 gregorycu oh 06:35 hmmmm the client just so happens to use isBlockInSight() as well for its own frustrum culling 06:35 hmmmm when it goes to render the map in ClientMap::renderMap() 06:35 gregorycu Seems a bit wrong though 06:35 hmmmm also the occlusion culling in renderMap() is totally fucked 06:35 gregorycu How does the server use isBlockInSight 06:35 hmmmm you can look straight at a wall and it'll still render blocks in back 06:36 hmmmm it uses it to determine which blocks to send to the client 06:36 gregorycu Maybe the client could pull? 06:36 hmmmm the client doesn't request which blocks it wants from the server, the server keeps track of where the client's position and rotation and sends it the blocks it determines the client needs 06:36 hmmmm well 06:37 hmmmm it's been attempted before 06:37 hmmmm it doesn't really help anything except make things laggier 06:37 hmmmm it's the "client request blocks" branch 06:38 gregorycu ok 06:38 gregorycu In any case, surely the server needs to load blocks more aggressively than the client 06:38 gregorycu Or rather, send more aggressively 06:39 gregorycu If I'm a client and I do a 180 turn, won't it take a while for the server to send me the blocks? 06:39 hmmmm yea it does 06:39 hmmmm that's the dumb part 06:39 hmmmm blocks in the client's view frustrum should probably be prioritized, but blocks in back of the player still ought to get loaded as well 06:40 hmmmm you can notice this especially if you fall off a cliff and look straight up 06:40 hmmmm you'll keep stopping because none of the blocks below you are getting sent until you're right on top of them 06:40 gregorycu Well, I'm thinking that all blocks within a certain radius of the client should be sent, and the client can request other blocks 06:41 hmmmm yea I wanted to do that for a while 06:41 hmmmm but i never had the guts to make such a huge change 06:41 hmmmm well putting things into perspective it really isn't 06:42 gregorycu Maybe a good first step is to split it so the server and client uses two different functions 06:42 gregorycu Then change the server to be more aggressive in sending 06:43 gregorycu Means drawing can be optimal at the very least 06:45 gregorycu I know duplicated code is bad, but I think these are two concepts which _happen_ to have the same implementation at the moment 07:28 gregorycu lol, this code works well... Just... "don't look down" 07:35 celeron55 i like sapier's stance on the "rewriting minetest from scratch" thing 07:36 celeron55 that is, it still isn't wise because we don't have solutions to many of the problems we have, and we wouldn't have then either 07:37 celeron55 that and the fact that minetest has an enormous amounts of features that you don't even realize are there until you start rewriting it and realize how much work there is 07:39 celeron55 we don't exactly have code around that isn't doing anything, and that can be said of over 100k lines of code 07:41 gregorycu I think he was only half-joking 07:42 celeron55 i don't think hmmmm is ever going to start rewriting minetest but it still is a thing that many people have mind so i might as well state these things once in a while 07:42 celeron55 have in mind* 07:42 hmmmm (: 07:42 hmmmm I'm just kidding 07:43 hmmmm but sometimes it really is worth it to nuke something from orbit and re-code it from scratch 07:43 hmmmm at work I inherited this scrappy russian coded bug-filled network driver that bluescreens if you sneeze around it 07:44 celeron55 MT would be there if we had a lot of time for this, but we don't, so the smartest thing to do is just to stick with it 07:44 hmmmm the whole thing was written from the ground up with sloppy, horrible coding practices, tons of copy pasted code, overcomplicated mechanisms, and a total disrespect for testability 07:45 gregorycu Yeah, whoever started this project should be ashamed of themselves 07:45 est31 wtf 07:45 gregorycu Oh, hi est31 07:46 hmmmm [02:45 AM] wtf 07:46 hmmmm ^ minetest in a nutshell 07:46 gregorycu hmmmm was just brutally bagging the creator of minetest, whoever that was 07:46 est31 hah 07:47 hmmmm FWIW celeron tried to rewrite minetest 07:47 hmmmm it's called "buildat" 07:47 celeron55 and it's not a rewrite 07:47 est31 thats no rewrite 07:47 gregorycu it's not a rewrite 07:47 est31 lol 07:47 hmmmm BS you can't convince me otherwise 07:48 celeron55 you can kind of compare it in terms of amount of work, but its issues come mainly from the fact that it tries to be quite different 07:48 hmmmm but it's the way minetest would have been written if you had traveled back in time 07:48 celeron55 i would have gotten it into a usable state in the time i used if it was a rewrite of minetest 07:49 hmmmm or i mean if you had knowledge of the future 07:49 celeron55 but very bare-bones 07:49 hmmmm build dat shit, yo 07:49 celeron55 well maybe, or maybe not; let's say it's one of the ways i might have chosen to write minetest if i knew the future 07:50 hmmmm ok it's time to start drinking beers 07:50 hmmmm once i hit ballmer's peak it'll be time to start coding 07:53 gregorycu How does one go from aabbox3d to aabbox3d 07:53 hmmmm i'm pretty sure there's no constructor to do that conversion for you 07:53 gregorycu Yeah, that's fucking annoying 07:55 gregorycu irrlich is being a dick 07:56 hmmmm btw your nemesis Zeno` was last working on an irrlicht abstraction layer and replacing it with Ogre3d 07:56 gregorycu A noble cause, there is hope for him yet 07:57 hmmmm he disappeared about a month or two after you disappeared 07:57 hmmmm and then just 2 or 3 days ago he left a comment on a PR 07:57 gregorycu Yeah, sorry for disappearing 07:58 hmmmm it's ok I used to disappear for a while 07:58 nrzkt IRL > MT :D 07:58 est31 hmmmm, PTAL https://github.com/est31/minetest/commit/12fd36af2de845daa1364b0542914841d22372a7 07:58 est31 and nrz :) 07:58 hmmmm thank you 07:58 hmmmm that wasn't so hard, was it? 07:58 nrzkt est31, why not use fucking atomics ? 07:59 nrzkt those variables could be atomic :) 07:59 est31 nrzkt, because its doing too complex operations on the variables in order to be atomic 07:59 nrzkt lol 07:59 hmmmm oh gregorycu I have the perfect thing for you to do 07:59 est31 nrzkt, really 07:59 hmmmm add MSVC intrinsics for Atomic 07:59 est31 look at the stepTimeOfDay method 07:59 gregorycu lol 07:59 gregorycu std::atomic bro 07:59 hmmmm we don't have C++11 until Debian stops being a snail 08:00 est31 you can't run two instances of that method simultaneously with atomics 08:00 gregorycu I think we can, does anyone even use Debian? 08:00 celeron55 debian already supports C++11 08:00 est31 and until PilzAdam installs newer linux 08:00 hmmmm gregorycu: there is an abstraction layer for C++11 atomics anyway 08:00 est31 he has 12.04 LTS 08:01 celeron55 the only reason we wouldn't use C++11 is because old versions of MSVC don't support it and people insist on using them 08:01 gregorycu I'll do this fustrum shit first 08:01 celeron55 and the fact that BSDs don't have recent compilers installed by default 08:01 nrzkt est31, maybe rewriting stepTimeOfDay to be atomic compliant is better ? :) 08:01 gregorycu My visual studio doesn't have full C++11 support 08:01 nrzkt celeron55 not a problem 08:01 hmmmm btw celeron I updated to FreeBSD 10 08:01 celeron55 and the fact that some people here use some incredibly old enterprise distributions on servers that don't support C++11 08:01 nrzkt clang 3.4 is pretty well 08:01 hmmmm it's just 9.x that has that problem 08:01 hmmmm 9.x is -STABLE right now 08:01 celeron55 none of those should be concerns to us, franly 08:01 celeron55 frankly* 08:02 hmmmm CentOS? 08:02 nrzkt look at std::put_time in c++11; supported by clang 3.4 and not by GCC 5.0... 08:02 nrzkt RHEL7 is okay 08:02 hmmmm using really outdated packages != stable 08:02 celeron55 oh, well, also, one reason is that nothing supports full C++11 yet, and we have to define a subset if we use it 08:02 celeron55 quite a large subset, but a subset anyway 08:02 hmmmm well 08:03 gregorycu As it turns out, the most important features are the ones that everyone supports 08:03 hmmmm yeah 08:03 hmmmm we can remove a lot of platform specific threading code 08:03 hmmmm and we have move constructors 08:03 hmmmm and foreach loops 08:03 hmmmm and... 08:04 est31 unordered map 08:04 hmmmm that's really good^ 08:04 hmmmm lol speaking of foreach loops I randomly looked at freeminer the other day and proller made one of those "fix" commits 08:04 hmmmm for (auto o : ) { 08:04 nrzkt unordered_map give ~15% perf on some maps like the node resolver, tested on my forked, and set in production now :) 08:05 hmmmm not a reference to o, he did an actual copy 08:05 hmmmm inserting subtle bugs 08:05 hmmmm lolol 08:05 nrzkt hmmmm, proller is not a reference sometimes :) 08:05 hmmmm man 08:05 hmmmm freeminer is the perfect example of what not to do with minetest 08:06 nrzkt maybe, i haven't looked their code very much, i have my own 08:06 hmmmm i am glad it exists 08:06 nrzkt also: std::mutex is not as fast as in UNIX on Windows 08:07 est31 one fork better than no fork 08:07 gregorycu Zeno wouldn't like switching to C++11 08:07 est31 two forks better than one fork 08:09 hmmmm fork muh dongles 08:10 nrzkt it's for my experimentations in production mode :) 08:10 nrzkt MT is also an interesting study case , but i could not propose every change as a PR :p 08:12 nrzkt for example my tests on the libapr integration on MT could not be proposed as a PR /p 08:12 hmmmm never heard of libapr 08:13 hmmmm there must be 5000 different kinds of these exact libraries out there already 08:14 nrzkt libapr is the threading,mutex,socket lib used by apache & tomcat 08:14 nrzkt :p 08:14 nrzkt i think you heard 08:14 est31 isnt tomcat java? 08:14 hmmmm they start out as a small and focused collection of platform specific code bits, sort of like our util directory 08:14 est31 and for java the JRE provides that stuff 08:14 hmmmm and then some devs get this bright idea - "what if we were to make this util directory into our own toolkit! people would love to use our toolkit library, apache style ;)" 08:15 celeron55 apache's libraries are pretty competent though 08:15 nrzkt celeron55, yes 08:15 hmmmm this toolkit library exists for every large project 08:16 hmmmm and they all have roughly the same amount of content and they're all really good 08:16 hmmmm it's just that programmers are like crack addicts 08:16 celeron55 they make sense for large server applications because you want to get as much speed as possible with disregard to portability and how difficult the thing is to compile 08:16 est31 there is no way I can have READ AND SET access to an atomic variable? 08:16 hmmmm they love coding shit like this because it's so satisfying 08:16 hmmmm but ultimately useless imho 08:16 gregorycu Reason: cannot convert from 'irr::core::vector3d' to 'const irr::core::line3d' 08:17 gregorycu Great 08:17 nrzkt apache runtime library has a long long time experience, and i would try to experiment their approch :) i looks similar to pthread for threading and same for mutex but they give one thing: i don't care about portability, they already done a very good multiplatform code for me :p 08:17 celeron55 hmmmm: apache would be doing those libraries internally anyway, so they just publish them with almost zero extra effort 08:17 celeron55 that's really what is going on 08:18 hmmmm somebody out there polished it up into a proper library 08:18 hmmmm they must've been sooo proud of themselves too 08:18 celeron55 do you realize apache has quite a lot of projects that they use these base libraries for? 08:18 nrzkt est31: yes tomcat is java but you can remplace some JAVA connectors like BIO to NIO and better libAPR, then your tomcat can handle massive connections. It's why we have tested and designed our tomcat for industry in production at work 08:18 celeron55 those are not some one-off things 08:19 celeron55 i'm not saying any of apache's things suit minetest though 08:20 nrzkt celeron55, i didn't say it, but i said libapr is a very good library which has some age and which has been improved over time and which is now on 80% world wide web servers :p 08:23 est31 I mean e.g. you have a variable flt, and its a float 08:23 est31 then you want to get its value, and set it to 0 the same time 08:23 est31 so that when another thread does that operation, it gets either 0, or the value if its faster 08:24 est31 but no way your thread and the other thread both believe they have got the content of flt 08:24 celeron55 there's no instruction for doing that atomically in x86 08:24 gregorycu huh? 08:24 est31 I need that to adjust integer conversion skew 08:25 est31 thats why the environment has m_time_counter 08:25 gregorycu Compare and swap? 08:25 gregorycu What am I missing 08:25 celeron55 ...or is there 08:25 est31 Compare and swap would work but I'd need a while loop for it 08:25 celeron55 does that work for floats? if it does and exist on other platforms too, then it should be possible 8) 08:25 gregorycu cas loop 08:26 gregorycu It's a thing 08:26 est31 and we have no cas just yet 08:26 est31 our atomic abstraction layer just simply doesnt have it 08:27 celeron55 it's not exactly hard to add it there 08:28 celeron55 they are just wrappers to GCC builtin functions 08:33 est31 man I really dont want to mess with that code 08:34 est31 I could, but in two weeks SN will come along and think my implementation is "too complicated" 08:34 est31 and will propose a "cleanup" 08:34 gregorycu Are you a scaredy cat? 08:34 est31 which will replace my code with a hacked together improper implementation 08:34 hmmmm "AreaStore, fixed! ShadowNinja style ;-)!" 08:35 celeron55 i wouldn't be afraid of ShadowNinja 08:35 hmmmm "Logging, cleaned up!" 08:35 est31 "don't care about clock skew anding with 0 is ugly" 08:35 hmmmm "Threading, cleaned up!" 08:35 est31 it IS ugly but thats the best way to do it in my eyes 08:36 hmmmm "I added 3x as many preprocessor if statements." 08:36 hmmmm "I also underscored all of the variables." 08:36 hmmmm "It is much better this way." 08:36 celeron55 we should be more afraid of hmmmm than ShadowNinja now that hmmmm decided that quality is everything that matters 8) 08:38 * est31 afraid of nobody, not even the enderman, whoever the enderman is. I know the enderman isnt real! 08:38 est31 gotta go bbiab 08:56 celeron55 hmm 08:56 celeron55 this is kind of hard to design 08:56 celeron55 i need to decide where the distant map rendering data and functionality will go 08:57 celeron55 well i guess it can just live inside Client like pretty much absolutely everything else 08:59 gregorycu What is distant map rendering data? 10:07 gregorycu Hooray \o/ he is back 10:07 est31 okay eliminated all issues, except one. 10:09 est31 celeron55, I'd think the server should do it, just like the lighting. It has the map. 10:13 est31 otherwise the client has to download the whole map in raw form 10:13 est31 including all the stuff it doesn't need like the metadata 10:14 est31 (metadata arent needed for drawing objects far away, right??) 10:14 est31 the server can probably do it like with lighting, and update the "far away info" like the lighting, when the map changes 10:14 est31 would be how I'd do it 10:15 est31 lol I said "like with lighting" too often 10:20 gregorycu You really love lighting 10:22 est31 light is the sun of my life. 10:23 gregorycu I have no idea what I'm doing 10:23 gregorycu Frustum culling 10:26 est31 nrzkt, https://github.com/est31/minetest/commit/ef0a9b18607fc062f4310124a8b877231754c932 10:26 est31 but doesnt compile yet 10:26 est31 I'm the first to use Atomic, so I have to sort out the compilation bugs caused by it first lol 10:28 est31 so there is no real way around that race condition that commit adds 10:28 est31 other than back to locks 10:28 est31 or making the code that is under lock smaller 10:29 est31 ermm 10:29 est31 disregard that or making the code that is under lock smaller 10:30 est31 what I wanted to say is "You can add locks here and their scope will be smaller than before, and they will be needed for less methods, but you still will need locks" 10:31 nrzkt courage ! 11:23 est31 oh great, no atomic floats 11:23 est31 well, then we can forget it. 11:35 celeron55 est31: are you implying that the client can magically render the stuff without any code added to the client just if the server knows about the things? 11:35 est31 no 11:35 celeron55 i think you are kind of missing the point of what i'm doing 8) 11:35 est31 what do you want to do 11:35 celeron55 i want to add the code so that the client can render the things 11:36 celeron55 but don't worry, i'm already on my way 11:36 est31 but I wonder how it would work if the client requests blocks from the server and no further changes to the protocl 11:36 est31 protocol* 11:37 celeron55 i'm adding stuff to the protocol too 11:37 est31 what you add? 11:39 celeron55 well, it's probably going to be a message using which the client asks stuff from the server and a message where the server puts the answer 11:39 celeron55 this is not exactly rocket science to be honest 11:39 est31 and the answer will b in mapblocks? 11:39 est31 be* 11:40 rubenwardy Is this for a farmesh like system? 11:40 celeron55 in larger subdivisions of mapblocks than nodes, i'm thinking 11:40 rubenwardy Level of detail would be awesome 11:40 est31 how does the client know there is something, and not air for 2k? 11:40 celeron55 why are you asking so much 11:40 celeron55 it's like you wanted to do this instead 11:41 est31 no, do it, I shut up. 11:46 est31 your project, not mine. 14:33 est31 can sb review #3334 14:33 est31 https://github.com/minetest/minetest/pull/3334 14:33 * VanessaE pokes ShadowBot 14:34 est31 ShadowBot gone ShadowNinja gone why is all the shadow gone 14:34 ShadowBot est31: Error: You must be registered to use this command. If you are already registered, you must either identify (using the identify command) or add a hostmask matching your current hostmask (using the "hostmask add" command). 14:36 nrzkt ShadowBot, did you love est31 ? 14:37 VanessaE yesterday's network outage pissed her off :) 14:38 nrzkt her ? 14:38 nrzkt ShadowNinja is a woman ? :) 14:38 est31 no female bot 14:39 nrzkt oh, ShadowBot is a woman :p 14:39 nrzkt ShadowBot did you like Justin Bieber ? 14:39 nrzkt ShadowBot, doesn't like me :p 14:39 nrzkt est31, seems okay for me 14:39 VanessaE all bots are female, apparently. 14:40 est31 pushing then 14:43 nrzkt VanessaE, are you a bot ? :p 14:44 VanessaE nope 14:56 kahrl est31: I looked through the ncurses PR code a bit a didn't notice any more problems 14:56 kahrl est31: except perhaps it would be more performant to use addstr instead of printw in a few places 14:57 kahrl also perhaps addwstr to write wide strings directly instead of doing wide_to_utf8 first 14:58 kahrl but that might have bad side effects 15:19 est31 yea, better we use addstr 15:23 est31 do you +1 ? 15:28 est31 okay kahrl changed the printw to addstr 15:28 kahrl yes, although I think BlockMen (or someone else) should try building on windows again before it is merged 15:29 kahrl since the whole curses detection in cmake was changed 15:29 est31 ok 15:30 celeron55 lol 15:30 celeron55 the scene node id of ClientMap is statically set to 666 15:31 ADFENO Hi- .... :O 15:31 celeron55 this is clearly some of the first ever lines of code in minetest 15:34 ADFENO Well... Hi, does the development wiki has a translation templete or a special page one can use to create translations for other pages? Or does the wiki recognizes subpages with ISO language codes and inserts links to these subpages in the beginning of the parent page when such translation exists? 15:37 ADFENO I'm asking because I'm planning to translate some of the development wiki text on my free time every Tuesday. :D 15:41 ADFENO Hm.... I guess I'll have to create subpages for the time being. 15:44 celeron55 umm 15:44 celeron55 don't mess up it too much 15:44 celeron55 is there a difference between wiki.minetest.net and dev.minetest.net? 15:46 ADFENO I don't know since I don't visit wiki.minetest.net. I usually visit dev.minetest.net because a lot of mates of mine are into modding, although their mods are written in Brazillian Portuguese. 15:47 est31 dev. is both about coredev and moddev 15:47 est31 I guess coredev needs no translation, but moddev, why not. 15:48 ADFENO That's my first thought. :D 15:49 celeron55 let me investigate this a bit 15:53 celeron55 i wonder who actually knows how to set up the multilanguage stuff in mediawiki 15:53 ADFENO At first I was going to contribute to "the Brazilian Minetest community" (as one of my mates from there says) but then I thought: "Perhaps it's better to contribute to the Minetest communnity directly". 15:53 celeron55 for some reason wiki.minetest.net has it but dev.minetest.net does not, and i can't find a difference in configuration regarding to that 15:55 celeron55 Calinou? 15:55 celeron55 ShadowNinja? 15:55 ADFENO Perhaps we must investigate more on the languages tag "{{languages}}". :D 15:55 celeron55 pls help 15:55 celeron55 i tried adding that tag but it does nothing 15:55 celeron55 on this page http://dev.minetest.net/Modding_FAQ 15:57 celeron55 bleh 15:57 celeron55 well i am stuck until somebody who actually understands mediawiki comes up 15:57 kahrl I think you have to create http://dev.minetest.net/Template:Languages 15:57 celeron55 and then it magically works? why would it 15:58 celeron55 well i guess i'll copy it from wiki.minetest.net 15:58 kahrl well yeah, use the source from http://wiki.minetest.net/index.php?title=Template:Languages&action=edit 15:59 kahrl it uses a couple other templates too, looks like 16:00 ADFENO A-ha!.... 16:00 ADFENO It REALLY seems that you have to create the template. :D 16:01 ADFENO But that's OK... Now we have something to play with. :D 16:03 celeron55 okay looks like i added things for german as a test 16:03 celeron55 you need to make a version of this for your language http://dev.minetest.net/Template:Languages/de 16:03 ADFENO Oh right. :D 16:04 celeron55 then you can just add the stuff and create new pages in that language exactly like in wiki.minetest.net 16:05 celeron55 like this http://dev.minetest.net/Modding_FAQ/de 16:07 celeron55 looks like Calinou set up this system on wiki.minetest.net early this year 16:08 celeron55 i added {{Languages}} on the protected main page 16:08 ADFENO Hm... Just a minor bug (don't worry, I won't pick on anyone for this, :D) when viewing the English page, the templete equivalent to "Language" seems to be creating a link to some non-existing page. However, the equivalent on the German test page, is right as it displays "Sprache" (I don't speak German, but it seems to be "Language", and besides, the bug disappears there). :D 16:08 celeron55 i think i fixed that already 16:09 ADFENO Oh... He's quick :D 16:09 ADFENO Working fine now. :D 16:11 ADFENO Well... Another day, another progress. It was really interesting to help you on this. I'm sorry for not being able to translate a page right now, but my free time is now over. I'll try to be back next Tuesday. :D 16:12 ADFENO Bye. 19:13 kahrl Krock: I don't know much about how to customize the cmake gui 19:13 kahrl (I always use it from the command line) 19:14 kahrl one thing that should definitely be done though: https://gist.github.com/kahrl/5fbe9e56fd57778da833 19:15 est31 will apply 19:19 kahrl cmake-gui with advanced settings only shows CURSES_FORM_LIBRARY, CURSES_INCLUDE_PATH and CURSES_NCURSESW_LIBRARY here 19:19 kahrl and ENABLE_CURSES, of course 19:21 Krock kahrl, example: set(CURSES_NCURSESW_LIBRARY "" CACHE PATH "Path to file for ncurses library") 19:22 Krock A short description where the path goes to.. like it's done with other libraries. See also README 19:24 kahrl ugh, I hate how cmake has no manpage anymore 19:26 est31 rly? still has it, for me. 19:26 est31 man these guys got an exception 19:26 est31 "August 24, 2015" 19:26 kahrl No manual entry for cmake 19:26 est31 seems they got the new version in after the window closed for 15.10... 19:26 kahrl you have to type something like: cmake --help-manual cmake|less 19:27 est31 wtf 19:27 est31 well still better than GNU info lol 19:27 kahrl heh yeah 19:29 kahrl hrmm, could be a bug with gentoo's ebuild for cmake 19:29 kahrl or it only installs with the doc useflag 19:29 kahrl oh well 19:40 kahrl yeah, looks like it was gentoo. moving on... 19:41 est31 I've thought you've installed arch? 19:43 kahrl yeah but a botnet took that machine over 19:43 est31 lol 19:44 est31 and they installed gentoo right? 19:44 kahrl yep 19:44 est31 yea probably a wise choice. 19:45 kahrl heh 19:45 est31 :) 19:45 est31 well, if you have such an event, there really isn't much fun about it. 19:46 est31 I mean for pokemon you can say "but I want to do it this way" or that way etc 19:46 est31 but with arch there are tons of guides out there how to install 19:47 kahrl well, you have the choice between parted, fdisk, cfdisk, sfdisk, ... 19:47 kahrl sfdisk would have been fun 19:50 kahrl also that tug of war between the noppers and the ctrl-c-ers while it was installing packages was pretty fun 19:50 est31 lol 20:14 kahrl dang there goes Krock :P 20:15 kahrl anyway: est31: here's a few additional DOCs: https://gist.github.com/kahrl/e6c67a01bc45089509ad 20:15 kahrl I don't think I can add DOCs for the variables that are set by FindCurses.cmake, unfortunately 20:19 est31 ncurses commit has 1227 insertions 20:19 est31 why cant it be 110 more :) 20:19 * est31 adds lots of newlines to group code 20:19 est31 lol jk 20:25 est31 I really should take some time to read this http://en.cppreference.com/w/cpp/language/implicit_cast 20:25 est31 but not today 20:25 est31 bye I'm gone 20:42 paramat nore PilzAdam sfan5 any comments on game#718 ? 20:42 paramat https://github.com/minetest/minetest_game/pull/718 20:43 PilzAdam why is snow so close to desserts? 20:43 PilzAdam also, won't this break existing worlds? 20:44 paramat unfortunately that's unavoidable when world is equally split into frozen, temperate and tropical 20:45 paramat remember this map has shrunk biomes 20:45 paramat this is for the biome api only, not mgv6 20:45 paramat so mgv5/v7/fractal/flat 20:46 PilzAdam there are existing worlds with these mapgens, since it's selectable from the GUI 20:46 paramat mgv6 has the same division of snow, temperate and tropical biomes 20:47 paramat yes but the biome api, it's biomes, and mgv5/v7 are all unstable 20:47 PilzAdam there is nothing in the GUI that indicates this 20:48 paramat we could add notes 20:50 PilzAdam I guess the PR is good; the GUI thing was a mistake in the past 20:52 paramat when world area is equally divided into 3 by noise, the extremes of noise tend to form blobs and the mid-values tend to form a web inbetween the blobs, the web appears thin in places of transition between frozen and tropical blobs 20:53 paramat however the thresholds, octaves and persistence are all identical to mgv6 so it's consistent 20:55 paramat reducing persistence to 0.4 might help though, less small-scale variation 20:56 paramat maybe i'll do another map with 0.4 to test 20:57 paramat thanks 21:03 paramat yeah they do get too close together, we may have to use 0.4, i'll test and post a map for consideration 21:34 paramat hmmmm while i remember, we need a way to copy an .mts schematic into the luavoxelmanipulator (without the lighting update). browsing the forums i'm seeing a lot of modders using 'place schematic' during mapgen, sometimes multiple times, which is slow and causes lighting bugs 23:11 gregorycu So, pretty much gave up on the frustum stuff last night 23:12 gregorycu It left me too frustrumurated 23:12 gregorycu See what I did there