00:11 <+bridge> xd 00:15 <+bridge> no I haven't, I don't have an apple device 01:24 <+bridge> Interesting VS "alternative" editor https://10xeditor.com/ 01:27 <+bridge> Nice 01:28 <+bridge> Proprietary tho(?) 01:30 <+bridge> So is VS? 01:33 <+bridge> So what 03:18 <+bridge> open source would probably be the only thing compelling enough to make me use something other than VS when i need it 03:18 <+bridge> the only noteworthy thing here is the vs solution & project management, everything else seems like generic IDE features 03:33 <+bridge> Yeah I just realized it's not even free 03:33 <+bridge> Kinda trash lol 03:34 <+bridge> yea and the guy has game dev background 03:34 <+bridge> I thought it was being developed by Epic but actually they just added support for it 04:03 <+bridge> i think we should just embrace steam integrations. steam account, steam networking etc 04:07 <+bridge> No 05:28 <+bridge> It's not apple specific. It's basically webgl implementation for browsers 06:20 <+bridge> https://app.adjust.com/3bipw7n 06:22 <+bridge> Nadina Softic 06:22 <+bridge> 070 444 763 06:22 <+bridge> nadinasoftic80@gmail.com 06:25 <+bridge> 20220423\_235337-1.jpg 06:25 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1117670929112248360/20220423_235337-1.jpg 06:25 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1117671016806744196/Screenshot_2023-06-12-06-25-22-69_e4424258c8b8649f6e67d283a50a2cbc.jpg 06:28 <+bridge> LOL 06:28 <+bridge> @Discord Mod 09:06 <+bridge> ah right its metal not angle 09:06 <+bridge> but still no ^^ 09:43 <+bridge> Observeration: 09:43 <+bridge> The favorites tab requires the master server to work or to timeout before IPs are shown, which is abit annoying. 09:48 <+bridge> https://lore.kernel.org/bpf/20230609005903.D6C632B02483E418@freevisitday.com/T/#u 10:04 <+bridge> Mh yeah. We had a relatively good up time yet, and showing ips sounds undesirable. Also we apparently removed the leak ip option inside the UI. So favorites are not as useful without master server anymore. 10:04 <+bridge> 10:04 <+bridge> I think we once discussed saving a old master server list on disk all the time, but rejected the idea BCS of potentially old data, which might be unintuitive if the data is old enough(e.g. for ppl where firewall suddenly blocks data etc.) 10:32 <+bridge> Why not cache the server name for a certain amount of time like 1 week 10:33 <+bridge> Instead of ip show the cached server name, only players/max players wont be shown 11:00 <+ChillerDragon> @cyberFighter 11:02 <+ChillerDragon> @reitw lmao bpf nigerian prinz scammer 11:07 <+bridge> xD 11:25 < ws-client> !rust https://i.imgur.com/jcseM5Z.png 11:25 < chillerbot1> @Ryozuki 11:25 < ws-client> lmao 11:26 < ws-client> what drama did i miss 11:28 <+bridge> reddit 11:29 <+bridge> “L” 11:33 <+ChillerDragon> 1;3A 11:33 <+ChillerDragon> ops 11:33 < ws-client> !c apparently u dont see my offtopic ping 11:33 < chillerbot1> ChillerDragon 11:34 <+ChillerDragon> ddnet offtopic is buffer 106 in my weechat xd 11:34 <+ChillerDragon> i dont really see pings there haha 11:36 <+ChillerDragon> but yea also on webchat it doesnt show you ping notifictions like on discord for other channels its a todo 11:36 <+bridge> due to : https://web.archive.org/web/20230612040007/https://old.reddit.com/r/rust/comments/146y5y1/announcement_rrust_will_be_joining_the_blackout/ 11:36 <+ChillerDragon> but i probably have plenty of time to implement such things until @heinrich5991 finally bridged offtopic xd 11:36 < ws-client> 😂 11:36 < ws-client> @reitw i c 11:37 <+ChillerDragon> i rust 11:38 < ws-client> i c q 11:38 <+ChillerDragon> xd 12:49 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1117767507042906132/image.png 12:49 <+bridge> holy 12:49 <+bridge> undeclared variable detection! 12:49 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1117767665797312592/image.png 12:49 <+bridge> :gigachad: 12:51 <+bridge> damn 13:03 < ws-client> pog 13:03 < ws-client> better than rust 13:11 <+bridge> hmmm, cant wait for ryo to implement his own undeclared variable detection in Rust 13:17 <+bridge> hi, development gods 13:17 <+bridge> when translate clientsided 13:17 <+bridge> when chat translate clientsided 13:17 <+bridge> when chat translate clientsided feature 13:18 <+bridge> If you buy an API key for 3k active users we can do that 13:18 <+bridge> I hope u have a million over 13:19 <+bridge> I hope u have a million left 13:19 <+bridge> I also don't know how it would work with everyone's chat being sent to an external translation provider, sounds like a privacy nightmare 13:19 <+bridge> They charge you for characters 😄 Atleast deepl and google translate. 500.000 are free, for 1 million characters a month you'll pay 20 bucks 13:19 <+bridge> Just force everyone to learn English 😄 13:20 <+bridge> We could allow an API and stub for ddnet to load an own implementation. Then it's at least not our concern 13:20 <+bridge> Like Antibot? 13:21 <+bridge> learn english 13:21 <+bridge> its a valuable skill 13:21 <+bridge> Basically yes 13:21 <+bridge> @Jupeyy_Keks host a server with a LLM translating 13:21 <+bridge> :justatest: 13:21 <+bridge> Just use OpenAI, what could possible go wrong :justatest: 13:23 <+bridge> Gpt4 is og. A friend of my brother a doctor in Latin. He said gpt4 is basically native speaker 😂 13:23 <+bridge> I can now send my production crashes to OpenAI to tell me how to fix them: 😄 https://docs.sentry.io/product/issues/issue-details/ai-suggested-solution/ 13:24 <+bridge> Did u actually try? ^^ 13:24 <+bridge> I always found it bad when it comes to such stuff xd 13:24 <+bridge> No, I'm waiting for approval before I potentially send customer data to another company 13:24 <+bridge> Backtrace could contain something interesting like table names 13:24 <+bridge> The only main concern would be if you would use this service for humans below 16, GDPR needs parental consent 13:24 <+bridge> there are free translators in internet to use, why pay? 13:25 <+bridge> They will just rate-limit at any amount we'd require of course 13:25 <+bridge> Yeah they totally want our Traffic 13:25 <+bridge> They are mostly fair use and automated access is in most cases against their ToS 13:25 <+bridge> well, i dont know 13:26 <+bridge> but i know surely translate inside the game would be neat 13:26 <+bridge> There were clients offered this feature 13:26 <+bridge> there are already china brutal 4-5 players who play on ger with ping 320 13:26 <+bridge> dont know if they still exists 13:26 <+bridge> and russian players meet ger players too 13:26 <+bridge> languige barrier is not cool 13:27 <+bridge> Go for english 13:27 <+bridge> we should make it the way when you see original message and translation next to it( original message in chat and translated next to it, on the right) 13:28 <+bridge> if tw could help learn languges it would be cool 13:28 <+bridge> there also many new player that are kids and dont know even english 13:28 <+bridge> there also many new players that are kids and dont know even english 13:29 <+bridge> i know english as you can see my friend 13:29 <+bridge> but german players speak german with each other and im tired to alt tab to browser to translate 13:29 < ws-client> its probably more likely that kids know english, with all their tiktok trash input 😂 13:30 <+bridge> no, in russia there is english lang in schools, but the cool part is-even teacher sometimes dont know the subject of teaching 13:30 <+bridge> Thats a nice feature for sure, but as you mentioned it also bring great responsability. In europe you'd, i guess, thankfully have the GDPR. So adding this feature would need every player to accept either the DDNet ToS & Privacy Policy or give their consent to allow DDNet send their data to Deepl or Google for example. 13:30 <+bridge> if its not moscow or saint-petersburg, teachers dont teach you eng at all 13:30 < ws-client> well anyway. The only thing we could realistically do is an API. then u can load your free translator, until you get banned because what you do is breaking their TOS 13:31 <+bridge> why cant we make our own translator and use it? 13:31 < ws-client> 😂 13:31 <+bridge> Because translation is complicated 13:31 <+bridge> Its not like just use a dictionary 13:31 < ws-client> if u explain to me how human languages work in 20 words, im ok with it 😂 13:31 <+bridge> In most cases you cant translate 1:1 13:31 <+bridge> Am I crazy, I swear 0.7 had some type of translator :justatest: 13:31 <+bridge> just make parsing one time from some google translate for popular lang 13:32 <+bridge> no 13:32 <+bridge> It didn't? 13:32 <+bridge> we dont need 1;1 13:32 <+bridge> But it depends on the sentence, caching the result will lead to a HUGE database 13:32 < ws-client> i dont know any game doing that.. as said it costs lot of money 13:32 <+bridge> just translate like you can, that would be very nice already 13:32 <+bridge> Atleast the traffic will cost thousands of dollars 13:32 < ws-client> if at all some game created by microsoft or other big players 13:33 <+bridge> Wtf am I remembering then 13:33 <+bridge> Thats why rocket league removed their chat and used static chat stuff only 😄 13:33 <+bridge> there was xclient for 0.7 13:34 <+bridge> aimbot, endless drawing players at any distance bypassing the server max distance, and translator 13:34 <+bridge> it was closed source sadly 13:34 <+bridge> But a client-side addon would be fun. So the user has to pay for the translation api on client-side 13:34 <+bridge> yeah 13:34 <+bridge> just some lua script 13:34 <+bridge> I didn't use a custom client afaik, besides fclient 13:35 <+bridge> me too, cheat clients are fun but they have reputation risks for u, so i use only no cheat clients 13:35 <+bridge> Teeworlds Players dont pay for servers, but for translation apis. Thats gigachad 13:35 <+bridge> you want to make DLC "translator for messages" in steam? lmao 13:36 <+bridge> many players would buy it just to cheer up ddnet 13:36 <+bridge> Even if you use Google Translate or Deepl or Yahoo Translate, you need an API access. Costs around 20 bucks per 1 million characters 13:36 <+bridge> we can do donation at main ddnet page for that 13:37 <+bridge> i remember there was donations for servers 13:37 < ws-client> i think u dont understand smth critical: ppl will abuse the fact that there is a cost per characters 13:37 < ws-client> and this will increase the cost 13:37 <+bridge> I do understand, just trying to tell that it will be very pricy 13:38 < ws-client> i didnt mean you 13:38 < ws-client> i mean the guy thinking we could handle it over donations ^^ 13:38 <+bridge> Ah, yeah donations prob. wont cover this at all 13:39 <+bridge> Not even cloudflare is covered by donations 😄 13:39 <+bridge> They offered 3k/location/month and 1k setup fee. Sounds fair, huh? 13:58 < ws-client> the reddit protest is extremely annoying. Many ppl use that instead of stack overflow <.< 13:58 < ws-client> google cache also not there ;c 14:08 <+bridge> i dont think we can 14:08 <+bridge> the original idea was to pirate it 14:09 <+bridge> like, for free 14:09 <+bridge> 😂😂😂 14:09 <+bridge> Let's just steal cloud flare severs 14:09 <+bridge> Fixes all problems 14:10 <+bridge> nah bro 14:11 <+bridge> my idea is to make lua(or dll) translation script, make it unnoficial and easy to install 14:23 <+bridge> yeah lets say you dont know what you talking about :justatest: 14:25 <+bridge> got struct field reordering and padding pog 14:25 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1117791667802603611/image.png 14:30 <+bridge> guys can you make command in f1 "refresh ping for all servers" 14:30 <+bridge> everytime i want to update ping i need to go to server or leak_ip to all servers 14:31 <+bridge> not cool 14:31 <+bridge> yeah 14:31 <+bridge> :greenthing: 14:33 <+bridge> i think ath had it 14:41 <+bridge> This is intentionally. Pinging a server means u leak ur ip to the server, which ultimately means an attacker can dos u 15:08 <+bridge> does any admin have how to take my desban? 15:10 <+bridge> One channel is enough for questions 15:11 <+bridge> :justatest: actually expensive shit 15:12 <+bridge> I wouldn't imagine using Google Translate API for teeworlds, that would be too much of a hassle 15:20 <+bridge> @Jupeyy_Keks why is the emote lag something recent? 15:21 <+bridge> is this cuz some new troll 15:21 < ws-client> yes, also its only if network is the limitation 15:21 < ws-client> i doubt u could make it work on GER servers 15:22 <+bridge> yup 15:26 < ws-client> i dont have the server logs where it happened tho. from the analysis of the demo i'd actually think that should also not be enough to kill a server. But who knows 15:27 < ws-client> ^ there could be more to it 15:30 <+bridge> I noticed if you keep spamming emotes that eventually the send buffer fills up or something like that so you can't send anything in rcon anymore as well (only client side) 15:30 < ws-client> how tall is our send buffer? 15:31 < ws-client> spamming = change code or with keyboard? 15:32 <+bridge> with a config file 15:32 < ws-client> but now that you say it, another problem might be that emoticons are vital. so they might require a resend and are kept inside the buffer indeed 15:32 < ws-client> that would also be solved if it would be part of the snapshot 15:32 <+bridge> not on the client side 15:33 <+bridge> @heina 15:33 < ws-client> do you mean me or robyte? 15:34 <+bridge> @heinrich5991 also do u know why the outage on ddnet.org? or u cant tell cuz security issues 15:34 <+bridge> im curious 15:34 <+bridge> server was unreachable 15:34 <+bridge> hoster shenanigans? 15:34 <+bridge> it's unclear what caused it 15:34 <+bridge> I meant you Jupstar 15:34 <+bridge> because it's also buffering on the client side 15:34 <+bridge> (which is what @Robyt3 also referred to) 15:35 < ws-client> ? 15:35 < ws-client> i dont get it xD 15:37 < ws-client> if robytes spams emotes it might be buffered in his client. when the server sends emotes it might buffer them on the server side 15:38 < ws-client> and robytes analysis made me rethink that this could also be a problem 15:38 <+bridge> ah 15:38 < ws-client> and being part of the snapshot would fix it 15:38 < ws-client> server side at least^^ 15:38 <+bridge> fix that, yes 15:38 <+bridge> not what Robyt3 referred to, though 15:38 <+bridge> he said something about his rcon commands not going through anymore 15:38 <+bridge> 32kb 15:38 < ws-client> when he spams emotes 15:38 < ws-client> as far as i understod 15:39 <+bridge> ye 15:39 <+bridge> yeah, after I stop spamming emotes the rcon commands don't go through anymore 15:39 < ws-client> @Robyt3 on which server btw, local? 15:39 <+bridge> local 15:39 < ws-client> surprising tbh 15:39 < ws-client> i mean 32kb is not a lot if its bytes and not bits xd 15:40 < ws-client> but also for a local server more than enough i'd guess 15:40 <+bridge> seems like that's the memory only for the lightweight `CNetChunkResend` data structure 15:41 <+bridge> it doesn't include the data itself 15:41 <+bridge> nah, also the data, probably 15:41 <+bridge> the resend mechanism is bad 15:41 < ws-client> he meant that like u mean it xD 15:42 <+bridge> ah, yes, I see how it is 15:42 <+bridge> it has a pointer to the data but it allocs the data after the struct 15:42 < ws-client> i mean double it and check if it fixes ur problem 15:42 < ws-client> xd 15:43 <+bridge> then it would just take longer to fill up, but the issue is that is doesn't empty fast enough, isn't it? 15:44 < ws-client> yeah but a local server? 15:44 < ws-client> on* 15:45 < ws-client> i didnt read the network code, but the server simply acks it and its removed, isnt it? 15:45 < ws-client> and the server wakes up when there is network activity 15:45 <+bridge> if it was emptying the buffer fast enough then eventually the rcon messages should work again 15:45 < ws-client> maybe they are completely dropped 15:45 < ws-client> if there is no space in the buffer left 15:46 < ws-client> @heinrich5991 tell us, u know^^ 15:46 <+bridge> yes, we did that bad thing at some point 15:46 <+bridge> to completely drop old messages that we might still need to resend 15:50 <+bridge> *we changed to doing that bad thing at some point 15:54 < ws-client> mhh well for the server this resend struct is defs a problem. the emoticon packets itself are pretty small, with compression they probably end up in 2-3bytes + the header. but the struct already uses like 36 bytes 15:56 <+bridge> will be fixed by quic™ 15:56 < ws-client> ^^ 15:57 <+bridge> quic make it quick 15:59 < ws-client> i should do benchmarks on my QUIC impl, see the throughput 16:01 < ws-client> @heinrich5991 yours will not be async right? and also not in a seperate thread? does quiche offer a non blocking API similar to what we use now then? 16:01 < ws-client> never really looked into that API 16:05 <+bridge> quiche is without IO 16:05 <+bridge> mine can be moved to a thread quite easily, I think 16:05 <+bridge> but currently it's not 16:06 <+bridge> not sure what you mean by async 16:06 < ws-client> well if it has no runtime its also no async :D 16:06 < ws-client> i meant the runtime 16:07 <+bridge> Why is there no default way of getting a core dump on panic in Rust? Best I found so far is https://gist.github.com/epilys/a6caba03cb02cfd2880fd80755cd08b8 16:07 <+bridge> coredump? 16:08 <+bridge> arent coredumps for segfaults only 16:08 <+bridge> i found a crate but idk https://crates.io/crates/coredump 16:08 <+bridge> xd 16:08 <+bridge> You can create a core file whenever you want, on panic it's interesting to figure out the state when something went terribly wrong 16:09 <+bridge> 16:09 <+bridge> I guess something like this would work in Cargo.toml too, but has to be done at compile time, not runtime: 16:09 <+bridge> ``` 16:09 <+bridge> [profile.release] 16:09 <+bridge> panic = "abort" 16:09 <+bridge> ``` 16:09 <+bridge> panic is not for terribly wrong tho 16:09 <+bridge> just wrong 16:09 <+bridge> but thats just me being pedantic xd 16:09 <+bridge> Panic is terribly wrong, it means you can't recover. If you can recover throw an exception or bubble up an error, depending on language 16:10 <+bridge> > 16:10 <+bridge> > If something might reasonably be absent, Option is used. 16:10 <+bridge> > If something goes wrong and can reasonably be handled, Result is used. 16:10 <+bridge> > If something goes wrong and cannot reasonably be handled, the thread panics. 16:10 <+bridge> > If something catastrophic happens, the program aborts. 16:10 <+bridge> yeye 16:10 <+bridge> maybe the crate i sent shows some hints 16:11 <+bridge> but well i guess ppl didnt bother because panic gives a backtrace 16:11 <+bridge> The repo does the same as the gist I think 16:11 <+bridge> u can also run ur program with rust_backtrace=full always 16:11 <+bridge> Backtrace will not show me the state of all related data structures 16:12 <+bridge> i see 16:12 <+bridge> well yeah no default way 16:12 <+bridge> do the gist xd 16:12 <+bridge> i found a reddit link but 16:12 <+bridge> reddit is closed 16:13 <+bridge> maybe rust doesnt have it byy default cuz its not portable or smth 16:38 <+bridge> the gist sounds like a good way to get a dump 16:39 <+bridge> that's not really a reason not to do it tbh 16:39 <+bridge> more like a reason to do it 16:40 <+bridge> because the std lib is supposed to abstract away the different platform and get good behavior on all of them 16:40 <+bridge> its weird cuz 16:40 <+bridge> i dont see any rfc related to this 16:40 <+bridge> well core dump sadly gives lot of noise 16:40 <+bridge> when searching xd 16:40 <+bridge> ^^ 16:41 <+bridge> does windows have core dumps at all 16:41 <+bridge> I think so 16:42 <+bridge> https://en.wikipedia.org/w/index.php?title=Core_dump&oldid=1157626885#User-mode_memory_dumps 16:53 <+bridge> mmmm Reddit won't load for me 17:19 <+bridge> rust reddit is down ^^ 17:33 <+bridge> @heinrich5991 you network pro right? 17:33 <+bridge> what is a common packet size for benchmarks xd 17:34 <+bridge> not a network pro 17:34 <+bridge> what kind of benchmark do you mean? 17:34 <+bridge> ah, teeworlds networking? 17:34 <+bridge> well kind of xd 17:34 <+bridge> my quic impl 17:34 <+bridge> idk, open teeworlds traffic in wireshark 17:34 <+bridge> and sample some of the packet sizes by hand 17:34 <+bridge> one way, it's INPUT packages mostly 17:35 <+bridge> the other way is SNAPSHOTs 17:35 <+bridge> ok, lets try that out 17:35 <+bridge> what do u think is the minimum it should reach? 😂 17:35 <+bridge> single client 17:35 <+bridge> 17:35 <+bridge> and server with 64 clients 17:36 <+bridge> i mean packets per second send & recv 17:37 <+bridge> i guess this 😂 17:37 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1117840053901734028/image.png 18:29 <+bridge> @deen did u set r/ddnet as private? 18:31 <+bridge> ah yes u did 18:31 <+ChillerDragon> wot why 18:31 <+bridge> good moment for reddit to restart some infrastructure XD 18:32 <+ChillerDragon> ye 18:32 <+bridge> !c protests 18:32 < chillerbot1> ChillerDragon 18:32 <+ChillerDragon> ddnet is protesting? 18:32 <+bridge> yeah 18:32 <+bridge> against reddit 18:32 <+ChillerDragon> why 18:32 <+ChillerDragon> wat reddit do 18:32 <+bridge> i removed the accept requests to join so we dont get spammed xd 18:32 <+bridge> reddit is putting a price to the API 18:32 <+bridge> !c apparently they destroy reddit for stackoverflow users 18:32 < chillerbot1> ChillerDragon 18:32 <+ChillerDragon> o 18:32 <+bridge> making 3rd party clients unusable 18:32 <+bridge> xd 18:32 <+ChillerDragon> i see 18:33 <+ChillerDragon> you mean people that use reddit as SO alternative? 18:33 <+bridge> the reddit app sucks hard 18:33 <+bridge> ppl use alt clients 18:33 <+ChillerDragon> that makes sense 18:33 <+bridge> https://www.theverge.com/2023/6/12/23758002/reddit-crashing-api-protest-subreddit-private-going-dark 18:33 <+bridge> https://www.bbc.com/news/technology-65855608 18:34 <+bridge> https://www.washingtonpost.com/technology/2023/06/12/reddit-blackout-begins/ 18:34 <+bridge> xd 18:34 <+bridge> the world knows 18:34 <+ChillerDragon> wait going private causes reddit to break? 18:34 <+ChillerDragon> i would assume it increases stability 18:34 <+bridge> it causes nobody to see the subreddit 18:34 <+bridge> but reddit broke cuz probs someone ddosing, or they cant handle this idk why 18:34 <+ChillerDragon> a 18:35 <+ChillerDragon> > A significant number of subreddits shifting to private caused some expected stability issues 18:35 <+ChillerDragon> fake quote then 18:35 <+bridge> no its true 18:35 <+bridge> im just assuming 18:35 <+bridge> xd 18:35 <+bridge> for me it works 18:35 <+ChillerDragon> ryo > fake news media 18:35 <+bridge> same 18:36 <+bridge> https://www.reddit.com/r/dankmemes/comments/147l9fr/so_many_subreddits_just_vanished_like_that/ 18:36 <+bridge> lmao 18:36 <+bridge> the post itself is not nsfw 18:36 <+ChillerDragon> ew auth wall 18:36 <+bridge> https://cdn.discordapp.com/attachments/293493549758939136/1117855063696752690/image.png 18:37 <+bridge> :justatest: 18:38 <+bridge> imagine caring about r/rule34 18:38 <+ChillerDragon> wat dis 18:39 <+bridge> twinbops 18:39 <+bridge> https://media.discordapp.net/attachments/929807268994744340/1017898009348014100/3D8EC34B-372F-48EE-8C6A-F5D319DD7D3B.gif 18:39 < ws-client1> lmao wat a trol gif 18:40 <+bridge> flamer 18:40 < ws-client1> pinger 18:40 < ws-client1> its my local dev setup test alt account 20:40 <+bridge> @heinrich5991 i did some benchmarks now, i find the results really surprising and also unexpected (maybe?) 20:40 <+bridge> **unordered lossless** packets: 20:40 <+bridge> ~80k - ~100k pps on a single client to server connection depending on how i tune https://docs.rs/quinn/latest/quinn/struct.TransportConfig.html 20:40 <+bridge> 20:40 <+bridge> and 20:40 <+bridge> ~360k - ~390k pps on multiple clients (tested between 8-16 on my 16core CPU) to server with default transport config 20:40 <+bridge> 20:40 <+bridge> packet size was always 64 bytes inner packet data size, unordered packets always open a new QUIC stream like 20:40 <+bridge> 20:40 <+bridge> **udp datagram** (it defs lost lots of packets ^^) (multi): 20:40 <+bridge> ~370k - ~400k pps (there were about 740k packets tried to be sent tho, so insane packet loss 😂 and CPU usage was also bit lower, so i wouldn't judge about this test too much, the benchmark was probably not well designed for this) 20:40 <+bridge> 20:40 <+bridge> **ordered lossless** packets: 20:41 <+bridge> **now** the surprising part to me: 20:41 <+bridge> ~210k pps (single client) 20:41 <+bridge> ~960k - ~1.1 million pps (multi) 20:41 <+bridge> 20:41 <+bridge> The ordered packets use a single stream and are insanely much quicker. 20:41 <+bridge> I surprised about this because i'd have thought it's better to create many streams as in: 20:41 <+bridge> "Streams may be unidirectional or bidirectional, and are cheap to create and disposable. For example, a traditionally datagram-oriented application could use a new stream for every message it wants to send, no longer needing to worry about MTUs." 20:41 <+bridge> (https://docs.rs/quinn/latest/quinn/) 20:41 <+bridge> But maybe the overhead of spawning tokio tasks is too much in these cases (defs need to check this) 20:41 <+bridge> 20:41 <+bridge> since my CPU is probably faster than this, the results are probably still bad xD: 20:41 <+bridge> https://blog.cloudflare.com/how-to-receive-a-million-packets/ 20:41 <+bridge> @heinrich5991 i did some benchmarks now, i find the results really surprising and also unexpected (maybe?) 20:41 <+bridge> **unordered lossless** packets: 20:41 <+bridge> ~80k - ~100k pps on a single client to server connection depending on how i tune https://docs.rs/quinn/latest/quinn/struct.TransportConfig.html 20:41 <+bridge> 20:41 <+bridge> and 20:41 <+bridge> ~360k - ~390k pps on multiple clients (tested between 8-16 on my 16core CPU) to server with default transport config 20:41 <+bridge> 20:41 <+bridge> packet size was always 64 bytes inner packet data size, unordered packets always open a new QUIC stream 20:41 <+bridge> 20:41 <+bridge> **udp datagram** (it defs lost lots of packets ^^) (multi): 20:41 <+bridge> ~370k - ~400k pps (there were about 740k packets tried to be sent tho, so insane packet loss 😂 and CPU usage was also bit lower, so i wouldn't judge about this test too much, the benchmark was probably not well designed for this) 20:41 <+bridge> 20:41 <+bridge> **ordered lossless** packets: 20:42 <+bridge> **now** the surprising part to me: 20:42 <+bridge> ~210k pps (single client) 20:42 <+bridge> ~960k - ~1.1 million pps (multi) 20:42 <+bridge> 20:42 <+bridge> The ordered packets use a single stream and are insanely much quicker. 20:42 <+bridge> I surprised about this because i'd have thought it's better to create many streams as in: 20:42 <+bridge> "Streams may be unidirectional or bidirectional, and are cheap to create and disposable. For example, a traditionally datagram-oriented application could use a new stream for every message it wants to send, no longer needing to worry about MTUs." 20:42 <+bridge> (https://docs.rs/quinn/latest/quinn/) 20:42 <+bridge> But maybe the overhead of spawning tokio tasks is too much in these cases (defs need to check this) 20:42 <+bridge> 20:42 <+bridge> since my CPU is probably faster than this, the results are probably still bad xD: 20:42 <+bridge> https://blog.cloudflare.com/how-to-receive-a-million-packets/ 20:50 <+bridge> well in real world its always different tho, shouldnt be underestimated 20:50 <+bridge> the packets block each other much more often than on a local socket 20:50 <+bridge> probably need 2 distant fast PCs with enough bandwidth 😂 20:51 <+bridge> can i get someone else to test code gen on the vs 2022 cmake generator 20:51 <+bridge> lets invest 4k€ for ddnet 20:55 <+bridge> wdym? 20:57 <+bridge> cmake finds python and there is no error or warning while generating the cmake but `src/game/generated/` doesn't exist when i build 20:57 <+bridge> a single stream is less management overhead than separate streams 20:57 <+bridge> so you get an error while building? 20:59 <+bridge> (empty) files are being placed in `build/src/game/generated/` and that's being added to the include path i guess so it doesn't fail as a global `<>` include 20:59 <+bridge> so it's expecting nonexistent symbols 20:59 <+bridge> many errors 21:00 <+bridge> maybe the build folder behavior stuff is intended but either way the files are empty lol 21:01 <+bridge> the build folder behavior is intended 21:01 <+bridge> empty files sounds like python execution fails 21:10 <+bridge> sure, but 3 times less throughput is rather disappointing for the unordered ones imho. It probably makes sense as said spawning tokio tasks costs time, storing all open streams somewhere (tho the max defaults to 100 streams) 21:17 <+bridge> to communicate how far you're on many unordered streams, you need much more ack data e.g. 21:17 <+bridge> for communicating how far you are on the ordered ones, you just need one integer 21:19 <+bridge> so u don't ack seperately sent chunks individually? 21:19 <+bridge> no need to, it's a stream 21:19 <+bridge> it's up to the quci implementation how clever it is 21:20 <+bridge> typical tcp implementations only ack it once 21:20 <+bridge> mh yeah makes sense, i mean most of the time no reordering happens even on UDP (at least for local socket) 21:20 <+bridge> 21:20 <+bridge> it it does happens sometimes xd 21:20 <+bridge> yea, probably no reordering on local sockets 21:20 <+bridge> ok but i sent multiple individual packets over it, so it's defs "luck" 21:21 <+bridge> there in fact is.. but not a lot 😄 21:21 <+bridge> hmmm. I tried to logically reason about it 21:21 <+bridge> how the fuck does one get reordering there?! 21:23 <+bridge> i mean it could have to do with different threads (even if the "send" itself was in order) writing to it 21:34 <+bridge> ah 22:34 <+bridge> haha, i got a screen burn from the bottom right hud scores 22:48 <+bridge> Pic or did not happen 23:19 <+bridge> sadge