00:05 < bridge> https://discord.gg/metropole 00:05 < bridge> 00:05 < bridge> 00:05 < bridge> Ajudem eu preciso de 20 pessoas 00:06 < bridge> https://discord.gg/yYSSkQYj 00:06 < bridge> 00:06 < bridge> 00:06 < bridge> Me ajudem preciso de 20 pessoas 00:26 < bridge> taking another look at it, it appears that $HOME expands to `/root/` for some reason, and not to `/builds/ddnet-rs/twmap-py/` 00:46 < bridge> that part runs now 🔥 01:09 < bridge> ah okay 01:09 < bridge> okay but imagine Hit the Targets in teeworlds 01:10 < bridge> race timer finishes when u hit last target 01:27 < bridge> Yes what rossbit said. it’s an alias for source to load the environment so that rust is in the PATH. I assume I have it from some rustup docs. If the file is not there maybe you don’t need it. Unless you fixed it already I can have a look tomorrow 01:30 < bridge> link to the mingw64 library paths 01:30 < bridge> probably a config setting in clion 01:31 < bridge> also be warned those using mingw without msys2 are either using zero libraries or fighting a war they cannot hope to win 01:51 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1382507589597663312/image.png?ex=684b6807&is=684a1687&hm=1f7e3efe4c19bb1d486edcc85f54c4ac9f3c69f86dee46600cd5a0da5728a40c& 01:51 < bridge> 💀 01:58 < bridge> nah im a senior vibe coder 01:59 < bridge> hoping that's the government trapping the vibe coders to an office so they can be either be educated about why vibe coding is evil or be slaughtered on premises 02:01 < bridge> you either vibe code yourself to death or live long enough to become the person who hsa to deal with thme 02:45 < bridge> twmap-py *should* now support macos (chillerdragon, @avolicious) 03:09 < bridge> @art0007i @essigautomat the windows crash is hopefully also fixed with the new version 04:15 < bridge> can some one send me the server link of kog to me? 04:45 < bridge> how do i add stuff to generated protocol.h ? 04:45 < bridge> ```cpp 04:45 < bridge> enum 04:45 < bridge> { 04:45 < bridge> LASERTYPE_RIFLE, 04:45 < bridge> LASERTYPE_SHOTGUN, 04:45 < bridge> LASERTYPE_DOOR, 04:45 < bridge> LASERTYPE_FREEZE, 04:45 < bridge> LASERTYPE_DRAGGER, 04:45 < bridge> LASERTYPE_GUN, 04:45 < bridge> LASERTYPE_PLASMA, 04:45 < bridge> NUM_LASERTYPES 04:45 < bridge> }; 04:45 < bridge> ``` 04:45 < bridge> 04:45 < bridge> for example i want to define 04:45 < bridge> ```cpp 04:45 < bridge> enum 04:45 < bridge> { 04:45 < bridge> TARGET_SWTICH_ON, 04:45 < bridge> TARGET_SWITCH_OFF, 04:45 < bridge> TARGET_SWITCH_ALTERNATE 04:45 < bridge> } 04:45 < bridge> ``` 04:46 < bridge> is defining a list in datasrc/network.py enough 05:41 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1382565440814845952/targetswitch_2025-06-11_20-40-42.mp4?ex=684b9de7&is=684a4c67&hm=427de311f06c2f18ee2e508e7ba6dca2e7c0ecf6c5e8b9733d7e36b2533b8bfe& 05:42 < bridge> sry gonna use this channel as a devlog 05:42 < bridge> todo: lasers and projectiles, custom design, sound+particles, prediction 06:34 < bridge> That's cool! 06:34 < bridge> I can see Jimmy do a puzzle map with this if it works with projectiles :owo: 06:45 < bridge> which crash? 06:52 < bridge> @jupeyy_keks @robyt3 I know you're asleep but #8432 is ready to review again after cleaning it up. 06:52 < bridge> https://github.com/ddnet/ddnet/pull/8432 08:12 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1382603414055293009/targetswitch_2025-06-11_23-11-09.mp4?ex=684bc145&is=684a6fc5&hm=8f954600541d06d1100a36b751976c692026df6f295ca85e9baaee3ff637f667& 08:13 < bridge> might also add normal target inside gamelayer, has the cool addition of being able to intercept weapons midair without any jank wep tele (and can explode nades midair conditionally) 08:14 < bridge> if anyone has ideas to make the feature better lmk i think some cool maps can come out of this 08:17 < bridge> I guess you're already working on this, but I'd work on the visuals for the switches 08:18 < bridge> ye i think i will make it a target / dartboard somehow 08:18 < bridge> uh, you could and make the outline/inner color match the dartboard 😮 08:19 < bridge> are switches colored now? 08:19 < bridge> i was thinking the inner color red or green based on whether it activates or not (and both red and green for the alternating type) 08:19 < bridge> normal on/off switches have no animation at all (unfortunately) 08:20 < bridge> ye it would be nice to have more visuals for switches tbh 08:20 < bridge> i cant think of anything that checks all the boxes though 08:24 < bridge> maybe [this]() but in door colors? or something like [this]() 08:24 < bridge> 08:24 < bridge> You might run into the issue, that the lines of the dart board are to thin or the dart board is too small for what you want to show 08:24 < bridge> maybe ![this]() but in door colors? or something like ![this]() 08:24 < bridge> 08:24 < bridge> You might run into the issue, that the lines of the dart board are to thin or the dart board is too small for what you want to show 08:24 < bridge> maybe ![this](https://media.istockphoto.com/id/163862451/de/vektor/schalter-auf-aus-stellen.jpg?s=612x612&w=0&k=20&c=z3YNMq9oN0NvukjeTzd4Xs7d0YLk_EGGWzZM4yka9e0=) but in door colors? or something like ![this](https://media.gettyimages.com/id/472319109/de/vektor/schalter.jpg?s=612x612&w=gi&k=20&c=kHo7E2hvzVjHZPeXT7hdPViRwzbWM5FxLmshmHLLLWc=) 08:24 < bridge> 08:24 < bridge> You might run into the issue, that the lines of the dart board are to thin or the dart board is too small for what you want to show 08:24 < bridge> maybe ![this](https://media.istockphoto.com/id/163862451/de/vektor/schalter-auf-aus-stellen.jpg?s=612x612&w=0&k=20&c=z3YNMq9oN0NvukjeTzd4Xs7d0YLk_EGGWzZM4yka9e0=) but in door colors? or something like ![this](https://media.gettyimages.com/id/472319109/de/vektor/schalter.jpg?s=612x612&w=gi&k=20&c=kHo7E2hvzVjHZPeXT7hdPViRwzbWM5FxLmshmHLLLWc=) 08:24 < bridge> 08:24 < bridge> You might run into the issue, that the lines of the dart board are to thin or the dart board is too small for what you want to show 08:26 < bridge> from a game aspect, switching from `X` to `O` could be done in a single tile, maybe use a projectile as indicator for the weapon? :justatest: 08:30 < bridge> hm yeah [ I ] and [ O ] could work 09:53 < ws-client> oh no my forum signature broke ._. can some data recoverist obtain this image for me pls? xd https://cdn.discordapp.com/attachments/508020478150180893/510210732256919563/ddnet_news.png 10:14 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1382634143195856897/ddnet_news.png?ex=684bdde3&is=684a8c63&hm=2f80c285cae1f2e8d4a076794b79cd305d560072c1bd1a262f6afb43b59736ab& 10:14 < bridge> *confused* 10:56 < bridge> Thanks! @jxsl13 nice so the image was not deleted or too old. Just missing the discord token. Epic win for my signature 10:59 < bridge> wow xd 11:29 < bridge> the windows twmap-py crash on loading a map 11:31 < bridge> @patiga hi, i think the twmap checker could add a new check. 11:31 < bridge> 11:31 < bridge> There are quite a few maps with duplicated assets. 11:31 < bridge> 11:31 < bridge> E.g. `Lockdown` has `desert_main` twice 11:31 < bridge> 11:31 < bridge> There are more maps with this problem 11:33 < bridge> hm, should that be in the optimizer (e.g. could be done in --remove-unused files I guess), or in the checker that throws "map errors" 11:34 < bridge> I'd say it's an error 11:34 < bridge> They are not unused in Lockdown even 11:39 < bridge> 🥳 11:39 < bridge> now I can load the even bigger mona lisa and render it 11:39 < bridge> now I can load the even bigger mona lisa and render it (I could have done that before with an older version anyway) 12:17 < bridge> @patiga Also we still have maps with invalid utf8, e.g. (but not limited to) 12:17 < bridge> Regen 12:17 < bridge> Regen 3 12:17 < bridge> Blue Fox 12:17 < bridge> 12:17 < bridge> The editor even shows an error for them 12:17 < bridge> 12:17 < bridge> Dunno if your tool is also for correctness of old maps 12:17 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1382665164897390592/image.png?ex=684bfac7&is=684aa947&hm=45bfd972878493ede9356f23d860fc4b06887c4e043820b440b93543525b7219& 12:18 < bridge> twmap logs whenever it encounters invalid utf8, but there is simply too much of it to throw an error 12:19 < bridge> thats why it uses lossy conversions, and then potentially cuts off the end of the string if it gets too long 12:20 < bridge> @jupeyy_keks what would you like twmap to do there? 12:21 < bridge> there is a fun envelope which has a long non-utf8 name that got copied into loots of maps 12:22 < bridge> Hard to say, lossy generally sounds ok. I just wonder if this could lead to duplicated names again (Even tho this is probably a edge case). 12:22 < bridge> 12:22 < bridge> Generally it would simply be nice if we fix those map 12:22 < bridge> Instead of letting them stay invalid 12:22 < bridge> For new maps it should fail 12:22 < bridge> Well then it should probs fail for all xD 12:23 < bridge> Since we should fix the broken once 12:23 < bridge> https://discord.com/channels/252358080522747904/746534464984973323/806522437041782804 12:23 < bridge> found it :D 12:23 < bridge> Lool 12:23 < bridge> I think its just too many maps 12:24 < bridge> Too many for what? 12:24 < bridge> 12:24 < bridge> For converting them to lossy? 12:24 < bridge> yes, we don't want to resave old maps for smaller things, as everyone needs to redownload them, then 12:25 < bridge> I doubt these old maps are played that often 12:26 < bridge> you could try to count the amount of maps, I would bet its >300, although this is ofc just a rough estimate 12:27 < bridge> Tja. I just think official maps should not contain bugs, kinda not high quality standards xD 12:27 < bridge> e.g. run twmap-check for each with -vvv and +1 if it prints a line with "invalid utf-8" 12:29 < bridge> imo its alright 12:30 < bridge> I mean these names are artifacts from a time where the strings simply weren't encoded as utf-8 12:30 < bridge> only later was that change made 12:31 < bridge> But if you load one of these maps in the editor you get an error.. I don't think that is alright 12:31 < bridge> And silencing that error is not alright either 12:32 < bridge> then there could a be the equivalent of logging in the editor somehow 12:32 < bridge> a popup saying "this map had invalid content and was modified on load" 12:32 < bridge> I agree ddnet shouldn't have maps not loadable in the editor 12:33 < bridge> kinda funny to me that ddnet is now more strict than twmap in some ways ^^ 12:36 < bridge> and then we have older maps, who actively abuse bugs :pepeW: 12:36 < bridge> Map file format bugs? 12:36 < bridge> more like entity bugs 12:36 < bridge> old speedup bug for example 12:37 < bridge> So gameplay bugs? 12:37 < bridge> gameplay bugs yes. In the case of force 0 speedtiles maybe both 12:37 < bridge> Yeah, but that can at least be fun xdd 12:38 < bridge> I mean this is fun too, but also a bit sad 12:38 < bridge> yeah hugging a wall until you suddenly fly to outer space sounds like a fun intuitive mechanic 12:39 < bridge> Yeah but I was not about physics related bugs here 12:39 < bridge> These map format bugs are actually fixable 12:40 < bridge> are you fine with the rest of my rendering PR? 12:40 < bridge> I didn't look into it yet, maybe weekend 12:44 < bridge> @jupeyy_keks because of how common it is, I believe that at least the ddnet editor should allow those maps to be opened. ddnet maps aren't the only maps out there, and rejecting such 'bugs' on load will make most of heinrich's map archive unusable 12:44 < bridge> not 100% sure about most, but at the very least a huge chunk of it 12:44 < bridge> They are not rejected, it's a popup already 12:44 < bridge> ah 12:45 < bridge> imo its fine as-is then 12:45 < bridge> I dunno, error popups on official maps doesn't convince me tbh xD 12:53 < bridge> @jupeyy_keks now that I am taking a look at shaders, can you explain this bit? 12:53 < bridge> ``` 12:53 < bridge> 12:53 < bridge> layout(push_constant) uniform SPosBO { 12:53 < bridge> layout(offset = 0) uniform mat4x2 gPos; 12:53 < bridge> 12:53 < bridge> layout(offset = 32) uniform vec2 gOffset; 12:53 < bridge> layout(offset = 40) uniform vec2 gScale; 12:54 < bridge> } gPosBO; 12:54 < bridge> ``` 12:54 < bridge> 12:54 < bridge> so SPosBO is some kind of Buffer in my understanding, and the lines below are how thie buffer is formated, the first 32 bit are the mat4x2, 8 bit for gOffset and 8 bit then for gScale? 12:54 < bridge> Yes 12:54 < bridge> how do you get 32 bit for mat4x2? 12:54 < bridge> `4*2*4` 12:54 < bridge> It's not bit 12:55 < bridge> bytes 12:55 < bridge> hmm yeah that would help 🤔 😆 12:55 < bridge> okay 4 bytes per int basically, in all of them 12:55 < bridge> thanks 12:56 < bridge> floats 12:56 < bridge> oh, then floats 12:59 < bridge> and why does the offset on the fragment shader not start at 0 here? 12:59 < bridge> ``` 12:59 < bridge> 12:59 < bridge> layout(push_constant) uniform SFragConstBO { 12:59 < bridge> layout(offset = 48) uniform vec4 gVertColor; 12:59 < bridge> layout(offset = 64) uniform vec4 gVertOutlineColor; 12:59 < bridge> } gFragConst; 12:59 < bridge> ``` 12:59 < bridge> 12:59 < bridge> This is from tile.frag, I guess there is some data infront of it then? 13:00 < bridge> Yes the data you mentioned above 13:00 < bridge> A push constant is for the whole shader pipeline 13:00 < bridge> That way you can access the same push constant in vert & frag if you want 13:00 < bridge> Which in this case is not wanted 13:03 < bridge> is there some data or padding in between? because the offsets don't match 13:04 < bridge> the examples I gave would match, but this are different shaders 13:06 < bridge> but this: 13:06 < bridge> tile.vert 13:06 < bridge> ``` 13:06 < bridge> layout(push_constant) uniform SPosBO { 13:06 < bridge> layout(offset = 0) uniform mat4x2 gPos; 13:06 < bridge> } gPosBO; 13:06 < bridge> ``` 13:06 < bridge> 13:06 < bridge> tile.frag 13:06 < bridge> ``` 13:06 < bridge> layout(push_constant) uniform SVertexColorBO { 13:06 < bridge> layout(offset = 64) uniform vec4 gVertColor; 13:06 < bridge> } gColorBO; 13:06 < bridge> ``` 13:07 < bridge> 13:07 < bridge> doesn't. 13:07 < bridge> 13:07 < bridge> We esabtlished above, that mat4x2 has 32 bytes and not 64 🤔 13:20 < bridge> I think one of the tile shaders has some other stuff or smth 13:22 < bridge> Also the padding does not mean we also push the padding. 13:22 < bridge> You can do two push constant calls with different offsets 13:23 < bridge> hmm okay so there is another optimization using the same data for different shaders 13:23 < bridge> thank you for your responses, this is very helpful 👍 13:23 < bridge> It's not always about optimization 13:23 < bridge> Readability in code 13:24 < bridge> If all shaders have a gPos at the same position, you can push them the same everywhere for example 13:24 < bridge> lmao twmap doesn't even log invalid utf8, because that just appears too often. it only logs if the replacement characters make the string too long so that it has to cut off the end 13:36 < bridge> @jupeyy_keks My estimate seems to be wrong. According to this script, `85/2381 maps have invalid utf-8` 13:36 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1382685105994338479/utf8-replacement.py?ex=684c0d5a&is=684abbda&hm=47bc78d1d15f87b32277a407cef9a59f5aeb8ebeab32f5def6d862b7a708c893& 13:43 < bridge> and 44 maps have another string-related bug, where stuff is zero that shouldn't be zeroed 14:07 < bridge> IMO img & sound are also more critical, since those asset potentially get exported. and having empty names is little weird 14:09 < bridge> `63/2381 maps have invalid utf-8` 14:09 < bridge> for only images and sounds 14:09 < bridge> Oh still so much, sick 14:10 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1382693571647504394/out.txt?ex=684c153c&is=684ac3bc&hm=cef2365f79c552583057245acfa139563dfeac8120aa19786f024cc378d4912a& 14:11 < bridge> lots of german umlaute 14:15 < bridge> (with map names) 14:15 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1382694684761002034/out.txt?ex=684c1646&is=684ac4c6&hm=d22b4b09056c1a4e4ae3fe52fc35633201b567623cbc4f27951cfb4bfb777651& 14:18 < bridge> Ah interesting 14:19 < bridge> https://media.discordapp.net/attachments/1294380382661116045/1382675906094432349/1.jpg?ex=684c04c8&is=684ab348&hm=7ca961baf2513979a5105652031e0543130fb7b69cc9c2c5d5f4dbd9e194f786&=&format=webp&width=648&height=864 https://media.discordapp.net/attachments/1294380382661116045/1382675906413461564/2.jpg?ex=684c04c8&is=684ab348&hm=e1411c632164a7d3aaf88b9aeceb248203596137d3b172e64b01afffef21958e&=&format=webp https://media.discordapp.net/attachments 14:20 < bridge> @Discord Mod 14:20 < bridge> Can discord just add an option to disallow sending same msg in every channel 14:20 < bridge> It's just so stupid xD 14:20 < bridge> you can add a bot that does that 14:21 < bridge> Yes please 14:21 < bridge> add ✪✪Net#6625 14:21 < bridge> Best bot confirmed 14:28 < bridge> is it the bot from ddnet rs 14:28 < bridge> if so then yes please i want mapres db 14:28 < bridge> Without optimizations from the 998.4 MiB (1.046.878.863) size of all ddnet maps, around 895.1 MiB (938.629.781) is the size of all resources. 14:28 < bridge> 14:28 < bridge> Now I'll run the same script again, but with image (png) optimizations. 14:28 < bridge> 14:28 < bridge> It's still sick that by default the image crate gives pngs that are probably not much better packed than just storing the images as plain image array and run deflate on them. 14:28 < bridge> 14:28 < bridge> I guess the conversation takes around 1.5h so cya later 14:29 < bridge> Without optimizations from the 998.4 MiB (1.046.878.863) size of all ddnet maps, around 895.1 MiB (938.629.781) is the size of all resources (assets like images & sounds). 14:29 < bridge> 14:29 < bridge> Now I'll run the same script again, but with image (png) optimizations. 14:29 < bridge> 14:29 < bridge> It's still sick that by default the image crate gives pngs that are probably not much better packed than just storing the images as plain image array and run deflate on them. 14:29 < bridge> 14:29 < bridge> I guess the conversation takes around 1.5h so cya later 14:30 < bridge> Also there is an insane amount of duplicated images with only very minor changes. 14:30 < bridge> 14:30 < bridge> So lot of potential to reduce map sizes is wasted by that 14:30 < bridge> So many similar stars xD 14:30 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1382698658868363284/image.png?ex=684c19f9&is=684ac879&hm=8b115988af702fdda90c54393e6445e0dd3117306ccf04efc705b9e32d1b33f9& 14:35 < bridge> Without optimizations from the 998.4 MiB (1.046.878.863) size of all ddnet maps, around 895.1 MiB (938.629.781) is the size of all resources (assets like images & sounds). (The compressed layers are ~100MiB) 14:35 < bridge> 14:35 < bridge> Now I'll run the same script again, but with image (png) optimizations. 14:35 < bridge> 14:35 < bridge> It's still sick that by default the image crate gives pngs that are probably not much better packed than just storing the images as plain image array and run deflate on them. 14:35 < bridge> 14:35 < bridge> I guess the conversation takes around 1.5h so cya later 14:41 < bridge> 14:42 < bridge> compound assets when 14:44 < bridge> I just recently wrote a python script to get the accurate size of them in maps, if that isn't what you are already doing 14:44 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1382702219815686318/image.png?ex=684c1d4a&is=684acbca&hm=8fd27baef306f2a2c369bdbe59a5e06a9e2a1f97836682f35d17d0c66224a594& 14:45 < bridge> We often talked here about storing images as real pngs inside the map files. 14:45 < bridge> 14:45 < bridge> And even about splitting them so maps that use the same image don't have it duplicated. 14:46 < bridge> 14:46 < bridge> But the reality at least for the second part is, most have minor changes to them. 14:46 < bridge> 14:46 < bridge> For the first part we'll see, bcs image optimizations can do a LOT. Like I expect at least 20% less in size 14:47 < bridge> having some way to do minor edits would be nice 14:47 < bridge> I would be interested in an comparison between current vs png vs plain zstd compression 14:47 < bridge> Yeah would be interesting for sure 14:47 < bridge> (to generate the plots above) 14:47 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1382702943974854806/map-size.py?ex=684c1df7&is=684acc77&hm=cc1cf57213aa49db2b45ae8567f737ec8836bbbf5cffce6fc5dcbaf70f250873& 14:47 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1382702944289558539/tw_map_v4.py?ex=684c1df7&is=684acc77&hm=667d72b97fe79af57fce3f3ff6f273e7566e98bf507813681799e48ec150ebfe& 14:48 < bridge> using a custom dictionary for compression go brr 14:48 < bridge> requires the `kaitaistruct` module 14:48 < bridge> Sure, but very hard for images 14:49 < bridge> custom dictionary is more useful for things like protocols afaik 14:49 < bridge> It's useful where patterns are similar 14:50 < bridge> I was assuming a huge amount of exactly or almost exactly duplicated images 14:51 < bridge> so you could put entire images in the dictionary :lol: 14:51 < bridge> ^^ There are indeed a lot of duplicates. 14:51 < bridge> 14:51 < bridge> Just a question on how big the dict should be 14:52 < bridge> But anyway, oxipng is really good, let's see how much it can improve the size 14:52 < bridge> when the editor dilates images, does it change the image if it was previously dilated? 14:52 < bridge> Only if both dilate algorithms differ 14:52 < bridge> ah, so it resets the transparent pixels? 14:52 < bridge> I think I missed that part in twmap 😅 14:52 < bridge> No there is a PR open for that 14:52 < bridge> There was a convo years ago by me about using optimizations for PNGs that cut the sizes down significantly 14:52 < bridge> But not merged 14:52 < bridge> ah, still makes sense 14:53 < bridge> Again, my recommendation was ignored 14:53 < bridge> until now I guess 14:53 < bridge> Mh? 14:53 < bridge> what did u recommend 14:53 < bridge> I haven't seen any PR from you about that 14:54 < bridge> I also recommend blake3 over anything else for it's insane SIMD perf. 14:54 < bridge> 14:54 < bridge> Dosn't mean we realistically change to it in ddnet any time soon 14:54 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1382704678097125507/image.png?ex=684c1f94&is=684ace14&hm=d7945c1a8d8588269994640853d72de004ea983ea75473bfb3dbe19a5ed57e85& 14:55 < bridge> old ass convo about this convo, it is similar to what I was getting at back then 14:55 < bridge> and I was an asshole back then, who knew 14:55 < bridge> btw, in 2019? damn that's long ago 14:56 < bridge> We are old 14:56 < bridge> But gold 14:56 < bridge> Even worse than today? 😱 14:56 < bridge> jkjk <3 14:56 < bridge> ok, found a better convo 14:56 < bridge> https://github.com/oxipng/oxipng 14:56 < bridge> 14:56 < bridge> > Oxipng is a multithreaded lossless PNG/APNG compression optimizer. It can be used via a command-line interface or as a library in other Rust programs. 14:57 < bridge> compressing pngs could even result in even bigger filesizes in editor xd 14:57 < bridge> because editor decompresses everything 14:57 < bridge> Yeah, but normally that's not the limitation in databases 14:57 < bridge> storing the sizes are the issue, and that's where it would be useful 14:58 < bridge> At least on maps 14:58 < bridge> On tee skins or any HUD stuff, no. 14:58 < bridge> 385.3 MiB (404.036.132) 14:58 < bridge> 14:58 < bridge> Holy shit 14:58 < bridge> That's a LOT more than I expected 14:58 < bridge> -60% size 14:58 < bridge> perhaps above 14:58 < bridge> nice 14:59 < bridge> Maybe the default image crate really just sucks at compression pngs with default settings 14:59 < bridge> So yeah if we use an optimizer, storing PNGs as PNGs in maps would probably decrease map sizes quite a bit 15:00 < bridge> Would free up more space in map db 15:01 < bridge> question is, would deen approve of this 15:01 < bridge> It would break compat to all old clients 15:01 < bridge> or heinrich 15:01 < bridge> So no 15:01 < bridge> But I approve 15:01 < bridge> :deen_star: 15:01 < bridge> Hmmm, maybe back then this excuse flew this idea away 15:01 < bridge> now, how many years? 5? later 15:02 < bridge> Are we still going to say the same? 15:02 < bridge> This kind of optimization would not just improve the map db by more than half, but also the asset databases as well 15:02 < bridge> Including all those 4k images 15:02 < bridge> or full HD 15:03 < bridge> Well the last part is up to you 15:03 < bridge> It's worth investing to it, even if it breaks client compatibility 15:03 < bridge> Nobody stops you from calling oxipng when someone uploads a png to your database 15:03 < bridge> Up to them you mean 15:03 < bridge> There is no compat in loading pngs realistically. 15:03 < bridge> Since the map file does not store them as png. 15:03 < bridge> 15:03 < bridge> So it's only about if the editor can load them into memory 15:03 < bridge> If it was up to me, I would do it. 15:04 < bridge> I mean we shouldn't care about the db sizes imo 15:04 < bridge> its more about how much storage spaces stuff user need to store what they need 15:04 < bridge> How many maps, assets and other goods you guys store? 15:05 < bridge> why do you ask? 15:05 < bridge> and I don't know 15:05 < bridge> for maps, it's over 5GBs, and for textures, I assume (based on TeeData's 25k textures being around 10GB+), around 15GBs 15:05 < bridge> that sounds very reasonable for a db 15:05 < bridge> The download speed for maps would effectively double 15:05 < bridge> 15:05 < bridge> and half for downloaded maps on all clients of all users 15:05 < bridge> So technically it would be wasted not to do it 15:05 < bridge> yes, that would be really cool 15:05 < bridge> from 20GBs, cutting it down by half is kinda a big deal 15:06 < bridge> Oh yeah, cuz the filesize is also smaller, that is a good benefit 15:06 < bridge> @jupeyy_keks it would be possible to serve different maps to new clients 15:06 < bridge> Yes 15:07 < bridge> As long as the client supports the compression optimized images, it should be gucci 15:07 < bridge> locally, you would always have the 'full' map, only during transport would you have smol maps 15:08 < bridge> Maybe a command line to automatically convert your maps from your data folder into a new one would be awesome 15:08 < bridge> Would save a lot of time for some people 15:08 < bridge> Maybe a command line to automatically convert your maps from your data folder into a new one (with the optimizations) would be awesome 15:09 < bridge> Yeah, as long as the download size is smaller that's all that matters 15:10 < bridge> I mean like many people I have >40GB in demos, but it doesn't really matter because storage space isn't that relevant. does the storage space cost you more because you host it on some cloud provider? 15:10 < bridge> In some cases yeah, it can fluctuate 15:10 < bridge> And you always want to have a plan B, in case something fuckes up 15:10 < bridge> And you always want to have a plan B, in case something fucks up 15:11 < bridge> I don't understand 15:11 < bridge> Again, question always will be with these convos, is whether deen or heinrich would approve of this, or at least approve of the development 15:11 < bridge> would be a waste of time if they decline it whenever someone already wants this implemented 15:14 < bridge> any issues with this solution? 15:15 < bridge> it doesn't solve the problem entirely 15:16 < bridge> what's getting off then? 15:16 < bridge> looks solid to the problem it tries to solve 15:16 < bridge> In most databases, the prizing may not be stable due to conflictions with what they are dealing with in the background. In some cases prizes change where it's cheap, and where it's a fixed prize it's fuckin expensive to run. 15:16 < bridge> So you are most likely going to switch from database to database to find the best possible specs and optimal speed for whatever. 15:16 < bridge> 15:16 < bridge> Now on the map db, speed should be the priority. specifically download / upload speed for different regions. 15:16 < bridge> On Asset db including skins, gameskins and other HUD assets, size matters the most. 15:16 < bridge> Since Teehistorian would be your "demo" dbs, I can say it's now both. Size and speed matters there, since there are no real ways of optimizing something that is around a decade old in collecting and using very important data. (no clue if old data is wiped or contained somewhere else.) 15:16 < bridge> 15:16 < bridge> Both cannot exist, since it's either the cheap (one over the other), or expensive (can be both but massive tax) option. 15:17 < bridge> Having a plan B should be regarded, when you cannot maintain a database that has a specific purpose, that you cannot afford to move to a more dynamic option 15:17 < bridge> -# I think you mean pricing and prices 15:17 < bridge> That is why I don't deal with teeworlds anymore. I would've made my own "TeeData" db if I didn't realize that maintaining one is a fucking pain in the ass 15:18 < bridge> Oh grammar teacher 15:18 < bridge> You should know enough about language to know that I wasn't correcting your grammar 15:19 < bridge> In most databases, the pricing may not be stable due to conflictions with what they are dealing with in the background. In some cases prices change where it's cheap, and where it's a fixed price it's fuckin expensive to run. 15:19 < bridge> So you are most likely going to switch from database to database to find the best possible specs and optimal speed for whatever. 15:19 < bridge> 15:19 < bridge> Now on the map db, speed should be the priority. specifically download / upload speed for different regions. 15:19 < bridge> On Asset db including skins, gameskins and other HUD assets, size matters the most. 15:19 < bridge> Since Teehistorian would be your "demo" dbs, I can say it's now both. Size and speed matters there, since there are no real ways of optimizing something that is around a decade old in collecting and using very important data. (no clue if old data is wiped or contained somewhere else.) 15:19 < bridge> 15:19 < bridge> Both cannot exist, since it's either the cheap (one over the other), or expensive (can be both but massive tax) option. 15:19 < bridge> Then understand this: Don't interrupt a conversation if you are not involved in it. 15:19 < bridge> the same default asset shrinked by everyone lol 15:19 < bridge> @cellegenrih how much traffic do you generate per month? 15:19 < bridge> 15:19 < bridge> And how much does it cost? 15:20 < bridge> I don't have a database running. 15:20 < bridge> was a problem someday ago for me too when i didn't really know about quad clipping 15:20 < bridge> don't be wrong on the internet if you don't want to be corrected 🦅 15:20 < bridge> https://xkcd.com/386/ 15:21 < bridge> Don't be a troll on the internet if you want to have attention :troll: 15:21 < bridge> he has it being a troll 15:21 < bridge> no, he's an idiot 15:21 < bridge> Wait guys wait 15:21 < bridge> 🍿 15:21 < bridge> Takes a moment 15:21 < bridge> not here 😄 15:21 < bridge> anyway would be good to have official asset db just for sake of getting smaller map files 15:22 < bridge> like on chiller has hosted on github 15:22 < bridge> I agree, discord bot already exists: 15:22 < bridge> https://discord.com/channels/1330893967285551104/1354140507500183552 15:22 < bridge> that's the only reason why i prefer "external" assets more than embedded ones 15:22 < bridge> just for it to be 12kb map :P 15:23 < bridge> I just need the `assets` subdomain of ddnet.org and a VPS that I don't have to pay for and we can start 15:23 < bridge> then we need some assets db maintainer, like ravie or soreu or oblique 15:23 < bridge> or louis or etc etc 15:24 < bridge> souly come here 15:24 < bridge> :justatest: 15:24 < bridge> @soulyvevo hi 15:24 < bridge> and @louis.place hi 15:24 < bridge> wanna manage yet another one assets db 15:25 < bridge> I hate that I can qualify for that 15:25 < bridge> take me as the last resolt 15:25 < bridge> Yes, add assets maintainer role, make it ping and give to cellegen the champ 15:25 < bridge> Yes, add assets maintainer role, make it pink* and give to cellegen the champ 15:26 < bridge> under a fair payment, cuz that ain't the only thing I'll do 15:26 < bridge> and you know that 15:26 < bridge> You get a free #announcements post 15:26 < bridge> jupstar how much did they pay for you to reassamble whole game in rust 15:26 < bridge> can i throw my 500 simple walls variants in there 15:26 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1382712697065312407/image.png?ex=684c270c&is=684ad58c&hm=85e2e5f88189308c8e7fb2fbaeb2e58a0f8bf002c34957e7f1ce73e536aeb607& 15:26 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1382712697342132307/image.png?ex=684c270c&is=684ad58c&hm=c5690ecffba72b9260518110ebdf6541fd629757e607bde940f1e98ccce76066& 15:26 < bridge> :troll: 15:26 < bridge> Oh it was a lot 15:26 < bridge> Ah yes, lemme say "cagent sucks" 15:26 < bridge> cinema 15:27 < bridge> did you combine them btw? 15:27 < bridge> Around 300k$ 15:27 < bridge> anyway, anyway. would be lovely to make autorules as requirement 15:27 < bridge> combine? 15:27 < bridge> hell yeah, I'll pay ddnet servers with these! :poggers2: 15:27 < bridge> what did you change to have so many variants then :troll: 15:28 < bridge> ok, how about making my ko-fi to the donation pool 15:28 < bridge> different contrast variants, different outline thickness variants, only filling variants and only outline variants 15:28 < bridge> also variants where the inside is white and outline is darker 15:28 < bridge> can be done automatically 15:29 < bridge> from 0.6 to 0.7 15:29 < bridge> oh and also variants that use bevel edges and rouded edges 15:29 < bridge> with different intensity 15:29 < bridge> you can probably do various thickness variants for it on the same sheet, also the only outline, with no inner color 15:29 < bridge> if those assets exist even 15:29 < bridge> like one asset with all of those variations 15:30 < bridge> also have some other weird variants that use the same layout 15:30 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1382713693380546623/screenshot_2025-06-12_15-30-03.png?ex=684c27fa&is=684ad67a&hm=4fb34b48b9c3c0021759bd78d5434b2b49db6e3e305f6e55e847272c8e297f13& 15:30 < bridge> the shadow body should be discarded actually, it's not useful in terms of visual presence, other than giving the Tee's legs shadow 15:30 < bridge> bro was about to drop soulyblmap 15:31 < bridge> so sharp and rounded edges on tile assets 15:32 < bridge> Anyways, I just mentioned that my work has a small price which can be fulfilled reasonably as how a FOSS business does it 15:33 < bridge> I'm done doing it for free (cuz of teedata) 15:35 < bridge> contrast variants could be done automatically but not sure how it would work with different outline widths etc 15:35 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1382715029274755102/screenshot_2025-06-12_15-31-03.png?ex=684c2938&is=684ad7b8&hm=e3895ac4aa960f431b54082ab3733e5b924c863bed723739b80d8a17c13995d9& 15:35 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1382715029593526372/screenshot_2025-06-12_15-31-31.png?ex=684c2938&is=684ad7b8&hm=306fa154d85131a81c77299824020def1128a45c2a8f5d2faba9edcad27e3f42& 15:35 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1382715029937328288/screenshot_2025-06-12_15-32-05.png?ex=684c2938&is=684ad7b8&hm=88738cc29452086caa76b6162ed0659fe039dbd784c469682bc5c11b6221f7a1& 15:36 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1382715030289776732/screenshot_2025-06-12_15-32-45.png?ex=684c2938&is=684ad7b8&hm=429b250697998df4d56133ff76fbd32ca3cf4f110c0cc9ac15cc0d7df8e044a5& 15:36 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1382715030604353627/screenshot_2025-06-12_15-33-40.png?ex=684c2938&is=684ad7b8&hm=57b4fbef38377b54904440733048e77d31a7935c71c2ac62bf5a2a168ba2b885& 15:36 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1382715030939766886/screenshot_2025-06-12_15-33-53.png?ex=684c2938&is=684ad7b8&hm=d768091561e8d9ead99369da902e3111643338778992280d93a0607b8488dff6& 15:37 < bridge> i guess since i have outline only versions ppl could combine 2 layers to make something different 15:37 < bridge> yeah. you can even do no thickness but just smaller radius for borders with same thickness on same sheet 15:37 < bridge> -# amogus 15:37 < bridge> so they combine layers making it thick 15:38 < bridge> or something like tigers stripes 15:38 < bridge> zebra tiling :kek: 15:57 < bridge> today at work I accomplished, that the monitoring system sends signed emails ... we are livin' in the future here in germany :monkalaugh: 16:32 < bridge> @learath2 I'm a little confused, why are `ban_region` and `ban_range_region` commands hardcoded into the server client when this functionality could be handled directly via the `execute-all.sh` script? Also, I just noticed we have an `execute-chn.sh` script as well, why not use that instead? 16:33 < bridge> It feels a bit excessive to have global ban-related code spread across 3 different places 16:35 < bridge> So a single bans file can be shared by all servers 16:35 < bridge> Aaaaa, okey, yeah that makes sense 16:36 < bridge> Kinda sucks having to clear bans every day 16:37 < bridge> The entire thing kinda sucks, I just "madeitwork" before the mod mutiny 16:44 < bridge> Was it considered a mutiny? I recall that applying bans across all servers was something all the mods, myself included, strongly wanted back then. It was a topic that kept coming up repeatedly. 😄 16:46 < bridge> Looking at jao’s old global ban code, I don’t understand why it didn’t work consistently, or why it was more prone to failing compared to what we have now 16:47 < bridge> It was very strongly wanted, but no one had the time to do it properly, so I cobbled together something that worked before one of you took my head 16:58 < bridge> move fast, break things, fix later 17:00 < bridge> wait a second, @jupeyy_keks you want to call it `grouped`, does this work for groups of quads with the same env and same offset? 17:00 < bridge> if yes, time to optimize even more out of it 😮 17:03 < bridge> hm? 17:04 < bridge> i always wanted to have my own collection of mapres that i think are teeish and good 17:04 < bridge> but never got around to it 17:04 < bridge> i always wanted to maintain my own collection of mapres that i think are teeish and good that ppl have made 17:05 < bridge> mod mutiny sounds like a event 17:05 < bridge> yeah, exactly what we need 17:28 < bridge> it works, but better dont do it in this pr 17:28 < bridge> bcs this optimization is MUCH harder 17:29 < bridge> now you have to decide when to batch quads vs when not etc. 17:50 < bridge> I can do the easy case, all in the same envs same offsets :justatest: 17:52 < bridge> someone said banserver: https://github.com/jxsl13/banserver 17:53 < bridge> Sure, I think it's rather rare, but I also didn't write a analyze script yet 17:54 < bridge> But everytime you have animated quads you probably also want them to behave differently (e.g. rain or snow or animated text) 17:54 < bridge> Differently = have different time offset 18:33 < bridge> I think this can be extremely useful for water tbh 18:36 < bridge> hmm _maybe_ 18:47 < bridge> is this fixable? mouse drifts top left 18:47 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1382763192895148042/PXL_20250612_164644105.jpg?ex=684c5613&is=684b0493&hm=127ab2d7a0d7d8b9eb98255ca52963f09b6517f9453ba46b44d36bbddf5ef943& 18:47 < bridge> i guess its ripperoni 18:49 < bridge> yeah its fixable, but you dont want to replace just the adapter, but the entire cable 18:50 < bridge> actually USB 2.0 A plugs are like 5€ :kek: 18:50 < bridge> xd 18:50 < bridge> yeah but idk how to replace the cable 18:50 < bridge> you rip out old cable and put in new ._: 18:50 < bridge> sure xd 18:50 < bridge> just bought a new mouse 18:51 < bridge> a soldering station is required obviously - but other than that 18:51 < bridge> consumerism epyc 18:51 < bridge> :angy: 18:51 < bridge> send me your broken one, i repair for 2€ and send back 18:51 < bridge> i dont have a soldering station 18:51 < bridge> :cat_cracked_hehe: 18:51 < bridge> if i had a house with a garage 18:51 < bridge> i would 18:51 < bridge> thats my old man dream 18:51 < bridge> a soldering station of all things 18:51 < bridge> retire in a farm house with lot of pc components 18:51 < bridge> :kekw: 18:51 < bridge> and some chicken 18:51 < bridge> brother wants to wake up, crack open 10 eggs and solder the entire day 18:51 < bridge> i respec tit 18:51 < bridge> i respect it 18:52 < bridge> lol not just soldering 18:52 < bridge> i would have some riscv boards 18:52 < bridge> and a farm gym 18:52 < bridge> did u see those african gym bros 18:52 < bridge> with stone weights xd 18:52 < bridge> :kek: yeah 18:59 < bridge> can some one help me kick one guy that blockig? 18:59 < bridge> plz 19:00 < bridge> moders? 19:00 < bridge> plzzzz 19:00 < bridge> huh? 19:01 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1382766771085381683/maxresdefault.png?ex=684c5968&is=684b07e8&hm=810b9b72b1409f1f46597fcbfc3984a57c4da37ebef9f3c8d59aef0a5b87821c& 19:01 < bridge> xd 19:01 < bridge> lol nice 19:02 < bridge> (btw these guys are rich kids u cant afford the nutrition to be like this there) 19:02 < bridge> #✉-create-a-ticket, always look around first. 19:02 < bridge> The category name for #✉-create-a-ticket should be "help service" 19:04 < bridge> i smell needles 19:05 < bridge> probs 19:15 < bridge> "nutrition" 19:18 < bridge> https://github.com/AasishPokhrel/shit 19:18 < bridge> 1 billionth repo 19:22 < bridge> get wireless mouse 19:23 < bridge> wireless mice's battery are empty very quick xd 19:23 < bridge> super annoying 19:24 < bridge> no no, just the nutrition is rough 19:24 < bridge> even if you're taking funny performance enhancing substances you still need to eat a ton 19:25 < bridge> though the very first thing that got me going hmmge was the clothing, actually 19:26 < bridge> like, at least try to stick with the aesthetic bro 19:26 < bridge> my g pro lasts like a month 19:26 < bridge> is there a server side dummy issue? 19:27 < bridge> wireless anything is bad 19:27 < bridge> I hate chemical batteries they're so uncool 19:27 < bridge> though wireless devices with wireless power delivery can be cool 19:28 < bridge> like graphics tablets with their wirelessly powered styluses feel like magic the first time you use them 19:28 < bridge> wireless mouse is good wdym 19:28 < bridge> Atomic battery powered mouse :justatest: 19:28 < bridge> Then you not moving it for games 19:29 < bridge> idk i use it a lot 19:29 < bridge> also wireless data transfer is inherently less reliable than wired 19:29 < bridge> maybe my polling rate isnt maxed 19:29 < bridge> I like wires; they feel trustworthy 19:30 < bridge> you can always rely on wires wiring 19:30 < bridge> twisted pairs 😩 yes please 19:31 < bridge> coaxial 💦 19:31 < bridge> mh ok, never seen a mouse that holds longer than like 6-7 days at once when using it a lot 19:32 < bridge> according to their website 60h without LEDs on 19:39 < bridge> feels just as good if u have a good wireless 19:39 < bridge> there's no cable dragging or snagging either 19:39 < bridge> easier to bring places 19:40 < bridge> for headsets yes 19:40 < bridge> for rest doesn't matter xd 19:40 < bridge> For headset no 19:41 < bridge> You still at pc 19:41 < bridge> but wireless headsets have other problems. the last i head always had a BEEP sound the whole time 19:42 < bridge> Pc issue 19:44 < bridge> nah it's the internal sound card 19:48 < bridge> probably not 19:49 < bridge> they make those tiny heat shrink tubes with low melting point solder in the middle 19:49 < bridge> you’d probably just need wire strippers and a heat gun 19:54 < bridge> i bought a wireless 8k polling rate mouse, with a dongle that moves on the desk so you can put it by your mousepad and avoid basically all interference 19:55 < bridge> i’ll let you know if it’s got issues 19:55 < bridge> but wireless isn’t inherently unreliable under the right circumstances 19:55 < bridge> yeah I know that in practice there are plenty of wireless things that are good and reliable 19:55 < bridge> but I've just grown to dislike it 19:56 < bridge> it's not unreliable but if that small distance was covered by a cable it'd be *even more* reliable 19:56 < bridge> idk if that’s even true 19:57 < bridge> yeah it’s a direct connection but i’m pretty sure the radiowaves can travel just as fast with the right hardware 19:57 < bridge> at least more resistant to interference 19:57 < bridge> definitely 19:57 < bridge> that's the kind of reliable I mean, I don't mean how high performance it is 19:58 < bridge> i might get cancer from the mouse 19:58 < bridge> actually radio travels faster through air than signals down a cable 19:58 < bridge> so over long distance people sometimes use radio to shave milliseconds of latency 19:58 < bridge> yea but there’s overhead in transceiving 19:58 < bridge> so it depends on the case 19:58 < bridge> xd ppl are making translation prs for this 19:59 < bridge> yeah people do it for high speed trading across continents type of beat 19:59 < bridge> yeah i’ve heard about that 19:59 < bridge> have u heard about datacenter latency normalization 20:00 < bridge> so ppl can’t rent out space close to a critical server in a VPS and get a latency advantage for trading 20:00 < bridge> like physical on premises distance 20:00 < bridge> like adding artificial latency for *everyone*, or is it selective extra latency? 20:00 < bridge> all the equipment is set up to have the exact same length of cable run 20:00 < bridge> the former 20:00 < bridge> well idk 20:01 < bridge> not extra for no reason but they all have the same 20:01 < bridge> the stock market is game for goofy goobers 20:01 < bridge> yeah and they make money sometimes 20:02 < bridge> a lot of times xd 20:09 < bridge> every so often 20:10 < bridge> why does freeing lots of memory freeze my whole system 20:15 < bridge> context? 20:16 < bridge> im freeing a ~10gb tree. it takes a some time and my system stutters completely xD 20:16 < bridge> even music stutters like crazy 20:17 < bridge> So I guess you're actually doing a lot of small frees? 20:17 < bridge> it’s not cheap 20:17 < bridge> That'd be a lot of syscalls 20:17 < bridge> yea 20:17 < bridge> you're bullying your kernel 20:17 < bridge> you must know heap memory is rly slow to use 20:17 < bridge> yes 20:18 < bridge> If you had that 10GB tree in a big arena allocation or something and deallocated all that in a single call to free then it'd be real quick 20:18 < bridge> hmm yea ig there is some space to improve 20:18 < bridge> well either im using heap or i stack overflow. which is better 20:19 < bridge> hm? 20:19 < bridge> it’s not to say you shouldn’t use it 20:19 < bridge> it’s to say you shouldn’t expect it to be fast 20:19 < bridge> 4head? 20:20 < bridge> what? im talking about freeing the memory causing my system to stutter. i never said anything about speed 20:22 < bridge> syscalls are expensive because they have a context switch 20:23 < bridge> yea ik syscalls are expensive but i didn't expect everything come crashing down on me because im doing a few million of them 20:23 < bridge> there might be other reasons for it being slow but I don't know enough 20:24 < bridge> audio crackle and such I think would point to the scheduler struggling to find time for the different applications involved in that playback 20:24 < bridge> memory paging on modern CPUs involves like at least 3 layers of recursion 20:25 < bridge> right, I said that, and then you contest with something unrelated, and then i respond to that, and then you contest to what was even being said 20:25 < bridge> you are so silly 20:27 < bridge> we all are :owo: 20:28 < bridge> i interpreted **using** heap allocated memory as accessing it. not general use. so your answer/comment seemed unrelated. 20:28 < bridge> i interpreted **using** heap allocated memory as in accessing it. not general use. so your answer/comment seemed unrelated. 20:30 < bridge> making use of 20:37 < bridge> - tries new vulkan/opengl feature on laptop 20:37 < bridge> - no improvement whatsoever, wtf? 20:38 < bridge> - oh yeah gpu is cpu 🙈 20:38 < bridge> llvmpipe moment 21:13 < bridge> Hello! I have been banned on DDNet, but I believe it is a mistake. 21:13 < bridge> My nickname: [Fartt] 21:13 < bridge> Time of ban: [10:50] 21:13 < bridge> I didn’t use cheats or any illegal software. 21:13 < bridge> Could you please check and help me resolve this? 21:14 < bridge> @jupeyy_keks added the other trivial grouping, I don't know where I use it in my map, but I certiainly get more fps 21:14 < bridge> go to the right channel 21:14 < bridge> devs can’t do anything about it 21:20 < bridge> #✉-create-a-ticket 21:23 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1382802428159594587/Screenshot_2025-06-12-21-22-27-443_com.discord.jpg?ex=684c7a9e&is=684b291e&hm=25a6ff8e2038e41e5076c6d9c4f63a5e978e97363f4417e5df8eb7ee9b283258& 21:23 < bridge> uMm 21:23 < bridge> If it's a persistent issue then this indeed is something you should blame the devs for lol 21:25 < bridge> Real 21:55 < bridge> why can a player who has whispers off still whisper other players? 21:56 < bridge> It's not, was just discord being discord 21:56 < bridge> Should work again 21:56 < bridge> Also pls don't blame sheep, sheep is trying it's best 22:07 < bridge> Using a vpn could explain both your ban and this error 22:13 < bridge> The issue was due to system outages at Discord, Google, and Cloudflare. Not sure if it’s completely resolved yet, but things seem okay for now? 22:21 < bridge> yes everything is fine now 23:07 < bridge> Do we have a demo viewer that works in the browser/on phone somewhere 23:12 < bridge> https://ddnet.github.io/