| Time |
Nick |
Message |
| 01:05 |
[MatrxMT] |
<Blockhead256> 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 |
| 01:10 |
|
alias joined #luanti |
| 01:39 |
|
Sharpman joined #luanti |
| 01:55 |
|
Sharpman joined #luanti |
| 02:28 |
|
apteryx joined #luanti |
| 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 |
<wsor4035> you can also pm the bot |
| 02:38 |
apteryx |
fun! Is he both using said python script? |
| 02:38 |
|
tzenfore joined #luanti |
| 02:38 |
apteryx |
bot* |
| 02:39 |
MTDiscord |
<wsor4035> 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] |
<Blockhead256> >is there better docs than <actual docs of thing>? |
| 02:51 |
[MatrxMT] |
<Blockhead256> 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 |
<wsor4035> 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 |
<wsor4035> 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] |
<Blockhead256> "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] |
<Blockhead256> 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] |
<Blockhead256> 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:05 |
|
user333_alt joined #luanti |
| 03:06 |
user333_ |
ugh im blind. with socket, _thread, and time |
| 03:14 |
mrcheese |
lol |
| 03:22 |
|
user333_alt joined #luanti |
| 03:26 |
|
fluxionary joined #luanti |
| 04:40 |
|
aliasreadytaken joined #luanti |
| 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] |
<Blockhead256> for me in an interactive session, the program terminates |
| 04:57 |
[MatrxMT] |
<Blockhead256> 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] |
<Blockhead256> yes it would use the game specified in the world's world.mt |
| 05:00 |
|
MTDiscord joined #luanti |
| 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] |
<Blockhead256> the world must be in there, else you would get like I get on my system |
| 05:03 |
[MatrxMT] |
<Blockhead256> 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] |
<Blockhead256> I uh.. I deleted my .minetest out of carelessness >:( |
| 05:12 |
apteryx |
oh no |
| 05:12 |
[MatrxMT] |
<Blockhead256> 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] |
<Blockhead256> 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] |
<Blockhead256> 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:48 |
|
YuGiOhJCJ joined #luanti |
| 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:22 |
|
Blockhead256 joined #luanti |
| 06:23 |
|
Blockhead256 joined #luanti |
| 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? |
| 10:53 |
|
mrkubax10 joined #luanti |
| 11:05 |
|
jaca122 joined #luanti |
| 11:17 |
|
Bombo joined #luanti |
| 11:17 |
|
Bombo joined #luanti |
| 11:34 |
|
burgeresque joined #luanti |
| 11:39 |
|
mrcheese joined #luanti |
| 11:39 |
|
mrcheese joined #luanti |
| 12:31 |
|
oneeyedalien joined #luanti |
| 13:30 |
|
oneeyedalien joined #luanti |
| 13:52 |
|
PoochInquisitor joined #luanti |
| 13:52 |
|
SFENCE joined #luanti |
| 14:40 |
|
SFENCE joined #luanti |
| 14:45 |
|
SFENCE joined #luanti |
| 14:50 |
|
tzenfore joined #luanti |
| 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 |
|
SFENCE joined #luanti |
| 14:53 |
apteryx |
I was testing single play and it used up to 1 GiB I'd say (800 MiB peak or so) |
| 14:56 |
|
SFENCE joined #luanti |
| 15:00 |
MTDiscord |
<wsor4035> 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 |
<wsor4035> *game + mods |
| 15:08 |
|
SFENCE joined #luanti |
| 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 |
<luatic> 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 |
<luatic> 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 |
<luatic> \o |
| 15:28 |
|
SFENCE joined #luanti |
| 15:54 |
|
SFENCE joined #luanti |
| 16:06 |
|
ireallyhateirc joined #luanti |
| 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 |
<luatic> 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 |
<luatic> as it is, no, HW skinning is also at 4 |
| 16:27 |
MTDiscord |
<luatic> 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 |
<luatic> 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 |
<luatic> i will, thanks for letting me know |
| 16:59 |
|
SFENCE joined #luanti |
| 17:24 |
|
jaca122 joined #luanti |
| 17:33 |
|
Trifton joined #luanti |
| 17:41 |
|
SFENCE joined #luanti |
| 17:47 |
|
Sharpman joined #luanti |
| 17:51 |
|
oneeyedalien joined #luanti |
| 17:51 |
|
SFENCE joined #luanti |
| 18:22 |
|
Talkless joined #luanti |
| 18:26 |
|
mrkubax10 joined #luanti |
| 19:46 |
|
SFENCE joined #luanti |
| 19:48 |
|
fling joined #luanti |
| 20:29 |
burgeresque |
hello luatic |
| 20:42 |
|
mrkubax10 joined #luanti |
| 20:54 |
MTDiscord |
<luatic> hi |
| 21:34 |
|
anemofilia joined #luanti |
| 21:34 |
|
fgaz joined #luanti |
| 21:34 |
|
HuguesRoss joined #luanti |
| 21:34 |
|
user333_ joined #luanti |
| 21:34 |
|
ursa-major joined #luanti |
| 21:35 |
|
z812 joined #luanti |
| 21:35 |
|
HamAdams joined #luanti |
| 21:35 |
|
jfred joined #luanti |
| 21:36 |
|
user333_ joined #luanti |
| 21:58 |
|
mrkubax10 joined #luanti |
| 22:09 |
|
fling joined #luanti |
| 22:19 |
burgeresque |
so hows things going |
| 22:22 |
MTDiscord |
<luatic> depends on the things, overall okay i'd say. how about you? |
| 23:13 |
|
Sharpman joined #luanti |
| 23:30 |
|
Thermoriax joined #luanti |
| 23:31 |
|
mrcheese joined #luanti |
| 23:32 |
|
panwolfram joined #luanti |