Time Nick Message 02:21 Sokomine is the forum still in maintenance mode? 02:21 FriendlyPerson[m Sokomine: It's been out of it ever since this afternoon actually. ? 02:22 Sokomine :-( hope it will soon be up again 02:22 FriendlyPerson[m Sokomine: It IS and it's BEEN since this afternoon lol. 02:22 MTDiscord current IS up 02:31 Sokomine er. is the forum now up or not? 02:32 FriendlyPerson[m Sokomine: As I already said twice now... The forum been up since this afternoon. 02:32 MTDiscord shut up 02:33 MTDiscord stupid head 02:34 FriendlyPerson[m ?? 02:42 MTDiscord :thonking: 02:42 MTDiscord sokomine: if your that confused, why not visit it and find out for yourself? 02:44 FriendlyPerson[m I mean it's possible if they have difficulties processing information or even if they are not native. Which is why I reworded my responses every time and reassured them that that what I meant in the past. 02:46 MTDiscord STOOPID 02:46 MTDiscord Bashes head into window 02:48 wsor4035 well then 02:49 FriendlyPerson[m Um not quite and I never understand why people think it's "cool" to be calling others "stupid" per say. 02:49 MTDiscord im not a hero, just a man with a dream 02:50 MTDiscord please cease 02:50 MTDiscord ceased 03:31 FriendlyPerson[m Alrighty I am gonna head off, you all take care and have a good evening. ? 14:25 FamilyMiner Hi, can someone tell me how to use /spawnentity to get mods_animal animals appear? 14:26 FamilyMiner I have tried mobs_animal:bunny as the EntityName 14:27 FamilyMiner the animals are spawning in wild as they should 14:27 MTDiscord probably need to read the code (unless it's documented) to find out the names of entities 14:28 FamilyMiner I thought it was by this line: mobs:register_mob("mobs_animal:bunny") 14:29 FamilyMiner but I just get message "Cannot spawn an unknown entity" 14:31 FamilyMiner Ha! sorry, I just realized... mods != mobs :D 14:35 Sven_vB hi :) is there any way in MineTest 5.4.1 to toggle safe dig mode via a chat command? 14:36 Sven_vB I'd prefer to not have to leave the server for that, because the login takes several minutes 14:38 FriendlyPerson[m Sven_vB: 100's of MBs of media I am assuming? Because even when I was trying to remote media mine with 9 .oggs it was done in a minute or two. 14:40 MTDiscord You should probably setup a test SP world to verify your settings or something. Client config stuff is generally either "baked in" or otherwise frozen at the time you enter a world, and there's no way to access those settings, let alone modify or apply them, without dropping back out to the menu. 14:43 Sven_vB FriendlyPerson[m, yes, it's the media section that takes forever 14:44 Sven_vB FriendlyPerson[m, however, even if it were just a second to reconnect, it would clear the chat history. there's just no excuse why toggling such a simple flag would require a reconnect. 14:46 FriendlyPerson[m Sven_vB: It's not that setting it's how the server is. Even changing a chat message (e.g. a mod) requires the server to be restarted. I am assuming since the minetest.conf is only read when the server is started. 15:29 IvanGorinich Hello i have dynamic Ipv6 with Miredo 15:29 IvanGorinich I connect DynDNS 15:29 IvanGorinich can i use only domain 15:29 IvanGorinich without bind_adress 15:30 MTDiscord I think you can bind to an IPv6 wildcard address, similar to how binding to 0.0.0.0 in IPv4 means "all IPv4 addresses" 15:33 sfan5 you shouldn't need to specify the bind_address 15:37 Sven_vB FriendlyPerson[m, safe dig mode is a client setting 15:38 Sven_vB FriendlyPerson[m, the server is not restarted. I'm playing in multiplayer. 15:38 Sven_vB would be hilarious if admins would have to restart the entire server just for one player toggling their dig mode. :D 15:40 MTDiscord You might have to specify the bind address if MT only tries to bind a single socket, and the OS only allows one address family per socket. 15:40 FriendlyPerson[m Sven_vB: I honestly never heard of such of a client setting before. Forgive me for sounding "dumb" but what does it actually do? Auto sneaks you to prevent you falling so easily? 15:41 Sven_vB FriendlyPerson[m, it decides whether holding the primary mouse button will continue digging after the first successfully dug node, and whether holding the secondary mouse button will atempt to place more blocks after the first successfully placed block. 15:42 Sven_vB would be super nice if I could easily toggle whether my super fast pickaxe shall mine one block or lots 15:44 FriendlyPerson[m AH I see so it's prevent you digging too fast so you are diging more safely. That's makes sense. 15:48 specing Sven_vB: you can write a CSM that rate-limits it 15:49 specing you can do this with stock client 15:50 Sven_vB specing, I'd rather implement a toggle key for the existing option if I have to 15:51 sfan5 IvanGorinich: if you specify ipv6_server = true in your config it should just work automatically 15:51 IvanGorinich i do 15:51 IvanGorinich but nothing 15:51 sfan5 how are you testing it? 17:59 erlehmann sfan5 why does this PR also remove a comment? "// added in protocol version 14" 17:59 erlehmann https://github.com/minetest/minetest/pull/11511/files 18:00 sfan5 nobody cares about that 18:02 erlehmann sfan5 why does your PR have „Drop it ingame, observe a warning but no crash“ here? https://github.com/minetest/minetest/pull/11511 18:02 sfan5 because that's one of the things it fixed? 18:03 erlehmann wait, what happens if you drop the item? 18:03 erlehmann it is very important that the item metadata gets preserved as long as it is only dropped and picked up 18:03 erlehmann (otherwise shulkers will break) 18:04 Krock which metadata are you talking about? 18:04 erlehmann staticdata 18:04 erlehmann i have an example for you 18:04 Krock do you know right that such large packets couldn't be sent in first place? 18:04 erlehmann these objects exist in mineclone2, mineclonia and mineclone5 18:05 erlehmann https://git.minetest.land/Mineclonia/Mineclonia/pulls/132 18:05 erlehmann they are fine as long as … oh 18:05 erlehmann well 18:06 erlehmann i think they are fine as long as their metadata is not touched because the PR by fleckenstein that avoids bookbanning is active on clamity 18:06 Krock btw staticdata != metadata 18:07 erlehmann shulkers are portable chests. it is very easy to get over the 64kb (or so) threshold 18:07 sfan5 erlehmann: the server crashes because the wield item in object properties also has a limit of 64k 18:07 erlehmann so i just want to make sure that this patch does not break mineclone2 / mineclone5 / mineclonia and whoever else uses shulkers 18:07 sfan5 the entity will not be modified 18:07 sfan5 it just may not appear correctly on the client 18:08 erlehmann sfan5 so it is possible to drop it and pick it up even with the patch? 18:08 sfan5 yes 18:08 erlehmann good, thank you 18:09 erlehmann i would suggest to add something like the “getwrittenbook” command here to devtest https://git.minetest.land/Mineclonia/Mineclonia/pulls/132/files 18:09 erlehmann > “/getwrittenbook 65323” creates an item that creates the largest possible serializable written book item entity when dropped. 18:09 Krock don't don't do that 18:09 Krock *just don't 18:09 erlehmann > “/getwrittenbook 65324” creates an item that creates the smallest possible non-serializable written book item entity when dropped. 18:10 erlehmann Krock, what do you mean? 18:10 erlehmann don't do what? 18:10 Krock keep data within reasonable limits 18:10 erlehmann have you used shulkers? 18:10 Krock I never used MineClone2, so I don't think so 18:11 erlehmann there is a shulker mod on contentdb i think 18:11 erlehmann they are very important for the gameplay 18:11 Krock however the wrench from technic also might contain tons of metadata, but that's item metadata 18:11 erlehmann now the problem is, an object can legitimately have a few kb of metadata. think of a book, or a heavily enchanted item. 18:11 erlehmann the problematic interaction has two parts 18:11 Krock then compress it better 18:11 erlehmann first, you have shulkers – the portable chests 18:12 Krock anything else requires a protocol change 18:12 erlehmann second, you can drop those and item entities are created 18:12 erlehmann uh no it works right now 18:12 erlehmann the only thing that did not work was the crash 18:12 erlehmann maybe i am missing something 18:12 Krock the crash did not work, so no crash happened? 18:12 MTDiscord You'll probably have to limit the capacity of those things, or you'll have to store the data in a separate channel when it overflows 18:13 erlehmann oh the interesting thing is that those things are heavily used but so damn worth it that apparently since they were introduced it only rarely happened that anyone dropped them and walked away 18:13 erlehmann the capacity of them is limited 18:14 Krock deflate compression might solve that 18:14 sfan5 not reliably 18:14 sfan5 image putting books inside 18:14 sfan5 imagine* 18:14 erlehmann yeah, someone could write a book with random characters. that book is like, what, 4kb or so. typical book size. 18:14 FriendlyPerson[m I think they are concerned that if this patch goes live it will break those games. While MCx shouldn't be the king of everything it's probably best to at least understand the implications it MAY have on those games. If it can't be easily adjusted at least make it clear on the patch that games that uses so much metadata (or whatever it is) MUST adapt accordingly. 18:15 erlehmann well as i understand sfan5 it will only lead to a warning and nothing will break 18:15 erlehmann to the contrary, the crash that i experienced (and fixed in mineclonia) will not occur 18:15 erlehmann because the serialization function does not bug out 18:16 erlehmann Krock Warr1024 mineclone2 did a lot of stupid things regarding resources, but shulkers are an essential gameplay concept. people make so-called “kits” with specific contents, dupe them and give them to other players. like: redstone kit. 18:17 erlehmann or someone wants to build a city, first thing they do is carry a lot of shulkers with building materials there. 18:17 sfan5 should've used chest minecarts smh 18:17 MTDiscord Yeah, NodeCore has Totes that are similar, but their capacity is limited so they're never close to serialization limits. 18:17 erlehmann ton clamity, i made a kit that contains banners with patterns. (banners are another item that can legitimately have metadata) 18:18 Krock or detached inventories :3 18:18 erlehmann sfan5, chest minecarts do not exist as far as i know. 18:18 sfan5 i thought MCL2 was a minecraft clone 18:18 sfan5 how can that be 18:18 MTDiscord If you can have an item that can hold up to the limit of metadata, then that item cannot also be stored inside another item that stores its items in metadata. 18:18 erlehmann sfan5 no one implemented it properly yet 18:18 sfan5 granted making this work via detached inventories is a bit tricky but shouldn't be that hard 18:19 erlehmann i have a shulker full of shulkers full of obsidian hehe 18:19 MTDiscord Storing overflow metadata in mod_storage or separate files is also not that hard 18:19 erlehmann that's like, 27 * 27 * 64 obsidian 18:19 erlehmann yes i thought about mod storage 18:19 MTDiscord You can't allow nesting these infinitely without either running into an engine limit, or just bombing the engine. 18:19 sfan5 @Warr1024 tracking item metadata stored separately is hard 18:20 erlehmann it was allowed to do it in minetest 5.3 as far as i know 18:20 erlehmann at least fleck claimed that 18:20 MTDiscord I mean it's straightforward, it's just messy as hell. 18:20 sfan5 how do you know when to delete an entry then? 18:20 MTDiscord Whenever the world is deleted 18:20 erlehmann sounds like a memory leak 18:20 sfan5 that does not satify my criteria for a proper implementation 18:20 erlehmann TO ME 18:21 erlehmann what sfan5 says 18:21 erlehmann Warr1024 do not worry, shulkers can not legally be nested anymore. 18:21 erlehmann but you can put items in them 18:21 MTDiscord I didn't say it was possible to do properly 18:22 erlehmann and even if every item has like 2.5kb of metadata only (standard size for heavily enchanted stuff), then 27 items get you over the limit 18:22 erlehmann the enchantment stuff might get better with zlib/deflate 18:22 erlehmann but books exist 18:22 sfan5 that kinda seems like a problem with enchantments to me 18:23 MTDiscord Also all this obsession with having the highest standards of "proper" implementation is probably why we only ever have complete crap implementations instead of having moderately okay ones. As soon as someone thinks "I should make this not be a complete piece of shit" development gets stalled trying to make it actually GOOD. 18:23 erlehmann sfan5 oh, the enchantments mod was way worse before ryvnf fixed it! 18:23 Krock they might be serializing some date to JSON or lua tables to put into a meta data field 18:23 erlehmann an enchanted item could take up 21kb of space! 18:23 MTDiscord You might just have to disallow items in the shulker that contain more than a certain total length of metadata. 18:23 FriendlyPerson[m MTDiscord: Agreed I think they are worried about breaking more than it's worth. At least in ONE SITTING. 18:23 sfan5 there's a difference between a non-ideal implementation and a hack 18:23 erlehmann > As soon as someone thinks "I should make this not be a complete piece of shit" development gets stalled trying to make it actually GOOD. 18:24 erlehmann lol what 18:24 MTDiscord Yeah, the difference between a non-ideal implementation and a hack is how long it takes you to say the name 18:24 erlehmann ok then tell me something 18:25 erlehmann fleckenstein has delivered a thing that deals with item lag (bookbanning) 18:25 erlehmann where you throw a bunch of books at a player to lag them 18:25 erlehmann that is not merged in minetest, why 18:25 erlehmann is it because it breaks client stacking prediction? 18:25 MTDiscord Basically when you have something that's bad, you should try to move the needle toward good. If you can't make it as far as you wanted to, that doesn't mean you should just leave it as bad. 18:25 Krock add text limits to your books. easy. 18:26 erlehmann this one https://github.com/minetest/minetest/pull/11014 18:26 sfan5 erlehmann: it doesn't break that 18:26 FriendlyPerson[m MTDiscord: Exactly aim for 100% but when that's not possible do what's practical. 18:27 erlehmann sfan5, oh then i misunderstood 18:27 Krock FriendlyPerson[m: MTDiscord is a bot or relay server. check the name afterwards 18:27 erlehmann > TechDudie approved these changes Apr 23, 2021 18:27 erlehmann what else needs to happen? 18:27 erlehmann as far as i know, that patch runs on clamity 18:27 erlehmann but 18:28 sfan5 you quoted a random person approving the changes. 18:28 sfan5 anyone can do that 18:28 erlehmann ah ok 18:28 erlehmann so anyone can approve stuff lol 18:28 erlehmann sfan5 what is your gripe with the thing? is it still that you think it is unreasonable to store this stuff? 18:28 erlehmann i think in any case it is a good optimization 18:28 FriendlyPerson[m Krock: Understood thanks for reassuring me of that but I was trying to quote the reply. Is there's a better way to do that? 18:28 Krock FriendlyPerson[m: copypaste the name 18:29 sfan5 FriendlyPerson[m: ah, must be matrix doing that automatically then? 18:29 sfan5 erlehmann: https://github.com/minetest/minetest/pull/11014#issuecomment-791531973 18:29 FriendlyPerson[m sfan5: Yes it does that automatically. 18:30 MTDiscord Don't we already have private vs. public fields on node meta? 18:30 sfan5 apart from discussion about the implementation having the client announce that it's saving the map is a misfeature IMO 18:30 FriendlyPerson[m So I can either quote the reply or I can't. There's no "quote this person as" 18:30 sfan5 yes, this would be item meta 18:31 MTDiscord Oh, I see, Fleck already discussed that in one comment 18:31 MTDiscord saying that it would be better to make these private by default instead of public ... unfortunately, there was an issue to do the same for node meta but it got shot down 18:31 MTDiscord I ended up doing it at the Game level 18:31 MTDiscord I suppose if we had set_private in item meta then it could similarly be done at the game/mod level 18:32 erlehmann sfan5, my browser (elinks) says “The requested fragment "#issuecomment-791531973" doesn't exist.” 18:32 sfan5 it's inside the collapsed comments 18:32 erlehmann oh 18:32 erlehmann damn github 18:33 sfan5 gitlab runs on even more javascript stuff, be glad we aren't using that 18:33 erlehmann is it possible to link directly to it? 18:33 erlehmann i mean to the comment 18:33 erlehmann i try chromium 18:34 sfan5 expanding comments and then pressing return inside the address bar should bring it up 18:34 sfan5 anyway it's my comment from 5th Mar 18:34 MTDiscord Map-saving concerns are certainly scope-creep. The server should be allowed to choose not to send data to the client for the common use-case of the client simply playing the game and wanting non-shitty behavior. 18:34 erlehmann such UX ._. 18:34 erlehmann ok thx 18:34 erlehmann hiding comments is really an antifeature 18:35 erlehmann “common use case” lol 18:35 erlehmann i am an amateur historian 18:35 erlehmann i collect cursed items and impossible builds in world downloads 18:35 MTDiscord Allowing the server to hide selected meta fields from the client seems like a perfectly reasonable thing to live at the MetaRef level, not just at the NodeMetaRef level. 18:36 erlehmann wow, it is possible to click “more items” on github before the js has fully evaluated everything and then it does not work. so everyone, do not click as soon as the page loads, wait a few seconds. 18:36 erlehmann sfan5 ok i see your comment 18:37 erlehmann sfan5 but the thing you are proposing is an entirely different way of addressing the problem that requires mod authors to do stuff 18:37 erlehmann whereas fleckensteins solution requires mod authors do to basically nothing 18:37 erlehmann the engine just handles it 18:37 MTDiscord Requiring mod authors to do stuff is not at all unreasonable. Mod authors already have to do stuff to be mod authors. 18:38 MTDiscord Requiring people to do stuff to keep things the same is more unreasonable than requiring them to do stuff to take advantage of a new feature. 18:38 erlehmann well i work in IT security and from experience i think it is wishful thinking that every poser with a keyboard will do the work to check if their items are too big. 18:38 MTDiscord I would not be opposed to a compromise of having some fields marked private by default and using the set_private API just to handle exceptions to those rules ... but historically PRs that leave default behavior intact have a better chance of actually passing. 18:38 erlehmann i mean, a lot of people who claim to be professional developers can't make hello world binaries that fit on a floppy 18:38 erlehmann or web pages that can be downloaded over 3g lol 18:39 MTDiscord It's not the engine's job to completely prevent broken mods, only to provide the tools necessary for sufficiently competent mod authors to be able to solve the problem in at least SOME way. 18:39 erlehmann the thing is, in this case, fleckenstein is one of the posers with the keyboard 18:39 erlehmann but i think he has a point 18:40 MTDiscord Yeah, too bad this isn't an open source community where anyone could just send a PR to ... oh wait... :-| 18:40 MTDiscord Personally I would be okay with marking a shitton of stuff private by default and require it to be manually marked public ... but based on MT's past history I don't expect that to fly. 18:41 erlehmann the thing is, i agree that mineclone2 approaches are ridiculous often 18:41 erlehmann and i disagree with fleck about it being a super important game or something 18:41 erlehmann it is just one of many 18:41 erlehmann but it is one that manages to be so broken at times that it shows how badly designed some engine things are (because it lets mods do the things that mineclone2 does) 18:41 MTDiscord I honestly haven't decided whether having a relatively good clone of MC in the MT ecosystem is actually more beneficial or harmful yet, it's clearly some mix of both. 18:42 erlehmann Warr1024 i have had a lot of fun with it 18:42 erlehmann best thing, i don't need to think about game balancing when implementing stuff, unless minecraft is obviously wrong 18:43 FriendlyPerson[m erlehmann: YEA I am not gonna say he's the king of everything but to be fair what games do we have that people would want to make servers for right? I can count maybe the top 5 would probably be competent on a server. MCx games, NodeCore variants and Dreambuilder. There's possibly a few others but that's seems to the highest polished games I can see. 18:43 erlehmann (like with snow layer / silk touch interaction – silk touch does not work on snow layers in minecraft because they erroneously closed the bug) 18:43 MTDiscord I've sort of given up on expecting the engine to do the right things out of the box. Mostly I just want it to support doing the right things at all, and leave whether they're done right or not to the community. Footgun, cold dead hands, etc, apparently. 18:44 erlehmann my approach right now in mineclonia is also “mineclone2 does probably the first thing that come to mind and it is probably not the best thing and the engine will find some way to handle it in most cases and crash if i approach the boundaries” 18:44 MTDiscord We don't need a TON of games. Really just a few good ones. 18:44 MTDiscord Having an MC clone makes it easier for MC players to make the jump to MT ... but on the flip side, it also keeps them sort of stuck in the MC rut. 18:45 erlehmann well that is an issue entirely orthogonal to “should the engine try to do the right thing because mod authors don't read the rubenwardy book” 18:46 erlehmann i mean, think of stuff like a network packet being sent as a side effect, even if some value did not actually change 18:46 MTDiscord I mean a LITTLE idiot-proofing is not a bad thing, I just wouldn't go too far down that rabbit-hole after I've seen the speed at which they patch the idiots to bypass said idiot-proofing. 18:46 erlehmann in my opinion, the engine could at least output a warning whenever a packet is sent that is not necessary 18:46 FriendlyPerson[m MTDiscord: Yes and no, there still not a lot of choices when it comes to games. As I said there's maybe 5 games that are worth actually playing. As in "I installs it, turns on and it's plays". 18:46 erlehmann like, mineclonia sends over 50 packets/s less than mineclone2 and mineclone5 18:46 sfan5 erlehmann: if it could output a warning it could also just not send that packet 18:47 MTDiscord There's some stuff that seems really obvious that the engine could do, like not sending duplicate entity properties ... but I also find that solving it in Lua actually works out better anyway. 18:47 erlehmann sfan5 the problem with not sending that packet without a warning is that the globalstep or whatever that uselessly updates the stuff is then not detected 18:48 erlehmann the problem with “solving it in lua” is the bookkeeping 18:48 erlehmann if you get it wrong … well, crash, corruption, or, ideally, dupe :D 18:48 MTDiscord Friendly: there are a few hidden gems farther down the list. A lot of the problem is that "top" stuff is mostly sorted by popularity, and especially popularity is measured by downloads rather than the experiences people have AFTER the downloads. Reviews and the CDB Featured list is helping with that, but there's still a lot of built up popularity effects that haven't dissipated yet. 18:48 sfan5 erlehmann: great so we agree this should be solved in lua ;) 18:48 sfan5 btw this should be easy to detect with a lua wrapper 18:49 sfan5 engine doesn't have to do it 18:49 MTDiscord It's also important to remember that not everyone is looking for the same kind of playing experience, and some of the more obscure games offer very different play styles. Box World 3D, for example, is basically a 3D Sokoban clone with no sandboxiness at all, plus it's a very SHORT game, so it's fun for a while and then you reach the end and (probably) uninstall it. 18:50 FriendlyPerson[m Isn't the GS akin to "ticks" in Minecraft? or I am missing something on why it's "stupid"? 18:50 erlehmann sfan5 the problem with the current approach is that people like fleck develop stuff that works on their machine 18:50 erlehmann because the engine is not limiting it 18:50 MTDiscord I prefer to solve stuff in Lua in-situ, and if I find the problem is part of an underlying theme, I promote it up to the Game level, and then if I think it might be applicable beyond that, I'd migrate it into builtin, if it's clean enough. ABM Muxing, for example, could be a candidate for that, if it were only cleaner. 18:51 erlehmann FriendlyPerson[m, it is stupid to do a bunch of stuff in a globalstep that should be event-based. mineclone2 and mineclone5 for example, check each globalstep if the player has armor or not and then send a network packet to either show the armor bar or not. mineclonia has that fixed (by upgrading to a newer version of the wuzzy hudbars mod). 18:52 MTDiscord It's not terrible to do background checks for things where there's a possibility of events being lost ... but every step is overkill, and actually sending updates every step even if there is no change is extra-bad. 18:52 FriendlyPerson[m erlehmann: Understood thanks for explaining that to me. It was just the context not the actual GS. I thought it was. 18:52 erlehmann FriendlyPerson[m, similarly, the sprint mod in mineclone2 and mineclone5 tells every player to adjust their field of view every tick. it just adjusts which value it sends, based on if the player is sprinting. this is, of course, really bad. and fixed in mineclonia! 18:53 erlehmann i think the engine should at least output a warning for sending dozens of packets with the same content each second 18:53 erlehmann i mean, dozens of warnings lol 18:53 sfan5 erlehmann: if there was good documentation on what to look for and how to debug this it would be less an issue, but there is not 18:53 erlehmann then ppl would *probably* clear it up 18:54 FriendlyPerson[m Indeed warn then limits/removes. 18:54 sfan5 the fewest modders know about the packet counter in --verbose 18:54 sfan5 which it gives a pretty good idea what you're doing wrong in many casesd 18:54 sfan5 -d 18:54 sfan5 while* 18:54 erlehmann sfan5 i actually used that and it is in --info i think? 18:54 MTDiscord I don't see a reason the engine should actually send the packets if they match the state that was already just sent. If I can keep track of past sends in lua then the engine should be able to do so too ... but then, if I can keep track of it myself, then I'll probably just do that and not care whether the engine does. 18:54 sfan5 --trace also shows it if you mean that 18:56 erlehmann sfan5 oh i have a thing that could be in minetest utils/tools directory: https://git.minetest.land/Mineclonia/Mineclonia/src/branch/master/tools/analyze-packet-spam 18:56 erlehmann # To collect such a log file of minetest running for 10 minutes, run: 18:56 erlehmann # timeout 600 minetest --info >log.txt 2>&1 >/dev/null 18:56 erlehmann # To get packet counts from that file, run: 18:56 erlehmann # ./analyze-packet-spam I actually started work on a proxy that analyzed MT traffic, but wasn't sure exactly which direction to take it. I was sort of inclined to try to measure networking costs ... seeing that it's possible with logging sounds like it would simplify things a lot 19:01 erlehmann sfan5, that thing is the thing i parse 19:01 sfan5 yeah I realized 19:01 MTDiscord I'm more concerned with total bandwidth than packet count, for the most part, though. Sending a lot of big packets is a lot worse than a lot of little ones... 19:02 erlehmann sfan5 yeah so can my script go into minetest proper or do you think it needs work? it is immensely useful, because 30 seconds is too little of a measurement interval tbh 19:02 erlehmann so it adds up a bunch of 30 second thing, figures out start and end, gives you packet count per second, done 19:02 erlehmann on the other hand the 30 second thing helps you if you want to see if you have issues *right now* 19:02 erlehmann but it does not work well in code review 19:02 sfan5 hm 19:05 erlehmann sfan5 you can see how we used it in mineclonia here: https://git.minetest.land/Mineclonia/Mineclonia/issues/111 19:07 MTDiscord Do you see evidence of these problems in the F5 graphs, or do you actually have to dig into them with more powerful tools before you can detect them? 19:07 erlehmann well you can see that there are too many packets 19:07 erlehmann but you need to figure out which ones 19:07 erlehmann we used my script and asked anon5 for help 19:08 erlehmann anon5 has this go-based proxy (that also strips out needless stuff i think) 19:08 erlehmann sfan5 you can see here how the 30 second counts were too variable for cora to say “yep this is it” https://git.minetest.land/Mineclonia/Mineclonia/issues/111#issuecomment-25445 19:08 erlehmann so she averaged 10 of them 19:08 erlehmann my script just automated that process 19:10 erlehmann sfan5 Warr1024 you can see here how we checked that the improvements wuzzy did to the hudbars mod were working https://git.minetest.land/Mineclonia/Mineclonia/issues/111#issuecomment-25729 19:10 erlehmann or no 19:10 erlehmann this was just for armor bar autohiding turned on vs off 19:10 erlehmann 58.0 PACKET_COUNT_TOCLIENT_HUDCHANGE 19:10 erlehmann vs 19:10 erlehmann 44.1 PACKET_COUNT_TOCLIENT_HUDCHANGE 19:11 erlehmann you see, there was a change, but it is not obviously supported by 30 second sampling 19:12 erlehmann (which is why we sampled for around 600 seconds) 19:12 erlehmann (i.e. 10 min) 19:12 erlehmann sounds like a job for CSM 19:12 MTDiscord It'd be nice if we could also get an idea of the bandwidth cost of those packets rather than just the counts... 19:13 erlehmann specing, to you everything sounds like a job for a CSM lol 19:13 erlehmann Warr1024 true, but the problem with the packet amount is that any lost packet can lead to lag / desync etc. 19:13 erlehmann try playing on a high-bandwith connection with a few percent of packet loss 19:13 MTDiscord For a while I used to just compare packet counts against MTG, but "do-nothing game does nothing" doesn't seem like a fair standard. 19:13 erlehmann lol 19:14 erlehmann try to compare against mineclonia. if you exceed it, you probably do something stupid. 19:14 erlehmann i doubt you will exceed it. the stupidity i have encountered is entirely located within mineclone2, mineclone5 and the weather mod all three games share. 19:14 erlehmann and by stupidity i mean the things i already described. 19:15 specing erlehmann: yeah 19:15 erlehmann simulate each raindrop etc. 19:15 erlehmann specing why don't you contribute to waspsalive then 19:15 specing need to rebase first 19:15 specing read its api and port my scripts 19:16 MTDiscord Well, just shooting for "more packets than MTG but fewer than MC2" sounds like a decent sanity range, but I'd really like to have a narrower target :-D 19:16 specing i also want to make sscsm a reality 19:17 MTDiscord even if SSCSM were extremely sandboxed and could only do things like manipulate HUDs, particles, and sounds, I could see getting a lot of use out of them. 19:17 erlehmann Warr1024 not fewer than mineclone2, fewer than mineclonia. 19:17 erlehmann mineclonia is mineclone2 with a lot of packet spam fixed 19:17 erlehmann (and other stuff ofc) 19:18 erlehmann if minetest makes server-sent client-side mods, i guaranteed you i will spend a *lot* of energy to make client-send server-side mods 19:19 erlehmann (very sad that the feature of client-sent server side mods got removed) 19:20 specing nah warr, I'd do SSCSMs on waspsaliva, with full access to the whole API 19:20 specing and a contentdb for them, so they'd be reviewed beforehand 19:27 Pexin erle: client-sent server side mods.. I cannot express how deeply I wish I could inject serverside code into web servers that try to force js for basic functionality.. :| (very different problem domain, I know. but I can fantasize) 19:28 erlehmann Pexin well, sometimes you can 19:29 Pexin "you want to force me to run your code on my side of http? well Fair's Fair!" 19:31 MTDiscord At first you think "js is code! I shouldn't be running somebody else's CODE, that could cause security problems!" ... then they discover yet another bug in common JPEG libraries that allows RCE ... :-/ 19:32 MTDiscord Turns out that the difference between code and data is mostly just something we made up and hackers don't abide by it. 19:33 Pexin js is _intended_ to be code 19:33 MTDiscord On the flip side, the fact that JITted JS runs so close to your hardware that they can actually read stuff out through timing sidechannels is pretty bonkers. 19:34 Pexin outright security vulnerabilities aside, there are things "modern" js is deliberately allowed to do that I may not want it to 19:35 Pexin even something like android's halfassed permission system for the js engine would arguably help 19:36 MTDiscord Effectively js does have a half-assed permission system in the browser, but it's sort of meta-half-assed because it's not implemented or enforced consistently across browsers, and may be meta-meta-half-assed because they decided to only make it cover very few things like location APIs and stuff. 19:37 MTDiscord ...so, eighth-assed? 19:37 Pexin quantifiable ass 19:39 MTDiscord tbh it's been bugging me for a long time: when you say half-assed, is the "assed" half the half you screwed up, or the half that you actually at least made an attempt at? Would quarter-assed be better or worse than half-assed? 19:39 * Pexin ponders 19:45 erlehmann Turns out that the difference between code and data is mostly just something we made up and hackers don't abide by it. 19:45 erlehmann no Warr1024 read about LANGSEC 19:45 erlehmann everything not context-free or regular or calc-regular is dangerous