Time Nick Message 00:49 Exio that with a hunger game 00:49 Exio s/game/mod 01:25 khonkhortisan canyons, rivers, lakes, mountains, caves with rivers, islands/ocean as opposed to lakes, all these we should have 01:36 Exio there are ravines 01:37 NakedFury we also need ravines or fissures or rifts that lead very deep underground 01:51 hmmmm the ravines aren't as long as i thought they'd be so i'm thinking maybe i should do it like minecraft does 01:51 VanessaE how's tht? 01:51 VanessaE that* 01:52 hmmmm a random walk 01:52 VanessaE actually that's how I'd do it. 01:52 VanessaE if you're thinking like I am anyway. 01:54 VanessaE plot line between two points, random walk along that line twice, then erase everything between the two walked paths. 01:54 VanessaE perlin noise or something similar to set the floor elevation. 01:56 hmmmm how would you randomly walk along a line? 01:57 hmmmm agh, looks like l_register_biome_groups() is back since the scriptapi split... i should check so that it isn't using an outdated version of l_register_biome() 01:57 VanessaE start from point "A", pick a random number between -45 and +45, walk say 2-3 nodes in that direction, relative to the line. Repeat until you get to the end of the line. 01:57 VanessaE that way your path always follows the line but looks quite natural in width 01:58 hmmmm ah 01:58 hmmmm yeah, that's probably better than totally random 01:59 VanessaE in theory, longer runs of nodes between random numbers would be faster, at the expense of smoothness. 02:00 VanessaE hm, you'll need two layers of perlin to sculpt the inside of the chasm - one for the floor elevation, and another to manage the vertical tapering of the walls 02:00 VanessaE (so you have outcroppings, etc) 02:03 VanessaE you might want to also consider a "lightning bolt" algorithm to get the initial line along which to walk 02:04 hmmmm hmm 02:04 VanessaE (which would probably just be another path, but with a narrower degree range) 02:04 hmmmm lightning bolt would also be useful for rivers 02:04 VanessaE *nod* 02:04 VanessaE (..with a narrower degree range and a much longer step between turns, say 20 nodes or so) 02:05 hmmmm sorta wondering if i should commit the simple decoration type without the cutoff handling 02:05 hmmmm and i'll add that in a later commit 02:06 VanessaE probably couldn't hurt - it's not like v7 is ready for general use yet anyway 02:06 VanessaE so you don't need to worry too much about breaking maps yet :) 02:15 hmmmm hrmmm 02:15 hmmmm my new plan makes a dent in the code i already had 02:15 hmmmm can't believe i wrote all this without realizing that it wouldn't work 02:19 sweetbomber hello guys 02:20 sweetbomber hmmmm: do you have any experimental structure-generation code? so that i can skip that part on my algorithm? 02:21 hmmmm erm, not yet 02:21 hmmmm that's what i'm continuing on actually 02:21 sweetbomber by structure generation, i mean the part that defines the structure itself 02:21 hmmmm i haven't done minetest anything for a while 02:21 hmmmm err, http://pastebin.com/J96s5dPQ 02:21 sweetbomber what do you have in mind to define complex structures ? C++ or lua? 02:21 hmmmm this 02:22 hmmmm the lua api for this, you just pass the filename of the schematic 02:23 hmmmm to create the schematic file, i'm thinking that i should have a command in minetest to do this; mark two points, then save it, mask out certain kinds of nodes for having different probabilities or whatever 02:23 sweetbomber ok, so i have freedom to create the structure model from scratch 02:24 sweetbomber do you mind if i redesign it? 02:24 hmmmm kinda yes 02:24 sweetbomber ok, just another thing 02:24 hmmmm there are specific reasons for everything in there 02:24 sweetbomber just installed an IDE 02:24 sweetbomber (i only used terminal and vim so far till now) 02:24 hmmmm from what i understand, you want to be able to paste certain parts of the structure together 02:25 sweetbomber (qt-creator, quite impressive IDE. if you havent tried, i recommend giving a try) 02:25 hmmmm if you want to do that, then i guess it could be in the probability field 02:25 sweetbomber (and quite light, 60mb) 02:25 hmmmm add a flag on the highest bit 02:25 hmmmm or something 02:26 hmmmm i use codeblocks which is pretty good 02:26 sweetbomber im thinking of an hierarchy 02:26 hmmmm you see, the thing is 02:27 hmmmm this schematic format was made for things that don't have multiple segments 02:27 hmmmm sure, it's pretty static.... 02:27 hmmmm but it's what works for things such as trees 02:28 kahrl there should probably be two lua APIs for this, one in the environment and another for voxelmanipulators 02:29 hmmmm sweetbomber, if your variation of the schematic format is significantly different (which i think it might be) don't forget that we can just add it as a separate decoration type 02:30 hmmmm i don't think it'd be a good idea to have one format that tries to do it all and ends up not being so simple and lightweight anymore 02:30 sweetbomber i think that the best way to make structure scripting more efficient would be the following: lua registers structures (like is doing with biomes) and then is no longer executed 02:30 sweetbomber ill make an efficient algorightm 02:30 sweetbomber btw, regarding efficiency 02:30 sweetbomber i profiled minetest 02:30 sweetbomber and found out a cancer 02:30 hmmmm that is how decoration registration is done anyway, yes... 02:31 hmmmm what is it, find_nodes_in_area()? 02:31 sweetbomber why is getTextureId using strings? 02:31 sweetbomber it consumes about all cpu 02:31 hmmmm really? 02:31 sweetbomber (ok, not so much, but a really lot!) 02:32 sweetbomber the number of calls to strcmp is astonishing 02:32 hmmmm yeah, if it were up to me, that'd be a hashtable 02:33 kahrl doesn't it use a std::map? 02:34 kahrl so that's a logarithmic number of strcmp calls 02:34 sweetbomber yes it does 02:35 hmmmm logarithmic is still a lot when you have like 500 textures, and it's being called like every millisecond 02:35 kahrl is it? 02:35 hmmmm well 02:35 kahrl ah, for the animated textures I guess 02:35 hmmmm it's clearly enough to make it stand out from a profiler's perspective 02:35 kahrl and the hotbar and inventory images 02:35 sweetbomber i think that the textures must be all loaded at the start 02:35 kahrl sweetbomber: of course they are 02:36 sweetbomber i mean, the "string parsing" part 02:36 sweetbomber it is too human friendly in a section that requires performance 02:36 hmmmm the slowness of string parsing is downplayed throughout minetest 02:36 hmmmm it's like that for settings as well 02:37 sweetbomber anyway, i confess my profiling was quite superficial 02:37 sweetbomber ill try it with a game 02:37 VanessaE 500 textures? pfft. try 4000+ :D 02:37 sweetbomber like vanessa's 02:37 sweetbomber which has loads of stuff to try 02:38 Exio 4000? you missed some blocks have more than one textures 02:38 Exio s/s$// 02:38 Exio i would say "6000+" 02:38 Exio :P 02:39 VanessaE Exio: I was counting just what's in HDX. my game has 3319 textures. 02:39 Exio ah 02:41 sweetbomber im reprofiling it now 02:43 VanessaE hmmmm: are you sure that all of the textures are being walked through at that rate? That can't be right... 02:44 hmmmm huh? 02:44 VanessaE [06-13 22:35] logarithmic is still a lot when you have like 500 textures, and it's being called like every millisecond 02:44 VanessaE am I reading that wrong? 02:44 hmmmm oh definitely 02:44 hmmmm getTextureSource is used constantly in the main game loop 02:44 VanessaE eek 02:45 VanessaE and it's doing a bunch of str comparisons for each file!? 02:45 VanessaE s/file/image/ 02:46 hmmmm haha you seem to think minetest is efficient or something 02:46 VanessaE that's... 02:46 VanessaE um... *head explodes* 03:11 sweetbomber definitely..that function is a cancer 03:12 sweetbomber in 5 min gameplay, it was called a few billion times 03:12 sweetbomber (american billion) 03:12 VanessaE is that while running my game? 03:12 sweetbomber no, i re-profiled with minimal 03:12 VanessaE shit on a shingle 03:13 sweetbomber (it is really slow to profile) 03:15 VanessaE dare I ask you to profile my game? 03:18 sweetbomber no prob 03:20 khonkhortisan How can I get in on the profiling bandwagon? 03:21 sweetbomber im using valgrind 03:21 khonkhortisan I didn't know that profiled 03:21 sweetbomber (linux) 03:25 khonkhortisan I always used the default memcheck 03:25 sweetbomber lol, my pc is starting to melt...the game is taking a lot to start with the profiler on :p 03:25 VanessaE lol 03:26 sweetbomber i guess ill leave it on overnight 03:26 sweetbomber to make this startup time negligible 03:27 sweetbomber otherwise it will be biased by loading-time functions 03:27 sweetbomber tomorrow ill post the results 03:28 sweetbomber omg, still on "media" loading phase 03:28 Exio sweetbomber: what cpu do you have? 03:29 sweetbomber not sure about the mode, let me check on my laptop's specs 03:29 sweetbomber *model 03:29 sweetbomber but its a 2.4ghz dualcore 64bit 03:29 VanessaE hmmmm: I just did an interesting test, 60 fps (166k verticies) at a view range of 50, with that same map, but *no mods* (not even default) such that everything everywhere is unknown node. 03:30 VanessaE 256px texture(s; not like it's using more than the one) 03:31 Exio sweetbomber: what is the time compiling mt from scratch? :P 03:32 sweetbomber not much 03:32 sweetbomber cant be very precise 03:32 sweetbomber i can stop profiling to measure 03:32 khonkhortisan skill -STOP 03:33 khonkhortisan skill -CONT 03:33 sweetbomber but if you are asking that to know if minecraft is slow in my machine, it isnt 03:33 sweetbomber usually loading of vanessa's game takes a few seconds 03:33 sweetbomber but the profiler stretches the execution time a lot 03:33 khonkhortisan it takes longer the larger your images are 03:34 VanessaE khonkhortisan: I expect he's doing this entirely with the default textures. 03:34 khonkhortisan I don't think I can make my font small enough to see the complete server list 03:34 hmmmm hmmm 03:34 sweetbomber i'm using vanessa's game without any change 03:35 Exio hmmm saying hmmm is not a good thing 03:35 hmmmm i really have to get my butt in gear 03:35 * khonkhortisan didn't make the connection 03:35 hmmmm so many things need fixing 03:37 VanessaE hmmmm: even in this completely stripped-down test, and *default* texture(s), I can't even maintain 60 fps with the full immediate map area loaded. 03:39 VanessaE (seems to want to float around 55 fps) 03:39 Exio don't tell that to hmmmm or he will rewrite the ClientMap::draw() 03:39 VanessaE too late :P 03:39 Exio aw 03:39 khonkhortisan Invalid read of size 8 03:39 khonkhortisan I'll try a diversion 03:44 sweetbomber khonkhortisan: yes, I saw some memory warnings too...maybe those need some inspection too... 03:44 hmmmm trying to think of *when* the cut-off items should be placed 03:48 * sweetbomber makes some noodles 03:48 hmmmm if it goes in a mapgen thread, then it'd slow down map generation and blocks would take a bit longer 03:48 sweetbomber instant noodles: solving 1st world hunger since 1970 03:48 khonkhortisan ramen? macaroni? hamburger helper? spaghetti? 03:48 khonkhortisan ah. 03:48 VanessaE ramen, of course. 03:48 sweetbomber yup 03:48 sweetbomber chicken 03:49 hmmmm if it goes in its own thread, then one might block the other and i'd need to resend blocks 03:49 hmmmm but i'd have to resend blocks anyway 03:49 sweetbomber love ramen, altough it is more expensive than a beef 03:49 VanessaE hmmmm: how heavy do you suppose the routine's gonna be? 03:49 hmmmm with your goddamn trees probably really heavy 03:49 sweetbomber (it costs less than one euro, but only has a few grams) 03:49 VanessaE lol 03:50 khonkhortisan alol 03:50 hmmmm the logic is different enough to not be part of the emerging process 03:50 hmmmm plus it's better from an organizational standpoint to not be in emerge thread 03:50 VanessaE sweetbomber: recipe idea: crush noodles, add a 12oz can of chicken with the water/schmaltz. Top up with water as needed. Boil until they cry. drain. Add sour cream and the flavor packet. Prepare toorgasm. 03:51 hmmmm can of chicken, good joke 03:51 VanessaE hmmmm: well if it's expected to be heavy in practice, definitely in its own thread. 03:51 VanessaE canned chicken is cheap and convenient. 03:51 sweetbomber VanessaE: lol, ill try that for a meal 03:51 hmmmm hmm 03:51 hmmmm let's think rationally here 03:51 sweetbomber now its just pre-bed eating 03:52 sweetbomber (5am here= 03:52 hmmmm what if we have a 3-block-tall tree 03:52 VanessaE yeah? 03:52 VanessaE not uncommon in fact. 03:52 hmmmm that gets cut off because it starts to generate at 4 blocks high in the chunk 03:52 hmmmm so only 1 additional block would be emerged that hadn't been emerged before 03:53 khonkhortisan 9 leaves 03:53 hmmmm but in this case if i had it in its own thread, that's 2 blocks getting resent 03:53 hmmmm that didn't really need to be 03:53 VanessaE khonkhortisan: he means mapblocks e.g. something like a giant sequoia. 03:53 VanessaE hmmmm: hrm, right. 03:53 hmmmm now what if we had a massive, massive structure that's like 25 blocks 03:54 hmmmm err more 03:54 VanessaE simple, your server would melt. 03:54 hmmmm the cutoff happens because it's too vertically high 03:54 VanessaE hm. 03:54 hmmmm that much is fine, but then all those lower chunks would get sent as well 03:54 hmmmm so 03:54 hmmmm would you personally rather see the map appear, and then the trees appear a short moment after? 03:54 VanessaE absol-fucking-lutely. 03:55 khonkhortisan I know I would 03:55 khonkhortisan better than the trees appearing first :) 03:55 VanessaE we're already used to trees et.al suddenly popping up anyway e.g. when a sapling grows 03:55 khonkhortisan I tell my web browser to display as much as it can while loading 03:55 VanessaE or the old jungle trees mod 03:56 hmmmm here's the problem; when on_generate gets called, you won't see the tree that got added 03:56 VanessaE good point. 03:56 hmmmm what's worse is that the trees won't get added to the cutoff queue if they fit 03:56 VanessaE could there be a flag included that tells the client to expect this block to change soon? 03:56 hmmmm so the behavior would be inconsistent, that is, you can't rely on them being there or not being there 03:56 hmmmm eh, not really a problem with the client 03:56 VanessaE or rather, 03:56 VanessaE not the client 03:56 VanessaE the mods 03:57 VanessaE (brain-o) 03:57 hmmmm there could 03:57 khonkhortisan could delay on_generated, but send the map as it's created 03:57 hmmmm i'd rather not delay on_generated 03:59 hmmmm nevermind about the inconsistency part 03:59 kahrl imo the generated world should depend solely on the seed 04:00 hmmmm it's going to be inconsistent any way you put it 04:00 kahrl not in what order the blocks are approached 04:00 sweetbomber hmmmm: only now read your toughts 04:00 hmmmm kahrl, already too late, the trees get generated randomly each time the map is created, someone used the global rand function 04:00 sweetbomber my structure generation approach will generate cutoff structures on main mapgen thread 04:01 kahrl hmmmm, that should be fixed in new mapgens then 04:01 sweetbomber and my algorithm will generate exactly the same structures whatever the block-generation order 04:01 sweetbomber (that was one pre-requesite of myself) 04:01 hmmmm kahrl, it's fixed by the design of the new mapgen 04:01 hmmmm sweetbomber, you gave up on the perlin noise thing? 04:02 sweetbomber nope 04:02 sweetbomber ill use it 04:02 hmmmm i thought your idea was to not deal with cutoff structures separately 04:03 sweetbomber my idea is to make possible to know if a given block contains a structure, without pre-generating other blocks 04:03 hmmmm oh 04:03 hmmmm we misunderstood eachother when we first talked about this, then 04:03 hmmmm i didn't mean pre-generating, i meant pre-calculating 04:03 sweetbomber or that 04:04 hmmmm (as in, running through all the steps one would have to take first) 04:04 sweetbomber as a consequence, it is not needed to take care of cutoff structures separately 04:04 hmmmm yeah 04:04 hmmmm so when you said "on the main mapgen thread", what did you mean 04:04 sweetbomber imagine like those scratch lottery cards 04:05 hmmmm do you mean "in the mapgen"? 04:05 hmmmm or do you mean done in the EmergeThread 04:05 kahrl is there a document that describes the current algorithm and ideas for avoiding cutoff? 04:05 hmmmm because what i was suggesting is done in the EmergeThread, separately from the mapgen 04:05 kahrl I can't follow this discussion 04:05 hmmmm kahrl, there is not, sorry 04:06 hmmmm i'll write something up though, maybe i'll come up with an idea 04:06 sweetbomber sorry, i meant emerge thread 04:06 sweetbomber the code that emerges one block at a time 04:06 hmmmm sweetbomber, you're also aware that there can be multiple emergethreads, right? 04:06 sweetbomber the good thing about this solution, is that *maybe* it will avoid the use of mutexes/locks 04:07 hmmmm so when you say "main mapgen thread", what i imagine you mean is "in EmergeThread #0, outside of mapgen::makeChunk" 04:07 sweetbomber i have not thought troughout this very deeply 04:07 sweetbomber wait a sec, let-me revisit the code (ive been out for a week) 04:07 hmmmm heh, i've been out for a month 04:08 sweetbomber im talking about makechunk 04:09 hmmmm in makechunk 04:09 hmmmm makes more sense now 04:09 sweetbomber the elementary unit of generation, for what i understood 04:09 sweetbomber and my algorithm allows it to be local 04:09 sweetbomber without the need of caching stuff for other chunks, etc... 04:10 sweetbomber each chunk knows exactly what to do 04:10 hmmmm right 04:10 sweetbomber and when it is generated, no more changes will have to be done there 04:10 hmmmm okay, just making sure, because you said something that made me think you meant otherwise for some reason 04:10 sweetbomber there will be some light pre-calculation 04:10 sweetbomber but no caching 04:11 sweetbomber or whatsoever 04:11 sweetbomber and that will rely on the structure binary-storage format ill think of 04:13 sweetbomber plus a method i tested to obtain a seed for each structure, that can be calculated even from different chunks that happen to include parts of the same structure 04:13 sweetbomber and i think this is the main point 04:13 hmmmm global structure seed 04:13 hmmmm how does that even work? 04:13 sweetbomber each instance of structure will have the same seed 04:14 hmmmm isn't that basically what already happens? 04:14 sweetbomber (this is a requirement to guarantee that the structure is generated the same way, no matter the generation order) 04:14 hmmmm i do that in Ore::generate(), where i pas along blockseed + i 04:15 sweetbomber the thing is, imagine a bridge that goes over 3 chunks 04:15 sweetbomber the seed for the bridge in chunk 1 must be the same of the one in chunk 3 04:16 hmmmm clearly, yes, but how does that determine its placement exactly? 04:16 sweetbomber if it changes with the block or with the chunk, its is not possible to guarantee that the structure will be coherent 04:17 sweetbomber imagine local noise 04:17 sweetbomber (by local, i mean that the seed is calculated based on each cell's coordinate) 04:17 hmmmm oh that 04:18 sweetbomber now, if the cell's random value is above a certain threshold, it means that it will have a structure 04:19 sweetbomber to get the structure's seed, calculate the area of adjacent cells with a random value above the threshold (btw, this threshold is structure-dependent) 04:20 sweetbomber then, after getting the seed, run a lightweight size-precalculation of the structure, taking as constraint that only those cells whose value is above the threshold may hold the structure 04:21 sweetbomber (if the algorithm wants to place a house that would go to a chunk which had a value lower than the threshold, it does not place it at all 04:21 sweetbomber so that there will be no structures "incomplete" 04:21 sweetbomber ) 04:22 sweetbomber basically its this 04:22 sweetbomber but has some quirks 04:23 sweetbomber and other details, namely regarding scale, positioning, and repetition 04:24 sweetbomber of structures along the world 04:24 sweetbomber i really have to go now 04:24 hmmmm for (z, ... for (y, ... for (x, ... ) { if (noise2d(x, z, deco->seed) > deco->thresh_placement && NoisePerlin2D(deco->np, x, z, deco->seed) > deco->tresh_area && (there's no other structures in the way)) { placeWhatever(); 04:25 hmmmm and that would need to be run throughout a larger area 04:25 hmmmm how large, not sure 04:25 sweetbomber ill give news as soon as i have something 04:25 sweetbomber that is the scale thing 04:25 sweetbomber basically, +- like octaves in perlin noise 04:25 sweetbomber imagine using different noise scales 04:25 hmmmm i should hold off on what i have perhaps, for this 04:25 sweetbomber btw, i dont want perlin noise for this 04:25 hmmmm it might work out 04:26 hmmmm yes, but we need perlin noise to restrict placement to spots like we currently have with trees and what not 04:26 sweetbomber just regular non-interpolated noise 04:26 hmmmm the non-interpolated noise is used for determining "is this spot a candidate for placement?" 04:26 sweetbomber yes 04:26 sweetbomber it makes things simpler 04:26 hmmmm and then the perlin noise says "okay, so is this position in the right area?" 04:27 hmmmm and vary treshhold based on the perlin noise result 04:27 hmmmm ah 04:27 hmmmm there's a simple way to make forests more dense in one area and then fade out 04:27 sweetbomber well, im planning to use terain height and biome-type to assess if a structure could be placed 04:27 sweetbomber so it will use, indirectly, perlin noise 04:28 sweetbomber but i think that regular random noise is enough for structure placement 04:28 hmmmm have you taken a look at ore placement? 04:30 sweetbomber for what i saw it just used local random noise 04:30 sweetbomber and uses its height as threshold 04:30 sweetbomber but i have not looked deeply into it 04:31 sweetbomber ill take a look tomorrow 04:31 sweetbomber sorry, i really have to sleep 04:31 sweetbomber good night 04:31 sweetbomber ill check logs tomorrow 04:32 Exio good night sweetbomber! 12:02 Taoki Anyone know if there's a Lua function to *loop* a spatial sound on the player (asking here as it's for a patch I plan to make) 12:03 PilzAdam only sounds attached to objects can be looped, so you need to attach it to the player 12:03 Taoki Sounds great 12:08 PilzAdam https://github.com/minetest/minetest/pull/773 12:10 Taoki Sure, such a Lua function should exist (modders might want to make ghost objects on purpose) 12:10 Taoki And I can confirm it was glitchy on falling nodes. I got stuck nunder them with no way to dig myself out 12:13 Taoki I wonder if there's any way to make a Lua function that applies a change to all entities (such as players and dropped items) 12:32 Taoki Anyone know how that can be done? I'd like to add a Lua effect / function to all entities, including players / lua entities / dropped items. Is that possible with one function? 12:40 PilzAdam yes, just loop through all registered entities and redefine them 14:16 Taoki hmmmm: Couldn't help it and giving a try to v7. The layout seems nice and ok, but it only generates smooth stone with water. Is it because the biome script isn't included, or is it all it can do at this point yet? 14:18 PilzAdam Taoki, http://pastebin.com/xwmCD3ae 14:19 Taoki Thought it's included, will try now 14:21 jojoa1997 so howcome that code isnt added yet 14:22 PilzAdam mg v7 shouldnt be used yet 14:22 Taoki PilzAdam: 17:19:57: ERROR[main]: BiomeDefManager::resolveNodeNames: node '' not defined 14:23 Taoki Get several of these\ 14:23 * Taoki thinks that script should be added. If V7 shouldn't be used we can add a warning. 14:24 Taoki I'll use it either way if it just works and doesn't crash anything, since I'm ok with my local worlds running experimental parts 14:27 Taoki Anyway, is that an error or a problem with the script? 14:27 hmmmm taoki, i'd really prefer if you didn't use v7 14:28 Taoki It's like using it before it's ready = looking at porn :P 14:28 Taoki Can't say I'm using it, just made a test world for a simple test 14:29 Taoki Anyway, that error indicates it might be broken, so hopefully I helped find a bug at least 14:32 Taoki Also, it seems to be a bit faster than indev at generating. Though that might be because it doesn't create trees 14:37 Taoki BBL 14:46 hmmmm you can't notice any difference in generation speed past a certain point because it's bottlenecked by block sending and mesh making 15:01 hmmmm was going to do something last night but sweetbomber's thing keeps looking more and more appealing (for cut-off cases anyway) 15:02 hmmmm it will consume notably more cpu than the traditional way of randomly generating decorations though 15:04 hmmmm when there's a situation like this, we always make it an option so nothing needs to suffer.. i guess it'd be a good idea for things that aren't likely to be cut off (regular sized trees, single node decorations, etc) to use the regular method, and only structures and other things large enough will use that other method 15:06 hmmmm i'm not sure if i want to make it a separate placement type, because then people would have to judge on their own which kind is appropriate for their structure... i'd like to have it auto-switch based on size maybe 15:07 NakedFury hi 15:08 hmmmm the reason why keeping the old method is possible is because i don't think we have any plans to remove the chunk borders from generation, unless someone finds a way to fix caves (which is much harder) 15:09 hmmmm there are advantages to removing the borders too, like having to only retrieve and blit back a 5x5x5 area instead of a 7x7x7 15:09 hmmmm lighting calculations would be completely errorless too 15:10 hmmmm (well; errorless apart from having to guess if there's an overtop or not, but i'd rather manually retrieve those blocks when we actually need them) 15:11 hmmmm removing chunk borders would implicitly fix the entire class of bugs that includes caved-out trees, walled-in caves, dungeons floating in the air, and so on 17:03 RealBadAngel hi 17:03 RealBadAngel whats up? 17:10 Exio hey RealBadAngel! 17:16 RealBadAngel i just got new connectiion (LTE) 17:20 RealBadAngel im not sure if i gonna keep it (got 1 week for testing). i have a feeling that cable one was faster 17:26 RealBadAngel anyway its good to be connected again ;) 17:26 Jordach RealBadAngel, if this is a 3G modem 17:26 Jordach then a cable is much better 17:27 Jordach and i know most ISPs provide broadband 17:28 RealBadAngel its not cable nor 3G, its LTE 17:28 PilzAdam -> #minetest 17:28 RealBadAngel sure ;) hi PilzAdam 17:29 PilzAdam hey RealBadAngel 17:29 RealBadAngel i have heard your voice and im creating different game 17:30 RealBadAngel i had 2 weeks to think it over and i like it 17:32 RealBadAngel i made already all the formspecs to follow UI's style 17:34 RealBadAngel so i guess i wont be fighting you anymore 17:34 Taoki RealBadAngel: Hi, WB :) 17:35 RealBadAngel im gonna stick to my own version of minetest_game 17:35 RealBadAngel hi Taoki 17:35 Taoki How are you? 17:36 RealBadAngel happy to be connected again and a bit tired (working hard all the time) 17:36 Taoki nice 17:36 Taoki I heard you're working on adding hardware lighting. Is that true? I was curious how far you got with the code 17:37 RealBadAngel i had a pause last 2 weeks 17:38 Taoki oh, ok 17:38 RealBadAngel i got sun/moon math ready 17:38 Taoki RealBadAngel: http://forum.minetest.net/viewtopic.php?pid=94508#p94508 I posted an idea here which you might find useful and interesting (my planning for the lighting code) 17:38 RealBadAngel i implemented fiatlux.py lib 17:40 RealBadAngel my shaders work is hanging waitin for lights 17:41 RealBadAngel because all the parts needs the light 17:41 Taoki Awesome. The lights are indeed the thing 17:41 RealBadAngel i managed to get bump mapping working to some point without real lights but thats all 17:42 RealBadAngel every shader needs real light sources 17:42 Taoki Awesome! Bump mapping is one of the features I'd love to see 17:43 Taoki And that's correct. I tried adding some effects too, and all need lighting 17:43 RealBadAngel the code for bump mapping is uploaded in my branch for weeks already 17:44 RealBadAngel there are at least 3 texture packs that support it 17:44 RealBadAngel Haven, HDX and Sphax's 17:44 Taoki Nice. I'm afraid to ask if it will be accepted though (cuz I can already tell that might be "no" :P ) 17:45 RealBadAngel bump mapping works NICE without lighting 17:45 Taoki RealBadAngel: Another one that should work without lighting are envmap reflections. Would be awesome for metal surfaces and especially water 17:46 Taoki RealBadAngel: Is it bump mapping however, or bump + parallax mapping 17:46 RealBadAngel i know, my code does both effects 17:46 Taoki Awesome :D 17:46 RealBadAngel but without lights there are set up to one level 17:47 Taoki I know. When lighting will be in they'll probably have to be adapted 17:47 Taoki For that reason maybe it is best they wait, and the whole magic can go in at once 17:47 RealBadAngel only coords of light source 17:47 RealBadAngel because now im using fixed one 17:48 Taoki ok 17:49 Taoki I'd like to know what you think about the post I linked and the method I suggested there 19:01 hmmmm sweetbomber: I just realized something.... your way of handling cutoffs seems almost exactly like my original idea, which i dumped because i didn't want to be responsible for calculating placements for other adjacent blocks 19:02 hmmmm what's different with yours, is that you use position-dependent random values only 19:02 hmmmm pseudorandom values in minetest, unless they use the global rand, are almost always based on the blockseed 19:03 hmmmm so you'd calculate the blockseed for the neighboring blocks and then do a dry "placement" for each of those 19:03 hmmmm if any of them have parts that show up in the chunk you're currently handling, then place that 19:03 hmmmm this is much better than your idea: 19:04 hmmmm 1. PseudoRandom::next() is much lighter than noise2d() or noise3d() 19:04 RealBadAngel hi hmmmm 19:04 hmmmm 2. you only make a number of calls equal to the number of decorations that would be present in that chunk 19:04 hmmmm hi RBA 19:06 hmmmm now, since you intend on polling every point to see if a decoration should be placed, this turns out to be much, much slower since what you do is in fact the worst case time (O(n)), which would happen only if scarcity == 1 for decorations placed the original way 19:07 hmmmm so now that we ruled placing items on their own queue to be written to the map separately seems worse than it originally did, this pre-calculating and slicing seems like the natural way to do this 19:25 sweetbomber hmmmm: im not planning to run a full noise2d for each evaluation 19:25 sweetbomber and im not planning to check every node to see if it has a structure on it 19:25 sweetbomber lets imagine for instance two scales 19:25 sweetbomber the first scale is composed of 16x16x16 blocks (lets call it superblock) 19:25 sweetbomber the second scale is the block itself 19:25 sweetbomber so, when we're evaluating one block we do the following: 19:25 sweetbomber does this 16x16x16 block has a structure? calculate one or two iterations of the PRNG over the seed corresponding to the origin of that superblock 19:26 sweetbomber (we can add the global seed to that one, as is already done in some places) 19:26 sweetbomber if the result of the prng is above a threshold, it has a structure on it 19:26 sweetbomber if not, stop there 19:27 sweetbomber if it has a structure: 19:27 sweetbomber for the current block, calculate again one or two prng iterations over seed composed of the block origin coordinate 19:28 sweetbomber is it above a certain threshold? if not, stop there, if yes, proceed 19:29 sweetbomber now, that we know the current block has a structure, calculate the common seed, and start the structure generation procedure, which is also scaled 19:29 sweetbomber this method does not use noise2d anytime 19:31 sweetbomber and not every block is checked for structures, because if the superblock does not have the given threshold, a whole 16x16x16 blocks are not checked at all 19:32 sweetbomber and even for each block, the structure generation algorithm could not be run, again depending on the random value 19:32 sweetbomber is this similar to what you thought previously? 19:35 sweetbomber regarding the structure generation algorithm,im thinkin on a similar approach, based on hierarchy, on which the first steps only concern about space reservation of successively smaller volumes, and only for those volumes overlapping with the current block there will be the precalculation of nodes' positions, IDs, etc... 19:35 sweetbomber i cant think of a more efficient algorithm... 19:45 Exio someone just told me, minetest (official build) doesn't work under windows8, but mingw ones work perfectly 19:45 Exio thexyz: ^ two people reporting that 19:45 Exio when running it from the cmd => nothing 19:52 thexyz uh oh 19:54 Exio just a "minetest.exe stopped working" 23:15 PilzAdam any rules how many core devs set release date and feature freezes?