02:10 <+bridge_> i didnt expect this to work so well ngl 02:10 <+bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1481459244577591366/2026-03-12_02-08-07.mp4?ex=69b363f0&is=69b21270&hm=c87cf3a71625c8bec8ee19e1837c12f0d111e626058dcef480bd974cd37ee582& 02:12 <+bridge_> thx again robyte 02:17 <+bridge_> <12944qwerty> Working on it rn lol 02:19 <+bridge_> <12944qwerty> Using moltenvk instead of sdl rn though 02:19 <+bridge_> <12944qwerty> But oh well, metal better for ios 02:35 <+bridge_> got it to work on github pages. 02:35 <+bridge_> https://teero888.github.io/solo_progress/?q=aip&demo=Q-Aip-Gores6_83.580_Teero.demo 02:37 <+bridge_> <12944qwerty> _sigh_ 02:37 <+bridge_> <12944qwerty> https://cdn.discordapp.com/attachments/293493549758939136/1481466147143417957/image.png?ex=69b36a5d&is=69b218dd&hm=5996d32067a721dc21347c0bb17a1ef6ca85f13a37d28b7a8e8b82ccb385746f& 02:37 <+bridge_> <12944qwerty> https://cdn.discordapp.com/attachments/293493549758939136/1481466147571503234/image.png?ex=69b36a5d&is=69b218dd&hm=6506cb01f69f9ae1ec79a32b9a54b60b891d7dcc6bd9586eeadb6d50a1a80c57& 02:39 <+bridge_> xd 02:45 <+bridge_> <12944qwerty> it doesn't work with bundled libs either, just ignoring both somehow 03:01 <+bridge_> <12944qwerty> only happening when i change target ios to ios too 03:01 <+bridge_> <12944qwerty> only happening when i change target os to ios too... so idk 03:03 <+bridge_> <12944qwerty> only happening when i change target os to ios too... so idk, because everythng is there 07:11 <+bridge_> Read the issue. You need to compile the libs yourself and adjust the cmake configuration to find the precompiled libs. You should not compile with Vulkan because it's not supported on iOS. 07:23 <+bridge_> Cool. Did you create the controls in the client or in JS? 07:25 <+bridge_> Doesn't seem to work in my desktop Firefox 07:25 <+bridge_> > Content-Security-Policy: The page’s settings blocked a script (script-src-elem) at https://teero888.github.io/solo_progress/coi-serviceworker.js from being executed because it violates the following directive: “script-src-elem 'none'” 07:25 <+bridge_> But works in Edge and mobile Firefox 07:26 <+bridge_> the script is a workaround to make github pages let me host this. 07:26 <+bridge_> it also doesn't seem to work on mobile duckduckgo 07:27 <+bridge_> thx for the error tho maybe i can fix it 07:27 <+bridge_> Might be easier to remove all binds if you want to disable them. You can hold tab which only changes text size and shows the time. And you can press F1 to open the console. 07:27 <+bridge_> Might be easier to remove all binds if you want to disable them. You can hold tab which only changes chat size and shows the time. And you can press F1 to open the console. 07:28 <+bridge_> huh? all input should be blocked from going through to the game 07:28 <+bridge_> ok 07:28 <+bridge_> Doesn't it capture mouse and keyboard anyway? 07:28 <+bridge_> Only escape closes the player 07:28 <+bridge_> Because that's generally a limitation of browsers that you can't use the first escape press 07:52 <+bridge_> @robyt3 ok i think i fixed both issues, could you try again? 07:53 <+bridge_> Yeah. I can try later. Only on my phone right now. 07:53 <+bridge_> 👍 10:11 <+bridge_> btw apple requires a apple dev account, i have one but idk if i would go through the hassle.. xD 10:11 <+bridge_> even for unpublished apps 10:12 <+bridge_> Even if you only intend to sideload them? :pepeW: 10:22 <+bridge_> yes 10:22 <+bridge_> its crazy 10:22 <+bridge_> also even for test apps they only live for 90 days 10:22 <+bridge_> then they "expire" 10:22 <+bridge_> its crazy how unfriendly it is vs android 10:23 <+bridge_> hmm https://support.apple.com/en-mk/117767 there is this 10:23 <+bridge_> i havent read it though 10:23 <+bridge_> only for europe and japan 12:00 <+bridge_> RenderServerbrowserServerList — 13.9% 12:00 <+bridge_> 12:00 <+bridge_> ``` 12:00 <+bridge_> Hotspot | % | Issue 12:00 <+bridge_> -----------------------------------------|-------|---------------------------------------------- 12:00 <+bridge_> tolower | 4.37% | Case-insensitive string matching (search/filter) 12:00 <+bridge_> CUi::DoLabelStreamed | 2.72% | Text rendering for each row 12:00 <+bridge_> DoButton_GridHeader -> CUi::DoLabel | 2.06% | Column headers (re-rendered every frame!) 12:00 <+bridge_> RenderServerbrowserServerList self | 0.62% | Loop logic, layout 12:00 <+bridge_> ``` 12:00 <+bridge_> 12:00 <+bridge_> RenderServerbrowserInfoScoreboard — 11.1% 12:00 <+bridge_> 12:00 <+bridge_> ``` 12:00 <+bridge_> Hotspot | % | Issue 12:00 <+bridge_> -----------------------------------------------------------|-------|---------------------------------------------- 12:00 <+bridge_> CUi::DoLabel -> TextWidth -> TextEx | 3.04% | Measuring text width for each player row 12:00 <+bridge_> CTextRender::TextEx -> CreateTextContainer -> AppendText.. | 3.04% | Creating text containers per player 12:00 <+bridge_> ``` 12:00 <+bridge_> 12:00 <+bridge_> RenderServerbrowserStatusBox — 2.8% 12:00 <+bridge_> Text Rendering Stack: ~15% total 12:00 <+bridge_> 12:00 <+bridge_> ``` 12:00 <+bridge_> Function | Self % | Role 12:01 <+bridge_> --------------------------------------|--------|------------------------------- 12:01 <+bridge_> AppendTextContainer | 3.10% | Per-character processing 12:01 <+bridge_> SGlyph unordered_map::operator[] | 1.93% | Glyph lookup per character 12:01 <+bridge_> GetTextContainer | 1.15% | Container retrieval 12:01 <+bridge_> DoLabelStreamed | 0.93% | Label rendering entry point 12:01 <+bridge_> CreateTextContainer | 0.84% | Container creation 12:01 <+bridge_> i asked the oracle to analyze a profile of me looking at the server browser 12:01 <+bridge_> its interesting tolower takes 4.3% 12:01 <+bridge_> xD 12:08 <+bridge_> I wonder if you can precompute tolower 😛 12:08 <+bridge_> I wonder if we can precompute tolower 😛 12:11 <+bridge_> @kebscs if you have problems with image creation, I'd recommend gimp, it might take a while to get used to it, but it's very easy to do tiles/entities with it and you can configure a 64x64 grid over it 12:19 <+bridge_> Yea but I'd prefer if a real graphics designer did it 12:19 <+bridge_> I don't like programmer art 12:20 <+bridge_> If I steal the stopper texture I can just slap outdated text on old one 12:20 <+bridge_> And done 12:38 <+bridge_> optimized 12:40 <+bridge_> Without beeing an opinion, this does still call it every frame if you have at least 2 gametypes rendered 😄 12:41 <+bridge_> its gone from the profile 12:41 <+bridge_> yes it caches every time 2 servers behind each other have the same gametype 12:42 <+bridge_> im making a small edit tho 12:42 <+bridge_> let me se if i can do another thing 12:43 <+bridge_> ig this is the most minimal fix but yeah, ur right 12:43 <+bridge_> ill change the pr 12:48 <+bridge_> hmm idk actually if adding more code is worth it 13:01 <+bridge_> Should cache the color for each server list entry. Using static variables is a no-go. 13:02 <+bridge_> But thanks for working on entries in my TODO list :greenthing: 13:03 <+bridge_> yeah thought about this 13:03 <+bridge_> ill do it 13:03 <+bridge_> What other non editor entries do you have? 13:05 <+bridge_> @ryozuki what about std::map? 13:06 <+bridge_> @ryozuki what about std::unordered_map? 13:06 <+bridge_> The TODO file is already 1000+ lines long :monkaS: 13:07 <+bridge_> add accounts in there 13:12 <+bridge_> there was an interesting paper about a new hash table algorithm which doesn't always choose the first free slot ^^ 13:14 <+bridge_> [2501.02305] Optimal Bounds for Open Addressing Without Reordering 13:14 <+bridge_> 13:14 <+bridge_> 🤓 13:15 <+bridge_> @robyt3 @essigautomat can u check it again? 13:15 <+bridge_> 13:15 <+bridge_> i had to do some seemingly unrelated changes, but i couldnt use colorrgba because its non-trivially constructible and for some reason we inited cserverinfo with memzero? i think the change is ok but correct me if im wrong 13:16 <+bridge_> > Adding ColorRGBA to CServerInfo required changing mem_zero(&info, sizeof(info)) to info = {} in 3 files. ColorRGBA inherits from color4_base which has a user-provided default constructor, making it non-trivially constructible. mem_zero has a static_assert that rejects non-trivially constructible types. Value initialization (= {}) calls the default constructor and zeroes all members, so it's a safe 1:1 replacement. 13:17 <+bridge_> profile shows the same improvement 13:20 <+bridge_> yeah okay giving each item a color is a direct cache 😆 13:21 <+bridge_> how dare you make the construction time slower /s 13:22 <+bridge_> is it? xD 13:22 <+bridge_> i mean its slower constructing but im interested if the mem zero was faster 13:22 <+bridge_> ig its same 13:23 <+bridge_> > Scoreboard DoLabel → DoLabelStreamed (11.1%) — The biggest remaining item. RenderServerbrowserInfoScoreboard recreates text containers every frame for every visible player row instead of caching them 13:23 <+bridge_> im looking at this now 13:25 <+bridge_> I like the change tho tbh - I also have some HSL other gametypes color generator idea rn ... 13:25 <+bridge_> nice 13:29 <+bridge_> the gametype color of this server is bugged: 13.209.96.10:8306 13:29 <+bridge_> It gets the same color as race 13:30 <+bridge_> gametype shows as `RelayGo` in the browser, the full gametype send is `RelayGo race` lol 13:30 <+bridge_> is this pre existing? 13:30 <+bridge_> wdym pre existing? 13:31 <+bridge_> the color bug 13:31 <+bridge_> idk if u talking about my pr 13:31 <+bridge_> xD 13:34 <+bridge_> yes the bug is pre existing, didn't talk about your PR 13:34 <+bridge_> because the gametype matches with "race" 13:34 <+bridge_> idk if this is intended and if the author of this mod is a genius 13:35 <+bridge_> probs a genius 13:35 <+bridge_> whats the mod about btw 13:36 <+bridge_> gores apparently 13:51 <+bridge_> i also use this to color my type 13:51 <+bridge_> pls leave it be 13:56 <+bridge_> can u add a review to the pr? :3 13:58 <+bridge_> I don't want to change existing colors, I only want to add a color for the stuff that's white 14:05 <+bridge_> maybe hash the text and some color map 14:06 <+bridge_> for non existing entries 14:07 <+bridge_> @ryozuki could you add a short note in the commit message that `ColorRGBA` made `CServerInfo` non-trivially constructible? I had the question why you changed the `mem_zero` and figured it out by myself — but that's what a commit message is for 14:08 <+bridge_> its in the pr description, but yess i can add it to the commit msg 14:08 <+bridge_> the merge commit from gh doesnt add the pr description? 14:08 <+bridge_> i forgot 14:09 <+bridge_> done 14:09 <+bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1481640288903495760/image.png?ex=69b40c8c&is=69b2bb0c&hm=17fe9222169acace3569171fcccf6410e777acbb9535879f73062bac3c69ab4b& 14:12 <+bridge_> How do I reproduce #11911 I literally never did mapping :justatest: Can someone please explain in more detail? 👉🏻 👈🏻 14:12 <+bridge_> https://github.com/ddnet/ddnet/issues/11911 14:19 <+bridge_> i have another pr in draft https://github.com/ddnet/ddnet/pull/11923 14:19 <+bridge_> but i am unsure if its worth it, given the improvement is like just 1%, if you think its not worth it i can close it 14:26 <+bridge_> well I provided steps to reproduce. Which step does problems to you? Do you know what tools I am talking about? Do you know _what's_ the editor? 14:26 <+bridge_> why do you want to reproduce this :justatest: 14:27 <+bridge_> @ryozuki I think your time would be better spend optimizing the scoreboard, when it opens I loose about 1000 fps 14:27 <+bridge_> @ryozuki I think your time would be better spend optimizing the ingame scoreboard, when it opens I loose about 1000 fps 14:27 <+bridge_> Well I gotta test if my change works for it no? I kinda just eyeballed it. I've seen what you wrote but idk whats meant by it :cammo: 14:27 <+bridge_> true 14:28 <+bridge_> Which of these steps do you mean? 14:28 <+bridge_> ``` 14:28 <+bridge_> 14:28 <+bridge_> Create a pixelart with tile pixelart tool 14:28 <+bridge_> Create a pixelart with quad pixelart tool 14:28 <+bridge_> Set quad image to image from tile pixelart tool 14:28 <+bridge_> UNDO the image selection (or undo everything) 14:28 <+bridge_> REDO the image selection (or redo everything) 14:28 <+bridge_> 14:28 <+bridge_> Image 14:28 <+bridge_> ``` 14:28 <+bridge_> :pepeRage: 14:29 <+bridge_> Literally top 3, I can get around using the undo and redo buttons :kek: 14:29 <+bridge_> this is not about the undo and redo button, I mean the history there :kek: 14:30 <+bridge_> well yeah 14:30 <+bridge_> here are the tools I mean, tile pixelart and quad pixelart, use them 14:30 <+bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1481645604265267231/screenshot_2026-03-12_14-30-07.png?ex=69b4117f&is=69b2bfff&hm=825d6f2867bd6b4c99c889bf6dcf815682929c1422f3481a5a49f6a33def45d7& 14:33 <+bridge_> Oh new DDNet 19.8 download on the Website is unsigned btw. 14:33 <+bridge_> @0xdeen 14:34 <+bridge_> the win 64 14:34 <+bridge_> updater of 19.7 is also not there yet 14:38 <+bridge_> I feel like this I swear. 14:38 <+bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1481647616402919568/889f74786df7dd981a4368c169327fe3.png?ex=69b4135f&is=69b2c1df&hm=9024e0ac945b3a8b51b26e4b4cda29d576e4fc7ca2136afd9b271fcf65afbf84& 14:39 <+bridge_> sometimes we all do ^^ I still discover new things about the editor after 10 years 14:40 <+bridge_> example: We had a fix about volume envelopes which can go over 100% and under 0% with bezier curves 😄 14:40 <+bridge_> Yeah I still have no clue whats meant with the issue I guess 14:40 <+bridge_> do you really need a video 🙁 14:41 <+bridge_> I would be indebted to you 😭 14:42 <+bridge_> okay tbf I was not able to reproduce it now 14:43 <+bridge_> okay now I was 14:43 <+bridge_> Well good then I already thought I'm a bit slow xd 14:43 <+bridge_> HUH 14:43 <+bridge_> Yeah let me capture a video 14:43 <+bridge_> https://cdn.discordapp.com/attachments/1265636854431219772/1297946528643809385/silly.gif 14:45 <+bridge_> got it on video, will need to upload it to yt 14:46 <+bridge_> you could just send it here - if its not too big 14:48 <+bridge_> > if its not too big 14:48 <+bridge_> :pepeW: 14:48 <+bridge_> 62,5 MB 14:50 <+bridge_> https://www.youtube.com/watch?v=6IRKFYqaWLA 14:50 <+bridge_> The Windows releases have always been unsigned 14:51 <+bridge_> Never had a Windows Pop-Up till now 14:52 <+bridge_> Once many people use the game, Windows will trust it again. 14:52 <+bridge_> Once many people use the latest version of the game, Windows will trust it again. 14:55 <+bridge_> || alternatively switch to linux || 14:56 <+bridge_> Ahhh 14:56 <+bridge_> but now matter how many people use it on windows, I'll not trust it 14:57 <+bridge_> Now I get it lmao 14:57 <+bridge_> I don't know if this is limited to tileart 😆 if yes, then this is probably a weird edge case 14:59 <+bridge_> I keep finding weird editor bugs when I review robyts PRs, and this is always not the PR i am checking causing 15:00 <+bridge_> I keep finding weird editor bugs when I review robyts PRs, and this is always not the PR i am checking causing, but already present 15:01 <+bridge_> Might already have it fixed gotta check later tho when I'm home 15:04 <+bridge_> https://discord.gg/7kDgNrFF 15:32 <+bridge_> <12944qwerty> yeah, using moltenvk i know that 15:32 <+bridge_> <12944qwerty> I realized about changing the scripts a while after I sent that message tho 16:02 <+bridge_> YOU! is your tune pr ready btw? 16:03 <+bridge_> <12944qwerty> oh uh, forgot what i chagned 16:03 <+bridge_> <12944qwerty> one sec 16:03 <+bridge_> @essigautomat i got a 22.73% → 14.71% - 35% reduciton in the in game scoreboard, idk if worth it 16:03 <+bridge_> <12944qwerty> wait wtf, I thought i forced pushed my changes... 16:04 <+bridge_> depends on your changes :justatest: 16:04 <+bridge_> you did, but the PR is marked as draft 16:04 <+bridge_> ok ill make a pr but dont kill me 16:04 <+bridge_> check it urself and tell me if its good before heinrich comes 16:05 <+bridge_> <12944qwerty> no i know, but the forced push changes are none. somehow my changes didn't get commmitted 16:05 <+bridge_> I can't kill sb remotely ...|| fortunately for some ppl|| 16:08 <+bridge_> <12944qwerty> oh yeah i forgot ogl 1.4.0 doesn't work 16:19 <+bridge_> @ryozuki please rewrite ffmpeg from scratch and release it as a new major version, so they can sue you and the llm provider 16:23 <+bridge_> @ryozuki please rewrite ffmpeg from scratch and release it as a new major version with MIT license, so they can sue you and the llm provider 16:25 <+bridge_> <12944qwerty> done 16:25 <+bridge_> <12944qwerty> I'll update the website I made for people to make their textures so that it keeps the first slot empty 16:25 <+bridge_> <12944qwerty> I'll update the website I made for people to make their textures so that it keeps the first slot empty later 16:30 <+bridge_> am I getting easy, are you writing this with AI? 16:30 <+bridge_> am I getting crazy, are you writing this with AI? 16:30 <+bridge_> :justatest: 16:31 <+bridge_> <12944qwerty> no entirely 16:31 <+bridge_> <12944qwerty> just to make sure what to do since idk where everythign is 16:31 <+bridge_> <12944qwerty> why whats sticking out xd 16:33 <+bridge_> <12944qwerty> the website is entirely ai though yea 16:33 <+bridge_> <12944qwerty> https://12944qwerty.github.io/ddnet-tune-asset/ 16:36 <+bridge_> pretty cool 16:36 <+bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1481677293418975303/image.png?ex=69b42f02&is=69b2dd82&hm=aee37906ce28e83ec1ee3aedc9a0ba0454fd1851b73e73ff33b64dee7cbaf7ec& 16:36 <+bridge_> can you explain, why you are calling ResetRenderMap in CMapRenderer.clear() ? 16:37 <+bridge_> yes, but we'll keep the first space clear in the future (like every other tileset) 16:38 <+bridge_> <12944qwerty> am i crazy, i don't see resetrendermap anywhere 16:39 <+bridge_> `ResetTuneColorMap` sry 16:39 <+bridge_> <12944qwerty> I assumed clear() would be called whenever the map is unloaded right? 16:40 <+bridge_> @essigautomat the pr https://github.com/ddnet/ddnet/pull/11924 16:40 <+bridge_> the next change would be caching rendertee 16:40 <+bridge_> yes, but you also have this in RenderMap::Init 16:40 <+bridge_> but thats way more complex 16:40 <+bridge_> <12944qwerty> just in case 16:40 <+bridge_> <12944qwerty> in both places xd 16:41 <+bridge_> here @essigautomat you can test with this. I wasn't able to reproduce the issue anymore after my changes but maybe I'm just lucky who knows. 16:42 <+bridge_> and then you do it again in RenderTunemap 16:43 <+bridge_> <12944qwerty> oh that one isn't supposed to be there mb 16:43 <+bridge_> <12944qwerty> how is it working with that wtf 16:44 <+bridge_> then, this ` std::array m_aTuneNumberToIndex;` 16:44 <+bridge_> 16:44 <+bridge_> why is this an in16_t ? I believe because you want to store -1 in it 16:45 <+bridge_> <12944qwerty> ye 16:45 <+bridge_> while also having a m_NextTuneNumberIndex ? 16:46 <+bridge_> <12944qwerty> (website offsets index by 1 now) 16:47 <+bridge_> <12944qwerty> misleading name oops 16:48 <+bridge_> <12944qwerty> misleading name ig 16:48 <+bridge_> <12944qwerty> it's supposed to be a mapping of tune numbers to the index number on texture, or the `i` for color gen 16:49 <+bridge_> <12944qwerty> and the NextTuneNumberIndex just stores the next index to put into the mapping when we introduce a new tune 16:49 <+bridge_> <12944qwerty> and the NextTuneNumberIndex just stores the next index to put into the mapping when we receive a new tune 16:49 <+bridge_> <12944qwerty> and the NextTuneNumberIndex just stores the next index to put into the mapping when we receive a new tune num 16:50 <+bridge_> I understand what it's purpose is, but this makes the -1 useless 16:50 <+bridge_> Then you duplicated the code, you could also put it in RenderLayer if you must 16:52 <+bridge_> <12944qwerty> how 16:53 <+bridge_> <12944qwerty> i thought buffered and unbuffered were completely different flows 16:53 <+bridge_> they are, but the code for adding an entry to the map is the same, isn't it? 16:54 <+bridge_> <12944qwerty> GetTileData? 16:55 <+bridge_> <12944qwerty> oh it is 16:55 <+bridge_> <12944qwerty> i just didn't think of that wow 16:55 <+bridge_> <12944qwerty> thought gettiledata was only for buffered idk why 16:56 <+bridge_> oh I didn't mean this and didn't think of this either 😮 16:56 <+bridge_> <12944qwerty> tbf idk this codebase at all 16:56 <+bridge_> <12944qwerty> and i have no experience in rendering either 16:59 <+bridge_> What I mean is this part of the logic: 16:59 <+bridge_> ```C++ 16:59 <+bridge_> int16_t &TuneNumberIndex = m_aTuneNumberToIndex[Number]; 16:59 <+bridge_> if(TuneNumberIndex == -1 && m_NextTuneNumberIndex != 0) 16:59 <+bridge_> { 16:59 <+bridge_> TuneNumberIndex = m_NextTuneNumberIndex; 16:59 <+bridge_> ++m_NextTuneNumberIndex; 16:59 <+bridge_> } 16:59 <+bridge_> ``` 16:59 <+bridge_> 16:59 <+bridge_> This is done in both functions, I'd put it in a function in render_map 16:59 <+bridge_> (and use uint8_t instead) 17:00 <+bridge_> (and use uint8_t instead, because you already have the info for m_NextTuneNumberIndex what is used and what not) 17:00 <+bridge_> <12944qwerty> well, i could just put it in inititiledata and then pass the mapping as an arg to rendertunemap now no? 17:00 <+bridge_> why pass it as an argument, if you can already access RenderMap() ? 17:03 <+bridge_> Another side effect I already see incoming is, that this change will be present in the editor 17:03 <+bridge_> but I guess why not 🤷‍♂️ 17:06 <+bridge_> @12944qwerty would you be happy and allow me to co-author this PR? I think it's getting a bit complicated, but I don't want to discourage you 17:06 <+bridge_> <12944qwerty> that's fine 17:13 <+bridge_> ah now I understand what's my missconception, you only need the map for the unbuffered case 17:13 <+bridge_> <0xdeen> What do you mean by unsigned? were old versions ever signed? 17:14 <+bridge_> Well no clue I always thought they were 17:14 <+bridge_> <0xdeen> Nope, only macOS is signed 17:25 <+bridge_> negative integers only exist on macos 17:25 <+bridge_> hi deen how is life 17:25 <+bridge_> ill try to come to the tournament 17:25 <+bridge_> I revert this, currently merging both 17:27 <+bridge_> (i itentionally avoid the 0.7 version cuz i hate 0.7) 17:27 <+bridge_> also cuz i think its wasted work 17:27 <+bridge_> (i intentionally avoid the 0.7 version cuz i hate 0.7) 17:28 <+bridge_> both last prs help with scoreboard rendering 17:38 <+bridge_> aaaaa const correctness 17:39 <+bridge_> nice one, we are doomed btw, but nice one 17:39 <+bridge_> next write a shader as a followup 17:42 <+bridge_> wdym by doomed? is the pr bad? 17:43 <+bridge_> I am almost finished, this is opengl 1 🥳 17:43 <+bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1481694026775265290/screenshot_2026-03-12_17-42-20.png?ex=69b43e98&is=69b2ed18&hm=1d123ee3e6b85d7f4cfe8db5be5f934b63764516d1f5c48285eedba7b1419d29& 17:43 <+bridge_> I don't know how the editor doesn't do this btw xD 17:43 <+bridge_> what u doin? 17:44 <+bridge_> oh 1700 fps 17:44 <+bridge_> idk if its good with ogl1 17:44 <+bridge_> oh i actually have a ogl one optimization i could try 17:47 <+bridge_> I have multiple, I am drowning in work I could do for ddnet 17:47 <+bridge_> sorry for not giving you the attention you deserve 17:47 <+bridge_> tell me ideas 17:47 <+bridge_> or are they secret 17:47 <+bridge_> the (cpu sided) clipping is only done for vulkan right now 17:48 <+bridge_> do ppl use ogl1 still? 17:48 <+bridge_> because lots of code related to that is done in UploadGPU (or how was it called?) 17:48 <+bridge_> Кто забанил меня пидарасыыы 17:48 <+bridge_> https://cdn.discordapp.com/attachments/968128222170595398/1384258925280624710/attachment.gif 17:48 <+bridge_> oh wow 17:48 <+bridge_> @Discord Mod 17:48 <+bridge_> xD 17:49 <+bridge_> Неет 17:49 <+bridge_> Пожалуйста 17:49 <+bridge_> Не надо 17:49 <+bridge_> bork? 17:49 <+bridge_> Я хз что это 17:49 <+bridge_> learath stop looking at the gif 17:49 <+bridge_> delet it 17:49 <+bridge_> xD 17:49 <+bridge_> Ок 17:49 <+bridge_> :justatest: 17:49 <+bridge_> xD 17:49 <+bridge_> Лол 17:49 <+bridge_> My bad got distracted 17:49 <+bridge_> xDDD 17:49 <+bridge_> Im have more gif 17:49 <+bridge_> no 17:49 <+bridge_> Enghlish baddd(((( 17:49 <+bridge_> What no? 17:49 <+bridge_> #off-topic 17:50 <+bridge_> Where is my ban button anyway? 17:50 <+bridge_> Nooo( 17:50 <+bridge_> https://tenor.com/view/meme-gif-9645186713234440025 17:50 <+bridge_> @essigautomat some quick ogl1 ideas 17:50 <+bridge_> 17:50 <+bridge_> ``` 17:50 <+bridge_> 1. FlushVertices memcpy every flush (graphics_threaded.cpp:65) 17:50 <+bridge_> Every vertex batch copies all accumulated vertices from m_aVertices to the command buffer via mem_copy. This happens many times per frame. Could potentially be avoided by writing directly into the command buffer or double-buffering. 17:50 <+bridge_> 17:50 <+bridge_> 2. Shadow buffer copies in buffer object commands (backend_opengl.cpp:1856-1895) 17:50 <+bridge_> The legacy GL backend maintains a CPU-side shadow copy of all GPU buffer data. Every CreateBufferObject, RecreateBufferObject, and UpdateBufferObject uploads to GPU via glBufferData/glBufferSubData AND copies to a shadow buffer — double the work. 17:50 <+bridge_> 17:50 <+bridge_> 3. Cmd_CopyBufferObject (backend_opengl.cpp:1909) 17:50 <+bridge_> Does a CPU-side mem_copy between shadow buffers, then uploads the result to GPU via glBufferSubData. Could use glCopyBufferSubData() instead for GPU-side copy. 17:50 <+bridge_> 17:50 <+bridge_> The FlushVertices memcpy is the hottest path since it runs every frame, multiple times. The shadow buffer stuff is more about memory waste than per-frame CPU cost. 17:50 <+bridge_> ``` 17:50 <+bridge_> Guys un ban dep plsss 17:51 <+bridge_> Guys un ban ( dep )plsss 17:51 <+bridge_> Is this a ban angle or a timeout angle actually? :Hmm: 17:51 <+bridge_> timeout 17:51 <+bridge_> guy is lost in gif p*rn 17:51 <+bridge_> What 17:51 <+bridge_> eh 17:51 <+bridge_> Pls russian 17:51 <+bridge_> its suggestive 17:51 <+bridge_> My english vert bad!!!!( 17:51 <+bridge_> he is obv trolling 17:51 <+bridge_> My english very bad!!!!( 17:51 <+bridge_> $deepl 17:51 <+bridge_> Hi! Most of us communicate in English. If you’re having trouble with English, use to help you out. 17:51 <+bridge_> I guess we can do a timeout 17:52 <+bridge_> hi learath, how is life? 17:52 <+bridge_> i asked same to deen but i got ignored 17:52 <+bridge_> :Sadge: 17:52 <+bridge_> ask me in #off-topic 😛 17:53 <+bridge_> oh are u enforcing #developer more now? 17:53 <+bridge_> oks 17:53 <+bridge_> Not particularly, but I want to ask about your ogl1 thing and don't want it mixed up 17:53 <+bridge_> Why are we messing around with ogl1? I think it just needs to work, no need to maintain it really, we are more likely to break stuff 17:54 <+bridge_> eh i just looked at it cuz assa mentioned it 17:55 <+bridge_> but maybe there is a very obvious memcpy we can avoid 18:08 <+bridge_> How did I do this 18:08 <+bridge_> WTF? 18:08 <+bridge_> <12944qwerty> xdd 18:08 <+bridge_> @robyt3 I _somehow_ created a new branch on ddnet 18:08 <+bridge_> you pushed to the ddnet repo 18:08 <+bridge_> instead of your own 18:08 <+bridge_> I wonder that I have ther permissions to do so 18:09 <+bridge_> I think every maintainer has the rights to push directly 18:10 <+bridge_> deleted the branch again 18:11 <+bridge_> I tried to push to the PR of fish, namely #11711 but I can't do it aparently 18:11 <+bridge_> https://github.com/ddnet/ddnet/pull/11711 18:11 <+bridge_> `git push git@github.com:12944qwerty/ddnet tuneoverlay` 18:12 <+bridge_> should do it 18:12 <+bridge_> if your local branch is also called `tuneoverlay` 18:12 <+bridge_> I added this as a remote 18:12 <+bridge_> then you probably did something wrong. I've pushed to PRs successfully in the past 18:12 <+bridge_> what command did you run to push, and what's the relevant line from `git remote -v`? 18:13 <+bridge_> if u r willing to use the github cli tool gh its pretty easy 18:13 <+bridge_> ``` 18:13 <+bridge_> $ git remote -v 18:13 <+bridge_> askll https://github.com/ASKLL-STAR/ddnet.git (fetch) 18:13 <+bridge_> askll https://github.com/ASKLL-STAR/ddnet.git (push) 18:13 <+bridge_> fish https://github.com/12944qwerty/ddnet.git (fetch) 18:13 <+bridge_> fish https://github.com/12944qwerty/ddnet.git (push) 18:13 <+bridge_> origin git@github.com:AssassinTee/ddnet.git (fetch) 18:13 <+bridge_> origin git@github.com:AssassinTee/ddnet.git (push) 18:13 <+bridge_> upstream git@github.com:ddnet/ddnet.git (fetch) 18:13 <+bridge_> upstream git@github.com:ddnet/ddnet.git (push) 18:13 <+bridge_> (base) 18:13 <+bridge_> 18:13 <+bridge_> $ git push fish tuneoverlay 18:13 <+bridge_> error: src refspec tuneoverlay does not match any 18:13 <+bridge_> error: failed to push some refs to 'https://github.com/12944qwerty/ddnet.git' 18:13 <+bridge_> ``` 18:13 <+bridge_> gh pr checkout 18:13 <+bridge_> use the `git@` url 18:13 <+bridge_> I remember with the askll branch I did it like this successfully 18:14 <+bridge_> hmmm 18:14 <+bridge_> I guess try again? ^^ 18:14 <+bridge_> same error with the git@ url 18:14 <+bridge_> wait 18:15 <+bridge_> what's your local branch called? 18:15 <+bridge_> do you have any? 18:15 <+bridge_> if not, try `git push fish HEAD:tuneoverlay` 18:15 <+bridge_> (pushes the currently checked out commit) 18:16 <+bridge_> this worked 18:16 <+bridge_> oO thank you 18:16 <+bridge_> what's your local branch called? 18:16 <+bridge_> it's called fish/tune-overlay2 18:16 <+bridge_> ah yea 18:16 <+bridge_> `git push ` assumes that `` has the same name locally as remotely 18:17 <+bridge_> otherwise you can use `git push :` 18:17 <+bridge_> woa, for askll back then this had to be pure luck 18:17 <+bridge_> `HEAD` is the currently checked out git commit 18:19 <+bridge_> Hope this is the correct way to do it :justatest: 18:25 <+bridge_> <12944qwerty> back to draft? 18:26 <+bridge_> yes gimme a sec 18:26 <+bridge_> Vulkan 1 - 255 18:26 <+bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1481704941931335712/screenshot_2026-03-12_18-26-04.png?ex=69b448c2&is=69b2f742&hm=f025759876ff5d2c203137cd9664d8549e7b2da21392bf2f4a70f5a3cb9b6a4f& 18:27 <+bridge_> ogl1 Number 1 - 255 18:27 <+bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1481704941931335712/screenshot_2026-03-12_18-26-04.png?ex=69b448c2&is=69b2f742&hm=f025759876ff5d2c203137cd9664d8549e7b2da21392bf2f4a70f5a3cb9b6a4f& 18:35 <+bridge_> I jsut trolled myself with vulkan xD forgot to update the sprite in the buildfolder 18:35 <+bridge_> vulkan 1 - 255 18:35 <+bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1481707199221727535/screenshot_2026-03-12_18-34-52.png?ex=69b44add&is=69b2f95d&hm=6b3230435c434bda17215c2d8dfd2e54390a09c8eacef8f333862373def17247& 18:35 <+bridge_> I guess vulkan is more vibrant, because I didn't color the tile in the original entities gray 18:36 <+bridge_> so vulkan is a bit blueshifted 18:36 <+bridge_> so ogl1 is a bit blueshifted 18:41 <+bridge_> idk what entities is opengl even using 🙁 18:48 <+bridge_> @12944qwerty I also found a bug, if you switch entities the tune tiles are not changed. Also you basically add the same entities twice for ogl1, I'll fix it 18:54 <+bridge_> <12944qwerty> that's waht i was complaining about lol 18:55 <+bridge_> <12944qwerty> you have to manually go in files and change the tune tiles sheet when you switch entities 18:55 <+bridge_> hey guys just here to ask again if it's on usage or hardcoded tune index :D 18:55 <+bridge_> Hellou :3 18:55 <+bridge_> <12944qwerty> usage, but unsorted 18:55 <+bridge_> unsorted? 18:56 <+bridge_> <12944qwerty> as in colors aren't based on how often they show up in a map 18:56 <+bridge_> that's again not what i mean by usage... 18:56 <+bridge_> no, there is a bug, if you switched with your PR the tune tiles go invisible 18:57 <+bridge_> but only on ogl1, i fixed that 18:57 <+bridge_> i just mean the colors are allocated based on used tune in the map 18:57 <+bridge_> not on how many per index 18:57 <+bridge_> the colors are done by map index row by row 18:57 <+bridge_> cus otherwise u can force bad color contrast with arbitrary indices 18:57 <+bridge_> alright that does sound good 18:58 <+bridge_> does it get them in the same spiral rule 19:03 <+bridge_> <12944qwerty> you mean the golden ratio? 19:03 <+bridge_> <12944qwerty> you mean the golden ratio thing? yeah 19:04 <+bridge_> @12944qwerty I think I am finished 🙂 will undraft if pipeline succeeds 19:04 <+bridge_> Works now. You could add a progress bar for loading instead of logging the progress in bytes in the console. ^^ 19:04 <+bridge_> 19:04 <+bridge_> Sound doesn't work if you start from opening a link until the user first clicks on the canvas. You'd have to add a launch button so the client is started only after user interaction if you want sound to work immediately. 19:05 <+bridge_> you can probably still do this, however current behavior is that everything has the same color 19:06 <+bridge_> hmm 19:06 <+bridge_> can you explain how you would do this? 19:06 <+bridge_> just a lot of usages? 19:07 <+bridge_> cus after that point i think its fine, you're just trying to disambiguate close ones usually 19:07 <+bridge_> i guess you could do something weird where they're all assigned in some order and then they're used later (in further rows) in bad orders 19:08 <+bridge_> like putting usage 1 with usage 12 nearby or something 19:08 <+bridge_> i just assume in normal maps this would never happen 19:08 <+bridge_> good find. i honestly thought the console print kinda looks cool 19:08 <+bridge_> but a loading bar makes more sense ig xd 19:10 <+bridge_> <12944qwerty> that's a lot of force pushes 19:10 <+bridge_> yeah exactly, HSL has the unfortunate effect that it has 50 shades of green 19:10 <+bridge_> I squashed everything to 1 commit 🙈 19:11 <+bridge_> if robyt can do 2800 LOC in 1 commit, I can do < 100 in one commit togheter with you, right? :justatest: 19:12 <+bridge_> I still like the PR, it's so colorful 19:12 <+bridge_> :3 19:12 <+bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1481716537386733772/screenshot_2026-03-12_19-12-07.png?ex=69b4538f&is=69b3020f&hm=53c2d8d17797d78ce5a029482022dbe33aa0b9d689888cc39d86cb732ae4399c& 19:14 <+bridge_> you are still appearing as co-author btw even on github, you can add people to a commit 19:16 <+bridge_> <12944qwerty> yeah ik 19:22 <+bridge_> <12944qwerty> up next for me is bucket fill brush xd 19:22 <+bridge_> <12944qwerty> gonna be pain 19:41 <+bridge_> i just pulled an unbindall on myself testing the wasm client for sound noooooooooooooooooooo 19:41 <+bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1481723866320605234/image.png?ex=69b45a62&is=69b308e2&hm=e2acce6d55fc131817c6fe3956ad00d473cc9acd15d6fa34699d2969e3317ca3& 19:43 <+bridge_> lmao 19:43 <+bridge_> :OMEGALUL: 19:44 <+bridge_> it has unbindall hardcoded so you cant escape the demo viewer... 19:44 <+bridge_> except a few binds like zooming etc. 19:45 <+bridge_> ATP just strip away everything and make it standalone :ong: 19:45 <+bridge_> too much work 19:45 <+bridge_> ask Ryo for his oracle 19:45 <+bridge_> 2 hour adventure 19:45 <+bridge_> lmao, thats not even what i meant. i mean i still have to update it when ddnet updates its visuals 19:46 <+bridge_> i dont want that many changes. i dont like merge conflicts 19:56 <+bridge_> If you didn't close the client yet, you can open the console using the button in the main menu and use `cl_save_settings 0` 19:58 <+bridge_> Yeah, I was also trying to work towards this for a reworked demo/map web view. The old version is based on removing a bunch of stuff and effectively copying the editor and then changing it into a map viewer. https://github.com/Jupeyy/ddnet/tree/web_preview 20:00 <+bridge_> oh that was my second thought if patigas map viewer hadn't worked so well 20:03 <+bridge_> I almost got the server browser to work with the Emscripten Fetch API too, but somehow I get stack overflows when actually doing a request 20:21 <+bridge_> > https://stackoverflow.com/questions/57235019/why-does-my-javascript-audio-not-work-after-i-refresh-a-page 20:21 <+bridge_> > The solution: make the user interact. Unfortunately, there is no true workaround for letting the audio play before the user has interacted. Forcing the user to interact in some way before the audio starts, is the only way to get the audio to work 20:21 <+bridge_> uh okay i guess im just gonna make the demo paused after reloading 20:22 <+bridge_> uh okay i guess im just gonna make the demo paused after loading directly into the demo 20:25 <+bridge_> Yeah, it's a browser feature. You need a user interaction in the callstack or you can't play sounds. 20:28 <+bridge_> hmm but i have heard background music on some sites without any interaction though 20:28 <+bridge_> maybe im remembering wrongly 20:33 <+bridge_> YouTube can autoplay with sound immediately 20:34 <+bridge_> ogl1 rendering is actually in the mud ... 20:37 <+bridge_> I guess I could enhance opengl 1 if I would implement quad grouping for it, because it wouldn't need to call EnvelopeEval that often 20:38 <+bridge_> Wait a second, this would actually make a lot of sense 20:42 <+bridge_> man my pc is so slow it takes 4 minutes to just recompile to wasm with a 1 line change in a file that doesn't influence any others 20:52 <+bridge_> For me only the linking takes a while. It's also the only step that doesn't work directly on Windows because of some cmake escaping issues, but it works when manually fixing the command. 21:46 <+bridge_> im so impatient 21:46 <+bridge_> why is my workflow so slowww 21:48 <+bridge_> can i somehow cache the data from https://github.com/Teero888/KoGmaps ? it pulls ~500mb every single time it does the workflow which takes some time. 21:49 <+bridge_> ok this is not normal, its still pulling 21:59 <+bridge_> https://teero888.github.io/solo_progress/?length=L&status=Finished&demo=QF-Competition_342.860_Teero.demo 21:59 <+bridge_> ok it should work.... 21:59 <+bridge_> haven't tested much tho something still seems wrong 21:59 <+bridge_> https://teero888.github.io/solo_progress/?demo=QF-Competition_342.860_Teero.demo 21:59 <+bridge_> ok it should work.... 22:00 <+bridge_> also why do some race demos start exactly when you start racing and some start way before? 22:01 <+bridge_> looks clean 22:01 <+bridge_> a bit long load time, other than that i wouldnt even been able to tell its a demo 22:04 <+bridge_> Caching doesn't seem to be working/enabled 22:36 <+bridge_> btw do you think i could make it work with embeds? 22:37 <+bridge_> twitch embeds also have their own player right? maybe it can work 22:41 <+bridge_> <12944qwerty> as long as the videos get cached i think so 22:41 <+bridge_> ok got it to work. although im no webdev i have no idea what im doing 22:41 <+bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1481769174954148021/image.png?ex=69b48495&is=69b33315&hm=84397310ea3d0932a4e7953da7c492ddde376543c71b05ff718bde6710952ca8& 22:43 <+bridge_> Fails to load in Firefox 22:43 <+bridge_> ``` 22:43 <+bridge_> Failed to load ‘’. A ServiceWorker intercepted the request and encountered an unexpected error. coi-serviceworker.js:11:15 22:43 <+bridge_> Uncaught (in promise) TypeError: Error in input stream 22:43 <+bridge_> ``` 22:43 <+bridge_> Then after reloading: 22:43 <+bridge_> ``` 22:43 <+bridge_> Failed to load ‘https://teero888.github.io/solo_progress/demo-viewer/DDNet.js’. A ServiceWorker intercepted the request and encountered an unexpected error. 22:43 <+bridge_> ``` 22:44 <+bridge_> works for me... in firefox 22:44 <+bridge_> oh man 22:45 <+bridge_> <12944qwerty> not working on firefox for me too 22:45 <+bridge_> Also somewhat broken in Edge 22:45 <+bridge_> ok i managed to reproduce 22:45 <+bridge_> Demo loads but the page immediately reloads when you click play 22:48 <+bridge_> ok i have no idea ima just ask ai 23:01 <+bridge_> idk it works for me now 23:02 <+bridge_> can you try again? 23:02 <+bridge_> working for me now 23:07 <+bridge_> ```Uncaught (in promise) DataCloneError: Failed to execute 'postMessage' on 'Worker': SharedArrayBuffer transfer requires self.crossOriginIsolated. 23:07 <+bridge_> at DDNet.js:1:77477 23:07 <+bridge_> at new Promise () 23:07 <+bridge_> at loadWasmModuleToWorker (DDNet.js:1:76153) 23:07 <+bridge_> at Array.map () 23:07 <+bridge_> at Object.loadWasmModuleToAllWorkers (DDNet.js:1:77660) 23:07 <+bridge_> at DDNet.js:1:75434 23:07 <+bridge_> at callRuntimeCallbacks (DDNet.js:1:72941) 23:07 <+bridge_> at preRun (DDNet.js:1:69426) 23:07 <+bridge_> at run (DDNet.js:1:364996) 23:07 <+bridge_> at removeRunDependency (DDNet.js:1:73271)``` 23:07 <+bridge_> this is what I am getting 23:07 <+bridge_> stuck on downloading data 23:12 <+bridge_> okay try again xd 23:12 <+bridge_> make sure to clear your cache 23:13 <+bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1481777169167552672/iu_.png?ex=69b48c07&is=69b33a87&hm=6097e61c0da1a1ffbfd540a08fbc7f04d9733810e197903ab0532970d9076524& 23:15 <+bridge_> Works for me 23:22 <+bridge_> okay it works on firefox but not on chromium 23:29 <+bridge_> ok it works on chromium now. at least for me 23:30 <+bridge_> if you guys find anything else don't hold back