Time Nick Message 00:25 hmmmm :\ 00:25 hmmmm I'm about to push the mapgen.cpp split 00:33 VanessaE there was consensus? 00:43 hmmmm nope 00:43 hmmmm that's why 00:44 VanessaE [11-01 13:23] I won't push this to upstream until I get 3 approvals 00:44 VanessaE um... 00:45 hmmmm i just realized how tough that's going to be when it's already been how many hours and nobody did so much as look at it 00:45 VanessaE um... 00:46 hmmmm um... 00:46 VanessaE isn't that EXACTLY what happens with every other damn pull request for this engine? 00:46 hmmmm yeah. 00:46 VanessaE so, no. 00:46 hmmmm this policy of having multiple people review things would work if devs were full time 00:46 hmmmm but this is open source land 00:47 VanessaE so put it in a pull request. 00:47 hmmmm ... 00:47 hmmmm I'm going to merge it just to piss you off 00:47 VanessaE you won't piss me off.. 00:47 VanessaE but you get to be the one that fields all of MegaF's crash reports ;) 00:48 hmmmm meh 00:49 hmmmm it's a development build 00:49 hmmmm what did you expect, i mean 00:49 VanessaE I didn't expect any different - if shit breaks, I get that. 00:50 VanessaE just reminded you of your previous comment is all. 00:50 VanessaE you know, a "good enough for the goose" sorta thing. 00:50 hmmmm i am cognizant of that 00:53 RealBadAngel hmmmm, +1 00:57 RealBadAngel good to see something is goin on with mapgens 00:57 RealBadAngel i just wish you will use lsystem trees one day ;) 00:58 hmmmm i plan on going back and implementing the generation component types that aren't implemented 00:58 hmmmm e.g. DECO_LSYSTEM, ORE_CLAYLIKE (renaming that to ORE_BLOB) 00:59 RealBadAngel i noticed DECO_LSYSTEM but it was empty ;) 00:59 hmmmm i hope i can get mapgen to a happy enough place so i can work on things that really need work 00:59 hmmmm like i need to stop talking and start doing about the hardware lighting 00:59 hmmmm i have a great idea of how to accomplish that already 01:00 RealBadAngel go on 01:00 hmmmm well I already told you that I generate the lightmaps alongside the meshes 01:01 hmmmm the idea is to separate the light from the node 01:02 hmmmm each time the client receives a block with light sources it gets added to a map of light sources 01:02 hmmmm whenever the client renders something that would be influenced by (in the range of) that light source, it gets calculated and added to the lightmap while rendering the mesh 01:03 hmmmm i haven't figured out how to do sunlight yet though 01:03 hmmmm probably global illumination 01:03 RealBadAngel imho sunlight is most easy to do 01:04 hmmmm it would have to be separate from this 01:04 VanessaE hmmmm: what about zeno's refactor_the_game ? 01:04 RealBadAngel i tried adding light source up above the player with big radius 01:04 VanessaE why is it still being left to rot? 01:04 hmmmm VanessaE, i don't know 01:04 RealBadAngel it works quite good 01:04 hmmmm RealBadAngel I saw that 01:04 hmmmm it made the sand look fake though 01:05 Zeno` Oh yeah 01:05 Zeno` Did you get a chance to test it RBA? 01:05 hmmmm isn't there some sort of tiledef specular setting that you could change? 01:05 RealBadAngel maybe some tweaks will do the trick 01:06 RealBadAngel speculars are kinda fake right now 01:06 RealBadAngel there are no specular maps 01:06 RealBadAngel thats why it may look a bit weird 01:06 hmmmm yeah 01:06 hmmmm no kidding. 01:06 RealBadAngel Zeno`, it works 01:06 hmmmm well we'll cross that bridge when we get to it 01:07 hmmmm man I can't imagine how many cool things we'll be able to do with 8 more bits of mapnode 01:07 RealBadAngel jeeez 01:07 Zeno` compiles, works, merge! :D 01:07 RealBadAngel a lot 01:07 VanessaE hmmmm: I thought you were against adding more data to the map? 01:07 hmmmm VanessaE, not adding more 01:08 RealBadAngel we are going to set 8 bits free :) 01:08 hmmmm param1's purpose will change after lighting stops being fake 01:08 VanessaE hm, ok 01:08 hmmmm also 01:08 VanessaE didn't think of it from that standpoint 01:08 hmmmm the lightmap method supports colors 01:08 hmmmm so woohoo colored lighting 01:09 Zeno` can param1, 2 and 3 be split out from Node as well? 01:09 hmmmm huh 01:09 Zeno` They current a member of Node (or NodeDef... whatever it's called), so can't do fast memcpy() etc 01:10 * hmmmm scratches head 01:10 Zeno` have to iterate over them all to get the data into vmanip 01:10 hmmmm you can most definitely memcpy mapnodes as they are POD 01:10 hmmmm in fact we do that already for certain vmanip things 01:11 Zeno` But you don't use the whole node in the voxel manip stuff (do you?) 01:11 hmmmm the whole node is there 01:11 hmmmm you almost never set anything aside from the content though 01:11 Zeno` I'll look at it again so I can explain it better (it was a few months ago I was looking at it) 01:12 RealBadAngel Zeno`, i think that game stuff should be merged, if there will be problems, more testers of dev version will find them 01:12 hmmmm yeah let's merge it 01:12 Zeno` ok :) 01:13 RealBadAngel shall i do that? 01:13 hmmmm sure 01:13 RealBadAngel ok 01:13 Zeno` thanks 01:13 * kaeza throws #1770 at RealBadAngel 01:13 ShadowBot https://github.com/minetest/minetest/issues/1770 -- Remove wield item camera clipping. 01:15 kahrl ugh, why does github decide for me if I want to see the game.cpp changes when I look at #1756 01:15 ShadowBot https://github.com/minetest/minetest/issues/1756 -- Refactor the game by Zeno- 01:16 Zeno` Because it's scared? 01:17 Zeno` RBA there are two commits, can they be left as 2? Because the one I added yesterday has not been tested for 3 weeks like the other ones (that I squash upon request) 01:17 hmmmm bit of a personal preference but 01:17 hmmmm i haaaaate the term 'app' 01:17 Zeno` hmmmm, I do as well 01:17 hmmmm could you change it to Game? 01:17 hmmmm MinetestGame? 01:17 hmmmm or just Game? 01:17 Zeno` hmmmm, it was client at first but that was confusing 01:18 Zeno` Game... yeah 01:18 hmmmm thank you 01:18 Zeno` Which means I have to squash. Can you take a quick look at the second commit? 01:18 hmmmm yea 01:19 Zeno` and I'll squash the second commit (still leave as two commits) 01:19 kahrl Zeno`: could boolToCStr be moved to util/string.h? 01:19 Zeno` kahrl, it must be at some point, but I was trying to minimise the number of files I touched 01:20 hmmmm shouldn't FpsControl *params be called FpsControl *fps or something? 01:20 Zeno` yep, updating 01:21 hmmmm i'm not entirely sure what setting dtime to 0.03 on overflow in practice 01:21 hmmmm isn't there already a TimeDiff-type function? 01:21 hmmmm i'm not entirely sure what setting dtime to 0.03 on overflow in practice will do* 01:22 Zeno` in the original code it was simply set to 0, but I noticed that setting it to 0 caused a freeze when I forced an overflow when testing 01:23 kahrl can't you just calculate (time - last_time) / 1000.0 regardless of overflow 01:23 hmmmm the overflow case is if the counter looped around 01:24 hmmmm if you have some negative time then.. 01:24 Zeno` yes and then would sleep a very long time 01:24 Zeno` it's unsigned so it will be very large rather than -ve 01:25 kahrl so e.g. last_time = 2**32 - 1, time = 50 01:25 kahrl then (time - last_time) would be 51 01:25 kahrl not very large 01:25 Zeno` I guess it's not huge 01:26 Zeno` hmm 01:26 Zeno` ok, I've done the renaming 01:26 Zeno` now ... 01:27 Zeno` Maybe I could just put 0 like the original code? 01:27 Zeno` no 01:27 Zeno` setting dtime to 0 pauses things 01:28 kahrl then I guess put a *dtime = MYMAX(*dtime, 1) at the end of limitFps 01:29 kahrl er 01:29 Zeno` yeah it wasn't to do with FPS (I remember now) it was more client->step(*dtime); 01:29 kahrl thought it was in milliseconds, should be MYMAX(*dtime, 0.001) 01:29 Zeno` and if singleplayer server->step(*dtime); 01:29 Zeno` and things went mental 01:30 RealBadAngel kahrl, btw any progress with extruded mesh code? 01:30 Zeno` I can make it .001 if that seems safer 01:31 kahrl RealBadAngel: not really 01:31 RealBadAngel you mentioned youre about to rewrite it? 01:31 kahrl RealBadAngel: yes 01:32 RealBadAngel so, what are you waitin for? xmas? ;) 01:32 kahrl the problem I'm having is that I want different ContentFeatures (actually their ClientCached) to share the wield mesh, but I can't because the materials are different 01:32 Zeno` just add *dtime = 0.03 (take away the conditionals) and also 0.001 and you can see the difference heh 01:33 kahrl so either getWieldMesh's return value is only valid until someone else calls getWieldMesh() (problematic), every caller would have to handle the material issue or I need to abstract wield mesh rendering into a scene node or something like that 01:33 RealBadAngel imho separate scene node 01:34 kahrl yeah, that's the way I'd have gone with 01:34 RealBadAngel im going to make the same with highlighted and cracked one 01:35 RealBadAngel so pointing something (or punching) wont require block updates 01:39 kahrl would it make sense to get rid of the wieldmesh in ClientCached and, in the new scene node, just take mesh_ptr[0] when rendering a node's wield mesh? 01:39 kahrl scaled appropriately of course 01:40 kahrl guess that won't work with drawtypes that aren't normal, nodebox or mesh 01:40 RealBadAngel but only static ones have that ptr 01:41 RealBadAngel nodeboxes and meshes 01:41 kahrl yeah, I mean rendering NDT_NORMAL is trivial 01:41 kahrl and for nodebox and mesh, mesh_ptr[0] can be used 01:42 RealBadAngel when its aviable just use it 01:42 RealBadAngel it will be faster 01:43 RealBadAngel ptr[0] is useable for inv and wielded 01:44 RealBadAngel ive changed lately inv mesh code for wallmounted, so theres no need to supply the inv image for wallmounted nodes anymore 01:46 kahrl I guess allfaces, torchlike and signlike could all be converted to mesh on startup 01:47 kahrl plantlike too 01:47 RealBadAngel allfaces yes, plantlike too 01:47 RealBadAngel torchlike.... we need 3d models for torches 01:48 kahrl 3d torches would be a different drawtype 01:48 RealBadAngel signlike shall be added ability to write the text 01:48 VanessaE not signlike. 01:48 VanessaE ANY node 01:49 VanessaE see #1367 01:49 ShadowBot https://github.com/minetest/minetest/issues/1367 -- Proper display of text on the surface of a node(box) 01:49 RealBadAngel text means a texture generated runtime 01:49 RealBadAngel adding that to ANY node will kill any engine 01:50 RealBadAngel but apart from that model can be cached 01:50 RealBadAngel it doesnt matter at all 01:53 kahrl how much memory would it cost? 01:54 kahrl (assuming no sharing of meshes between different nodedefs) 01:54 RealBadAngel in case of dreambuilder all meshes takes circa 0.5 gb 01:55 RealBadAngel that means all nodeboxes too 01:55 RealBadAngel but note that we do count there an anomaly: wires 01:56 RealBadAngel 64 defined nodes multiplied by 24 01:56 RealBadAngel of several kinds 01:56 RealBadAngel also the tubes 01:57 RealBadAngel those screams out loud for specialized drawtype 02:00 RealBadAngel but anyway payin that 0.5gb is a good deal 02:00 RealBadAngel mapblock mesh updates are way smoother 02:04 RealBadAngel in case of minetest_game cost is next to nothing, unnoticeable 02:06 kahrl I think caching allfaces nodes would be quite nice for performance in heavily forested areas 02:14 RealBadAngel kahrl, i will try it 02:21 hmmmm hrmm 02:22 hmmmm remember how I advocated against m_ prefixes for member variables 02:22 hmmmm sorta going back on that now, i think it should be there at least for private members 03:04 Zeno` I like it for private members 03:29 hmmmm but the thing is, i almost never use private members 03:30 hmmmm i don't like the concept of enforced access, i think it should be a hint at best. the programmer is assumed to be responsible and use it appropriately - if they wanted to create bugs, there are plenty of other opportunities to do so 03:41 RealBadAngel https://github.com/minetest/minetest/commit/d221917170c2bb43c66e5e09f2a43350cf28d71b 03:41 RealBadAngel see what i had to do to get smgr 03:41 RealBadAngel and rethink that 03:42 RealBadAngel *that* is sick 03:44 RealBadAngel instead of getting a member directly , creating dummy server side functions to get shit compiled 03:44 RealBadAngel if thats normal, shoot me 03:46 kahrl why the hell does one need a ISceneManager anyway to get an IMeshManipulator 03:46 kahrl an* 03:46 kahrl it makes no sense 03:47 RealBadAngel if theres any other way i would like to know it 03:48 kahrl I'd say this isn't minetest's fault but irrlicht's 03:52 hmmmm I wonder if I'm going to break anybody's mods by changing the biome ID from a sequential array index to an opaque handle that needs to get decoded 03:52 kahrl RealBadAngel: what prevented you from passing the scene manager to updateTextures, btw? 03:52 RealBadAngel propably thats why we copy mesh primitive functions instead of using engine ones 03:53 RealBadAngel kahrl, we had gamedef passed there 03:53 RealBadAngel *have 03:53 kahrl so? 03:53 RealBadAngel it should be enough 03:53 kahrl 640k should be enough :P 03:53 RealBadAngel rotfl 03:54 RealBadAngel i will change that 03:55 RealBadAngel gamedef should carry smgr 03:56 RealBadAngel and those dummy server side calls to get texture, shader etc shall be removed 03:56 RealBadAngel its way more than just confusing 03:58 kahrl > Segmentation fault 03:58 kahrl guess the wield mesh scene node needs some more work 03:59 RealBadAngel backtrace? 03:59 kahrl oh, found it 03:59 kahrl just a stupid mistake, missed a negation 03:59 RealBadAngel me or u? 04:00 kahrl me 04:01 RealBadAngel good to hear im not the only source of bugs ;) 04:14 hmmmm hmm 04:14 hmmmm probably a stupid question, but: is there a type for a "generic" iterator? 04:59 kahrl hmmmm: auto :P 05:13 hmmmm :/ 05:19 Zeno` auto not good :( 05:19 Zeno` I drive manual car 06:21 Zeno` can #1776 be merged? The whole reason my bug slipped through the other day was because I disable unit tests constantly because of that ipv6 failure 06:22 ShadowBot https://github.com/minetest/minetest/issues/1776 -- Clean up code style of sockets and fix unit tests failing if IPv6 not available by Zeno- 06:23 Zeno` The most important part of the change is https://github.com/Zeno-/minetest/commit/31fb4a8abed79f32accbd9d3c8cf5399aae12950#diff-521e0711bdefd4d33b5ef108ee1baf2fR1518 06:24 Zeno` and the new init() function to allow that change 06:25 Zeno` init() simply moved stuff out of the ctor into its own function 06:54 hmmmm wait, why are you omitting parentheses around sizeof? 06:57 Zeno` same reason as I omit them around return :( 06:58 Zeno` parenthesis confuse me 06:58 Zeno` clutter 06:58 Zeno` I guess I should put them back since you're the second person to ask that :/ 06:58 hmmmm the code style is to have parentheses around sizeof as if it were a function 06:58 Zeno` ok I didn't know that was part of the code style 06:58 Zeno` I'll put them back 06:59 Zeno` should it be sizeof(x) or sizeof (x)? 06:59 hmmmm sizeof(x) 06:59 hmmmm also, what's with https://github.com/Zeno-/minetest/commit/31fb4a8abed79f32accbd9d3c8cf5399aae12950#diff-d999b22f05a7d6687dee3151d4552f0aL453 ? 06:59 hmmmm why add the extra < 10 year sold 19:32 Calinou mailing lists are a troll paradise too 19:32 Calinou they're hard as hell to browse, unuser friendly 19:32 Calinou we have forums for a reason 19:32 Calinou which killed mailing lists 19:32 Calinou and doesn't spam your e-mail inbox or has anti-spam issues all the time 19:35 kilbith "forums" and mailing lists have always existed simultaneously, Calinou 19:36 kilbith me, at least, i used internet during the 90s ;) 19:37 paramat hmmmm, where in core mapgen code is perlinmap edge lengths set? can't find it. my method for fixing discontinuities at mapchunk borders is to use a perlinmap that extends 1+ nodes beyond the mapchunk 19:37 PenguinDad I wasn't even alive in the 90s :D 19:38 kahrl and already a dad? :O 19:38 Calinou the dad of a penguin 19:39 hmmmm huuh 19:39 hmmmm the dimensions of the perlin noise map buffer? 19:39 hmmmm you set those in the constructor 19:39 hmmmm you can change them any time after creation with Noise::setSize() 19:39 kahrl I do appreciate when a project has an -announce mailing list (e.g. I'm on the mediawiki-announce list so I know when to update) but other than that I don't use them 19:39 paramat oh okay, must have missed that 19:41 PenguinDad kahrl: penguins have a shorter lifespan than humans :P 19:43 paramat i guess the 'constructor' is 'MapgenV7::MapgenV7(int mapgenid, MapgenParams *params, EmergeManager *emerge)' and the line i missed was 'this->csize = v3s16(1, 1, 1) * params->chunksize * MAP_BLOCKSIZE;'. okay thanks! 19:43 hmmmm I mean you pass the dimensions to the Noise cto 19:43 hmmmm ctor 19:44 hmmmm it just so happens that you create the noise objects in the mapgen ctor as well 19:45 paramat okay 19:53 jin_xi +1 for mailing list. Its a tool for developers, forum is for different conversations 20:12 kahrl since the the_game refactoring, Camera::wield is called every frame 20:12 kahrl that's because update_wielded_item_trigger is now set to true every frame 20:13 hmmmm whoops 20:13 hmmmm that's not a performance hit or anything 20:21 kahrl seems Camera::wield is fast enough that it doesn't have any huge effect 20:21 kahrl but then we could just get rid of update_wielded_item_trigger 20:35 hmmmm reminds me of that Sony PS2 optimization guide that's pretty helpful for all game development 20:36 hmmmm some things you think are 'optimizations', such as caching some calculation, turns out to actually be much slower overall due to cache misses and all that 20:36 hmmmm crap you won't find without a profiler 20:36 hmmmm i'm not saying Camera::wield() is fast enough to be called without caching since i never even looked at that function, i'm just saying it's possible. 20:43 celeron55 it's not surprising that understanding the computer architecture that we are using is required for making optimal stuff for it :P 20:45 hmmmm it's impossible to understand the architecture we're using. it's too complex 20:45 hmmmm experimentation seems to be the way to go 20:46 celeron55 it seems like almost nothing else matters than the main memory cache 20:46 celeron55 it makes such a large difference 20:47 celeron55 so, the first rule of programming for anything more complex than a 8-bit MCU with static RAM is to make sure you aren't randomly accessing the RAM 20:47 celeron55 which is, let's say, somewhat ironic 20:47 celeron55 but anyway 8) 20:50 hmmmm :/ 20:50 hmmmm never mind optimizing 20:50 hmmmm i need to focus on designing how this api is going to work 20:51 kahrl huh, the mouse wheel no longer lets you scroll from the last hotbar item to the first 20:53 kahrl was also introduced with the the_game refactoring 20:55 kahrl https://gist.github.com/kahrl/c416594c2e20841e93f4 pushing in a few minutes 20:56 hmmmm what about the camera wield 20:57 kahrl hmmmm: will fix that together with introducing the WieldMeshSceneNode 20:57 hmmmm ahh 20:57 kahrl well, "fix" meaning Camera::wield will be even faster when item doesn't change 20:57 hmmmm lol people on #minetest are crying about how mapgen v7 doesn't 'have' anything aside from stone 20:57 kahrl heh 20:57 hmmmm i had it hidden from the settings menu 20:57 hmmmm but people used it anyway 21:59 Megaf_ [18:07:23] any takers? 21:59 Megaf_ we could talk to Zeno about that 21:59 Megaf_ he is already improving minetest a lot 22:01 Megaf_ anyway, a good reply to that email could be: "Feel free to fork our project, read the code and help us fix our issues."