Time Nick Message 00:20 * mrcheese ends up too late for the game jam :P 00:20 user333_ by 40s iirc 00:21 mrcheese something like that ;-; 00:21 MTDiscord by 2 minutes 00:21 MTDiscord well technically 24h2m 00:21 MTDiscord the 24h was for getting it approved, not getting it in 00:22 mrcheese lol fair 00:22 mrcheese note to self: dont try to figure out how to use ContentDB while you have 5 minutes left ;-; 00:26 mrcheese tbh the game was kinda badly put together (it was not a good game by any standard ;-;) 00:26 MTDiscord You have some license issues to fix but if you can address them in like a minute flat and no one scores anything in the meantime, you might be able to sneak in 00:27 mrcheese yea i was hoping that wasnt gonna happen (was trying to figure out this and that. safe to say trying to get it ready was a pain) 00:28 MTDiscord I think all you need to change is select LGPL on CDB and add a line to the readme prompting to reference the MTG files for licenses and it can probably be approved 00:30 MTDiscord And if you can do that in the next few minutes, you might get lucky 00:36 mrcheese ok set the license to LGPL-2.1-or-later and added "see respective mods readme/license files for more information" to the readme. is that sufficient? 00:36 MTDiscord @wsor 00:37 MTDiscord needs to be in the license file 00:38 mrcheese ? (yea sorry. first time doing this stuff) 00:38 MTDiscord Add the "see respective licenses" thing to the license file 00:39 MTDiscord chop chop 00:39 MTDiscord "see respective mods readme/license files for more information" to line 23 of https://github.com/IonicCheese/superposition/blob/main/LICENSE 00:40 mrcheese ook got that added 00:44 MTDiscord mrcheese: Since only you had rated anything on the rating page so far, your package is able to sneak in, and I dont have to go to the trouble of editing the backend/frontend to filter your package out. The cost is you will need to redo whatever ranking you had done. Fair trade, I think 00:45 mrcheese fair enough 00:45 mrcheese thanks for getting it approved though :) 01:51 user333_ you can thank me for that game's terrible flashlight texture 02:04 mrcheese xD 02:04 mrcheese i mean. it works xD 05:12 cheapie hydraulic piston *nods* https://cheapiesystems.com/media/2025-11-29%2023-11-17.webm 08:20 MTDiscord amazing 11:01 repetitivestrain luatic: why don't you consider reimplementing LuaJIT string buffers and the LuaJIT serializer for PUC Lua, rather than string.pack? 11:01 repetitivestrain Hmm 11:02 repetitivestrain luatic7: what was said above, and to continue, it's much more performant under luajit and is well optimized for luajit's ffi facilities 11:02 repetitivestrain which, despite not being available to secure mods, is still quite availing in luanti modding 13:58 MinetestBot 02[git] 04cx384 -> 03luanti-org/luanti: Move SoundMaker out of game.cpp and some refactoring (#16703) 13d1ec7a9 https://github.com/luanti-org/luanti/commit/d1ec7a9356fe9593ebea07136a80c1c74b464973 (152025-11-30T13:57:44Z) 14:00 noname1234 What do you think about modern Minecraft? 14:00 noname1234 I haven't played modern Minecraft for years now! 14:03 noname1234 The problem is: it was currently owned by Microsoft and someone trying to made this game even worse than before 14:07 repetitivestrain noname1234: then play mineclonia haha 14:07 erle noname1234 if you want something like that, go play mineclonia. if you have a *really* beefy PC, set the mapgen to “singlenode”, allegedly halon made a mapgen that is EXACTLY LIKE MINECRAFT (though i do not have any computer good enough to test it i think). 14:08 erle noname1234 if you want an anarchy server experience, go join oysterity. it's one of the few servers where it becomes painfully obvious that the map is too small for true PvP play (because you can't hide well unless you do it in the end sky or so). 14:14 noname1234 repetitivestrain: I don't have enough time to play mineclonia 14:15 repetitivestrain noname1234: how would it place more demands on your time than other games, or microsoft minecraft? 14:16 noname1234 repetitivestrain: i don't play games mostly 14:16 repetitivestrain hmm, but what prompted you to ask us for our Views on minecraft 14:19 Krock what is minecraft 14:21 noname1234 Krock: sandbox video game created by mojang and it was created in 2009 by notch 14:21 MTDiscord this minecraft thing sounds interesting, wonder if it will ever take off 14:24 repetitivestrain i think it's time i took a moment to remind all and sundry what is realizable with client side modding: https://streamable.com/0aoqbf 14:26 repetitivestrain to, i hope, motivate people to direct more attention towards sscsm, and once that is in place, perhaps adopting the APIs mineclonia's client side mod requires 14:27 erle rollerozxa non-free software, no lua modding 14:27 erle repetitivestrain have you looked into the openra traits system by now? 14:28 repetitivestrain erle: no, not yet 14:29 repetitivestrain however, i stand by my opinion that no declarative system is capable of substituting for client-side modding 14:29 erle yes, it looks unclean. like the firing mode of the tesla coil and obelisk of light is a single trait (for two buildings), not used anywhere else i think (maybe for the tesla tank? idk, it's about the charging sounds and animation, the thing powers down if the target gets out of range). but it is very interesting how they *have* lua scripts but only need it for the most convoluted minigames, not for the main tasks. 14:30 repetitivestrain particularly when it is necessary to implement unanticipated technical facilities on the client 14:30 erle repetitivestrain and i stand by my opinion that you should always use the system that gets you to your target with the least amount of computational power invested 14:30 erle repetitivestrain when you get to it, check out the base openra game, then check out combined arms. it has implemented new traits. 14:31 erle repetitivestrain have you read the LANGSEC papers? and “web architecture from 10k feet” by the OG web developer tim berners-lee? 14:33 repetitivestrain erle: no, i don't develop for the web, i am just a lowly staff engineer who hacks on miscellaneous components of C programs for a living, and emacs and luanti games as a pastime 14:33 erle repetitivestrain as an example: when someone does layout or animations on web pages with js it's usually overengineered and worse performance than doing it with CSS/SVG. unless you do stuff like an n-body simulation where you can add random bodies. can't do that in a declarative system. 14:34 repetitivestrain but i have observed in the course of implementing all of minecraft's features in mineclonia that it is not feasible to anticipate every requirement that a game might pose ahead of time 14:35 repetitivestrain and that most of my energy was devoted to onerously implementing facilities in the engine or in lua that no one could possibly have conceived of in advance 14:36 erle repetitivestrain that's trivially true, but also “we can't anticipate everything, so we need a turing complete system” gets you to places where everything is possible but nothing is performant or secure. 14:36 repetitivestrain e.g., fixed dtimes in the main game loop with intervening frames created through interpolation 14:36 erle that's a pretty classic game engine thing 14:36 repetitivestrain transferring biome data from two independent and incompatible biome systems to the client 14:36 erle like, A LOT of engines have it 14:36 repetitivestrain Luanti doesn't 14:37 erle the biome thing is part of “this grew organically, no requirements engineer ever worked it out before implementation” i'd argue 14:37 erle repetitivestrain i don't want to argue much rn, but i suggest to read Security Applications of Formal Language Theory https://langsec.org/papers/langsec-tr.pdf and https://langsec.org/papers/langsec-tr.pdf http://langsec.org/papers/langsec-cwes-secdev2016.pdf 14:37 repetitivestrain or, just today, deterministically spawning particles around a player into a vertex buffer on each frame to give the appearance of motion 14:37 erle repetitivestrain you do not have to agree with me or the authors, but it *will* make you a better developer if any of it is new to you 14:39 erle (reading and understanding both papers is worth about 3 months of code review by a senior dev) 14:39 erle (who is on the same project) 14:40 repetitivestrain all of these required modifications to the engine's C++ and facilities to support them in mcl_localplayer, and granted, these requirements are now known and could be exposed declaratively, but it will not be possible to accommodate the next developer to encounter a requirement that was not 14:42 repetitivestrain erle: i would just recommend reading https://codeberg.org/halon/mcl_localplayer/ and the very eclectic improvements upon the engine in https://codeberg.org/halon/Minetest, and considering whether or not it would be feasible for engine developers, having no prior knowledge of these facilities, to provide for this mod's functionality by declarative server-side means 14:47 erle repetitivestrain “it will not be possible to accommodate the next developer to encounter a requirement that was not” – good systems do precisely that, bad systems do not. 14:48 erle repetitivestrain you might know about signal messenger. the signal main dev was like “federation is bullshit, you can't innovate with that” – and yet, there exist dozens of interoperable XMPP-based messengers and a lot of games use it as in-game chat etc. – you just have to accept that you don't have central control (motivated reasoning here). 14:49 erle repetitivestrain i do agree though that with the, uh, way APIs in luanti are designed you are probably not going to get anything, because “this is easy to implement” is often prioritized over anything else. 14:49 repetitivestrain erle: like i said, how would you propose that luanti accommodate, declaratively, a biome system that does not exist in the engine and requires that biome data be read from mod storage on the server, transferred to clients in units of 64-byte strings, and deciphered and randomized with reference to the level's seed by a singular algorithm, all of which are, i emphasize, nonexistent in the engine 14:49 erle repetitivestrain what's the deal with the 64 byte strings? 14:49 repetitivestrain it's the run-length encoded format in which compressed biome data is saved in mod storage 14:50 erle repetitivestrain i am not a domain expert on biome systems, so i doubt i can come up with a good proposal right now. but just from a cursory look, your requirements look not abstract enough to me,. 14:50 repetitivestrain in minecraft and in mcl_levelgen, biome data is generated with each chunk and recorded permanantly so that biomes in existing chunks may remain intact after upgrades that modify the biome map 14:51 erle repetitivestrain now *that* is a solid abstract requirement 14:51 repetitivestrain erle: they can't be generalized because the requirements are _very exacting_ 14:51 erle well the general thing you probably already know you want is “give me a facility for chunk meta analogous to node meta” 14:52 repetitivestrain they must be carried out to the letter so that the biome data as viewed by the client may be exactly identical to the biome data as viewed by a minecraft client at the same position and with the same seed 14:52 erle like, that seems like it is a part of a solution, or not? 14:52 repetitivestrain erle: i have already proposed this, but how do you propose to generalize this algorithm? 14:53 repetitivestrain https://codeberg.org/mineclonia/mineclonia/src/commit/main/mods/MAPGEN/mcl_levelgen/biomes.lua#L6853 14:54 erle repetitivestrain as i have said, i am not a domain expert. you may be, idk. but being a domain expert IMO doesn't actually matter much unless you are a core developer, as you can see from a bunch of things (query me about it if you want evidence, i don't want to spam this channel). 14:55 erle repetitivestrain i think you learning about how other games have abstracted it and about LANGSEC is a more promising idea than me trying to gain the domain knowledge. 14:55 repetitivestrain erle: that's the reason i'm posting my requirements and my results here 14:55 repetitivestrain other games aren't attempting to clone minecraft unto the last block 14:56 erle this is btw how i always acted when doing corporate workshops: try to teach some new techniques to the people who *already* know the domain, but might see some useful things in the general techniques i am presenting. 14:56 erle repetitivestrain openra is an RTS engine. 14:56 erle repetitivestrain have you read the AOSA books? they are useful too 14:56 erle repetitivestrain architecture of open source applications 14:57 erle afk now, eating and playing heroes of might and magic III 14:57 erle :3 14:57 repetitivestrain erle: that it may be, but i am confident in stating categorically that you cannot reproduce minecraft player physics in openra by purely declarative means 14:57 erle it's a 2D RTS, not a 3D block game 14:58 erle also that proves nothing useful 14:58 repetitivestrain why not? 14:58 erle repetitivestrain btw, i understand that having different use cases is better for generalizing. like if you compare contentdb (luanti) to BaNaNas (openttd) to whatever wesnoth uses, you'll probably have some insights. but even with a single domain you *can* figure out some things. 14:59 erle repetitivestrain because as i said, you only need to make a system as powerful as it needs to be to fulfil the tasks. read the LANGSEC papers for why. 14:59 repetitivestrain recreating minecraft is a very apposite application for a program that is, for good or ill, minecraft's only viable competitor 15:00 repetitivestrain erle: it's not possible without specifically programming mechanics designed for the purpose of emulating minecraft into the engine, which would be justly repugnant to luanti core developers 15:01 repetitivestrain with client-side modding, it is possible to incorporate only the truly general facilities into the engine 15:01 MTDiscord what are you guys conversing about? like how does langsec applies to luanti? 15:02 repetitivestrain while devolving the responsibility for reproducing minecraft's mechanics on me 15:02 MTDiscord (i've read the general strokes of the paper. i'm just not seeing the connection) 15:02 repetitivestrain erle's arguing against CSMs 15:02 MTDiscord repetitivestrain: the point of string.pack/string.unpack is a somewhat simple API to read/write binary data 15:02 MTDiscord luajit string buffers do not quite solve the same problem, do they? 15:02 repetitivestrain luatic: luajit's _serializer_, which writes into string buffers, does 15:03 [MatrxMT] ive seen lots and lots of ai generated assets on this game jam 15:03 repetitivestrain https://luajit.org/ext_buffer.html#serialize 15:03 [MatrxMT] also been seeing them in general 15:03 MTDiscord repetitivestrain: no, but that's a slightly different problem? 15:03 MTDiscord repetitivestrain: so what, erle wants a restrictive DSL instead of lua? 15:03 MTDiscord it's serialization of lua data structures 15:03 repetitivestrain and primitives, such as numbers, into binary data 15:05 repetitivestrain it is string.pack, only without forcing you to define your data's format as a format string, and i think substantially more performant than the serialization facilities currently available in the engine 15:05 repetitivestrain though i can't attest to how it compares with string.(un)pack, as i have not benchmarked the two 15:05 MTDiscord i do see that it is valuable for lua value serialization, but that's not exactly what i would use string.pack for 15:06 MTDiscord string.[un]pack is for when you have some fixed binary format you need to comply with 15:06 MTDiscord and i do not see how string buffers help with that 15:08 repetitivestrain Hmm 15:08 repetitivestrain you have a point 15:12 MTDiscord for SSCSM, might want to take a look at https://github.com/luanti-org/luanti/pull/15818, that's where it's currently headed 15:13 MTDiscord the plan is that SSCSMs will run in a separate process, and only interact with the main game process via an event loop 15:23 repetitivestrain luatic: hmm, has anyone measured the performance impact of doing so? 15:29 sfan5 how would you do that? 15:33 repetitivestrain sfan5: benchmarking the overhead incurred by an rpc roundtrip and multiplying the same by the number of luanti API calls my csm issues every globalstep 15:33 repetitivestrain and deciding whether the product is acceptable 15:33 repetitivestrain one moment 15:34 sfan5 the result may be interesting but this requirement is not negotiable 15:41 repetitivestrain well, if the overhead (which has not yet been measured) isn't adequate, then the corollary is that sscsm will not be capable of realizing many of the functions that are expected of it... 15:42 repetitivestrain anyway mcl_localplayer issues 6 to 98 calls to functions in the core table per globalstep, with a median of 12 15:43 ireallyhateirc nice wall of text 15:43 ireallyhateirc @grok make a summary of the above 15:43 sfan5 IIRC the ipc latency was already discussed in some PR and it turned out to be in the order of microseconds 15:44 repetitivestrain that's not bad at all 15:44 repetitivestrain if it's just microseconds it should absolutely be possible for mineclonia to adopt sscsm once it's available 18:25 erle rubenwardy what would need to be changed about contentdb so it could host CSMs? 18:25 rubenwardy CSMs would first need to become supported by the engine rather than experimental 18:26 rubenwardy from the ContentDB side, it's just adding a new package type 18:27 rubenwardy something like worlds/schematics would be more complicated as it's drastically different 18:27 erle wdym supported by the engine? the CSM functions are *very* lacking compared to dragonwire, waspsaliva and whatever that cheater team with the bugged backend had come up with … but i managed to use intiface to get rumble feedback every time a player was damaged. and i have read about people doing stuff with 3D audio (engine tells you where the player is). 18:27 erle dragonfire 18:28 erle like, vanilla CSMs have been used for a loooooong time 18:28 MinetestBot 02[git] 04cx384 -> 03luanti-org/luanti: Rename hud.h/cpp to hud_element.h/cpp 13dc48f98 https://github.com/luanti-org/luanti/commit/dc48f98a20d002a395cd36e4925389e1e00c1b87 (152025-11-30T18:26:22Z) 18:28 MinetestBot 02[git] 04cx384 -> 03luanti-org/luanti: Rename sound.h to sound_spec.h 135a799b9 https://github.com/luanti-org/luanti/commit/5a799b9b248ca63b0b7cb73f87b91a8fc3e55249 (152025-11-30T18:26:22Z) 18:28 MinetestBot 02[git] 04cx384 -> 03luanti-org/luanti: Move serialisation code out of sound_spec.h 13d4c3529 https://github.com/luanti-org/luanti/commit/d4c3529af7b1a57b3e6af836ba9d79a91eaec0c9 (152025-11-30T18:26:22Z) 18:28 rubenwardy https://github.com/luanti-org/luanti/blob/master/doc/client_lua_api.md#introduction 18:28 erle rubenwardy you mean a client GUI? 18:28 rubenwardy CSMs are experimental and unsupported, there's no client GUI or guarantees on the aPI 18:29 ireallyhateirc luanti moment 18:30 erle yeah lol 18:31 erle functionality can not change for years, but as developers declare it “experimental”, they reserve the right to be the pontius pilate of API design 18:32 erle also the last time i tried to add a CSM client GUI via a mod the result was that it is now no longer possible to change the main menu via a mod ._. 18:33 erle rubenwardy so what would you say could be some steps to making CSMs non-experimental and supported? 18:35 rubenwardy https://github.com/luanti-org/luanti/issues/16005 18:37 erle > There seem to have been no major CSM API features in recent years […] 18:39 erle maybe because everyone who *does* implement new CSM APIs has some suspicions about it getting into luanti? 18:39 erle given that there are entire servers with CSM-built rail systems … (no cheating here, users still need to dig the resources out of the ground) 18:41 erle auto-eat, tracers, “rotate me exactly that way”, “go to this position i have put a waypoint on”, “log every particle spammer in a CSM so that we can remove possible infoleaks” 18:42 erle like yeah, if you don't accept the new functionality that people are willing to implement (and are using right now), there won't be any new functionality 18:47 BuckarooBanzai4 rubenwardy: fyi, i'm getting timeouts on http://content.luanti.org 18:47 rubenwardy I'm being DDOSed 18:47 BuckarooBanzai4 welcome to the club :D 18:47 BuckarooBanzai4 that bad? 18:49 SFENCE_arch What somebody need to DDOS contentdb ? :D 18:49 rubenwardy I'm getting requests from 900 unique ip addresses from Sogou web spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07) 18:49 rubenwardy many 100s per second 18:50 rubenwardy updating iptables did nothing, probably conflicting with ufw 18:50 Guest26 uwf? ubuntu host? 18:51 ireallyhateirc perhaps Microsoft sent its minions 18:51 ireallyhateirc or someone is just testing their botnet lol 18:51 BuckarooBanzai4 a short term "solution" would be to filter the requests by user-agent, not really something for the long-term though 18:52 rubenwardy okay ufw is slow at adding 900 rules 18:53 BuckarooBanzai4 anubis has some user-agent anti-bot rules if you want to go down that route 18:53 sfan5 ufw feeds into iptables 18:55 rubenwardy okay back online 18:55 Guest26 is it nginx? you can configure a 444 response based on user agent 18:56 rubenwardy I've blocked the ip addresses and also the user agent via nginx 18:56 Guest26 ayee 18:56 rubenwardy it looks it's rotating to other ip addresses now 18:56 BuckarooBanzai4 nice, thanks for hosting/supporting the cdb btw ❤️ 18:58 rubenwardy ❤️ 18:59 erle rubenwardy idk what it was called, but a friend of mine once had a setup where accessing a common filename that was never linked anywhere (think wordpress login or so) would trigger a ban. ig that's one way to keep out misbehaving bots. 18:59 rubenwardy fail2ban 18:59 erle i only noticed because it was banning me … for requesting the favicon 19:03 rubenwardy I would rather avoid anubis but maybe I should have it set up for emergencies 19:04 rubenwardy could automatically turn on when under ddos 19:05 rubenwardy I am forwever thankful that I'm not on AWS/GCP/Azure 19:08 rubenwardy they supposedly have a complaints form https://fankui.sogou.com/index.php/web/web/index?type=4 19:10 sfan5 did you check if it's the ip range they usually use? 19:12 rubenwardy I would need to double check that yeah could be someone else 19:13 rubenwardy https://gist.github.com/rubenwardy/cadcf87cf2456c3a71ae5caf7804444b 19:19 sfan5 looking at my own collected logs that generally matches the IP's I have seen the same bot from 19:19 sfan5 weird 19:27 rubenwardy also looks like the bottleneck was postgres 19:27 rubenwardy If I ever needed to scale CDB up it would probably be a good idea to cache most public pages 19:27 rubenwardy rather than hitting the DB every time 19:44 erle I am forwever thankful that I'm not on AWS/GCP/Azure 19:44 erle rubenwardy what would that have done? infinite money payment glitch? 19:44 rubenwardy yeah. Surprise! Large bill 19:45 erle autoscaler? you receive a big beautiful bill! 19:48 erle rubenwardy from my experience, varnish (a caching solution by PHK) can easily turn “someone is hitting my API” into a non-issue. like, *as long as you get the caching keys right* and your architecture isn't absolutely uncacheable (i.e. you do actual REST and not “i have read what REST is on a phpBB 20 years ago and i am totally doing it”) you can easily serve a hundred times more traffic, maybe even a thousand times