08:11 <+bridge_> [ddnet] Yes hehe 08:11 <+bridge_> [ddnet] (@Ryozuki) 09:11 <+bridge_> [ddnet] yes 09:11 <+bridge_> [ddnet] Well, with code changes 10:04 <+ChillerDragon> https://zillyhuhn.com/cs/.1647507839.png 10:04 <+ChillerDragon> what does the checkmark mean again? isnt that official ddnet servers or something? 10:04 <+bridge_> [ddnet] yeah, means ddnet or kog 10:04 <+ChillerDragon> interesting 10:05 <+ChillerDragon> @fokkonaut ?xd 10:05 <+bridge_> [ddnet] that's not one of ours, so it's kog 10:05 <+bridge_> [ddnet] on kog tab i am 10:06 <+ChillerDragon> xxxD 11:28 <+bridge_> [ddnet] mhh so sad that c++ standard is still so hard behind with utf8 support 11:28 <+bridge_> [ddnet] tried to make regular expressions with utf8 support, but not even c++20 adds it for std::regex 11:28 <+bridge_> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/953963064947011614/unknown.png 11:30 <+ChillerDragon> ouuu std::regex sounds cool tho 11:30 <+bridge_> [ddnet] yeah especially multiple excludes are nice 😄 11:30 <+ChillerDragon> my text parsing become really ugly latley i str_find the shit out of strings xd 11:30 <+bridge_> [ddnet] haha std::regex is slower than starting php and using regex there 11:31 <+ChillerDragon> lmao 11:31 <+bridge_> [ddnet] @Not Keks rust has first class utf8 support and fast regex 11:31 <+bridge_> [ddnet] but isnt it implementation dependent? 11:31 <+bridge_> [ddnet] or is it an API flaw? 11:31 <+bridge_> [ddnet] i think it uses std::string right 11:32 <+bridge_> [ddnet] it doesnt use string_view 11:32 <+bridge_> [ddnet] so no optimizations 11:32 <+bridge_> [ddnet] yeah they want to add string view support, soon™️ 11:32 <+bridge_> [ddnet] xd 11:32 <+bridge_> [ddnet] https://stackoverflow.com/questions/52697265/why-is-c-regex-so-slow 11:32 <+bridge_> [ddnet] but honestly we have like 1000 entries, i dont really notice the slowness 11:32 <+bridge_> [ddnet] vscode's regex is fast 11:32 <+bridge_> [ddnet] i generally am impressed by its file search speed 11:33 <+bridge_> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/953964175368024084/unknown.png 11:33 <+bridge_> [ddnet] the top 11:33 <+bridge_> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/953964186185117756/unknown.png 11:33 <+bridge_> [ddnet] the bottom of the list 11:33 <+bridge_> [ddnet] c++ stl slower than python 11:33 <+bridge_> [ddnet] 11:33 <+bridge_> [ddnet] xd 11:33 <+ChillerDragon> vscode on top 11:33 <+bridge_> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/953964376619118652/unknown.png 11:33 <+bridge_> [ddnet] on the optimized rust wins 11:33 <+bridge_> [ddnet] :BASED: 11:34 <+bridge_> [ddnet] yeah nice 11:34 <+bridge_> [ddnet] c++ has to hurry up a bit 11:34 <+bridge_> [ddnet] not like its impossible to catch up 11:34 <+bridge_> [ddnet] Python has everything interesting like this implemented in C 11:34 <+bridge_> [ddnet] so it mostly depends on what algo and optimizations, not language 11:34 <+bridge_> [ddnet] i wonder if they include init time 11:35 <+bridge_> [ddnet] in the bench 11:35 <+bridge_> [ddnet] e.g starting python 11:35 <+bridge_> [ddnet] xd 11:35 <+bridge_> [ddnet] > Measuring is done inside the programs to avoid include startup, reading and writing times on results. 11:35 <+bridge_> [ddnet] oh it says it 11:35 <+ChillerDragon> how does :BASED: look like? 11:35 <+ChillerDragon> ryo send image 11:35 <+bridge_> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/953964853423407124/unknown.png 11:36 <+ChillerDragon> ty 11:36 <+bridge_> [ddnet] xd 11:36 <+bridge_> [ddnet] here u can find more https://betterttv.com/emotes/shared/search?query=based 11:37 <+ChillerDragon> https://cdn.betterttv.net/emote/619b0ca7b50549e7e5005948/3x 11:37 <+bridge_> [ddnet] xd 11:38 <+bridge_> [ddnet] https://benchmarksgame-team.pages.debian.net/benchmarksgame/performance/regexredux.html 11:38 <+ChillerDragon> https://cdn.betterttv.net/emote/5f88317183a3cf5d503f83c6/3x 11:38 <+bridge_> [ddnet] well if they use their own impl of regex i guess it will be faster 11:39 <+bridge_> [ddnet] but c++ std regex is not 11:39 <+bridge_> [ddnet] xddd 11:39 <+bridge_> [ddnet] ^^ 11:39 <+bridge_> [ddnet] well we could use boost regex with unicode support, but is always annoying to add dependencies 11:39 <+bridge_> [ddnet] i wonder if C impl optimizes for ascii only sometimes 11:39 <+bridge_> [ddnet] in rust its always utf8 11:39 <+bridge_> [ddnet] but boost is really useful xd 11:39 <+bridge_> [ddnet] isnt boost like giant 11:39 <+bridge_> [ddnet] yes 11:39 <+bridge_> [ddnet] like adding a second stdlib 11:40 <+bridge_> [ddnet] xd 11:40 <+bridge_> [ddnet] yeah 11:40 <+bridge_> [ddnet] but a useful one xD 11:40 <+bridge_> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/953966124016496690/unknown.png 11:40 <+bridge_> [ddnet] the c code looks like some over optimized stuff 11:41 <+bridge_> [ddnet] i doubt it has real use case 11:41 <+bridge_> [ddnet] i think all code looks like it 11:41 <+bridge_> [ddnet] rust is also allowed to use unsafe operations 11:41 <+bridge_> [ddnet] Typical problem with benchmarks: https://en.wikipedia.org/wiki/Goodhart%27s_law 11:42 <+bridge_> [ddnet] https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/regexredux-rust-6.html 11:42 <+bridge_> [ddnet] just always trade everything for performance xd 11:42 <+bridge_> [ddnet] the top answer doesnt use unsafe 11:42 <+bridge_> [ddnet] but still looks pretty similar to me 11:42 <+bridge_> [ddnet] to the c code 11:42 <+bridge_> [ddnet] i dont see a malloc with a explicit size 11:42 <+bridge_> [ddnet] xd 11:43 <+bridge_> [ddnet] let mut input = Vec::with_capacity(51 * (1 << 20)); 11:43 <+bridge_> [ddnet] oh well 11:43 <+bridge_> [ddnet] i guess its the same 11:43 <+bridge_> [ddnet] xd 11:44 <+bridge_> [ddnet] i still think c++ should hurry up a bit, independent of good speed bad speed 11:44 <+bridge_> [ddnet] 11:44 <+bridge_> [ddnet] std::filesystem should also take u8strings and magically make utf8 work cross plattform 11:44 <+bridge_> [ddnet] its kinda annoying to have so many #ifdef branches in our code 11:44 <+bridge_> [ddnet] oh 11:44 <+bridge_> [ddnet] i found an interesting rant about abi today 11:45 <+bridge_> [ddnet] https://news.ycombinator.com/item?id=30704642 11:45 <+bridge_> [ddnet] @Learath2 read this 11:45 <+bridge_> [ddnet] xd 11:45 <+bridge_> [ddnet] he talks about c? XD 11:45 <+bridge_> [ddnet] @Not Keks about c being the protocol every language needs to be able to talk to 11:45 <+bridge_> [ddnet] > C is the lingua franca of programming. We must all speak C, and therefore C is not just a programming language anymore – it’s a protocol that every general-purpose programming language needs to speak. 11:46 <+bridge_> [ddnet] thats kinda true yeah 😄 11:46 <+bridge_> [ddnet] read it 11:46 <+bridge_> [ddnet] its a good read 11:46 <+bridge_> [ddnet] xd 11:46 <+bridge_> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/953967542181969940/abi-kiss.png 11:47 <+bridge_> [ddnet] > My problem is that C was elevated to a role of prestige and power, its reign so absolute and eternal that it has completely distorted the way we speak to each other. Rust and Swift cannot simply speak their native and comfortable tongues – they must instead wrap themselves in a grotesque simulacra of C’s skin and make their flesh undulate in the same ways it does. 11:52 <+bridge_> [ddnet] https://github.com/mariomka/regex-benchmark/compare/optimized 11:52 <+bridge_> [ddnet] the optimization step is outstanding xD 11:52 <+bridge_> [ddnet] https://github.com/mariomka/regex-benchmark/compare/optimized 11:52 <+bridge_> [ddnet] the optimization step is outstanding xD (scroll to the bottom) 11:53 <+bridge_> [ddnet] ah that also anwsers ryos question 11:53 <+bridge_> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/953969248777142322/unknown.png 11:53 <+bridge_> [ddnet] you can just disable unicode 11:53 <+bridge_> [ddnet] xd 12:00 <+bridge_> [ddnet] it is part of the task https://benchmarksgame-team.pages.debian.net/benchmarksgame/description/regexredux.html#regexredux 12:08 <+bridge_> [ddnet] This is quite silly, it's not that C was arbitrarily elevated to the position by some outside power. It is the de-facto protocol because it's simple and widely implemented. Not because a secret cabal of programmers conspired to enforce C supremacy 12:08 <+bridge_> [ddnet] xDD 12:08 <+bridge_> [ddnet] nobody said anything about a conspiracy 12:08 <+bridge_> [ddnet] ur missing the point 12:09 <+bridge_> [ddnet] it was just a language close to assembly that was successful 12:09 <+bridge_> [ddnet] thats the simple reason 12:10 <+bridge_> [ddnet] that post comes because https://thephd.dev/to-save-c-we-must-save-abi-fixing-c-function-abi 12:11 <+bridge_> [ddnet] and the abi mess causes problems on other languages 12:11 <+bridge_> [ddnet] like rust 12:11 <+bridge_> [ddnet] https://github.com/rust-lang/rust/issues/54341 12:13 <+bridge_> [ddnet] rust also has 170~ target triplets 12:13 <+bridge_> [ddnet] due to different abis 12:13 <+bridge_> [ddnet] the abi world is beautiful 12:14 <+bridge_> [ddnet] No one is stopping the author for saving us from this lunacy by convincing 600 disperate parties to adopt a new sane abi that people definitely wont complain about in 50 years 12:14 <+bridge_> [ddnet] where is the xkcd 12:14 <+bridge_> [ddnet] https://xkcd.com/927/ 12:14 <+bridge_> [ddnet] yeah thats a true thing 12:15 <+bridge_> [ddnet] when i look at GPUs... they give a shit about c alignment, you gotta request it for every device and code to work for every one 12:16 <+bridge_> [ddnet] The thing about using C with it's technically undefined ABI and the mess of compilers and implementation specific magic as the FFI is just that it works. I doubt anyone actually actively likes the fact that we are stuck like this 12:17 <+bridge_> [ddnet] @Learath2 https://en.wikipedia.org/wiki/Interface_description_language 12:17 <+bridge_> [ddnet] :monkalaugh: 12:18 <+bridge_> [ddnet] Maybe one day if someone manages to convince microsoft to drop almost 2 decades of backwards compatibility we can move to an IDL 12:19 <+bridge_> [ddnet] dev once for android and you'll hate JNI xd 12:19 <+bridge_> [ddnet] i'd already be happy if they finally allow c11 XD 12:19 <+bridge_> [ddnet] One day hopefully 12:20 <+bridge_> [ddnet] hi smart people 12:20 <+bridge_> [ddnet] Hi smart guy 12:20 <+bridge_> [ddnet] 😇 12:20 <+bridge_> [ddnet] Hi non-rust user 12:20 <+bridge_> [ddnet] :BASED: 12:20 <+bridge_> [ddnet] Xenophobic 12:20 <+bridge_> [ddnet] I just rusty at rust 12:20 <+bridge_> [ddnet] Hi game developer 12:21 <+bridge_> [ddnet] Hi vulkan developer 12:21 <+bridge_> [ddnet] Hi rust webasm developer 12:21 <+bridge_> [ddnet] :monkaS: 12:21 <+bridge_> [ddnet] @Learath2 hi UB enjoyer 12:21 <+bridge_> [ddnet] :PepeA: 12:21 <+bridge_> [ddnet] I spend a day deciding how should i model friend relationship in mongodb 12:22 <+bridge_> [ddnet] 😱 12:22 <+bridge_> [ddnet] imagine using nosql 12:23 <+bridge_> [ddnet] https://www.youtube.com/watch?v=b2F-DItXtZs 12:23 <+bridge_> [ddnet] I hate SQL with raging passion 12:23 <+bridge_> [ddnet] listen to this based youuber 12:23 <+bridge_> [ddnet] > "Mongo DB handles web scale. You turn it on and it scales right up" 12:23 <+bridge_> [ddnet] > "shards are the secret ingredient in the web-scale sauce; they just work." 12:23 <+bridge_> [ddnet] i love this parody 12:25 <+bridge_> [ddnet] I'm scared of sharding tbh 12:28 <+bridge_> [ddnet] Btw i submitted my system architecture to bilibili. They hit me back with a risk analysis. In the report they said we got a robust and experienced team with common and manageable stack. 12:29 <+bridge_> [ddnet] While the team is me and I hate SQL 12:29 <+bridge_> [ddnet] :pepeH: 12:30 <+bridge_> [ddnet] doesnt it depend on the task anyway what you choose? 12:30 <+bridge_> [ddnet] friend relationship probs makes sense in a relational database xd 12:31 <+bridge_> [ddnet] But I really don't want sql:justatest: 12:31 <+bridge_> [ddnet] just store the mongodb key in the sql database 12:31 <+bridge_> [ddnet] then you have both xd 12:31 <+bridge_> [ddnet] I just made an array of subdocuments describing all friends of a user 12:32 <+bridge_> [ddnet] Need transaction to keep two users in sync, but the read is probably travial and fast enough. 12:32 <+bridge_> [ddnet] Relationships in a non-relational db, that is quite ironic, don't you think? :D 12:33 <+bridge_> [ddnet] 😇 12:33 <+bridge_> [ddnet] But i hate relationship 12:33 <+bridge_> [ddnet] That's why I'm still single 12:33 <+bridge_> [ddnet] thats the spirit 12:33 <+bridge_> [ddnet] dont use databases 12:33 <+bridge_> [ddnet] use GPU VRAM 12:33 <+bridge_> [ddnet] query over shaders 12:36 <+bridge_> [ddnet] Fwiw I think your approach is what I'd do aswell. I don't really do web scale mongodb magic much anymore though so grain of salt required 12:37 <+bridge_> [ddnet] I never made anything that scales. 12:37 <+bridge_> [ddnet] xD in https://thephd.dev/to-save-c-we-must-save-abi-fixing-c-function-abi#-4 12:37 <+bridge_> [ddnet] it kinda looks like he is using comic sans in his editor xD 12:37 <+bridge_> [ddnet] Do you actually need transactions? Is there really harm if things fall slightly out of sync? 12:37 <+bridge_> [ddnet] Probably not 12:39 <+bridge_> [ddnet] I manage blocked user in the same array btw 12:40 <+bridge_> [ddnet] So if you block someone you are actually adding them as friends with a blocked state 12:40 <+bridge_> [ddnet] I think(tm) leaving the update of the 2nd party on a "best effort" should be fine. Worst case on the next api call he will be informed that he got unfriended anyway 12:40 <+bridge_> [ddnet] oh no 😄 12:41 <+bridge_> [ddnet] here comes our SQL dev xd 12:41 <+bridge_> [ddnet] I actually like sql, am I weird? 12:41 <+bridge_> [ddnet] Thinking about things in terms of their relations with other things sounds like the sane approach to me :P 12:41 <+bridge_> [ddnet] i think im the weird one from what i can tell 12:42 <+bridge_> [ddnet] NoSQL is very common. It's web scale even 12:42 <+bridge_> [ddnet] what does web scale even mean 12:42 <+bridge_> [ddnet] No idea, it's what everyone says 12:43 <+bridge_> [ddnet] just take it litteraly 12:43 <+bridge_> [ddnet] watch the video to understand 12:43 <+bridge_> [ddnet] xd 12:43 <+bridge_> [ddnet] can you not spin up more mysql nodes to handle more loads :greenthing: 12:44 <+bridge_> [ddnet] joining can be slow 12:44 <+bridge_> [ddnet] you dont need reliability, ACID is not web scale 12:44 <+bridge_> [ddnet] xd 12:44 <+bridge_> [ddnet] "it uses joints and writes to disks" 12:44 <+bridge_> [ddnet] xdD 12:45 <+bridge_> [ddnet] i have a question 12:45 <+bridge_> [ddnet] i have many questions 12:45 <+bridge_> [ddnet] xd 12:46 <+bridge_> [ddnet] ok i don't have questions anymore 12:46 <+bridge_> [ddnet] thanks bud, that helps a lot 12:48 <+bridge_> [ddnet] @TsFreddie what is the physics engine doing tho? 12:48 <+bridge_> [ddnet] which 12:48 <+bridge_> [ddnet] where 12:48 <+bridge_> [ddnet] when 12:48 <+bridge_> [ddnet] thought u do client side prediction 12:48 <+bridge_> [ddnet] of a physics engine 12:48 <+bridge_> [ddnet] ok 12:49 <+bridge_> [ddnet] then 12:49 <+bridge_> [ddnet] i have no idea 12:49 <+bridge_> [ddnet] unity does its thing 12:49 <+bridge_> [ddnet] ez 12:49 <+bridge_> [ddnet] and i hate it 12:49 <+bridge_> [ddnet] just embedd electron and use a javascript physics engine 12:49 <+bridge_> [ddnet] we did actually 12:50 <+bridge_> [ddnet] we did have a v8 in unity 12:50 <+bridge_> [ddnet] xd 12:50 <+bridge_> [ddnet] for hot swap OTA update 12:51 <+bridge_> [ddnet] did you host the engine online or what? 12:51 <+bridge_> [ddnet] i mean, js are just text. if we can send text to an already running client. we can update it 12:52 <+bridge_> [ddnet] i mean, js are just text. if we can send text to an already running client. we can run it 12:52 <+bridge_> [ddnet] interesting approach 12:52 <+bridge_> [ddnet] arent you targeting mobile phones? 12:52 <+bridge_> [ddnet] ye, chinese mobile games likes to do this 12:52 <+bridge_> [ddnet] although most of them use lua 12:53 <+bridge_> [ddnet] I did convince the designer guys not to update gameplay logic, so only the UI part are written in typescript 12:53 <+bridge_> [ddnet] sound like a good place to do some RCE 12:53 <+bridge_> [ddnet] well if i control the update server 12:53 <+bridge_> [ddnet] I am the RCE 12:54 <+bridge_> [ddnet] also we use v8 because i hate lua 12:54 <+bridge_> [ddnet] as long as the core gameplay doesn't run on js, it should be fine. 12:55 <+bridge_> [ddnet] stuttering menu isn't really a big deal 12:55 <+bridge_> [ddnet] tru, nobody cares about UI anyway xd 12:55 <+bridge_> [ddnet] and we are probably gonna limit the fps to 30 in menu anyway 12:55 <+bridge_> [ddnet] are you like the lead developer, or are the other devs just nobos, that you decide so much 😄 12:55 <+bridge_> [ddnet] i'm the lead developer 12:55 <+bridge_> [ddnet] :PepeA: 12:55 <+bridge_> [ddnet] legend 12:56 <+bridge_> [ddnet] because i'm the only developer for three months 12:56 <+bridge_> [ddnet] then we hired more 12:56 <+bridge_> [ddnet] oh 12:56 <+bridge_> [ddnet] xDD 12:56 <+bridge_> [ddnet] and they are stuck with my decision 12:56 <+bridge_> [ddnet] then im a lead developer too 12:56 <+bridge_> [ddnet] :greenthing: 12:56 <+bridge_> [ddnet] :kek: 12:56 <+bridge_> [ddnet] run electron inside electron 12:56 <+bridge_> [ddnet] we don't really have good programmers tbh 12:57 <+bridge_> [ddnet] the salary is too low 12:57 <+bridge_> [ddnet] I'm just a 0 experienced wildcard and i don't want to work 15 hours a day to keep my job 12:58 <+bridge_> [ddnet] what is wildcard in this context? 12:58 <+bridge_> [ddnet] idk 12:58 <+bridge_> [ddnet] xD 12:58 <+bridge_> [ddnet] u mean u have no previous exp thats why ur in this job 12:58 <+bridge_> [ddnet] since they all suck. i can do whatever i want 12:58 <+bridge_> [ddnet] ah 12:58 <+bridge_> [ddnet] even tho i have 0 experience 12:58 <+bridge_> [ddnet] same here 12:58 <+bridge_> [ddnet] xdddd 12:58 <+bridge_> [ddnet] kinda sounds cool tbh 12:58 <+bridge_> [ddnet] i made my company go from windows server 2008 to debian 11 12:58 <+bridge_> [ddnet] money doesnt always matter 12:59 <+bridge_> [ddnet] ez 12:59 <+bridge_> [ddnet] :monkaS: 12:59 <+bridge_> [ddnet] ye. but arrogance can get to you sometimes. 12:59 <+bridge_> [ddnet] ye stay humble 12:59 <+bridge_> [ddnet] trying 12:59 <+bridge_> [ddnet] u can just curse them in ur inner voice 13:00 <+bridge_> [ddnet] i don't curse irl so i'm fine 13:00 <+bridge_> [ddnet] scratch that, i curse in english. and my brain doesn't hate it. 13:00 <+bridge_> [ddnet] i forgot english curse words are curse words 13:00 <+bridge_> [ddnet] do u bow to them 3 times 13:00 <+bridge_> [ddnet] and how much deep u bow 13:00 <+bridge_> [ddnet] xd 13:00 <+bridge_> [ddnet] 🙇 13:00 <+bridge_> [ddnet] i'm not apologizing japanese style all day 13:01 <+bridge_> [ddnet] speaking of arrogance 13:02 <+bridge_> [ddnet] i think sometime you need to act egomaniac to make people convinced of your decision :kek: 13:02 <+bridge_> [ddnet] as a 0 experienced worker 13:03 <+bridge_> [ddnet] you are not that unexperienced 13:04 <+bridge_> [ddnet] not keks 13:04 <+bridge_> [ddnet] well if i'm doing interviews i'm probably worst than 0 exp 13:04 <+bridge_> [ddnet] i did interviews and i convinced some ppl of the greatness of rust 13:05 <+bridge_> [ddnet] but i didnt get chosen 13:05 <+bridge_> [ddnet] so i probs will stop it 13:05 <+bridge_> [ddnet] xd 13:05 <+bridge_> [ddnet] :huh: 13:05 <+bridge_> [ddnet] maybe they hate rust and just don't want to hurt you 13:05 <+bridge_> [ddnet] maybe they hate rust and choose not to hurt you 13:05 <+bridge_> [ddnet] ☝️ 13:05 <+bridge_> [ddnet] they were python devs 13:05 <+bridge_> [ddnet] so 13:05 <+bridge_> [ddnet] :monkalaugh: 13:05 <+bridge_> [ddnet] so they probably hate rust 13:05 <+bridge_> [ddnet] :kek: 13:05 <+bridge_> [ddnet] :justatest: 13:06 <+bridge_> [ddnet] they probs dont know it 13:06 <+bridge_> [ddnet] fair enough 13:06 <+bridge_> [ddnet] :feelsbadman: 13:06 <+bridge_> [ddnet] Remember, most devs are average 13:06 <+bridge_> [ddnet] xd 13:06 <+bridge_> [ddnet] they dont do open source in their freetime 13:06 <+bridge_> [ddnet] they work to work 13:06 <+bridge_> [ddnet] thats a shocking true 13:06 <+bridge_> [ddnet] truth* 13:06 <+bridge_> [ddnet] man i wish the average is better than I think 13:07 <+bridge_> [ddnet] thats why the ppl who look out for devs skip certain ppl with less xp 13:07 <+bridge_> [ddnet] because they think (and probs right) that most normies only learn while working 13:07 <+bridge_> [ddnet] so they miss on hidden gems like me 13:07 <+bridge_> [ddnet] :BASED: 13:07 <+bridge_> [ddnet] can we hire you 13:08 <+bridge_> [ddnet] the language barrier is hard 13:08 <+bridge_> [ddnet] otherwise if u paid me everything i would think it 13:08 <+bridge_> [ddnet] xd 13:08 <+bridge_> [ddnet] you'll only need to talk to me 13:08 <+bridge_> [ddnet] but u use unity 13:08 <+bridge_> [ddnet] i dont like that much c# 13:08 <+bridge_> [ddnet] i only ever used to mod tshock 13:08 <+bridge_> [ddnet] plugins 13:08 <+bridge_> [ddnet] :justatest: 13:09 <+bridge_> [ddnet] i didn't choose to use unity okay 13:09 <+bridge_> [ddnet] https://github.com/TerraPlugins 13:09 <+bridge_> [ddnet] that was so long ago 13:09 <+bridge_> [ddnet] all these are mine 13:09 <+bridge_> [ddnet] also question is if salaery is even enough to live in europe 13:09 <+bridge_> [ddnet] europe probs a bit more expensive 13:09 <+bridge_> [ddnet] just don't live in europe 13:09 <+bridge_> [ddnet] ez 13:10 <+bridge_> [ddnet] china is cool from culture 13:10 <+bridge_> [ddnet] but i dont like the government 13:10 <+bridge_> [ddnet] "git pull", 2 hours later oh it finished 13:10 <+bridge_> [ddnet] it's probably not gonne be enough to live in beijing tbh 13:10 <+bridge_> [ddnet] the great wall :monkalaugh: 13:10 <+bridge_> [ddnet] doesnt china have a silicon valley 13:10 <+bridge_> [ddnet] ? 13:10 <+bridge_> [ddnet] i don't think that can stop you 13:11 <+bridge_> [ddnet] i'm still here afterall 13:11 <+bridge_> [ddnet] bcs you are over average xD 13:11 <+bridge_> [ddnet] most ppl couldnt do it xD 13:11 <+bridge_> [ddnet] are you saying Ryozuki is average 13:11 <+bridge_> [ddnet] :monkaS: 13:11 <+bridge_> [ddnet] that's mean 13:11 <+bridge_> [ddnet] ryo has rust-proxy 13:11 <+bridge_> [ddnet] its fine 13:12 <+bridge_> [ddnet] tf is that 13:12 <+bridge_> [ddnet] xd 13:12 <+bridge_> [ddnet] i dunno 13:12 <+bridge_> [ddnet] i have ryo-os 13:12 <+bridge_> [ddnet] a proxy written in rust 13:12 <+bridge_> [ddnet] show me your kernel 13:12 <+bridge_> [ddnet] ah 13:12 <+bridge_> [ddnet] but im stuck cuz the next stuff is rly complicated 13:12 <+bridge_> [ddnet] i need to implement context switches 13:12 <+bridge_> [ddnet] and multitasking 13:13 <+bridge_> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/953989340491575366/unknown.png 13:13 <+bridge_> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/953989379054002186/unknown.png 13:13 <+bridge_> [ddnet] i can write 13:13 <+bridge_> [ddnet] with my keyboard 13:13 <+bridge_> [ddnet] xd 13:13 <+bridge_> [ddnet] :monkalaugh: 13:13 <+bridge_> [ddnet] did you alt tab 13:13 <+bridge_> [ddnet] alt g 13:13 <+bridge_> [ddnet] so that qemu lets me out 13:13 <+bridge_> [ddnet] europe 13:13 <+bridge_> [ddnet] otherwise im trapped 13:13 <+bridge_> [ddnet] alt+g 13:13 <+bridge_> [ddnet] oh 13:13 <+bridge_> [ddnet] not altg 13:14 <+bridge_> [ddnet] i'm dumb 13:14 <+bridge_> [ddnet] epic 13:14 <+bridge_> [ddnet] i also want to implement a slab allocator 13:14 <+bridge_> [ddnet] like linux 13:14 <+bridge_> [ddnet] https://www.kernel.org/doc/gorman/html/understand/understand011.html 13:15 <+bridge_> [ddnet] add a monitor/screen component 13:15 <+bridge_> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/953989863881969694/unknown.png 13:15 <+bridge_> [ddnet] to render individual pixels 13:15 <+bridge_> [ddnet] here's my password 13:15 <+bridge_> [ddnet] leaks 13:15 <+bridge_> [ddnet] thanks xd 13:16 <+bridge_> [ddnet] "offenses" 13:16 <+bridge_> [ddnet] is this the report to china police 13:16 <+bridge_> [ddnet] nah 13:16 <+bridge_> [ddnet] just ban and mute 13:16 <+bridge_> [ddnet] :PepeA: 13:17 <+bridge_> [ddnet] we can't even get user's actual id 13:17 <+bridge_> [ddnet] bilibili does the verification and we only have an open_id and their access token, and their age range. not even the real age. 13:18 <+bridge_> [ddnet] but the age range is probably good for us. cuz we can finally tell if the blockers are literal kids or maybe kids. 13:18 <+bridge_> [ddnet] all my rust projects, 80% abandoned 13:18 <+bridge_> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/953990824230801428/projects.png 13:19 <+bridge_> [ddnet] I don't keep abandoned projects 13:19 <+bridge_> [ddnet] which is probably a bad idea 13:49 <+bridge_> [ddnet] what is the secret blured one xd 13:49 <+bridge_> [ddnet] xd 13:49 <+bridge_> [ddnet] from work 14:16 <+bridge_> [ddnet] u should call it ryOS 14:18 <+bridge_> [ddnet] hi @deen , just to tell you im the author of this PR if you might want to tell me something directly here on Discord. thank you. 14:19 <+bridge_> [ddnet] new devs :poggers: 14:46 <+bridge_> [ddnet] hi @f. and thanks for the change 😄 15:30 <+bridge_> [ddnet] translate to russ langluae 15:30 <+bridge_> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/954023931495465030/unknown.png 15:30 <+bridge_> [ddnet] translate to russ language 15:30 <+bridge_> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/954023931495465030/unknown.png 15:32 <+ChillerDragon> partial github outages be like ... ``while ! git push -f; do git push -f; done`` 15:32 <+bridge_> [ddnet] ? 15:40 <+bridge_> [ddnet] lol 15:40 <+bridge_> [ddnet] github down 15:40 <+bridge_> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/954026361960398848/unknown.png 15:40 <+bridge_> [ddnet] never seen that before 15:42 <+bridge_> [ddnet] Yup, everything is down except the webserver. I could not push the changes at first, only with force push it worked. Even the Markdown parsers are down. 15:43 <+bridge_> [ddnet] https://www.githubstatus.com/ 15:53 <+bridge_> [ddnet] Then only the calculation in double? `sqrt((double)dx * dx + (double)dy * dy)` 15:53 <+bridge_> [ddnet] yes 15:54 <+bridge_> [ddnet] x87 uses 80 bit internally anyway 15:54 <+bridge_> [ddnet] Do we want to do FalloffX and FalloffY directly in double as well? 15:55 <+bridge_> [ddnet] i've nothing against it 15:57 <+bridge_> [ddnet] Yup, everything is down except the webserver. Even the Markdown parsers are down. 15:59 <+bridge_> [ddnet] I wonder why this is not already noticed when mapping the map or whether this was planned as a surprise for the devs xD 16:21 <+bridge_> [ddnet] damn you're not dead 16:22 <+bridge_> [ddnet] @ReiTW do u know him? 16:22 <+bridge_> [ddnet] who he 16:23 <+bridge_> [ddnet] sure he's a developer of iF|City 16:23 <+bridge_> [ddnet] ah uh 16:23 <+bridge_> [ddnet] and the one who hosts iF|City 16:23 <+bridge_> [ddnet] closed source boo 16:23 <+bridge_> [ddnet] wats his name? 16:23 <+bridge_> [ddnet] ffanta? 16:23 <+bridge_> [ddnet] no 16:23 <+bridge_> [ddnet] f. is f 16:23 <+bridge_> [ddnet] just f? 16:23 <+bridge_> [ddnet] f 16:23 <+bridge_> [ddnet] yes 16:23 <+bridge_> [ddnet] f 16:23 <+bridge_> [ddnet] hmm idk him 16:23 <+bridge_> [ddnet] press f 16:24 <+bridge_> [ddnet] no front but sounds like this name does not meet the minimum requirements to be functional 16:24 <+bridge_> [ddnet] its like ppl on irc who call themselves a common word 16:25 <+bridge_> [ddnet] and they get highlighted all time 16:25 <+bridge_> [ddnet] like someone named "is" 16:25 <+bridge_> [ddnet] or oy like wtf 16:25 <+bridge_> [ddnet] super annoying 16:25 <+bridge_> [ddnet] im always loosing it when someone uses a smiley in tw as username and i try to address a message to him 16:26 <+bridge_> [ddnet] "can you do this part please? \:(" 16:41 <+bridge_> [ddnet] That CodeQL faild is because github is broken, right? 16:48 <+bridge_> [ddnet] probs 17:29 <+bridge_> [ddnet] Do we actually want to allow this kind of cheat? So that you can use your own position in Debug View to make certain jumps precise. If so, I could also output the 3rd and 4th decimal digits. 17:29 <+bridge_> [ddnet] There are actually only decimal numbers because we divide the actual integer position by 32 to make it easier to track the position on blocks. if we don't want to support cheats like that we could also just stop dividing by 32. 17:29 <+bridge_> [ddnet] 17:29 <+bridge_> [ddnet] I would be in favor of also outputting the 3rd and 4th digit after the comma. 17:30 <+bridge_> [ddnet] Do we actually want to allow this kind of cheat? So that you can use your own position in Debug View to make certain jumps precise. If so, I could also output the 3rd and 4th decimal digits. 17:30 <+bridge_> [ddnet] There are actually only decimal numbers because we divide the actual integer position by 32 to make it easier to track the position on blocks. if we don't want to support cheats like that we could also just stop dividing by 32. 17:30 <+bridge_> [ddnet] 17:30 <+bridge_> [ddnet] I would be in favor of also outputting the 3rd and 4th digit after the decimal point. 17:35 <+bridge_> [ddnet] its not really a cheat, it was discussed before that anything that can be achieved ingame without any modifications or external help is allowed 17:35 <+bridge_> [ddnet] it's just a config that binds d to "+jump; +right", a to "+jump;+left" 17:35 <+bridge_> [ddnet] and displays which coords work on a 3 tile freezejump 17:36 <+bridge_> [ddnet] I mean the output of the player position in the debug HUD. 17:36 <+bridge_> [ddnet] don't see a reason why it'd be a cheat personally. but not sure what the admins think about it 17:37 <+bridge_> [ddnet] yeah, let's keep allowing that. It's too late to go back on that, even vanilla TW had that 17:37 <+bridge_> [ddnet] and you can add two decimals 17:39 <+bridge_> [ddnet] technically you can use coords to get an advantage, for example setting up towers and the freezejump, but anyone can have that advantage, it doesnt even take time to learn it. just just look at a number and line up 17:40 <+bridge_> [ddnet] people have been using it for many years, yeah 17:40 <+bridge_> [ddnet] You can even add a bind to send coords 😅 17:41 <+bridge_> [ddnet] really, how? 17:41 <+bridge_> [ddnet] acqwerty has a modded client that shows the coordinates in green when its a correct value 17:41 <+bridge_> [ddnet] no proof 17:41 <+bridge_> [ddnet] I mean, it could be added, i think not exist at the moment 17:42 <+bridge_> [ddnet] If u'll make debug show more digits and just leave debug as it is it'll probably make it more annoying to look at your x coords :P 17:42 <+bridge_> [ddnet] Maybe it'll be good to generally clean up the debug info 17:43 <+bridge_> [ddnet] I don't know if the stuff on there is useful 17:43 <+bridge_> [ddnet] just make it display as a fraction 17:43 <+bridge_> [ddnet] I don't even know peiple that know what half of it means xd 17:44 <+bridge_> [ddnet] also, on the topic of debug menu, i'd also love to see this feature at some point https://discord.com/channels/252358080522747904/293493549758939136/927774860443275325 17:44 <+bridge_> [ddnet] some users would definitely benefit from having their x coords, checkpoint, or angle pinned so that it shows even without having debug menu on 17:44 <+bridge_> [ddnet] It is also meant for debugging and not as a game mechanic that should be used by players. 17:44 <+bridge_> [ddnet] Do people find it useful for debugging? 17:45 <+bridge_> [ddnet] idk u dont rly need any debug stuff 99% of the time 17:45 <+bridge_> [ddnet] im sure @Im 'corneum checks coords when mapping his weird stuff 17:46 <+bridge_> [ddnet] nah i dont know where stuff works different. its probably some kind of grid that loops but its probably also different for every kind of floating point part 17:46 <+bridge_> [ddnet] could be added as an option for the nameplate xD 17:47 <+bridge_> [ddnet] Def not nameplate 17:47 <+bridge_> [ddnet] my nameplates would be way too crowded then haha 17:47 <+bridge_> [ddnet] yeah 17:47 <+bridge_> [ddnet] It's already too crowded 17:47 <+bridge_> [ddnet] In the corner, could add the option of disabling the hearts from the HUD since they're useless in ddrace 17:48 <+bridge_> [ddnet] I already have that in my client 17:49 <+bridge_> [ddnet] I'm currently working on the new HUD, so this will probably be included that the lagacy hud is hidden. 17:51 <+bridge_> [ddnet] Sounds good :D ill look forward to seeing it 17:54 <+bridge_> [ddnet] i use the debug graphs more than coordinate or angle information tbh 17:55 <+bridge_> [ddnet] add rifle undeep 17:55 <+bridge_> [ddnet] :kek: 18:02 <+bridge_> [ddnet] another first time contributor 18:02 <+bridge_> [ddnet] :poggers: 18:05 <+bridge_> [ddnet] lol 18:05 <+bridge_> [ddnet] i broke the embed link 18:05 <+bridge_> [ddnet] im a hacker!!! 18:06 <+bridge_> [ddnet] oh, depends where u click on the title 18:08 <+bridge_> [ddnet] oh 18:08 <+bridge_> [ddnet] is this the bug where u hear the sound 18:08 <+bridge_> [ddnet] of everyone 18:08 <+bridge_> [ddnet] yes 18:08 <+bridge_> [ddnet] i remember it happening on the chill lets climb 3 tourny 18:08 <+bridge_> [ddnet] should happen on large maps, integer overflow 18:08 <+bridge_> [ddnet] nice to see it fixed 19:47 <+bridge_> [ddnet] @Not Keks Is there any advantage to not using a quad for two different textures? Even if the dimensions and position are the same? E.g. in the HUD there are quads created for full and empty hearts and shields does that make sense? 19:47 <+bridge_> [ddnet] https://github.com/ddnet/ddnet/blob/971f839c1792563b52fe65bd5d6de4495374cdcd/src/game/client/components/hud.cpp#L706-L741 19:47 <+bridge_> [ddnet] Should I use a separate quad for each sprite? 19:51 <+bridge_> [ddnet] that's your choice 19:51 <+bridge_> [ddnet] 19:51 <+bridge_> [ddnet] If you rework the hud: 19:51 <+bridge_> [ddnet] the idea generally is to return the quad offset and have member variables named 19:51 <+bridge_> [ddnet] `HUDHealthHeartOffset` 19:51 <+bridge_> [ddnet] so its nicely readable 19:51 <+bridge_> [ddnet] 19:51 <+bridge_> [ddnet] but yeah i havent done that yet 19:51 <+bridge_> [ddnet] 19:51 <+bridge_> [ddnet] and to answer your question 19:51 <+bridge_> [ddnet] You could argue that its nicer to split it for more modularity, but mathematically and GPU wise its not wrong to reuse the same quad 19:53 <+bridge_> [ddnet] oh and i think it just recently added that feature in https://github.com/ddnet/ddnet/pull/4728/commits/1f5a5b038258dc56502c3f258ab6165ce0d4b7f6 19:53 <+bridge_> [ddnet] 19:53 <+bridge_> [ddnet] guess you can cherry-pick it if you want to use it 20:06 <+bridge_> [ddnet] As far as I understand it, the main reason to use a separate quad for each object in the HUD is that they do not change their position, right? Then the position data of the quad does not have to be recalculated with every render. 20:06 <+bridge_> [ddnet] With RenderQuadContainerAsSprite on a moving object more calculations would have to be done than with RenderQuadContainer only. 20:07 <+bridge_> [ddnet] there is another way to reposition something 20:07 <+bridge_> [ddnet] and that is by adjusting the projection matrix 20:08 <+bridge_> [ddnet] that is always uploaded to the GPU anyway 20:08 <+bridge_> [ddnet] but yeah you are right it doesnt need to reposition it if you directly map the vertex correctly 20:10 <+bridge_> [ddnet] @ReiTW im always dead 20:10 <+bridge_> [ddnet] yes I see that :hollande: 20:11 <+bridge_> [ddnet] when noby's antibot on ifcity 20:11 <+bridge_> [ddnet] @ChillerDragon you don't no me? i know you 20:11 <+bridge_> [ddnet] don't be ashamed and confess to everybody here 20:11 <+bridge_> [ddnet] you used to play ifcity 20:11 <+bridge_> [ddnet] nub 20:11 <+bridge_> [ddnet] mh yeah seems like our current implementation doesnt allow it for non sprite like quad containers, so i guess thats the main reason then 20:12 <+bridge_> [ddnet] tho it could be implemented without changing the backends 20:12 <+bridge_> [ddnet] by moving the projection matrix 20:14 <+bridge_> [ddnet] @f. this ping wont work, he's on matrix room 20:14 <+bridge_> [ddnet] nvm ^^ 20:28 <+bridge_> [ddnet] Ok 🙂 Then I'll just try around and as soon as I have something to show, we can discuss again whether I have done that well... 20:47 <+bridge_> [ddnet] How can I read in render.cpp render function from a named pipe? 20:49 <+bridge_> [ddnet] I tried this but works with a test.cpp snippet, but not in the gamecode. (Have no knowledge of cpp at all) 20:49 <+bridge_> [ddnet] ``` 20:49 <+bridge_> [ddnet] std::ifstream file{"/tmp/pipe"}; 20:49 <+bridge_> [ddnet] std::string line; 20:49 <+bridge_> [ddnet] ``` 20:53 <+bridge_> [ddnet] Not really the best idea to do a file read on the very very hot path 20:55 <+bridge_> [ddnet] My ideas are always best ^^ 20:56 <+bridge_> [ddnet] My ideas are always best 🙃 21:46 <+bridge_> [ddnet] compilers use sse for float computation nowadays 22:04 <+bridge_> [ddnet] then the registers are even bigger 22:28 <+bridge_> [ddnet] ye thats why u disable sse and enable soft floats 22:28 <+bridge_> [ddnet] when doing kernel 22:31 <+bridge_> [ddnet] xd 22:31 <+bridge_> [ddnet] you also have to disable the red zone 22:31 <+bridge_> [ddnet] :monkalaugh: 22:31 <+bridge_> [ddnet] https://os.phil-opp.com/red-zone/ 22:33 <+bridge_> [ddnet] now we have chairn, we need cache optimizations 22:33 <+bridge_> [ddnet] 64bit probs slows the cache a bit xd 22:55 <+bridge_> [ddnet] well, i'd say data cache is probably fine, however, instruction cache must have a substantially high miss rate i guess 22:57 <+bridge_> [ddnet] ehm 22:57 <+bridge_> [ddnet] ```bash 22:57 <+bridge_> [ddnet] perf stat -e L1-icache-load-misses,L1-dcache-stores,L1-dcache-store-misses,L1-dcache-loads,L1-dcache-load-misses ./DDNet 22:58 <+bridge_> [ddnet] Performance counter stats for './DDNet': 22:58 <+bridge_> [ddnet] 22:58 <+bridge_> [ddnet] 2 926 897 288 L1-icache-load-misses (47,45%) 22:58 <+bridge_> [ddnet] 18 460 683 892 L1-dcache-stores (49,51%) 22:58 <+bridge_> [ddnet] 333 527 056 L1-dcache-store-misses (47,83%) 22:58 <+bridge_> [ddnet] 28 969 299 961 L1-dcache-loads (48,10%) 22:58 <+bridge_> [ddnet] 1 228 863 824 L1-dcache-load-misses # 4,24% of all L1-dcache hits (46,76%) 22:58 <+bridge_> [ddnet] ``` 22:58 <+bridge_> [ddnet] well, 50% misses for both, there's some nice optimization to go there 22:58 <+bridge_> [ddnet] ah nvm 22:58 <+bridge_> [ddnet] i read it wrong 23:06 <+bridge_> [ddnet] ```bash 23:06 <+bridge_> [ddnet] $ perf stat -e instructions,L1-icache-load-misses,L1-dcache-stores,L1-dcache-store-misses,L1-dcache-loads,L1-dcache-load-misses ./DDNet 23:06 <+bridge_> [ddnet] 23:06 <+bridge_> [ddnet] 259 648 927 688 instructions 23:06 <+bridge_> [ddnet] 6 707 225 567 L1-icache-load-misses # 2.58% of all L1-icache hits 23:06 <+bridge_> [ddnet] 47 319 023 683 L1-dcache-stores 23:06 <+bridge_> [ddnet] 700 778 077 L1-dcache-store-misses # 1.48% 23:06 <+bridge_> [ddnet] 71 666 451 733 L1-dcache-loads 23:06 <+bridge_> [ddnet] 2 677 123 546 L1-dcache-load-misses # 3,74% of all L1-dcache hits 23:06 <+bridge_> [ddnet] 23:06 <+bridge_> [ddnet] 162,973244501 seconds time elapsed 23:06 <+bridge_> [ddnet] ``` 23:06 <+bridge_> [ddnet] ```shell 23:06 <+bridge_> [ddnet] $ perf stat -e instructions,L1-icache-load-misses,L1-dcache-stores,L1-dcache-store-misses,L1-dcache-loads,L1-dcache-load-misses ./DDNet 23:06 <+bridge_> [ddnet] 23:06 <+bridge_> [ddnet] 259 648 927 688 instructions 23:06 <+bridge_> [ddnet] 6 707 225 567 L1-icache-load-misses # 2.58% of all L1-icache hits 23:06 <+bridge_> [ddnet] 47 319 023 683 L1-dcache-stores 23:06 <+bridge_> [ddnet] 700 778 077 L1-dcache-store-misses # 1.48% 23:06 <+bridge_> [ddnet] 71 666 451 733 L1-dcache-loads 23:06 <+bridge_> [ddnet] 2 677 123 546 L1-dcache-load-misses # 3,74% of all L1-dcache hits 23:06 <+bridge_> [ddnet] 23:06 <+bridge_> [ddnet] 162,973244501 seconds time elapsed 23:06 <+bridge_> [ddnet] ``` 23:08 <+bridge_> [ddnet] i think thats good 23:09 <+bridge_> [ddnet] i didn't try to attach it to an already ongoin game 23:10 <+bridge_> [ddnet] maybe its mostly initialization