Minetest logo

IRC log for #minetest, 2021-09-16

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

All times shown according to UTC.

Time Nick Message
00:50 MTDiscord <Jonathon> not that i know of
00:50 MTDiscord <Jonathon> you could make a mod that teleports them on login
00:54 Alias2 Or you could edit the database where their logout position in saved
01:01 Tarap joined #minetest
01:06 calcul0n joined #minetest
01:21 absurb joined #minetest
01:29 Verticen joined #minetest
01:56 illwieckz joined #minetest
02:21 Hawk777 joined #minetest
02:26 YuGiOhJCJ joined #minetest
02:28 queria joined #minetest
02:33 queria joined #minetest
02:40 illwieckz joined #minetest
03:28 kamdard_ joined #minetest
03:42 dzho joined #minetest
04:00 MTDiscord joined #minetest
04:35 Kimapr[i] joined #minetest
04:38 dzho joined #minetest
05:01 riff-IRC joined #minetest
05:10 MTDiscord1 joined #minetest
05:12 fkbm joined #minetest
05:21 sagax joined #minetest
05:30 TomTom joined #minetest
06:05 CWz joined #minetest
07:04 ssieb joined #minetest
07:14 specing_ joined #minetest
07:47 Markow joined #minetest
08:03 hendursa1 joined #minetest
08:03 erlehmann sfan5, FYI: https://git.minetest.land/MineClone2/MineClone2/issues/1846
08:04 erlehmann sfan5, regarding “point them at the packet counter feature”, less lag and less crashes are the main reason mineclonia exists
08:05 erlehmann everything else (better banners) is just something nice to have
08:06 hendursa2 joined #minetest
08:07 mazes_83 about detached inventory id, I see people maintain manufacturing_number, would it be reasonable to use: minetest.get_current_modname() .. ":" .. string.format("%05x-%05x-%05x-%05", math.random(1048575), math.random(1048575), math.random(1048575), math.random(1048575))
08:09 mazes_83 that would give a 16^20 collision space, and could save a table for current mod to check if the string is already in use
08:10 erlehmann mazes_83 what exactly are you trying to do here
08:11 mazes_83 generate a unique id for detached inventories
08:12 erlehmann mazes_83 be more specific please. why would you want to do that?
08:13 mazes_83 from what I understood detached name have to get a unique id ?
08:13 mazes_83 s/name/inventory
08:14 mazes_83 I see in the mod I edit, maintains a table on disk to get the next free id
08:15 mazes_83 I just try to look for another way
08:17 erlehmann why would you want to do that?
08:18 erlehmann why detached inventories
08:18 erlehmann for what
08:19 mazes_83 I see people adding features on the mod I edit introduced errors on this disk table, so I try to find another way
08:19 mazes_83 detached inventories are per entities this case
08:19 mazes_83 per entity
08:31 sfan5 erlehmann: good to know that MCL2 devs are aware and I don't need to feel bad for not bothering to open an issue
08:32 sfan5 however the "just move it to the client" stance seems short-sighted. even if you move the code there the data still has to get there, at which point you have to solve an identical problem
08:41 erlehmann sfan5 knowing and caringn are different things sadly. they sometimes port the fixes from mineclonia, after months.
08:43 erlehmann sfan5 the “just move it to the client” thing bothers me more because someone who writes code that updates a texture 66,6 times per second on the server will do the same thing on the client. the result: lag.
09:03 olliy joined #minetest
10:08 Kimapr[i] joined #minetest
10:26 calcul0n joined #minetest
10:37 tech_exorcist joined #minetest
10:57 riff-IRC joined #minetest
10:58 IvanGorinich joined #minetest
12:14 calcul0n_ joined #minetest
12:33 Kimapr[i] joined #minetest
12:44 CWz joined #minetest
12:47 fkbm joined #minetest
12:48 mazes_83 erlehmann: what are main differences between "mineclone 5" and mineclonia ?
12:52 erlehmann mazes_83 mineclone 5 was made because new features were not added. mineclonia was made because of the horrible lag that mineclone 2 (and mineclone 5) have and bc the devs kept adding new bugs.
12:52 erlehmann for example, in mineclone 2 and mineclone 5 for months now all mobs that are not in extra_mobs have regressions compared to mineclone2 0.71.
12:53 erlehmann like, missing AI and stuff
12:54 erlehmann mazes_83 naturally, mineclonia gets new features slower than mineclone 5. but you can, for example, run mineclonia and install the copper mod i think.
12:54 mary4 joined #minetest
12:57 erlehmann mazes_83 if you play singleplayer, the lag will most likely not be noticeable. for multiplayer, i'd suggest to figure out if you want to run mineclonia. it will not have the new nether mapgen ofc.
12:58 erlehmann the broken mobs are a bit frustrating. they can wear armor though, that's a plus lol
13:09 kamdard_ joined #minetest
13:13 hendursaga joined #minetest
13:30 Wuzzy joined #minetest
13:31 IceDragon mazes_83: For unique ids, I would suggest something like ulid https://github.com/ulid/spec
13:31 IceDragon Granted you would need a stable time source of some kind
13:32 IceDragon Maybe a globalstep service that just increments a counter and is saved to disk somewhere so it survives world reloads
13:32 IceDragon Since the system time can drift
13:37 DrFrankenstone joined #minetest
13:39 sfan5 just appending a random number to the current gametime seems decent
13:44 IceDragon As long as its monotonic any time would work methinks
13:45 Taoki joined #minetest
13:51 peterz joined #minetest
13:54 mazes_83 sfan5: how to get the gametime, this is the kind of entropy I need (despite the 16^20 space I use) ?
13:57 mazes_83 for now I just use strformat("%s:%x-%x-%x-x", minetest.get_current_modname(), math.random(1048575), math.random(1048575), math.random(1048575), math.random(1048575))
13:58 Verticen joined #minetest
13:58 mazes_83 I also maintain a table of already used "seed", to guarantee my seed hasn't already been used
13:59 IceDragon `minetest.get_gametime()`
14:01 mazes_83 oups, I could have find this alone, sorry
14:02 IceDragon With ULIDs unless you're somehow generating billions of ids per second, you should never run into conflict
14:02 IceDragon So it can eliminate the 'seen' or seed table
14:03 IceDragon If it brings you any comfort, it's the id format I use at work for messaging and cdrs
14:06 mazes_83 I think I'll stick to the simple solution I found, I think it's also kind of robust to collision
14:06 calcul0n joined #minetest
14:53 Fixer joined #minetest
15:09 mary4 joined #minetest
15:15 Fixer sfan5: thaaaaaaaaaanks
15:40 erlehmann sfan5, mazes_83 how random is math.random btw?
15:41 Krock minetest initializes the seed somewhere in builtin, so it's okayish random
15:44 erlehmann can i steal the inv somehow?
15:44 erlehmann if i know the id
15:53 absurb joined #minetest
16:16 Extex joined #minetest
16:25 mazes_83 yes ofc, but id were even more easy to guess before this random
16:27 mazes_83 they just followed this pattern: entity_name .. ":" .. manufacturing_number
16:27 mazes_83 were manufacturing number is a sequential
16:30 mazes_83 I should put the id table to local instead, would be more sane
16:35 delta23 joined #minetest
17:03 calcul0n_ joined #minetest
17:08 MTDiscord <luatic> Krock: Yes, Minetest seeds the random. But it uses os.time(), meaning servers started the same second will have the same sequence. Minetest does not pop a few random numbers, leading to rather poor first random numbers.
17:13 debiankaios joined #minetest
17:18 IceDragon Any chance of adding a higher precision timer to the lua api so we can at least get millisecond accurate time?
17:19 IceDragon That would also allow for a better random seed
17:19 Mineclone2coolga joined #minetest
17:20 Mineclone2coolga I also developed Ark survival evolved for minetest very big game because 3 giga but I don't know how to post it how to do?
17:20 MTDiscord <luatic> Mineclone2coolga: Troll somebody else.
17:20 MTDiscord <luatic> IceDragon: I use minetest.get_us_time() which, as the name suggest, offers microsecond precision
17:21 MTDiscord <luatic> For the seed, you can alternatively add os.time() and os.clock()
17:21 Talkless joined #minetest
17:21 sfan5 IceDragon: good suggestion, in fact so good that such a function was added more than 3 years ago
17:21 sfan5 ;)
17:21 Mineclone2coolga [19:10:59] <Mineclone2coolga> this ark minetest it contains all the maps such as
17:21 Mineclone2coolga [19:10:59] <Mineclone2coolga> the island
17:21 Mineclone2coolga [19:10:59] <Mineclone2coolga> scorched earth
17:21 Mineclone2coolga [19:10:59] <Mineclone2coolga> aberration
17:21 Mineclone2coolga [19:10:59] <Mineclone2coolga> extinction
17:21 Mineclone2coolga [19:10:59] <Mineclone2coolga> genesis part 1
17:21 Mineclone2coolga was kicked by ShadowBot: Message flood detected. Use a pastebin like paste.ubuntu.com.
17:21 Mineclone2coolga joined #minetest
17:21 IceDragon How did I miss that looking over the lua api, I feel stupid
17:21 MTDiscord <luatic> If you really did build such a large game, you would sure know how to publish it.
17:22 Mineclone2coolga no
17:22 MTDiscord <luatic> But in case you have done something, perhaps built maps: Either find a way to reduce your file size, or find a free hoster which accepts such large files.
17:29 CWz joined #minetest
17:32 Mineclone2coolga because minetest will not hold all this?
17:32 MTDiscord <Sublayer plank> well minetest doesn't have built-in file hosting capabilities
17:33 MTDiscord <Sublayer plank> unless... you'd host a server from it
17:33 MTDiscord <Sublayer plank> but if you want others to download it and play it locally you can't do it by hosting a minetest server
17:34 Mineclone2coolga ok bye
17:34 Mineclone2coolga left #minetest
17:41 erlehmann IceDragon you won't get secure random numbers out of minetest ig
17:45 erle joined #minetest
17:46 appguru joined #minetest
17:55 Markow joined #minetest
17:58 mary4 joined #minetest
18:05 appguru joined #minetest
18:08 TomTom joined #minetest
18:08 IceDragon erlehmann: My comment on a better random seed was in response to Krock mentioning the use of os.time which is only accurate up to a second
18:09 IceDragon If I really wanted strong random numbers I would load up openssl through ffi
18:10 erlehmann any use of os.time() as the sole seed is ridiculous
18:10 sfan5 no need for openssl either https://github.com/minetest/minetest/blob/6fedee16f098549ffaee188b02b777239513abc3/doc/lua_api.txt#L6986-L6997
18:13 IceDragon I really need to look through the lua_api more
18:13 IceDragon I completely forgot about SecureRandom
18:14 sec^nd joined #minetest
18:15 MTDiscord <luatic> Wait we have secure random?
18:15 MTDiscord <luatic> The Minetest feature tree is a very odd one
18:15 sfan5 since 2015-08-06 yes
18:17 IceDragon the minetest api has all kinds of nice things, they're just tucked away in corners of the document sometimes
18:17 sec^nd joined #minetest
18:39 sec^nd joined #minetest
18:46 appguru joined #minetest
18:55 Flabb joined #minetest
18:57 longerstaff13 joined #minetest
19:00 IceDragon So I was messing around with ItemStack, I did a benchmark, where I created 4 million item stacks, it took 30+ seconds, if I ditch the constructor and leave just a basic table ({name, count, wear}) it takes 1 second for all the stacks
19:01 IceDragon Now what I'm wondering, what exactly goes on in the ItemStack constructor that would make it that slow
19:13 specing_ joined #minetest
19:14 IceDragon joined #minetest
19:21 detrout joined #minetest
19:25 rymiel joined #minetest
19:27 ssieb joined #minetest
19:52 appguru joined #minetest
20:27 sfan5 IceDragon: https://github.com/minetest/minetest/blob/master/src/script/lua_api/l_item.cpp#L430-L443
20:28 Extex joined #minetest
20:29 IceDragon From a glance the only culprit I could think of is the read_item, I should be able to find the function unless you already know where it is
20:30 sfan5 probably in cpp_api/c_content.cpp
20:31 nore joined #minetest
20:32 IceDragon Yep that's where it was
20:32 IceDragon Doesn't look like it would be that inefficient, unless I'm missing something
20:34 IceDragon wait a second, the itemstack is being returned by value, which implies a copy
20:34 sfan5 https://en.cppreference.com/w/cpp/language/copy_elision nah
20:34 grouinos joined #minetest
20:36 IceDragon I guess one way would be to just benchmark creating 4 million C++ itemstacks and see what it does
20:48 IceDragon okay gonna try something different, changing the m_aliases to a regular map (from unordered_map) and running the benchmark again
20:48 IceDragon I doubt it would make a difference
20:49 sfan5 do you create empty item stacks or ones with name?
20:49 sfan5 also you should profile this properly, for example with perf
20:50 IceDragon ones with names
20:50 IceDragon C++ isn't my strong point so don't expect much of me there P:
21:04 IcyDragon joined #minetest
21:05 IceDragon The struggles of crappy mobile internet
21:16 IceDragon sfan5: How do I use perf, that aside I split my test into different types, empty item stacks complete in 1.7~ seconds, itemstrings take 11, tables take 8, tables with a blank name take 7, since my initial test was doing all four at once this gives an idea of the issue
21:17 sfan5 I'd suggest this https://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html
21:18 sfan5 I tried this on the entire client yesterday:
21:18 sfan5 perf record -F 400 -a --call-graph dwarf -- ./bin/minetest --go --worldname test
21:18 sfan5 perf script | /tmp/FlameGraph/stackcollapse-perf.pl | /tmp/FlameGraph/flamegraph.pl > graph.svg
21:18 sfan5 but that didn't work so well, what you want to do is minimize the testcase so only your benchmark code ever runs
21:20 IceDragon yeah that's gonna be hard since it's in lua land right now
21:20 IceDragon I could always stick it in a single mod under a clean world
21:20 IceDragon since all it needs to do is create the item stacks
21:23 sfan5 yeah maybe try that first
22:00 Sven_vB joined #minetest
22:31 IceDragon Okay sorry about the delay something work related came up
22:31 IceDragon I have the perf.data so now I'm gonna read the flame graphs
22:56 IceDragon Okay I've tested, empty stacks, itemstring, table and itemstack from another itemstack, all graphed up as svg
23:09 erlehmann IceDragon, why are you creating 4 million itemstacks in the first place
23:10 IceDragon I was testing a inventory serializer, in order to ensure that it performs well I ran it with an absurd number of times and noticed that it took way longer than expected
23:10 IceDragon Basically: I had to hammer the code to get noticeable benchmark numbers
23:11 IceDragon under normal circumstances I wouldn't care, but because it seemed to be taking a little too long I wanted to figure out why
23:11 IceDragon If I can create 1 million tables under a second, I can't fathom why an ItemStack takes 10x that
23:26 IceDragon https://share.druid.space/2021-09-16/minetest/itemstack-graphs/
23:26 IceDragon I uploaded the result from my perf tests
23:32 sfan5 I wonder why time is spent on Toolcaps when there aren't any
23:33 IceDragon Not sure if it's worth fixing since this is an extreme (test) case, but seems like there is room for optimization
23:35 MTDiscord <Jordach> i think i have an idea why
23:35 MTDiscord <Jordach> all tools correct fallback to the players hand definition of ":"
23:35 MTDiscord <Jordach> in other words it's templating every itemstack
23:36 MTDiscord <Jordach> to copy the default hand tool props
23:37 MTDiscord <Jordach> this includes craftitems, tools with no defined properties, nodes
23:37 sfan5 that would be stupid
23:37 MTDiscord <Jordach> i mean this is minetest
23:37 MTDiscord <Jordach> stupid seems to be the norm
23:38 erlehmann second hand when
23:41 Lunatrius` joined #minetest

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