00:07 < bridge> I can't remember who introduced me into teeworlds programming back then 00:07 < bridge> but i remember he did some ... questionable stuff 00:10 < bridge> chillerdragon: when programming tutorials on ddnet codebase 00:11 < bridge> chillerdragon's amazing skills introduced me into teeworlds programming but im the least pro dev :monkaS: 00:11 < bridge> I can't compile tag 19.3 00:11 < bridge> I get a linker error: `[build] backend_sdl.obj : error LNK2019: Verweis auf nicht aufgel├Âstes externes Symbol "SDL_FlashWindow" in Funktion ""public: virtual void __cdecl CGraphicsBackend_SDL_GL::NotifyWindow(void)" (?NotifyWindow@CGraphicsBackend_SDL_GL@@UEAAXXZ)". ` 00:25 < bridge> I bet your sub modules switched when u did the unique thing 00:38 < bridge> fuck floats 00:39 < bridge> `int(sqrt(int(x))) = int(sqrt(x))` is the same mathematically but not with floats 00:39 < bridge> meaning i have to undo an optimization 00:39 < bridge> meaning i need to do an actual sqrt. meaning i loose a lot of perf 00:52 < bridge> flock of tees 💔 01:00 < bridge> the live deep in the ocean... 01:00 < bridge> someone should make a documentary about everyday tee life 01:19 < bridge> isnt it not the same mathematicslly if int() just truncates decimals 01:19 < bridge> yeah 01:19 < bridge> it's not even close 02:42 < bridge> It is the same 02:43 < bridge> wdym. Ofc it's the same 02:45 < bridge> ya i read it again and its the same 03:12 < bridge> hmm 03:12 < bridge> It depends on the float to int conversion 03:13 < bridge> It works with floor but not round 03:13 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1386514449464299632/Screenshot_20250622_201311_Chrome.jpg?ex=6859fbb4&is=6858aa34&hm=861299f048b77ba444d8b9a9f2b3448c6d69e29262feee006468b3b503a13826& 04:48 < bridge> https://cdn.discordapp.com/attachments/1384218380294291596/1386532428251926749/image.png?ex=685a0c73&is=6858baf3&hm=c249a10926fa741c2d2f69ded2cd43173d53d6477756ed0796462d086193b020& 04:48 < bridge> https://cdn.discordapp.com/attachments/1384218380294291596/1386532460950454282/image.png?ex=685a0c7b&is=6858bafb&hm=fcd522db7ef8b4147a3403ec07faafa1eedebec1c73b14fc476280385b645a12& 04:48 < bridge> https://cdn.discordapp.com/attachments/1384218127809904712/1384989602661666876/image.png?ex=6859b595&is=68586415&hm=aa7d38038bdd656fa0bc629672214d5c0a69411cc6239e5a855f3b914594de0b& 04:48 < bridge> https://cdn.discordapp.com/attachments/1384218127809904712/1385671219659145369/image.png?ex=68598d63&is=68583be3&hm=6adc4ce9c417ab77353eac3e5de8ff09a0de1de4ff0e19041667cf9b79ec27da& 05:43 < bridge> int() means truncation usually 07:20 < bridge> yeah int truncates 07:22 < bridge> isqrt 07:28 < bridge> same 07:48 < bridge> if u still need this i just got the base model 🤣 07:49 < bridge> time to port ddnet to ios 08:33 < bridge> Neat. Fix all our Mac problems 😬 08:33 < bridge> 08:33 < bridge> Currently i don't need it tho, +kz tested all the things i needed :deen_star: 08:34 < bridge> Would be interesting. Can you even install the game without the Apple store xd 08:36 < bridge> ye u can run apps on your one phones but to distribute need to pay $100 a year or whatever 08:38 < bridge> And probably our app doesn't satisfy their tos, if that is already the case on play store 08:42 < bridge> https://github.com/ddnet/ddnet/blob/master/src/engine/client/keynames.h 08:42 < bridge> 08:42 < bridge> this list shows f1-f24 as available keycodes, but the game doesnt seem to recognize f20-f24. Is this the case for anyone else? 09:49 < bridge> good morning ^.^ 09:49 < bridge> anybody an idea how to set precision dynamically? 09:49 < bridge> ` str_format(aBuf, sizeof(aBuf), 09:49 < bridge> "%5.*f second(s) worse, better luck next time.", 09:49 < bridge> Diff, Precision);` 09:50 < bridge> Precision is either 2 or 3, but I get 0.000000 seconds worse 🤔 09:52 < bridge> okay I need to swap Precision and Diff, I don't know why, only c format knows why 09:58 < bridge> are we even on the android store? 10:08 < bridge> at least not at google play store, checked 10:09 < bridge> according to robyte we violate tos, since we provide content over network (e.g. downloaded maps) 10:11 < bridge> https://discord.com/channels/252358080522747904/1277345584080097320/1315780208351252520 10:11 < bridge> User generated content to be precise 10:12 < bridge> Well ig it's mostly about moderation of content and chat 10:12 < bridge> Soon 10:15 < bridge> Don’t use floats 10:18 < bridge> so it wraps back to accounts and report functionality 10:18 < bridge> Aren’t there any mobile games with chat? 10:19 < bridge> Even without accounts. I recently played one on iOS 10:20 < bridge> So geometry dash is also banned in google play? 10:20 < bridge> Why 10:20 < bridge> I dunno any mobile games with chats. But as corrected, I think it's mostly about moderation 10:20 < bridge> You need a report button ingame 10:22 < bridge> Geometry dash also has user made maps 10:22 < bridge> Can you report the maps? 10:22 < bridge> We have a mute button in game that’s even faster than report 10:22 < bridge> Ah idk 10:22 < bridge> it's about moderation, I could host my own cinema server or put pornographic images into a map, we can't report that from ingame 10:23 < bridge> I dunno how the geometry dash editor looks like, but I assume it's also about if the users can add specific visuals 10:23 < bridge> You know 10:23 < bridge> Like custom assets 10:23 < bridge> It’s limited 10:23 < bridge> But you can get creative 10:23 < bridge> Same in Minecraft 10:23 < bridge> Can’t you join public servers there 10:24 < bridge> Chat is moderated yes but idk if you can report severs 10:24 < bridge> we're not providing user made maps over the network 10:24 < bridge> We are? 10:24 < bridge> it's not the same thing as permissionless map sharing 10:25 < bridge> every map is approved by us 10:25 < bridge> They aren’t 10:25 < bridge> chillerdragon: but microsoft has lawyers 10:25 < bridge> it's like completely different 10:25 < bridge> I promise 10:25 < bridge> @jupeyy_keks: we too! 10:25 < bridge> We have lawyer jupsoti 10:25 < bridge> You can just join any server you want xD 10:25 < bridge> ah right 10:26 < bridge> I forgot about that xd 10:26 < bridge> If you limit the servers to ddnet only, then maybe yes 10:26 < bridge> we would probably need to add a warning message for servers outside of ddnets "official" severs for a content warning 10:26 < bridge> hmm 10:26 < bridge> But that is not plural 10:26 < bridge> FSK 18 Servers 10:26 < bridge> We need that, privacy policy and TOS in any case 10:26 < bridge> does minecraft let you join other servers? 10:26 < bridge> Come follow me on Shrek the movie server 10:27 < bridge> I think so 10:27 < bridge> I could help with the latter, privacy policy is very easy, do we collect any user data except IP adresses? 10:28 < bridge> That depends on the definition of user data I guess 10:28 < bridge> For example Teehistorian 10:29 < bridge> i'd argue this isn't sensible user data 10:29 < bridge> You have to be really specific 10:30 < bridge> I did some privacy policies for german websites b4 10:30 < bridge> e.g. 10:30 < bridge> https://www.ldi.nrw.de/datenschutz/medien-und-technik/websites-muster-fuer-datenschutzhinweise 10:30 < bridge> 10:30 < bridge> section 2a. 10:30 < bridge> That alone probs has to go in simply bcs we contact http servers 10:31 < bridge> imagine a user asking us to forget all about him, what would we need to delete? 10:33 < bridge> Mhh I dunno, but at least user related information like name etc. 10:33 < bridge> Afaik you can to a certain degree also just make them anon in your logs etc. 10:34 < bridge> I am sure I couldn't track anyone from ddnet data alone, except if he posted his name and adress in clear chat 10:34 < bridge> I am sure I couldn't track anyone from ddnet data alone, except if he posted his name and adress in clear chat, even if I tried to 10:35 < bridge> closest obtainable info is the ip adress, where I could find out some region he probably lives in (assuming no vpn) 10:36 < bridge> do logs even show whispers? 10:36 < bridge> No 10:37 < bridge> But our whole traffic is unencrypted 10:37 < bridge> That alone is probably a huge red flag xDD 10:37 < bridge> Dunno if google TOS mentions it 10:37 < bridge> with 128 players you could create an 11*11 grid of tees 10:37 < bridge> and make a video of 0.2fps 10:49 < bridge> Tell that ddnet physics 11:08 < bridge> I think it's "%.2f" for 2 decimals after point 11:15 < bridge> yes, but I want a configurable amound of decimals 11:15 < bridge> yes, but I want a configurable amount of decimals 11:16 < bridge> and apparently I need to set the precision before the number and not vice versa 11:29 < bridge> you can sprintf/str_format the string twice otherwise 11:29 < bridge> ```c 11:29 < bridge> str_format(aBuf, sizeof(aBuf), "%%.%df second", precision); 11:29 < bridge> str_format(aBuf, sizeof(aBuf), aBuf, second); 11:29 < bridge> ``` 11:29 < bridge> Not sure if same pointer as input and output is allowed though 11:51 < bridge> ):< 11:51 < bridge> is my name more sparkly than before? 11:51 < bridge> feels like it 12:14 < bridge> ips only. you do not save personal data other than that. 12:15 < bridge> and if your ip logs are deleted after 7 days, then you don't need tondo anything, at least that's what I'm witnessing where I work 👀 12:30 < bridge> what do I need to do in order to activate the classid hud in the client with the server? Like being able to take damage 12:30 < bridge> ``` 12:30 < bridge> if(g_Config.m_SvHealthAndAmmo) 12:30 < bridge> pGameInfoEx->m_Flags2 &= ~GAMEINFOFLAG_UNLIMITED_AMMO; 12:30 < bridge> ``` 12:30 < bridge> this seems not to do the trick 12:31 < bridge> maybe I need to deactivate this flags? `pGameInfoEx->m_Flags2 = GAMEINFOFLAG2_HUD_DDRACE | GAMEINFOFLAG2_DDRACE_TEAM;` 12:32 < bridge> okay first it should be m_Flags in this case (and not Flags2) 12:35 < bridge> nope no idea 12:56 < bridge> Flags are not well designed it you ask me 12:57 < bridge> I forgot how exactly maybe add GAMEINFOFLAG\_GAMETYPE\_VANILLA and remove gametype ddrace or something like that 12:57 < bridge> isn't vanilla reserved for pure vanilla servers? 12:57 < bridge> No 12:57 < bridge> Vanilla can’t send flags 13:01 < bridge> nope, doesn't do the trick: 13:01 < bridge> ``` 13:01 < bridge> if(g_Config.m_SvHealthAndAmmo) 13:01 < bridge> { 13:01 < bridge> pGameInfoEx->m_Flags &= ~(GAMEINFOFLAG_UNLIMITED_AMMO | GAMEINFOFLAG_GAMETYPE_DDNET); 13:01 < bridge> pGameInfoEx->m_Flags |= GAMEINFOFLAG_GAMETYPE_VANILLA; 13:01 < bridge> pGameInfoEx->m_Flags2 &= ~(GAMEINFOFLAG2_HUD_DDRACE | GAMEINFOFLAG2_DDRACE_TEAM); 13:01 < bridge> } 13:01 < bridge> ``` 13:04 < bridge> and I tripple checked that my hud is activated, the server currently shows no hud 13:04 < bridge> and I tripple checked that my hud is activated, the server currently shows no hud (top left9 13:04 < bridge> and I tripple checked that my hud is activated, the server currently shows no hud (top left) 13:05 < bridge> maybe I am turning the hud off in general with the hud_ddrace flag? 13:07 < bridge> ~~maybe I am turning the hud off in general with the hud_ddrace flag?~~ Nope :pepeW: 13:18 < bridge> some reverse engineering showed me, I need to set Flags2 & GAMEINFOFLAG2_HUD_HEALTH_ARMOR; 13:18 < bridge> now I at least see the health and ammo bar 13:18 < bridge> now I at least see the health and shield bar 13:22 < bridge> and ammo was trivial with the next flag 13:47 < bridge> <0xfaulty> hmm, any updates? 15:01 < bridge> I didn't like your other idea as much. And I don't see anywhere better to put it myself. So I'll merge as is 15:02 < bridge> I had a busy weekend just didnt have time to sneak it in 15:03 < bridge> Next the client thinks, that health and armor is freezing ist or stealing it's weapon :justatest: I don't know what I need to set to deactivate that 15:11 < bridge> wtf where the numbers, what's A5, FF 15:11 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1386695125593231450/image.png?ex=685aa3f9&is=68595279&hm=33551e6505147c4fee3b6cc2549340045c588557722cdf8216418b6f8bc612cb& 15:11 < bridge> 😭 15:11 < bridge> okay I need to deactivate `GAMEINFOFLAG_PREDICT_DDRACE` and set `GAMEINFOFLAG_PREDICT_VANILLA` ofc, I wonder what breaks now since it's still ddnet 15:12 < bridge> you set hex in the options, go to tools -> DEC instead of HEX 15:12 < bridge> Thank! 15:12 < bridge> I mean settings but your welcome 15:15 < bridge> ranks xd 15:16 < bridge> although there's no clear relation to user as a human being 15:16 < bridge> why 0.2 15:17 < bridge> 50 fps at max 15:23 < bridge> tees can only change skins every 5s 15:23 < bridge> without server assistance 15:24 < bridge> so you think you can gather and sync 128 players just to try out showing off shrek 2 in 0.2fps and 11p 15:24 < bridge> :justatest: 15:24 < bridge> it would be incredibly funny 15:24 < bridge> 121 players 15:24 < bridge> 7 get to watch 15:24 < bridge> you can do 12*10 aswell and 8 get to watch 15:25 < bridge> so each one has to have config flip flop with all needed skins for whole movie 15:25 < bridge> yes 15:25 < bridge> this probably will outweigh shrek 2 itself xd 15:25 < bridge> you only need 60 real people 15:25 < bridge> cuz dummies 15:25 < bridge> "only" 15:26 < bridge> you could also do only 40 real people if you have 3 connected with 2 clients and ahk script to control 15:26 < bridge> you will sync out in first 3 frames i believe xd 15:26 < bridge> you can use the current predicted tick to sync 15:26 < bridge> you can also just use modified server 15:26 < bridge> yeah but thats less funny 15:27 < bridge> or code a tool that will generate quads and envelopes that mimic movie 15:47 < bridge> heyo 15:47 < bridge> any easy issue open? 15:48 < bridge> might do a pr or smth 15:53 < bridge> oh yeah my ign is `nameless Tee`, please delete all of my records 16:03 < ChillerDragon> @learath2 when check the nudes i sent you on irc 16:04 < bridge> I'll be home in an hour. Ran out of battery on my laptop and am on train 16:05 < bridge> 16:05 < bridge> ill try to do a pr of smth that bugged me 16:05 < bridge> and since the person withholding that seems afk 16:05 < bridge> maybe it gets in 16:09 < bridge> yeah that looks easy 16:14 < bridge> :owo: 16:15 < bridge> ah im blind 16:15 < bridge> ill wait 16:20 < bridge> @jupeyy_keks Look what they need just to mimic a fraction of our power 16:20 < bridge> 16:20 < bridge> :cat_cracked_hehe: 16:22 < bridge> @jupeyy_keks Look what they need just to mimic a fraction of (y)our power 16:22 < bridge> 16:22 < bridge> :cat_cracked_hehe: 16:23 < bridge> @kebscs: can we establish the wording ddrace team? When you say team info I think about red, blue and spectators 16:24 < bridge> Sadly the code base also suffers from that confusing wording in a few places 16:25 < bridge> Sneaking in PRs while Heinrich is afk? Xd 16:25 < bridge> Time for some sneaky \#7777 prs 16:25 < bridge> :angy: 16:26 < bridge> ryo quick, revert 7777 16:26 < bridge> Heinrich can open revert PRs but nobody will merge them because deen the merge machine is also afk 16:27 < bridge> Heinrich trying to revert spec info since 3 months https://github.com/ddnet/ddnet/pull/9932 16:27 < bridge> delete 16:27 < bridge> dont remind of it 16:27 < bridge> oops 16:27 < bridge> good feature noone complaining 16:27 < bridge> all around positive vibes 16:28 < bridge> Then close Heinrich pr 16:28 < bridge> i dont have the power 16:28 < bridge> waiting for maintainer recrutation 16:28 < bridge> Actually I do 16:28 < bridge> But I don’t have the balls to do so 16:28 < bridge> idk, when i think of team it hink of 1-64 16:28 < bridge> i dont play vanilla 16:29 < bridge> idk, when i think of team i think of 1-64 16:29 < bridge> could be split into ddrace team and vanilla team i guess 16:29 < bridge> Ddrace also has team red and spectators 16:29 < bridge> And the ddnet client supports red and blue too 16:29 < bridge> You want to rename existing occurrences of just team to vanilla team? 16:30 < bridge> Let’s just go with team and ddrace team 16:30 < bridge> It needs only a few renames in ddnet code 16:31 < bridge> yea 16:31 < bridge> also in your moving teams to cpp pr you missed few funcs that can be made const 16:31 < bridge> https://github.com/ddnet/ddnet/issues/5593 16:31 < bridge> IsPractice etc 16:31 < bridge> GetPlayer 16:32 < bridge> @kebscs i closed it 16:34 < bridge> 🎉 16:34 < bridge> balls 16:34 < bridge> Was nice having you as maintainer ryo 16:35 < bridge> xd 16:35 < bridge> he can always reopen if he is interested 16:35 < bridge> merge some prs while youre at it 16:35 < bridge> i always been in favour of closing stalled stuff 16:35 < bridge> can always rever later :p 16:35 < bridge> can always revert later :p 16:35 < bridge> ill see some prs after im done with some work 16:35 < bridge> also ill do that pr 16:36 < bridge> https://github.com/ddnet/ddnet/issues/10148 16:36 < bridge> most of these are already in game 16:37 < bridge> But tbh what we need more than opening PRs is closing PRs @ryozuki 16:37 < bridge> @kebscs: oh yes? Could you link some PRs in the issue so I can check them off? 16:38 < bridge> Robyte is the sith lord, we can't stand a chance bro 16:38 < bridge> But Heinrich does not want that 16:38 < bridge> testmaplocally is added 16:38 < bridge> :( 16:38 < bridge> He does not like constant methods that return pointers 16:39 < bridge> alright 16:39 < bridge> The other one uses GameServer() 16:40 < bridge> so you cant mark it even if GameServer()->PracticeByDefault() is const? 16:40 < bridge> yeah i know but i als owant to contribute some from months to months xd 16:40 < bridge> ill take a look at prs soon 16:40 < bridge> Better convert him to the bright side using the trust lang hehe 16:40 < bridge> 16:40 < bridge> I have so few time lately sadly for the project, trying to get a new job very actively rn. 16:40 < bridge> 16:40 < bridge> I wish it would not just die 😬 16:40 < bridge> plenty of prs where its approved by roby but waiting for another maintainer to check 16:41 < bridge> jupsti dont worry i have designer cooking up something rn 16:41 < bridge> Yea fucked up right? Unless we add a const gameserver getter but then we can also call non const gameserver methods and Heinrich doesn’t like that 16:41 < bridge> and i'll work on ddnet-rs UI 16:41 < bridge> :owo: 16:41 < bridge> epyc 16:41 < bridge> i love these cuz robyt is a good reviewer so i dont have many doubts merging 16:41 < bridge> soon ™ 16:41 < bridge> (in like 2 years when life stops hitting me with life) 16:41 < bridge> understandable 16:47 < bridge> xd when i'm bored at work i scroll through PR's and read roby's requested changes 16:47 < bridge> 16:47 < bridge> thats basically my daily leetcode 16:49 < bridge> Sounds like death 16:49 < bridge> Chillerdragon cannot relate 16:49 < bridge> 😬 16:58 < bridge> does someone know where we get colors for each team 16:59 < bridge> GetDDTeamColor 16:59 < bridge> ty 17:23 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1386728391666831421/image.png?ex=685ac2f4&is=68597174&hm=dd88046c693a472e197b4d22f23e7cd84b0866c6a6a4ce80b61126aa6cf0c753& 17:23 < bridge> i choose a less intrusive way because the bg color already has lot of funcionality 17:23 < bridge> `PlayerBackgroundColor(bool Friend, bool Clan, bool Afk, bool Inside)` 17:24 < ChillerDragon> inside of what xd 17:24 < bridge> u should group them by team 17:24 < bridge> thats another pr 17:24 < bridge> so i can get more commits in 17:24 < bridge> 🤓 17:25 < bridge> ok but maybe robyt will want it sorted 17:25 < bridge> ithink they are already sorted by time somewhere 17:27 < bridge> `std::sort(pEntry->m_Info.m_aClients, pEntry->m_Info.m_aClients + Info.m_NumReceivedClients, CPlayerScoreNameLess(pEntry->m_Info.m_ClientScoreKind));` 17:28 < bridge> cant really tell what the number means 17:28 < bridge> 😍 😍 😍 17:28 < bridge> i thought about adding a header with all the info 17:30 < bridge> i thought if its sorted like in scoreboard with backgrounds it would be self explainatory without extra field 17:30 < bridge> the background already has lot of utility built in 17:31 < bridge> isnt it mostly unused 17:32 < bridge> looks like there is just afk indicator - slightly darker 17:32 < bridge> and green for friends 17:32 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1386730729291124846/image.png?ex=685ac522&is=685973a2&hm=4cc80413c454b8db7fd98e7ada24b68eaf7a01d20b020f92e2621350644d07f4& 17:32 < bridge> like in scoreboard, teams last 17:33 < bridge> i can remove the team if its 0 and it should be more than obvious 17:33 < bridge> to me the numbers are confusing 17:33 < bridge> probably not good ui practice 17:34 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1386731077699109067/image.png?ex=685ac575&is=685973f5&hm=64f680a96017b441d0e2295bb9e3e40cd69e9b4477bde22ca1842daa30e34012& 17:35 < bridge> bg for afk and friends doesnt make sense anyways 17:36 < bridge> ideally ui indicators should be the same in the server browser and ingame 17:36 < bridge> so friends become hearts , afk becomes zzz icon 17:36 < bridge> kek 17:36 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1386731632672899102/image.png?ex=685ac5f9&is=68597479&hm=db71cf4e78d8835c934da21461bb1cd8529dfa5b707b3ea48ee43ad6cc507a85& 17:36 < bridge> are icons easy to render 17:37 < bridge> but he plays the game 17:37 < bridge> ask someone that doesnt 17:37 < bridge> Me when renderplayer can't do everything related to rendering players: SHSODKDJWHWIWOANSGUDOANWBWQJDODPNS 17:38 < bridge> i need to brb but ill look at it somewhen 17:38 < bridge> if someone can define an exact layout that is ui acceptable i would be glad 17:39 < bridge> my gf says number of tries on the map 17:41 < bridge> xd 17:42 < bridge> @kebscs 17:42 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1386733065564454963/image.png?ex=685ac74f&is=685975cf&hm=77f75a10ab63fd4ba7032561dbf59de2885a4103ec7b16afab54580e6ab29a40& 17:42 < bridge> :nouis: 17:42 < bridge> Heart can be a text icon like in nameplate 17:43 < bridge> we could show a row of icons 17:43 < bridge> like bufs in a mmo 17:44 < bridge> :f3: 18:07 < ChillerDragon> lerato 18:08 < ws-client> just filter out players in teams in master they are never interesting anways 18:09 < ws-client> ddrace teams* 18:11 < bridge> io uring is no available on macos right? 18:30 < bridge> how do people accidently press ctrl shift G 😭 18:35 < bridge> smash the keyboard 18:36 < bridge> groupping rect with slight coloring would be better imho 19:26 < bridge> @essigautomat do u solemly swear to take care of render bugs if ur pr causes them in future releases? 19:28 < bridge> ahahahah rozuyiki securing his job 19:31 < bridge> merges incoming 19:32 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1386760729184440370/image.png?ex=685ae112&is=68598f92&hm=9d6634ac74a4e1d9792e4485e0f0fe7742352d105f61fa33ce1ec1c4ca76d1df& 19:32 < bridge> :justatest: 19:33 < bridge> @ryozuki what about #10092 #10000 #9733 19:33 < bridge> https://github.com/ddnet/ddnet/pull/10092 19:33 < bridge> https://github.com/ddnet/ddnet/pull/10000 19:33 < bridge> https://github.com/ddnet/ddnet/pull/9733 19:33 < bridge> im still going through the list 19:33 < bridge> xd 19:33 < bridge> and maybe some give conflicts 19:41 < bridge> @kebscs can u do 128 player 19:42 < bridge> well done forn ow 19:42 < bridge> there are like 10 prs in queue 19:43 < bridge> would love to but the player mapping thing is too confusing 19:45 < bridge> what about 19:48 < bridge> looks like something that still needs a discussion 19:48 < bridge> its just 1s delay when gamemode isnt ddnet and you die 19:48 < bridge> can be changed later if the solution is wrong 19:49 < bridge> idc about other gaemodes so u can get another maintainer for this 19:49 < bridge> :justatest: 19:49 < bridge> i mean it's open topic that's why it will not be merged right away 19:49 < bridge> especially if heinrichs in charge 19:50 < bridge> @chillerdragon 19:51 < bridge> i also rarely play other modes 19:51 < bridge> but its just annoying on zcatch 19:51 < bridge> that's also case on lms lts gamemodes 19:51 < bridge> i fixed his concern so idk now 19:52 < bridge> can it just have 0.5s delay for any mode? ino one would notice it anyway 19:52 < bridge> too low 19:52 < bridge> no one* 19:53 < bridge> and for ddrace no delay for sure 19:53 < bridge> is your reaction time higher than 500 ms 19:53 < bridge> ddrace you intentionally go into spec so you can instantly click someone 19:54 < bridge> on modes like zcatch it forces you into spec when you dont expect it so its annoying 19:54 < bridge> + the zcatch spectate is kinda slow so theres delay after switching target 19:54 < bridge> so you cant easily go back 19:54 < bridge> insta spec thing never works for me the way it should btw 19:54 < bridge> i need to click like 3 times just to capture player i need 19:55 < bridge> skill isue maybe 19:55 < bridge> or server lag 19:56 < bridge> infamous skill issue to capture the player right in the center of your viewport xd 19:57 < bridge> it's not really related to original issue, had this one too frequently to be silent 19:58 < bridge> hm yea 19:58 < bridge> i think i also couldnt spectate someone if few players were close to eachother 19:58 < bridge> but delay on zcatch is other issue 20:03 < bridge> some commit broke merge queue 😂 20:03 < bridge> https://github.com/ddnet/ddnet/queue/master 20:03 < bridge> @essigautomat looks like something with maplayers 20:03 < bridge> 20:04 < bridge> I swear that I'll fix bugs, when I created them and I am not drunk or on vacation 20:06 < bridge> I don't know what's happening in the merge queue? I know my PR went through and that it has to collide with the subcomponent thing 20:10 < bridge> oh yeah that is exactly what happened 20:14 < bridge> it's just "OnInit" from the new CGroupRenderLayer, which needs to use the new subcomponent interface with `GameClient()` and `Client()` instead of `m_pClient` and whatever 20:18 < bridge> @ryozuki u live dangerous ignoring heinrich review 😬 20:27 < bridge> which one do you mean btw? I got some merged, which I consider ... spicy 20:28 < bridge> Okay I mean the shader one ... :kek: 20:34 < bridge> like hes going to review 20:37 < bridge> I think for 128 players the scoreboard needs some love again 🙈 20:37 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1386777151939936446/screenshot_2025-06-23_20-36-14.png?ex=685af05e&is=68599ede&hm=a9a89f91e936d1c08bc4036428f64e3d22c8e7144f0322fc96313ec25e408544& 20:37 < bridge> is it not possible to always fill out the scoreboard? 20:38 < bridge> so theres not half of empty space if 65 connected 20:38 < bridge> glad you think the same 21:00 < bridge> :feelsbadman: poor 10K 21:00 < bridge> Should've kept it open 21:01 < bridge> Please queue #10314 again 21:01 < bridge> https://github.com/ddnet/ddnet/pull/10314 21:06 < bridge> done 21:09 < bridge> is there a reason maintainers dont add their own PR's? safety precaution? 21:10 < bridge> if something breaks it's not their fault :santatrollet: 21:12 < bridge> I think we can even do it if it's approved by another maintainer 21:12 < bridge> But somehow nobody does it anyway 21:12 < bridge> Probs considered bad style 21:13 < bridge> Meanwhile in other repos 21:13 < bridge> ... 21:13 < bridge> i PR and merge before the checks are done because i dont trust tests 21:13 < bridge> 🤷 21:14 < bridge> I merge bcs I am alone 21:14 < bridge> 🫠 21:16 < bridge> i'd ask for maintainer on ddnet-rs, but it belongs to DDRace und co kg now :( 21:16 < bridge> if you're alone, you push straight to the branch 21:17 < bridge> i'd ask for maintainer on ddnet-rs, but it belongs to DDRace und co kg now :( 21:17 < bridge> 21:17 < bridge> also reviews would take multiple days :kekw: 21:19 < bridge> i'd ask for maintainer on ddnet-rs, but it belongs to DDRace und co kg now :( 21:19 < bridge> 21:19 < bridge> also reviews would take multiple days :kekw: 21:19 < bridge> 21:19 < bridge> (and i suck at rust™) 21:29 < bridge> who can bump server version 21:29 < bridge> so preinputs go live 21:36 < bridge> Wowo ryo keeping prs below 100 21:40 < ChillerDragon> @Learath2 a 21:40 < ChillerDragon> @learath2 o 21:40 < bridge> oa 21:42 < bridge> Weihnachtsmann & Co. KG mentioned 21:42 < ChillerDragon> come ircing 21:45 < bridge> i dont even compile something 21:45 < bridge> i sometimes dont even compile something, then push 21:49 < bridge> do we know what breakage due to MinGW version deen’s referring to in #10392 21:49 < bridge> https://github.com/ddnet/ddnet/pull/10392 21:50 < bridge> Probably in regards to old Windows versions 21:50 < bridge> I assume it needs old versions because they can still compile for Windows 7 21:50 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1386795675777237163/image.png?ex=685b019e&is=6859b01e&hm=c8401def95ce15556d1d299c84432de120c61d5e7f9204c6a008241aa3caa24e& 21:51 < bridge> there's probably a reason for this but why doesn't the server list auto refresh? like instead of having to manually refresh it every time you want to go to a new server or check who's online where just have it auto refresh every minute or so 21:51 < bridge> not that one 😁 21:51 < bridge> or auto refresh on opening the server list 21:51 < bridge> that’s a symptom of not being able to use the new MinGW version 21:51 < bridge> i guess i can just put the old logic back and gate it behind mingw ver 21:52 < bridge> that’s a symptom of not using an up to date MinGW version, and deen said there’s something restricting us from updating 21:52 < bridge> I’m gonna investigate the windows 7 thing because if we did the builds via. MSYS2 with packages from the mingw64 environment I’m fairly sure it’d still work ootb 21:53 < bridge> but later 21:53 < bridge> skeith screenshot looks like win11 21:53 < bridge> pls 21:53 < bridge> That's not the real issue though 21:54 < bridge> i made a change assuming new mingw version; deen uses old version when making steam builds; client breaks 21:54 < bridge> deen can’t update without breaking w7 (or so I’m reading) 21:54 < bridge> alr 22:01 < bridge> You can still be maintainer there 22:01 < bridge> I think deens version is new enough. you just linked to the dll still as I mentioned in the PR 22:02 < bridge> You forgot to remove `-lssp` and thus the dll was still required 22:02 < bridge> But why did building locally work? 22:02 < bridge> Just compile with mingw and make sure the lib is not required anymore 22:02 < bridge> Bcs mingw is in your path? 22:02 < bridge> I made sure the dll was not 22:02 < bridge> Give me your exec 22:03 < bridge> And I can tell you more 22:03 < bridge> :proprietary: 22:03 < bridge> I don't have it anymore, can rebuild later again 22:03 < bridge> Then use the broken path 22:03 < bridge> Then use the broken patch 22:04 < bridge> I am not double clicking it. I promise 22:04 < bridge> ssp links to a stub dll 22:04 < bridge> now 22:04 < bridge> But the changelog says you should not link it at all 22:05 < bridge> it definitely doesn’t depend on the dll in my build 22:05 < bridge> Show the dyn section 22:05 < bridge> one sec 22:05 < bridge> gotta turn pc on 22:05 < bridge> You got a fast PC 22:05 < bridge> hehe 22:06 < bridge> mouse is off rn and i dont wanna turn it on 22:06 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1386799640317399221/image.png?ex=685b054f&is=6859b3cf&hm=c31b20b628ae6d681ad21794f9297d3b439cc7abcbad642bb3cd389ae3310457& 22:06 < bridge> no result 22:07 < bridge> It's also possible that one of our libs depends on it 22:07 < bridge> deen definitely uses old mingw version 22:07 < bridge> i tried copying libs over and it expects totally different versions 22:07 < bridge> I know he once downgraded 22:07 < bridge> Would just surprise me if he downgraded so much 22:07 < bridge> idk where the w7 thing comes from bcs afaik it's still supported 22:07 < bridge> but i have to finish work before i can look into this in any real capacity 22:08 < bridge> It was a bug in mingw 22:08 < bridge> Somewhere in this chat there is a link to it 22:19 < bridge> In the binaries I build, `libssp-0.dll` does not appear in the import list (checked with `objdump -p`) and also not in the list of DLLs that are actually loaded by the executable when launched (checked with Process Explorer). 22:20 < bridge> Well then either deen really downgraded like 2 years, or an older version of mingw does not link to a stub 22:20 < bridge> ugh i hate multeasy every time i awna test something theres an obvious botter which i have to swap to tclient to ban cuz nona my binds work 22:20 < bridge> #9411 22:20 < bridge> https://github.com/ddnet/ddnet/issues/9411 22:20 < bridge> This was when deen had to downgrade 22:20 < bridge> Dec. 2024 22:59 < bridge> @robyt3 22:59 < bridge> ```cpp 22:59 < bridge> for(auto &pComponent : m_vpAll) 22:59 < bridge> pComponent->OnInterfacesInit(this); 22:59 < bridge> 22:59 < bridge> m_LocalServer.OnInterfacesInit(this); 22:59 < bridge> ``` 22:59 < bridge> why isnt this a full blown component 23:01 < bridge> It's not integrated into the component lifecycle directly. The point of the sub-components is to not bloat the list of real components because it adds virtual calls for every callback like `OnRender` when when unused. 23:02 < bridge> can m_LocalServer be put into the compoenent 23:02 < bridge> can m_LocalServer be put into one of the components 23:02 < bridge> and that componenet oninterfacesinits it 23:02 < bridge> It doesn't belong into any component in particular 23:03 < bridge> If we add more sub-components directly to the gameclient we can add a loop over an initializer list for those 23:03 < bridge> mmmm okay 23:04 < bridge> editing gameclient.h causes a large recompile 23:04 < bridge> which is a bit annoying 23:04 < bridge> (i dont think thats solvable actually, so whatevs) 23:05 < bridge> also `Destructor of 'CLocalServer' is public and non-virtual (fix available)clang-tidycppcoreguidelines-virtual-class-destructor` 23:06 < bridge> I guess `CComponentInterfaces` should also have a virtual destructor 23:06 < bridge> we can use any of patterns to mitigate this btw like pimpl but it looks like overkill for this kind of project 23:07 < bridge> its the fact that everything is on gameclient as members 23:07 < bridge> which makes the large recompile 23:07 < bridge> we can move their initalization to the cpp file which makes the problem much less 23:09 < bridge> the componenet interfaces thing means that my solution to that 23:09 < bridge> breaks 23:09 < bridge> ```cpp 23:09 < bridge> #define COMPONENT(x) class C##x; 23:09 < bridge> #define SUBCOMPONENT(x, y) ; 23:09 < bridge> #include "component_list.h" 23:09 < bridge> #undef COMPONENT 23:09 < bridge> #undef SUBCOMPONENT 23:09 < bridge> class CGameClient : public IGameClient 23:09 < bridge> { 23:09 < bridge> #define COMPONENT(x) std::unique_ptr m_p##x; 23:09 < bridge> #define SUBCOMPONENT(x, y) ; 23:09 < bridge> #include "component_list.h" 23:09 < bridge> #undef COMPONENT 23:09 < bridge> #undef SUBCOMPONENT 23:09 < bridge> public: 23:09 < bridge> #define COMPONENT(x) class C##x &m_##x; 23:09 < bridge> #define SUBCOMPONENT(x, y) ; 23:10 < bridge> #include "component_list.h" 23:10 < bridge> #undef COMPONENT 23:10 < bridge> #undef SUBCOMPONENT 23:10 < bridge> 23:10 < bridge> CLocalServer m_LocalServer; 23:10 < bridge> ``` 23:10 < bridge> oh god wtf is this 23:10 < bridge> cursed cpp 23:10 < bridge> its the best solution i could find xd 23:10 < bridge> use templates at least xd 23:10 < bridge> cant do that 23:10 < bridge> need to do string mushing 23:10 < bridge> you will need to list them anyway somewhere 23:11 < bridge> this code doesn't remove any kind of duplication imho 23:11 < bridge> it reduces it from 23:12 < bridge> cmakelists 23:12 < bridge> include in gameclient.h 23:12 < bridge> member in gameclient.h 23:12 < bridge> list in gameclient.cpp 23:12 < bridge> to 23:12 < bridge> camelists 23:12 < bridge> list in componenent_list.h 23:12 < bridge> it also moves the construction to the cpp file reducing interdependency a ton 23:13 < bridge> when the time comes we can remove the reference, public the unique ptrs and use -> everywhere 23:13 < bridge> but thats a thousand(s) line change 23:15 < bridge> i think i can remove the double storage of each compoennet by using the vpall vector as the storage 23:15 < bridge> i think i can remove the double pointer of each compoennet by using the vpall vector as the storage 23:15 < bridge> i think i can remove the duplicated pointer to each compoennet by using the vpall vector as the ptr storage for the reference 23:15 < bridge> i think i can remove the duplicated pointer to each compoennet by using the vpall vector as the ptr storage 23:16 < bridge> aren't all components enlisted with get methods anyway? i don't remember if it does 23:16 < bridge> most arent, and that doesnt change much 23:16 < bridge> wrong reply 23:16 < bridge> if they were you still have to construct them sometime 23:16 < bridge> those with getters are constructed in the cpp file already 23:16 < bridge> theyre *special* 💅 23:17 < bridge> all components do? 23:17 < bridge> nop 23:18 < bridge> ``` 23:18 < bridge> class ... 23:18 < bridge> { 23:18 < bridge> CChat m_Chat 23:18 < bridge> ... 23:18 < bridge> } 23:18 < bridge> ``` 23:18 < bridge> means that the full class has to be known in the header 23:19 < bridge> @robyt3 for my pr can i make m_LocalServer just use a unique_ptr 23:19 < bridge> instead of also having a refernece 23:19 < bridge> eventually classes will have sub component interfaces which i would rather arent in the header fully 23:20 < bridge> and the system i got here isnt stretching to there 23:21 < bridge> if you plan on adding alotof component interfaces to gameclient it might be wroth it to prevent the duplication 23:21 < bridge> cpp doesnt offer a way to do this cleanly ): 23:22 < bridge> All (sub)components should use pointers then 23:22 < bridge> So `menus.h` would not have to include community icons either 23:23 < bridge> subcomponents (CComponents in CComponenets) do require the full lifecyle (ie being in vpall) (idk if they actually need to be full components though) 23:23 < bridge> why isnt that one in gameclient? 23:23 < bridge> is it just.. not needed 23:23 < bridge> anywhere else 23:25 < bridge> macros can be avoided with type lists though? 23:25 < bridge> it would look cleaner anyway, but then we need to introduce it to the source 23:25 < bridge> yeah whatever 23:25 < bridge> there is probably a better way 23:25 < bridge> but it means changing how it works at the other end 23:26 < bridge> which is a big chang 23:26 < bridge> which is a big change 23:26 < bridge> not really 23:26 < bridge> you will just do the same you do manually, it will do exactly what you want to do with macros 23:26 < bridge> just without preprocessor stuff 23:26 < bridge> wait wuh 23:26 < bridge> is that possible? 23:27 < bridge> i dont think it is 23:27 < bridge> cuz you still need to make the m_... members with type C... 23:28 < bridge> Community icons are not used outside the menus, yeah 23:28 < bridge> But could probably also be part of gameclient 23:28 < bridge> i can include the weird initilization in the gameclient even if it isnt a member of 23:29 < bridge> i would prefer it as it means no triple duplication 23:29 < bridge> if it was a list could use constexpr ifs and type stuff 23:30 < bridge> would be pog for making that work without macro shenanigans 23:39 < bridge> does anyone have an idea what ms_PhySize is? It doesn't exist in modern ddnet anymore 23:39 < bridge> i wanted to bring up another discussion if we really need declarations of components in gameclient if we can use something like kernel interfaces use, but to use template generated enum instead, but that's not simply possible at least without good amount of trickery. since kernel interfaces way is a bit humble and would need 1k+ code changes just for this, will never gonna happen. at least until someone will bring shiny lua interface with all component 23:41 < bridge> uh found something `m_ProximityRadius = ms_PhysSize;` 23:41 < bridge> ```cpp 23:41 < bridge> std::derived_from 23:41 < bridge> C++ Concepts library 23:41 < bridge> Defined in header 23:41 < bridge> template< class Derived, class Base > 23:41 < bridge> concept derived_from = 23:41 < bridge> std::is_base_of_v && 23:41 < bridge> std::is_convertible_v; 23:41 < bridge> (since C++20) 23:41 < bridge> ``` 23:41 < bridge> ): cpp20 23:42 < bridge> yup 23:42 < bridge> this works 23:46 < bridge> ```cpp 23:46 < bridge> // make a list of all the systems, make sure to add them in the correct render order 23:46 < bridge> for(CComponent *pComponent : { 23:46 < bridge> #define PART(x) std::is_base_of::value ? (CComponent *)&x : nullptr, 23:46 < bridge> #define COMPONENT(x) PART(m_##x) 23:46 < bridge> #define SUBCOMPONENT(x, y) PART(m_##x.y) 23:46 < bridge> #include "component_list.h" 23:46 < bridge> #undef PART 23:46 < bridge> #undef COMPONENT 23:46 < bridge> #undef SUBCOMPONENT 23:46 < bridge> }) 23:46 < bridge> if(pComponent) 23:46 < bridge> m_vpAll.push_back(pComponent); 23:47 < bridge> ``` 23:47 < bridge> sigh 23:53 < bridge> @robyt3 23:53 < bridge> ```cpp 23:53 < bridge> class CComponent : public CComponentInterfaces 23:53 < bridge> { 23:53 < bridge> public: 23:53 < bridge> /** 23:53 < bridge> * The component virtual destructor. 23:53 < bridge> */ 23:53 < bridge> virtual ~CComponent() 23:53 < bridge> { 23:53 < bridge> } 23:53 < bridge> ``` 23:53 < bridge> this should be in CComponentInterfaces i think