00:04 < bridge> Can we have smooth camera on the map editor when we write texts? 00:12 < bridge> I got merged™ 00:12 < bridge> I'm offically a delevoper 🤏😎 00:14 < bridge> u didn't add your name to the credits 00:15 < bridge> where 00:15 < bridge> 🥺 00:15 < bridge> line 2110 00:15 < bridge> o 00:15 < bridge> smh 00:21 < bridge> chillerdragon: is that your editor text typing from chillerbot? 01:00 < bridge> Now gotta do another pr 💪 01:06 < bridge> smhsmh 01:06 < bridge> can u do that for me pretty please,.,..,., 01:08 < bridge> I mean like a real one with other changes, also with it you could add yourselves to credits too 01:09 < bridge> i mean that's why I asked u cuz u a real dev who can do something else than translating stuff unlike me :justatest: 01:11 < bridge> I have no ideas to code atm 01:11 < bridge> I believe in you can do some change 01:11 < bridge> https://media.discordapp.net/attachments/1340082681710510213/1406408556265078864/caption.gif 01:11 < bridge> alr 05:11 < bridge> Is it possible to prove something using statistics? I mean would it be an acceptable proof if you can prove that the chance of the proof being incorrect is 1e-100? 06:32 < bridge> im n oexpert but i think proofs are definite 07:28 < bridge> Not in math 07:28 < bridge> But in lot of science it is 08:22 < bridge> https://en.wikipedia.org/wiki/Miller–Rabin_primality_test 08:22 < bridge> https://en.wikipedia.org/wiki/Freivalds'_algorithm 08:22 < bridge> 08:22 < bridge> 08:28 < ws-client> **** @soulyvevo ye it’s basically the one from chillerbot 09:27 < bridge> home server setup 09:27 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1412700402553454712/image.png?ex=68b93f46&is=68b7edc6&hm=2b6286202fa87446adc44854d809f9275e977f275184f10217b117c4f4a98543& 09:29 < bridge> https://discourse.llvm.org/t/tpde-llvm-10-20x-faster-llvm-o0-back-end/86664/6 09:36 < bridge> holy schmungus 09:36 < bridge> I wish I had a graphic card 09:36 < bridge> I mean a non-built in one 10:49 < bridge> looking for an 8 bay case for my NAS upgrade 🫠 11:24 < bridge> Why is the weight of my compiled DDNet 18 MB, when some TClient weighs 5? 11:27 < ws-client> **** backdoor 11:27 < ws-client> **** @rehoboamrulit release or debug build? 11:27 < bridge> oh sorry 11:33 < bridge> woah this is nice thank you 12:03 < bridge> strip release too 12:03 < bridge> and sstrip 12:08 < ws-client> **** 2 day matrix outage watafak https://status.matrix.org/ 12:09 < ws-client> **** Now I have to use horrible mobile browser to chat here when on the road 12:22 < bridge> @dmen2005 i got woosh to do first 12:22 < bridge> and i hunger 12:24 < bridge> xd take ur time i stil got a week on this pc be4 i get mine back and use specilised clients 13:21 < bridge> i added a sound to content.py and am trying to use it but its just using tee pain sound and idk why ): 13:21 < bridge> What do you guys use for website hosting? 13:22 < bridge> for static use github 13:22 < bridge> Something cheap for simple website 13:22 < bridge> I have a domain 13:22 < bridge> you can link a domain to github 13:22 < bridge> you can link a domain to github pages 13:24 < bridge> Github won't work 13:24 < bridge> whyn't 13:26 < bridge> even if u have dynamic content u can host that somewhere else 13:26 < bridge> so that if something goes down your page still works 13:26 < bridge> i have no sgugestions on where to host that stuff 13:26 < bridge> ): 13:32 < bridge> playing SOUND_TEE_CRY (19) instead of SOUND_FALLING_WOOSH (41) 13:32 < bridge> its so random idk how its happening 13:45 < bridge> `2025-09-03 12:45:34 I sound/opus: loaded 'audio/vo_teefault_pain_short-09.wv' index 41` 13:46 < bridge> ah 13:48 < bridge> @blazulite `2025-09-03 12:47:15 I sound/wv: failed to decode sample (this legacy WavPack file is deprecated, use version 4.80.0 to transcode)` 13:53 < ws-client> **** sos @0xdeen 13:53 < ws-client> **** i added crash bug to master which is included in release as of right now i think 13:53 < ws-client> **** fix on the way 14:12 < ws-client> **** can someone explain me this line of code please? 14:12 < ws-client> **** https://github.com/ddnet/ddnet/blob/4ee6a39405fa648d5f0a18e4d1ea8348093f0a9d/src/engine/server/server.cpp#L4057 14:12 < ws-client> **** ``(pThis->m_aClients[i].m_pRconCmdToSend && str_comp(pResult->GetString(0), pThis->m_aClients[i].m_pRconCmdToSend->m_pName) >= 0))`` 14:13 < ws-client> **** For context this is a check that happens when the permissions for rcon commands changed. So this check determines if the command info for a command such as "kick" is sent to a client or not 14:13 < ws-client> **** `m_pRconCmdToSend` points to a command info its a linked list and it is non null as long as a authed players is slowly receiving all commands 14:14 < ws-client> **** `str_comp` with `>= 0` alone is quite fancy 14:14 < ws-client> **** `@return `0` if string a is equal to string b. ` 14:14 < ws-client> **** ``@return `> 0` if string a is greater than string b. `` 14:15 < ws-client> **** why would it check for something other than strict comparison of the currently being sent command??????????????????????????????????????? 14:16 < ws-client> **** if it would check for equality i could assume what the code is doing. It might skip the send of the rcon command if it will be sent anyways. 14:16 < bridge> im pretty sure comands are alphabetically sorted 14:16 < ws-client> **** but why does it also guard the removal then 14:16 < bridge> so this does nothing 14:16 < ws-client> **** oh alphabetically sorted is interesting 14:16 < ws-client> **** i highly doubt they are sorted tho 14:16 < bridge> you should check if it is 14:16 < bridge> this is an iirc 14:17 < ws-client> **** arent they just pushed into the linked list in the order they are registered in 14:17 < ws-client> **** but yes good point if it was sorted then the code would make a little bit more sense 14:18 < bridge> ``` 14:18 < bridge> 14:18 < bridge> if(DoAdd) 14:18 < bridge> AddCommandSorted(pCommand); 14:18 < bridge> ``` 14:18 < bridge> they are sorted 14:18 < bridge> since `m_pRconCmdToSend` should be a command earlier in the list this is a no-op 14:18 < ws-client> **** `void CConsole::AddCommandSorted(CCommand *pCommand)` 14:18 < ws-client> **** oho 14:18 < bridge> this is ran on register 14:19 < ws-client> **** yes! 14:19 < bridge> the behaviour may be weird for temp/server registered commands but that doesnt apply here 14:19 < ws-client> **** you are right they are sorted 14:19 < bridge> theres no way to get them unsorted as they are sorted on addition and you arent meant to edit them 14:20 < ws-client> **** > since m_pRconCmdToSend should be a command earlier in the list this is a no-op 14:20 < bridge> and theres nothing wrong with sending info out of alphabetical order, the client should sort them 14:20 < ws-client> **** so the if statement guards the no-op right? 14:20 < ws-client> **** instead of being a no-op it self 14:20 < ws-client> **** so the code makes sense right? 14:20 < bridge> im calling it a no-op cuz its always false 14:20 < ws-client> **** the condition is always false?? wait wat 14:20 < ws-client> **** why 14:21 < bridge> either there is no previosuly sent command or the previously sent command is earlier in the list 14:21 < ws-client> **** `m_pRconCmdToSend` is previous? im not sure? 14:21 < ws-client> **** isnt that future? 14:22 < bridge> if its future it would always be true 14:22 < bridge> oh 14:22 < bridge> wait maybe its for number of command to send /tick 14:22 < bridge> and m_prconcmdtosend is lastsentprevious tick + 5 14:22 < bridge> and m_prconcmdtosend is lastsentprevious tick + sv_commands_per_tick 14:22 < bridge> thats a weird way to do it tho 14:23 < ws-client> **** why is it always true then 14:23 < bridge> did you miss msgs? 14:23 < bridge> ``` 14:23 < bridge> if its future it would always be true 14:23 < bridge> oh 14:24 < bridge> wait maybe its for number of command to send /tick 14:24 < bridge> and m_prconcmdtosend is lastsentprevious tick + 5 14:24 < bridge> and m_prconcmdtosend is lastsentprevious tick + sv_commands_per_tick 14:24 < bridge> thats a weird way to do it tho 14:24 < bridge> ``` 14:24 < ws-client> **** i saw the messages but they confused me 14:24 < ws-client> **** so i responded only to the one that made sense to me xde 14:24 < bridge> the server sends a limited number of commands per tick 14:24 < bridge> as to not ddos itself 14:25 < ws-client> **** yes 14:25 < bridge> maybe this is the mechanism to stop itself from sending more than what it wants 14:25 < bridge> instead of a counter 14:25 < ws-client> **** yes 14:25 < ws-client> **** wait no 14:25 < ws-client> **** my condition only ever sends 1 command 14:25 < ws-client> **** there is no ratelimit 14:25 < ws-client> **** the rate limit is only on auth 14:26 < ws-client> **** i assume it checks if the command was already sent or not 14:26 < ws-client> **** but even if thats the case i dont get it 14:26 < ws-client> **** because the code it guards is a removal or add 14:26 < ws-client> **** oh wait no it makes sense 14:26 < ws-client> **** if it would remove it wont send 14:26 < bridge> can i make my own size_t? 14:26 < ws-client> **** if it would add it will add anyways 14:27 < ws-client> **** typedef unsigned int? 14:27 < ws-client> **** unsigned long i guess 14:27 < bridge> well i guess 14:27 < ws-client> **** or wdym 14:27 < bridge> SvServerInfoPerSecond 14:27 < bridge> Why would you? 14:27 < ws-client> **** yes yes solly but thats a different part of the code 14:27 < ws-client> **** thats the on auth sending 14:27 < bridge> i thought chat commands were sent at same rate 14:27 < ws-client> **** that for sure is horribly slow and furo once attempted to fix it but pr never got merged 14:28 < bridge> i dont wanna include stddef xd 14:28 < ws-client> **** but my code is not about chat commands 14:28 < ws-client> **** or sending multiple 14:28 < ws-client> **** its about sending one rcon add or remove 14:28 < bridge> Well, no, size_t is platform specific 14:28 < ws-client> **** yes then copy the typedef from stddef 14:29 < bridge> ```cpp 14:29 < bridge> const int ConsoleAccessLevel = Client.ConsoleAccessLevel(); 14:29 < bridge> for(int i = 0; i < MAX_RCONCMD_SEND && Client.m_pRconCmdToSend; ++i) 14:29 < bridge> { 14:29 < bridge> SendRconCmdAdd(Client.m_pRconCmdToSend, ClientId); 14:29 < bridge> Client.m_pRconCmdToSend = Client.m_pRconCmdToSend->NextCommandInfo(ConsoleAccessLevel, CFGFLAG_SERVER); 14:29 < bridge> if(Client.m_pRconCmdToSend == nullptr) 14:29 < bridge> { 14:29 < bridge> SendRconCmdGroupEnd(ClientId); 14:29 < bridge> } 14:29 < bridge> } 14:29 < bridge> ``` 14:29 < bridge> yy, ik but it's still just some macro magic right? 14:29 < bridge> that is a silly way to do it 14:30 < bridge> And different for every compiler probably 14:30 < ws-client> **** yes its horrible solly but thats not my concern right now 14:30 < bridge> whats ur concern 14:30 < bridge> i guess i have to live with stddef and math.h 14:30 < bridge> -lsmh 14:31 < bridge> -l*s*m**h 14:31 < bridge> -l*s*m*h* 14:31 < ws-client> **** @teero777 why give up 14:31 < ws-client> **** fight the bloat 14:31 < bridge> xD 14:31 < bridge> i already have my own mem_zero 14:32 < ws-client> **** based 14:32 < ws-client> **** continue that route 14:32 < bridge> and im not replacing the the math functions xD 14:32 < bridge> Why? Are you targeting some microcontroller? 14:32 < bridge> that would quadruple my code size and be slower 14:32 < bridge> ```cpp 14:32 < bridge> Client.m_SfxFallingWoosh = Sound()->PlayAt(CSounds::CHN_WORLD, SOUND_FALLING_WOOSH, 0, 1.0f, Client.m_RenderPos); 14:32 < bridge> ``` 14:32 < bridge> sound falling woosh == 41, but the sample im looking for is in116 14:33 < bridge> no, i just don't like the include directive 14:33 < bridge> personal vendetta 14:33 < bridge> Append only programming :pepeW: 14:33 < bridge> theres no 116 constant i can find 14:35 < bridge> because im looking for set 41 14:35 < bridge> adoi 14:35 < bridge> eyo don't put me in that shelf i only replaced the memset xD 14:36 < bridge> Then you are probably missing out on compiler optimizations 14:37 < bridge> i do call __builtin_memset if it exists. it's barely used in some initialization functions so no worries. 14:38 < bridge> why are sounds and sets seperated into a component?? 14:38 < bridge> why are sets seperated into a component?? 14:39 < bridge> why is there a seperate Sounds() and m_Sounds in gameclient 14:40 < bridge> ```cpp 14:40 < bridge> static inline void mem_zero(void *ptr, size_t n) { 14:40 < bridge> #if defined(__has_builtin) 14:40 < bridge> #if __has_builtin(__builtin_memset) 14:40 < bridge> __builtin_memset(ptr, 0, n); 14:40 < bridge> return; 14:40 < bridge> #endif 14:40 < bridge> #endif 14:40 < bridge> unsigned char *p = (unsigned char *)ptr; 14:40 < bridge> while(n--) *p++ = 0; 14:40 < bridge> } 14:40 < bridge> #define lcc__zero(x) mem_zero(&(x), sizeof(x)) 14:40 < bridge> #define lcc__pzero(x) mem_zero((x), sizeof(*x)) 14:40 < bridge> ``` 14:40 < bridge> here it is if you wonder 14:40 < ws-client> **** @teero777 do you target multiple architectures? 14:41 < bridge> i don't know 14:41 < ws-client> **** i can recommend musl its so easy to understand 14:42 < bridge> Engine sounds interface should not be aware of game details 14:42 < ws-client> **** but ye size_t depends on the architecture 14:42 < bridge> sure but the sound component should be minimal 14:42 < bridge> just handle loading and settings listener pos 14:42 < bridge> ```cpp 14:42 < bridge> // play sound from queue 14:42 < bridge> if(m_QueuePos > 0) 14:42 < bridge> { 14:42 < bridge> int64_t Now = time(); 14:43 < bridge> if(m_QueueWaitTime <= Now) 14:43 < bridge> { 14:43 < bridge> Play(m_aQueue[0].m_Channel, m_aQueue[0].m_SetId, 1.0f); 14:43 < bridge> m_QueueWaitTime = Now + time_freq() * 3 / 10; // wait 300ms before playing the next one 14:43 < bridge> if(--m_QueuePos > 0) 14:43 < bridge> mem_move(m_aQueue, m_aQueue + 1, m_QueuePos * sizeof(QueueEntry)); 14:43 < bridge> } 14:43 < bridge> } 14:43 < bridge> ``` 14:43 < bridge> this is probably the cause of that demo bug 14:44 < bridge> not rly a duplicate 14:44 < bridge> since its in console 14:44 < bridge> but your explaiantion covers both, and its a wontfix mostly 14:46 < bridge> Seems minimal to me, there is nothing to remove 14:46 < bridge> you cannot play a set with flags because Sound() doesnt expose it 14:47 < bridge> i dont think m_Sound should wrap Sound() 14:47 < bridge> because both are accessable, Sound() is already used in client alot and set data is global and constant 14:48 < bridge> See also the comment in `CSounds::PlayAndRecord` regarding desynced sounds in demos 14:48 < bridge> i do not see usages either ill try clangd 14:48 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1412781187398762620/image.png?ex=68b98a83&is=68b83903&hm=f28d9381d52bbe6802541269b8253bc7283ae2484dd35bd8741aa23ea181e5fe& 14:48 < bridge> `m_Sounds` 14:48 < bridge> yeah 14:48 < bridge> why cant it be playsetat 14:49 < bridge> it could even be polymorphic and use enum classes 14:49 < bridge> anyway changing all that is not what i wana do right now xd so ill just add flags to m_Sounds 14:50 < bridge> and it doesnt return voiceid 14:50 < bridge> grr 14:51 < bridge> wait set data isnt constant 15:36 < bridge> ```cpp 15:36 < bridge> const auto Error = [](const char* pFormat, auto... Args) { 15:36 < bridge> log_error("sound/wv", pFormat) 15:36 < bridge> }; 15:36 < bridge> ``` 15:36 < bridge> i wana use a macrooo 15:39 < bridge> Don't 15:39 < bridge> i know 15:40 < bridge> ```cpp 15:40 < bridge> // no need to load sound when we are running with no sound 15:40 < bridge> if(!m_SoundEnabled) 15:40 < bridge> return -1; 15:40 < bridge> ``` 15:40 < bridge> why is this in loadopuis but now wv 15:40 < bridge> ```cpp 15:40 < bridge> // no need to load sound when we are running with no sound 15:40 < bridge> if(!m_SoundEnabled) 15:40 < bridge> return -1; 15:40 < bridge> ``` 15:40 < bridge> why is this in loadopus but not wv 15:41 < bridge> Reminder that you have 6 stale PRs open :justatest: 15:41 < bridge> ermm 15:41 < bridge> oh look im shiny again 15:42 < bridge> atleast for this one im not blocking 15:43 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1412795011623424120/image.png?ex=68b99763&is=68b845e3&hm=cf8ce68cabf105b11692521186460ad2c0b61a3df742dfb94f7af333fe193680& 15:43 < bridge> lots of added info to netmsgs to be able to add it 15:43 < bridge> Most of those commits could be moved to a separate PR and merged quickly 15:43 < bridge> is the plan 15:43 < bridge> oh 15:43 < bridge> for that 15:43 < bridge> The feature itself rather needs a discussion instead of a stale PR 15:43 < bridge> sure can do 15:43 < bridge> well its a needed feature 15:43 < bridge> its implementation needs discussion 15:44 < bridge> (cuz it required net changes) 15:52 < bridge> ```cpp 15:52 < bridge> Sample.m_LoopStart = -1; 15:52 < bridge> Sample.m_LoopEnd = -1; 15:52 < bridge> ``` 15:52 < bridge> there was a pl;an to support fancy looping samples? 15:52 < bridge> but its unused and unimplemented 15:54 < bridge> <0xdeen> just get a single 30TB disk (and a backup somewhere of course)? That's my approach at least 16:09 < bridge> https://tenor.com/view/pipotam-baby-hippo-hippo-wash-shower-gif-3406421565683572068 16:10 < bridge> got 4x 16tb, need more space. and 30tb is not optimal atm for money per tb spent. It's either Somerhalder ng between 18 and 22tb at the moment. 16:41 < bridge> pog named threads, print gathers it from context 16:41 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1412809685526118521/image.png?ex=68b9a50d&is=68b8538d&hm=530235951c47b4fe21f66c0994d3d4ee606eaf135b4b9943a03b024c7664d440& 16:52 < ws-client> **** @robyt3 embracing the atomic prs and reducing stale prs!!! my man! 17:48 < bridge> @chillerdragon how do I make `ddnet-insta` server say 'Welcome to my server!' 17:49 < bridge> Also laser is bouncing 4 times by default for `iDM`, `iCTF`, `fng`, `zCatch` laser 17:49 < bridge> Also laser is bouncing many times by default for `iDM`, `iCTF`, `fng`, `zCatch` laser 18:17 < bridge> something between 18 and 22tb where you het the cheapest drives 18:21 < ChillerDragon> @pathos3005 sv_welcome 18:21 < ChillerDragon> you need a reset.cfg 18:21 < ChillerDragon> https://github.com/ddnet-insta/ddnet-insta/?tab=readme-ov-file#configs 18:27 < bridge> Thanks 18:27 < bridge> On a different topic for `twgpu`, I'm really confused on this... 18:27 < bridge> Make it make sense 💩 18:27 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1412836431096713216/image.png?ex=68b9bdf6&is=68b86c76&hm=effd47382fddcaefff2c29fa7baf67372205cb529e80a00a4011b8cf5284448e& 18:28 < bridge> On a different topic, for `twgpu`, I'm really confused on this... 18:28 < bridge> Make it make sense 💩 18:28 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1412836431096713216/image.png?ex=68b9bdf6&is=68b86c76&hm=effd47382fddcaefff2c29fa7baf67372205cb529e80a00a4011b8cf5284448e& 18:29 < bridge> if you want to encode to video, you now (not sure if it'll change) need to do --features ffmpeg when installing twgpu 18:29 < bridge> I made ffmpeg optional because many people had trouble building with it 18:30 < bridge> and twgpu-encode-demo now has two subcommands: `images` and `ffmpeg` 18:31 < bridge> you can for instance just append ` ffmpeg` to your command to make it work (as long as you already built twgpu with the ffmpeg feature enabled) 18:32 < bridge> @pathos3005 feel free to ping me whenever you have a twgpu question :) 18:33 < bridge> hm, I agree that the order of arguments is a little weird, maybe it should indeed be the first argument 18:33 < bridge> but then I'm not sure how it works with the parameters for the entire cli vs the parameters just for the subcommand 18:44 < bridge> Oh I see, good to know 18:45 < bridge> HUH 18:46 < bridge> ddnet sound system is weird 18:46 < bridge> have sorted it x-x 18:46 < bridge> currently fighting with other stuff 18:53 < bridge> is there any way to play DDNet on IOS 18:54 < bridge> No 18:54 < bridge> There was a browser version, unsure how that is these days 19:01 < bridge> oh gg 19:02 < ws-client> **** @pathos3005 did you check if /usr/share/ddnet or /usr/share/games/ddnet exists? 19:02 < ws-client> **** the apt ddnet package is really bad 19:02 < bridge> cant connect to most servers due to websockets not being turned on 19:02 < ws-client> **** its basically a virus 19:02 < bridge> is that just cuz its old, and old fullscreen handling fucks up monitros 19:03 < bridge> ` if(WavpackGetTagItem(pContext, "loop_start", aBuf, sizeof(aBuf)) > 0)` 19:03 < bridge> anyone know why this is segfaulting ): 19:05 < bridge> documentation doesnt show any requirements 19:05 < bridge> pContext is non null 19:07 < bridge> what is WavpackGetTagItem 19:12 < bridge> yup 👍 19:16 < bridge> Oh, twgpu can't render demo without GPU, I mean it doesn't fallback to CPU 19:17 < bridge> Well shet 19:17 < bridge> gets tag from thing 19:17 < bridge> gcc test.c -lwavpack 19:18 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1412849118279241818/test.c?ex=68b9c9c7&is=68b87847&hm=d32881d2404e16b6293e313c89021adaeb5e07529faa9ed8653b7b5169c06ff9& 19:18 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1412849184276615248/sfx_falling_woosh.wv?ex=68b9c9d7&is=68b87857&hm=b74a14da85c4a12924f44d27580c902033b2641577ad667f0cea7cff4bb2f313& 19:18 < bridge> as ddnet manually does the file reading i think my callback is a bit scuffed 19:18 < bridge> ```cpp 19:18 < bridge> WavpackStreamReader Callback = {0}; 19:18 < bridge> Callback.read_bytes = ReadData; 19:18 < bridge> Callback.get_pos = GetPos; 19:18 < bridge> Callback.set_pos_abs = SetPosAbs; 19:18 < bridge> Callback.set_pos_rel = SetPosRel; 19:18 < bridge> Callback.push_back_byte = PushBackByte; 19:18 < bridge> Callback.get_length = GetLength; 19:18 < bridge> Callback.can_seek = []([[maybe_unused]] void *pId) { return 1; }; 19:18 < bridge> ``` 19:19 < bridge> i made set_pos_abs and set_pos_rel but theres no docs on how they work 19:19 < bridge> so i prsesume they are wrong and thtas why its segfaulting 19:19 < bridge> its a shame that an invalid input can segfault 19:19 < bridge> but its a harmless 0x0 segfault 19:19 < bridge> but its a harmless 0x0 read 19:19 < bridge> (by libwavpack not my code) 19:22 < bridge> they are just wrappers of fseek 19:22 < bridge> u dont see it but its rgb 19:22 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1412850348908871762/image.png?ex=68b9caec&is=68b8796c&hm=2c5699cad05e8f4f22bf2c47f78750368945275ac249343c5c4bf1c9e4853e68& 19:23 < bridge> I dont see it 19:23 < bridge> im lazy to emerge obs 19:23 < bridge> https://cdn.discordapp.com/attachments/252358080522747904/1348432282993692843/78E60D5BC51CF2A2B4B4EF6B6AD17277.gif 19:24 < bridge> you can install e.g. lavapipe, which provides your system with a vulkan interface that runs on the cpu :) 19:25 < bridge> https://wiki.archlinux.org/title/Vulkan#Software_rendering 19:32 < bridge> IM A FUCKING IDIOT 19:35 < bridge> i freed the buffer 19:44 < bridge> i only see rg 19:47 < bridge> i see yellow square and black around 19:48 < bridge> my bad i found the green 19:48 < bridge> man where 19:49 < bridge> there are only yellow and black 19:51 < bridge> ``` 19:51 < bridge> "Passes CTS. I did not test any games because I did not have time to wait for a frame to render. Performance improvements will come soon(ish)." 19:51 < bridge> ``` 19:52 < bridge> xD 19:52 < bridge> from where is this 19:52 < bridge> 19:55 < bridge> > Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. 19:55 < bridge> 20,000? thats like multiple a day over the last 20 years 19:55 < bridge> doesn't seem realistic honestly 19:55 < bridge> > Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. 19:55 < bridge> 20,000? thats like multiple a day over the last 30 years 19:56 < bridge> 1.8 a day 20:00 < bridge> I don't think meta data is useful. It's not readable in the repository. Licences should be in the text files. 20:01 < bridge> i am using tags for loop_start and loop_end 20:01 < bridge> since those could change with a custom asset 20:01 < bridge> hardcoding a loop start time or seperating it into a loop first bit, and loop the loopy bit file also is weird 20:01 < bridge> hardcoding a loop start time or seperating it into a loop first bit, and loop the loopy bit file is weird 20:02 < bridge> * hard coding 20:02 < bridge> * meta file 20:02 < bridge> * seperate into loop start and loop files 20:02 < bridge> are all other solutions, but are a bit wack 20:02 < bridge> We use an ancient version of wavpack 4.40 tiny encoder. Why do you need this data in the file at all? 20:02 < bridge> * hard coding 20:02 < bridge> * meta file 20:02 < bridge> * seperate into loop start and loop files 20:02 < bridge> are other solutions, but are a bit wack 20:03 < bridge> i need to set looping pts 20:03 < bridge> https://davidlattimore.github.io/posts/2025/09/02/rustforge-wild-performance-tricks.html 20:03 < bridge> if files get moves around its nice if they had credit in them 20:03 < bridge> Nobody can read the meta data. That's what licence files are for. 20:03 < bridge> but thats not a strong opinion 20:04 < bridge> mpv shows the author 20:04 < bridge> I MISREAD AS "FRIED" 20:04 < bridge> i did fry the buffer aswell 20:04 < bridge> My americanized ass: 20:04 < bridge> fried the butter 20:04 < bridge> is using the meta for loop_start/end fine 20:05 < bridge> I don't see the point. Just loop the entire file. 20:05 < bridge> it doesnt work 20:06 < bridge> It should. Music is looped. 20:06 < bridge> this is for sfx 20:06 < bridge> although music could use it too 20:06 < bridge> Same thing, just play the sound again when it stops 20:06 < bridge> Unless you want to make this work on ancient versions of Linux 20:06 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1412861440821297313/image.png?ex=68b9d541&is=68b883c1&hm=59c36b2b876381d64bb711944ca1e3787e6b79e51ff6bf65fba981241fd7bfc4& 20:07 < bridge> i guess u can do the volume 20:07 < bridge> ? 20:08 < bridge> I recommend first opening an issue to discuss your use case for DDNet, otherwise this will probably become another stale PR 20:08 < bridge> We use a version of wavpack that is more than 15 years old 20:08 < bridge> i dodnt need to update wavpack 20:08 < bridge> i dont need to update wavpack 20:09 < bridge> But it would have to be tested everywhere, and I don't see the use case yet 20:09 < bridge> its for a falling woosh sound 20:09 < bridge> or piano in ddnet 20:10 < bridge> That's a feature and needs an issue to discuss 20:10 < bridge> if you can stop sounds with a custom server you could... 20:11 < bridge> Then you might be solving the wrong problem. Let the server stop sounds instead. 20:11 < bridge> theres a seperate issue about that, with this and that you can make a very good ddpiano 20:13 < bridge> Hey @heinrich5991 I'm not sure if this is the correct way of talking to you about this issue, but on my custom server I've got a message saying to contact you on this discord. What's happening? 20:13 < bridge> masterbanned ): 20:13 < bridge> yeah but why :( 20:14 < bridge> did u fake players 20:14 < bridge> nope, why would i 20:14 < bridge> this message appears on my server admin console 20:14 < bridge> did you do any of these 20:15 < bridge> If the server requires account creation and login to play, the requires_login property must be set to true (refer to server.cpp). 20:15 < bridge> I did not break any of these rules 20:15 < bridge> i just checked 20:17 < bridge> trust me bro 20:17 < bridge> it does not require any kind of registration] 20:17 < bridge> russian leaked 20:17 < bridge> what xd 20:17 < bridge> all russians i know put ) ] stuff at end 20:17 < bridge> xD 20:17 < bridge> have you checked if your ip is on the list on the website? most ips have the reason next to them 20:18 < bridge> ] is next to enter 20:18 < bridge> + 20:18 < bridge> thats my ] 20:18 < bridge> next to enter 20:18 < bridge> that was the original idea by the way 20:18 < bridge> +++ 20:18 < bridge> US keyboard, yeah :D 20:18 < bridge> i didn't know about that, i will check 20:18 < bridge> I mean splitting this in two different files (buildup.wv, loop.wv) 20:18 < bridge> thats a bit yikes tho 20:19 < bridge> why deallocate and reallocate a voice 20:19 < bridge> i guess you could stitch it at load 20:19 < bridge> i guess you are talking about master-bans.cfg? My server IP is not listed 20:20 < bridge> https://ddnet.org/rules/master/ I meant on this site, might be the same list tho 20:20 < bridge> my IP is not on that list either 20:20 < bridge> `Server names should be unique and should not impersonate or duplicate existing servers.` 20:20 < bridge> "duplicate"? 20:20 < bridge> then I recommend you to dm heinrich directly, he isn't in this chat rn 20:20 < bridge> my server's IP is not on that list either 20:21 < bridge> he sometimes answers dms 20:21 < bridge> not pings here 20:22 < bridge> "DDNet GER 1 - Lilac 24/7" 20:22 < bridge> or 20:22 < bridge> "DDNet GER1 - AiP-Gores 24/7" 20:22 < bridge> 20:22 < bridge> shouldn't be duplicates of anything 20:22 < bridge> lol 20:22 < bridge> it is 20:22 < bridge> dont put ddnet 20:22 < bridge> but i don't have the official ddnet flag, so users would be able to differentiate, no? 20:22 < bridge> but sure, i can change itt 20:22 < bridge> its still trying to look like it 20:23 < bridge> why dont u use a custom name 20:23 < bridge> TeeRock 20:23 < bridge> kek 20:23 < bridge> your server name has the exact format of official ddnet servers, that is a very probable ban reason 20:23 < bridge> You are not allowed to call it DDNet 20:24 < bridge> Alright, I will change it. I assume I'll have to contact heinrich anyways? 20:25 < bridge> Yeah, not sure if anyone else handles master bans 20:35 < bridge> I'd actually also need this for the recorder tiles in a later step 20:38 < bridge> DDNet is the name, DDRace is the gamemode 20:38 < bridge> Same thing with KoG. 20:38 < bridge> KoG is the name, Gores it the gamemode 20:38 < bridge> @essigautomat for #10820 you realise this is audio not animation 20:38 < bridge> https://github.com/ddnet/ddnet/issues/10820 20:38 < bridge> ty gh bot 20:38 < bridge> ah right, thanks all! 20:39 < bridge> DDrace* 20:39 < bridge> well it is a ddnet server, I saw multiple servers also mentioning that in the server name somewhere 20:39 < bridge> yes ofc, but audio would be the obvious next step 20:39 < bridge> having stop start tiles for audio would make ddnet piano really good xd 20:39 < bridge> having stop start tiles for audio would make ddnet piano possible in master 20:40 < bridge> it's DDRace 🤓 20:40 < bridge> I am _planning ahead_™ 20:40 < bridge> exactly 20:40 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1412869948442804367/image.png?ex=68b9dd2d&is=68b88bad&hm=4fd1a802e40f9bb99760080b2f5718d457456dc344031552fb4f1f476b0aa73b& 20:40 < bridge> all client sided, but the server could detect it 20:41 < bridge> i agree with you, but sadly its not 20:41 < bridge> the game mode i mean, not DDNet 20:41 < bridge> ? 20:41 < bridge> DDrace is DDrace 20:41 < bridge> DDNet is DDNet 20:41 < bridge> i would like it to be DDRace, but its not, its DDrace 20:41 < bridge> ok wait im gonna get some evidence for u 20:41 < bridge> bazinga 20:42 < bridge> :ChooChoo: I'm on my phone I typed it out quickly it's not that deep 20:42 < bridge> oh right that is a joke 20:42 < bridge> thank you for clarifying 20:42 < bridge> is very deep 20:43 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1412870635729981601/Screenshot_2025-09-03-21-43-18-75_40deb401b9ffe8e1df2f1cc5ba480b12.jpg?ex=68b9ddd1&is=68b88c51&hm=63259e27cbdba034cd5e8db66e74fe027c7d748401e0ac34cc718ed72f1deddb& 20:43 < bridge> :cat_hmm: 20:43 < bridge> the DDR is no more guys 20:44 < bridge> lies 20:44 < bridge> Dumbesdepublik Reutschland? 20:44 < bridge> i asked chiller about this 10 days ago 20:44 < bridge> xd 20:45 < bridge> DDRace is capitalized like that literally on the ddnet.org frontpage, I think both is okay ^^ 20:45 < bridge> idk what I should answer, the wall is no more 20:46 < bridge> maybe deen thought the same way xD 20:46 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1412871398053118064/image.png?ex=68b9de87&is=68b88d07&hm=1ad666bf263eceee7cbb67e6ea5f30037448c5d65cefd813fa72379f1d35561d& 20:46 < bridge> WHAAA 20:46 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1412871425806696468/image.png?ex=68b9de8d&is=68b88d0d&hm=779b283c5f46c21d13b950c1ace4046c4b14b89dc4b5e0195d402d0be832fb4c& 20:46 < bridge> > DDraceNetwork (DDNet) is an actively maintained version of DDRace [...] 20:46 < bridge> `DDraceNetwork (DDNet) is an actively maintained version of DDRace` 20:47 < bridge> the gamemode is DDrace when we can be asked 20:47 < bridge> I just.. 20:47 < bridge> 20:47 < bridge> It's not that deep :pepe_cry: 20:47 < bridge> well old DDRace is DDRace 20:47 < bridge> new DDrace is DDrace 20:47 < bridge> i fixed it 20:49 < bridge> it's DDRace. if it was said by The Deen then shall it be the truth 20:50 < bridge> but he was not the first creator of ddrace 20:50 < bridge> was it grayfox? 20:52 < bridge> 3DA 20:54 < bridge> never heard of that person 20:54 < bridge> must have vanished 20:56 < bridge> Actually showed up on discord a couple years ago randomly 😄 20:57 < bridge> https://discord.com/channels/252358080522747904/293493549758939136/682243181177208863 20:57 < bridge> Got scared away by account stuff, classic 20:59 < bridge> nice thanks 21:00 < bridge> omg soreu is there 21:06 < bridge> everyone asks where soreu is but nobody asks how soreu is 21:07 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1412876761922015282/Screenshot_20250903-210738.png?ex=68b9e386&is=68b89206&hm=e141e689417823b57a1f666105f74f2f6443e81411cd2ab9df7f738a025cec0b& 21:08 < bridge> everyone wants accounts but no one implements accounts and instead rewrites everything in rust 21:09 < bridge> is there at least 1 person except chiller who is against accounts 21:10 < bridge> . 21:12 < bridge> xd 21:13 < bridge> That's a rare collectible message. Should make it an nft 21:14 < bridge> not ddnet nfts pls 21:14 < bridge> unless 21:14 < bridge> it covers ddnet costs 21:15 < bridge> maybe with nfts we can afford to hire an account engineer xd 21:28 < bridge> @robyt3 maybe i do want to update the wavpack version, getting rid of all the defines would be nice and it avoid adding a new one for `WavpackGetTagItem`/`WavpackMetadata` 21:33 < bridge> 21:34 < bridge> hasnt been updated, theres no reason i cant add the new function names ontop of this 21:34 < bridge> Good look. Please fix some of your stale PR before opening more though. Upgrading would be good because the static variables for wavpack are a mess. 21:34 < bridge> Good luck. Please fix some of your stale PR before opening more though. Upgrading would be good because the static variables for wavpack are a mess. 21:39 < bridge> ```cpp 21:39 < bridge> m_pEngine = Kernel()->RequestInterface(); 21:39 < bridge> m_pClient = Kernel()->RequestInterface(); 21:39 < bridge> m_pTextRender = Kernel()->RequestInterface(); 21:39 < bridge> m_pSound = Kernel()->RequestInterface(); 21:39 < bridge> m_pConfigManager = Kernel()->RequestInterface(); 21:39 < bridge> m_pConfig = m_pConfigManager->Values(); 21:39 < bridge> m_pInput = Kernel()->RequestInterface(); 21:39 < bridge> m_pConsole = Kernel()->RequestInterface(); 21:39 < bridge> m_pStorage = Kernel()->RequestInterface(); 21:39 < bridge> m_pDemoPlayer = Kernel()->RequestInterface(); 21:39 < bridge> m_pServerBrowser = Kernel()->RequestInterface(); 21:39 < bridge> m_pEditor = Kernel()->RequestInterface(); 21:39 < bridge> m_pFavorites = Kernel()->RequestInterface(); 21:39 < bridge> m_pFriends = Kernel()->RequestInterface(); 21:39 < bridge> m_pFoes = Client()->Foes(); 21:39 < bridge> m_pDiscord = Kernel()->RequestInterface(); 21:39 < bridge> #if defined(CONF_AUTOUPDATE) 21:39 < bridge> m_pUpdater = Kernel()->RequestInterface(); 21:39 < bridge> #endif 21:39 < bridge> m_pHttp = Kernel()->RequestInterface(); 21:39 < bridge> ``` 21:39 < bridge> if none of these depend on eachother you should be able to put these in static init should fix randomly failing smoke test 21:39 < bridge> (make them cosnt ptrs) 21:39 < bridge> (make them ptrs consts) 21:40 < bridge> no i silly billy 21:44 < bridge> No wonder the game feels so cooked recently 21:45 < bridge> Why is he against accounts? Does he have like some magical reason for avoiding basic security? 21:46 < bridge> @jao187 wait, actual jao? pog 21:47 < bridge> If you all wanna argue about accounts, IKU made a wonderful room, full of critisicm and the worst take from all people, right here: 21:47 < bridge> https://discord.com/channels/252358080522747904/1263223077077254165 21:48 < bridge> ngl even if I tried, Heinrich wouldn't say the F word to me, he would just straight up ban me lmfao 💀 21:48 < bridge> sure 21:48 < bridge> at least me 21:49 < bridge> I know I should just go to https://discord.com/channels/252358080522747904/1263223077077254165, however... decisions for a guaranteed take on developing accounts should need some sort of poll from all communities involved with account implementation 21:50 < bridge> And I think having https://discord.com/channels/252358080522747904/1412075332944531568 as a startup could bring those communities closer for a more mature, private argument 21:51 < bridge> Unless there's a better idea for a final decision, please do mention it 21:52 < bridge> @robyt3 21:52 < bridge> why is it an issue to destroy the window 21:52 < bridge> is it because destroying the window takes time (asserts take ages) 21:55 < bridge> the linked issue was closed with a "find a better workaround plz" 21:57 < bridge> giving a window to a modal parents it to that window 21:57 < bridge> idk what "parent" means 21:58 < bridge> pin it 😄 22:01 < bridge> i am told it means that movement is relative to the parent and the child is ontop and the child dies with the parent 22:01 < bridge> despite what the issue says, dwm handles it perfectly fine 22:02 < bridge> nvm it does not 22:03 < bridge> I think it breaks entirely if you open a modal popup while not in windowed mode, i.e. you can't see or close the popup message 22:03 < bridge> I think it breaks entirely if you open a modal popup while not in windowed mode, i.e. you can't see or close the popup message if modal based on a window 22:03 < bridge> the child window goes behind the parent if refocused, which a new window would activate 22:04 < bridge> Test in all 5 fullscreen modes and 5 platforms :justatest: 22:04 < bridge> do they all even exist on all platforms? 22:05 < bridge> Yeah, popup messages work on all platforms (Windows, Linux, macOS, Android, Emscripten) 22:05 < bridge> 22:05 < bridge> flaky test? 22:05 < bridge> dont think theres anything in the integration test related to my pr 22:09 < bridge> Possible, maybe it's too slow with Valgrind 22:09 < bridge> I'll rerun, feel free to open an issue if it doesn't fail now 22:09 < bridge> alright 22:09 < bridge> this is 2nd time it failed 22:09 < bridge> before force push same thing 22:10 < bridge> window inheritance is definitely a thing and that's how modal dialogs work 22:10 < bridge> sigh, all video mdoes are already broken 22:11 < bridge> sdl3 does away with a lot of the fullscreen concepts we used to have 22:11 < bridge> also on x11 atleast a crashed window is super ugly cuz it doesnt repaint 22:11 < bridge> I forgot to mention, you also need to test with Vulkan, OpenGL 3 and OpenGL 1... 22:11 < bridge> i doubt theres much difference there 22:11 < bridge> because the window will never be repainted 22:11 < bridge> So just 75 combinations :pepeW: 22:12 < bridge> i dont have a macos 22:12 < bridge> or a windows 22:12 < bridge> can setup vm for both 22:13 < bridge> not on this machine 22:13 < bridge> TBF, I don't expect you to fix the SDL3 PR soon, it needs a lot more thinking which gets delayed further by every other PR being opened 22:13 < bridge> I meant all five fullscreen modes 22:13 < bridge> fullscreen modes are a scam 22:13 < bridge> if the wm supports parenting fully it should work minus old windows exclusive fullscreen 22:14 < bridge> and even then a child may kick it of exclusive fullscreen 22:14 < bridge> I think it only works with all because we destroy the window, otherwise it caused issues like the popup not being interactable/visible 22:14 < bridge> well the popup would draw on the window then be moved behind it 22:14 < bridge> im keeping it as is for now 22:20 < bridge> lie 22:47 < bridge> Why did you remove the cleanup commits from this PR? Or are you going to PR them separately? 22:47 < bridge> they already are merged 22:48 < bridge> Oh, makes sense :kek: