00:12 < bridge> @robyt3: where do you live ? 02:22 < bridge> ChillerDragon: i need raw text, no translation. did person send it to you like this with no additional infotmation? 02:28 < ws-client> @zhn 1st april is over wtfs 02:28 < ws-client> https://zillyhuhn.com/cs/.1744849686.png 02:28 < ws-client> i keep getting spammed this server 02:29 < ws-client> @zhn the context was he kick voted someone with reason "natural" in cyrillic 02:29 < ws-client> APRILS FIRSTT I SOVER 02:29 < ws-client> since 17 fucking days 02:30 < ws-client> stop avertise fake zhn to me! 02:54 < bridge> xd 02:55 < bridge> oh flatcity alive 02:55 < bridge> nah natural means you are straight in russian 02:55 < bridge> i didn't hear about any other meanings 02:56 < bridge> me mood 02:56 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1362230296631709816/image.png?ex=6801a353&is=680051d3&hm=e3fe622a86f114349c6830b602424b30634f309cb0882b2de4399dd12d5b8819& 02:58 < bridge> Show the regex 02:58 < bridge> Ai never failed me with regex 02:58 < bridge> yeah same 02:59 < bridge> ```cpp 02:59 < bridge> std::regex ipv4Pattern(R"(^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(?::\d+)?$)"); 02:59 < bridge> ``` 02:59 < bridge> ```cpp 02:59 < bridge> std::regex logPattern(R"(^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} I server: id=(\d+) \(([\w-]+)\) addr=([^ ]+) name='([^']*)' kog_id=(\d+) client=(\d+) secure=(\w+) flags=(\d+) dnsbl=(\w+)(?:\s+key=([^ ]+)(?:\s+\([^)]+\))?)?$)"); 02:59 < bridge> ``` 02:59 < bridge> 02:59 < bridge> ```cpp 02:59 < bridge> std::regex Regex(R"(^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} I server: id=(\d+) \(([\w-]+)\) addr=((?:\d{1,3}\.){3}\d{1,3}(?::\d+)?) name='([^']*)' kog_id=(\d+) client=(\d+) secure=(\w+) flags=(\d+) dnsbl=(\w+)(?:\s+key=([^ ]+)(?:\s+\([^)]+\))?)?$)"); std::smatch match; 02:59 < bridge> ``` 02:59 < bridge> ```cpp 02:59 < bridge> std::regex ipv4Pattern(R"(^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(?::\d+)?$)"); 02:59 < bridge> ``` 02:59 < bridge> ```cpp 02:59 < bridge> std::regex logPattern(R"(^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} I server: id=(\d+) \(([\w-]+)\) addr=([^ ]+) name='([^']*)' kog_id=(\d+) client=(\d+) secure=(\w+) flags=(\d+) dnsbl=(\w+)(?:\s+key=([^ ]+)(?:\s+\([^)]+\))?)?$)"); 02:59 < bridge> ``` 02:59 < bridge> 02:59 < bridge> ```cpp 02:59 < bridge> std::regex Regex(R"(^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} I server: id=(\d+) \(([\w-]+)\) addr=((?:\d{1,3}\.){3}\d{1,3}(?::\d+)?) name='([^']*)' kog_id=(\d+) client=(\d+) secure=(\w+) flags=(\d+) dnsbl=(\w+)(?:\s+key=([^ ]+)(?:\s+\([^)]+\))?)?$)"); 03:00 < bridge> ``` 03:00 < bridge> why u need such a regex..... 03:00 < bridge> mod client for KoG 03:00 < bridge> im 100% you could make it with no regex xd 03:01 < bridge> 100% sure* 03:01 < bridge> well for some reason ip and name was on top each other and i got 03:01 < bridge> playerIP = 1.1.1.1StormA 03:01 < bridge> i'm parsing rcon console in real time 03:01 < bridge> that's the fastest way 03:01 < bridge> @gerdoe learn rus then u are missing the latest slang 03:01 < bridge> chillerdragon on discord 03:01 < bridge> wtf chillerdragon 03:01 < bridge> dirsocrd? 03:01 < bridge> hacked? 03:01 < bridge> keke 03:01 < bridge> eventually ill wake up as 40 years old fart with no slang in my head 03:02 < bridge> i believe so 03:02 < bridge> is scanf so outdated or what xd 03:03 < bridge> they even brought it in std namespace 03:03 < bridge> Doesn't look that bad if you split it in parts 03:03 < bridge> And not ask all at once 03:03 < bridge> so the issue was 03:03 < bridge> ```cpp 03:03 < bridge> std::string extractedIP = extractIP(match[3].str()); 03:03 < bridge> if (!extractedIP.empty()) { 03:03 < bridge> memset(Result.addr, 0, sizeof(Result.addr)); // only filling this with nulls helped 03:03 < bridge> strncpy(Result.addr, extractedIP.c_str(), sizeof(Result.addr) - 1); 03:03 < bridge> } 03:03 < bridge> ``` 03:03 < bridge> what's scanf? 03:03 < bridge> looks fat af ngl 03:04 < bridge> gg 03:04 < bridge> https://en.cppreference.com/w/cpp/io/c/fscanf 03:04 < bridge> scanf_s 03:04 < bridge> best 03:05 < bridge> https://en.cppreference.com/w/c/io/fscanf 03:06 < bridge> i mean 03:06 < bridge> looks pretty 03:07 < bridge> just don't need to forget when i need some fast input 03:07 < bridge> thanks anyways 03:13 < bridge> @gerdoe why no sleep tho? :o 03:40 < bridge> Can someone take a look at #10077? I'm not sure if it's a valid issue. If anyone else feels the same way, I could start looking into the code. 03:40 < bridge> https://github.com/ddnet/ddnet/issues/10077 03:45 < bridge> HUH?? 03:45 < bridge> #10077 03:45 < bridge> https://github.com/ddnet/ddnet/issues/10077 03:45 < bridge> ok that's cool 04:34 < bridge> up key without selection should take you to the bottom πŸ€” 04:43 < bridge> yeah, but right now the up and down keys don’t have a wrap-around feature in the list. (though I'd actually love to see that) 07:43 < bridge> <0xdeen> Thanks @fokkonaut ^ 09:05 < bridge> fokko ❀️ 09:05 < bridge> Good morning everyone 09:08 < bridge> is there a command to close the console? I am working on a better benchmark script 09:10 < bridge> hmm should be the same that opens it πŸ€” 09:11 < bridge> `toggle_open_console` 11:30 < bridge> ^ this is probably the most text I have ever written into a PR :kek: 11:46 < bridge> More text than pr source change xD 11:48 < bridge> Repository language: English 11:56 < bridge> Shameless Kingsleap promotion πŸ‘€, I like. 11:58 < bridge> xd 11:58 < bridge> when the fps of your map are so bad you improve rendering instead :justatest: 11:58 < bridge> If you really want to improve quad rendering performance you'd need to do that in a modern graphics backend 11:59 < bridge> You could test the map with patigas tool, it should be better with lots of quads 11:59 < bridge> Like _much_ better 11:59 < bridge> I dunno how well lot of animations scale tho, since GPUs are not good at that I guess 12:00 < bridge> this was just cpu and mostly tilesets so far 12:06 < bridge> this is fire 12:06 < bridge> @patiga btw what broke that I cannot zoom out in twgpu anymore xd 12:07 < bridge> It used to work 12:08 < bridge> :justatest: 12:08 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1362369066441904198/Screenshot_20250417-120756.png?ex=68022491&is=6800d311&hm=f32257f15297e78e7b25dbb12319e90dd8a12aee1daa3922d0e7e003ec507a6a& 12:10 < bridge> Japanese 12:17 < bridge> 51 tabs :justatest: 12:19 < bridge> :Pepega: 12:20 < bridge> why did u just send a selfie 12:20 < bridge> My tabs are special okay 12:20 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1362372178909204581/Screenshot_20250417-122016.png?ex=68022777&is=6800d5f7&hm=550001aac5f9209cf4a9d864e04f28ddaa26dd8f66aa797e9ab6b4aae335bd8b& 12:21 < bridge> bro closed 3 tabs 12:26 < bridge> @essigautomat i get 3k fps on ddnet-rs, compared to 800fps on ddnet, on that map. 12:26 < bridge> 12:26 < bridge> More than ddnet or twgpu. 12:26 < bridge> 12:26 < bridge> So i am pretty sure it's just about finding the anim points which is probably lienar in ddnet, but quick search in ddnet-rs 12:26 < bridge> 12:26 < bridge> Relevant change: 12:26 < bridge> https://github.com/ddnet/ddnet-rs/blob/057a9d5d8843567117d5ed2201591208433d33be/game/client-render-base/src/map/render_tools.rs#L244-L248 12:26 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1362373628443754536/image.png?ex=680228d0&is=6800d750&hm=3463341652b8216857c254bfcc48f2e6aadb8f00c56cb66e705b3a2059951d80& 12:26 < bridge> So if you want more fps, do that xd 12:35 < bridge> @jupeyy_keks is itpossible for ddnet-rs clients to connect to ddnet servers? or is it a whole diffrent protocol 12:35 < bridge> @jupeyy_keks is itpossible for ddnet-rs clients to connect to ddnet servers? or is it a whole different protocol 12:36 < bridge> You could defs write a bridge, but yes it's a completely different protocol 12:36 < bridge> πŸ˜‚ phone formatting 12:37 < bridge> uhh ❀️ 13:17 < bridge> btw the GH app shows it properly 13:17 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1362386428541009970/Screenshot_20250417-131648.png?ex=680234bc&is=6800e33c&hm=533e41d52376fbb65256aa6f2879215746dedd8558bb06b8fc7f7f5c78a999d3& 13:17 < bridge> @blaiszephyr 13:18 < bridge> Gh appπŸ˜† 13:18 < bridge> Nerd 13:18 < bridge> yes, deal with it 😎 13:34 < bridge> I can't tell much from this graph, maybe use two boxplots instead 13:45 < bridge> maybe wayland happened? ^^ 13:45 < bridge> I just fixed that yesterday for me ^^ 13:53 < bridge> (pushed @jupeyy_keks ) 13:56 < bridge> :deen_star: works 13:56 < bridge> graph is just frametime over index 13:56 < bridge> Not very readable though because the graphs overlap to much 13:57 < bridge> Not very readable though because the graphs overlap so much 13:58 < bridge> hmm yes, I didn't put too much time into matplotlib. But you see the blue above ant not below, maybe a boxplot would be better 13:58 < bridge> Not really, I also see the blue below 14:00 < bridge> Ok, I'll add a boxplot 14:11 < bridge> The outliers make them extremly unreadable, too :/ 14:12 < bridge> Maybe plot a separate graph where you limit the y axis min and max to the same values to exclude most outliers 14:20 < bridge> youre right, i get 200 fps, and 500 when i change ddnet's for loop to binary search 14:20 < bridge> ill cook up a pr 14:21 < bridge> spam incoming: 14:21 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1362402680458186973/boxplot_dm1_vulkan_nooutliers.png?ex=680243df&is=6800f25f&hm=e0d756bf6d1a81d76b2eaed555359316fae18aef3f788fa68857ea0e980022e6& 14:22 < bridge> huh is it just white for you, too? 14:23 < bridge> With outliers 14:24 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1362403216557473792/boxplot_dm1_vulkan1.png?ex=6802445f&is=6800f2df&hm=de3678bf64df0474bc2e7db32cff0b9eb0e15480150bd40dff7c81c3a16931d8& 14:24 < bridge> wihtout outliers 14:24 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1362403262824845445/boxplot_dm1_vulkan_nooutliers1.png?ex=6802446a&is=6800f2ea&hm=0bb83fa36dd1b9804ff7110fd1d75e0c0064902b2b9faed9fae7a89c11b65282& 14:24 < bridge> With outliers 14:24 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1362403365413453924/boxplot_kingsleap_vulkan1.png?ex=68024482&is=6800f302&hm=5616be282544627ee8645beb929b79dd76734cc48f2b1ce03cff220be6fa2473& 14:24 < bridge> Without otliers 14:24 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1362403449198608565/boxplot_kingsleap_vulkan_nooutliers1.png?ex=68024496&is=6800f316&hm=2121443792b1d6d0337f80820e71004f34042e139b75a9333065265dd8c3b2e1& 14:25 < bridge> Without outliers 14:25 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1362403449198608565/boxplot_kingsleap_vulkan_nooutliers1.png?ex=68024496&is=6800f316&hm=2121443792b1d6d0337f80820e71004f34042e139b75a9333065265dd8c3b2e1& 14:25 < bridge> graphs :poggers2: 14:25 < bridge> In the lastone you see it the best. Overall it appears, that the PR is more stable overall 14:26 < bridge> also the data are all frames collected over 60 seconds (a lot) 14:29 < bridge> outliers were removed with IQR method 14:32 < bridge> bloxplots 🀣🀣 14:33 < bridge> my teacher betted with me that i will never see a boxplot in my life again 14:33 < bridge> made my day thx 14:33 < bridge> what's wrong with them? Also you lost that bet. 14:33 < bridge> no, the other way around 14:33 < bridge> wtf teacher :nouis: 14:34 < bridge> Well, I work in science, I see stats all day on posters 14:36 < bridge> @robyt3 before you miss them ^ 14:38 < bridge> @kebscs I am willing to help you collecting stats if you want or need it πŸ˜„ 14:43 < bridge> you can after i submit 14:43 < bridge> this is very noticeable difference though 14:56 < bridge> `74 rows in set (28.150 sec)` queries that are not indexed are getting veery expensive πŸ˜„ 15:08 < bridge> Gotta admit, chatgpt search function can be really useful. It found the fix for https://github.com/rust-windowing/winit/issues/3773#issuecomment-2812773359 15:08 < bridge> in some old sdl bug report. 15:08 < bridge> 15:08 < bridge> It didn't fix the bug or anything, but it did the research correctly and I'd have searched for very long time probably xD 15:11 < bridge> 10 out of 11 times I ask it something compiler related it just makes up stuff -.- 15:11 < bridge> Such a good pick for a viz method. I don't see boxplots often enough 15:11 < bridge> well in this case it used the _real_ internet 15:11 < bridge> not like the internal knowledge 15:11 < bridge> it basically opened many websites for me and read them 15:12 < bridge> If there was a way to stop these things from hallucunating they would be like a billion percent more useful. Phrases like "reasearch for me" help it do real research and summarize that 15:12 < bridge> Biggest issue with hallucinations is when you are learning something. When you do not have the knowledge to begin with, then you can not be sure it didn't hallucinate the answer 15:32 < bridge> @essigautomat 15:38 < bridge> @kebscs thank you, analysis has to wait, maybe in the evening 16:46 < bridge> the optimization shows less outliers and more predictable frame rate πŸ‘€ 16:47 < bridge> and a slight improvement overall 16:47 < bridge> need to get the game to where we can render a bazillion quads easy 16:47 < bridge> and then make a 3D renderer in envelopes 16:47 < bridge> get a job at bethesda 16:47 < bridge> extract the engine 16:48 < bridge> I don't know all the envelope types but some of them should be easy to render on the GPU, right? 16:49 < bridge> we could in theory go very BRR 16:50 < bridge> yes, which is good, are you suprised? 16:50 < bridge> not surprised but just interpreting the boxplot 16:50 < bridge> it's a way better representation 16:51 < bridge> πŸ‘ 16:51 < bridge> Not only is it better, it's also better! 16:52 < bridge> in practice nearly everyone should be able to run this game at 120fps, even in extreme cases 16:53 < bridge> this statement confucius me 16:53 < bridge> Let's keep on making the cases more extreme and hit those performance targets 16:56 < bridge> Easy, I can make a snowmap with unlimited snow, because it's already generated 17:21 < bridge> If ppl are really into optimizations I hope someone could take a look at turrets.. 17:22 < bridge> I think the map journey man 2 or maybe 1 uses lots of those and lag as hell 17:22 < bridge> network lag or fps 17:22 < bridge> seems strange either way 17:23 < bridge> i believe you but i've also never seen it & so there's a chance you could just be picking up on the lack of prediction for those & doors & grabbers 17:26 < bridge> ``` 17:26 < bridge> Error: No space left on device : '/home/runner/runners/2.323.0/_diag/blocks/e145fdf2-cd93-42cf-b55a-4f2760c30543_2aa30017-41c8-566d-a06a-0cb2eb26260c.2' 17:26 < bridge> ``` 17:26 < bridge> github is out of space 17:26 < bridge> :lol: 17:26 < bridge> πŸ€” 17:26 < bridge> they did just come out with WoA runners 17:26 < bridge> maybe they just have particularly high demand rn 17:28 < bridge> apparently they only _guarantee_ 14gb of space 17:28 < bridge> since rust compiles to like at least 15gb that can get close ig 17:29 < bridge> yea 17:29 < bridge> i think if u were to try & read it'd say 256 or smth bcs that's the v disk max 17:29 < bridge> but real space isn't the same 17:33 < bridge> Oh yeah it could be network I forgot that 17:34 < bridge> Didn't actually play much DDNet these days;; 17:43 < bridge> MorningπŸ“ 17:57 < ws-client> 87.251.78.171:8301 is sending fake master server data for quite some time and its honestly annoying me 18:14 < bridge> @pioooooo ai says my impl is better than stl functions because of early exits, etc 18:14 < bridge> What do you think 18:15 < bridge> Also the function already has bounds checks 18:15 < bridge> ai says she's a cat girl and she loves me 18:15 < bridge> I'm sorry to tell u, but she's lying.. 18:16 < bridge> fred dont care 18:16 < bridge> It's ok. I'm gay anyway 18:16 < bridge> catboys however 18:16 < bridge> yeah 18:16 < bridge> Off-topic tho, I'm just oneshotting my line. Off me go. 18:17 < bridge> I think the algorithm is just the same as std, I doubt your AI 18:17 < bridge> On cppreference it's the same 18:17 < bridge> Also wdym bounds check here 18:18 < bridge> Like size lower than 2=return early 18:18 < bridge> size lower than 2 then it won't take no time :nouis: 18:19 < bridge> Yes but stl will probably check it 18:19 < bridge> And the function already has it 18:19 < bridge> I think it's already good enough 18:19 < bridge> And for stl would need to make begin and end public 18:19 < bridge> u know one of the points of using the STL is the potential that the impl gets faster later without u having to change anything 18:19 < bridge> Waste not your time trying to coax the envelope point access into something iterable 18:20 < bridge> Yeah I don't mean yours implementation is bad, I mean I would prefer stl for readability and also what Ewan said 18:21 < bridge> I do doubt if that interface is actually used tbh 18:21 < bridge> Will see when I get home 18:21 < bridge> I mean have multiple inheritance class 18:22 < bridge> Only 1 inherited 18:24 < bridge> Good to know so nobody rant about changing the interface XD 19:22 < bridge> @kebscs 19:22 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1362478294137831564/quad-optimization.png?ex=68028a4a&is=680138ca&hm=b67798cce5aadb0f85f2dee80150eac38d6eb60a2e6d063c7399c77d922efd6e& 19:23 < bridge> yeah ... I am jelous that this is not my PR 19:23 < bridge> im sure theres some other linear search you can replace with a binary one 19:24 < bridge> (theres always collision [gdpixeldevil](https://cdn.discordapp.com/emojis/1269961785100865606.webp?size=48&name=gdpixeldevil) ) 19:24 < bridge> I am sure you could at least do a newton search (which would degrade to a binary search) 19:24 < bridge> newton search? 19:24 < bridge> ah i see 19:25 < bridge> is that applicable here 19:27 < bridge> maybe TM 19:27 < bridge> also, I tested kebs PR against dm1 and see a 6% improvement 19:27 < bridge> yes, dm1 has animations, the clouds and the sun move 19:28 < bridge> but 6% holy shit 19:28 < bridge> bro that 1984 pc player is winning 19:29 < bridge> kombining our PRs and I'd expect about 10% more fps, that's really a lot 19:29 < bridge> (unconfirmed without benchmark tho) 19:30 < bridge> πŸ˜‚ 19:32 < bridge> I'll impl later with stl, you could check that too 19:32 < bridge> need more faster 19:32 < bridge> 100% faster ddnet 19:32 < bridge> ddnet rs reference? 19:33 < bridge> Blazingly fast 19:35 < bridge> the only blazing bit is my computer 19:54 < bridge> @kebscs PR claims 50%+ :justatest: 19:56 < bridge> Add more snow and it'll be even better 19:56 < bridge> πŸ‘ 20:30 < bridge> wakes up 20:30 < bridge> reads #developer 20:30 < bridge> sees map optimization chat 20:30 < bridge> omg 20:30 < bridge> has nothing to do with switches :twintri: 20:31 < bridge> str8 up gorping on it 20:31 < bridge> would you like to optimize switches or what do you want? 20:31 < bridge> isn't everyone obsessed with FPS or did I just play to much CS? 20:33 < bridge> I checked std::lower_bound and it's in O(log(N)) so I expect it to get even better :3 20:34 < bridge> xd 20:35 < bridge> well its just that some maps I want to make isn't possible because it hits some limit (snapshot? idk name) 20:35 < bridge> and so visuals and sounds stop working 20:35 < bridge> so is binary search, I am schtoopid 20:35 < bridge> its a great PR BTW I'm not saying thay 20:35 < bridge> its a great PR BTW I'm not saying that 20:36 < bridge> i get like 4.6k fps on ddnet so every time I see fps related things I go :greenthing: 20:37 < bridge> your problem is about network size, you might! get away with making switches like doors not send their state every snapshot, since we now have a prediction for this. But you'd still need to make this down and upwardscompatible 20:39 < bridge> and then you'd still hope that enough people upgrade their client so they can play your map properly 20:40 < bridge> my suggestion was to have some upgrade handshake 20:41 < bridge> so if the client can deal with less data, they can work that out 20:41 < bridge> otherwise it sends the same amount 20:41 < bridge> do we have protocol "levels" for different clients? 20:48 < bridge> You can check clients version and send different stuff to him 20:49 < bridge> For example lasers are sent differently to old clients, new clients handle new netobj 20:51 < bridge> so this would be the same thing as that πŸ˜› 20:52 < bridge> switches don't change until a switch is pressed, it seems at least from an outsiders perspective that it would be an easier change 20:54 < bridge> mfs will do anything except break 10 year old backwards compatibility 20:58 < bridge> glibc [car](https://cdn.discordapp.com/emojis/1077300733453553774.webp?size=48&name=car) 20:59 < bridge> By switches you mean switch state on, off? 20:59 < bridge> What's wrong exactly 21:03 < bridge> πŸ˜„ `lower_bound` is implemented as a binary search (and iirc the requirements on the standard basically force it to be) 21:07 < bridge> AFAIK switch state is sent every tick or something? I'm not sure exactly but it seems we can only send "updates" to the layer when needed 21:07 < bridge> timed off/on, off/on 21:07 < bridge> the client only needs to know the positions of switch entities at mapload, which I assume is already the case 21:08 < bridge> If that's real maybe it can be changed to netmsgs to only send when on/off state changed 21:09 < bridge> It's not a network issue then, snaps are delta compressed so it should effectively be only sending changes 21:09 < bridge> Maybe there is a max snap size before delta compression limit somewhere, I don't remember 21:09 < bridge> i have confirmed from a couple people that it was a snap limit 21:09 < bridge> i just don't know more technical details 21:10 < bridge> (I also wanted a facility to let snaps get chunked when needed, so that can happen) 21:10 < bridge> If you have a map that gets there I can document and create an issue for it 21:10 < bridge> there's a PR open, /showall 0 fixes it on some clients? 21:10 < bridge> yeah join volleyball teezone 21:10 < bridge> :greenthing: 21:10 < bridge> there's a PR CLOSED actually, /showall 0 fixes it on some clients? 21:11 < bridge> use hammer, gun, check all the doors to see if they render 21:25 < bridge> Don't think so 21:26 < bridge> It just renders less stuff, only what's on your screen, so less snaps 21:31 < bridge> so probably they meant some snap limit on client 21:33 < bridge> Idk how it works, tbh 21:33 < bridge> its kinda funny, if u shoot a bullet after the limit is reached you can see rendered objects disappear in a cascade effect 21:55 < bridge> #βœ‰-create-a-ticket 21:56 < bridge> old skin "dumon" 21:56 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1362517049796067449/DuMoH.png?ex=6802ae63&is=68015ce3&hm=782e1a1334c531522582ac4d323adb597f69c429771a4ed120101cb9345138d0& 21:56 < bridge> does anyone know this skin? XD 22:36 < bridge> bro wtf? 22:36 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1362527184979365948/image.png?ex=6802b7d3&is=68016653&hm=8776b281726bf12ec3f156050c7a89047101278c7089c88fb9b917d1b3cdfbfd& 22:36 < bridge> im so confused 22:39 < bridge> maybe wants argc, argv 22:40 < bridge> i tried 22:40 < bridge> i changed something somewhere completely else xd 22:40 < bridge> i think gdb is broken 22:53 < ws-client> meh clicking into the game detaches the player you are spectating 22:54 < ws-client> @teero777 asan 22:55 < ws-client> @kebscs go add a click delay pls for spectators when the game was inactive 22:57 < bridge> my click delay is abandonen by heinrich for like month now 22:58 < bridge> rust pros, is it possible to make such a function https://github.com/MilkeeyCat/meraki/blob/5889d39df74c876fbc836b25be8464a97390abb0/src/lowering/scopes.rs#L81-L90 but with a mutable reference? 23:01 < bridge> why do you need the lifetime on the fn arg? 23:01 < bridge> simply remove it 23:02 < bridge> or add `for <'a>` before T 23:03 < bridge> many such cases 23:03 < bridge> i tried to remove it for working `find` function, and it makes compiler spit out errors 23:03 < bridge> ``` 23:03 < bridge> error: lifetime may not live long enough 23:03 < bridge> --> src/lowering/scopes.rs:134:27 23:03 < bridge> | 23:03 < bridge> 134 | self.find(|scope| scope.variables.get(name)) 23:03 < bridge> | ------ ^^^^^^^^^^^^^^^^^^^^^^^^^ returning this value requires that `'1` must outlive `'2` 23:03 < bridge> | | | 23:03 < bridge> | | return type of closure is Option<&'2 scopes::Variable<'_>> 23:03 < bridge> | has type `&'1 scopes::Scope<'_>` 23:03 < bridge> ``` 23:03 < bridge> mh ok maybe it doesnt support annonymous lifetimes here 23:03 < bridge> 23:03 < bridge> try `for <'a>` before the `T:` 23:03 < bridge> in the `where` of generics 23:04 < bridge> Oh so O has a lifetime or what? 23:05 < bridge> Too hard without the seeing all source code xd 23:05 < bridge> https://github.com/MilkeeyCat/meraki/blob/5889d39df74c876fbc836b25be8464a97390abb0/src/lowering/scopes.rs#L122-L124 here's how it's used 23:06 < bridge> ah ok, you want to return a ref there 23:06 < bridge> ye 23:09 < bridge> @milkeeycat https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=b848a87f084b2e211660ebbaf175950a 23:09 < bridge> 23:09 < bridge> is that what you want kinda? 23:11 < bridge> chiller yea ik ik 23:11 < bridge> im solving other issues rn 23:11 < bridge> i have some leaks in vulkan.... 23:12 < bridge> Don't forget to turn on validation layers 23:13 < bridge> hm, this code returns a copy, but I want to get a mutable reference 23:14 < bridge> ill write a small example tomorrow, it's time to sleep now 23:14 < bridge> but how even mut? 23:14 < bridge> your function self sig is immutable 23:15 < bridge> `find` function works 23:15 < bridge> ```rs 23:15 < bridge> fn main() { 23:15 < bridge> fn test(a: &mut A, f: impl Fn(&'_ mut A) -> Option<&'_ mut B>) -> Option<&'_ mut B> 23:15 < bridge> { 23:15 < bridge> f(a) 23:15 < bridge> } 23:15 < bridge> let mut b = vec![0]; 23:15 < bridge> test(&mut b, |c| c.get_mut(0)); 23:15 < bridge> } 23:15 < bridge> ``` 23:17 < bridge> You can actually even remove all lifetimes 23:18 < bridge> Not needed at all 23:18 < bridge> Clippy should also suggest stuff like this normally 23:19 < bridge> But I remember with actually mutable references (which you current don't have?), you could have trouble indeed with moving it into another closure 23:19 < bridge> I think that generally does not work 23:20 < bridge> Iirc it didn't compile without lifetimes 23:20 < bridge> The only thing I don't understand is that you talk about mut refs 23:20 < bridge> You see `find` function? 23:21 < bridge> You own function is called find 23:21 < bridge> And you call `cloned` there on a iter 23:21 < bridge> And O has a lifetime 23:21 < bridge> while the cloned var cannot be returned 23:21 < bridge> I dunno, my brain does not even understand what you try here tbh 23:22 < bridge> Does the code you send give that error? 23:22 < bridge> Can I clone repo and get err 23:23 < bridge> Ill explain tomorrow xd 23:23 < bridge> I have your code 23:23 < bridge> explain 23:24 < bridge> You have lots of clippy warnings btw in your project 23:24 < bridge> Ye, im in the middle of rewriting 23:24 < bridge> So get_variable should be mutable? 23:25 < bridge> I want to have `get_variable` and `get_variable_mut` 23:25 < bridge> `get_variable` already works 23:27 < bridge> Yeah I see 23:27 < bridge> I think that's not possible actually 23:27 < bridge> :pepeW: 23:28 < bridge> Is runtime perf important? 23:29 < bridge> If it works it's enough 23:36 < bridge> is it allowed to add a new find function? xd 23:37 < bridge> but ig you can then also simply come up with smth 23:45 < bridge> @jupeyy_keks I answered most of your concerns regarding my PR, are there still open conversations? I removed the MACRO, but a full new structure would be another PR 23:47 < bridge> > but a full new structure would be another PR 23:47 < bridge> Yeah no worries about that 23:47 < bridge> Was more related to closing the issue 23:47 < bridge> You also don't have to do it 23:49 < bridge> hmm, I could fill a 1D vector CRenderLayer Objects instead, I don't know if this structure would improve fps. We could certainly do a much easier foreground/background split and just set render to false for the conditions 23:50 < bridge> you'd still need to layercount 😠 23:54 < bridge> I don't want to demotivate you but I don't see the fps potential you see. 23:54 < bridge> Even if you could still make it 2% faster, that will not fix fps issues on some maps 23:55 < bridge> I don't see much to do now as well 23:55 < bridge> Better concentrate on readability over anything else 23:55 < bridge> I don't see much to improve now as well 23:55 < bridge> I guess cleaner code is still a win 23:56 < bridge> My idea was that you have kinda _RenderLayers_ and these RenderLayers store a group & layer index. 23:56 < bridge> So you never need to skip layers with the count thing 23:56 < bridge> the code was in a really bad shape, I removed overall like 300 lines without changing anything functionally 23:56 < bridge> The count thing is kinda more a workaround to remember the real layer index 23:56 < bridge> @jupeyy_keks since you pretty much have the most optimal tw renderer, is there any other low hanging fruit? 23:57 < bridge> It's only good if you play with _normal_ zoom 23:57 < bridge> e.g. twgpu is much better at very far zoom levels 23:57 < bridge> now it's actually remembered 23:57 < bridge> But it's much more GPU intensive 23:57 < bridge> I can imagine the envelope point lookup kebs improved becoming O(1) with some preprocessing 23:57 < bridge> But anyway, I'd focus on stuff like snapshot linear search first 23:57 < bridge> stuff that really is bad in a worst case 23:58 < bridge> Did he improve it better than binary search? 23:58 < bridge> But it defs is better yeah 23:58 < bridge> Yeah this is on my forever growing todo list 23:58 < bridge> No he went to binary search that's O(logn) 23:59 < bridge> If we resample all the curves such that they all have the same amount of points at the same times, we can have it O(1)