Minetest logo

IRC log for #minetest, 2023-10-08

| Channels | #minetest index | Today | | Google Search | Plaintext

All times shown according to UTC.

Time Nick Message
00:17 Sokomine joined #minetest
00:34 Sokomine joined #minetest
00:55 Zambyte joined #minetest
01:10 smk joined #minetest
01:28 Zambyte joined #minetest
02:15 Lesha_Vel joined #minetest
04:00 MTDiscord joined #minetest
04:11 fluxionary joined #minetest
06:40 s20 joined #minetest
06:47 calcul0n_ joined #minetest
07:25 definitelya joined #minetest
07:32 jaca122 joined #minetest
07:38 fury999io joined #minetest
08:10 mrkubax10 joined #minetest
08:15 justache joined #minetest
08:21 copygirl joined #minetest
08:22 Warr1024 joined #minetest
08:22 copygirl Hoi everyone! I'm creating a mod for NodeCore and might have some moddev questions. Is this a good place to ask around?
08:23 copygirl I'm just gonna go on a whin here and guess that it is. ^^
08:24 copygirl Just for a bit of context I'm trying to move players, but setting the position serverside is very jarring, understandably. So I'm going to just send some information to the player for them to decide if they should be moved, and then do so on their end.
08:27 copygirl Are mod channels the idiomatic way to send arbitrary messages? I only need it for server->client communication so it seems a bit overkill. And there appears to be no way to send a message to a specific player?
08:28 erle yes this is a good place but i think a nodecore channel exists also
08:29 copygirl In which I am also present, but I believe this is a general Minetest modding question.
08:29 erle yes
08:29 erle copygirl if you want to display arbitrary stuff to players, i'd suggest to use the HUD
08:31 erle like i do here: https://git.minetest.land/erlehmann/xmaps/src/branch/master/init.lua#L580
08:31 erle you can also send chat messages to players
08:31 copygirl I want to cause the player to move but the movement to happen clientside based on some logic the client needs to execute, to avoid being jerked around and their position and look rotation to be reset to the server-side known value from 0.2s ago or whatever the ping is to that player.
08:31 erle but i guess you figured that out
08:32 Sobinec joined #minetest
08:33 erle copygirl i doubt you actually want client-side logic for this use case to avoid being jerked around. you probably want some target and a smoothing function?
08:33 erle like CSS transitions or so?
08:33 erle anyway, i think minetest can not do it. best you can probably do is attach the player to an invisible entity and move that. this will, in case of lag, rubberband the player.
08:34 erle sadly, minetest has no way to specify movement prediction AFAIK
08:34 copygirl I'm writing node-based movable objects. When the nodes get moved around, any player on top should also move. The player could, due to lag, have moved off or jumped on their screen, so the decision of whether to move should be made on the client.
08:34 erle i.e. everything will be moved in a straight line
08:35 erle oh i see the issue
08:35 erle i think this simply does not work, game-logic wise
08:35 copygirl Right now these "moves" are just going to be snappy teleports of 1m at a time. Whether I want to smooth that out I'll see later.
08:35 erle consider the following: what if a player sees themselves not on a node but others see them on the node
08:36 erle if the decision where the player ends up is made client-side, this is going to be a mess to reconcile
08:36 erle i mean ultimately, that decision can indeed be made client-side
08:36 copygirl The logic works with set_pos(), it's just jarring due to lag, the worse the lag, the more jarring it is. (Because setting position serverside resets any motion done by the player since the last server-known position, especially look orientation.)
08:36 erle as long as you observe the speed limit
08:37 copygirl All I need now is to have a way to send a message or packet from the server to a specific player for it to do the movement logic on its end.
08:37 erle again: are you sure you need *logic* here? logic-free movement can exist
08:38 copygirl I don't mind of the players visually lag behind on other players' screens, I just want them to not feel sick as they get moved themselves.
08:38 copygirl don't mind if*
08:38 erle if it is about that, maybe you could figure out how to smooth the set_pos thing?
08:39 copygirl And.. do it server-side? Or what are you suggesting?
08:39 erle yeah
08:39 erle alternatively, get the cheat client dragonfire. it has no CSM restrictions. you can basically move arbitrarily client-side there.
08:39 erle try to prototype your issue using it
08:39 copygirl Okay how do you solve the issue of the player being jerked back to an old known position?
08:40 erle well, i would rubberband them to that position using a transition function provided
08:40 lemonzest joined #minetest
08:41 copygirl Rubberbanding is what I want to avoid.
08:42 copygirl I mean, perhaps I can't do what I want to do because in certain cases the server will think the player has teleported through a block or so.
08:42 erle the server is not smart enough for that
08:43 erle basically you have a speed limit server side and that's it
08:43 erle so with dragonfire, you can, for example, do the dragonball z thing
08:43 copygirl You could noclip if you wanted to?
08:43 erle you can easily noclip in minetest without a cheat client even
08:43 erle i mean, the server is pretty dumb. and it has to be that!
08:44 copygirl In that case it sounds like I might be fine. Ish.
08:44 erle take fall damage for example: if you let the server calculate it, you will get lag
08:44 erle so the client calculates it and sends it to the server
08:44 erle which means you can easily modify the client to not have any
08:44 erle this also applies to falling speed. the speed limit does not apply when going fast downwards.
08:45 erle this means you can teleport to the mineclone2/mineclonia nether using a cheat client
08:45 erle (the way to mitigate that would not be to check falling speed, but to check if there is an active portal at the source point)
08:45 erle (but AFAIK no one is doing that)
08:46 copygirl Alright, so then I'd like to return to my original question: How do I send a message from server to a specific player?
08:46 erle a message? a chat message? a HUD display message?
08:46 copygirl Okay, maybe I should call it a network packet or event.
08:46 Warr1024 joined #minetest
08:47 erle for anything you want to display, again, look at: https://git.minetest.land/erlehmann/xmaps/src/branch/master/init.lua#L580 and the documentation for player:hud_change([…])
08:47 erle i think i have an example of code that does that
08:47 erle give me a moment
08:47 copygirl I need to send some data from the server to the client for it to listen to and do something.
08:48 erle again, prototype it using a cheat client. and maybe mod channels?
08:48 erle i think our girl lizzy made a server side fps thing. like how many ticks the server had.
08:48 copygirl Mod channels appear to be sending messages to all players.
08:49 erle encrypt the data then?
08:49 copygirl It's about not sending unnecessary data.
08:49 copygirl The data is not sensitive.
08:49 erle again, i suggest to prototype it using a cheat client and see if this actually works before going into implementation details
08:50 erle “not sending unnecessary data” is a non-functional
08:50 erle functionals are things that do stuff
08:50 erle non-functionals are things that don't do stuff, like performance or security
08:50 copygirl Okay what if I prototype it and then it turns out I can't actually move the player client-side in the official client? What good does this do me?
08:51 erle you have a good case for an API then
08:51 copygirl I think we're derailing from the actual question I have.
08:51 erle and maybe a good case for general movement prediction
08:51 erle well your question is kinda like an X-Y question from my POV
08:52 erle people want to do X and figure out that Y lets them do that, so they ask for Y
08:52 erle but they actually want to do X, not Y
08:52 erle https://en.wikipedia.org/wiki/XY_problem
08:52 erle not?
08:52 erle > Q: How can I use X to do Y?
08:52 erle > A: If what you want is to do Y, you should ask that question without pre-supposing the use of a method that may not be appropriate. Questions of this form often indicate a person who is not merely ignorant about X, but confused about what problem Y they are solving and too fixated on the details of their particular situation.
08:52 erle well here X and Y are reversed
08:53 erle copygirl is it like that or not? if not, why not?
08:53 copygirl Fair but I've got 15+ years of programming experience so I can make some decisions for myself at this point. At this point I regret including the context for my question.
08:53 erle LO
08:53 erle LOL
08:54 erle look, a reason why i suggest prototyping it is that often people, even experienced people, fixate on solutions that seem obvious but are not helping. you notice that during implementation. i don't have your use case, so i can not help you with a concrete implementation. i doubt what you want is possible.
08:54 copygirl I didn't sign up to discuss whether my approach is the correct one, I'm asking the basic question of how to handle sending custom network packages (or the equivalent thereof) to specific players.
08:54 Ingar not sending unnecessary data is efficiecy
08:54 erle yeah but it is, again, a non-functional. thus it can be ignored for a proof-of-concept.
08:54 erle oh i have a solution
08:55 erle attach it to some entity that only that player sees.
08:55 erle :P
08:55 Ingar calculations are cheap, data transfers are are prohibitively expensive - nvidia
08:55 copygirl I already have a proof of concept that works using server-side teleportation. The issue is jarring movement. The fix is to push the teleportation to the client.
08:55 erle copygirl i suggest to ask in #minetest-dev for details on the engine and maybe post on the forums
08:56 erle as i said, on a protocol level, the client can *already* teleport
08:56 erle what is missing here is movement smoothing, no?
08:56 copygirl That's nice, now I just need to find a way to tell the client that it needs to teleport.
08:56 copygirl I never once asked for smoothing.
08:57 erle again, i suggest to prototype that using dragonfire or waspsaliva, then show it off. you have full control over movements using CSMs there.
08:58 copygirl I'm not willing to use a cheat client even if it is for prototyping. I'll be wanting to use and test the mod on a friends' server and such and we're all using the official client.
08:58 copygirl I would like to try out whether it is impossible to move the player client-side first before I go to such measures.
08:59 erle have you looked at other mods that move players standing on blocks?
08:59 copygirl I don't know of any.
08:59 erle i have built a teleporter abusing mineclone2/mineclonia pistons
08:59 erle the player is definitely moved by being pushed there
09:00 erle the trick is to repeatedly trigger the teleporters in a very short interval
09:00 erle i mean the pistons
09:00 erle this makes the player move repeatedly
09:02 erle copygirl if you have not looked at any solutions and do not want to prototype it using a client that definitely can do it, i can not help you.
09:03 copygirl Even if I have a different client, I will still need to tell it to move somehow.
09:03 erle and btw “I have X years of experience outside of this context so my chosen solution for this context is non-negotiable” is not something i have bad experiences with (people don't actually try to explore solution space then)
09:04 erle strike the ”not”
09:04 erle i am still too sleepy
09:04 erle copygirl have you tried standing on a node moved by a mesecons piston?
09:05 copygirl Whether or not my solution is the correct one, I still would like to know how to do this super basic thing.
09:05 copygirl I only play NodeCore.
09:05 copygirl I suppose I could look at mesecon.
09:07 erle insisting something is “super basic” does not make the minetest engine do it. case in point, calling “addShadowVolumeSceneNode()” is super-easy and minetest instead got an entirely separate shadows implementation because no one tried that function.
09:07 copygirl Okay, so they use `move_to`.
09:07 erle minetest is weird
09:08 copygirl > For players this does the same as `set_pos`, `continuous` is ignored.
09:08 copygirl So we're back to my faulty solution that jerks around players.
09:08 erle would not ignoring the continuous make it not-jerky?
09:10 copygirl Player moves. Sends their position to the server. Player continues to move on their end. Server receives player position, updates it on their end. Server teleports the player based on their currently known position, which is now outdated. Player receives the "teleport" packet, and is now jerked around relative to where they should have been.
09:10 copygirl This is especially jarring when they have looked in another direction because apparently it also overides their look direction with what the server is telling them.
09:11 erle have you looked if there is an issue on github about this behaviour and possible approaches?
09:11 copygirl Do you understand my problem now, and why I want to do the "movement" (technically teleportation) on the client?
09:11 erle yes, but i *still* think while movement-on-the-client is a worthwhile goal, arbitrary-logic-on-the-client is not.
09:11 erle at least not when server-dictated
09:12 copygirl Whatever the server tells the client to do, it will not have up-to-date information regarding the client's movement, so the server alone cannot solve this issue. The client will have to move according to its state of the world and its position.
09:12 erle i did suggest a solution some time ago for this kind of thing, i.e. sending the client the movement paths of objects and letting it interpolate along this for any object
09:12 erle but no implementor interest and i do not have this problem often
09:12 erle basically only when i go very far in a minecart
09:12 copygirl Bad solution would be for the server to go "you have been moved 1 block in this direction". And the client just does it.
09:13 erle movement paths could be relative or absolute anyway
09:13 erle are you familiar with the svg path syntax?
09:13 erle i had something like that in mind
09:13 copygirl The solution I'm wanting to go for is the server saying "hey these blocks around you have been moved, if you would be affected by them, then move yourself".
09:13 erle that sounds more like a node property than anything else
09:13 erle like making nodes sticky or changing the fall damage on them
09:15 copygirl The server moves the nodes. I'm not going to add metadata to all the moved nodes for a tick just to cause some players to (hopefully) move, and I don't even know if that would propagate properly.
09:15 copygirl The nodes are not always in motion. The are not moving at a constant rate, either.
09:17 erle yes but consider the following
09:17 erle imagine if a node had a property that just means “if a player is on it, the player moves”
09:17 erle with the node
09:17 erle the thing is, nodes can not *move* per se
09:17 erle they teleport, or you make a falling entity and create a new node
09:18 erle or maybe you could want an API that says “every entity in area ”
09:18 erle or maybe you could want an API that says “every entity in area X move by 1 node to the north, interpolated using this curve with this movement duration”
09:18 erle do you see now why i urge you to prototype it instead of insisting you need a way to control player movements using server-sent CSMs?
09:19 copygirl I can already find all the players that are nodes that have been moved.
09:19 copygirl That's what I've been doing.
09:19 copygirl Now, how do I move these players?
09:19 copygirl Server-side movement is out of the question.
09:20 erle okay, let me ask directly. would a “move everyone in this area 1 node along the +X axis, the movement taking 1 second” command from the server solve your problem?
09:20 copygirl Client-side movement is a possibility.
09:20 copygirl So I have to tell the client somehow that it needs to move.
09:20 erle i ask because that thing is logic-free
09:20 copygirl Ideally I'd like to prototype this before, I dunno, creating an issue on the issue tracker.
09:20 copygirl So I need to let the player know when it gets moved.
09:21 copygirl Hence I need a way to send a network packet (or equivalent) with some data that tells the player how to move.
09:21 copygirl So, am I wrong in asking if there's a way to do that with Minetest?
09:21 erle no
09:21 erle but i think i'm done here.
09:22 copygirl Alright, then maybe someone else can actually answer my question :I
09:22 copygirl To repeat myself: I'd like to know if there's a way for a my mod to send a message from the server to a specific client.
09:23 erle from my POV, the issue is that you don't answer questions about alternate approaches. i have no domain knowledge about your problem, so my suggestions are likely not appropriate. but if you don't tell me why, i can't help you figure it out.
09:23 erle i already told you how. use hud messages.
09:24 erle there is an amount of APIs that sends packets only to specific players. the issue here seems to be that i can't say if any of them is appropriate to your problem.
09:26 erle if i would prototype it, i'd try a) a CSM solution using modchannels b) a new API prototype server-side that gives movement hints (a.k.a. “move everything in this area using the specified properties”) and just teleports old clients
09:27 erle though i am pretty convinced the CSM solution is a dead-end implementation-wise
09:27 erle but i can't say, i don't have this problem!
09:27 erle also: if you are that hung-up about modchannels only sending to specific clients, make a separate channel for each player?
09:44 copygirl Alright so from looking into it, the client API does not allow for modifying objects' positions.
09:44 erle unless you use a cheat client
09:44 copygirl This issue seems to address that directly: https://github.com/minetest/minetest/issues/13727
09:45 copygirl This issue talks about the jerkiness of the camera when you get teleported: https://github.com/minetest/minetest/issues/11502
09:45 erle yes and the suggested solution in #13727 is A BIT WEIRD lol
09:45 ShadowBot https://github.com/minetest/minetest/issues/13727 -- Allow clientside customization of entities, add a clientside API for clientside entity manipulation.
09:48 erle to anyone else: if you can tell me what i might have done different in the conversation with copygirl to get answers about questions about alternate API approaches, please tell me.
10:12 Talkless joined #minetest
10:50 sparky4 joined #minetest
11:03 mrkubax10 joined #minetest
11:05 pounce joined #minetest
11:06 calcul0n joined #minetest
11:08 appguru joined #minetest
11:14 erle okay so it turned out that copygirl and me had some misunderstandings. in particular, copygirl did not know that minetest server mods are only executed server-side and do not have a client-side component.
11:50 justache joined #minetest
12:01 Thelie joined #minetest
12:32 sparky4 joined #minetest
13:11 Markow joined #minetest
13:32 Talkless joined #minetest
13:35 Talkless joined #minetest
14:00 jaca122 joined #minetest
14:04 s20 joined #minetest
14:23 MTDiscord <luatic> that at least partially explains this mind-numbing convo
14:29 copygirl In my defense I didn't realize that a lot of the client-side predition was just features built into the engine rather than some piece of code running on the client. (Such as breaking a block to another in-place.)
14:30 MTDiscord <luatic> fair
14:31 MTDiscord <luatic> minetest's "design" is definitely.. unusual to say the least for something that calls itself a game engine, and def. very frustrating
14:33 muurkha luatic: how would you do it?
14:33 MTDiscord <luatic> muurkha: do what, design a game engine or solve the mod problem?
14:33 muurkha design a game engine
14:34 MTDiscord <luatic> in my book, a proper game engine should give me full control over the client
14:34 MTDiscord <luatic> so something more like LÖVE2D or LÖVR
14:37 erle and here, again LANGSEC says nopity nope
14:37 erle also you can look at a bunch of game engines and see how you don't really get *full* control
14:37 erle i think the client is more like a dumb terminal in the ideal case
14:37 erle doing dumb terminal things
14:38 erle (if possible, in a scriptable manner)
14:38 erle luatic have you read the seven turrets of babel?
14:40 MTDiscord <luatic> erle: this is not about langsec
14:40 MTDiscord <luatic> my users need to trust me
14:40 MTDiscord <luatic> on the basis of "trust me sis"
14:40 erle lol
14:40 erle look, if you have a boundary between systems you can get a holographic fracture
14:40 MTDiscord <luatic> (and if they don't, they can isolate the software i give them, or they can audit it themselves)
14:41 erle i.e. the interpretation of information changes at the boundary
14:41 erle and for a lot of things that can not be parsed by a deterministic pushdown automaton the question “is this valid input” is UNDECIDABLE.
14:42 erle which means you are forced to write a client that can not even answer the simple question “is this a valid rasponse from the server”
14:42 erle if your grammar is complex enough
14:42 erle i don't see how that has to do with trusting oyu
14:42 erle you
14:43 muurkha I think this is rarely an issue in practice
14:43 erle and yet we have entire categories of bugs that hinge on this possibility
14:43 muurkha I don't think that's really true
14:43 muurkha we have entire categories of bugs in parsers, it's true
14:43 muurkha and by using better parsing technology we can eliminate them
14:44 erle well is it really parser bug if your parser is intermingled with business logic by necessity
14:44 muurkha but the reason for those bugs is not because the decision problem for the language is potentially nonterminating
14:44 MTDiscord <luatic> erle: when i write a game, i want to distribute it more or less standalone; a game engine is essentially just a tool / library to help me write that game. this is how i use "game engine" and what i want a game engine to be; if need be, i want to be able to control the networking, the clientside presentation, the client prediction, the server, the server steps, the collisions, the physics, every aspect.
14:46 erle muurkha yes but trying to have maximum flexibility might make it so
14:46 muurkha parser bugs that result in a parser failing to terminate do not in themselves grant the supplier of the data any additional privileges
14:46 MTDiscord <luatic> this is not really what minetest is. minetest is a to some extent general-purpose thin-ish client with oddly specific behavior that was originally more or less aimed at minetest game and a scriptable server which you still don't fully control.
14:46 erle muurkha that is true. but surely, if the decision problem is not decidable, it will just be ignored?
14:47 MTDiscord <luatic> i have taken to calling minetest a "platform" rather than a game engine; roblox probably is closest to what minetest is, but even roblox has client-side scripts
14:47 muurkha sure, but that's probably okay; if the user gets tired of waiting for a message to parse, they can cancel the attempt to parse
14:47 erle i mean i have seen this time and time again. at work there is one product that uses user-provided lua to control [redacted]. when i asked how to make sure that the lua code does not do anything stupid, the answer was: we are aware of this and chose to do nothing (cause it's a prototype).
14:48 muurkha confining Turing-complete mobile code is not an intractable problem
14:48 muurkha although it's the kind of problem that people tend to underestimate :)
14:48 erle i think what i want to say is: if you are designing a system yourself, you should *probably* try to figure out the problem space and try to make your message passing formats match the domain as close as posible.
14:49 erle and “let's just use arbitrary code” is a cop-out that a) seems obvious b) inhibits a lot of other stuff you might want to do later (usually relating to decision problems or optimization)
14:50 erle that it might be insecure or hang your app is just a very obvious way to show a boundary that matters
14:50 muurkha well, I'm in favor of the Principle of Least Power
14:50 muurkha you should only use mobile code where you need it
14:50 muurkha but where you need it is definitely not "nowhere" :)
14:50 erle by “mobile code” you mean ”code sent from a server to a client” ?
14:51 erle well, take the problem that copygirl has with moving players when nodes move. nodes can't move. they change. so the minimum-thing here would be a hint from the server to the client “these nodes moved there” (suggested by copygirl in query).
14:52 erle and then the client would know “oh i stood on this node” or not
14:52 erle and could react accordingly
14:53 copygirl Something more generic to apply force or relative position / rotation updates would work for me as well.
14:53 copygirl Though the ideal solution would involve client-side code.
14:53 erle anyway, i maintain that the proper technique to address unknown problem is to provide extension points and not to make the system do everything in principle
14:54 erle because ”everything” is a huge space and “everything you ever wanted” is a smaller infinity (or how you would call that)
14:54 copygirl Because in one case the server can apply some force to the player when on the players' end they've already moved out of the area that would cause the force to be applied.
14:54 erle it might even be finite who knows
14:54 copygirl Think of a piston, for example. The client should probably decide if it got pushed by the block or not.
14:55 copygirl Else it'll move out of the way and then get seemingly pushed by nothing.
14:55 erle on the other hand, my beautiful teleportation machinery that chains together piston movements no longer works if it relies on client-side prediction hehe
14:55 erle so i can no longer teleport through walls
14:55 erle (using a weird contraption)
14:57 copygirl Also regarding game engine, I've looked into the possibility to using Wasmtime to run WebAssembly in a sandbox, as well as putting it all in a sandboxed / containerized process, similar to how browsers do that.
14:58 copygirl And since in my case I want to ship around source code as well, the compiler needs to run in Wasm too. Zig looks like a good candidate that also fits well in other ways.
14:58 MTDiscord <luatic> yeah, there are various ways to isolate apps including games, web apps are one of them and many engines allow you to target web one way or another
14:58 erle yes, browsers, the things that even multi-billion-dollar corporations can not write secure sandboxes for
14:58 copygirl Indeed, the other way is to just target browsers and let them do all the security sandboxing.
14:59 MTDiscord <luatic> copygirl: I think you should ship precompiled stuff and just provide your sources on GH etc.
14:59 copygirl Though then you'd still need to secure servers. (I want devs to mod the server as its running, pushing code.)
14:59 erle https://github.com/allpaca/chrome-sbx-db this list of chrome sandbox exploits is as long as my arm
14:59 copygirl I dunno how easy it is to get the entire security suite that browsers have on a dedicated server, or if that even makes sense.
14:59 MTDiscord <luatic> erle: what is wrong with your arm
15:00 erle nothing, maybe i have a larger default font than you
15:00 erle if webshits really believed that javascript was easily secured, the would let me upload javascript to execute on their servers, these cowards!
15:00 erle the → they
15:01 muurkha erle: by "mobile code" I mean "code obtained from a remote and possibly malicious source during the normal execution of a system, rather than when a new installation is initially configured".  wasm (wasmtime, lucet, whatever) is a promising approach here
15:01 copygirl MTDiscord: I want to encourage an ecosystem of open source and remixing on the spot. I want you to be able to get on a server and inspect the mods it's running, and grab it for your own. Fuck intellectual property to be honest. Let's just make cool shit.
15:01 muurkha copygirl: agreed
15:02 erle copygirl oh you might like how mindustry does it with in-game processors
15:02 erle ever checked that one out?
15:02 copygirl I played it but propably 2+ years ago so I have not heard of that.
15:02 erle i think they existed back then too
15:02 muurkha btw MTDiscord is a bot relaying what people say on Discord; in this case the person who's been talking there is luatic
15:02 erle so processors are buildings that can execute code in some limited-domain specific language to do stuff
15:03 erle usuallly it is used to either control complicated factories or make units mine or go to war
15:03 copygirl muurkha: Oh derp. I do know that, just muscle memory.
15:03 erle or use flying units to supply some resources
15:03 copygirl I need to add MTDiscord to my relay bots in my client.
15:03 erle each building has its own code that can be edited
15:04 erle i used it for example to make a battery charge up and then only discharge it when i had enough energy to start this really huge generator
15:04 erle i forgot the name
15:04 erle but the one that needs like 30 seconds or so of input energy
15:04 erle and then outputs lots of energy
15:04 erle *if* it started up
15:04 MTDiscord <luatic> copygirl: I'm not saying you should ship binaries for obfuscation purposes. It's for convenience / performance. The zig compiler toolchain sure isn't small.
15:05 MTDiscord <luatic> (they are in the process of separating from LLVM, though)
15:05 erle muurkha luatic what do you think of the way openRA does mods?
15:05 MTDiscord <luatic> never heard of it
15:05 erle i.e. units and buildings being purely declarative using a traits system
15:05 erle openRA is an engine to run command & conquer / command & conquer: red alert and some other games
15:05 MTDiscord <luatic> wait i think i heard from it once and it was from you and it was this point
15:05 erle dune 2000 too
15:06 erle i suggest to play around with it for everyone wanting to make their own game engine
15:06 MTDiscord <luatic> (my brain is not at full capacity when i'm sick, to say the least)
15:06 erle it's *way* more flexible than i thought it could be
15:06 copygirl The Zig compiler seems pretty small though, and it compiles pretty fast. Add a cache to that and it shouldn't be that painful.
15:06 erle oh i hope you get better!
15:06 MTDiscord <luatic> erle: thanks :3
15:06 copygirl The problem is if you do binary + source separately you don't know if you're actually running the source.
15:07 erle is performance really a problem if i can run python on a microcontroller
15:07 erle like for games
15:07 copygirl Performance is a problem if you're thinking big like me xD
15:07 MTDiscord <luatic> erle: python is not as bloated as it seems, actually
15:07 copygirl I'm not thinking small like Minetest. I'm thinking big like processing thousands of active entities.
15:07 MTDiscord <luatic> like ok its very wasteful but the language itself is much smaller than many compiled languages
15:08 erle why would processing thousands of entities be an issue unless you go accidentally quadratic?
15:08 MTDiscord <luatic> yeah, thousands doesn't sound like a lot
15:08 erle computers are fast
15:08 MTDiscord <luatic> even with quadratic stuff, that puts you in the millions, which is not unreasonable
15:09 MTDiscord <luatic> hell even minetest survives thousands of entities (barely)
15:09 erle like, minetest particles for example only lag because they are doing a drawcall for each particle or so (correct me on this if you know better)
15:09 MTDiscord <luatic> (and if you make too many thousands you run out if IDs :3)
15:09 erle lol
15:09 erle true
15:09 MTDiscord <luatic> erle: good news, there's a PR to fix that
15:09 erle luatic bad news, x2048 left
15:09 MTDiscord <luatic> was about to point that out
15:09 erle also there was a PR to fix that once in the past, it got rejected
15:10 erle but nice that FINALLY someone addresses it
15:10 MTDiscord <luatic> there's also some nitpick i brought up, but i think it could be sorted out satisfyingly
15:11 erle i go to bed for a while
15:11 MTDiscord <luatic> eep well
15:11 erle nah i will just rest
15:11 erle > eep
15:11 erle this is what ppl who are like 25 say right? :D
15:11 erle eepy peepy
15:11 copygirl > hell even minetest survives thousands of entities (barely)
15:11 copygirl That kind of proves my point tho.
15:12 erle what is your point?
15:12 copygirl That Minetest can't "really" handle thousands of entities.
15:12 erle i'm pretty sure a nice thing would be to handle thousands of players
15:12 erle but come on, whatever performance problems are there, they are *probably* superficial
15:12 copygirl Yeah that would be nice though players are a bit more effort to process than other entities.
15:13 erle like the thing where signs made using texmods have some non-zero performance impact
15:13 erle because using many texmods has some non-zero performance impact
15:13 erle (because the parser is a bit weird, unless it has been changed)
15:14 copygirl Maybe not the best example but this is the kind of thing I'm talking about: https://www.youtube.com/watch?v=F-v6Xz6-pf4
15:14 copygirl Maybe I can find the video I'm thinking of.
15:15 MTDiscord <luatic> erle: i think i have a linear time texmod parser in modlib
15:15 MTDiscord <luatic> this comes at the cost of not being 100% congruent with the current shotgun parser, which allows messy thingies
15:16 MTDiscord <luatic> but as far as the docs (lua_api.md and the docs i wrote) are concerned, it should be correct
15:17 MTDiscord <luatic> and i also churned gazillions of real world texmods through it (collected with lizzy's help)
15:19 muurkha luatic: that's fucking awesome
15:19 MTDiscord <luatic> thanks :)
15:20 MTDiscord <luatic> i feel i should maybe split this off into a separate mod...
15:20 MTDiscord <luatic> (that is true for much of modlib)
15:20 MTDiscord <luatic> but mods always have this overhead.. need to make a new repo, move stuff there, mod.conf, readme, forum post, contentdb package yadda yadda..
15:22 MTDiscord <luatic> here's the link to the bot lizzy wrote to collect texmods from servers, btw: https://github.com/LizzyFleckenstein03/texmodbot/
15:47 MinetestBot [git] grorp -> minetest/minetest: Notify users to reinstall MTG if worlds exist (#13850) d05da51 https://github.com/minetest/minetest/commit/d05da513beef622b8c74f0ab5c56af9c74512b2b (2023-10-08T15:47:00Z)
15:47 MinetestBot [git] Wuzzy2 -> minetest/minetest: Add script to update/generate mod translations (#13739) 2c74797 https://github.com/minetest/minetest/commit/2c74797d340be791b1891596b26ca311815afa93 (2023-10-08T15:47:11Z)
15:49 fluxionary joined #minetest
15:58 Thelie joined #minetest
16:06 MTDiscord1 joined #minetest
16:06 s20 joined #minetest
16:13 MinetestBot [git] sfan5 -> minetest/minetest_game: Fix typo in German translation b58991d https://github.com/minetest/minetest_game/commit/b58991d4f3d34449da670ee1948d414323fa89db (2023-10-08T16:11:44Z)
16:13 lissobone I've checked out Arena_Lib, and in spite of its apparent inability to correctly set lighting (it crashes while saving the parameters, though they do display well), it's literally the best mod for mini-games.  Should've done my manhunt mod with it.  Hell, I ought to rewrite it COMPLETELY, for it's an unreadable and unmaintainable mess.  I will closely follow the directives from SICP.
16:16 muurkha luatic: splitting dependencies is tricky.  it's less hassle to add one dependency on one version of one library than on N versions of N libraries
16:16 muurkha lissobone: not sure SICP is a reliable guide to making your code maintainable; if it were, there wouldn't be nearly as much Java and Golang code in the world as there is
16:17 muurkha or TypeScript
16:17 muurkha (though to be fair there's quite a bit of Lua, Python, and JS now)
16:18 lissobone It's not just a "reliable" "guide", it's one of the Bibles of the LISP world.
16:19 lissobone left #minetest
16:22 muurkha it certainly is, and it changed my whole way of thinking about programming
16:24 lhofhansl joined #minetest
16:25 muurkha but what SICP aims at is maximum flexibility, obviously not maximum performance, nor maximum maintainability or even maximum readability; and those goals are not always aligned.  most of maintenance consists of looking at existing code to figure out what it does and how, and most importantly what it does *not* do.  SICP is all about making code that can do *anything*
16:39 Thelie joined #minetest
16:43 Sobinec joined #minetest
16:54 grorp joined #minetest
17:08 calcul0n joined #minetest
17:09 mrkubax10 joined #minetest
18:11 mazes_83 joined #minetest
18:20 calcul0n joined #minetest
18:43 qqq joined #minetest
19:47 doseijin joined #minetest
19:53 jaca122 joined #minetest
20:01 gxt joined #minetest
20:34 fling joined #minetest
20:34 erle luatic “i think i have a linear time […] parser, but it is not exactly the same” hihi ;)
20:34 erle luatic oh that is why lizzy has a script to collect texmods!
20:35 erle i noticed it today
21:03 jaca122 joined #minetest
21:16 fling joined #minetest
21:36 YuGiOhJCJ joined #minetest
21:45 est31 joined #minetest
21:45 YuGiOhJCJ joined #minetest
22:32 panwolfram joined #minetest
22:56 ball joined #minetest
23:46 gxt joined #minetest

| Channels | #minetest index | Today | | Google Search | Plaintext