Minetest logo

IRC log for #minetest-dev, 2014-08-29

| Channels | #minetest-dev index | Today | | Google Search | Plaintext

All times shown according to UTC.

Time Nick Message
00:00 sapier VanessaE that's only true for mods not interacting with those nodes directly
00:00 VanessaE sapier: actually it's more akin to callbacks the way it's set up
00:00 VanessaE but your point stands.
00:00 VanessaE however, I think you're taking the idea to a logical extreme :)
00:01 VanessaE modeblocks:block?  er...  no.
00:01 sapier ppl use it to extreme
00:01 VanessaE however,
00:01 VanessaE think of this idea:
00:01 VanessaE moreblocks:slab_1
00:01 VanessaE in the future if we ever get meta_set_nodedef or something equivalent to it, that def could point to the 1/16 (one pixel) thick slab, and then some API call sets the material (== the texture) for it on place.
00:02 VanessaE instead of having 50 different slab_xxxxxxx_1 defs
00:02 RealBadAngel sapier, your main mistake is treating node with different textures as something another
00:02 VanessaE same for stairs, slabs (the regular ones), panels, you name it
00:02 sapier I just don't like the ide of hiding genuine nodedef properties within a single subtype value noone is able to interprete
00:02 RealBadAngel wrong, node will have all the same definition regardless tileset used
00:02 VanessaE this idea of RBA's is the same concept but on an extremely limited scope
00:02 sapier RealBadAngel: but exactly this is what vanessaE is gonna do for mesecons
00:03 RealBadAngel no subtypes (sub defs) possible
00:03 VanessaE sapier: document and they will interpret it.  if they fail to interpret it, it's because the documentation sucks or the coder is stupid.
00:03 VanessaE I refuse to cater to the latter.
00:03 VanessaE but we can fix the former if needed.
00:03 sapier actually as of this thing merged no mod can rely on what node.name tells
00:03 VanessaE (and usually, it's the former)
00:03 RealBadAngel its rather def that has new abilities
00:03 RealBadAngel not it gains the sub ones
00:03 Inocudom RealBadAngel, I noticed that commit you made that made lighting solely a cpu matter. Night do look different now as a result of it.
00:04 sapier by now posibilities have been limited so actual abuse potential was minor, still it was possible, now I can do almost anything with it
00:04 sapier even the 1 nodedef moreblocks mod
00:04 RealBadAngel Inocudom, it was always done CPU side
00:04 RealBadAngel shaders never did the lighting
00:04 Inocudom What was it that you did then?
00:04 VanessaE sapier: are you saying we can't count on people to sun an abusive mod?
00:04 VanessaE shun*
00:04 RealBadAngel color blending was done cpu and gpu side
00:04 sapier exactly
00:05 RealBadAngel and both were different
00:05 VanessaE sapier: I'm afraid at some point you're gonna have to say "ok, we can at least trust you THIS far."
00:05 sapier ppl demand forcloading too even if it's a violation of our basic activity mechanism
00:05 VanessaE and expect people to abuse it, with the proviso that "well, your own damned fault.  stop abusing the engine."
00:05 VanessaE sapier: we already have force-loading :P
00:06 RealBadAngel now color blending (vertex colors) is done only CPU side
00:06 sapier I know and I'm waiting for the first one to complain "my server is eating up all my ram"
00:06 Inocudom So, no conflict that way.
00:06 RealBadAngel so the effect is the same no matter shaders are on or off
00:06 sapier "fix the engine it's your fault as you provide forceload"
00:07 VanessaE sapier: the config sharply limits how many blocks can be force-loaded anyway, and force-loading a region is like having a player always on, so what's the real harm potential?
00:07 RealBadAngel that also got rid of RSOSD
00:07 VanessaE (ergo: the problem doesn't need "fixed")
00:07 RealBadAngel red screen of shaders death ;)
00:07 sapier it's a serverside config param, just changing a setting to 10000x value isn't something the engine shouldn't be able to handle
00:09 sapier as I said I wont veto against it I just wanted to make clear that this subtype has potential to actually create some sort of "shadow nodedef mechanism".
00:09 Inocudom I run Minetest and Freeminer on Linux Mint these days. I have no idea what a bad allocation error would look like on Linux Mint. I have seen it on Windows 7.
00:10 RealBadAngel sapier, there are possibly many other usages of the feature we havent event thought of yet
00:10 Inocudom However, I only got bad allocation errors in singleplayer on Windows 7. Never on servers.
00:10 RealBadAngel *even
00:11 sapier yes almost all of those usages will cause issues with other mods
00:11 sapier and to change a param2 you still have to send a block update to client
00:11 RealBadAngel not until mod will decide to use it on purpose
00:12 RealBadAngel without new code nothing gonna change
00:12 RealBadAngel old furnaces will work as usual for example
00:13 sapier As I said I don't see the actual benefit, reducing node number at cost of node size is at least doubtfull to me
00:13 RealBadAngel node size?
00:13 sapier node == nodedef
00:14 RealBadAngel you mean special_tiles table?
00:14 sapier which is part of nodedef
00:14 Zeno` joined #minetest-dev
00:14 RealBadAngel sapier, it is present always
00:14 RealBadAngel you dont know what you are talkin about
00:15 sapier I do you increase special_tiles table in order to switch textures
00:15 sapier for what I remember you added 6 tiles ... or is it already variable?
00:15 RealBadAngel i added 4
00:16 Inocudom Bye.
00:16 RealBadAngel 2 were here
00:16 Inocudom left #minetest-dev
00:16 sapier ok so now a node can be actually 7 nodes instead of 3 before ... so a single nodedef for whole moreblocks will not work
00:16 RealBadAngel ?
00:17 RealBadAngel youre mixing the ideas completely
00:17 sapier no I'm just using the feature you provide ;-)
00:17 RealBadAngel you think its gonna replace set_metanode
00:17 RealBadAngel +f
00:17 sapier moreblocks:node1: base = dirt
00:17 RealBadAngel forget it
00:17 sapier moreblocks:node1 special tiles 1 = grass
00:17 RealBadAngel you got it completely wrong
00:18 sapier ok then please explain it to me
00:18 RealBadAngel there are no subtypes
00:18 RealBadAngel forget the word even
00:18 RealBadAngel theres only one nodedef
00:18 RealBadAngel and two possible sets of textures
00:18 RealBadAngel which are meant to represent on/off state
00:19 Inocudom joined #minetest-dev
00:19 sapier containing 1 tiledef + 6 special tiledefs, switched by a param2
00:19 RealBadAngel yes
00:19 RealBadAngel and nothing more
00:19 sapier so param2 can make it look six different ways?
00:19 RealBadAngel ?
00:20 RealBadAngel who told you 6 ways?
00:20 sapier or just two different states?
00:20 RealBadAngel two
00:20 VanessaE only two states, sapier
00:20 VanessaE on and off.
00:20 VanessaE that's why we keep mentioning wires and pipes as examples
00:20 RealBadAngel furnace active / furnace inactive
00:20 sapier ok then I did missunderstand it ... well your video was quite missleading
00:20 VanessaE or furnaces, yes
00:21 VanessaE now mind you, yes, dirt/dirt with grass could in theory also be used for that, but that's stupid and dumb and you'd have to be an utter moron to misuse that feature for that
00:21 RealBadAngel http://pastebin.com/aFGVm4Ga
00:21 Zeno` I'd use it
00:21 RealBadAngel stone node with switching
00:21 Zeno` (just kidding!)
00:21 VargaD joined #minetest-dev
00:22 RealBadAngel (btw we need lua method to set param2 without swapping node)
00:22 sapier ok I admit for only two states abuse potential is still limited
00:22 VanessaE a better example would be the toaster in homedecor (jp added, haven't merged it yet).  or any of those items I have where they need two nodes.  I could use the "special" tiles to hold the second half of the node.
00:22 Taoki hmmm: I'm not sure if I asked this already, but just in case I haven't: Is there any hope of V7 supporting arrays of schematics? So we can create mine shafts or even complex roads as .mts files, and occasionally have the mapgen loop them underground or at surface level. Would be really cool!
00:22 Taoki * hmmmm
00:22 sapier what'd that function good for there's no way to update metadata without updating node
00:22 VanessaE second half of the *object* rather.
00:22 * Jordach hands VanessaE hyrbid nodes
00:23 sapier And I don't think updating metadata is significant faster then updating whole node (at network level)
00:23 Taoki Like create random labyrinths and the like
00:23 VanessaE Jordach: not hybrid nodes.  think desks, beds, benches, warddrobes.  things that need to be two nodes wide/tall
00:23 VanessaE -d
00:23 Jordach VanessaE, ah
00:23 RealBadAngel sapier, its updating single bit out of 4 bytes stored in map
00:23 RealBadAngel for a node
00:24 sapier I wonder when first one will complain about "two states aren't enough" ;-)
00:24 RealBadAngel nothing will be faster than that
00:24 VanessaE sapier: then we horsewhip that person ;)
00:24 RealBadAngel sapier, for those set_metanodef is made for
00:24 sapier RealBadAngel: maybe but I can't send a single bit packet to client ;-)
00:24 RealBadAngel slower but more powerful
00:24 sapier And sending 10 or 20 bytes doesn't make a difference on network level
00:24 RealBadAngel sapier, and btw you should check what set_metanodef is capable of
00:25 sapier not even 100 would matter
00:25 RealBadAngel darkrose has implemented dynamic nodeboxes already
00:25 sapier I usually don't need metanodedef ... and to be honest I don't even want to as those things started to evolve to some sort of parallelentitiy
00:26 Jordach RealBadAngel, our nodeboxes were dynamic already (constantly translated from table to irrlicht tables)
00:26 RealBadAngel Jordach, thats gonna change soon
00:26 sapier you make them more and more complex and in the end you'll have same pro and cons entities have now
00:26 sapier just completely different syntax
00:26 RealBadAngel sapier, theyre dumb and still experimental
00:27 Inocudom Yes, but I heard darkrose say that you must ask for her permission to use her code from Voxelands. That includes her achievements with nodeboxes.
00:27 cg72 joined #minetest-dev
00:27 sapier RealBadAngel: I don't say they are as powerfull as entities but they head that direction
00:28 RealBadAngel entities? you mean meshes propably
00:29 Inocudom I can't fathom how you could animate nodeboxes.
00:29 RealBadAngel nodeboxes are also meshes, just stored in our own format
00:29 RealBadAngel which sucks
00:29 cg72 jordach has a chest that opens ans closes so the animated thing is easy
00:29 RealBadAngel mesh
00:30 RealBadAngel not the entity
00:30 Taoki RealBadAngel: Sorry for being inactive lately. Any news on the new awesome shaders?
00:30 sapier entities are activeserverobjects
00:30 VanessaE cg72: that uses an entity
00:30 Inocudom Yes, it has it flaws. Take for example, the fact that all faces of all cubes that make up them show, even internal ones that aren't normally visible.
00:30 RealBadAngel entities are the thing that allow to directly load meshes
00:30 Inocudom Oh, how much VaneesaE's Creative Server would benefit if that were corrected.
00:30 RealBadAngel and then fuck them up badly
00:31 sapier yes but their main power is beeing single active parts in lua code
00:31 Inocudom Another benefit would be if nodeboxes followed the same rendering rules that normal nodes and chunks did.
00:32 RealBadAngel main benefit would be trashing nodeboxes at all, and replace them with meshes :P
00:32 Inocudom Welcome, Taoki.
00:32 RealBadAngel Taoki, liquids shaders are ready (water and lava)
00:32 Taoki hehe, thanks :P
00:32 Taoki RealBadAngel: Awesome. When will they be in master?
00:32 Inocudom But how would the nodeboxes be converted to meshes. What of all of the wonderful creations in homedecor?
00:32 VanessaE homedecor's stuff wouldn't change, Inocudom
00:33 RealBadAngel Taoki, https://www.youtube.com/watch?v=2x6w0wspmPo
00:33 sapier Inocudom: write your own converter ;-)
00:33 VanessaE and I have no plans to animate any of its nodes other than the desk fan, which is already animated
00:33 Taoki Nice!
00:33 Taoki That's not for the default texture pack though, right?
00:33 Taoki As in, if it's a 16 x 16 TP, the lava will still look 16 x 16
00:34 VanessaE RealBadAngel: don't trash nodeboxes, just fix how they're being handled.  nothing says a new method can't be introduced that does a better job
00:34 VanessaE nodeboxes are perfectly fine for a lot of things
00:34 RealBadAngel that one is using default 16px lava texture actually
00:34 RealBadAngel https://www.youtube.com/watch?v=58lS8ptwNkU
00:35 RealBadAngel ofc you can use different textures to feed the shader with
00:35 Zeno` sapier: https://github.com/minetest/minetest/pull/1583  <-- Updated.  I tested voxelmanip as an alternative and the call to get_data() was slower than the entire set/remove loop itself
00:35 Taoki nice
00:35 Taoki RealBadAngel: Are the node names no longer hardcoded though? IIRC that was a problem last time
00:36 sapier Zeno`: then we should fix the manip isntead of adding another mechanism to do same thing
00:36 Inocudom Very nice shaders RealBadAngel.
00:36 VanessaE sapier: no.  a single call to do the job is better
00:36 VanessaE it's a cleaner way to do it.
00:36 sapier really? next time set_node_around
00:36 VanessaE even if you could mape vmanip as fast, a single API call wins every time
00:36 sapier and then set_node_pyramid
00:37 sapier and maybe set_node_if_water()
00:37 Zeno` sapier: is it possible to "fix" the manip? The "problem" (time-wise) seems to be the pushing of values onto the Lua stack. Additionally, even if it wasn't faster (or slower) then VanessaE's point is very compelling (to me)
00:37 VanessaE make*
00:37 Zeno` I think that setting cubic areas is enough
00:37 Zeno` I don't like pyramids
00:37 sapier VanessaE: most likely yes but a single call always means one veryveryvery specific usecase and not usefull for anything else
00:37 Zeno` setting cubic areas seems like something that would be used often
00:38 VanessaE sapier: aw come on, enough with the slipper slope/logical extreme stuff here
00:38 Zeno` pyramids... hardly ever
00:38 sapier e.g. your setnodearea could be done by adding support for "empty voxelmanip"
00:38 Zeno` It could be argued that adding *any* functionality is a slipper slope
00:38 VanessaE sapier: is not set_node() jus as specific?
00:39 Zeno` why is find_nodes_in_area() a function?
00:39 sapier yes it is ... it's a primitive operation
00:39 Zeno` I could do that with vmanip
00:39 VanessaE sapier: set_nodes_in_area(minp, maxp, "default:dirt")
00:39 sapier while set_nodes_in_area ain't a primitive operaition
00:39 VanessaE sapier: neither is find_nodes_in_area()
00:39 Zeno` seems a primitive operation to me. If I was writing a graphics library I'd have that as a primitive
00:40 VanessaE sapier: set_nodes_in_area is to set_node as find_nodes_in_area is to get_node
00:40 sapier and there won't be any chance to do transactional maps with a function like that wihout adding huge lag spikes
00:40 VanessaE if you can have the latter, you can have the former.
00:41 sapier no it ain't a primitive operation as you will have to lock map for full time of this operation which can be quite long
00:41 VanessaE if such an operation locks the map, C++ is doing it wrong
00:42 sapier it has to lock the map as we can't guarantee it's going to do this
00:42 VanessaE you can't lock, write 10 nodes, unlock, then repeat?
00:42 sapier at least if we introduce parallelity
00:42 VanessaE even if the map remains unlocked for like, a microsecond?
00:42 sapier set_nodes_in_area((1,1,1),(50,50,50))
00:43 sapier I don't need to tell you how many nodes that will be
00:43 Zeno` I don't get it
00:44 sapier if we want to do this function in parallel we need to convert it internaly to voxelmanip later
00:44 VanessaE wait wait
00:44 VanessaE so how is that ANY different from doing the same thing with a Lua loop and vmanip?
00:44 VanessaE aside from being a single API call
00:44 VanessaE wouldn't you still have the same locking issue then?
00:44 VanessaE fill up a big vmanip object and blit it out to the map?
00:45 sapier there's no guarantee the node set 10 nodes ago is still set to this node if you set the current node
00:45 VanessaE that's exactly what you're proposing to do here
00:45 sapier but if you provide a set_nodes_in_area function anything different then guaranteeing that all nodes are set this way on returning  is insane
00:45 VanessaE sapier: according to hmmmm, set_node() is immediate.
00:46 VanessaE or wait I see what you meant
00:46 VanessaE but you're missing the point here
00:46 sapier yes it is ... but think about some async thread doing things in parallel right now changing some nodes already changed by that loop wouldn't cause the async thread to stall
00:46 Zeno` I call set_node() (the c api version) so if set_node is immediate then isn't my code as well?
00:47 sapier if you do it that way we have to lock the map for full time of this operation no chance to break it into pieces
00:47 VanessaE for X/Y/Z = foo; do set_node(blah) end end end,  versus [get a vmanip object] [fill it with a loop like <----- that one] [write vmanip object], versus  set_nodes_in_area(minp, maxp, node)
00:47 VanessaE how is any of these any different from the other, aside from speed?
00:47 VanessaE do they not ALL lock the map?
00:48 sapier at the end of that loop you can't be sure that all nodes are still the way you set them
00:48 VanessaE what?
00:48 VanessaE of course you can
00:48 VanessaE lua isn't multithreaded
00:48 hmmmm set_node is only ever called from inside an envlock
00:48 sapier not in a parallel environment
00:48 VanessaE this isn't a parallel environment
00:48 hmmmm vanessae, would you prefer permanently killing any prospect of multithreaded lua?
00:49 sapier guess what I'm trying to direct minetest for about 2 years now
00:49 VanessaE hmmmm: of course not, but until we have it, what's the point of preventing the API from advancing?
00:49 VanessaE hmmmm: besides, I thought it was already agreed that that idea was totally dead?
00:49 hmmmm there's no real advancement here except some very fast operation is being made a little bit faster
00:49 VanessaE Zeno`: benchmarks?
00:49 sapier we wont have parallel minetest for some additional time but a function like that one will most likely be another stone in way towards it
00:49 hmmmm no, nobody ever said that.  that's nonsense.
00:49 Zeno` the advancement is that it's more readable
00:50 hmmmm Zeno`, sounds like you want to write a wrapper function for this then
00:50 Zeno` VanessaE, the speed advantage for small areas is not a lot (~1.4 times faster)
00:50 VanessaE hmmmm: 10 lines of code --> 1, plus it's ^^^ 1.4 times faster?  this is not a good enough advancement?
00:50 Zeno` hmmmm, it basically is a wrapper function, just in C++
00:50 VanessaE hmmmm: not "want to".  already did.
00:50 Zeno` for large areas 100x100x100 it's about 4x faster
00:51 Zeno` Anyway I didn't write this for speed issues
00:51 sapier VanessaE: It's an advancement we're gonna pay for once we try to do it in parallel ... and it will be expensive
00:51 hmmmm 4x faster than what
00:51 Zeno` Than the equivalent Lua loop
00:51 sapier what's base time?
00:51 sapier 1s to 0.250s? or 1000s to 250s?
00:52 Zeno` But I didn't write this for the speed advances
00:52 hmmmm voxelmanip should be faster than set_node at 100x100x100 areas
00:52 VanessaE hmmmm: but voxelmanip is way less readable by comparison.
00:52 Zeno` It's *more* for the readability
00:52 hmmmm vanessae:  so then make a wrapper function for it.
00:52 VanessaE hmmmm: so...wait a second here...
00:52 hmmmm again.  there is absolutely ZERO reason to add another api
00:52 VanessaE a wrapper in Lua is better than a wrapper in C++?
00:53 hmmmm that is correct
00:53 VanessaE O_o
00:53 hmmmm stop adding bullshit to the C++ api
00:53 hmmmm stop it.
00:53 VanessaE umn
00:53 sapier that wrapper doesn't even have to be in minetest api
00:53 Zeno` I don't agree that it's bullshit
00:53 VanessaE bullshit>
00:53 hmmmm indeed, that's what I was going for sapier
00:53 Taoki hmmmm: Hello. I'm not sure if I asked this already, but just in case I haven't: Is there any hope of V7 supporting arrays of schematics? So we can create mine shafts or even complex roads as .mts files, and occasionally have the mapgen loop them underground or at surface level. Would be really cool!
00:53 VanessaE the last thing I ever added to the API that i recall was that rotate and place function
00:53 VanessaE and now it's used all over the place
00:53 hmmmm maybe there could be some sort of mod that has a collection of these "convenience" things
00:53 Taoki (you were away when I first asked so I thought to ask again)
00:54 hmmmm Taoki:  what?
00:54 sapier problem with this function is it's basicaly a subfunction of voxelmanip
00:54 VanessaE and that was many months ago
00:54 Zeno` so find_nodes_in_area() is deprecated?
00:54 Zeno` why not write a Lua wrapper function?
00:54 VanessaE so I take issue with your claim of adding "bullshit" to the API, especially the assertion that it's being done on an ongoing basis
00:54 hmmmm Zeno`:  the point of find_nodes_in_area() is speed, not "readability"
00:54 sapier read access is way less critical in parallel environment
00:55 Taoki hmmmm: I was looking at natural mineshafts and nether corridors in Minecraft earlier (not that I want to copy MC). I was wondering if mgv7 will ever support creating corridors urgerground, by defining each segment as a schematic
00:55 Zeno` ffs, at this rate nothing will be in C++ and the entire codebase will be Lua
00:55 Taoki Basically to loop a schematic in a random maze-like pattern
00:55 hmmmm Taoki:  do you understand that's an entirely new system?
00:55 hmmmm it's not like a feature that I can just slap in for shits and giggles
00:55 sapier Zeno`: still any reason not to use vmanip?
00:56 Taoki hmmmm: Wasn't sure if it could be added to V7. You would know best... if it's not possible that's fine
00:56 sapier assuming we can (almost completely) fix your speed penalty
00:56 Taoki I was hoping it is
00:56 Zeno` sapier: the call to get_data() takes longer than the set/remove loop itself
00:56 hmmmm Taoki:  it's possible, but somebody else here would be the one to do it
00:56 VanessaE Zeno`: yeah, it's un-fucking-readable and now you're asking every damn mod that needs to clear more than three or four nodes in an area to write a wrapper.
00:56 VanessaE this is wasteful
00:56 Taoki ok. Good to know, thanks. Maybe someine will, once V7 is declared stable
00:56 sapier Zeno`: there's no reason not to support a nil voxelmanip not reading any data
00:57 VanessaE saper rather
00:57 VanessaE sapier*
00:57 * VanessaE is tired and getting a little crabby.
00:57 sapier actually I remember a quite similar meachanism within core
00:57 Taoki hmmmm: When you spend some time on mgv7 again however, please otherwise add distance limitations between decoration schematics... which I assume is an easier thing. So we can define decorational schematics that don't intersect with each other, like occasional houses
00:58 VanessaE you know what...
00:58 hmmmm Taoki, can you explain to me how I would implement that?
00:58 VanessaE this is gonna sound nasty but I'm gonna ask it anyway.
00:58 hmmmm VanessaE:  perhaps you should fork minetest if you're so upset with the way things are going and do it better the right way.
00:58 VanessaE hmmmm: when was the last time you wrote a mod?
00:58 hmmmm VanessaE:  never, but I enhanced a mod
00:58 VanessaE and I mean sat down and wrote one without having the benefit of being able to add to the API or tweak the C++ side?
00:58 VanessaE ok. never.
00:59 VanessaE so you purport to tell modders what's the best way?
00:59 hmmmm yes
00:59 VanessaE I'm sorry, but you're wrong.
00:59 hmmmm VanessaE:  perhaps you should fork minetest if you're so upset with the way things are going and do it better the right way.
00:59 VanessaE and no, repeating yourself it not going to change the answer I was about to write.
00:59 hmmmm christ.  all you do is whine but you never fix things.
00:59 VanessaE I am perfectly capable of reading, even if I can't type.
00:59 Taoki hmmmm: I was thinking of two approaches. One would be a "no intersection" flag, which guarantees that decorational schematics spawn at a minimal distance to not cut each other off. Second approach would be allowing to define a minimal distance per schematic... so basically no decoration spawns closer to another decoration once it's defined
01:00 hmmmm Taoki, yes, but how
01:00 Taoki eg: If a tree spawns at a position first, nothing 5 blocks around that tree can spawn
01:00 Taoki Ah... I was thinking it wouldn't be a problem
01:00 hmmmm articulate the mechanism by which this happens, not the interface
01:00 hmmmm that's a little harder, huh?
01:00 VanessaE I don't fork the engine because I can barely read C++ as it is.  I have no chance at all of trying to code in that language - and that's after having spent a few years coding in other C-like languages as it is.  I don't understand Minetest's codebase either, no one here truly does in its entirety.
01:00 sapier Zeno`: what do you need get_data for?
01:01 Taoki hmmmm: I was thinking that once a schematic has been applied, the mapgen knows the position at which it was spawned and can delete any potential schematics from that radius.
01:01 VanessaE but I can read and code in Lua, and that's a language I'm quite comfortable in, when I'm able to think clearly at all.
01:01 hmmmm sapier:  this sort of situation is why I wanted to trust modders (to a point) with an envlock
01:01 Taoki Or, alternately, MGV7 would generate the decoration pattern in such a way to respect these values. But I don't know in depth how it's generated currently
01:02 Zeno` I meant set_data()
01:02 Taoki So when it tried to place a new decoration, it checks if it's in the radius of an existing decoration that has a minimal distance set
01:02 Zeno` anyway one last point
01:02 sapier hmmmm I'd give them a maplock at best not a full envlock
01:02 VanessaE oh and for the record, had you been paying the least bit of attention, you'd have noticed that I have been trying to keep an eye on things like multithreaded Lua being possible some day.  plants_lib, for example, should be thread-safe after that git spate of rewrites.
01:02 sapier yet they'll fail to use it correct too
01:02 VanessaE so get down off your pedestal.
01:02 hmmmm that is totally true
01:03 sapier And we'll not have a way to find this out
01:03 hmmmm people can't use luavoxelmanip correctly even though it's been how long
01:03 hmmmm agh
01:03 Zeno` If in the future say there becomes a really fast way to do the operation. If it's all Lua-side then every mod will need to be updated. If a function was part of the API then only the C++ code would need updating and *all* mods using said function would immediately benefit without having to be updated. Surely that's something important.
01:04 Taoki hmmmm: How are decoration schematics currently generated? A random X and Z position within the new chunk per decoration, or are they placed using a perlin noise map (in which case the result is harder to predict and organize)?
01:04 hmmmm there should be a way to lump a set of operations together that must all be executed at the same time though
01:04 sapier if set_data is that slow we should improve it
01:04 VanessaE hmmmm: I said it before and I'll say it again:  if the function works properly, then either the documentation sucks or the coders are stupid.  which do you suppose is the case?
01:04 hmmmm this isn't necessarily about set_data being slow or whatevr
01:04 hmmmm whatever*
01:04 Inocudom I once made a post in the Minetest forums that said the following. Pride... Is the greatest enemy... Of open-source.
01:04 Inocudom It is a phrase that we can all learn from.
01:04 hmmmm what if somebody has a mod where they need to modify two things that are part of the environment but not both pieces of the map?
01:05 Zeno` To me, making the function "abstract" makes sense. The Lua programmer doesn't care (no should care) *how* the function does the bulk operation.
01:05 Zeno` nor*
01:05 sapier Zeno`: there's no way to optimize a set_nodes_in_area setting 85k nodes for example
01:05 sapier that one will cause lag
01:05 sapier it's a single operation and ppl will demand it to be atomic
01:06 Zeno` sapier, but changing how the C++ does it (let's say vmanip) is better than 1.3 million mods having their own variation
01:06 hmmmm Taoki:  decorations are placed based on coming up with a random number of decorations per area, and then within that area, randomly selecting points to place it
01:06 sapier Zeno`: there's no way to change this, it's a design error
01:06 Zeno` atomic? Why?
01:06 hmmmm so for example you'd break an 80x80x80 chunk into 8x8 pieces
01:06 Zeno` I think you're misunderstanding what I'm saying
01:06 hmmmm and then each 8x8 piece would get a randomish amount assigned like... 3
01:07 hmmmm so then it'd randomly choose 3 positions from within that small chunk
01:07 Taoki hmmmm: ok. One way in that case would be to know the radius of each point (based on the settings of that decoration), and just avoid creating a point there or move the point away from that radius.
01:07 Taoki If a point already set itself there
01:07 Zeno` yeah, you're panellising it?
01:07 Zeno` I don't see what that has anything to do with the current discussion
01:07 hmmmm Taoki:  that much is obvious.  do you realize what that entails, though?
01:07 sapier the function you suggest is a single atomic operation or do you accept some additional comments "nodes withnin the set area may not be set to that node once the function is completed"
01:08 Taoki hmmmm: I'd normally think such a check would only be a few lines of code. But I didn't look at the mgv7 code personally
01:08 hmmmm taoki:  schematics are not part of mapgen v7.
01:08 Zeno` Currently? I don't accept that it currently works like that
01:08 sapier paralellizing is almost completely about splitting things into small pieces what you do is adding another huge piece
01:08 hmmmm taoki:  the check requires keeping the state of all such decorations previously placed
01:09 Taoki hmmmm: I know. Still, one could define a "personal space" radius as a single number, in the decoration definition.
01:09 hmmmm so tell me, how would you manage to do that?
01:09 Taoki True
01:09 Taoki Well,
01:10 Taoki hmmmm: For each point that is placed (decoration position), you also persist the position and that decoration's specified "personal space" radius, until all decorations are finished placing. Each new point accounts all previous ones and their specified minimal distance.
01:10 hmmmm taoki, that won't work.  so I'm finished generating my 80x80 chunk of map and then another chunk gets generated later on
01:11 Taoki So: Chunk begins generating. New point is added. We persist that point as (x, y, z, radius). New points don't get closer to x / y / z than radius. Chunk finished generating, free all points
01:11 Taoki Ah
01:11 hmmmm yeah. :)..
01:11 sapier Zeno`: still a function like the one you want could be implemented within voxelmanip api, benefit would be we don't have to add map transactional code throughout minetest
01:11 Taoki Yeah, chunks could not account their neighbors as easily
01:11 hmmmm taoki:  so not as simple as you thought, huh?
01:11 Taoki Since it'a s per-chunk operation, but the building might be larger than the chunk
01:11 Taoki hmmmm: Yeah, missed that one :)
01:12 sapier and something as big as this operation will require transactions in a parallel environment
01:12 hmmmm think of these kinds of things when you go request a schematic feature willy nilly
01:12 Taoki There might be a way around it... but I indeed need to think
01:12 Taoki Sounds like a permanent map of all decorations might have to be stored. Depending whether that would make the world file too big
01:13 hmmmm whenever you propose something like that, you lose
01:13 Zeno` sapier, yeah and wouldn't it be easier to maintain that if it was in C++?
01:13 Taoki Anyway, this is like the only thing that keeps decorations from being useable to generate villages (without roads of course). So I really hope someone can think of something here
01:14 Zeno` if the way the function should work needs to change you just change the implementation
01:14 Zeno` I don't get how that's not a benefit
01:15 Taoki hmmmm: There could be another way: Check if within the space the decoration would take up, there's anything but air blocks. Decorations could have a list of tolerated nodes, which they're allowed to overwrite. Obviously air being the first default... perhaps dirt and dirt_with_grass
01:15 Taoki This would of course require knowing the size of the schematic and exactly the area it takes up, and checking all the nodes in that area
01:15 Taoki So performance would depend on this not being abused by the mapgen designer who uses the Lua API
01:15 kahrl Zeno`: no it won't be easier to maintain
01:15 Taoki Still, it's a way :)
01:16 Zeno` kahrl: any "abstracted" function is easier to maintain
01:16 kahrl if each modder writes this simple function herself she can change things if there suddenly is a need for more features
01:16 Zeno` Because the "how" no longer matters
01:16 Taoki But yeah. A house decoration could for example be defined as allowed to override air, dirt, dirt_with_grass. But if there's another house already there, it would detect wood... so it would stop.
01:16 kahrl if we add it to the C++ API, everyone will come to us and ask for their favorite feature
01:17 kahrl which can't be satisfied all at once
01:17 Zeno` kahrl, that's what I was saying earlier. If this was a part of the Lua API then "behind the scenes" is none of the Lua programmers concern
01:17 Zeno` And if the implementation gets changed, all mods benefit without any changes to the mods at all
01:18 sapier Zeno`: no maintaining 100 different locations where to do transactions wont be more easy then just implement transactions around voxelmanip code ;-)
01:18 VanessaE so wait, now you don't add to the API because you don't want feature requests? O_o
01:19 Zeno` sapier, so in that case you change the implementation of set_nodes_in_area() to use voxelmanip
01:19 kahrl VanessaE: we don't all bullshit to the API because of that, yes
01:19 Zeno` No Lua-side changes necessary
01:19 kahrl s/all/add
01:20 sapier zeno I do understand this as "i want may quick and dirty version and dont care about how you guys get a really sane version"
01:20 Zeno` sapier, then you misunderstand me :)
01:20 sapier but that's what I see happening
01:20 VanessaE kahrl: one person's "bullshit" is another person's indispensable feature.
01:21 Zeno` Then you are seeing it incorrectly
01:21 sapier you wont transform the code to voxelmanip so we will have to do it once we really wanna implement parallelism
01:21 Zeno` Maybe I'm not explaining myself well. I dunno.
01:22 Zeno` Who said I wouldn't transform it to use voxelmanip?
01:22 sapier I agree you may not have intended this ... but result will be same
01:22 sapier if you did why not do it just now?
01:22 Zeno` Well, I see no point in doing it now if it's not going to be added to the API anyway
01:22 Zeno` I don't want to waste 10 minutes of my time :)
01:23 kahrl wait, didn't Zeno` already write a vmanip version
01:23 kahrl where the set_data call was slow
01:23 * kahrl is lost
01:23 VanessaE *headdesk*
01:23 Zeno` I wrote a vmanip version in Lua
01:23 sapier he did so why didn't he implement a faster variant of set_data
01:24 CraigyDavi joined #minetest-dev
01:24 sapier adding a set_nodes_in_area to voxelmanip would be a api we can base uppon
01:25 Zeno` That's possible, but there are (currently) problems with voxelmanip (i.e. due to the lack of transactions you mentioned earlier)
01:25 sapier yes 1 create, 2 set nodes, 3 write back to map most likely is still slower then direct map access, but for us we'd only have to put transactional code at one location
01:26 Zeno` When it's fixed the l_set_nodes_in_area() simply calls voxelmanip
01:26 Zeno` And all mods will then be doing it the "proper" way
01:26 sapier that's same as with entities because someone doesn't fix the bugs we create new mechanisms doing same things
01:27 sapier no it ain't as you'd still have that deprecated function in api
01:27 Zeno` why would it be deprecated?
01:27 sapier and e.g. if you want to set 2 blocks within one transaction your deprecated api doesn't help at all
01:27 Zeno` become*
01:28 hmmmm well
01:28 sapier because voxelmanip is the way to do big changes to map
01:28 Zeno` It wouldn't become deprecated and that's the whole point of my argument
01:28 hmmmm sapier, do you agree there needs to be some sort of atomic operation batching?
01:28 Zeno` Yes, and the function would do that
01:28 sapier why create a parallel api ?
01:29 hmmmm especially now with multiple mods running at once
01:29 Zeno` I don't see it that way
01:29 sapier depends on what you understand by "atomic operation batching" ;-)
01:29 hmmmm not just a set of mapnodes being set at the same time
01:29 hmmmm what if a set of mapnodes need to be set as well as something being done with items
01:29 hmmmm idk
01:30 hmmmm basically I'm making a case for controlling envlock from within lua.  the issue is that we can't freaking trust mods because they keep screwing things up
01:30 hmmmm mods have an excellent track record
01:30 Zeno` Well, give them the API function so they can't screw it up
01:30 sapier if you want to introduce a lock provided to lua api we need to create debugging tools first. see how long we needed to find the lag spikes caused by farming mod
01:30 hmmmm well see
01:30 hmmmm I wouldn't ever give them an indefinite lock
01:30 hmmmm maybe one that times out after a second
01:31 hmmmm that could be dangerous but it also might not be
01:31 sapier and what's gonna happen on timeout?
01:31 CraigyDavi` joined #minetest-dev
01:31 sapier data corruption?
01:31 hmmmm the lock gets released from underneath it
01:31 sapier assertion?
01:31 Inocudom What are these lag spikes caused by farming like?
01:31 VanessaE timeout of one second?  that won't be enough for some mods like paramat's mapgens
01:31 sapier see
01:31 hmmmm so yeah, data corruption
01:31 hmmmm and a nice fat warning
01:31 Zeno` oh great... add another misuse of assert() heh
01:31 sapier you'll never find that issue
01:32 hmmmm "hey dickwad, your mod X is eating up waay too much time"
01:32 hmmmm "so we're just going to take your exclusive access away from you"
01:32 sapier "not happening on my big fat machine using luajit"
01:32 hmmmm huh
01:32 kahrl hmmmm: what if somebody SIGSTOPs the minetestserver process for a while
01:32 Inocudom How about TenPlus1's farming_redo mod? Is it more stable than what is currently in minetest_game?
01:32 kahrl while a mod has such a lock
01:32 sapier and you can't even be sure it's that mod some other application could have stalled that mode
01:32 sapier -e
01:33 hmmmm yeah, that's a problem.  time would need to be based off of number of execution seconds and not wall time
01:33 hmmmm but come on
01:33 hmmmm is there any other imaginable way to accomplish the task we're talking about
01:34 sapier timed locks are inconsistent and cause more trouble then they're worth anything sane you can do on timeout is quit minetestserver immediatly
01:34 hmmmm short of defining an exhaustive list of "pending events that would need an envlock"
01:34 sapier why envlock?
01:34 hmmmm sorry, a lock in general
01:34 sapier envlock is like big fat kerlen lock
01:35 hmmmm kernel*
01:35 hmmmm it's worse than freebsd's giant lock in 7.x
01:35 hmmmm =/
01:35 sapier imho we should get rid of it ... of course this can't be done at once
01:35 CraigyDavi`` joined #minetest-dev
01:35 sapier at least we shouldn't add new big fat lock locations
01:35 hmmmm ah man sapier, you deserve way more credit than you get
01:36 hmmmm all these things require lots of time and with a job that's not so easy
01:36 * cg72 loves sapier
01:36 cg72 your the best lol
01:36 hmmmm yet you do it anyway
01:36 sapier thanks guys but that's not gonna remove the envlock till tomorrow too ;-)
01:36 hmmmm i wouldn't be able to even plan out a system like this if I had a week straight of nothing else to do
01:37 hmmmm but
01:37 hmmmm assuming the timed lock is a no-go, we'd have to do the other thing
01:37 cg72 hell that im not worried about lol im rewriting mapgen hehehehe
01:37 sapier well I don't have a complete plan yet too still a direction and I tend to try small steps towards it
01:37 sapier so if a step is wrong there's not that much of time lost
01:38 hmmmm we number each and every API and then build up an "execution plan"
01:38 hmmmm of what to call along with the parameters
01:38 sapier a message passing mechanism
01:38 hmmmm message passing yeah
01:39 hmmmm except getters would be a problem
01:39 hmmmm making decisions based off of something that needed a get
01:39 sapier message passing's problem is if you do it bad you do a lot of copying
01:40 sapier imho the voxelmanips are actually a quite good way to do it. e.g. current usecase
01:40 sapier right now you need to actually read the map to specify the location ... but ... why?
01:41 sapier mapgens for example usually don't care about map
01:41 sapier so why not just specify the extents?
01:41 cg72 if we dont read it or check  couldnt it crash it lol
01:42 sapier once the extents are specified a mapgen can do whatever it wants, and then on save all data is saved back to map in one transaction
01:42 sapier now a different usecase
01:42 sapier manipulating an existing area
01:43 sapier reading reads full data but additionaly some sort of timestamp per block
01:43 sapier once user does want to save first thing to be done is checking the timestamps for modification, if this did happen the save is denied
01:44 Miner_48er joined #minetest-dev
01:45 sapier but I guess noone wants to add that transactional code to don't know how many functions
01:45 hmmmm sapier: ??
01:45 hmmmm not sure what you mean by having to read the map to specify the location
01:46 hmmmm you certainly don't have to read map before writing map
01:46 sapier I haven't seen a different function in api ... but I haven't used voxelmanip a lot so I could've missed
01:46 hmmmm read_from_map(); get_data(); do stuff with data; set_data(); write_to_map();  is the normal pattern of use
01:47 sapier yes and what I'd suggest is skipping first two parts
01:47 hmmmm if you're just writing blockfulls of map though you don't need to read_from_map() or get_data()
01:47 hmmmm but if you're making some sort of shape, and you didn't read the map in first, you'll have content_ignore everywhere else
01:47 hmmmm aha
01:47 sapier but for what I remember write_to_map doesn't take minp and maxp parameters
01:47 hmmmm but that's okay because the way voxelmanip is right now it skips over blitting back content_ignore
01:48 sapier so how does voxelmanip know where to write?
01:48 hmmmm because of the area emerged.....
01:48 hmmmm hold on a moment, let me check something
01:49 hmmmm i think you're right actually
01:50 sapier well It's how I understood doc, so either doc is missleading, or I'm just interpreting it wrong ... wouldn't be first time
01:50 VanessaE and I believe I said THAT twice tonight.
01:50 sapier so two steps to get zenos function in a clean way
01:50 VanessaE (generally, not specific to vmanip)
01:50 sapier first make voxelmanip work without reading map
01:51 hmmmm oh god you're right
01:51 hmmmm this is bad
01:51 hmmmm sapier:  i'll fix it
01:51 sapier second add a function to voxelmanip to set an area within the voxelmanip instead of set_data
01:51 hmmmm this was quite idiotic.. the minp/maxp should be specified in the constructor or the get_voxel_manip() call
01:52 sapier yes that's a even better solution
01:52 hmmmm that should fix everything
01:52 sapier maybe not
01:52 hmmmm why not
01:52 sapier he said set_data is to slow
01:52 hmmmm it's not..
01:53 hmmmm you iterate through the table passed from lua and perform assignments
01:53 hmmmm like actual assignments, not operator overloaded nonsense
01:53 hmmmm no tricky things going behind the scene
01:53 hmmmm just copying memory
01:53 Zeno` no I didn't say that
01:54 Zeno` I don't care AT ALL about the speed
01:54 Zeno` I said that it's slower
01:54 sapier ok so set_data is not an issue, good
01:54 hmmmm i'll be the first to admit that voxelmanip is slower than set/get_data() for smaller areas... because of the enormous amount of overhead due to allocating large chunks of memory, copying tables to and from lua, etc.
01:55 sapier time to get some sleep :-) good moment now ;-) good night
01:55 Zeno` My real reason for not using voxelmanip in the C++ was because I don't quite trust it yet
01:55 Zeno` Not because of speed :)
01:55 sapier left #minetest-dev
01:57 Sokomine regarding mapgens and mods as such: one common problem is to find out which nodes are surface nodes. mods that want to put something on ground nodes have this problem. it isn't easy to find ground nodes universally
01:57 hmmmm taoki:  the air idea is good, if not a little obvious, but highly inefficient
01:58 hmmmm taoki:  and then there's the fact that it'd seriously mess up multi-threaded map generation
01:58 Zeno` The fact that the C++ version is faster is just a nice side-effect
01:58 VanessaE Sokomine: plants_lib does that by doing a find_nodes_in_area() call on the desired surface(s), searching through the returned table for everything that has air above it, and returning a new table with the results.
01:59 hmmmm arbitrarily-sized schematics placed on chunks of map at a time rather than the whole thing is a decivingly difficult problem
02:00 hmmmm instead of entertaining such nonsense, the problem ought to be simplified.  but this requires pre-generating large areas of map beforehand.  this could possibly work out okay if used with discression
02:05 Sokomine vanessae: sounds like a good solution for plantslib. sometimes, the height and not the actual node type is what is of intrest
02:06 VanessaE yes, exactly.  the node type in the surface gets read and used later, but in the initial filter, all I care about is getting a list of positions of nodes that constitute "a surface with air above it" within the search region.
02:06 VanessaE that's another function that I would love to see added to the API, but I don't suppose it'll happen.
02:06 VanessaE (another "bullshit" idea, I'm sure)
02:06 Zeno` It'd be worth doing IMO
02:10 Sokomine it would be great if the api could be extended. that's the purpose of an api after all - to avoid that everyone has to re-invent the wheel
02:11 Sokomine for that matter, it does not matter to a modder if an api function is implemented in c++ or just part of builtin. the point is that it's there
02:11 VanessaE EXACTLY.
02:11 Zeno` Which is kind of what I've been saying all along lol
02:12 Zeno` Sokomine explained it better
02:31 Inocudom I heard it said that entities could use an api.
02:32 Inocudom I would like to see carts in the base game some day. Opening and closing chests too (very impressive thing Jordach did there.)
03:44 Hunterz joined #minetest-dev
03:51 paramat joined #minetest-dev
03:53 paramat hmmmm is quite right to resist pull #1583, voxelmanip is perfect for this
04:08 Zeno` paramat, the problem I have with voxelmanip is that it might set the node, or it might not
04:09 Zeno` voxelmanip would be fine if I could trust that the data is actually set (and I can't do that at this point in time)
04:09 Zeno` Either way functions for these are desirable so that when voxelmanip does become more predicatable the implementation of the function is simply updated
04:10 Zeno` Anyway I've removed the pull request for now
04:10 Zeno` And "voxelmanip is perfect for this" is not an argument for not having these as API functions
04:11 Zeno` Why should every mod have to write the same thing? Does C have fputs()? Surely it's trivial to implement via fputc() in a loop, so fputs() shouldn't be part of the C standard
04:12 Zeno` In fact all of string.h is trivial to implement. Every program should write their own versions of these functions!
04:12 * Zeno` wanders off
04:12 NakedFury get it all off your chest
04:16 Zeno` heh
04:16 Zeno` Well, while I'm at it I've got an issue with the use of assert() in the codebase
04:16 Zeno` Nah, I won't go there
04:19 zat joined #minetest-dev
04:28 hmmmm God dammit I am so stupid
04:28 hmmmm grrrrrrrrrrrr
04:28 hmmmm this weekend I promise I'm going to give schematics some love
04:28 VanessaE stupid?
04:29 hmmmm people use schematics so much
04:30 Zeno` Couldn't they be loaded with voxelmanip?
04:31 hmmmm the reason why schematics are part of the core is because they're technically a part of mapgen
04:32 Zeno` What about mapgens that clear or modify cubic areas?
04:32 hmmmm you create a schematic file, then you specify it in your mod as some structure placed randomly at generation time
04:32 hmmmm except
04:32 NakedFury joined #minetest-dev
04:32 hmmmm goofballs decided it's a good idea to seriously abuse it and now it has to do like 50x as many things as it was originally intended
04:32 hmmmm "pllllllease add this one feature hmmm, please!"  and so i listen
04:33 Zeno` interesting
04:33 hmmmm but, yes, it really could have been accomplished with voxelmanip.  schematics predate luavoxelmanip by a little while
04:33 hmmmm the most elegant solution to voxelmanips, in their current usage, would be to implement it as a gigantic wrapper around luavoxelmanip.
04:34 hmmmm the most elegant solution to schematics* i mean to say
04:34 Zeno` I'm just a bit wary of voxelmanip at the moment :(
04:35 Zeno` It's fine if you only have one mapgen mod, but when you have some using set_node() and some using voxelmanip... well, you know the issues
04:35 hmmmm oh that
04:35 VanessaE yes, "that".
04:35 hmmmm I never actually saw that myself
04:36 Zeno` My glowworms mod was using voxelmanip but I had to change it so that plantlife would work
04:36 hmmmm schematics do use voxelmanip though, internally, so if you use minetest.place_schematic() at all in your mod... guess what..
04:37 hmmmm man, schematics are completely foobar right now
04:37 hmmmm decorations are FUBAR too
04:37 hmmmm everything is fubar because it requires much more development than it's getting, because... that's coding
04:40 Zeno` Could start from scratch I suppose
04:40 Zeno` just keep the Lua stuff because that seems to be designed nicely
04:41 Zeno` But that might break things for a few years
04:41 Zeno` So maybe it's not an option
04:48 paramat hi, back
04:50 VanessaE wb
04:54 paramat Zeno` there's always 'for vi in area:iterp(minp, maxp) do ... (stuff) ... end', that iterates through all nodes in a cubic area fast, no triple lua loop needed
04:55 Zeno` Indeed there is
04:56 Zeno` It's still missing the point, though
04:56 blaise I just tried to compile git minetest again, after maybe a year or so? and this is what happened.. http://pastebin.com/TXuexVGG
04:57 blaise I know /usr/lib64/libGLESv2.so is for embedded devices..
04:58 blaise and this is an amd64 machine with a radeon RS690M (X1200)
04:58 blaise so clearly that file shouldn't exist on my machine
04:59 blaise the configure script also properly detected what gl was available and what wasn't
04:59 blaise just wanted to toss that out there.. :)
04:59 paramat setting or removing nodes in a cubic volume ... personally, after writing 49 mods i can say such an API is almost completely useless =}
05:00 Zeno` paramat, all your mods use voxelmanip don't they?
05:00 paramat most do
05:01 Zeno` And do all your mods work alongside other mods that do mapgen stuff and don't use voxelmanip?
05:01 paramat ah i need to test that to see if i can replicate Vanessa's bug
05:02 Zeno` The point is, say there was a function called remove_nodes_in_area(). The implementation of that function could /change/ without having to update mods
05:03 Zeno` e.g. if that function had existed all along, no mods would *not* be using voxelmanip now (if the remove_nodes_in_area() was changed from setting nodes to using voxelmanip and all mods used this standard way of doing it)
05:03 Zeno` So I disagree that it's useless
05:04 Zeno` There are, of course, other reasons why reinventing the wheel for every mod is not desirable
05:06 Zeno` I'd like to use voxelmanip for everything as well, by the way
05:07 Zeno` But I've experienced the same bug as Vanessa
05:07 paramat ah
05:07 Zeno` in my own code
05:07 Zeno` So, it can't be that uncommon
05:07 paramat was either of the mods plantlife or snow?
05:08 Zeno` One mod was my own and the other mod was plantlife
05:08 Zeno` But I can replicate it without using plantlife
05:09 VanessaE paramat: current plantlife, mind you.  two on_generated calls, nothing but set_node() operations and a few entities in one of the sub-mods.
05:09 paramat ah okay
05:09 Zeno` And I can't work out why (the C++ for that area of things is confusing... well I find it confusing)
05:09 paramat yeah i am bemused too
05:10 Zeno` The C++ (from memory) calls a "helper function" that's written in Lua that iterates through registered on_generated callbacks
05:10 Zeno` But, then when it comes back to C++ .... I dunno how it's happening
05:10 Zeno` i.e. comes back to C++ via the mapgen Lua
05:11 paramat i'm trying to suspend judgement until i can replicate with 2 of my own mods :)
05:11 Zeno` voxelmanip specifically... it seems to have the same data as /before/ any of the mapgen mods are called
05:11 Zeno` So perhaps while it's iterating the map needs to be unlocked between calls to the on_generated callback so that voxelmanip gets up-to-date data
05:12 Zeno` I *think* that's what's happening anyway
05:16 Zeno` Is hmmmm still here?
05:16 Zeno` I think hmmmm may have started looking into it, I'm not sure
05:26 Inocudom I must go now. Bye.
05:26 paramat left #minetest-dev
05:32 hmmmm hello
05:32 hmmmm i am not looking into it yet, i have stuff to look into for work
05:32 hmmmm ...my workday is all day because i work at home
05:33 VanessaE is *anyone* gonna look into it?  it's been a problem since last February.
05:35 VanessaE https://forum.minetest.net/viewtopic.php?p=129941#p129941   <----  first report I recall seeing of this issue.
05:46 Hunterz joined #minetest-dev
05:48 VanessaE nnl
05:48 VanessaE bbl*
06:21 jp joined #minetest-dev
06:21 jp !seen sapier: read the comments & fix that please : https://github.com/minetest/minetest/commit/7993696fc4b59354974059e1f8d6b3063d316411
06:25 jp joined #minetest-dev
06:38 Garmine joined #minetest-dev
06:47 jp left #minetest-dev
07:00 NakedFury joined #minetest-dev
07:02 OldCoder joined #minetest-dev
07:36 Calinou joined #minetest-dev
07:51 AnotherBrick joined #minetest-dev
07:58 RealBadAngel joined #minetest-dev
09:06 Amaz joined #minetest-dev
09:17 Amaz joined #minetest-dev
09:17 HLuaBot joined #minetest-dev
09:17 Taoki joined #minetest-dev
09:17 deltib joined #minetest-dev
09:40 CraigyDavi` joined #minetest-dev
09:50 RentedMu1e joined #minetest-dev
09:50 w00tc0d3 joined #minetest-dev
09:51 Anchakor1 joined #minetest-dev
09:52 Weedy joined #minetest-dev
09:55 gentoobr1 joined #minetest-dev
09:57 Tesseract joined #minetest-dev
10:02 ImQ009 joined #minetest-dev
10:10 Gethiox-v2 joined #minetest-dev
10:11 book` joined #minetest-dev
10:25 gentoobro joined #minetest-dev
10:30 Ritchie_ joined #minetest-dev
10:32 Amaz joined #minetest-dev
10:33 VargaD_ joined #minetest-dev
10:38 sfan5 joined #minetest-dev
10:52 celeron55_ joined #minetest-dev
10:53 proller joined #minetest-dev
10:55 blais3 joined #minetest-dev
10:55 Amaz joined #minetest-dev
10:58 Gethiox-v2 joined #minetest-dev
11:02 hax404 joined #minetest-dev
11:04 ImQ009_ joined #minetest-dev
11:04 CraigyDavi`` joined #minetest-dev
11:04 OldCoder joined #minetest-dev
11:11 Evolykane joined #minetest-dev
11:18 ImQ009_ joined #minetest-dev
11:19 CraigyDavi` joined #minetest-dev
11:23 lanxu joined #minetest-dev
11:30 kahrl_ joined #minetest-dev
11:45 RentedMule joined #minetest-dev
11:47 Amaz joined #minetest-dev
12:04 Jordach joined #minetest-dev
12:15 kahrl joined #minetest-dev
12:16 Taoki joined #minetest-dev
12:36 blaise joined #minetest-dev
12:41 Krock joined #minetest-dev
13:40 NakedFury joined #minetest-dev
13:52 hmmmm joined #minetest-dev
13:58 NakedFury joined #minetest-dev
14:22 VanessaE joined #minetest-dev
14:35 Evolykane joined #minetest-dev
14:43 PenguinDad joined #minetest-dev
15:11 Calinou joined #minetest-dev
15:37 Amaz joined #minetest-dev
15:40 zat joined #minetest-dev
16:24 Hunterz joined #minetest-dev
16:49 kaeza joined #minetest-dev
18:01 Weedy joined #minetest-dev
18:01 Weedy joined #minetest-dev
18:27 khonkhortisan joined #minetest-dev
19:00 Krock Badabooom and the silence is dead.
19:01 sfan5 what?
19:02 VanessaE you....
19:02 VanessaE you broke it
19:02 VanessaE look at that, the silence is all over the floor now, shattered to pieces.
19:02 Krock >:D
19:02 Krock dejà vu..
19:13 Calinou …sans mono
19:14 Amaz joined #minetest-dev
19:15 cg72 joined #minetest-dev
19:16 VanessaE ...bold
19:18 kaeza joined #minetest-dev
19:19 cg72 bold?? what i miss?
19:21 VanessaE everything :)
19:21 cg72 crap
19:21 VanessaE it's all HIS fault
19:21 * VanessaE points at Krock
19:22 cg72 Krock what did you do now?
19:23 * Krock points with cg72 at VanessaE
19:24 * cg72 points at cg72
19:24 CaIinou joined #minetest-dev
19:35 Miner_48er joined #minetest-dev
19:56 ShadowNinja joined #minetest-dev
20:13 proller joined #minetest-dev
20:29 NakedFury joined #minetest-dev
20:29 proller joined #minetest-dev
21:21 proller joined #minetest-dev
21:25 proller joined #minetest-dev
21:29 SmugLeaf joined #minetest-dev
21:29 SmugLeaf joined #minetest-dev
21:43 Weedy joined #minetest-dev
21:43 Weedy joined #minetest-dev
21:43 CraigyDavi` joined #minetest-dev
21:45 Jordach_ joined #minetest-dev
21:47 Weedy joined #minetest-dev
21:52 SmugLeaf joined #minetest-dev
21:52 SmugLeaf joined #minetest-dev
22:01 Taoki joined #minetest-dev
22:03 VanessaE joined #minetest-dev
22:07 SmugLeaf joined #minetest-dev
22:07 SmugLeaf joined #minetest-dev
22:11 Miner_48er joined #minetest-dev
22:11 Jordach joined #minetest-dev
22:11 RentedMule minetest 4.10 -- ppa stable version -- is crashing on startup with two of my worlds, at "Running TestSocket" -- it complains that address is already in use, but netstat shows nothing listening on that port
22:11 RentedMule what should I look at next?
23:35 paramat joined #minetest-dev
23:44 paramat hmmmm, before you start your weekend of hot luuurve with schematics, i need to make a request that the 'forceplacement' bool will remain
23:45 paramat it's essential for my generative projects such as https://forum.minetest.net/viewtopic.php?f=11&amp;t=9577

| Channels | #minetest-dev index | Today | | Google Search | Plaintext