00:00 < bridge> the design? 00:00 < bridge> adding a lot of boxes kinda covers a lot of screen 00:00 < bridge> I mean the panel part should be there ofc 00:00 < bridge> tho i really like this part of the chat 00:00 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1414369770115170364/image.png?ex=68bf51fe&is=68be007e&hm=3d25fb762e3541c644fdc434e6947de5ae65d79b2ff51cbb1da039245ff069e4& 00:00 < bridge> I agree, don't change that 00:01 < bridge> but top bar covers a lot of space and even if opacity could be lowered with some setting or something it would still bother me a bit 00:01 < bridge> I mean, he can always just push the panel container down, so it covers only as much space as there are messages 00:01 < bridge> or lower the minimum size 00:02 < bridge> but better idea: how about resizable panel? 00:33 < bridge> @kebscs i campaigned for tees with eyes in the middle always but was rejected 00:33 < bridge> ii snucxk it into nameplates tho 00:33 < bridge> hehehe 00:33 < bridge> now "fixed" :gigachad: 00:34 < bridge> NOOO 00:34 < bridge> i do not uynderstand glithces eyes in the middle behaviour being prefrable 00:34 < bridge> u want tees to have seizure? 00:34 < bridge> fine goto https://twinbop.lol/twinbop.html 00:34 < bridge> looks cursed in middle 00:35 < bridge> but everyone else should be left alone 00:35 < bridge> it doesnt x-x 00:35 < bridge> hello 00:35 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1414378526492065894/image.png?ex=68bf5a26&is=68be08a6&hm=2939128a037bcdb7127c680453396ac3f3e8a2ca93cc8d86a72376463680aa23& 00:35 < bridge> if the tee is facing right then it makes absolutely no sense when you are looking left 00:35 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1414378689675661402/image.png?ex=68bf5a4d&is=68be08cd&hm=1745ef03fbcfb52bc165980be340d40297105bd2e3e6f19e5acde461eaed9617& 00:35 < bridge> noo 00:36 < bridge> looks bad if skin has no mouth 00:36 < bridge> looks normal to me 00:36 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1414378889605546087/image.png?ex=68bf5a7d&is=68be08fd&hm=7e25875190562e2293c007d36980ec9eb5af5675dc9be36ffcd7a6eacfce5ffa& 00:36 < bridge> skinwalker tee 00:37 < bridge> @chillerdragon 90 open prs!! :hey: 00:37 < bridge> 10 more to 100!!! 00:37 < bridge> ur almost there!!! 00:37 < bridge> 5 today 00:37 < bridge> im done for a bit 00:40 < bridge> does it mean that routing stuff is going on 00:40 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1414379738100662272/image.png?ex=68bf5b47&is=68be09c7&hm=654a8aba32cc371513711f3bc00f35e73108b425d60d33649a226d0d5be7e73a& 00:40 < bridge> been having huge what i thought was packet loss 00:40 < bridge> but unstable ping sometimes pushing over margin could also do it 00:42 < bridge> i set 300 margin ages ago 00:42 < bridge> what is going on 00:42 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1414380385852194836/image.png?ex=68bf5be1&is=68be0a61&hm=1b49fd19323ecc9b1647c0df000842c10bd89759e4a9516d0c02a132a983c67a& 00:42 < bridge> then it just spikes like this then setlles back to 150 00:42 < bridge> != 300 00:57 < bridge> glad to see my domain being sent repeated times in the server 00:57 < bridge> yes ;D 00:57 < bridge> cool website 00:57 < bridge> yo solly 00:57 < bridge> solly from dihdih net 00:57 < bridge> is it possible to use domains instead of IPs on ddnet servers 00:58 < bridge> kinda like minecraft does 00:58 < bridge> imagine fng.twinbop.lol:8303 00:58 < bridge> yah 00:58 < bridge> u just cant register with them yet 00:58 < bridge> !!! 00:59 < bridge> ```cpp 00:59 < bridge> Start: 2025-09-07T23:55:58+0100 00:59 < bridge> HOST: sollyclunc Loss% Snt Last Avg Best Wrst StDev 00:59 < bridge> 1.|-- _gateway 1.0% 100 1.5 29.7 1.1 175.3 37.4 00:59 < bridge> 2.|-- ??? 100.0 100 0.0 0.0 0.0 0.0 0.0 00:59 < bridge> 3.|-- 62.6.204.101 98.0% 100 7.6 46.6 7.6 85.6 55.1 00:59 < bridge> 4.|-- 62.6.204.190 0.0% 100 54.7 49.1 4.7 390.8 56.1 00:59 < bridge> ``` 00:59 < bridge> it could be between my router and the wall socket thats fucked up 00:59 < bridge> ie the cable slipped brb 01:00 < bridge> https://media.discordapp.net/attachments/1083075203732607096/1414352262620254438/image.png?ex=68bf41b0&is=68bdf030&hm=071effafa562f3de31eb132840b1539cdb0f45c8a8935e993c0623de1a6cff22&=&format=webp&quality=lossless&width=263&height=350 01:00 < bridge> https://media.discordapp.net/attachments/1083075203732607096/1414352279053533205/image.png?ex=68bf41b4&is=68bdf034&hm=85aea2a793b2aaf29a6ed8357ae00cc758b9e075828f3dadc08bf6ab69611d4c&=&format=webp&quality=lossless&width=754&height=1006 01:00 < bridge> https://media.discordapp.net/attachments/1083075203732607096/1414352295206060125/image.png?ex=68bf41b8&is=68bdf038&hm=261908e183e317aab500665285d6475c9043c6d814c282f9360f98ef0a1d956f&=&format=webp&quality=lossless&width=263&height=350 01:00 < bridge> https://media.discordapp.net/attachments/1083075203732607096/1414352919121367072/image.png?ex=68bf424d&is=68bdf0cd&hm=4c1f876f7836240e61d2fe118b2561efdbb28a03dbe1a69627e1534ae1c66970&=&format=webp&quality=lossless @everyone 01:02 < bridge> i leave for 5 seconds 01:02 < bridge> god damn 01:04 < bridge> lmao it fucking was 01:04 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1414385750119677993/image.png?ex=68bf60e0&is=68be0f60&hm=710fc23f11dc8026c9e03057fdca8ea151235d031f01286f1c4fe9ac680ae5a9& 01:04 < bridge> thats crazy 01:05 < bridge> theres still a bit 04:17 < bridge> @fokkonaut i dm u, can u look? 08:31 < bridge> gumo 08:38 < bridge> beautiful, i integrated the mailbox with ahci 08:38 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1414500177431101460/image.png?ex=68bfcb72&is=68be79f2&hm=12767f661064acd673e4e8d3ad6556b71234cd8bdc06921e5c30324e6a4d97e3& 08:39 < bridge> i have a worker thread for each ahci controller port 08:39 < bridge> oh i have a typo xd 08:43 < bridge> better logs 08:43 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1414501424062140456/image.png?ex=68bfcc9b&is=68be7b1b&hm=28c882e34c0fcb7ce3e2d461bd3d7fb48eca78e4ef8e43d869560c4d81f446a5& 08:44 < bridge> year of the edos desktop 08:44 < bridge> im so proud of how clean the design ended up 08:44 < bridge> the mailbox i did is a killer feature 08:45 < bridge> ```rust 08:45 < bridge> fn port_worker_thread() -> ! { 08:45 < bridge> // init stuff.. 08:45 < bridge> loop { 08:45 < bridge> while let Some(req) = mailbox.pop_request() { 08:45 < bridge> let message = &*req.message.0; 08:45 < bridge> let caller = req.message.1; 08:45 < bridge> match message { 08:45 < bridge> Command::Read { lba, sectors } => { 08:45 < bridge> println!("Got read request, lba={lba}, sectors={sectors}"); 08:45 < bridge> let mut buffer = alloc::vec![0; (*sectors) as usize * 512]; 08:45 < bridge> let result = port.lock().read_sectors(*lba, &mut buffer, *sectors); 08:45 < bridge> 08:45 < bridge> match result { 08:45 < bridge> Ok(_) => caller.answer(AhciResponse::ReadResult { data: Ok(buffer) }), 08:45 < bridge> Err(e) => caller.answer(AhciResponse::ReadResult { data: Err(e) }), 08:45 < bridge> } 08:45 < bridge> } 08:45 < bridge> Command::Write { lba, data, sectors } => { 08:45 < bridge> println!( 08:45 < bridge> "Got write request, lba={lba}, sectors={sectors}, data_len={}", 08:45 < bridge> data.len() 08:45 < bridge> ); 08:45 < bridge> let result = port.lock().write_sectors(*lba, data, *sectors); 08:45 < bridge> caller.answer(AhciResponse::Result(result)); 08:45 < bridge> } 08:45 < bridge> Command::Flush => { 08:46 < bridge> println!("Got flush request"); 08:46 < bridge> let result = port.lock().flush_cache(); 08:46 < bridge> caller.answer(AhciResponse::Result(result)); 08:46 < bridge> } 08:46 < bridge> i have a ahci thread that routes requests to ports 08:46 < bridge> ``` 08:46 < bridge> AhciRequest::DeviceRequest { device_id, command } => { 08:46 < bridge> if let Some(mb) = device_mailboxes.get(*device_id) { 08:46 < bridge> mb.send((command.clone(), req)); 08:46 < bridge> } 08:46 < bridge> } 08:46 < bridge> ``` 08:46 < bridge> ```rust 08:46 < bridge> AhciRequest::DeviceRequest { device_id, command } => { 08:46 < bridge> if let Some(mb) = device_mailboxes.get(*device_id) { 08:46 < bridge> mb.send((command.clone(), req)); 08:46 < bridge> } 08:46 < bridge> } 08:46 < bridge> ``` 08:46 < bridge> and when i get a interrupt i wake up the relevant port worker thread 08:47 < bridge> do u have a roadmap 08:47 < bridge> next up is probs adding fat32 again 08:47 < bridge> in my previous edos i had a pile of bugs cuz bad thread comms 08:47 < bridge> i think im better now 08:48 < bridge> but now i go to gym 08:49 < bridge> do u have public recreation centers near you 09:00 < bridge> what do u mean 09:00 < bridge> gym is in a 2 min walk 09:08 < bridge> ChillerDragon why are you contributing to the people currently ruining the entire race gamemode :cat_hmm: 09:08 < bridge> ChillerDragon why are you contributing to the people currently ruining the entire (DD)race/Gores gamemode :cat_hmm: 09:09 < bridge> You ask this to a guy who made chillerbot 09:11 < bridge> never been able to understand what chillerbot is exactly 09:31 < bridge> Me too but it has bot in it 09:31 < bridge> :think_bot: 09:54 < bridge> xd sure chillerbot.png is lyfe 10:24 < bridge> i had the sudden realization 10:25 < bridge> i should write some linux kernel drivers 10:25 < bridge> that willgive me more insight into kernel dev 10:28 < bridge> different clients chiller made 10:35 < ws-client> **** @melon oh shit i thought nobody would notice. Why are you browsiong bot client repos???? moderator caught in 4k 10:36 < bridge> ^^^ maintainer 10:36 < bridge> btw 10:37 < ws-client> **** @blazulite by now chillerbot is an umbrella term as @soulyvevo pointed out correctly. It used to be a meme like 10 years ago I was coping with cheat accusations by saying yes i use a bot 10:37 < ws-client> **** back then i called it chillerbot.png which is funny because images usually dont give unfair advantages 10:38 < bridge> xd sure chillerbot.png is lyfe 10:38 < ws-client> **** then when i obtained enough coding powers to actually build a client i leaned into that meme and called most clients i built chillerbot 10:38 < ws-client> **** to differentiate them they have a suffix such as chillerbot-ux chillerbot-h7 and so on. All clients that contain a z in the prefix contain unfair cheats and are not distributed. 10:39 < ws-client> **** I acidentally sent chillerbot-zz in the ddnet discord tho .... 10:39 < ws-client> **** that was a minor woopsie 10:39 < ws-client> **** chillerbot-zz was for a school project and i got a good grade and somehow managed to make teeworlds my project in high school xd 10:39 < bridge> double z.. unfairy unfairy cheats 10:40 < ws-client> **** chillerbot-zx is is the evil twin of chillerbot-ux and the client i use on a daily basis. Its not optimized for unfair pvp. It just has some features which are debatable and i only use them with the admins permissions. 10:40 < ws-client> **** thats the entire story :) 10:41 < bridge> biggo sus maintainer 10:41 < ws-client> **** no proof 10:41 < ws-client> **** i am also industry leader when it comes to antibot 10:41 < ws-client> **** "ein guter schwimmer kennt beide ufer" we say in germany 10:42 < bridge> https://cdn.discordapp.com/attachments/1287716834682081280/1338422730428645396/petpet.gif 10:42 < bridge> total gray head energy 10:42 < bridge> oho sounds good 10:44 < bridge> now I know why he is maintainer: 10:44 < bridge> provides "anti cheat" for ddnet, sells bot client which is "undetectable" 10:45 < bridge> and if he needs more money, he detects it and sells a new "undetectable" one 🧠 10:46 < ws-client> **** No I am maintainer because I actually care about the game ._. and spend lots of hours trying to improve it. Nothing shady about me. If i hear another accusation you will hear from my lawyer josspit with a defamation lawsuit. 10:47 < bridge> xd 10:47 < bridge> you know that I am just joking chillerbuddy ^.^ I know we are both spending lots of hours to imporove our favourite game 10:47 < ws-client> **** OwO 10:48 < bridge> is jupstar ur lawyer 10:48 < bridge> ill sue u for using C 10:48 < ws-client> **** always has been 10:48 < bridge> is he actually a lawyer? 10:48 < bridge> will he defend u from that 10:48 < bridge> no xd 10:48 < ws-client> **** he is actually a lawyer 10:48 < bridge> what 10:48 < ws-client> **** he can give legal advice 10:48 < bridge> he is a programmer 10:48 < ws-client> **** he is a pro gamer 10:48 < bridge> xd 10:49 < bridge> I need to know, if he is a lawyer I need to maintain distance :p 10:49 < bridge> jupstar is a vulkan connosieur 10:49 < ws-client> **** @Assa he is not xd 10:49 < bridge> that is true 10:49 < bridge> (he will always blame the drivers) 10:49 < bridge> do you have blog about your projects 10:50 < bridge> I need a ddnet blog tbh, maybe 5 ppl would read it 10:50 < ws-client> **** https://edgl.dev/ 10:51 < bridge> xdd 10:51 < bridge> so he is actually Edgque :p 10:51 < bridge> edgl 10:51 < ws-client> **** oops sent from the wrong account 10:51 < bridge> im chiller 10:51 < ws-client> **** @manikoo was that a reply? to who? 10:51 < bridge> to you 10:51 < ws-client> **** oops xd 10:51 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1414533694034546771/image.png?ex=68bfeaa9&is=68be9929&hm=4789a1f7e347d923db92623f0b805059b16a2b3fe0645c7263e73e9af4a3c21a& 10:52 < ws-client> **** irc moment 10:52 < ws-client> **** i was wondering why u were so slow to plug ur blog 10:52 < bridge> :justatest: 10:52 < ws-client> **** i dont have a blog :c only a yt channel 10:52 < bridge> sadly 10:52 < ws-client> **** this is my chillerbot blog https://www.youtube.com/watch?v=D0tpwp2QN6A 10:53 < bridge> I follow your GitHub - unfollowed now, I can't believe you'd do that. 10:53 < bridge> :poggers2: 10:53 < ws-client> **** shiet lost a follower 10:54 < bridge> Rather contributes to cheat client devs than do accounts 10:54 < ws-client> **** @melon i was indeed worried about my followers seeing it 10:54 < bridge> Unbelievable 10:54 < ws-client> **** i instantly deleted the fork but then it closed the pr xd 10:54 < ws-client> **** oh good that you remind me ima delete it now 10:54 < bridge> Already screenshotted 10:54 < bridge> got one 10:54 < ws-client> **** @melon i was updating the same thing in my antibot so i thought it would be funny to say hi 10:55 < ws-client> **** @melon also the contributor farmin in gh is real 10:55 < bridge> !remind 30d pressure chiller into doing accounts 10:55 < chillerbot12> Helo melon I will remind you at Mon Sep 08 2025 11:25:17 GMT+0200 (Central European Summer Time) about your matter again. 10:55 < ws-client> **** @melon ppl think i made the ddnet web editor because i fixed one typo 10:55 < bridge> Fuck h mean in 30 minutes 10:55 < bridge> 30 DAYS 10:55 < ws-client> **** if it shows up in contributors ppl dont know what u really did 10:55 < ws-client> **** @melon so i am hoping for some people to self report to me because they thing im bot dev xd 10:56 < bridge> btw chiller, how to chat with you outside of irc 10:56 < bridge> Give email 10:56 < ws-client> **** @melon ye the d syntax is wip go ping ryo to add it 10:56 < bridge> !remind 360 implement fat32 10:56 < chillerbot12> Helo ryozuki I will remind you at Mon Sep 08 2025 16:56:16 GMT+0200 (Central European Summer Time) about your matter again. 10:56 < ws-client> **** @melon chillerdragon@gmail.com 10:56 < bridge> tanks 10:56 < bridge> imagine gmail email 10:56 < bridge> edgar@edgl.dev 10:56 < bridge> im cool 10:56 < ws-client> **** *melon registering me on of rn* 10:56 < bridge> Are you self hosting 10:56 < bridge> ye 10:56 < bridge> Do you hate yourself? 10:56 < bridge> no 10:57 < ws-client> **** gmail has G in the name its gangster email 11:00 < bridge> Chiller please respond to my email 11:00 < bridge> :peepoSpreadsheet: 11:02 < bridge> Chiller play kog 11:02 < bridge> :omo: 11:02 < bridge> I'll leak his position to the Finanzamt if he doesn't answer 11:05 < ws-client> **** wtf is peepoSpreadsheet xxxxxxxxxxxxxD 11:06 < ws-client> **** @melon do you even know which country i am in right now? 11:06 < bridge> The Finanzamt will find out 11:06 < ws-client> **** "I hope this email finds you well," is crazy intro btw 11:07 < ws-client> **** stop mail me bro we can chat here xd 11:07 < ws-client> **** when is learath in munich? 11:07 < bridge> :ChooChoo: 11:07 < bridge> Stop leak 11:07 < ws-client> **** bro wat leak xd 11:08 < bridge> My intro! 11:08 < bridge> Now I look like a 50 year old 11:08 < ws-client> **** ah yes 11:08 < ws-client> **** ez 11:08 < bridge> Idfk 11:08 < ws-client> **** @learath2 melon wants to meet you in munich airport. Will you be there any time soon? 11:08 < ws-client> **** im in 11:08 < bridge> When are you close to Germany again? 11:08 < ws-client> **** he is in ams 11:09 < ws-client> **** he is always close 11:09 < ws-client> **** @melon should we fly to amsterdam together? 11:09 < bridge> true 11:09 < bridge> Hmm, can actually 11:09 < ws-client> **** now? 11:09 < bridge> Damn 11:09 < ws-client> **** xd 11:09 < bridge> Hm, probably won't be doing munich all that often anymore. It was my connecting airport from Italy 11:09 < ws-client> **** bru we missed him 11:09 < bridge> Gg 11:09 < ws-client> **** now we have to go to amsterdam 11:09 < ws-client> **** too bad 11:09 < bridge> do you want to meetup with greatest maintainers to discuss your game impoving strat?? 11:09 < bridge> was very close to munich yesterday 11:09 < bridge> Nah but we can actually do a flight to Netherlands 11:09 < ws-client> **** i want to lick lerato 11:10 < bridge> sometime next year 11:10 < bridge> ok 11:10 < ws-client> **** @melon amsterdam specifically 11:10 < bridge> Ok, no meetup with you 11:10 < ws-client> **** @melon lerato is always on the move wdym next year 11:10 < bridge> > i want to lick lerato 11:10 < bridge> I mean I wasn't 11:10 < bridge> :justatest: 11:10 < bridge> Next year I'll try moving somewhere far. Maybe Tokyo this time 11:11 < bridge> jap servers included 11:13 < bridge> I am in amsterdam in october, hotel already booked :3 11:14 < ws-client> **** omg omg @melon lets go w assa 11:14 < ws-client> **** its gonna be huuge 11:14 < bridge> Well, dm me if you want to grab a beer and talk about envelopes 11:14 < ws-client> **** beer and envelopes xxxxxxD 11:14 < ws-client> **** love it 11:14 < bridge> grabbing a beer sounds good ... but the envlope part ... xD 11:14 < ws-client> **** haha 11:14 < bridge> Ok, beer and no envelopes 11:15 < ws-client> **** envelopes and no beer 11:15 < ws-client> **** joint and quad clustering 11:15 < bridge> quads already clustered, I am almost finished with improving rendering 11:15 < bridge> Clustering quads is illegal under the geneva convention 11:15 < ws-client> **** watafak 11:16 < bridge> then I already broke the geneva convention in my open PR 11:16 < ws-client> **** assa is gangster 11:16 < ws-client> **** hot 11:16 < bridge> We can talk about how you destroyed jupstars fps in just 3 minor versions 11:16 < ws-client> **** xd 11:16 < ws-client> **** F 11:16 < bridge> I am pretty sure he has done it himself, or witht he spectre bug 11:16 < ws-client> **** spectre was in 2014 11:16 < ws-client> **** wdym 11:17 < bridge> like I asked him to check and make benchmarks, he just refused and gave up 11:17 < ws-client> **** reminds me of the ddnet++ and ddnet-insta bug reports 11:17 < ws-client> **** speaking of where is pathos 11:18 < bridge> can't be that I see improvements in FPS on my system on all maps since I started working on it, and he just has half? That's sus 11:18 < ws-client> **** have you tried telling him to buy a better gpu? 11:18 < ws-client> **** or update his graphics driver 11:18 < bridge> We should do an illegal ddnet hackathon sometime to just make accounts 11:18 < ws-client> **** @learath2 sounds fun 11:18 < ws-client> **** where? 11:19 < bridge> centralized or decentralized? 11:19 < bridge> Maybe you accidentally ended up optimizing for just your exact gpu and cpu combo? That would be funny 11:19 < ws-client> **** xd 11:19 < ws-client> **** works on assas machine 11:19 < bridge> Idk, we'd figure it out first day of hackathon 11:20 < ws-client> **** jesus trolling in this channel is such a timesink 11:20 < bridge> I think patiga claimed that ddnet is "obviously" cpu bottlenecked, while I experienced the opposite 11:20 < ws-client> **** i should talk about main branch again to boost my productivity 11:20 < bridge> and I have a 4070 xD 11:20 < bridge> I just noticed sth. Now that I'm doing a masters in computer security, I am officially allowed to roll my own crypto as I'll soon be the expert 11:22 < bridge> Hm, I don't know how it is now but iirc it was cpu bottlenecked for me too a year or so ago, but my cpu is ancient 11:22 < bridge> I usually play on a 2K monitor (and I have another 2K monitor next to it), maybe it's actually setup related 11:23 < bridge> also jupey provided a benchmark, it was only the beginning what was slow 11:23 < bridge> I also play on dual 2k monitors 11:24 < bridge> and in my benchmarks I always benchmark demos, maybe something is up with ingame rendering at the beginning, something loading 11:25 < chillerbot12> yo @melon keep in mind to: pressure chiller into doing accounts 11:26 < bridge> he said at first it sucks, then it gets faster 11:28 < bridge> Peculiar 11:30 < ws-client> **** @learath2 can u merge https://github.com/ddnet/ddnet/pull/10848 so i can merge downstreams :c 11:31 < ws-client> **** my prod is running a multiple day old ddnet version thats unacceptable 11:31 < bridge> I'll take a look when I sit down somewhere 11:31 < ws-client> **** <:poggers2:1008007455936094328> 11:31 < ws-client> **** ofc never merge while standing 11:35 < bridge> `gpg --keyserver keys.openpgp.org --recv-keys 230C94520D026311` 11:35 < bridge> my gpg 11:35 < bridge> 8924 D702 B475 BBAA E701 5C47 230C 9452 0D02 6311 11:36 < bridge> when next ddnet meetup 11:36 < bridge> barcelona - hamburg 50€ 11:37 < bridge> better than frankfurt which was 200€ lol 11:37 < bridge> https://discord.com/channels/252358080522747904/1263768271690268682 remember this 11:38 < bridge> im up for ddcon lan too 11:38 < bridge> How was Frankfurt so much more expensive xd 11:38 < bridge> because barcelona - frankfurt is only "premium" air brand like lufthansa 11:38 < bridge> hamburg has vueling 11:38 < bridge> which is cheap 11:38 < bridge> Frankfurt would be Nice tho, 2h with car 11:38 < bridge> :justatest: 11:39 < bridge> :justatest: 11:39 < bridge> hamburg far? 11:39 < bridge> where u live 11:39 < bridge> idk germany tbh 11:39 < bridge> i just said hamburg but any other city than frankfurt works 11:39 < bridge> or lets meet in mallorca 11:39 < bridge> its germany too anyway 11:39 < bridge> :justatest: 11:39 < bridge> ~8 1/2 hours 11:39 < bridge> 😢 11:39 < bridge> damn 11:40 < bridge> are most devs in the south? 11:40 < bridge> or north 11:40 < bridge> Lmao I would definitely join on mallorca 11:40 < bridge> which side is best 11:40 < bridge> let the war being 11:40 < bridge> i hear north is jelous of south 11:40 < bridge> cuz more tech? 11:40 < bridge> or maybe idk 11:40 < bridge> :kek: 11:40 < bridge> 11:40 < bridge> I think the devs in here are pretty spread out 11:41 < bridge> lets go to a middle ground 11:41 < bridge> france 11:41 < bridge> Me and chiller sleep in one bed, the others are pretty much all across germany 11:41 < bridge> :megupuke: 11:41 < bridge> ok just come here 11:42 < bridge> https://www.guru3d.com/story/intel-arc-pro-b50-gpu-launched-at-for-compact-workstations/ 11:42 < bridge> 16gb vram 11:42 < bridge> 360€? 11:42 < bridge> dam 11:42 < bridge> maybe i should buy this for server 11:43 < bridge> I'd wish for a small version which I could put in my nuc 11:43 < bridge> I wonder if this is possible at all 🤔 11:44 < bridge> https://www.pccomponentes.com/tarjeta-grafica-sparkle-eco-intel-arc-a310-4-gb-gddr6 11:44 < bridge> i should have bought this instead of the nvidia gt 710 omg 11:44 < bridge> warsaw best place for 11:44 < bridge> ddcon 11:46 < bridge> I wonder if there is a tool where you could enter user locations and which calculates a city in order to minimize travel times 11:46 < bridge> hmm probably always returns frankfurth as it's easy to reach by plane 11:47 < bridge> hmm probably always returns frankfurth as it's easy to reach by plane and in the middle of europe 11:47 < chillerbot12> yo @Assa keep in mind to: test if long map setup times cause client getting stuck in loading screen waiting for server response 11:48 < bridge> !remind 4100 test if long map setup times cause client getting stuck in loading screen waiting for server response 11:48 < chillerbot12> Helo Assa I will remind you at Thu Sep 11 2025 08:08:52 GMT+0200 (Central European Summer Time) about your matter again. 11:49 < bridge> shit this was a day too much 🙁 11:54 < bridge> !remind 320 level up dnd char 11:54 < chillerbot12> Helo Assa I will remind you at Mon Sep 08 2025 17:14:27 GMT+0200 (Central European Summer Time) about your matter again. 12:01 < bridge> Battlemage has surprisingly good specs 12:01 < bridge> I hear they worked out a lot of the driver kinks too 12:13 < bridge> I should play DND again 12:57 < bridge> it's like programming, you have your class and upgrade it's functionality, until you loose overview 13:00 < bridge> Maybe it's a me problem 13:00 < bridge> Maybe u decreased cpu usage and that made my cpu not clock as high 13:01 < bridge> Could be some stupid shit 13:01 < bridge> all good, I just didn't want to ping you when we're yapping in this channel 13:02 < bridge> as I said, for me the game seems to be gpu bottlenecked. Having less gpu calls corresponds to more fps 13:02 < bridge> as I said, for me the game seems to be gpu bottlenecked. Having less gpu calls corresponds to more fps (less gpu calls per render call) 13:05 < bridge> maybe the reasoning is wrong 🤔 idk where the bottleneck is 13:11 < bridge> Yes that is generally true, but that is not a gpu bottleneck 13:11 < bridge> Still on cpu 13:11 < bridge> Gpu bottleneck would mean that your gpu is at full load or transfer for some of its components 13:13 < bridge> Since the graphics api calls are in a separate thread you could say, that it's a battle between how good the client is vs how fast the backend is. So in normal case game is cpu bottlenecked 13:14 < bridge> And more and more client code 13:14 < bridge> Esp with our awesome O(n^2) physics 13:15 < bridge> hmm, isn't the backend seperated in extra cores? 13:16 < bridge> I guess it is, but only partially 13:19 < bridge> Yes and yes 13:20 < bridge> Now, that we have seperated rendering from the client, I am going to test if I can use a thread and see benefits 13:20 < bridge> nice talk 👍 13:26 < bridge> I think the demo renderer in the game can be improved. 13:26 < bridge> For example, this is a 3rd party demo renderer developed for the source games I left below. 13:26 < bridge> 13:26 < bridge> and while it covers a lot of things found on ddnet, it also contains many features. 13:26 < bridge> 13:26 < bridge> For example, motion blur can be added by slowing down the video compared to the video fps. (I don't know the exact math unfortunately.) 13:26 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1010844327070679180/unknown.png?ex=68bff4a4&is=68bea324&hm=2f9e353d6cc6a28e978cbeff4320c194fcc449314a2d3a0b427ddd39f1d3d3ad& 13:30 < bridge> @chillerdragon dont be so scared to merge stuff like 13:30 < bridge> 😂 13:31 < bridge> these are both from tidy check, also can look up cpp docs 13:36 < bridge> ? Xd 13:37 < bridge> I already told you before, everything that uses graphics threaded will not be. 13:37 < bridge> I'll not review it and veto it 13:37 < bridge> Rendering itself was always threaded as in backend 13:40 < bridge> didn't ask you, I am just checking 😄 I want to use a thread a layer earlier 13:41 < bridge> No 13:42 < bridge> ah no, you'd break the render sequence 13:42 < bridge> I don't want this spaghetti code, show me only my structs/classes how you want to create a structure that works nicely multithreaded 13:43 < bridge> I don't want this spaghetti code, show me only by structs/classes how you want to create a structure that works nicely multithreaded 13:49 < bridge> I mean what we could do is split up CClient::Run and move the render code into a seperate thread splitting it up from the rest of the client logic 13:49 < bridge> it might turn out that it not works due to various side effects/logic issues 14:21 < bridge> Physics doesnt run every frame so it has almost no impact on measured fps 14:22 < bridge> prediction does! 14:22 < bridge> ``` 14:22 < bridge> [1.518547] Found 1 partitions: 14:22 < bridge> [1.518707] ID Start LBA End LBA Size (MB) Type FS Name 14:22 < bridge> [1.519226] -------------------------------------------------------------------------------- 14:22 < bridge> [1.519476] 0 2048 2097118 1022 MS Basic Data Unknown 14:22 < bridge> ``` 14:22 < bridge> :justatest: 14:23 < bridge> only in extreme situation where it takes a huge amount of time, but the fps will be super fast for all the frames when physics doesnt run 14:23 < bridge> prediction doesnt run every frame? 14:23 < bridge> no ofc not 14:24 < bridge> If you use fastinput it will run when you change inputs so technically it reduces fps xd 14:25 < bridge> 100fps improvementish 14:25 < bridge> i should do it with dbg dummies instead cuz players move around 14:26 < bridge> Ping also makes it way more expensive 14:27 < bridge> 250 -> 150 14:27 < bridge> 8000ms with just 2 tees is noticeable lag from physics 14:27 < bridge> 8s? 14:27 < bridge> Yeah 14:27 < bridge> ofc it does 14:27 < bridge> Im the only one who tests these things 14:28 < bridge> oh wait lag as in 14:28 < bridge> cost 14:28 < bridge> i see 14:28 < bridge> ``` 14:28 < bridge> cl_antiping 0 14:28 < bridge> cl_predict_* 0 14:28 < bridge> ``` 14:28 < bridge> isn't the arrow in the wrong direction? 14:28 < bridge> yes 14:29 < bridge> !remind 320 benchmark without prediction and antiping 14:29 < chillerbot12> Helo Assa I will remind you at Mon Sep 08 2025 19:49:29 GMT+0200 (Central European Summer Time) about your matter again. 14:29 < bridge> my tests are not rigerous 14:30 < bridge> (debug dummies in empty server standing still) 14:30 < bridge> (debug dummies in empty server and im standing still) 14:31 < bridge> wait did i just see 128 p server support?? 14:31 < bridge> hmm it shouldn't affect demos tho 🙁 14:31 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1414588921421234266/image.png?ex=68c01e18&is=68becc98&hm=177d806ba97eb5a599da725287432199c5cab36b16cc4197fc78c5d0d536b0b9& 14:31 < bridge> demos do prediction no? 14:31 < bridge> to an extent 14:31 < bridge> like colliding into a wall intratick 14:31 < bridge> demos should only do interpolation not prediction 14:32 * bridge should 14:32 < bridge> okay 14:32 < bridge> i havent really noticed demos not looking as if they are running collision every frame 14:32 < bridge> but im not looking 14:32 < bridge> @heinrich5991 && @zwelf2 I rebased and addressed all the feedback in #10049 and #10063. It would be really nice if you could give it a quick review so we can land them together in one teehistorian bump 14:32 < bridge> https://github.com/ddnet/ddnet/pull/10049 14:32 < bridge> https://github.com/ddnet/ddnet/pull/10063 14:33 < bridge> do demos calculate all the physics? 14:33 < bridge> idk 14:33 < bridge> why is my server saying 128 players 14:33 < bridge> its on master 14:33 < bridge> ios still open 14:41 < bridge> no 14:47 < ws-client> **** @learath2 review 4 review? xd 14:47 < bridge> you are not qualified to review those 2, it requires zwelf or heinrich 😛 14:47 < bridge> rip 14:48 < ws-client> **** @learath2 we need a heinrich? 14:48 < ws-client> **** where a heinrich 14:48 < ws-client> **** lerato trust me im network hacker 14:48 < ws-client> **** @Solly (bun bun) looks like a bug caused by https://github.com/ddnet/ddnet/blob/05890fe1cb0f727744b1e9f0a3dfce3960f18f4d/src/engine/shared/protocol.h#L88 being used wrongly 14:49 < bridge> ghasp 14:49 < ws-client> **** send fix 14:49 < bridge> i got too many open prs 14:49 < ws-client> **** its probably just a matter of replacing `MAX_CLIENTS` with `Server()->MaxClients()` 14:49 < bridge> and im eating 14:49 < ws-client> **** eating wat 14:49 < bridge> fish 14:50 < ws-client> **** nice 14:50 < ws-client> **** :fish: 14:50 < bridge> i didnt catch it 14:50 < ws-client> **** pusi 14:50 < bridge> thats not very nice 14:50 < ws-client> **** i only eat animals i killed with my bare hands 14:50 < ws-client> **** and chicken nuggets from mc donalds 14:51 < ws-client> **** because i dont like to shred baby chicks 14:51 < bridge> ah yes mc donals chicken nuggets, I believe the crust is made of of old amzon package carton 14:52 < bridge> ah yes mc donals chicken nuggets, I believe the crust is made of of old amazon package carton 14:52 < ws-client> **** xxxxxxxxxxxxxxxxD 14:52 < bridge> i think they only shred half of the baby chicks 14:52 < ws-client> **** @Assa are you vegan? 14:52 < bridge> and they dont use that 14:52 < bridge> no, I am a trashbin 14:53 < bridge> ``` 14:53 < bridge> ls ~/.local/share/Trash/files | wc -l 14:53 < bridge> 10584 14:53 < bridge> ``` 14:53 < bridge> does this make u hungry 14:53 < ws-client> **** brit doesnt get german saying xd 14:53 < ws-client> **** wait im not sure actually 14:53 < ws-client> **** the trashbin thing does it make sense to you @Solly (bun bun) ? 14:53 < ws-client> **** we say it a lot in germany 14:53 < bridge> we also use vacuum cleaner 14:53 < bridge> others are like ` ... 2> /dev/null`, I am like ` ... 2 > /assa` 14:54 < ws-client> **** xd 14:54 < bridge> i think i understand 14:54 < ws-client> **** @Solly (bun bun) do you know what this means? "my english is not the yellow from the egg" 14:55 < bridge> well its not used unless you speak german 14:55 < ws-client> **** xd 14:55 < bridge> but i think it used to be used, my dad has said it a few times 14:55 < ws-client> **** lmao no way 14:55 < bridge> do you know how many germans it takes to change a lightbulb? 14:55 < ws-client> **** does he know ger? 14:55 < bridge> no 14:55 < bridge> but he has been to germany alot 14:55 < ws-client> **** germans love to say it 14:55 < bridge> he can order alcohol in almost every language 14:55 < ws-client> **** i think some seriously say it not as a joke 14:56 < ws-client> **** @Assa 5? 14:56 < bridge> only 1, we are very efficient and don't understand humor 14:56 < ws-client> **** oh right 14:56 < ws-client> **** i was about to say i know the joke not with "germans" xd 14:56 < bridge> he can order alcohol in almost every language 14:56 < bridge> ( any background on this would dox me lmao ) 14:56 < bridge> well it just means "good" right 14:57 < bridge> i feel most plp would understand it 14:57 < ws-client> **** @Solly (bun bun) "not good" 14:57 < bridge> well not the yellow from the egg 14:57 < bridge> but the yellow from the egg is good 14:57 < ws-client> **** @Solly (bun bun) **not** the yellow from the egg 14:57 < ws-client> **** ye 14:57 < bridge> ye 14:57 < bridge> ye 14:57 < bridge> some people prefer just egg whites 14:57 < ws-client> **** sayings are so weird 14:57 < bridge> well english people would say yolk not yellow 14:58 < ws-client> **** italians and russians randomly have sayings about wolfes 14:58 < bridge> I prefer the part without the shell 14:58 < bridge> well its all probably borrowed from literature 14:58 < ws-client> **** wolves*? 14:58 < ws-client> **** idk 14:58 < bridge> wolves 14:58 < ws-client> **** test passed 14:58 < bridge> and its luck which ones are copied into common parlence 14:58 < ws-client> **** u might be real brit after all 14:58 < bridge> i say leafs 14:58 < bridge> because leaves also means something else 14:59 < ws-client> **** in which context? 14:59 < ws-client> **** tree? 14:59 < bridge> leaf 14:59 < bridge> tree leaf 14:59 < ws-client> **** a ye 14:59 < bridge> what else do others say? 14:59 < bridge> leafs = plural leaf 14:59 < bridge> leaves = plural leaf or plural leave 14:59 < bridge> that leafs me confused 15:00 < ws-client> **** he she it lefteded the game 15:00 < bridge> https://en.wiktionary.org/wiki/leafs 15:00 < bridge> do leafs life? 15:00 < bridge> do leaves live? 15:00 < bridge> okay I stop butchering foreign language 15:00 < bridge> that mfl to you 15:00 < bridge> (modern foreign langugae, not mf langugae) 15:01 < ws-client> **** xd 15:01 < bridge> (good that you explained that tbh lmao) 15:03 < bridge> btw using a seperate thread in the client worked so far oO 15:03 < bridge> only joining didn't 15:04 < ws-client> **** !remind 69 @learath2 BING BONG PING PONG https://github.com/ddnet/ddnet/pull/10848 15:04 < chillerbot12> Helo ChillerDragon I will remind you at Mon Sep 08 2025 16:13:27 GMT+0200 (Central European Summer Time) about your matter again. 15:05 < ws-client> **** @Assa spawn new thread for every frame 🧠 15:05 < bridge> spawn a new frame for every thread 15:05 < bridge> no 15:06 < bridge> prerender the frames in the future for minimal latency 15:06 < ws-client> **** cache frames in redis 15:06 < bridge> prerender the frames in the future for minimal latency (<- this makes no sense) 15:07 < bridge> 1. Work on a supercomputer 15:07 < bridge> 2. Write a program that starts itself async twice 15:07 < bridge> 3. Wait until supercomputer goes down 15:07 < bridge> 4. Tell gov computer not big enough 15:07 < bridge> 5. Get yelled at by sysadmins 15:07 < bridge> forkbomb a supercomputer so u can get a bigger supercomputer 15:08 < bridge> we actually did that in my bachelors 💀 15:08 < bridge> a supercomputer being a max load during a task isnt unusual 15:08 < bridge> thats how its meant to be 15:08 < bridge> yes but you are usually not taking all of the supercomputer by yourself, but sharing it with countless other scientists 15:08 < bridge> also your institute may have to pay for compute 15:09 < bridge> are cores/time not split between who is using it? 15:09 < bridge> ah yes you can use cluster 3 thru 7 between the 3rd of sept and 15th of september 15:09 < bridge> xd 15:09 < bridge> yesn't 15:09 < bridge> (because scaling tasks at runtime is probably hard) 15:10 < bridge> there is a bit `on demand/no demand` trickery going on, we have tasks that need to run daily and they can run at times where others are not using it e.g. at night 15:10 < bridge> do supercomputers use schedulars? 15:10 < ws-client> **** i need a robyte 15:10 < bridge> i feel like the overhead of task switching is something that would want to be avoided 15:10 < ws-client> **** where a robyte 15:10 < bridge> i want a robit 15:10 < bridge> romegabyte 15:10 < bridge> then there is an economics aspect, a supercomputer uses a lot of power and you want to use it at the day, because electricity is more expensive at night 15:10 < bridge> due to solar 15:11 < bridge> yes!!! 15:11 < bridge> surely electricity is cheaper a night if you arent mostly solar 15:11 < bridge> cuz demand would be less 15:12 < bridge> here in germany we mostly have coal solar and wind 15:12 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1414599182819262555/iu.png?ex=68c027a7&is=68bed627&hm=b9c16457819fef3198a027a9ea1a5e41c65025ddeae842fb806d0a83086ae1a1& 15:12 < bridge> oh and gas 15:12 < bridge> gas is no more due to russia 15:13 < bridge> https://app.electricitymaps.com/map/zone/DE/72h/hourly 15:13 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1414599489615958117/iu.png?ex=68c027f0&is=68bed670&hm=6791d2f0e20ce12a6354ab7a6c83c194867b798023759981efbc6d10f21c9082& 15:13 < bridge> (yes the graphs agree hard coal and lignite is just counted as coal i think) 15:13 < bridge> this is a really nice website damn 15:13 < bridge> take a look at the electricity map, currently (at this hour) we are using mostly solar and coal 15:14 < bridge> wish they would ease up on the blur tho, oh my pc 15:14 < bridge> the max solar capacity in germany is insane 15:15 < bridge> no sane actually calculating goverment should ignore solar 15:16 < bridge> i can see 15:16 < bridge> i am just exploring this map 15:16 < bridge> very cool 15:16 < bridge> take a look at france, which is mostly atomic 15:17 < bridge> nuclear ftw 15:17 < bridge> and then germany, which has no atomic anymore 15:17 < bridge> idk why people are against it 15:18 < bridge> they are just afraid of a thrid fukushima/chernobyl 15:18 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1414600704693370931/image.png?ex=68c02912&is=68bed792&hm=6735f39c9e0d163531326f671518821e86d13870ea7e4a2bbca5f6c1eace0fd2& 15:18 < bridge> rmm 15:18 < bridge> ye, hypocrits 15:18 < bridge> why does france get a better government than the bloody uk 15:18 < bridge> makes no sense 15:18 < bridge> imo they phased nuclear out too fast, should have phased out coal first. 15:18 < bridge> definatley 15:19 < bridge> nuclear is far more sustainable due to irregular refueling 15:19 < bridge> (in terms of oh no russia stopped giving us x so now we cant use it) 15:19 < bridge> but now it's to leat, you can't just "turn them on again" 15:20 < bridge> but now it's to late, you can't just "turn them on again" 15:20 < bridge> thats what britain did 15:20 < bridge> quite scary 15:20 < bridge> just turned on a random nuclear site 15:20 < bridge> that handt been used for a while 15:21 < bridge> (finding evidence is not working) 15:23 < bridge> don't worry, we all have our chicken to plug with our goverments 15:23 < bridge> chicken to plug 15:23 < bridge> with.. stuffing? 15:23 < bridge> that's a german metaphor to go full circle 😄 15:24 < bridge> wait sizewell a got turned off? 15:24 < bridge> in english it's a "bone to pick with sb." 15:24 < bridge> i get the meaning 15:24 < bridge> its just funny 15:25 < bridge> scrap this i cant find anything 15:28 < ws-client> **** "we all have our chicken to plug with our goverments" 15:28 < ws-client> **** xd 16:13 < chillerbot12> DO NOT FORGET @ChillerDragon TO: @learath2 BING BONG PING PONG https://github.com/ddnet/ddnet/pull/10848 16:34 < bridge> the more tidy checks i fix, the more warnings it shows 16:34 < bridge> so it found more of the redundant inline stuff :tear: 16:39 < bridge> Q: Do you think it's an issue if DDNet is a central authority for accounts? As in we store all the PII. Short answers only 16:39 < bridge> i dont think its an issue, we should just get it working and not worry this much about details, 16:40 < bridge> DDNet as the owner of both client, server and masterserver. i dont think its an issue 16:40 < bridge> ddnet is already a central authority on stuff whether u want it or not 16:40 < bridge> the benefits to get this working for the ecosystem imho will be massive, so much tooling and webs can be made around accounts 16:41 < bridge> (please provide oauth2) 16:42 < bridge> @chillerdragon i will pr once i silence/fix all remaining warnings so i got all enums cleaned up in 1 pr 16:42 < bridge> so far i have these commits 16:43 < bridge> worst warnings that probably will need to be silenced are `misc-confusable-identifiers`, `deprecated-enum-enum-conversion` 16:46 < bridge> do it 16:50 < ws-client> **** @learath2 I dont think its an issue as long as you make me ddnet admin 16:53 < ws-client> **** @learath2 will we make @ryozuki responsible for backing up all the PII? 16:53 < bridge> :lol: 16:54 < bridge> XD 16:54 < bridge> https://cdn.discordapp.com/attachments/252358080522747904/1267876556261560454/EB37683D3A4CDA1932DD5DD1561EC9AF.gif 16:56 < chillerbot12> Elo @ryozuki I just wanted to remind you that: implement fat32 16:57 < bridge> I don't get threading in ddnet, I literally have a dbg_msg at the end of the thread function, `dbg_msg("dbg", "closing thread");`, I get the message, and the thread still hangs on join 16:57 < bridge> pog, serial output in terminal too 16:57 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1414625678598602802/image.png?ex=68c04054&is=68beeed4&hm=621af20dee9f544efea0c9f0c102af97c703f5b181992928c37d67c175c7103e& 16:59 < bridge> fixed* xD 16:59 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1414626206040592579/image.png?ex=68c040d2&is=68beef52&hm=78aa7e0fc5d66207a4de3622c4d562b7f15ed7fa4d2dd9776a0228300e7e1e98& 16:59 < bridge> pog, serial output in terminal too 17:02 < bridge> @kebscs: if you work on the same stuff like me that’s a op loophole. If I would pr it would stale for at least days. If you pr the same I can merge it in minutes. Ez. 17:03 < bridge> the enums you posted in the github thread are valid btw 17:03 < bridge> ``` 17:03 < bridge> enum class ELayerQuadsProp 17:03 < bridge> { 17:03 < bridge> PROP_NONE = -1, 17:03 < bridge> PROP_IMAGE, 17:03 < bridge> NUM_PROPS, 17:03 < bridge> }; 17:03 < bridge> ``` 17:03 < bridge> this has an init value and no other values = valid 17:03 < bridge> How do 17:03 < bridge> How so 17:03 < bridge> Ah true 17:03 < bridge> I forgor 17:03 < bridge> Go write that on GitHub pls 17:03 < bridge> XD 17:04 < bridge> Yes it’s op info 17:04 < bridge> We need it documented I forgot about it thrice already 17:04 < bridge> its just enums that have random values inside 17:04 < bridge> cracknotgood 17:05 < bridge> @essigautomat: do you know him? ^ 17:05 < bridge> Ye ye I remember now @kebscs then fix should be the way to go 17:09 < bridge> As in you call `thread_wait` and it hangs? 17:09 < bridge> Sometimes I feel like I edit too many comments of others on GitHub xd 17:09 < bridge> A bit übergreifend 17:10 < bridge> No way you can translate that to overreaching xd 17:14 < chillerbot12> Elo @Assa I just wanted to remind you that: level up dnd char 17:23 < bridge> @jupeyy_keks how to troll a friend, add `use std::collections::BTreeMap as HashMap;` 17:33 < bridge> Ez 17:34 < bridge> But there are some api differences 18:01 < bridge> it finished and the waiting call hangs 18:02 < bridge> yes, somewhat known zCatch player 18:02 < bridge> Are you using actual real threads spawned with `thread_init`? 18:02 < bridge> I fully used std::thread logic 18:02 < bridge> You'll need to show some code, this works in the unit tests 18:02 < bridge> We don't use `std::thread` 18:03 < bridge> Then what does that have to do with ddnet? We don't use `std::thread` except inside video where jupstar doesn't like using our stuff and none of us really know what he is doing 18:06 < bridge> today is next week :owo: 18:08 < ws-client> **** @Assa wowo true zcatch gamer 18:09 < bridge> thread idea is dead, it crashes violently 18:10 < bridge> you do btw, I find multiple references in the engine 18:11 < bridge> As Learath2 said, those are only in the video render and Vulkan backend 18:11 < bridge> Game client code should use `IJob` for concurrent jobs 18:12 < bridge> if you want to use it in the context of DDNet your best bet is to annoy jupsti with it 18:12 < bridge> if you want to use it in the context of DDNet your best bet is to annoy jupsti with it xd 18:14 < bridge> Unless you want to make everyone life harder, use `IJob` 18:14 < bridge> yes and no, it has too many side effects, unfortunatly we can't just put rendering alone in another thread 18:15 < bridge> But the first rule of performance optimization is to measure before you optimize and then measure again after 18:15 < bridge> my measurement results: client worked before, client crashed violently after 18:15 < bridge> btw, the quad-cluster branch has actual benchmarks 18:15 < bridge> btw, the quad-cluster branch has actual benchmarks as you wished 18:16 < bridge> No, what I mean is, why do you think putting something in a thread would give you more performance? First you should measure to determine what to optimize. 18:17 < bridge> The game seems to be cpu bottle necked, this is what determined my thinking here 18:17 < bridge> Thinking != Measurement 18:17 < bridge> sure 18:17 < bridge> I sometimes just throw things at the wall in order to check what sticks around 18:17 < bridge> how else should you improve on unclear matter 18:18 < bridge> Use a profiler to determine what's slow 18:18 < bridge> Then optimize what is slow 18:19 < bridge> I find it incredibly hard to profile this 18:21 < bridge> Why? Start the game with a profiler and look measurement to determine where the CPU spends most time. 18:21 < bridge> Why? Start the game with a profiler and look at the measurements to determine where the CPU spends most time. 18:27 < bridge> If you have a demo to benchmark consistently, you can also profile before and after changes and compare the results 18:28 < bridge> you mean like I did with the quad cluster PR? I already made a small ddnet-benchmarking repository 18:28 < bridge> https://github.com/AssassinTee/ddnet-benchmarks 18:30 < bridge> This only gives you total frametimes though. A profiler can tell you which exact function or line of code is executed relatively often compared to others. But you have to profile the same situation if you want to compare the results, e.g. by playing a demo and then quitting at the end. 18:31 < bridge> yes true and of course, I mostly use the frametimes in order to proof that there is an improvement 18:34 < bridge> If you want to find which code you should optimize, you need a real profiler though. Otherwise you might be optimizing code that is already fast enough, which may only decrease readability. 18:53 < ws-client> **** @ChillerDragon nope, no special setup 18:53 < ws-client> **** But I at least isolated that it has to do with tournament mode in progress thing options and/or the message for it 18:54 < bridge> my profiling result is, that the slowest part of rendering is CPlayers::OnRender and not map rendering, so no matter how much I optimize after that, you won't see benefits 18:55 < bridge> huh why is every frame the vector constructor called for players? 18:56 < bridge> ChillerDragon: Was it you who had the ctrlmsgs documented somewhere? 18:56 < bridge> `CTeeRenderInfo aRenderInfo[MAX_CLIENTS];` ah yes we are reconstructing an array every frame 18:57 < bridge> tfw this is considered a performance problem 18:57 < bridge> I can tell why this game runs fast lol 18:58 < bridge> meanwhile other games: generating a multi-megabyte acceleration structure every frame 18:58 < bridge> This is considered a huge optimization. 18:59 < bridge> compilers watching as you move another vector by value for the 5th time and it cant optimize it cuz lto is turned off :squidward_deadpan+the sfx: 19:01 < bridge> bazinga 19:02 < bridge> https://chillerdragon.github.io/teeworlds-protocol/06/ctrl_messages.html this? 19:03 < bridge> Aha, yep 19:03 < bridge> I think I'll be adding a new ctrl message or extend the ones we already have 19:03 < bridge> It's been long enough since we got a new one 19:04 < bridge> are you doing something accounts related? 19:04 < bridge> yep, I'm reworking my old accounts implementation, getting rid of the `NETMSG_ENCRYPTED` overhead 19:06 < bridge> We are getting an extension to `NET_CTRLMSG_CONNECTACCEPT` to signify the server is capable of encrypted communication, and `NET_CTRLMSG_NOISE` to do the handshake over, after which the client and the server will be able to exchange fully encrypted packets 19:06 < bridge> Does this have a chance to be merged or is it just to scare heinrich so that he keeps working on quic? xd 19:07 < bridge> Who knows, maybe he'll like it 19:09 < bridge> I still don't know where to sneak in the encryption flag in the packets though 19:14 < bridge> If only we werent using `NET_PACKETFLAG_UNUSED` for the 3 people who use 0.7 19:17 < bridge> I guess 0.6.5 is truly used by nobody, maybe I can steal its `NET_PACKETFLAG_TOKEN` 19:23 < bridge> I have never seen such waste, `NET_PACKETFLAG_EXTENDED` isn't even sent over the network, why is it hogging a bit? 19:25 < bridge> Of the 3 free bits of flags we had available, 2 got used to support 0.01% of the playerbase collectively, and the last one is unused but used 😄 19:34 < ws-client> **** @learath2 dont pollute flag bits pls 19:34 < bridge> So y'all get to pollute the flags all you want but I don't? 19:35 < ws-client> **** i didnt 19:35 < ws-client> **** would never 19:35 < bridge> I'm taking `NET_PACKETFLAG_TOKEN` discussion joever 19:35 < ws-client> **** as long as u only send it to new ddnet clients its fine i guess 19:36 < bridge> I'm sending it to everyone 19:36 < ws-client> **** not good 19:36 < ws-client> **** why would you do that 19:36 < bridge> I need a packetflag 19:37 < ws-client> **** ok 19:37 < ws-client> **** as long as u dont break backcompat all good 19:37 < ws-client> **** just dont send the wrong packetflag to clients that dont support it 19:38 < bridge> I'll only be breaking 0.6.5. Which is just a hallucination anyway 19:38 < ws-client> **** there is no need to break it 19:38 < bridge> Actually we never supported it anyway 19:38 < ws-client> **** u could join 19:39 < ws-client> **** so your accounts will be quicless? 19:39 < ws-client> **** i like it 19:39 < ws-client> **** imo thats the way to go to just have encrypted payloads 19:39 < bridge> Yep, Noise over udp framed with teeworlds protocol instead 19:39 < ws-client> **** we already have compressed payloads 19:39 < ws-client> **** why not also encrypt no need to bloat in quic 19:40 < ws-client> **** @learath2 imo the compression flag should just mean encrypted for new ddnet versions 19:40 < ws-client> **** and then the first byte of the decompressed payload can be another varint with flags 19:40 < ws-client> **** where the real compression flag will move 19:41 < ws-client> **** and where we have space for 1283812390123 flag extensions 19:41 < bridge> Why make an actually used flag weird instead of just reclaiming one? 19:41 < ws-client> **** we can even put the ddnet version in the very first packet sent 19:41 < bridge> If I break compatibility enough heinrich might actually be inclined to finish quic 19:41 < ws-client> **** xd 19:42 < bridge> just need to get as much random data from NIST's beacon to be decoded as player data 19:42 < ws-client> **** i hope if it gets down to breaking the entire protocol i actually have something to say 19:43 < bridge> Actually this doesn't really work as well as I thought. All encrypted packets need to be vital 19:47 < ws-client> **** there is no such thing as a vital packet 19:47 < bridge> Nvm, that can be avoided, ok I'll just steal a flag, maybe repurpose the extended one so you can be happy too 19:47 < ws-client> **** only vital messages 19:47 < bridge> Wow chiller 19:47 < bridge> your recent actions broke my heart 19:47 < ws-client> **** shit 19:47 < ws-client> **** wat i do 19:47 < bridge> It'd have been a new concept 19:47 < bridge> You are not worthy to be a ddnet maintainer 19:47 < ws-client> **** omg tell me already 19:47 < bridge> You know what you did 19:48 < ws-client> **** i have no clue 19:48 < ws-client> **** help me out 19:48 < bridge> contributing to the worst people on planet 19:48 < ws-client> **** oh that 19:48 < bridge> Oh yeah, I wanted to talk to you about that too 19:48 < ws-client> **** i already defended my self about that 19:48 < bridge> Not acceptable. Don't do it again. Not funny 19:48 < bridge> it's a bit funny 19:48 < ws-client> **** if you cant differentiate between that and actually doing something harmful then i dont care about your respect anyways 19:49 < bridge> ur just gonna get another ryo situation 19:49 < bridge> The fact that your aknowledge their existence is already bad 19:49 < bridge> It's the kind of funny that we can laugh about after removing you 19:49 < bridge> They literally destroy this game 19:49 < ws-client> **** well you did more than me 19:49 < ws-client> **** i didnt bring it up 19:49 < ws-client> **** i deleted the fork 19:49 < chillerbot12> Elo @Assa I just wanted to remind you that: benchmark without prediction and antiping 19:49 < ws-client> **** i just put my self in there so cheaters approach me 19:49 < bridge> then ddnet doesn't need the cheat clents to win for it to die 19:49 < ws-client> **** i agree that its bad 19:49 < ws-client> **** and i also fight against it 19:50 < ws-client> **** on my fng server at least 19:50 < ws-client> **** i would also do it for ddnet if i had the power to do so 19:50 < bridge> ye I'll just remove all the maintainers BCS they don't do what I want 19:50 < bridge> ??? 19:51 < ws-client> **** @Jupstar ✪ i cant tell if you are serious or not btw. Its not like i contributed to the destruction. Or gave them a platform. 19:51 < bridge> maybe I misunderstood you 19:51 < bridge> funny enough to remove chiller or me 19:52 < bridge> I am serious 19:52 < bridge> It is funny, we can laugh about it but a maintainer isn't supposed to be doing it 19:52 < ws-client> **** okay then lets talk 19:52 < ws-client> **** whats the problem @Jupstar ✪ ? 19:52 < bridge> If nothing it is exceptionally horrible PR 19:52 < bridge> OSS PR 19:53 < bridge> Chiller I have something like moral deep inside me, and I am proud of that bit that I have. 19:53 < bridge> 19:53 < bridge> These people don't 19:53 < ws-client> **** okay yes 19:53 < ws-client> **** so far so good 19:53 < ws-client> **** so why are you mad at me? 19:53 < bridge> Yes, we are public, we have relations with the public 19:54 < bridge> Chiller whom am I discussion with rn? 19:54 < bridge> 19:54 < bridge> Why do I need to discuss this 19:54 < bridge> This should be obvious af 19:54 < bridge> Multiple people asked me about why there is a ddnet maintainer doing that 19:54 < ws-client> **** @learath2 okay thats fair 19:55 < ws-client> **** so it looks like ddnet supports it? 19:55 < ws-client> **** i see 19:55 < ws-client> **** but im not ddnet staff i cant even login to rcon and i disgaree with almost all rules 19:55 < ws-client> **** heinrich told me when i became maintainer that i can still have opinions 19:55 < ws-client> **** nobody told me about public presence 19:55 < bridge> hey, you! guy that gives us a shitload of code on a regular basis for no pay! stop that 19:56 < bridge> Chiller, but you should have common sense 19:56 < ws-client> **** i see 19:56 < ws-client> **** yes i agree 19:56 < ws-client> **** honestly i thought nobody would care or even notice 19:56 < bridge> Do you even understand what we are talking about here or what the subject is? 19:56 < ws-client> **** i didnt know u all watch these bot repos 19:56 < bridge> I don't 19:56 < ws-client> **** i didnt expect it to become a thing 19:56 < bridge> Someone told me 19:57 < ws-client> **** then that someone is sus 19:57 < bridge> chiller contributed code to a cheat project and you're angry because you can't control where he contributes to 19:57 < ws-client> **** i didnt contribute code 19:57 < ws-client> **** i edited the readme 19:57 < bridge> o? 19:57 < ws-client> **** thats the thing 19:57 < bridge> even better 19:57 < ws-client> **** its not like i distribute malicious code 19:57 < bridge> (someone wana link the commit, or should i) 19:57 < ws-client> **** i broke their url 19:57 < bridge> No "but" dude 19:57 < bridge> That is already the problem 19:57 < ws-client> **** from outdated to broken 19:58 < ws-client> **** what is the problem? 19:58 < bridge> No ofc you should not link a bot commit. It's like everyone in this discussion is being willfully ignorant 19:58 < bridge> well it would be nice for people to see the discussion in the context its in 19:58 < ws-client> **** nah i dont think we should link it 19:58 < bridge> maybe inappropraite channel for this discussion if not 19:58 < bridge> can u dm it to me 19:58 < bridge> is a screenshot fine 19:58 < ws-client> **** i think this entire discussion is giving cheats a platform imo 19:59 < bridge> Enough, discussion of this. Don't be doing that in the future please, thanks. People follow you people see your commits and actions 19:59 < ws-client> **** we should all be banned because of rule #7 or which ever it was 19:59 < chillerbot12> https://github.com/ddnet/ddnet/issues/7 19:59 < bridge> It's giving you a strict warning 19:59 < bridge> Enough discussion of this. Don't be doing that in the future please, thanks. People follow you people see your commits and actions 19:59 < ws-client> **** fair 19:59 < bridge> Excellent PR 😄 20:00 < bridge> Enough discussion of this. Don't be doing that in the future please, thanks. People follow you, people see your commits and actions 20:01 < ws-client> **** @Jupstar ✪ could we talk privately about this? 20:02 < bridge> You can write me in element or discord any time 20:02 < ws-client> **** lets do uit 20:05 < bridge> rule 7 is dont fake others? 20:06 < bridge> or ` Don't promote or encourage illegal activities - Includes botting/cheating.` 20:12 < bridge> Blue name that doesn't know the rules :pepeW: 20:14 < ws-client> **** @Solly (bun bun) which rule is that botting one? 20:16 < bridge> 7 20:16 < bridge> i break it regularly so i'd know 20:16 < bridge> without looking whats rule 3 in /rules 20:16 < bridge> ``` 20:16 < bridge> #1 Be nice – Don't insult others or engage in lazy negativity towards other people's projects, even as a joke. 20:16 < bridge> #2 No NSFW - No pornography, gore, or anything that could be considered Not Safe For Work. 20:16 < bridge> #3 Don't spam - Includes all types of spamming (messages, emojis, reactions, etc.). 20:16 < bridge> #4 Use channels only for their named purpose - Off-topic goes to ⁠off-topic, Teeworlds related images and videos go to ⁠showroom. 20:16 < bridge> #5 Use English whenever possible - If you want to talk in another language, do so in #off-topic. 20:16 < bridge> #6 Keep drama out of here - Sort out personal conflicts in DMs. 20:16 < bridge> #7 Don't promote or encourage illegal activities - Includes botting/cheating. 20:16 < bridge> ``` 20:16 < bridge> you know the blue name is a popularity contest 20:16 < bridge> i agree 20:16 < bridge> lots of very good blue names out there 20:16 < bridge> with their own interpretations of the rules 20:17 < bridge> also some that have 3 online hours per year 20:17 < bridge> they just havent been pruned yet 20:17 < bridge> oh man 20:17 < bridge> i almost seeded 20:17 < bridge> glad i was in time to stop it 20:18 < bridge> I ABSOLUTELY FUCKING HATE (#1) when people fall of ladders (#2) ladders laddders ladders ladders ladders ladders (#3) (#4) escaleras (#5) i also hate all mods and all admins because they are silly billies (#6) and i think you should try to overthrow your government because they are currently being dumb (#7) 20:18 < bridge> GET RATIOED 20:18 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1414676351138660483/checkmyratio.png?ex=68c06f85&is=68bf1e05&hm=e969a701770ccf7e23ed91772e1af721d5ebab7ef1981572b8c85e61a3a8ba8c& 20:18 < bridge> oh thank god it didnt spam github links 20:19 < bridge> Huh? 20:19 < bridge> i didnt mean it 20:19 < bridge> 🥺 20:19 < bridge> GET RATIOED EVEN HARDER 20:19 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1414676544940675232/recheckmyratio.png?ex=68c06fb3&is=68bf1e33&hm=6ddf0e586f832e17167d7fec0292361b06355e1c11ed2ecc9731b80b468f4da9& 20:19 < bridge> this man seeds 20:19 < bridge> is this a terminal :your_pfp: 20:19 < bridge> do u pay for a box 20:20 < bridge> lmao inf ratio 20:20 < bridge> yes this is a screenshot of my terminal just now 20:20 < bridge> Yellow terminal user wtf 20:20 < bridge> this is my laptop LMBO 20:20 < bridge> :greenthing: 20:20 < bridge> it looks like that because it's inverted colours and I use a cream yellow as my white colour 20:20 < bridge> i was on gruvbox light lately but the systemd default palette is absolutely mindlessly written 20:20 < bridge> it looks like that because it's inverted colours and I use a cream yellow as my foreground colour 20:21 < bridge> in response poettering basically said "uhhh just use dark mode lmao" 20:21 < bridge> it was unreadable over ssh and i didnt wanna turn off colors 20:21 < bridge> Stack memory allocation is effectively free 20:22 < bridge> wow what do u seed 20:22 < bridge> i bet he has lots of anime 20:22 < bridge> Here's the full window, it's not nearly as freaky 20:22 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1414677225290072255/heresthewholeterminal.png?ex=68c07055&is=68bf1ed5&hm=ad68098b6e33c667e201b33551cf707b2fb51737cbebe59595427878acb75c20& 20:22 < bridge> Yes that entire 1.8 terabytes is from a single torrent 20:22 < bridge> The Moomins 20:22 < bridge> my beloved 20:22 < bridge> that is some crazy seeding 20:22 < bridge> i got hatemail from my co-worker for using light mode zed 20:22 < bridge> but i literally can't stand dark mode for 8 hours a day anymore :( 20:22 < bridge> The funny thing is, we are using `NET_PACKETFLAG_UNUSED` but `NET_PACKETFLAG_TOKEN` is unused 20:23 < bridge> i cant have my editor putting me to sleep 20:24 < bridge> I'm guessing his issue is not the allocation but the filling of it each time 20:24 < bridge> well if you have a lot of light then light mode is nice and good. 20:24 < bridge> Was supposed to be a reply to this. Thanks mobile discord 20:25 < bridge> but usually its dark in my room 20:25 < bridge> He is still filling it every frame though, now it's just a member variable instead of stack 20:25 < bridge> Ah, yeah that changes pretty much nothing 20:26 < bridge> If you want improvement there you need to cache it 20:34 < bridge> yes but not copy by value 20:34 < bridge> yes but not copy by value, if you can just use the const reference and don't need it 20:35 < bridge> Without measurement this is not meaningful. Due to caching, the copies may have performed better. 20:35 < bridge> And you still have the same copy of the skin render info with `m_aRenderInfo[i] = GameClient()->m_aClients[i].m_RenderInfo;` regardless of member or stack variable 20:35 < bridge> i think i checked previously but having copies is required 20:35 < bridge> afaik/iirc copies is required 20:36 < bridge> Remember the first rule of optimizing 20:36 < bridge> which.. set of rules 20:36 < bridge> but probably in this case it would be profile 20:36 < bridge> The first rule is to measure instead of guessing 20:37 < bridge> I agree on that part, but not copying the CNetObject_Character in every function, I found this with the profiler 20:37 < bridge> I just see, that I changed too much in the PR, didn't want to get the m_aRenderInfo change in for the exact reasons you state :justatest: 20:37 < bridge> But has this improve it? 20:37 < bridge> But has this improved it? 20:38 < bridge> You need measurements before and after and include them in the PR if you claim a performance benefit 20:41 < bridge> I don't know how to do this properly. The profiling I did was ingame and is a bit inconsitent between each run 20:42 < bridge> I'd profile before and after the change, then compare how much time is spent in the code your are trying to optimize relative to the total time or time in the parent function. 20:43 < ws-client> **** emoji spam is against the rules? 20:44 < ws-client> **** is that the emote wheel? 20:44 < ws-client> **** oh wait those are discord rules 20:55 < bridge> @robyt3 this is before and after: I don't belive this does a lot tbh 20:55 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1414685508650401792/Unbenannt.png?ex=68c0780c&is=68bf268c&hm=29634354ee096118f62d12c4dd428fa8f517740d3572ede5651e1d15a5308e8a& 20:55 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1414685509166436414/Unbenannt1.PNG?ex=68c0780c&is=68bf268c&hm=fabba4fbd243722db9755fbf90322fdfc6e22b0c164fccfd216df2a2b3e622ae& 20:55 < bridge> On dm1 with 64 players and `zoom 0`, the item rendering actually has the most impact right now 20:55 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1414685513331380336/image.png?ex=68c0780d&is=68bf268d&hm=c85787938d693f73ee7dcec8c14c8b9da22c550dec86b0af4bb1710c15627809& 20:55 < bridge> interesting, that it's the items for you, I got my stats from an active linear server 20:55 < bridge> anybody knows a good platform to buy old pcs 20:55 < bridge> like for 20-40€ 20:56 < bridge> i guess wallapop.. 20:56 < bridge> looking for smth like amth ahtlon 64 20:56 < bridge> Because it scans through all snap items, and fetches them, just to check for the flag item which isn't even present 20:56 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1414685777765339226/image.png?ex=68c0784d&is=68bf26cd&hm=57d34f3df456da88270e62843fda8f9ab2f335ca62073e756142f0e563b90770& 20:56 < bridge> looking for smth like amd ahtlon 64 20:56 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1414685856609861794/image.png?ex=68c0785f&is=68bf26df&hm=62ca51b3a38af81feae6af139c441392e1e53950cd3e9974c1e4a56e80206764& 20:56 < bridge> ~~this is abusing freeleech though, my transmission stats are much "worse"~~ 20:56 < bridge> maybe it's a gametype thing? 20:56 < bridge> This could probably be optimized a lot by caching the flags when preparing the snapshot 20:57 < bridge> Flag rendering is unrelated to the game type, but with 64 players the snapshot is large and this performs a linear search that always misses 20:57 < bridge> I think I know exactly what tracker that is 20:57 < bridge> yeah it's not the most secret one 20:58 < bridge> I recently restarted over there after losing my account on another due to inactivity 20:59 < bridge> This is probably the biggest next optimization. Making the snap lookups better 20:59 < bridge> The client update is still mostly affected by the skin updating with many players 20:59 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1414686692094378165/image.png?ex=68c07927&is=68bf27a7&hm=749ec4834af3d98fb8f7f0a1bd24fb40c47ce80384fabde3462518088fbb4177& 21:00 < bridge> Yeah, 0.7 optimized this, but I don't know if this was possible to do without breaking demos somehow 21:01 < bridge> And making the networking threaded on Windows 21:05 < bridge> On my laptop with slow internet, I had massive frame drops every few seconds due to what I assume was networking. Don't have a profiler on it though to actually confirm whether that's the cause, but it seems a lot better with faster internet. 21:06 < bridge> Another optimization opportunity I know of on the server is better ban lookups 21:07 < bridge> Currently we do a linear search through bans and our N is getting to the point where it is getting slow 21:07 < bridge> I thought it was using some slightly smarter hash table? 21:08 < bridge> Maybe someone changed it? I remember seeing it in the profile a year ago when I was profiling some other issue 21:08 < bridge> ```cpp 21:08 < bridge> CBan *Find(const CDataType *pData, const CNetHash *pNetHash) const 21:08 < bridge> { 21:08 < bridge> for(CBan *pBan = m_aapHashList[pNetHash->m_HashIndex][pNetHash->m_Hash]; pBan; pBan = pBan->m_pHashNext) 21:08 < bridge> { 21:08 < bridge> if(NetComp(&pBan->m_Data, pData) == 0) 21:08 < bridge> return pBan; 21:08 < bridge> } 21:08 < bridge> 21:08 < bridge> return nullptr; 21:09 < bridge> } 21:09 < bridge> ``` 21:09 < bridge> For mutes and votemutes I just switched to `std::map` instead of a linear search 21:10 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1414689442114965584/aint_no_way.png?ex=68c07bb6&is=68bf2a36&hm=b9ec91b89332e05f2d2cdb12aaabc701e5ae152a0239e72f5e44089a05874d0e& 21:11 < bridge> this brainrot makes me agressive 21:11 < bridge> Guess my information was dated here 21:13 < bridge> I'll try to optimize this one 21:13 < bridge> See you in a month with a see commit PR and 4K lines changed :kyaruXD: 21:14 < bridge> "oh this is bad, oh wait if I change this I can optimize that" 21:14 < bridge> Only the flag rendering, not the entire snapshot handling :justatest: 21:14 < bridge> We even cache the flag in the snapshot already but don't use the cached on 21:14 < bridge> Like 14 years out of date it seems. Oy fixed this 😄 21:31 < bridge> Ahh, I misremembered what the issue was with it. It's that the hashmap doesn't have great performance for small-medium ban lists. I didn't want to move away from a linear search, I wanted to go to one 😄 21:34 < bridge> Or maybe something that plays better with the cache, like a poptrie 23:51 < bridge> wtf ` for(int Team : {TEAM_RED, TEAM_BLUE})` 23:51 < bridge> this works? 23:51 < bridge> :deen_star: 23:52 < bridge> https://en.cppreference.com/w/cpp/utility/initializer_list.html 23:53 < bridge> yea but didnt know it can be in for like that