Time Nick Message 01:05 [MatrxMT] SFENCE: I think postool https://github.com/SwissalpS/postool is generally better than poshud with more features. I don't know about alignment, but have never seen it go below the screen 02:28 apteryx hello! Is there a way to "test" whether a luanti server is up and running, e.g. some minimal client or custom script I could run? 02:29 user333_ there's a script in the repo, lemme find it 02:29 apteryx I'm writing a simple system service for luanti for Guix, and would like an automated system test smoke test things 02:29 apteryx to smoke test things* 02:29 apteryx user333_: thanks :-) 02:30 user333_ https://github.com/luanti-org/luanti/blob/master/doc/protocol.txt - there's a PHP and python script that does that 02:31 apteryx nice! 02:31 * apteryx looks 02:34 apteryx that looks promising :-) 02:38 MTDiscord Command sent from Discord by wsor: 02:38 MTDiscord !up yourdomain.tld:30000 02:38 MinetestBot yourdomain.tld:30000 seems to be down (host did not resolve) 02:38 MTDiscord you can also pm the bot 02:38 apteryx fun! Is he both using said python script? 02:38 apteryx bot* 02:39 MTDiscord https://github.com/sfan5/minetestbot-modules/blob/master/serverup.py 02:41 apteryx thank you 02:49 user333_ is there any better docs on the luanti protocol than https://github.com/luanti-org/luanti/blob/master/doc/protocol.txt ? or where it's handled in c++? 02:51 [MatrxMT] >is there better docs than ? 02:51 [MatrxMT] uh, not that I am aware. But there is an additional page at https://docs.luanti.org/for-engine-devs/network-protocol/ 02:51 MTDiscord the source is always the truth 02:52 user333_ i'm going to write a python script to connect to a luanti server... i got stuck on the making the script part 02:52 MTDiscord there are some protcol examples in rust/go 02:54 user333_ it would help if i knew more C++ 02:54 user333_ but the C++ learning curve is a vertical lie 02:54 user333_ s/lie/line 02:54 mrcheese lol 02:54 [MatrxMT] "if I knew more C++" - that's what C++ devs think too 02:55 mrcheese Non C++ devs: "if only i knew C++", C++ devs: "if only i knew more C++" 02:55 apteryx being a REPL person I like being able to try C++ expressions from something like cling or gdb 02:56 user333_ the transition from python to C++ isn't easy... i'l probably stick to doc stuff or builtin 02:57 mrcheese ... 02:57 * mrcheese did a from between Lua to C++ .-. 02:57 [MatrxMT] hmm there's wireshark definitions somewhere too, I think. So you could look at what your normal client is doing over the wire 02:59 user333_ i thought it would be easy like sending plaintext over TCP... turns out the world is harsh to inexperienced devs 03:00 user333_ for example you can make a tiny web server in like 50 lines of python, which i did 03:01 user333_ 29 lines actually 03:01 [MatrxMT] the biggest problem with python is the moment you can't do it by gluing a few libraries together 03:02 user333_ i wrote a very basic IRC client with just socket and time >:-( 03:02 user333_ and sys, but that isn't really needed 03:06 user333_ ugh im blind. with socket, _thread, and time 03:14 mrcheese lol 04:55 apteryx what game is used when --gameid is invalid and 2025-12-29 13:54:20: ERROR[Main]: Game "whatever" not found is printed? 04:55 apteryx (luanti still happily runs) 04:55 apteryx luantiserver, to be specific 04:56 apteryx and what would the default world name be, if there is none when luantiserver first runs? 04:56 [MatrxMT] for me in an interactive session, the program terminates 04:57 [MatrxMT] the default world name is just `world` iirc 04:58 apteryx here's more context with the command line and output: https://paste.guixotic.coop/_scratch_-7082-8166.html 04:59 apteryx it only stopped because I interrupt it (C-c at the terminal) 04:59 apteryx maybe it used the gameid baked in my world as a fall back? 05:00 [MatrxMT] yes it would use the game specified in the world's world.mt 05:00 apteryx but that wouldn't explain why Guix sees the service starting successfully in my system test, which runs in a brand new test VM every time. 05:02 [MatrxMT] the world must be in there, else you would get like I get on my system 05:03 [MatrxMT] 2025-12-29 15:59:24: [Main]: World 'apteryx' not available. Available worlds: 05:11 apteryx seems to fallback on mineclonia for me when inputting a nonexistant gameid. Mineclonia is installed along Luanti https://paste.guixotic.coop/_scratch_-8168-9074.html 05:12 [MatrxMT] I uh.. I deleted my .minetest out of carelessness >:( 05:12 apteryx oh no 05:12 [MatrxMT] don't be like me 05:12 user333_ how did you- 05:12 apteryx I hope you have a backup around 05:13 apteryx my command mv ~/.minetest{,.bak} would have left a ~/.minetest.bak for you to rename back 05:13 [MatrxMT] I thought I had it backed up into ..minetest.. ripperon 05:14 user333_ simple solution: rm -rf /bin/rm 05:14 user333_ all fixed! 05:15 [MatrxMT] that sounds like it may need a whole OS reinstall afterwards, something's bound to need it lol 05:23 user333_ or just copy over a new rm binary from another OS 05:34 apteryx is there a default, builtin game that ships with Luanti? Or is an extra package always needed? 05:35 apteryx "To run a Luanti server, you need to select a game using the '--gameid' argument." got it 05:36 apteryx which seems to be automatically picked from an available game (not sure what it would do if there were multiple games, but it doesn't matter for my use case) 05:39 * mrcheese saw `rm -rf /bin/rm` and thought of this: //lua for c,_ in pairs(core.registered_chatcommands)do core.registered_chatcommands[c]=nil;end 05:48 apteryx when there are multiple games it errors out, based on reading main.cpp: "If there's exactly one obvious choice then do the right thing" 05:49 apteryx is luanti consulting XDG_DATA_DIRS or similar to find games/mods? 05:49 apteryx looks like it's using MINETEST_GAME_PATH 05:53 apteryx and MINETEST_MOD_PATH 05:59 apteryx would a PR renaming these to LUANTI_... be welcome? Guix has such a patch already. 06:09 apteryx nice, I got a Luanti server service running in a Guix System test 06:23 Blockhead256 this thing work? 06:24 apteryx yep 06:24 Blockhead256 not on my usual client or OS.. to preserve the files until recovery hehe 06:25 Blockhead256 luanti does not bundle a game any more https://docs.luanti.org/about/changelog/#570--580 06:25 ShadowBot https://github.com/luanti-org/luanti/issues/570 -- Fix nick completion by PilzAdam 06:26 Blockhead256 it's not intended that a distro actually include a game, it should be up to the user 07:52 apteryx makes sense 07:52 apteryx does luanti listen to only ipv6 by default, if it's available? 07:53 apteryx I thought I had my Scheme version of the Python script working, but now Luanti is not responding anything anymore (I'm poking it via ipv4 for now) 07:54 apteryx the code I'm playing with reads as https://paste.guixotic.coop/games-2316-3577.scm_tests_.html 07:57 apteryx should support both, according to a comment in settingtypes.txt: "Note that clients will be able to connect with both IPv4 and IPv6." 07:58 apteryx that's when setting ipv6_server to true, which is the default 07:59 apteryx the bug when testing my code at the moment is that select times out before returning any readable socket. 07:59 apteryx even if I give it 30 s or something longer, so it seems luanti just isn't replying there. 08:00 apteryx inside the test VM, Luanti seems to be running alright: https://paste.guixotic.coop/_scratch_-9119-10027.html 08:04 apteryx another odd observation: fresh after starting, luantiserver is eating up about 1 MiB every 6 seconds, and consuming 0.7% CPU. There's no client. 08:05 apteryx that's /gnu/store/xc6rlb8c5y1mr8lk6xffbxhn8d8z0gbm-luanti-server-5.14.0/bin/luantiserver --port 3000, in an environment where: HOME=/var/lib/luanti LUANTI_GAME_PATH=/gnu/store/6lb8dhfximqn6rz6xa7lgxkl01p8pxkp-luanti-mineclonia-0.118.1/share/luanti/games 08:10 * apteryx punts on the socket checking part for now 08:18 apteryx typo, me thinks 3000 -> 30000 for the port 08:26 apteryx works now, though I'm receiving only 14 bytes from luanti after sending the probe packet, #x4f #x45 #x74 #x03 #x00 #x00 #x00 #x01 08:26 apteryx the python scripts seems to be reading the data[12:14], thus until (including) the 15th byte? 08:47 apteryx ah, maybe to get an extra zero... not sure 08:47 apteryx the 14 bytes I get are: 79 69 116 3 0 1 0 3 255 220 0 1 38 154 08:59 apteryx it also looks sensitive to when I send the packets; I suspect if luanti isn't yet up and running for long enough it gets lost and the select times out/blocks forever 09:12 Blockhead256 that's typically what you get on the client, a timeout message from lower than the TCP/IP stack for connecting before the server is listening 09:14 apteryx I realize now that my select will probably return as early as possible, and then my check for the minimum byte count received won't be the expected >= 14 09:15 Blockhead256 s/lower than/lower down on 09:15 apteryx that's a small amount of data though, so I'd perhaps expect it to be OK (sent in one go)) 09:28 apteryx I just added some retry loop and this way it can complete 09:35 apteryx now that I have I good test I'll enable the containerization of luanti, for extra security 10:01 Blockhead256 hmm do texture packs only allow loading textures? I think not, so no sound, model, locale or font packs, right? 14:52 apteryx neat, my luanti-service-type (now containerized) seems to work well 14:53 apteryx how much RAM should I expect luanti to use for a few players game (e.g. 6-8) ? 14:53 apteryx I was testing single play and it used up to 1 GiB I'd say (800 MiB peak or so) 15:00 MTDiscord depends what game your playing. the mineclon*s are pigs with resources traditionally, while something like void or air game is going to be minimal 15:01 MTDiscord *game + mods 15:15 apteryx MTDiscord: I was playing mineclonia 15:15 apteryx Will each added player require extra memory, or it should stay relatively constant? 15:15 user333_ try air game if you want an engaging game with barely any resources 15:20 MTDiscord apteryx: it will require extra memory. a portion of it will be constant (e.g. various registrations), but a big part isn't, like loaded mapblocks, which (unless your players are clumped together) will grow linearly with the number of players, as well as all kinds of lua-side per-player data structures the game might keep. 15:23 apteryx eh, I might have to fallback to my beefy desktop for hosting instead of my bottom of the line 2 GiB VPS :-) 15:23 apteryx thanks for the infgo 15:23 apteryx info* 15:23 MTDiscord np 15:24 apteryx At any rate there'll be a nice Guix-backed solution to run a Luanti server soon! I'll share the PR when it's ready. 15:24 * apteryx signs off for now o/ 15:26 MTDiscord \o 16:10 ireallyhateirc other game engines support either 4 (compatibility) or 8 (premium deluxe) bone influences per vertex. Does Luanti have a limit on that? 16:21 ireallyhateirc never mind, I asked under the hardware skinning PR 16:23 MTDiscord the limit is currently at 4 16:24 ireallyhateirc will this get bumped to 8 with the hardware skinning change? 16:26 ireallyhateirc I assume 4 is fine for stylized low-poly characters but then that would be another limitation 16:26 MTDiscord as it is, no, HW skinning is also at 4 16:27 MTDiscord it's possible to bump it to 8, but it'll be a bit icky. i'd prefer to do it after HW skinning is through. 16:28 ireallyhateirc with the limit of 4 bones one is not able to make a corrective rig for pelvis, which leaves us with corrective shape keys (morph targets) which are tricky and not implemented yet 16:28 ireallyhateirc an import setting to pick either 4 or 8 influences would be optimal 16:29 ireallyhateirc 4 for staple enemies and other entities that don't need to be pretty 16:29 ireallyhateirc 8 for entities that are less frequent but need to look good (cut scenes, main characters) 16:30 MTDiscord it would be implemented via "sets" (same as in gltf) so if you only use 4, you wouldn't pay for 8 16:31 ireallyhateirc sounds good. So keep that 8 in mind as long as we can have this cheaply with no big performance hit 16:32 MTDiscord i will, thanks for letting me know 20:29 burgeresque hello luatic 20:54 MTDiscord hi 22:19 burgeresque so hows things going 22:22 MTDiscord depends on the things, overall okay i'd say. how about you?