Time Nick Message 01:01 hmmmm welp I got terasology working and then Exception in thread "main" java.lang.OutOfMemoryError 01:25 paramat hmmmm do you know about cube world? https://picroma.com/media it's the only other voxel game other than MC and MT that interests me 01:27 paramat most of the blocks aren't diggable though 01:27 hmmmm well there's why it loads so fast 01:28 hmmmm they pregenerate the meshes 01:28 hmmmm which means they're also in a better position to pregenerate lights 04:23 paramat non-eased 2d noise is essential for making widely spaced towers to the floatlands that do not look phallic 04:23 hmmmm dicklands v3.0 04:24 hmmmm why do you say non-eased? 04:43 hmmmm so I was thinking about things a little bit more, and method #2 for alternative lighting isn't actually limited by the amount of spread since the only thing that matters are light values at the mapblock edge 05:40 paramat https://cdn.mediacru.sh/8/8X1EueLVjzv3.png https://cdn.mediacru.sh/P/PuO-2rK_0s4q.png 05:41 paramat with 2d noise these would have a round cross section and a rounded knobby-end 05:41 paramat now they have a diamond cross section and are spiky and blade like 05:44 hmmmm ahh that's great stuff 05:45 paramat it's 2d noise that when it exceeds 1.1, the amount it exceeds is ^ 4 then multiplied by a factor 05:45 hmmmm i love how the 3d noise makes a bridge over the river 05:45 paramat yeah good bridge 05:45 hmmmm how do you make rivers again? 05:45 paramat https://github.com/paramat/levels 05:45 hmmmm intersection of two different noises or something 05:46 paramat um, terrain height = abs(2dnoise) creates the valleys 05:47 hmmmm oh 05:47 paramat then place that on top of a large scale 2d noise to vary the riverbed height 05:47 hmmmm I used to use low points of 2d noise to make rivers but they formed a lot of closed loops 05:47 hmmmm anyway looking at minecraft's generation method made me rethink things 05:48 paramat yes i get that too, so i use a very large scale and low persistence 05:48 hmmmm it might be a good idea to statically generate an overview of the world on world init 05:48 hmmmm so that way I can set map-wide details 05:48 paramat (see riverdev mod for my river method) 05:49 paramat terasology creates it's world that way 05:49 hmmmm minecraft does rivers by fractals 05:49 ShadowNinja So it seems like lua-aip-md is approved. I'll merge soon, unless you object hmmmm? 05:49 hmmmm what's that? 05:49 hmmmm oh the documentation md format? yeah 05:50 hmmmm so it assigns pixels numbers from 0 to 3 05:50 hmmmm and then the borders between 2 and 3 blocks it assigns to be part of the river 05:50 hmmmm and then it does some kind of polynomial smoothing 05:50 paramat interesting 05:50 hmmmm i like the idea of having a larger overview of the map to work with but i don't like that algorithm 05:50 hmmmm it sucks 05:50 hmmmm well maybe it produces good enough rivers but i can do even better 05:51 paramat of course 05:51 hmmmm i can randomly generate points over the map and use them as inflection points for a bezier curve 05:51 paramat i've been aiming to have terrain detail on all scales up to almost world scale 05:51 hmmmm bezier curves typically make great rivers 05:52 * paramat will research bezier 05:52 hmmmm yeah that's the real big problem with perlin noise 05:52 hmmmm you simply can't get world-scale features 05:52 hmmmm they keep repeating too often, and if you set the spread factor too large, that causes other problems 05:52 hmmmm like lack of detail 05:52 hmmmm so then to compensate you need to add more octaves 05:53 hmmmm but then adding more octaves causes more smaller versions of the features you're aiming to have 05:53 hmmmm etc. 05:53 hmmmm i haven't experimented with lacunarity too much at this point, but i have a feeling that might be another way to overcome this issue 05:53 hmmmm i like what it did with 3d noise blobs 05:54 hmmmm i don't like what lacunarity does for 2d noise so far 05:54 hmmmm maybe i just haven't hit the right values 05:54 hmmmm i really haven't been doing much mapgen stuff, period, as of late 05:55 ShadowNinja BTW, the md Lua API could use some improvement, but that'll be 10000x easier after it's merged. 05:55 hmmmm just do it 05:56 paramat in watershed/riverdev, there are several terrain characteristics, each with it's own scale and low octaves. together they cover all scales of detail 05:57 paramat well up to 8000 nodes 05:57 hmmmm typically i've noticed that noise looks bad with less than 3 octaves 05:57 hmmmm the kind of noise we have anyway 05:57 paramat ^ yes 05:57 hmmmm simplex noise can offer higher quality noise 05:58 hmmmm i need to figure out how to optimize that first, though 05:58 paramat i considered 8000 nodes to be okay to repeat at because that's a good size for 'kingdoms'/continents/nations 05:58 hmmmm maybe for the meantime i can add in the point value functions 05:59 paramat i'm very keen on simplex, can't get excited for point value 05:59 hmmmm the problem I have with simplex noise so far is that it seems to make a lot of tiny circles 05:59 hmmmm probably just requires jiggering some parameters 06:02 paramat 8000 node nations means up to 64ish nations, so each player could have their own territory of 8knx8kn, assumiing a max player number of 64 06:03 paramat guess 16 players is more realistic, so 16knx16kn territories 06:04 paramat ^ those screenshots are simplest possible non-eased 3D noise mapgen (apart from the towers) yet it looks so good 06:12 paramat so anyway hmmmm .. can i go ahead and add v5 type caves to v7? your idea of using ore veins is clever, but in practice those would need to be registered in a mod or in builtin, it's all a bit messy. i would like the cave params *in* the mapgen as with v5 06:15 paramat i can't stand this https://cdn.mediacru.sh/M/Mwa6aGDuDZZz.png any longer =P 06:17 paramat interstingly the highest dark surface is at y = 46.5 06:17 hmmmm that's caused by problems with the lighting algorithm 06:17 hmmmm not the caves themselves 06:17 paramat yes happens with water too 06:17 paramat river water 06:17 hmmmm what i would like is a combination of v5 caves for routes and v6 large caves for caverns... 06:17 hmmmm no lava inside the v5 cave routes 06:18 paramat oh yes i forgot, large lava caverns would be as before 06:18 paramat that was my plan 06:18 paramat with those well below the surface chunk 06:19 paramat okay will work on it, thanks 06:23 paramat mmm .. but then perhaps the lava caves should be made with 3d noise too, the tricky bit is how to decide the lava level, i'll think on it 06:27 paramat .. i might confine each cavern to a mapchunk+shell as before, and could re-use mountain noise as the shape noise since it's not used down there 06:27 paramat oops no i cant, mountaind are optional 06:27 hmmmm too much 3d noise 06:28 hmmmm you should isolate the cave carving and put it into cavegen.cpp 06:28 paramat okay 06:29 paramat but the tunnels left in the mapgen, as in v5 06:30 hmmmm ?? 06:30 hmmmm oh hold on 06:30 hmmmm hrmmmmm 06:31 hmmmm CaveGenV7() can consist of CaveGenV5() + CaveGenV6() with large_cave == true 06:32 hmmmm ermm 06:32 hmmmm leave CaveGenV7 as it is right now, you'd only need to modify MapgenV7::generateCaves() 06:32 hmmmm we'll just not use cavegen v7 06:35 paramat okay 07:58 hmmmm remind me TODO: remove proller's freezemelt bullshit from read_content_features 09:35 paramat hmmmm also freezemelt is in lua api txt node definition line 2862 09:49 T4im hm.. do mods have to do something different now to support the new screwdriver, or is its multinodehandling currently bugged? 11:08 est31 If we use certs in a smart way, we neither need signing nor server_name-like constructs 11:08 sapier well a cert is always signed ;-) at least self signed ... btw that's what I mentioned yesterday ;-) 11:11 est31 in fact we dont even need certs, diffie hellman with session keys is enough 11:11 est31 only need to make sure we have some sort of channel binding 11:11 est31 (im now speaking about the "rogue server" attack) 11:11 sapier no it's not enough 11:11 est31 why not 11:12 sapier because it's only gonna protect this single connection and wont provide any improvement for future connects 11:13 est31 and what is the attack? we have channel binding 11:13 est31 so no relayed login possible 11:13 sapier user connects to server a 11:13 sapier some time passes 11:14 sapier user connects to server a ... which now is server b ... how could user ever find out server b is not a prior having a fully established connection? 11:15 sapier using certs verifying a server you try to connect against a already known cert would solve this 11:15 est31 is not a prior? 11:15 sapier ONLY for future attempts of course 11:16 sapier with prior I mean prior username and more importand passwd/hash transmission 11:17 est31 so you mean server b acts as client for server a using another username? 11:17 sapier for example 11:18 sapier a simple proxy 11:18 est31 but the user can't login as same username, as the server b doesn't know the password 11:19 sapier there's one problem with security, ONE leak is enough to render every further atempt useless ;-) 11:19 est31 and there is channel binding 11:19 est31 yeah 11:19 sapier server b would still get username and password hash 11:19 sapier as client wouldn't even know he's connecting to wrong server 11:20 est31 we could use SRP, which seems to give only one attempt 11:20 sapier user would recognize once having joined and beeing in completely wrong world 11:20 est31 username is no secret 11:20 sapier we could but why should we build our own mechanism if there are exisiting ones? 11:21 est31 storing certs still give you problems 11:21 sapier username is not a secret but still nice to know for rouge servers 11:21 sapier you'd get at least a list of validated users worth to attack 11:21 est31 when I connect to servers.minetest.net/list, I currently see almost all users connected to minetest servers 11:21 Calinou world downloading is possible, so several servers could have the same world :P 11:22 Calinou and same mod set 11:22 sapier well so user may not even recognize immediatly he's in wrong world 11:22 sapier serverlist shows usernames? 11:22 est31 not in the gui 11:23 est31 but in the json file 11:23 est31 and on the html page too 11:23 sapier grrr once you don't check every commit ppl add crap like this 11:23 Calinou you can find it on servers.minetest.net 11:23 est31 when you hover over the srv name 11:23 Calinou it is useful, to find people 11:23 sapier exactly ... even those ppl who don't want it 11:23 Calinou however servers.minetest.net/list shouldn't show it, as the information isn't shown (waste of bandwidth) 11:23 Calinou it's a widely accepted feature in games 11:23 sapier and there's not setting to disable it 11:23 Calinou use a fakename if you don't want to be found 11:24 est31 ok that's an argument for certs 11:24 sapier that's just a workaround a sane way to do it make a client tell server "I don't want you to spread my online state" like it's been common until facebook 11:24 est31 but still you need a good way to distinguish it in the gui 11:24 Calinou a client-side setting to hide you from user list would be good 11:25 Calinou but don't remove all usernames 11:25 Calinou finding people can come extremely helpful at times 11:25 sfan5 friendly reminder: this is just a game, not a banking application 11:25 est31 ^ 11:26 est31 I esp. think its quite weird people freak out that other ppl can see their online status but when fb or whatsapp sees it and shares it with marketing corps nobody cares 11:26 sapier sfan5 if this was a banking app we'd have to talk about verified certs including secure infrastructure for generation too ;-) 11:26 sfan5 sapier: we were already talking about certs yesterday 11:26 sapier right now we're more about talking a mechanism similar to ssh where a servers fingerprint is verified once you did an initial connect 11:27 sapier and yes ssh uses certs too ;-) 11:27 sapier self signed one 11:27 sapier s 11:27 est31 signing (by CA or similar mech, not self-) is only neccessary when the cert maps to a name 11:28 sapier imho we don't need a ca as we don't have a way to establish a chain of trust anyway 11:28 sapier trust is established on user accepting a certain server 11:28 est31 I also think we dont need cas. 11:29 sfan5 I also think we don't need any of this certificate stuff. 11:29 sapier the only thing we could make sure is that once a server is known user will be warned if something is strane 11:29 sapier strange 11:29 sapier better suggestions on how to get done what I just said? 11:29 est31 you need to show in the gui whether a server is known or not 11:30 est31 I'm still for diffie-hellman + srp + channel binding 11:30 est31 no certs involved 11:30 sapier "Connecting to not yet known server are you sure?" + "Server chnaged identification do you really wanna connect?" 11:31 sapier that's not gonna provide any integrity between different connections 11:31 est31 and when the list features another server with the same name, just with a typo? 11:31 sapier it's almost as useless as now 11:31 sapier then you're warned about a new server! 11:31 sapier everytime the id changes you're told about it 11:32 sapier of course I know ppl tend to ignore those messages but there's not much more we can do without damaging freedom of minetest 11:33 est31 I dont think the gain is that large its a game after all 11:33 T4im why are you concerned about servers impostering other servers? 11:33 sapier well if there's no gain then leave it the way it is 11:33 sapier I'm against establishing a new login mechanism without doing it right this time 11:33 T4im in the modern open source games based on q3 you generate clientcerts as well... makes any binding onto a name unimportant until a client decides to /register the nick there… the whole concept of passwords in minetest is actually quite an odd one compared to that... (I thought when starting minetest, that it was a pw for private servers you only get in with invitation) 11:34 est31 no nowadays you can set up a server, get people logged in, and then use their hashes to log in at other servers and cause harm 11:34 T4im evolved from the originally proprietary cd-key to unique ID's and then to client certs 11:34 est31 I think there is no way of doing it 100% right 11:34 sapier t4im how are client certs supposed to work if you connect from different machines? 11:34 T4im you transfer your "qkey" in that case 11:35 sapier so it's basically a big long stored PASSWORD ;-) 11:35 T4im well a stored secret 11:35 sfan5 T4im: "that it was a pw for private servers you only get in with invitation" the password field can also work that way when it's the first time you sign into a server 11:35 T4im but one that is not send to servers 11:35 sapier not sure if I'd consider this to be an advancement ;-) 11:36 T4im it added however also an identifiable mark against banned troublemakers :) 11:36 T4im additional to ip and name 11:36 sapier est31 true there's no way to get everything done but imho we should do everything we already know about 11:37 sapier and if you're already implementing something as complicated as you suggest the self generated certs wont make a significant difference ;-) 11:38 est31 I'm happy with any progress, as long as it happens 11:39 sapier well unless you do it ;-) nothing s gonna happen. I have up implementing security to minetest long ago, there's to many ppl opposing to it 11:39 sapier minetest is almost like a trojan ;-) 11:40 sapier the only thing missing is client side lua ;- 11:40 sapier ) 11:40 * T4im feels a cold chill 11:41 sapier well that's the reason why client side lua was not done by now. If this is added it has to be right at first try. We're not gonna accept a "let's implement security later" commit for this 11:42 T4im thank you, whole heartedly for that decision ;) 11:42 est31 thx too 11:43 Zeno` Have we decided what "client side lua" actually is now? ;) 11:43 Zeno` There seemed to be some confusion the other day 11:44 Zeno` Some people thought it meant "the server will automatically send some Lua to the client to execute". I've always thought it meant being able to write mods for the client 11:44 sapier it's "server sends lua to client" 11:45 sapier mods on client don't make any sense 11:45 Zeno` sure they do 11:45 sfan5 it's both 11:45 sapier for what zeno? 11:45 Zeno` lots of things; modifying HUD, custom formspecs, custom bindings, etc etc etc etc 11:45 sfan5 ^ 11:46 sapier no you can't do things like that 11:46 est31 or a "stored passwords" mod 11:46 sapier hud as well as formspec data as well as evaluation is always done on server side 11:46 sapier the only thing you could do is writing a bot 11:47 est31 write a bot using lua. you can already now write a bot 11:47 sapier and sfan5 no it's not both, as those tasks are completely different 11:47 Zeno` of course you can 11:47 Zeno` I run a modified client 11:48 Zeno` I'd rather use mods to do that instead of changing the client's source code :/ 11:48 sapier Zeno good luck on different mods 11:48 Zeno` different mods? 11:48 sapier mods may expect clients not to mess around with their formspecs so if your client does good luck ;-) 11:48 Zeno` how is HUD done server-side? 11:49 sapier hud element data is stored on server 11:49 sapier as well as position and type 11:49 sapier server tells client what exactly to be shown 11:49 Zeno` this is what I meant the other day by separating the client from the server much more than it is right now 11:49 Zeno` sapier, but please read the logs (this was already discussed) 11:49 Zeno` I think 2 days ago? 11:50 Zeno` Add to the discussion if necessary, of course 11:50 sapier well if you guys did have a look at the pull requests you'd have recognized that separation of hud is already done 11:50 Zeno` yeah, I used that as an example only :p 11:50 sapier I did this about a year ago 11:51 sapier still it's gonna break everything so it's not gonna be added anytime soon ;-) 11:51 Zeno` Server sending arbitrary code to client to execute != client-side modding! 11:51 sapier sfan5 said it's same not me 11:51 sfan5 what 11:51 sfan5 i said client-side mods is both 11:52 sapier (12:45:10) sfan5: it's both 11:52 sfan5 yeah 11:52 Zeno` It's a terminology issue but they are two different things so there needs to be the distinction 11:52 sfan5 both != same 11:52 Zeno` do we have server side modding yet? 11:52 sapier we've been talking about "client side lua" that term was only for server sending code to client to be executed by now 11:52 Zeno` Does that mean the client can send the server arbitrary code to execute? Of course not 11:52 T4im NaCL could provide you with a good client side sandboxing… amanieu started porting unvanquished from qvm to it too a while back 11:53 T4im haven't checked on them latly, so not sure how it stands, but I guess its still better than something custom made 11:53 sapier t4im ... no 11:53 Zeno` So, let's just decide two different terms for the two different thing. Please :) 11:53 sapier we're not gonna add another programming language 11:53 T4im not talking about language 11:53 est31 NaCL is not a language 11:53 est31 its for binary code 11:54 T4im you could write it to execute lua 11:54 sapier for what reason? 11:54 T4im sandboxing 11:54 est31 basically it can be used for sandboxing 11:54 sapier guys this is a freetime project we're not gonna spend months of development for a small piece ;-) 11:54 Zeno` If we don't get the terminology for this correct and objective then there is going to be a big mess IMO 11:54 sapier or did you volonteer to do this? 11:55 sapier client side lua == server sending lua code 11:55 Zeno` what is server side lua? 11:55 sapier client side modding == well ... lua bots, graphical changes things like that 11:55 Zeno` this is what I mean. That definition makes no sense 11:55 sapier -server + client sorry .. 11:55 sapier wait 11:55 sapier what are you telling I didn't write server side lua 11:56 sapier CLIENT SIDE LUA!!! 11:56 T4im sapier: well, the suggestion was partly with the idea, that it is faster to use an existing sandboxing technology that is activly developed than write your own 11:56 Zeno` I'm saying that using your definition (of client-side Lua) that server side Lua would mean the client sending code to the server to execute 11:56 sapier only if there are ppl having experience with that technology and if it's fitting the overall application design t4im 11:57 sapier I don't know anything about nacl ... except it's beeing salt 11:57 sapier exactly and we don't have server side lua zeno 11:57 sapier we have server side mods 11:57 Zeno` ok, so we should have client side mods 11:58 Zeno` and *then* some other term for the server sending Lua for the client to execute 11:58 sapier if you're gonna implement it you're free to do but to me there's almost no use for them 11:58 Zeno` they're both related but very distinct 11:58 sapier no zeno 11:58 Zeno` yes sapier 11:58 sapier because client side lua would solve tons of issues we have due to lag 11:59 Zeno` but why should the /server/ send that Lua to the client? 11:59 sapier the only thing they might have in common is their language ... if that's enough minetest is same as samba 11:59 Zeno` that's not a "mod"; it's... I dunno... a "plugin" or something 11:59 sapier e.g. to make client predict what happens on digging a special node 12:00 Zeno` So have these things as part of the client already 12:00 Zeno` no need for Lua at all 12:00 sapier no we don't 12:00 Zeno` So make these thing part of* 12:00 sapier we can't 12:00 Zeno` why not? 12:00 sapier we'll never know what mods may want to do on digging a node 12:00 Zeno` How can sending code for the client to run get around that? 12:01 sapier so you just suggested client side lua ;P 12:01 Zeno` I asked a question :p 12:01 sapier e.g. you could tell client to execute some lua code on dig 12:02 sapier that code would check for which node has been digged and act like this 12:02 Zeno` yeah, and why does that need to be Lua? 12:02 sapier you can make it javascript too 12:02 sapier or c# 12:02 sapier or java 12:02 Zeno` no, no, no... why does the server have to send that code? 12:02 est31 or llvm bytecode 12:02 est31 because its customized 12:02 sapier but I guess it'd be helfull to use same language as the mods itself are written 12:03 sapier because mods are on server 12:03 Zeno` I do understand what you're saying, I'm just suggesting that there needs to be two different terms 12:03 Zeno` because they're different 12:03 sapier guys could you pleas get known to mintests architechture? 12:03 Zeno` sapier, I'm pretty sure I know it very well now 12:03 sapier argh 12:04 sapier ok I'm defining: HANS == lua mods on server 12:04 sapier OTTO = server sending lua code to client 12:04 Zeno` and the third? 12:04 sapier and ZEUS == lua mods run on client only 12:04 Zeno` Ok, nice 12:04 sapier enough terms now? 12:04 Zeno` can you add that to the dev wiki? 12:04 sapier so we already have HANS 12:04 sapier and I think OTTO would help 12:05 sapier but I see no valuable use for ZEUS 12:05 Zeno` you are underestimating ZEUS 12:05 sapier possible proove me wrong 12:05 Zeno` could the client cache OTTO code? 12:05 sapier no 12:05 sapier well 12:05 sapier not between connections 12:05 sapier OTTO code is transmitted on login 12:06 Zeno` that's a minor detail 12:06 Zeno` if the client and the server both know the OTTO code, why would the server have to retransmit it? 12:06 sapier no it's not because if you want to cache OTTO code over different connections you need server identity again 12:06 Zeno` Why not say "I'm not going to connect you because your OTTO is incorrect! Go here ... to update it!"? 12:07 est31 why not make it like the graphics? store them by their hashes? 12:07 sapier because you don't know if OTTO has to be updated or not 12:07 Zeno` The server does thoug 12:07 Zeno` so it sends that message 12:07 sapier hashes beeing most time as long as code itself? 12:07 est31 thats the issue 12:08 sapier if code size really becomes an issue we can still add caching in first step it's most likely not gonna be added 12:09 est31 ^ 12:10 sapier it's meant for small code pieces ... well I know about ppl usually abusing things in ways they're not meant to be used ;-) 12:10 Zeno` Are there examples of other games doing this? 12:10 sapier still getting this feature correct with secure enough sandboxing is hard enough for first try 12:11 sapier zeno none I know about. Minetests focus on extensibility is unique 12:11 sapier causing a lot of trouble for us ;-) but imho it's worth it 12:12 Zeno` For the server sending "execute this" fragments then some kind of byte code is probably better than Lua. That way if the client does not know what an op does it can simply not run it 12:13 Zeno` It still seems strange to me, but I agree it's worth exploring 12:13 sapier if you use lua bytecode it's still executed and if you reinvent the wheel you're way to limited 12:13 Zeno` I didn't say lua bytecode ;) 12:13 Zeno` isn't being limited the idea? 12:13 sapier own bytecode is crap we don't wanna invent another language ... formspec was silly enough 12:14 sapier we're not gonna make this mistake again 12:14 sfan5 let's use XML 12:14 Zeno` javascript and activeX were big mistakes IMO 12:14 sapier <