Minetest logo

IRC log for #minetest-dev, 2021-07-29

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

All times shown according to UTC.

Time Nick Message
00:01 hecks it's not significant now as we're throwing out thousands of draws
00:01 hecks but it may become significant in the future, it depends on your expected player count too
00:20 specing_ joined #minetest-dev
00:27 v-rob joined #minetest-dev
00:42 hecks oh i think i found the mouse in the .x loader
00:43 hecks there are two places where it may be looking for a material
00:43 MTDiscord <Jordach> something was definitely infinite looping
00:43 hecks i'm not sure about the infinite looping bit but
01:07 hecks Jordach try again
01:07 MTDiscord <Jonathon> @JorDACh ^
01:09 MTDiscord <Jordach> can do
01:10 hecks i don't have high hopes because i don't actually know why it breaks yet
01:11 hecks but at least it handles materials as unknown blocks now
01:11 MTDiscord <Jordach> hecks:
01:11 MTDiscord <Jordach> source/Irrlicht/CXMeshFileLoader.cpp:92:2: error: use of undeclared identifier 'MaterialSlotCount'
01:11 hecks aaaaaaa
01:11 MTDiscord <Jordach> clang will go clang
01:12 hecks cleaned up
01:12 hecks this is why keeping more than one class in a file is bad
01:13 MTDiscord <Jordach> building
01:13 MTDiscord <Jordach> should take about 1 minute for both CPU archs
01:13 hecks both, huh
01:13 MTDiscord <Jordach> arm64 and amd64
01:14 MTDiscord <Jordach> my M1 is ludicrously handy for compiling
01:14 hecks does your machine emulate one of those?
01:14 MTDiscord <Jordach> it comes with a coprocessor to turn x64 into arm64
01:14 hecks i'd assume amd64 is the emulated one
01:14 hecks yup
01:14 hecks some power processors do this too
01:15 MTDiscord <Jordach> the emulation is pretty much 85% of a comparable Intel CPU
01:15 MTDiscord <Jordach> it's that efficient
01:15 hecks good news because i can't stay on this arch forever
01:15 MTDiscord <Jordach> why do you think i took up Mac maintainer as a hobby
01:16 hecks it's just that pc hardware has become kinda crap, i don't feel like upgrading
01:16 MTDiscord <Jordach> mem leaks
01:17 hecks again?
01:17 MTDiscord <Jordach> game freezes to death and i hear mp3 stuttering
01:17 hecks what would even cause it to do that
01:18 hecks the first int is indeed a slot count
01:18 MTDiscord <Jordach> well now it's not doing it
01:18 MTDiscord <Jordach> wat
01:19 hecks then it's an array of slots, equal to the face count
01:19 MTDiscord <Jordach> 0   net.minetest.minetest             0x0000000100d21600 checkMeshNormals(irr::scene::IMesh*) + 96
01:19 MTDiscord <Jordach> segfaults there again
01:20 hecks hang on
01:20 hecks i need to solve this mystery about the file first
01:20 MTDiscord <Jordach> well you can freely download it
01:20 hecks i know, i'm going through it
01:20 hecks shotgun has 271 material assignments
01:21 MTDiscord <Jordach> wat
01:21 hecks not materials
01:21 MTDiscord <Jordach> original blender had what 6 materials?
01:21 hecks but faces(?) that have materials
01:21 hecks you have 5 mats
01:21 hecks anyway spnkr has 245 of these things whatever they are
01:21 hecks this is conveniently the one part of the .x spec i never bothered with...
01:22 hecks i don't even use material assignments, i just use separate meshes myself
01:22 MTDiscord <Jordach> that works too but that's one too many CAO for my liking
01:22 hecks but look at that
01:22 hecks spnkrx has a face count of 245
01:23 hecks ok shotgun does have 271 faces
01:23 hecks so this array length is fine
01:24 hecks so yeah it's 271 face mats and then
01:24 hecks just material blocks
01:24 hecks the material blocks are absolutely not needed for anything, we already know the slots
01:24 MTDiscord <Jordach> basically assigning that face to a material
01:24 hecks yeah they're assignments
01:24 hecks we already know the slot count (it's the first number) so we know how many submeshes to generate
01:25 hecks but oh
01:26 hecks ok so irrlicht does split it into separate mesh buffers
01:26 hecks mesh->Buffers.reallocate(mesh->MaterialSlotCount); does make sense, this is what we're supposed to do
01:27 MTDiscord <Jordach> but for some reason recalculating normals seems to shit the bed
01:27 hecks now what the hell is BETTER_MESHBUFFER_SPLITTING_FOR_X and do we have it on or off
01:27 hecks there are two implementations of this in this thing
01:27 hecks i might just wipe the slate clean and write my own if i can't figure it out
01:27 MTDiscord <Jordach> well the stk-editor has it disabled
01:27 MTDiscord <Jordach> https://github.com/supertuxkart/stk-editor/blob/master/lib/irrlicht/source/Irrlicht/CXMeshFileLoader.cpp#L22
01:28 hecks in what way is it "better" i wonder
01:28 MTDiscord <Jordach> fuck knows
01:28 hecks we do not define it either
01:28 MTDiscord <Jordach> only thing we can try is test
01:28 hecks /the same vertex can be used in many different meshbuffers, but it's slow to work out
01:28 hecks oh
01:28 hecks hmmmmm
01:29 hecks now if i were writing this code from scratch, with a reasonable mesh system
01:29 hecks the way this works would be that we have a shared VBO and several separate element buffers that index into it
01:29 hecks and that might be what this code path is about
01:38 hecks try again
01:38 hecks Jordach
01:39 hecks i swear if it's this line...
01:39 MTDiscord <Jordach> it didn't memory leak this time i believe
01:40 hecks does it still die?
01:40 MTDiscord <Jordach> recompiling
01:41 hecks oh right, you have to static link everything
01:41 MTDiscord <Jordach> making just the arm64 version for speed
01:41 hecks what i changed was, i initialized MeshBuffer.Material with a blank SMaterial()
01:42 hecks maybe irrlicht is so "smart" that on top of storing the material with the mesh buffer (????) it also refuses to use calloc
01:44 MTDiscord <Jordach> thar she blows
01:44 MTDiscord <Jordach> https://cdn.discordapp.com/attachments/747163566800633906/870119452300161084/Screenshot_2021-07-29_at_02.43.46.png
01:44 MTDiscord <Jordach> the rocket entity and particles are obj
01:45 MTDiscord <Jordach> yet it just died right there
01:45 hecks okay this is getting out of hand, i'll actually set up a test bed myself
01:45 MTDiscord <Jordach> nope, another meshnormals crash
01:46 MTDiscord <Jordach> also this was the screenshot as it OOM'd
01:46 MTDiscord <Jordach> https://cdn.discordapp.com/attachments/747163566800633906/870120142535790702/Screenshot_2021-07-29_at_02.43.27.png
01:48 hecks does that mean anything?
01:48 MTDiscord <Jordach> things are rendering fine
01:48 hecks i see the viewmodel being rendered
01:48 MTDiscord <Jordach> yes
01:48 hecks so it renders and just leaks memory now?
01:48 MTDiscord <Jordach> animates fine too
01:48 MTDiscord <Jordach> by leaks memory i'd gather ~30GB per second
01:48 MTDiscord <Jordach> it took three seconds for me to move that far away from the launch position before it dies
01:49 hecks does spnkrx cause this too?
01:49 MTDiscord <Jordach> not that i'm sure of
01:49 hecks but shotgun would?
01:49 MTDiscord <Jordach> it seems normals might just be wank
01:49 hecks what does this have to do with normals though
01:49 MTDiscord <Jordach> seems to cause it less frequently
01:49 hecks that's the mystery
01:49 MTDiscord <Jordach> entities have face dependant shading
01:49 hecks i just deleted the part where it was assigning default materials that we never used
01:50 MTDiscord <Jordach> it shouldn't need to calculate
01:50 MTDiscord <Jordach> but if the X reader is missing pieces
01:50 hecks look at CXMeshFileLoader::parseDataObjectMaterial in the original and tell me if that looks hazardous to delete at all...
01:51 MTDiscord <Jordach> can do, the minetest terminal reported nothing as it died
01:51 MTDiscord <Jordach> as seen here, note that i've just exceeded virtual memory usage
01:51 MTDiscord <Jordach> https://cdn.discordapp.com/attachments/747163566800633906/870121275333435422/Screenshot_2021-07-29_at_02.43.27_2.png
01:52 hecks i sure love being datamined by discord even when using irc
01:52 MTDiscord <Jordach> i'd doubt that
01:52 MTDiscord <Jordach> who has the cpu horsepower to do that 24/7 at hundreds of thousands or higher messages per second
01:53 hecks fine
01:53 hecks it just scans *your* process list =]
01:54 hecks now why would it be running out of memory or even allocating any while rendering, this is demented
01:54 MTDiscord <Jordach> it doesn't happen on the build before you took the axe to irrlicht
01:54 hecks i'm aware
01:54 MTDiscord <Jordach> because that's dated 24th of june
01:55 MTDiscord <Jordach> lemme go get the hot sauce to the file in question
01:56 pgimeno valgrind?
01:57 MTDiscord <Jordach> did the X loader ever interface with setMeshTextureLoader
01:58 hecks it did
01:58 hecks that's the part i axed
01:58 hecks because i wanted to kill that loader
02:00 MTDiscord <Jordach> is it possible that one of the loaders doesn't terminate their loop
02:00 MTDiscord <Jordach> and get stuck
02:01 hecks i just reverted the file and i'm basically doing it again but more carefully
02:01 MTDiscord <Jordach> revert that file
02:01 MTDiscord <Jordach> and push it
02:01 MTDiscord <Jordach> i want to see if that changes anything
02:01 hecks it's not possible to just use that version as it is because the texture loader doesn't exist
02:01 hecks also i want to solve this because SMaterial will be gone sooner or later
02:04 pgimeno if hecks can't reproduce it I'd say that a Mac GL bug should be given consideration
02:04 hecks it isn't
02:04 MTDiscord <Jordach> i believe it's getting hung up on parsing
02:04 hecks and i have not tested it myself yet
02:05 MTDiscord <Jordach> because a few seconds pass and then everything locks up
02:05 MTDiscord <Jordach> followed by the out of memory window
02:05 hecks it's just a stupid edge case probably thanks to the pants on head way irrlicht's mesh buffers are designed
02:05 hecks who puts a material definition in the mesh asset class
02:08 hecks once more
02:09 hecks Jordach
02:09 hecks it's making dummy materials again now, just not filling them
02:09 hecks i'll have to figure this out sooner or later but maybe it will work for now
02:10 MTDiscord <Jordach> building
02:12 hecks i can set your viewmodels as the player model and it doesn't break
02:12 MTDiscord <Jordach> they're attachments
02:12 hecks that shouldn't matter
02:12 MTDiscord <Jordach> chaching
02:12 MTDiscord <Jordach> UNSUPPORTED (log once): POSSIBLE ISSUE: unit 0 GLD_TEXTURE_INDEX_2D is unloadable and bound to sampler type (Float) - using zero texture because texture unloadable
02:13 MTDiscord <Jordach> this error message has shown before
02:13 MTDiscord <Jordach> mem usage seems normal
02:13 MTDiscord <Jordach> post recompile
02:13 hecks do you mean you got this error normally?
02:14 MTDiscord <Jordach> yes
02:14 hecks before this
02:14 MTDiscord <Jordach> only X models would do it
02:14 hecks consider that irrelevant once i rewrite shit
02:14 MTDiscord <Jordach> nope, whatever was in the X loaders is gone
02:14 MTDiscord <Jordach> causing the OOM
02:14 hecks it's fixed?
02:15 MTDiscord <Jordach> not sure if the normal calc is fixed
02:15 hecks oh actually
02:15 MTDiscord <Jordach> everything works fine
02:15 MTDiscord <Jordach> even joining, leaving and rejoining
02:16 hecks i may have an idea now
02:16 MTDiscord <Jordach> which causes the normalcalc segfault
02:16 hecks this had nothing to do with normals
02:16 hecks this was a material slot count thing
02:16 hecks i think it isn't enough to trust the value in the face material list
02:16 hecks do you have time to test this?
02:16 MTDiscord <Jordach> ye
02:16 hecks sure, let me try
02:17 MTDiscord <Jordach> yeah, memory usage didn't budge even when changing model out on the fly
02:17 MTDiscord <Jordach> nor did my CPU hit 100% on all cores
02:19 MTDiscord <Jordach> lemme reload my system so i can clear some cruft from the kernel
02:20 hecks try this
02:21 MTDiscord <Jordach> ye
02:21 hecks works?
02:22 MTDiscord <Jordach> need to rebuild
02:22 hecks ah
02:22 MTDiscord <Jordach> i rebuild it all to prevent any cache
02:22 hecks have you fetched it already at least?
02:22 MTDiscord <Jordach> was using 6f20f54
02:22 hecks i want to push the next experiment
02:22 MTDiscord <Jordach> now at de97c7a
02:22 hecks okay
02:24 hecks i pushed the next experiment but don't test it until you're done with this one
02:26 MTDiscord <Jordach> sigsegv, 0   net.minetest.minetest             0x0000000100629474 checkMeshNormals(irr::scene::IMesh*) + 96
02:27 MTDiscord <Jordach> everytime, no matter what viewmodel
02:27 hecks man, this is dumb
02:28 MTDiscord <Jordach> push your test
02:28 hecks second one? it's already pushed
02:28 MTDiscord <Jordach> Updating de97c7a..88aba8e
02:29 hecks although if the first one didn't work, this one won't either
02:29 MTDiscord <Jordach> let's find out
02:32 MTDiscord <Jordach> that was the OOM event
02:32 MTDiscord <Jordach> because it just froze rather than segfault
02:32 hecks ok can you open cxmeshfileloader.cpp
02:32 MTDiscord <Jordach> ye
02:33 hecks around line 130, there's mesh->Buffers.push_back( AnimatedMesh->addMeshBuffer() );
02:33 hecks wherever that is, insert this line right below
02:33 hecks mesh->Buffers.getLast()->Material = video::SMaterial();
02:34 hecks I'm pretty sure we tried this before but do it anyway
02:34 hecks and build
02:34 MTDiscord <Jordach> rebuilding
02:36 hecks and if that is still broken, try my last commit
02:37 hecks i'm basically just checking this matrix of conditions now
02:37 MTDiscord <Jordach> adding that line sigsegv with 0   net.minetest.minetest             0x00000001043c14a0 checkMeshNormals(irr::scene::IMesh*) + 96 **
02:37 hecks read the material count vs count it manually, generate materials now vs do it later
02:37 hecks ok, fetch and build again
02:38 hecks i'll be shocked if it doesn't work now
02:38 hecks because all this changes is that instead of creating a list of blank materials and counting it, it just increments a counter and makes them up on the spot
02:39 MTDiscord <Jordach> making irr takes about 30 seconds
02:39 MTDiscord <Jordach> reconstructing
02:40 MTDiscord <Jordach> had to uh merge conflict oof
02:40 MTDiscord <Jordach> might redownload the branch
02:40 MTDiscord <Jordach> just in case
02:40 hecks i reverted some
02:40 hecks and force pushed
02:40 MTDiscord <Jordach> fair
02:40 hecks just overwrite whatever you've got
02:40 MTDiscord <Jordach> just did that
02:41 MTDiscord <Jordach> git restore ...
02:41 MTDiscord <Jordach> OOM'd
02:41 MTDiscord <Jordach> just watched it munch 2GB
02:42 hecks explain to me the logic here
02:42 hecks have an std::vector (sort of) of structs
02:42 hecks push back blank struct N times
02:43 hecks use .size() as iteration limit and retrieve the blank structs
02:43 hecks w
02:43 hecks works
02:43 hecks have a counter
02:43 hecks increment the counter when you'd be pushing back
02:43 hecks use the counter as the iteration limit
02:43 hecks spawn the blank struct inline
02:43 hecks doesn't work
02:44 MTDiscord <Jordach> the only thing coming to mind is new CMTL
02:45 hecks just uhh these aren't real STL types irrlicht is using
02:45 hecks it's rolling its own :DDDD
02:46 hecks okay now fetch and test one last time to verify i reverted to the right commit
02:46 hecks and we'll leave it at that
02:50 hecks i checked the b3d loader real quick too and luckily i did not touch the materials too much there
02:50 MTDiscord <Jordach> there it is again
02:50 MTDiscord <Jordach> UNSUPPORTED (log once): POSSIBLE ISSUE: unit 0 GLD_TEXTURE_INDEX_2D is unloadable and bound to sampler type (Float) - using zero texture because texture unloadable
02:50 hecks yeah yeah
02:50 hecks does it actually work?
02:51 MTDiscord <Jordach> works fine
02:51 MTDiscord <Jordach> even the offending shotgun
02:51 MTDiscord <Jordach> even joining and leaving
02:52 MTDiscord <Jordach> this might have something to do with it
02:52 MTDiscord <Jordach> 2021-07-29 03:51:34: WARNING[Main]: Irrlicht: Could not create ITexture, texture needs to have a non-empty name.
02:52 hecks it's the blank material
02:52 hecks it doesn't matter because this is the material you're not actually using
02:52 MTDiscord <Jordach> why does it segfault?
02:53 MTDiscord <Jordach> spaghetti
02:53 hecks it just did?
02:53 MTDiscord <Jordach> i'm referring to early
02:53 MTDiscord <Jordach> earlier
02:53 MTDiscord <Jordach> why does a seemingly innocuous material cause OOM and segfaults
02:53 hecks i actually have no idea, malformed MeshBuffer i guess
02:53 MTDiscord <Jordach> actually
02:53 hecks i'll say it for the third time, who puts materials in a mesh buffer type
02:53 MTDiscord <Jordach> it might be using the material
02:54 hecks in either case
02:54 MTDiscord <Jordach> doing some weird memory manipulation
02:54 hecks i was giving it a blank one
02:54 MTDiscord <Jordach> then the fuck is it doing
02:54 hecks i don't know dude, this is deep gremlins
02:55 hecks anyway as soon as the client environment actually creates the stupid scene node
02:55 hecks it sets new materials
02:55 hecks so the ones generated on import are actually just trash
02:56 hecks so as long as this doesn't crash, it's fine
02:56 hecks it was either generating the mesh buffers wrong somehow due to something i missed
02:56 hecks or using uninitialized memory somewhere that i missed
02:56 hecks irrlicht has its own container types and allocators because it's "clever" like that
02:56 hecks so you never know
02:57 hecks the latest fetch works right?
02:58 hecks merging irr#50 in five if it does
02:58 ShadowBot https://github.com/minetest/irrlicht/issues/50 -- Fix .x material slot parsing by hecktest
03:01 MTDiscord <Jordach> one moment
03:01 MTDiscord <Jordach> oh that was the commit
03:01 hecks 6f20f54
03:01 MTDiscord <Jordach> yeah i'm on that one
03:01 hecks good to merge?
03:02 MTDiscord <Jordach> one sec
03:02 MTDiscord <Jordach> rapidly constructing package
03:03 hecks sorry it's just 5am and i'm retarded and i want to merge this already
03:03 MTDiscord <Jordach> it's alright, it's late for me too
03:03 MTDiscord <Jordach> even if it's 4am
03:04 MTDiscord <Jordach> verified
03:04 hecks cool
03:04 MTDiscord <Jordach> it works fine including multiple rejoins
03:04 hecks also merging #11485 since sfan said it's fine
03:04 ShadowBot https://github.com/minetest/minetest/issues/11485 -- Add a simple PNG image encoder with Lua API by hecktest
03:05 MTDiscord <Jordach> i'll get around to updating mac builds shortly
03:07 MTDiscord <Jordach> it's a great feeling to have a machine that can rebuild both MT and Irr within 90 seconds
03:09 hecks it would be a great feeling if c++ did not need that much in the first place
03:09 MTDiscord <Jordach> that too
03:09 MTDiscord <Jordach> but yes i'm able to test wildly unstable stuff
03:09 MTDiscord <Jordach> just ping me when you want it
03:11 hecks i link dynamically and don't make clean so i can rebuild things quickly enough
03:11 hecks i just needed you for this in particular because i don't have your game installed
03:11 MTDiscord <Jordach> ah, there is a repo for it
03:11 hecks and because going out of memory might be more disastrous on my machine in particular
03:12 MTDiscord <Jordach> you run windows, yeah that'd probably commit the bsod
03:12 hecks i'm one of those lunatics who don't use a paging file
03:12 MTDiscord <Jordach> i probably just burnt about 300GB's worth of writes on my NVMe
03:12 hecks it's a coin flip whether or not going out of ram actually requires a reset or not
03:12 MTDiscord <Jordach> because of the OOM writing
03:13 hecks going swapless is pretty snappy but when you're out, you're out
03:13 hecks but i actually prefer this to everything just freezing
03:13 MTDiscord <Jordach> yeah until a certain point my mac won't even turn on swap
03:14 MTDiscord <Jordach> should you want to debug my game further https://github.com/Dumpster-Studios/BattleForArkhos/
03:15 hecks i'll keep it bookmarked
03:15 hecks it's probably a decent stress test
03:15 MTDiscord <Jordach> to the point of exploding the network handler
03:16 hecks not sure if i asked this before but
03:17 hecks does #10699 help at al?
03:17 ShadowBot https://github.com/minetest/minetest/issues/10699 -- Break up the message queue by category by hecktest
03:17 hecks at all
03:17 MTDiscord <Jordach> we can test that later
03:17 MTDiscord <Jordach> i'd have to build it on the arch machine downstairs first
03:17 MTDiscord <Jordach> and then watch netstat
03:18 hecks it won't send less packets
03:18 hecks it'll stall less
03:18 MTDiscord <Jordach> well, you know what i mean
03:18 hecks reason i made it was that
03:18 MTDiscord <Jordach> when it got blocked up packets weren't being sent freely, rather than in batches
03:19 hecks i was trying to test mibi on that crappy connection we played on back there and it was possible for the packet queue to just clog up
03:19 hecks the server did not have enough upload to catch up with the packets produced
03:19 hecks you'd be seeing your character do actions you did 30 seconds ago
03:20 hecks MT currently doesn't have any mechanism to flush a clogged queue
03:20 MTDiscord <Jordach> yep had that before with hud updates
03:20 hecks no way to recover from this
03:20 MTDiscord <Jordach> hud is another known clogger
03:20 hecks so on one end i did reduce the bandwidth i use but on another i made that pr
03:20 hecks to at least reduce the chances because we only have 3 queues, one of them hogging most of the traffic
03:21 MTDiscord <Jordach> bandwidth isn't a concern with VPS hosts with symmetrical gigabit
03:21 hecks i will be hosting that thing in a proper datacenter eventually
03:21 hecks but even a couple megabits should serve at least a few people
03:21 MTDiscord <Jordach> yeah
03:22 hecks online games are usually not too heavy
03:22 MTDiscord <Jordach> my game tries extremely hard from Lua side from sending packets
03:22 MTDiscord <Jordach> even making decimal places tolerant
03:22 hecks we could probably reduce a lot by being smarter about object properties
03:22 hecks just sending a diff of those
03:22 MTDiscord <Jordach> oh good god
03:22 hecks that's your bottleneck right?
03:22 MTDiscord <Jordach> that would make my game less horrifying
03:22 hecks it doesn't sound hard
03:23 MTDiscord <Jordach> no it doesn't
03:23 MTDiscord <Jordach> might be a worthwhile experiment
03:27 hecks rendering comes first
03:31 hecks speaking of which, another day wasted
03:32 hecks i sure hope for no more changes to the build system... i'd like to actually do things
03:40 MTDiscord <Jordach> i'd rather have pages documenting everything right down to caveats than have a few words that don't explain what it does
05:02 MTDiscord <exe_virus> What's the use case for the png encoder? Just procedural png generation? Why bake it into minetest?
05:03 MTDiscord <exe_virus> I guess you could procedurally generate a daily map texture or something for the server. Can't think of much else you need to modify daily or on restart
05:21 MTDiscord <GreenXenith> Dynamic textures
05:21 MTDiscord <GreenXenith> player-made textures, custom/dynamic skins
05:21 MTDiscord <GreenXenith> There are uses
05:36 MTDiscord <Jordach> Using minetests built in noise sources you can generate the entire map on all 62km sides
05:37 MTDiscord <Jordach> And have it as a portable map
05:37 MTDiscord <Jordach> And generate various zoom levels
05:37 MTDiscord <GreenXenith> Yeah, but good luck reading it later for use
06:38 Extex joined #minetest-dev
07:01 olliy joined #minetest-dev
08:40 entuland joined #minetest-dev
10:15 calcul0n joined #minetest-dev
10:39 freshreplicant[m joined #minetest-dev
10:48 LW joined #minetest-dev
10:48 wsor4035 joined #minetest-dev
11:31 MTDiscord <exe_virus> That's for noise. Not for actual map. Basically at startup it takes a solid 20-60 seconds and calculates the top node in each x-z location (like minimap) and places that into a texture
11:32 MTDiscord <exe_virus> Could obviously limit the area rendered.
12:04 olliy1or joined #minetest-dev
12:21 specing_ joined #minetest-dev
12:44 calcul0n_ joined #minetest-dev
14:35 Fixer joined #minetest-dev
15:39 Extex joined #minetest-dev
16:19 hecks joined #minetest-dev
16:25 hecks exe_virus: the use case for the png encoder is that some lost soul was writing TGA files in his mod and we just got rid of that format (it was never actually supported, worked by accident)
16:26 MTDiscord <Warr1024> We support dynamic media so it seems reasonable to support at least one tool to create it properly.  Makes sense to me.
16:26 hecks it is useful
16:26 hecks within limits though
16:26 hecks this only helps if you can pre-generate data
16:26 hecks and it's always better to use a texture modifier if it can handle what you want
16:28 MTDiscord <Warr1024> If only we had a dynamic_remove_media that let us reclaim the texture memory :-D
16:28 hecks i should finish that ^[raw: thing, it would complete the feature set by allowing embedded images in texstrings
16:28 hecks dynamic media is problematic in general and i don't like it
16:28 hecks the fact that the media is propagated to all clients makes it barely useful
16:29 MTDiscord <Warr1024> I originally liked the idea of a ^[png: that used base64-encoded png files, with the idea of using external encoders to optimize the data.  Texturemod strings have a pretty tight size limit, and the zlib in PNG would help compensate for the encoding expansion.
16:29 hecks my ^[raw prototype is almost png but
16:29 hecks a little leaner
16:29 MTDiscord <Warr1024> Not being able to free up memory from textures when they're no longer used is a serious limitation for texturemods though
16:29 hecks there's no need to conform to the png spec but it is similar in spirit
16:30 hecks you know, in general we do not gar
16:30 hecks b
16:30 MTDiscord <Warr1024> If you did zlibbed raw RGBA32 then that'd be PNG enough for me.
16:30 hecks stupid keyboard, we do not garbage collect texmods and that's bad
16:30 hecks i actually thought ^[raw should only use palettes because of size concerns
16:31 hecks so it was zlibbed base64 palette and pixels blob
16:31 MTDiscord <Warr1024> I would imagine that zlib would compensate a lot for that.  When I automatically optimize real-world png images, it's a crap shoot whether it ends up indexed vs RGBA
16:31 hecks palettes always help
16:31 MTDiscord <Warr1024> Yeah, except when they don't.
16:31 MTDiscord <Warr1024> Having to generate an optimized palette is probably going to add a lot of complexity
16:32 MTDiscord <Warr1024> I guess if we provide tools for it in the engine then it doesn't matter too much exactly what we use
16:32 hecks you know the real reason your textures are fat? not using ^[sheet
16:32 hecks that's the thing that helps zlib the most
16:32 hecks only for actual files of course
16:32 MTDiscord <Warr1024> That only affects the media transfer which is a very tiny part of the problem for me.  I'm much more concerned with in-memory growth
16:32 hecks i was thinking that the user should explicitly specify the palette
16:33 hecks and build their images with palettes in mind, basically enforcing that ^[raw should not be used for heavy duty work
16:33 MTDiscord <Warr1024> Sounds like I would need ^[rawer: then.  I'm looking more for cases like user-provided media, like player skins
16:33 hecks we need to start actually collecting unused textures on the client
16:33 hecks are you telling me you can't make a good skin in 256 colors
16:33 MTDiscord <Warr1024> If we start GCing unused textures then that opens up a massive world of possibility, I think.
16:33 hecks you can also combine raws
16:34 MTDiscord <Warr1024> I never said I couldn't make a good skin in 256 colors
16:34 MTDiscord <Warr1024> I said I wasn't going to be making the skins
16:34 hecks =] well
16:34 hecks user uploaded skins are cancer
16:34 MTDiscord <Warr1024> Yeah, too bad we're game engine devs and not oncologists
16:35 MTDiscord <Warr1024> I mean shit, I've got an official TODON'T list on my game
16:35 hecks allow users to upload skins -> end up with a server full of crappy copyrighted characters
16:38 MTDiscord <Warr1024> I'm not here to deal with should and shouldn't decisions, those are the responsibility of downstream users.  I'm here to deal with can and can't.
16:38 MTDiscord <Warr1024> Limiting an image to 256-color indexed is too arbitrary for me to justify.
16:39 hecks sure whatever, 16 24 and 32 bits wouldn't be hard
16:39 hecks i just don't think it's the right use case for the feature
16:40 hecks maybe embedding a png really is simpler
16:40 MTDiscord <Warr1024> It's frankly a little iffy whether it makes more sense to add another texturemod vs. improve the way existing texturemods work.  You can already transmit an arbitrary RGBA image with enough tmod fuckery, but there are serious limits.
16:40 hecks but we would need to actually link libpng on the server
16:41 MTDiscord <Warr1024> For one thing, I don't think texture names are compressed, so the expansion would be really painful, plus there's a pretty tight total size limit
16:41 hecks well okay, as a stop gap we could just support what encode_png does
16:41 MTDiscord <Warr1024> yeah, ^[png: would actually be easiest given how much we can reuse for it, and it gets us all the universality AND optimization we could want.
16:41 hecks sure we should start compressing texstrings
16:41 hecks but
16:42 hecks no compression algorithm will beat base64 pixel data, don't go that far
16:42 MTDiscord <Warr1024> compressing text strings could be nice.
16:42 hecks we do need ^[png
16:42 hecks actually the amount of ^ operators in a texmod really matters
16:42 hecks each one is a new image allocation
16:42 MTDiscord <Warr1024> I think the unused texture GC might have the biggest impact, since it unfucks existing capabilities we already have in theory but can't use due to memory leakage.  Adding ^[png: would be probably a second, and then optimizing string sends maybe 3rd.
16:43 hecks and i guess with encode_png and the existing base64 helper it should be easy enough
16:43 hecks not GCing textures is a separate concern
16:43 MTDiscord <Jordach> The problem with modifiers is that there’s no real way to do it otherwise
16:43 MTDiscord <Warr1024> I looked into compressing every network packet using LZO/LZ4 at one point, and got ... okay results.  Maybe like 2% to 5% reduction.  Most of the bulk data seems to be mapblock sends which are already compressed.  However, if we start opening up more texturemod magic, it could make a difference in the long run.
16:44 hecks basically we need ^[png to help all those people who compose text or straight up individual pixels to make up for the lack of it
16:44 MTDiscord <Jordach> You know the real question is why haven’t we just simply started to save texture modifiers to disk
16:44 hecks ^[string could maybe help too
16:44 hecks ^[string:font.png;"example text"
16:45 MTDiscord <Warr1024> Oh, rendering freetype into a texture would be awesome.  Current hacks require use of bitmap fonts which really screw over i18n.  Since texturemods are computed client-side too, we could do the translations in a pass before the text rendering :-D
16:45 hecks where the font path is a mono ascii font or perhaps
16:45 hecks ^[string:(path);(string);(kerningtable)
16:46 MTDiscord <Jordach> Wouldn’t it be easier to implement vector graphics
16:46 hecks though embedding a kerning table in the texstring is still hard
16:46 MTDiscord <Jordach> Bring your own path
16:46 hecks no support for server sent fonts yet...
16:47 hecks making a texmod result depend on client settings = epic fail
16:47 hecks a bitmap font is basically easier to understand and implement
16:47 hecks and certainly faster to evaluate
16:47 hecks this is also an important concern with texmods because complicated texmods cauase pauses and stutter
16:48 hecks it would really not be hard to patch ^[string with ttf support if we can ever send those
16:49 MTDiscord <Warr1024> I wouldn't bother implementing [string if it's just going to be a shortcut for things that people can already do with a library function.
16:49 hecks no, look
16:50 hecks the amount of ^ operators in a texstring matters
16:50 hecks signs are causing gigantic lag
16:50 MTDiscord <Warr1024> Freetype would be justification for it.  If we just support a bitmap font, I'd tell people to just use [combine and move onto something else that they can't work around for now.
16:50 hecks ^[string should exist because ^[combine is slow
16:50 hecks ^[combine makes the texmod like 30x as long and take possibly seconds to render
16:51 MTDiscord <Warr1024> We should fix the things that are most broken first.  [png is more broken than [combine.
16:51 hecks sure, you can always render text to ^[png on your end and that's pretty robust
16:51 MTDiscord <Warr1024> and frankly lack of GC is more broken than any of these because any [png or [combine or [string that we implement is going to make lack-of-GC problems we already have worse
16:52 hecks also, something flew over my head
16:52 hecks client side ^[string translations? dude, that'll explode
16:52 MTDiscord <Warr1024> Actually [png serves the string needs for large servers with relatively competent admins, it's only really needed for SP games and such...
16:52 MTDiscord <Warr1024> texturemods are generally rendered client-side, so translations are basically a freebie
16:52 hecks you don't understand
16:52 hecks many languages have homonym words
16:53 MTDiscord <Warr1024> that would probably be because you're not explaining it to me
16:53 MTDiscord <Warr1024> yes, languages are complicated
16:53 hecks not to mention that universal translation like that is generally a sisyphean task if not straight up lunacy
16:54 hecks there's like... grammar and stuff
16:54 MTDiscord <Warr1024> You DO know that translation is a thing in minetest already, don't you?
16:54 hecks yes i know
16:54 MTDiscord <Warr1024> It exists only client-side and only works for things available as text when they're processed on the client side
16:54 hecks and i think it's a quixotic effort
16:54 MTDiscord <Warr1024> if we sent texture modifiers as [string: then that would qualify them
16:54 hecks and then you basically encourage people who don't speak a server's language to play said server
16:54 hecks sure it would just be one of the many ways the translation system can blow things up
16:55 hecks minetest can be too ambitious sometimes...
16:55 MTDiscord <Warr1024> Sure, you have negative opinions about a lot of things.  That doesn't mean that we shouldn't support them.
16:55 hecks =]
16:56 hecks no_translate flag in ^[string ok?
16:56 MTDiscord <Warr1024> No, "no translate" is implied
16:56 hecks last arg, optional
16:56 MTDiscord <Warr1024> you have to actually explicitly add escaping things to strings to tell the translator they're translatable at all
16:56 hecks oh that's even dumber actually
16:56 MTDiscord <Warr1024> all I'd do is pass the string through the existing translation system for mod content that already exists, and it'd pick those up
16:56 hecks but at least it doesn't invade everything and explode so that's good
16:56 MTDiscord <Warr1024> yes, arguably the way translations are done in MT mods is pretty shitty
16:57 hecks it's like
16:57 MTDiscord <Warr1024> but it could have been worse :-)
16:57 hecks basically the only right way to make languages work in your game is to do it yourself server side and know said languages yourself so that you can place your %s correctly in every case in your stringer code
16:58 MTDiscord <Warr1024> Ironically the engine supports translations that have an ID/context, an original (English) string, and then translated strings.  The mod content only maps original->translated, so they're making the assumption that a string of characters in English only has one way to translate into another langauge, which is not true when the string may be used in multiple different contexts.
16:59 MTDiscord <Warr1024> But it's also possible to make games that have very little text, making the translation tools we have good enough to pass.
16:59 hecks translating "Red Wool" and "Mese Ore" to french is not the same as translating a template like "%s %s %s%s!" which can produce anything depending on the situation
16:59 hecks so it only works for really simple content =]
16:59 MTDiscord <Warr1024> It seems like MOST players can at least muddle through in English, but it's nice to allow those who can to do some translation work to help support those who can't.  The idea of supporting users who don't speak the language of my server doesn't bother me since they generally play on their own servers anyway.
17:00 hecks sort of but that's only good in singleplayer
17:00 hecks and actually a liability in multi
17:01 MTDiscord <Warr1024> The way I support things like Red Wool is by doing the painful thing, i.e. baking all the concatenation in on the source language strings, then passing the whole damn thing into translation.  That means you don't just have to translate Wool once, but once for each color, which sucks, but at least allows translation into languages that don't e.g. retain the same word order to work.
17:02 MTDiscord <Warr1024> The rules on my server require that you be able to handle English well enough to read and understand the rules to even play.  Beyond that, I don't really care what your UI language is.  People running their own servers can have their own language rules.
17:02 hecks yup, oh well
17:02 hecks as long as translations are opt-in then i don't mind
17:03 MTDiscord <Warr1024> Yeah, anything that adds complexity like that should be opt-in.
17:03 hecks anyway [png
17:03 hecks we can do it today honestly
17:03 hecks right now, this is trivial
17:04 hecks we have a server side encoder api, and a base64 helper
17:04 hecks decoding it client side is just reading the string, decoding, feeding it to the loader
17:04 MTDiscord <Warr1024> As I understand it you're working on a "game as a service" where you run the servers and such.  I'm working on a redistributable game where people can play SP, run their own servers, whatever.  I think we may have different priorities, the union of us representing the community as a whole better than either individually, and the engine should ideally try to support both.
17:04 MTDiscord <Warr1024> I think [png would be useful for a wide variety of needs
17:05 MTDiscord <Warr1024> and texture GC would be awesome for everyone too :-)
17:05 MTDiscord <Warr1024> I imagine texture GC must be a bit more complex though because otherwise surely someone would have done it by now.
17:06 MTDiscord <Warr1024> Probably because MT (1) doesn't distinguish between derived textures that it could recreate vs. raw ones it would need to reload from disk, and (2) doesn't keep track of how many things are using the texture.  We might have to effectively split computed textures out into like an MRU kind of space and then be prepared to dynamically recreate them if needed again...
17:07 hecks lack of GC is basically a mildly annoying bug where the clients have to relog every now and then
17:07 MTDiscord <Warr1024> Well, the "every now and then" varies widely.
17:07 hecks whereas the lack of something like [png is more serious in that it causes heavy lag and wastes bandwidth
17:08 hecks i don't think i ever had to relog due to a lack of vram even on absolutely ridiculous mall servers
17:08 MTDiscord <Warr1024> I was running out of memory every couple of minutes with my skyboxes until I implemented some optimizations, but at least some of those I would like to not need.
17:08 hecks but let me run the numbers
17:08 hecks a unique clothinglayer set in mibi is 512K
17:09 MTDiscord <Warr1024> Your "sky layer API" though might be a better approach for me than texture mods in that specific case, but I do feel that GC in general might save us from a larger class of things we've become blind to the pain from.
17:09 hecks okay, you could actually run out relatively quick
17:09 hecks all it takes is for someone to change their armor a lot
17:09 hecks s
17:09 hecks sky layers were also actually conceived as a way to avoid texstring monkeying on skyboxes
17:09 MTDiscord <Warr1024> I have a star in my sky that always points in the direction of spawn, and indicates distance ... that means I'm rebuilding a 256x256 texture each time the player's X/Z pos changes enough to change the pixel location of the star on the sky.
17:10 hecks because not only the vram waste is gigantic, the time it takes to render 6 cube faces at a reasonable speed is noticeable
17:10 MTDiscord <Warr1024> Hilariously I was bleeding out memory within 30 seconds before I discovered that [combine: positions are rounded to integers in rendering but having the decimals in the texture strings still causes a cache miss :-D
17:10 hecks i re-render the sky depending on time of day, tinting and fading stars in and out
17:11 hecks the resolution is basically barely good enough
17:11 hecks and the vram waste is awful, this doesn't scale at all
17:11 MTDiscord <Warr1024> Yeah, I'd also really like to make my skybox more dynamic, i.e. have more moving stars and multiple layers and stuff.  No idea whether texmods w/ GC or a new sky layer API is the best way to go.
17:11 MTDiscord <Warr1024> The sky layer thing would help great with the skybox but it'd be very specific to this one problem
17:12 hecks texmods are absolutely not a good way to do skyboxes even with GC and embedded images
17:12 hecks the sky layer api will happen (after the renderer cleanup)
17:12 MTDiscord <Warr1024> texturemods might still be a bit clunky but you could use them with all sorts of things, like character skins showing dynamic damage, unique mob variations, etc.
17:12 hecks texmods exist for material variation
17:12 MTDiscord <Warr1024> In theory there's no reason we can't do both ... but we still have to pick which to do first then.
17:13 hecks if you could look into texmod GC that would be helpful
17:13 MTDiscord <Warr1024> Haha, at this point it's kind of silly to say what "purpose" texture mods are supposed to have because they're now used for a ton of stuff and there's no putting the genie back in the bottle on that one...
17:13 MTDiscord <Warr1024> I'm not too familiar with the rendering side of the engine but I can put it on my todo list
17:14 MTDiscord <Warr1024> I'll let you know if I reach the point where it looks like I might be able to make it work before you do, if you let me know the same :-)
17:24 hecks hm?
17:25 hecks well you can't stop idiots from abusing texmods, what you can do is make the abuse unnecessary by providing healthy alternatives
17:32 MTDiscord <Kimapr> hhaha, i just thinked of a pretty brutal punishment for nasty players
17:33 MTDiscord <Kimapr> 1. teleport them to a distant place
17:33 MTDiscord <Kimapr> 2. keep making huge textures with texture mods around them
17:33 MTDiscord <Warr1024> Might be better for #general or #modding on the Discord side, not the engine dev IRC channel...
17:34 MTDiscord <Kimapr> well, it's sorta related to the discussion here
17:34 MTDiscord <Kimapr> but yeah
17:35 MTDiscord <Warr1024> If you're talking about crashing their client by abusing texture mods, yeah, I think there might even be troll mods out there that already do that.  You can present particles to individual players so you don't even need to teleport.  You can just immediately start filling up their RAM.
17:35 MTDiscord <Kimapr> i think their whole OS might lag to death
17:35 MTDiscord <Warr1024> I don't think we intend to specifically mitigate that though.  If a server operator wants to play nasty like that then they should arguably be shunned for not dealing with their players in an honest manner... or at least players likely to receive that treatment should beware.
17:36 MTDiscord <Warr1024> Yeah, it's possible for the whole OS to lag out.  That's sort of not really MT's responsibility though, or at least not as clearly MT's responsibility as some of the other issues we're pushing...
17:56 MTDiscord <Jordach> My machines contain more than 4GBs of video memory and that’s take a while to fill
17:56 MTDiscord <Jordach> It’s not really doable for certain people
18:04 v-rob joined #minetest-dev
18:26 sfan5 <hecks> the fact that the media is propagated to all clients makes it barely useful <- on my TODO list
18:27 hecks you won't oppose [png though right?
18:27 hecks cause i'm writing it right now
18:29 sfan5 well...
18:29 celeron55 i think [png sounds fun
18:29 sfan5 I think its' usecases are better solved by being able to get media to specific player(s) at runtime
18:29 celeron55 whether fun is what we're here for is debatable
18:29 celeron55 but [png is definitely fun
18:30 hecks ^[png is for truly disposable things and crazy experiments like skybox farmap
18:30 MTDiscord <Warr1024> Ultimately [png is a nice rejection of our habitual problem of saying that a solution is not good enough but then not making the "correct" solution either.
18:30 sfan5 but without texture GC nothing is disposable
18:30 hecks i know, that's next to solve
18:31 hecks it's basically a loophole for rendering things specific to one client at one time
18:31 MTDiscord <Warr1024> [png is a nice low-hanging fruit.
18:31 celeron55 just go ahead and document it as "not recommended for anything but proof of concept implementations of future features"
18:31 hecks there are uses for it even if we were to do "correct" dynamic assets
18:31 sfan5 dynamic assets could be GC'd when unused too, couldn't they?
18:32 hecks it's legit though, there's nothing to "not recommend"
18:32 hecks it's fine to have it alongside
18:32 hecks another case; remember that painting mod?
18:32 sfan5 except encoding images as strings...
18:32 celeron55 well, websites do it all the time these days
18:32 celeron55 it can't be that bad
18:32 hecks if this string would be the only string in existence referring to said image
18:32 sfan5 heh
18:32 hecks then what's the difference?
18:32 hecks it's less lines to send it in-band
18:33 hecks again, this is for disposable or unique images
18:33 celeron55 just do it
18:33 hecks sure =]
18:33 sfan5 the differece to me is that you don't have a blob of data shoved around in the tile image code where it doesn't belong
18:33 hecks it already works i just need to make some cool devtest nodes
18:34 hecks oh come on
18:34 celeron55 how large is a 16x16 png generally?
18:34 v-rob Presumably, less than 16*16*4 bytes
18:35 celeron55 probably like a line of text
18:35 celeron55 assuming hand drawn
18:35 celeron55 or generated in a hand drawn style
18:35 hecks 64x64 mandelbrot was like a couple lines in my terminal
18:35 sfan5 it's not that we can't have [png but I think it should be discouraged
18:35 hecks ......
18:35 celeron55 let's put that this way: we need to have a way to benchmark if it becomes a performance problem
18:35 sfan5 also I guarantee modders will use this to set 1MB images in entity props and then wonder when the network stalls every time those are updated
18:36 celeron55 do we have a way of doing that in the long term
18:36 sfan5 s/when/why/
18:36 Krock and why clients run out of RAM
18:36 hecks they already do this
18:36 hecks by abusing ^[combine
18:36 v-rob They do it with [combine, which is even worse
18:36 hecks except the result is 10x bigger
18:36 Krock current modifiers already can cause similar side-effects
18:36 sfan5 (the same problem applies to dynamic media right now, but it wouldn't to the future implementation)
18:36 v-rob And [combine caches _every single_ intermediate result
18:36 hecks join any mall server and your client will be frozen for SECONDS blitting those colored text signs
18:37 v-rob See, I have an idea for text on signs
18:37 hecks ^[string?
18:37 sfan5 speaking of text https://github.com/minetest/minetest/pull/9999
18:37 v-rob Hang on, let me type it out. It doesn't involve texture modifiers
18:37 v-rob Or that
18:37 hecks anyway i see nothing... dirty about ^[png, it has uses
18:38 hecks not involving texture modifiers worries me because it's probably very complicated and depends on client installed fonts =]
18:38 v-rob Oh hush, you always worry about that
18:38 hecks well
18:38 sfan5 well "just display this text I don't care how it looks" would have been good enough so far
18:38 v-rob :P
18:38 hecks did you know that a TTF is allowed to give you any glyph size...
18:38 sfan5 if you want pixel perfect text bake it into the textures
18:39 sfan5 (yes yes it's an annoying "solution")
18:39 hecks scroll up in the logs, i suggested a ^[string too which could later be extended with ttf support
18:39 v-rob Remember how I talked earlier about separate HUD and GUI environments? I think that these environments should be registerable from the server, but they don't necessarily render to the screen. You could render them to a render texture, and then put that render texture on a node or entity. So, you can have text, _and_ it supports the entire rich text functionality that the GUI will have.
18:40 v-rob I.e. GUIs on nodes
18:40 hecks that sounds very heavy
18:40 v-rob Well, you would obviously cache the render textures, not doing it every frame
18:40 hecks most people just want to render a signpost...
18:41 hecks it's heavy API wise too, lots of lines of code to set up a whole gui just to render a thing
18:41 hecks simplicity is important too
18:41 hecks texmods are the king of simplicity i think
18:41 v-rob Well, maybe so, but I think that my idea does have quite a bit of merit
18:41 v-rob Maybe not as the only solution
18:42 hecks can't get any easier than ^[string:font_name.ttf:16:hello\nworld!
18:42 hecks proper escaping applied of course
18:42 v-rob ...Until people want changing colors and different fonts and then images and...
18:42 hecks ^[multiply
18:43 hecks and you know, other stuff
18:43 v-rob Color changing in the middle of the text
18:43 sfan5 we have colored text already
18:43 sfan5 no reason that can't be applied to a modifier
18:43 hecks oh right, just use color escapes lol
18:43 v-rob I hate EnrichedString
18:43 hecks :DDDD
18:43 hecks you really hate simple solutions
18:43 hecks so anyway i see no reason why you couldn't have both
18:44 v-rob Yeah, I have no objection to the texmod
18:44 hecks rather than heckling about texmod solutions being haram and deprecated at birth
18:44 hecks they're fine, they have their place
18:44 hecks i like that system a lot =]
18:44 hecks it's absurdly powerful, we have our own substance clone
18:44 hecks i just wish it was zlibbed on transfer, that's about it
18:45 hecks or even better, brotli'd
18:45 hecks with a custom dictionary
18:45 v-rob I don't like EnrichedString because it conflicts with better solutions. I guess it's OK for a lot of things, but it doesn't belong in the GUI, where solutions like hypertext are much better.
18:46 sfan5 you want hypertext to render colored stuff in chat?
18:46 * celeron55 the proud designer of texmods (for questionable purposes)
18:46 hecks questionable or not it was a jackpot
18:46 hecks anyway hypertext has a problem like sfan pointed out, you just have a lot more shit to validate and sanitize and strip
18:47 v-rob No, a lightweight rich text element for chat. I just said hypertext because we have no lightweight rich text element again
18:47 hecks more cpu cost overall for all text if everything was hypertext
18:47 v-rob And it won't use HTML
18:47 hecks well a subset then i guess
18:47 hecks it could actually use html tags
18:47 celeron55 "here's the texture name" "or actually it's a miniaturized text based photoshop"
18:48 hecks c55: it's a procedural image generation expression tree, like Substance
18:48 hecks it's the reason my texture folder is like
18:48 hecks 512K
18:48 sfan5 v-rob: but isn't EnrichedString a lightweight rich text element?
18:49 v-rob yeah, but it shouldn't be implemented where it is. It belongs in the GUI, not as an intermediate between the GUI and the font renderer. That's the reason vertlabels can't show color, since they ignore the existence of color escape strings.
18:50 hecks looks like you guys are having fun
18:51 sfan5 <hecks> not to mention that universal translation like that is generally a sisyphean task if not straight up lunacy
18:51 sfan5 ^ we don't do this btw
18:51 sfan5 even just attempting it would be stupid
18:52 hecks yeah i guess i didn't exactly get what the documentation was saying
18:52 hecks but it sounded just ambitious enough for minetest =]
18:52 olliy joined #minetest-dev
18:52 sfan5 gettext except instead of running it on the server you add an escape code to tell the client to run gettext on a fragment of the string
18:53 sfan5 ...well I don't know if that is an understandable explanation
18:54 sfan5 it's actually quite neat so I dunno what @Warr1024's issue with it is
18:54 MTDiscord <Warr1024> what my issue with what is?
18:55 hecks uhhhh forget this whole thing
18:55 sfan5 client-side translations
18:55 MTDiscord <Warr1024> You mean the trimmed down source/target translation thing instead of the context/source/target thing that gettext does?
18:55 MTDiscord <Warr1024> lack of context, basically
18:56 sfan5 you can define contexts freely
18:56 MTDiscord <Warr1024> Text strings in client-side translations are identified by source
18:56 MTDiscord <Warr1024> there's no way to distinguish two equal source strings with different contexts
18:56 MTDiscord <Warr1024> For the record I'd be surprised if we could actually fix this though
18:57 sfan5 ???
18:57 sfan5 you know you can freely set the textdomain in Lua right?
18:57 MTDiscord <Warr1024> It may be the kind of thing we just have to live with.
18:57 MTDiscord <Warr1024> Are you suggesting that I bake context into textdomain?
18:57 MTDiscord <Warr1024> that sounds messy.  It seemed implied that textdomain should be like a mod or a package
18:57 sfan5 yea
18:57 MTDiscord <Warr1024> not like this menu or that menu or whatever...
18:58 MTDiscord <Warr1024> I mean I guess in a pinch I could do that
18:58 MTDiscord <Warr1024> I'm sort of torn about how baked vs. dynamic to make lots of things.  Right now my translations are highly baked.  If they get too long for translators to manage then I could try switching to more dynamic, and then this could become an issue, but for now, it's probably good enough.
18:58 sfan5 I've never seen that context thing you mentioned with gettext so maybe that's why I'm suggesting this
18:59 hecks i'm just trying to imagine the complexity of using this to translate all sorts of templated roguelike messages and my head melts
19:00 hecks best if i stick to english...
19:01 celeron55 those would require a template-aware translation system that can reorder the arguments
19:01 MTDiscord <Warr1024> I dunno, it's definitely there in Weblate.  Maybe that's only for other formats but not gettext?
19:01 sfan5 (we have that)
19:01 MTDiscord <Warr1024> My own use-case is pretty simple; I have very little templating.  It's mostly the built-in guide, names of items, and some achievements/hints.
19:02 sfan5 as far as I know Weblate showing you where the translation appears is merely to be helpful, translation strings are not differentiated by context
19:02 hecks https://a.uguu.se/EUHQBkZH4wrh_mandels.png
19:02 hecks "Generated In-Band Dest Blit Mandelbrot PNG Test Node"
19:03 v-rob GIBDBMPTN?
19:03 hecks good thing we do not use / or + anywhere in texmod syntax
19:03 hecks base64 can be embedded without any tricks
19:04 sfan5 there is working escaping too, if you wanted to use ^ for any reason
19:04 sfan5 or ( or )
19:05 hecks sure, it's just convenient that you don't have to escape anything
19:06 sfan5 yea was just saying
19:06 hecks it's literally "[png"..minetest.encode_base64(minetest.encode_png(...))
19:08 MTDiscord <josiah_wi> sfan5, I fixed the issue the CI had found on the Irrlicht PR to allow importing the target without installing.
19:22 pgimeno [OT] v-rob: strcpy_s is not MS proprietary, unless you mean they force-fed it into the C11 standards committee. That said, it sounds stupid to call strcpy 'deprecated'.
19:23 v-rob Huh, interesting. All the same, the warnings are really annoying
19:26 sfan5 if it's not ms-properietary why does glibc or musl not implement it?
19:26 hecks #11498 pomf
19:26 ShadowBot https://github.com/minetest/minetest/issues/11498 -- Add embedded PNG texture modifier by hecktest
19:31 celeron55 you should make a separate commit of the extension whitelist edit
19:33 sfan5 could also push that edit directly to master
19:34 pgimeno "An implementation that defines __STDC_LIB_EXT1__ shall conform to the specifications in this annex." (the annex about bounds-checking interfaces such as strcpy_s et al)
19:34 pgimeno you can be standard and not implement those
19:35 pgimeno http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1548.pdf page 597
19:36 sfan5 I see
19:46 celeron55 it's the standard way of being annoying
19:48 hecks pushing the extensions thing to master directly if nobody minds
19:49 celeron55 hmm, actually might there be some concern regards to it
19:49 celeron55 probably not
19:50 celeron55 there's the cross-version network compatibility aspect where an older client could support something using the old formats that a newer client would support in some new way but i don't think there's any
19:53 hecks we no longer have loaders for these extensions
19:53 hecks their presence in tile.cpp is a bug
19:53 hecks we never documented those in the first place
19:54 hecks this code is entirely client side and just decides what counts as an image in a texstring
19:54 celeron55 ah it's client side
19:54 celeron55 then whatever
19:54 hecks and their presence in the code could confuse people
19:54 sfan5 there's a server side list of them too
19:54 hecks do tell me the server side list and i'll take a look at it separately
19:55 hecks pushing
19:55 sfan5 minetest/src/server.cpp:".png", ".jpg", ".bmp", ".tga",
19:57 hecks removed the change from PR, please review
19:58 sfan5 ah btw the thing I said last time, you'd do that by configuring your local git with "hecks <42101236+hecktest@users.noreply.github.com>" as author
20:00 hecks done
20:05 Kimapr joined #minetest-dev
20:17 Kimapr joined #minetest-dev
20:23 Kimapr7 joined #minetest-dev
20:39 hecks Pushing server.cpp unsupported media cleanup
21:27 LW joined #minetest-dev
21:27 v-rob joined #minetest-dev
21:55 pgimeno @hecks for the sake of clarity, since you seem to have understood me wrongly, I said I routinely saved indexed TGAs but I didn't mean with Minetest. It was long ago with VGA in DOS. I just wanted to emphasize that indexed TGAs do exist, not that I was using them with Minetest. I would have liked TGA to have stayed because it's simple and powerful, that's all.
21:55 hecks not you, someone else had issues with it
21:55 pgimeno ok
21:55 hecks so i wrote him the png thing
21:56 hecks you can now use an array of colorspec to make PNGs, can't get simpler than that
22:27 Extex joined #minetest-dev
23:06 Extex joined #minetest-dev
23:25 hecks https://a.uguu.se/2hc7CRHvJokP_sheets.png I can't imagine how, but did I break these?
23:40 hecks hm, no
23:47 AliasAlreadyTake joined #minetest-dev
23:47 hecks oh okay, it's 11206

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