Time Nick Message 11:03 MinetestBot 02[git] 04grorp -> 03minetest/minetest: Remove non-existent textures from texture_packs.md 13524721e https://github.com/minetest/minetest/commit/524721ee275875d4c76808bb0c9cb0ed3ccb3ac1 (152023-12-26T11:01:46Z) 11:06 YuGiOhJCJ hello, I was wondering how Minetest is generating the world from a unique seed and storing the full world in an sqlite file. I don't know how many cubes the world is composed but I guess that storing the full world when you start the game will make a too big file, several Go and will use all your disk space. So, what is stored exactly in this file? 11:09 YuGiOhJCJ (note: I already know how to generate the same values from a seed using rand/srand) 11:17 calcul0n the world is generated where players are, and only that is stored 11:17 calcul0n which is already a lot in fact, world data can become pretty big on old servers 11:22 YuGiOhJCJ yes that makes sense but in this case, the player position is very important for the world generation, it means that there is a function that is taking in parameter player position and the unique world seed, generates the world near the player (let's say a 100x100x100 area), but it's a problem because it means that if a player moves forward instead of backward, we will start by generating cubes located forward, from the seed, and so 11:22 YuGiOhJCJ the sequence of numbers generated will not be the same that if the player decided to move backward, how is it possible that the world is always the same, not matters which decision the player take moving any directions 11:23 YuGiOhJCJ ? 11:25 jluc guess it depends on the position, not the direction 11:25 jluc f(x,y) 11:25 calcul0n this is the magic of perlin noise :) 11:25 YuGiOhJCJ I already heard a lot about perlin noise but never read it carefully 11:26 MTDiscord player position is only used to determin which part of the world is loaded/generated but not for how its generated 11:26 YuGiOhJCJ bla8722, yes it makes sense 11:26 YuGiOhJCJ so the world will always been generated the same way, from the unique seed 11:27 calcul0n yes 11:27 YuGiOhJCJ so there is a function f(x,y,z,seed) that is generating from the position + seed always the same value? 11:28 calcul0n exactly 11:28 YuGiOhJCJ ok I think I understand now 11:28 YuGiOhJCJ thanks 11:29 calcul0n i suggest to read wiki's page about perlin noise, you'll get an idea of how it works 11:29 calcul0n https://en.wikipedia.org/wiki/Perlin_noise 11:29 YuGiOhJCJ yep I'll do it thanks 11:32 YuGiOhJCJ can we say that the pseudo-random number generator functions ("srand" to initialize a new sequence and rand to get the next number from this sequence) won't be used when using perlin nose? it looks like that these are two different methods 11:38 calcul0n yes that's different 11:39 calcul0n hmm, hard to explain :) 11:40 calcul0n we could say the same maths are involved but they are used differntly 12:27 YuGiOhJCJ I think I got it, firstly you have a seed, secondly from this seed you create a sequence of numbers that you store in an array, so same seed means same sequence of numbers, now you can call your perlin noise function f(x,y,z,array) that will return the wanted value from the position + array 12:35 YuGiOhJCJ not sure however why they say that the numbers in this array have to be between 0 and 255 12:42 calcul0n this is just how the original implementation work, there are different technics 12:42 calcul0n minetest uses some kind of hash function to get a gradient at (x, y) 12:43 calcul0n here: https://github.com/minetest/minetest/blob/524721ee275875d4c76808bb0c9cb0ed3ccb3ac1/src/noise.cpp#L157 14:09 sy Hey all 17:44 Desour would someone like to play and test out the ghost crypt game with me? 17:44 Desour this here: https://content.minetest.net/packages/group_foo/ghost_crypt/ 17:45 Desour it's a game jam submission, but looks like it's multiplayer only 17:52 MTDiscord I tried it out by running a local server and launching a second instance to join. Of course some of the mechanics you can't fully test, and of course you can't really get a feel for the pace of action when you can only play one part at a time, but it's notoriously hard to arrange play time for competitive multiplayer games (that aren't already popular) so at least it's an option. There's a "testing server" listed. Maybe people could try 17:52 MTDiscord to arrange events where people meet on that server at the same time so there are enough people to play. I'd also be interested in seeing videos and such of actual gameplay with multiple people, which could be a good way for people who can't make those events to see what the game is capable of. 17:53 Guest47 hello 17:53 Guest47 is there some limit to operate techpack in a public server? 17:54 Guest47 someone knows something more about this discussion on forum: https://forum.minetest.net/viewtopic.php?t=19784&hilit=error+generate_key2number&start=150 17:55 Desour that's why I asked. I tried to get ppl to join the test server at the same time, warr0x1p10 17:57 DeepThgt Guest47, from my experience with technic and mesecons, which also have performance issues of the same variety, here is what i have learned has helped perfomance 17:58 DeepThgt switching to postgres from sqlite for the world db, compiling with luajit, disabling hyperthreading 18:00 Guest47 i understand, so not exist something in postgres yet, I need to compilate 18:01 MTDiscord Desour: oh, you meant right now though, right? If that works, good, but if it doesn't work well enough, I'm just suggesting that if you schedule it for some time in the future, like a day or 2 from now, you'll have more time to get people to plan it into their schedules. 18:02 MTDiscord Ideally they should just pick like 3 times a day as "meeting times" around the clock (for people in different TZs) and post that on the description page so that people don't pop in for a random 5 minutes here and there and miss each other. 18:02 Desour yep, that's also what I planned ^^ 18:13 Desour trying again in about an hour, and/or tomorrow 17:00 UTC 18:15 Guest47 so guys, about the error on techpack just compiling a new version with postgres? 18:20 DeepThgt boo mesecons and worldedit dont play nice 19:23 MinetestBot 02[git] 04grorp -> 03minetest/minetest: Make the loading screen progress bar respect "gui_scaling" 13335af39 https://github.com/minetest/minetest/commit/335af393f09b3629587f14d41a90ded4a3cbddcd (152023-12-26T19:21:15Z) 19:33 Desour ok, am back. is there someone who wants to play now? 19:33 Desour if not, I'll just ask again tomorrow, 17:00 utc 19:34 Desour DeepThgt: last time I tried, using worldedit for mesecons constructions worked very good 20:09 DeepThgt Desour my issue wasnt that, it was what i was trying to do 20:10 DeepThgt ty tho 20:14 DeepThgt one good way to crash a server, try setting an entire plane to any node :D 20:14 DeepThgt like, 30927 0 30927 to -30927 0 -30927 20:14 DeepThgt it does NOT like that 20:36 DeepThgt https://imgur.com/umeEIA6.png 20:37 DeepThgt worldedit is too much fun 20:57 DeepThgt m 21:47 MTDiscord Fractally 22:15 MTDiscord Realistically, set node should have a local constant for memory usage per instruction and internally multiply it by the volume of the area and then break it up into steps for on step or something if it exceeds the memory limit of the vm 22:16 MTDiscord Not set node, the voxel area api 22:27 Guest47 hello! Early I was asking about the error described in this post https://forum.minetest.net/viewtopic.php?p=414454#p414454 22:27 Guest47 but I needed to go out, so I'm back to asking again, the one way to solve this is compiling the mod change to postgres? 22:28 Guest47 the error is: TL-ERROR Number2Pos pos is nil 22:28 Guest47 and mod is Techpack 22:29 MTDiscord hmmm, is that mod using minetest.serialize for large data? if so, wouldnt be suprised 22:30 MTDiscord looking at https://github.com/search?q=repo%3Ajoe7575%2Ftechpack%20minetest.serialize&type=code, yeah, yikes 22:31 MTDiscord timebomb waiting to happen 22:44 Guest47 sorry, something wrong in this connection 22:45 MTDiscord (Anyone whose IRC client doesn't collapse join/part noise and gets mad over a little of it is a masochist anyway 😏) 22:46 Warr1024 Sometimes when I upgrade my client it'll get stuck in a restart loop and I'll have like a half dozen reconnections before I get it stabilized again πŸ™„ 22:46 Guest47 yess :D 22:47 Guest47 but i didnt understand how to use this link https://github.com/search?q=repo%3Ajoe7575%2Ftechpack%20minetest.serialize&type=code 22:48 MTDiscord Same, actually; I don't know if the purpose of that link it to show "look: among the uses of serialize in this mod, some of them are clearly working on large 'database'-type objects" or to show "they use serialize way too much, to the point where it seems unlikely they're making consistently good judgements about whether it's appropriate." 22:49 MTDiscord It looks like it could be quite painful to have to evaluate each of those cases to see how big data could actually typically be expected to grow under "normal" non-contrived situations. 22:50 MTDiscord I've frankly gotten away with a lot of serialize abuse myself, without taking care for explicit guardrails, and it's mostly just gameplay factors that have minimized the risk of players finding exploits that can break serializaiton.. 22:50 Guest47 so its about how much each player can amount in every single slot? inv or chest? 22:51 Guest47 the server is allow 999 in each slot for anything 22:51 MTDiscord If, let's say, you use serialize to serialize the content of a container into an item, like a shukler box or whatever ... then, let's say you allow players to write near arbitrarily long books, or you allow them to nest containers, where the contents of the container are stuffed in an item that can get serialized inside another container ... eventually you have a recipe for potential disaster. 22:51 MTDiscord But how can we fix this 22:52 MTDiscord Allowing items in large quantities like 999 isn't an issue, since if they can stack they don't take up more space than the extra 2 digits to represent the quantity ... but things that don't stack and contain arbitrarily large user-supplied data like written books can become an issue. 22:53 MTDiscord The simplest hack to fix it is to use json instead of serialize, which I think does not suffer the same limit problem. But it may suffer other problems (I'm not sure of its rounding behavior), it definitely doesn't represent all possible data structures that lua can, and it may have performance trade-offs. It also won't save you once your tables start getting to be to much for the lua VM itself. 22:54 MTDiscord The real long-term solution is to redesign your thing entirely so that you never have huge hunks of data that need to be loaded/saved at any given time, but everything is either limited in scale, or you break things down into smaller transactions. 22:55 MTDiscord mod_storage, for example, once upon a time sucked because it wrote an entire mod's data as a big JSON file every 5.3 seconds ... but now that it uses an actual database backend, so long as you're not still using the legacy file one, those keys can be accessed one at a time. That doesn't help so much with itemstack or node meta (and I'm not sure about players) but in at least some cases you can redesign to avoid these problems. 22:55 Guest47 I understand now, so techpack is not recommended to public servers with no restrictions to users 22:56 MTDiscord Personally I can't say anything specific against techpack given just what I've seen (I didn't look too deeply into the original issue report) but if indeed it's a problem of not guarding against users creating data that's large enough to cause crashes, then yeah, it's "vulnerable to abuse" basically and so you should consider that when making the decision about whether to use it or not. 22:57 MTDiscord You can still of course even run packs that are vulnerable to abuse, as some choose to do because not having the gameplay features is an unacceptable trade-off for them, and they just have to do more moderation and cleanup work sometimes in exchange. 22:58 MTDiscord Of course, if the "abuse" scenario also can happen eventually under normal gameplay circumstances without deliberate attacks ... well, that's another level of problem to consider. 23:00 Guest47 i understand now, well I think is not solution for now. I was playing in the simple server that uses this mod and it crashes with error and the admin wants to remove, but a lot of constructions that we made was based on techpack, so a caotic situation 23:01 MTDiscord Oh oof, yeah, once you've gotten invested then you've got a problem, and that may be a big part of the trade-off that keeps people just constantly fixing crashes instead of just not running the offending mods anymore. 23:03 Guest47 yes, but he wants to remove. So techage is susceptible to same error? 23:04 MTDiscord I actually have no idea how techage and techpack are related, if at all. 23:04 MTDiscord Never use mintest.serrialize and I stead use minetest.write_json 23:05 Guest47 but, the mod I think was installed from original source, no modifications 23:05 MTDiscord Never using serialize under any circumstances is a bold generalization and, even assuming I could be sure I never ran into data structures that json doesn't handle well (like mixed array/hash tables) I'd still want somebody to verify first that JSON performs at least comparably to serialize. 23:06 Guest47 the admin of server tells he wont change the code byself 23:06 MTDiscord And yes, it shouldn't be the responsibility of a mod user (server operator, singleplayer user, etc) to maintain an incompatible fork of the mod that uses serialization differently... 23:08 Guest47 yes, i know. so concluding no solution until Joe7775 releases a fix 23:09 MTDiscord 🀷 no good ones, probably, at least. 23:09 MTDiscord it's not easy to fix "oops I trusted the wrong serialization format" either 23:10 MTDiscord you have to do stuff like providing an upgrade and migration path for existing worlds 23:10 MTDiscord and the fix isn't necessarily just to slap JSON in there instead; often this is a warning that the serialization format itself is just a symptom of dealing with irresponsibly large objects as monoliths to begin with. 23:10 MTDiscord yep 23:12 Guest47 well, so if I found this serielize code in techage, probably it has the same problem, i'll check this 23:14 Guest47 and yes, I guess he does 23:15 Guest47 https://github.com/search?q=repo%3Ajoe7575%2Ftechage_modpack%20minetest.serialize&type=code 23:17 MTDiscord Lots of people use minetest.serialize and in 99.9% of cases it poses no issue, so just looking for the presence of the code is only very weak evidence that there's cause for concern. To really know, you kinda have to analyze what they're doing with it. 23:28 Guest47 May I access this chat form discord? 23:30 MTDiscord Yes 23:31 MTDiscord I give you express permission with absolutely no warranty 23:32 Guest47 :D thank you jordan 23:32 MTDiscord I think you have to be of a certain "rank" to access this chat from discord? 23:32 Guest47 the channel name there is #minetest too 23:33 MTDiscord it's minetest-irc 23:34 Guest47 and the server is Minetest, right? 23:36 Guest47 well dontΒ  appear to me so i have to use for here 23:37 MTDiscord yep the server is Minetest 23:38 Guest47 so the rank is necessaru 23:38 Guest47 necessary 23:38 Guest47 but may i talk in general no? 23:38 MTDiscord Yes, you may talk in general. The "rank" requirement exists to prevent spam from newcomers, I believe. 23:39 MTDiscord Right, we just expect people to talk a bit in the non-IRC channels first so that if there are moderation issues with them, IRC isn't subjected to the consequences as well. 23:39 MTDiscord but it doesn't take long to earn the necessary privileges. 23:40 MTDiscord Also don't 100% rely on the Discord only for your access to IRC. The bridges CAN go down (and of course Discord as a platform could become arbitrarily shitty in any way it wants to overnight). 23:41 Warr1024 hence why a lot of us are connected directly via both protocols, when we have that optoin. 23:41 Guest47 right. I understand. thank you for all in next time I'll use for that as Hephaestus 23:42 Guest47 what irc cliente do you use? 23:42 MTDiscord thelounge 23:42 MTDiscord Yeah, that, self-hosted, for me. 23:43 MTDiscord It's not very featureful but it works well on mobile (if you have a server to host the server component) which is one of the major obstacles a lot of users have with IRC usage today. 23:44 Guest47 no and im using win11 23:45 MTDiscord That's a shame. You can rent a VPS for under $10 a month, but that's a lot to bother with if it's JUST for an IRC client and you don't have some other use for it. 23:45 MTDiscord I think there are publicly hosted instances, but then, I never know how much I should trust those, especially with things like NickServ credentials. 23:47 Mantar if you're on desktop, hexchat is pretty good 23:48 Guest47 oh no, I asked just to access this irc channel, I didn't express myself well 23:50 DeepThgt warr1024 you can rent a vps for under $13 usd per year to run znc on 23:50 DeepThgt 10 a month is massively overpaying for a bouncer 23:51 MTDiscord I used hexchat on desktop and found it to be pretty good, yeah. Unfortunately I've grown way too used to the idea that I should be able to get up and leave my desktop at any time and as long as I have my phone with me, I shouldn't lose immediately access to what I was connected to... 23:51 DeepThgt https://lowendbox.com/blog/1-vps-1-usd-vps-per-month/ <-- cheap shithosts 23:51 Guest47 done with hexchat 23:51 hephaestus thank you guys 23:52 MTDiscord Hmm, those low-end machines are pretty good looking, i.e. I didn't see that "burstable" shit that Amazon EC2 does... πŸ€” 23:53 DeepThgt ya id rather have a colonoscopy than use amzn for anything 23:54 DeepThgt on that list ive used racknerd only 23:54 DeepThgt no complaints for what i paid 23:54 MTDiscord Amazon Web Services has so many random products that colonoscopy is probably one of them, so your could achieve your worst nightmare there. 23:54 DeepThgt lmao 23:54 MTDiscord I wish I had know about $1 a month VPS hosting before I'd scope-creeped the other like $6 a month worth of shit I'm running on mine now πŸ˜„ 23:55 DeepThgt when time for renewal comes up you know at least 23:55 DeepThgt if you feel like migrating 23:56 DeepThgt i used to use these for wordpress/woocommerce installs 23:56 DeepThgt worked well 23:59 MTDiscord Heh, goes on my todo list, and I'll have to figure out exactly how much of the ~$7 per month Contabo machine I'm actually using at this point...