00:00 < bridge> oh alr, mb 00:00 < bridge> 00:00 < bridge> my issuse was that when I compiled F-DDrace and or when I download the precompiled version, It wouldn't run because it was missing that file I highlighted, to fix this I copyed libwinpthread-1.dll from my ddrace folder, so I guess I fixed it, but i'm confused when It didn't show up, or is that comman knowlage that i'm supposed to copy it (first time compiling) 00:00 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1349154962868928605/C13123apture.PNG?ex=67d211f9&is=67d0c079&hm=36431190997c3574a86a5a6ab3bdda1de775fd1f9d0544ffa937c2ed978801c9& 00:00 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1349154963288231986/Capt123123ure.PNG?ex=67d211f9&is=67d0c079&hm=4ce22e285c89f6d4379cb9a338423807826e542071b5cea87bd4a7bdaf24790b& 00:02 < ws-client3> not sure if the windows releases work i recommend only going from source 00:02 < ws-client3> can you compile vanilla teeworlds without issues and run it? if not start there maybe 00:02 < ws-client3> @nameless_me 00:03 < ws-client3> you shouldnt have to copy anything but tbh i never compiled fddrace on windows so i do not know for sure but i would be suprised if it doesnt just work when compiled from source it really should 00:05 < bridge> yeah, I cloned the github so it should be source, i'll try compiling something else and see if that works 00:13 < bridge> yes, I was able to compile ddnet just fine, so I might just be F-DDrace 00:42 < ws-client3> not ddnet 00:42 < ws-client3> try teeworlds 00:42 < ws-client3> @nameless_me 00:43 < ws-client3> wait not sure if teeworlds servers even have threads. But fokko also uses windows and vs the setup should really be smooth. But yea whatever who cares just copy paste the dll if it works haha. If you really need to know ask fokko 01:00 < bridge> Yea, i don't know why that is. probably some compiler option stuff 02:21 < bridge> What u think about dummy direction (cl_dummy_left or right). I code this and thin PR in ddnet client. Say u opinion about this. 02:24 < bridge> 02:35 < bridge> Hmm 02:39 < bridge> Anyone i need opinion more count ppl 02:39 < bridge> Maybe i create issue on Github 02:39 < bridge> No 02:39 < bridge> the admins' & devs' stances are clear in that the dummy is already OP 02:40 < bridge> adding movement binds to it would make it possible to automate movements which is textbook botting 02:40 < bridge> adding movement binds to it would make it possible to automate movements in parallel which is textbook botting 02:40 < bridge> I made it 02:40 < bridge> adding movement binds to it would make it possible to automate movements in parallel which is textbook cheating 02:40 < bridge> This not comfort 02:41 < bridge> they're not obligated to accept any contribution 02:41 < bridge> be careful playing with that feature on ddnet servers. some mods would definitely consider it cheating 02:42 < bridge> I don't 02:42 < bridge> you couldnt really automate it anyway but it's just more surface area for things like that 02:42 < bridge> further thins the line between what's allowed and what's not etc 02:42 < bridge> I use cfg but have clkent for it 02:42 < bridge> sounds cool can i see it ingame 02:43 < bridge> Yes but not now 02:45 < bridge> My goal is to stop these disputes between moderators and dummy players. For this I will try to PR these functions in the official client 02:45 < bridge> the moderators and admins and those with write access all dont want more dummy features, i dont think youll get very afr 02:45 < bridge> the moderators and admins and those with write access all dont want more dummy features, i dont think youll get very far 02:46 < bridge> its not really much of a dispute, its already been set in stone 02:50 < bridge> And we have dummy_control 02:51 < bridge> Not dummy player don't know how use it 02:52 < bridge> He needn't it and use not this 02:52 < bridge> I think dummy direction also use not not dummy player 02:52 < bridge> in 2018 02:52 < bridge> Ant this shit for use 02:53 < bridge> I can't use this on ddnet client 02:53 < bridge> I play not on piano 02:53 < bridge> I can this use only if i have bindwheel 02:54 < bridge> use tclient, or modifiers or chords 02:54 < bridge> a keyboard has mor ekeys than a piano btw 02:55 < bridge> Use tclient for use defolt function in ddnet client 02:55 < bridge> Wow 02:55 < bridge> or modifiers 02:55 < bridge> I have 100% keyboard 02:55 < bridge> good for you 02:56 < bridge> bindwheel just is a more user friendly way to bind lots of things 02:56 < bridge> the same is possible in ddnet 02:57 < bridge> No way bindwheel cheat bcz give advantages 02:57 < bridge> not sure if youve read this 02:59 < bridge> No way dummy direction more friendly too 02:59 < bridge> And we cat repeat it in ddnet client 03:00 < bridge> And we can repeat it in ddnet client 04:05 < bridge> you have to press left or right on the main to have it play on the dummy 04:05 < bridge> having full independent control is op 04:25 < bridge> No 04:26 < bridge> I can it with def client 06:20 < bridge> lol now that u are just piss mad ofc u aren't gonna get it in 07:06 < bridge> morning postgres enjoyers and others 07:15 < bridge> gm 07:15 < bridge> gn 07:40 < bridge> oh dear my sleep schedule 07:41 < bridge> *our* sleep schedule 🟥 07:57 < bridge> gm 08:00 < bridge> good mmmmmnight 08:07 < bridge> https://tenor.com/view/meme-our-now-gif-21036569 08:10 < bridge> yes 08:22 < bridge> morrning 08:25 < bridge> https://github.com/mfontanini/presenterm 08:33 < bridge> play with default client then 08:36 < bridge> this is the reason why nofis client considered cheat client, i don't see any possibility of going thru ddnet review for it to be legit 08:41 < bridge> To restore the bad reputation of tokio being big in size, these are my current results: 08:41 < bridge> ``` 08:41 < bridge> File .text Size Crate 08:41 < bridge> 7.2% 22.5% 14.5MiB [Unknown] 08:41 < bridge> 3.0% 9.3% 6.0MiB std 08:41 < bridge> 1.7% 5.3% 3.4MiB client_ui 08:41 < bridge> 1.6% 5.1% 3.3MiB editor 08:41 < bridge> 1.2% 3.9% 2.5MiB cranelift_codegen 08:41 < bridge> 1.2% 3.9% 2.5MiB ffmpeg_sys_next 08:41 < bridge> 1.0% 3.1% 2.0MiB game_server 08:41 < bridge> 0.9% 2.7% 1.8MiB client_containers 08:41 < bridge> 0.8% 2.5% 1.6MiB naga 08:41 < bridge> 0.8% 2.4% 1.5MiB wasmparser 08:41 < bridge> 0.4% 1.4% 930.2KiB graphics_backend 08:41 < bridge> 0.4% 1.3% 883.4KiB vanilla 08:41 < bridge> 0.4% 1.3% 858.2KiB game_config 08:41 < bridge> 0.4% 1.1% 743.7KiB egui 08:41 < bridge> 0.3% 1.0% 670.4KiB winit 08:41 < bridge> 0.3% 0.9% 606.8KiB client_render_base 08:41 < bridge> 0.3% 0.9% 586.7KiB client_render_game 08:41 < bridge> 0.3% 0.8% 533.6KiB rustls 08:41 < bridge> 0.2% 0.8% 515.6KiB game_state_wasm 08:42 < bridge> 0.2% 0.7% 454.7KiB quinn_proto 08:42 < bridge> 0.2% 0.6% 389.1KiB reqwest 08:42 < bridge> 0.2% 0.6% 364.7KiB client_demo 08:42 < bridge> 0.2% 0.5% 359.6KiB config 08:42 < bridge> 0.2% 0.5% 346.9KiB game_base 08:42 < bridge> 0.2% 0.5% 346.5KiB game_database_backend 08:42 < bridge> 0.2% 0.5% 344.8KiB regex_automata 08:42 < bridge> 0.2% 0.5% 341.5KiB client_accounts 08:42 < bridge> 0.2% 0.5% 325.1KiB naga_oil 08:49 < bridge> https://blog.llvm.org/posts/2025-03-11-flang-new/ 08:51 < bridge> Why does my gh mobile app sometimes open when I click gh links and sometimes not 08:51 < bridge> This is very annoying 08:52 < bridge> i agree 09:12 < bridge> I agree 09:12 < bridge> i wish they woudl just make the website better 09:12 < bridge> on mobile 09:13 < bridge> theres no reason to have an app apart from... 09:13 < bridge> uhmm 09:13 < bridge> well yeah 09:46 < bridge> @jupeyy_keks would you *rather* have the wgpu backend in c++ or Rust? 09:48 < bridge> you can have it in c++? 😮 09:48 < bridge> yea ^^ 09:48 < bridge> https://github.com/gfx-rs/wgpu-native 09:48 < bridge> nowadays rust is my main lang, so i prefer that ig. but if you think cpp is easier, use that. 09:48 < bridge> 09:48 < bridge> having it is more important than the language ig 09:49 < bridge> i was gonna say something but i forgot:greenthing: 09:51 < bridge> I estimate that Rust is easier for me, though ofc I don't know yet how difficult cxx will be to work with 09:51 < bridge> (maintaining it will probs also be easier) 09:51 < bridge> alright, I'll try out Rust 11:13 < bridge> всім пр 11:13 < bridge> парні 11:14 < bridge> $deepl 11:14 < bridge> Hi! Most of us communicate in English. If you’re having trouble with English, use to help you out. 11:21 < bridge> https://www.reddit.com/r/typescript/comments/1j8s467/comment/mh7ni9g/ - Microsoft will never run or develop safe code 11:21 < bridge> 11:21 < bridge> A few minutes ago I had a discussion at the coffee-bar & someone mentioned that the rust community is super toxic, thats why the pre-released a statement before questions pop up. 11:21 < bridge> 11:21 < bridge> So @ryozuki, the ddnet rust ambassador, whats your stance on this one? 😄 11:21 < bridge> Is Ferris, the crab, really this toxic? 😐 11:23 < bridge> Who cares about typescript if they can rust in the browser 11:24 < bridge> "Microsoft will never run or develop safe code" wdytm 11:24 < bridge> did they say that 11:24 < bridge> i mean the first comment makes sense 11:24 < bridge> its easier to port from a garbage lang to another 11:24 < bridge> garbage collected* 11:24 < bridge> (correction made on purpose kek) 11:24 < bridge> xDDDD 11:24 < bridge> xDDD lmao 11:24 < bridge> Freudian slip 11:24 < bridge> i mean Ryan isnt wrong 11:24 < bridge> rewriting in rust would be a shitshow instead of just sprinking in some go 11:25 < bridge> rust is for gigachads only after all 11:25 < bridge> but i assume go is safe too anyway isnt it? 11:26 < bridge> elaborate safe in this case 11:26 < bridge> same as rust, memory safe 11:26 < bridge> the compiler is probs made with design decisions that abuse cyclic references 11:26 < bridge> in rust u simply wouldnt start that way 11:26 < bridge> it makes sense 11:27 < bridge> altho using arenas in rust makes it possible and easier 11:27 < bridge> its what i use 11:27 < bridge> but i guess arenas are a kind of gc xd 11:27 < bridge> probs way more optimized tho 11:28 < bridge> go isnt safe u can get segfaults ez 11:28 < bridge> not being forced to use a garbage collector while still being safe is what makes it special ig 11:28 < bridge> ```go 11:28 < bridge> var ptr *int 11:28 < bridge> _ = *ptr 11:28 < bridge> ``` 11:28 < bridge> segfault 11:28 < bridge> mh ok 11:28 < bridge> But you can recover 11:29 < bridge> https://pkg.go.dev/runtime/debug#SetPanicOnFault 11:29 < bridge> imho even if u can recover i think a segfault is ub 11:29 < bridge> the important thing to me is if it allows code execution 11:29 < bridge> regarding buffers 11:30 < bridge> > 11:30 < bridge> > 11:30 < bridge> > Go checks for bounds in strings, arrays and slices so it is not vulnerable as long as you are not playing around with unsafe package. 11:33 < bridge> Mh goland has exploitable data races apparently 11:34 < bridge> https://tenor.com/view/noita-homunculus-trash-alchemy-jank-gif-1572844727605224347 11:34 < bridge> @learath2 I want your statement 😬 11:34 < bridge> You are go expert 11:38 < bridge> I still prefer rust microservices over go microservices 😄 11:40 < bridge> Yesterday I learned you can cast an array to an object in php. 11:40 < bridge> 11:40 < bridge> So whatever service it is, just not in php anymore 😬 11:40 < bridge> Has to be a newer PHP 11:40 < bridge> what version? 11:41 < bridge> I have no idea, i used LLM to fix a bug and after 2 tries of saying it doesn't work, it came up with that version and it worked 11:42 < bridge> https://github.com/ddnet/ddnet-web/pull/319/files 11:42 < bridge> 11:42 < bridge> My prompt was smth like: 11:42 < bridge> "Please fix this unreadable trash" 11:42 < bridge> A _pure_ array version did not work, so it added a (object) and it worked 11:43 < bridge> Haha, yeah typical PHP experience 11:45 < bridge> In the early days I was looking into hacklang (https://hacklang.org/), but 11:45 < bridge> 11:45 < bridge> > Hack is an object-oriented programming language for **building reliable websites at epic scale** 11:45 < bridge> I dont want epic scale, sounds expensive 11:54 < bridge> parts of Windows 11 are written in rust, they are already "run or develop safe code" 12:03 < bridge> Does a feature like auto F4 instantly when someone tries vote change map illegal? 12:03 < bridge> Automated input is basically always illegal 12:03 < bridge> dummy being maybe the only exception 12:03 < bridge> :justatest: 12:04 < bridge> it's in tclient xd 12:05 < bridge> :banhammer: 12:06 < bridge> the justifcations are pretty good imo 12:06 < bridge> how often does ddnet.org/status update? 12:07 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1349337921202946148/image.png?ex=67d2bc5d&is=67d16add&hm=1928a781b6a0eca60a6f24f370a42e3e26e86c4499b39533c3a9975cc3cd882a& 12:08 < bridge> I dunno every 2 seconds 12:08 < bridge> just count in your head xD 12:08 < bridge> Or do you mean the server list? 12:10 < bridge> the server list! 12:10 < bridge> every time you refresh the page i think? 12:29 < furo> It's updated every 30 seconds, according to this https://github.com/ddnet/ddnet-scripts/blob/master/crontab 12:32 < bridge> Yo @avolicious am I no longer in the kog clan? 12:36 < bridge> tater have you updated your client to the new ddnet update? 12:37 < bridge> It's correct. Golang does not have fearless concurrency. It is slightly better than C though since it heavily encourages you to use its channels, which make it safe 12:37 < bridge> They have a discord 12:37 < bridge> idk, i dont manage the clan 12:37 < bridge> Just ask there, or see announcements 12:38 < bridge> What about Zig? 😄 12:38 < bridge> New update is buggy 12:38 < bridge> Zig is a footgun just like C. Do not use if you are not willing to pay attention to what you are doing 12:38 < bridge> WIP https://github.com/edg-l/irvm 12:39 < bridge> aah alright :D 12:39 < bridge> also zig has weird design decisions like forcing u to not have unused variables (compiler error) 12:39 < bridge> which makes prototyping a pain 12:39 < bridge> You only get some bounds checking and some opt-in auto memory management 12:41 < bridge> leranth when does the mod recruitment end? 12:41 < bridge> This is something I hate so much. Go has a tangentially related issue of not letting you have unused imports. So commenting out some code while testing requires going all the way up to comment the import 12:42 < bridge> We usually allow people 3 weeks, lock new submissions give it 1 week for everyone to comment on anyone late 12:43 < bridge> Do they still enforce alphabetical ordered imports? 12:43 < bridge> Then another 1-2 weeks where we internally review all the comments, the internal comments, the feedback in dms, and make decisions 12:44 < bridge> okay thanks for the info^^ 12:44 < bridge> Go? I don't think so. If they did must be an old version of Go before I ever used it 12:44 < bridge> you know how many you guys wanna let in? 12:47 < bridge> They auto sort it tho 😄 12:48 < bridge> When I tried a long time ago it would refuse to compile and you needed some IDE tool 13:01 < bridge> that sounds like you tried it multiple years ago :o - i wrote and compiled my launcher using go in vim 13:09 < bridge> note to self, `:TSInstall all` is heavy 13:12 < bridge> red team heavy or blue team heavy? 13:16 < bridge> ctrl+s 😄 13:17 < bridge> wouldnt this just remove unused imports? 13:19 < ws-client3> @zwelf did that ping work? 13:20 < ws-client3> ``CDbConnectionPool::Execute()`` seems to just index m_aQueries without boundary check other than overflowing to zero 13:21 < ws-client3> it has a fixed size of 512 https://github.com/ddnet/ddnet/blob/ffebb8e91fb997c44d0f08d8354fdfc83be12bfb/src/engine/server/databases/connection_pool.h#L125 13:21 < ws-client3> https://github.com/ddnet/ddnet/blob/ffebb8e91fb997c44d0f08d8354fdfc83be12bfb/src/engine/server/databases/connection_pool.cpp#L142-L150 13:21 < ws-client3> so does this code depend on the queue size never reaching 512? 13:22 < ws-client3> lets say the database server is slow and a bunch (all 128 player) spam a long running rank command. Will it overwrite running results in the m_aQueries? 13:26 < bridge> yeah this sucks so bad, it should be a friendly warning instead 13:28 < bridge> not really, but did ping me on matrix 13:29 < ws-client3> @Zwelf did this ping? 13:29 < ws-client3> and any comment on my query limit concerns? 13:30 < bridge> @zwelf2 ^ 13:30 < ws-client3> @zwelf2 a 13:31 < ws-client3> i need to somewhere register a db of these ping names 13:31 < ws-client3> my last ping worked right? 13:33 < bridge> https://tenor.com/view/green-mile-im-tired-boss-michael-clarke-duncan-gif-2375696290766999196 13:55 < bridge> chillerdragon: yea 14:53 < bridge> fixed 15:16 < bridge> @patiga btw here a tool for you: 15:16 < bridge> `cargo install cargo-bloat` 15:16 < bridge> https://github.com/RazrFalcon/cargo-bloat 15:16 < bridge> 15:16 < bridge> `cargo bloat --release -p twgpu-tools --crates -n 50` 15:16 < bridge> 15:16 < bridge> Then you can see that the biggest dep is naga actually (kinda surprising too). But matches around the size in my repo (https://discord.com/channels/252358080522747904/293493549758939136/1349286150061293582) 15:23 < bridge> bloat LOL 15:39 < bridge> wtf i just witnessed ryozuki join and leave 15:39 < bridge> never seen him in game 15:46 < bridge> youngling 15:47 < bridge> he was giga active a few years ago 15:47 < bridge> I remember I was on his LAN server once 15:49 < bridge> now hes a full time rust influencer 15:55 < bridge> i play sometimes 15:59 < bridge> help me to finish naufrage 4 :santatrollet: 16:06 < ws-client3> anyone has some opinions on unique client ids? 16:06 < ws-client3> as of right now holding onto a clientid is a bit if a dangerous operation 16:07 < ws-client3> the player might disconnect then using the client id as player index gives you a nullptr 16:07 < ws-client3> but it gets worse once a different player rejoins! then you dont get a nullptr but the wrong player 16:07 < ws-client3> and not all clientids can be invalidated on player disconnect. Especially those in a sql worker thread 16:12 < bridge> should it be unique to a connection or should you keep the same ID when someone uses timeout protection? 16:12 < ws-client3> on the network level the old id system stays 16:12 < ws-client3> but there would be a new client id system mapped to it only on the server side 16:13 < bridge> unique IDs are generally a good idea from what I know of game development but I don't know the specifics for this game well enough to really have a good idea 16:13 < ws-client3> making sure no client id is ever reused for different players. This way you can safely pass around these unique client ids and if they still point to a valid player it is the player you want and not someone other player that reclaimed the id 16:14 < bridge> speaking of ids 16:14 < bridge> how useful would adding UUIDs be to map layers? only useful feature i could think of is having layers be linked to other layers, and having it stay consistent even if you rearrange 16:14 < ws-client3> i mean as of right now it all works out 16:14 < ws-client3> well i mean almost works out xd 16:15 < ws-client3> i am sure stuff goes to shit once you turn the config destroy bullets on disconnect off. Because projectiles often only store the client id of the person who fired it to check things such as team mask and so on. And I am not sure if these ids get invalidated on disconnect 16:16 < ws-client3> either way that would not be fixed by unique ids 16:16 < bridge> Me when I see someone blocking, type ban 1 10 go playground in console, dude ragequits and because it's multeasymap a random person gets banned :kekw: 16:16 < ws-client3> oh yea for rcon it could be useful too! 16:16 < ws-client3> but on a 28d running multeasymap server you then have to type ``ban 98129 10`` 16:17 < ws-client3> i think its worth a discussion issue 17:00 < bridge> isnt unique id basically current timeout code? 17:01 < ws-client3> do all players have a timeout code? 17:01 < ws-client3> also a id would be a bit more light weight because it fits into one integer 17:02 < ws-client3> also timeout codes are not guranteed to not be reused 17:02 < ws-client3> and ids are easier to type in rcon 17:10 < bridge> makes sense 17:10 < bridge> but the server will store unique ids indefinetly until map change? 17:11 < bridge> or how would that work 17:19 < bridge> what about banning by name that would just resolve to client id if player is found? 17:19 < bridge> You shouldn't need any additional UUIDs in the map format, that's just an issue of ensuring that layer indices are updated correctly when layers are changed 17:20 < bridge> You shouldn't need any additional UUIDs for map layers in the map format, that's just an issue of ensuring that layer indices are updated correctly when layers are changed 17:29 < ws-client3> @kebscs yes incrementing them until map change or shutdown is the idea 17:30 < bridge> chiller zwelf uses a slot map. 17:30 < bridge> 17:30 < bridge> kinda the ids are still like now, but every id additionally has a version which is incrementing. 17:30 < bridge> 17:30 < bridge> that way u can have the same array access as now, but make sure ids are unique 17:30 < ws-client3> @kebscs yea referring to name in rcon is another proposal which already exists. But i would say its harder to implement with correct auto completion and word splitting and so on. Also not sure how many fans the feature right now has would have to check the issue 17:30 < bridge> ddnet-rs just uses unique u64 counter and doesnt care xd 17:31 < ws-client3> what do you mean by slot map 17:31 < ws-client3> can you show me the slot map code? i have no idea what you are referring to by saying slot map. Used where? used for what 17:32 < ws-client3> yea i like the idea of a unique u64 counter 17:32 < ws-client3> thats what i proposed 17:33 < bridge> used in twgame 17:33 < ws-client3> by "slot maps" do you refer to the max concurrent pool queries question i asked earlier or to the unique client ids i just proposed now? 17:33 < bridge> but i don't know much more than you 17:34 < ws-client3> ah ok you talk about client ids i see 17:34 < bridge> https://gitlab.com/ddnet-rs/twgame/-/blob/9bfe9d6f12dd6d796bc5f1685aff3dc59f8f9ebd/twgame/src/ids.rs 17:34 < bridge> i mean that then is a unique id 17:34 < bridge> what other kind of unique id do you want? 17:34 < bridge> does the client need to know? 17:35 < ws-client3> if it is used for rcon the client has to know for moderators 17:35 < ws-client3> i just want a simple number that increments but does not get reused for different players 17:36 < bridge> i mean u can do that for your mod 17:36 < bridge> what is holding you back 17:36 < ws-client3> not ddnet 17:36 < ws-client3> but i thought it could be cool in ddnet too thats why i opened the issue 17:37 < ws-client3> i might do it in my mod but i am not sure yet if its the best solution 17:37 < bridge> one nice thing about unique ids is that it prevents accidental bans, we have had issues with people using rcon sniping the wrong person 17:37 < ws-client3> the rcon thing i can not do in my mod because it depends on client updates but that seems a bigger effort anyways not sure if i am ready for that 17:37 < ws-client3> ye 17:38 < ws-client3> @learath2 but it requires client update 17:38 < bridge> Does it really? We could keep the old "slot ids" and introduce a new unique id to be used for everything else 17:38 < bridge> the best is that whisper can be done client side 😬 17:38 < bridge> it would solve the rcon issue, is there another issue that you wanted to solve with unique ids? 17:39 < bridge> an easy way to prevent that is the server asking if you are sure and listing the players name 17:39 < bridge> Yeah that's another way to do it, one more would be to allow bans by name instead of id and adding name completion into the console 17:39 < ws-client3> @learath2 well some moderators use the ids shown in game like scoreboard, chat and nameplates for moderating not everyone uses ``status`` 17:40 < bridge> that would be a cool addition 17:40 < ws-client3> the old flow would be highly misleading if these ids are wrong 17:40 < ws-client3> @learath2 the other issue is storing client ids in variables without having to worry about the player disconnecting 17:41 < ws-client3> @learath2 for example holding onto a client id when a sql worker thread starts to be able to know if the player is still connected when the thread finished 17:45 < bridge> smth like this? 17:45 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1349423070070181928/image.png?ex=67d30baa&is=67d1ba2a&hm=5324fc58ed8572b4c2a1ef79ac8aac2957e40291973d30657f1b2425b9ff2f28& 17:45 < bridge> above is the suggestion 17:46 < bridge> This could still be isolated into the server 17:46 < bridge> :poggers2: 17:47 < bridge> with skin even 👌 17:48 < bridge> isnt that a generational arena 17:49 < bridge> oh also called slotmap 17:49 < bridge> > 17:49 < bridge> > Each element of the array has a generation. 17:49 < bridge> > Each element is accessed through an index object (which "points to" an element using an index into the array). 17:49 < bridge> > The index object also contains a generation. 17:49 < bridge> > When an element is added to the array it copies the generation of the element to the index object. 17:49 < bridge> > Each time an element is fetched from the list the generation of the index object and the element in the list are compared; only if they match is the list element returned. 17:49 < bridge> > Whenever an element in the array is "deleted" the generation of that index element is increased. (Effectively invalidating all index objects pointing to the old array element). 17:49 < bridge> shouldnt be hard to code ^tm 17:52 < bridge> With the indirection there, I'm curious as to what the benefit of this is, perhaps it plays well with pipelining and the generation fetch and compare can happen while the object itself is being fetched 17:54 < bridge> Oh I guess there'd be no indirection really, that would make it more sensible I guess 17:54 < bridge> i think this solves https://en.wikipedia.org/wiki/ABA_problem 17:54 < bridge> i love this crate https://docs.rs/typed-generational-arena/latest/typed_generational_arena/ 17:54 < bridge> @learath2 this idea of generational index is used a lot for ECS in games 17:54 < bridge> so I started to follow along chillerdragons coding and compiling tutorals, and I'm getting better, but i'm a bit confused about what tools I should use, I'm on window, should I use Visual Studio? VS code? I can compile F-DDrace pretty well using Visual Studio and using a VS-Code spin off, but I tryed to complie defult teeworlds just now using my VS-Code Spin off, and it got stuck, as it, all of the files where missplaced what I did was 17:54 < bridge> 17:54 < bridge> git clone --recursive https://github.com/teeworlds/teeworlds 17:54 < bridge> cd .\teeworlds\ 17:54 < bridge> mkdir build 17:54 < bridge> cmake -B build -S . 17:54 < bridge> cmake --build build 17:54 < bridge> 17:55 < bridge> after this, the compling went through, but i'm left with the files out of order and no images or data paths, and it doesn't lunch 17:55 < bridge> 17:55 < bridge> I'm sure i'm doing some step wrong, mabye I use Visual Studio? or I don't make a build directory, I also don't think its a big issue, but if anyone knows a simple mistake a made, I'd aprechated it 17:55 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1349425420868517888/2025-03-12_12-51-37.mp4?ex=67d30ddb&is=67d1bc5b&hm=a55417ffc237f13920f89676615bdb97e416860e2e86b3d1d3853fad00b7aee3& 17:55 < bridge> so I started to follow along chillerdragons coding and compiling tutorals, and I'm getting better, but i'm a bit confused about what tools I should use, I'm on window, should I use Visual Studio? VS code? I can compile F-DDrace pretty well using Visual Studio and using a VS-Code spin off, but I tryed to complie defult teeworlds just now using my VS-Code Spin off, and it got stuck, as it, all of the files where missplaced what I did was 17:55 < bridge> 17:55 < bridge> git clone --recursive https://github.com/teeworlds/teeworlds 17:55 < bridge> cd .\teeworlds\ 17:55 < bridge> mkdir build 17:55 < bridge> cmake -B build -S . 17:55 < bridge> cmake --build build 17:55 < bridge> 17:55 < bridge> after this, the compling went through, but i'm left with the files out of order and no images or data paths, and it doesn't lunch 17:55 < bridge> 17:55 < bridge> I'm sure i'm doing some step wrong, mabye I use Visual Studio? or I don't make a build directory, I also don't think its a big issue, but if anyone knows a simple mistake I made, I'd aprechated it 17:55 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1349425420868517888/2025-03-12_12-51-37.mp4?ex=67d30ddb&is=67d1bc5b&hm=a55417ffc237f13920f89676615bdb97e416860e2e86b3d1d3853fad00b7aee3& 17:57 < ws-client3> @learath2 yes it could and fokko has been doing that in fddrace for years. The client ids in game would be wrong so for rcon commands you had to use ``status`` 17:57 < ws-client3> but breaking client ids in the hud for all ddrace moderators seems a bit intense dont you think @learath2 ? 17:59 < bridge> well it's easier to start sending the new id inside a new field of ddnet player than it is to somehow completely revamp all the code that depends on there being `MAX_CLIENT` slots 17:59 < ws-client3> yes it for sure can be done 17:59 < ws-client3> but i am saying it should be done in client and server if it is used for rcon 18:00 < ws-client3> all ids in the hud have to become the new unique ids then 18:00 < bridge> it would need client support yeah, but I guess easier client support 18:00 < ws-client3> yea its not super complicated to do 18:00 < bridge> completely replacing the original id system would be an undertaking about the same size as rewriting ddnet 😄 18:00 < ws-client3> but more effort than the server side and it also breaks moderation on old clients 18:01 < ws-client3> yea no internally the client still uses the 0-64 client ids mostly 18:01 < ws-client3> only for rendering in the hud in the 3 or 4 places a new different would be displayed 18:01 < ws-client3> s/new different/different number/ 18:03 < bridge> idk i think the build process on windows is a lot lot easier if u just use visual studio and the nice little green button 18:04 < bridge> oh ok, I'll use that 18:04 < bridge> thats fine, I just didn't know what to use 18:05 < ws-client3> for me on windows both worked the green button and the cmake commands 🤷 18:06 < ws-client3> but then i also once spent one day trying to find a smooth windows build quickstart and rage quitted haha 18:06 < bridge> do you use extra cmake commands? I just cloned it, set a path to build, and built it 18:06 < ws-client3> no yours look good 18:08 < ws-client3> you can try this 18:08 < ws-client3> ``cd teeworlds`` 18:08 < ws-client3> ``mkdir build`` 18:08 < ws-client3> ``cd build`` 18:08 < ws-client3> ``cmake ..`` 18:08 < ws-client3> ``cmake --build .`` 18:08 < ws-client3> this is what i would do but looks really close to yours 18:11 < bridge> yep, I ran that, and it resulted in the same thing, let me try it in Visual Studio and see if it just works over there 18:11 < bridge> yep, I ran that just now, and it resulted in the same thing, let me try it in Visual Studio and see if it just works over there 18:19 < bridge> Help, there is a blocker on Cobra 2 18:19 < bridge> Nick:VaReNeK 18:20 < bridge> simply cloning and building with clion on windows worked for me, visual studio is also a very easy way to get it going 18:20 < bridge> I compiled the same folder in Visual Studio, click the green run thing and it worked, however, where does it store the complied version? ahhhh, I found it, Visual Studio made its own directory, out, looks like it only compiles one thing at a time though, and there is lots of other exe's like crapnet that I don't know what they do. 18:20 < bridge> 18:20 < bridge> Still, looks like Visual Studio works 18:21 < bridge> clion? what is that 18:21 < bridge> jetbrains ide 18:24 < bridge> ahh, I see, you like that ide? 18:24 < bridge> The compling worked, it compiled, but I think it did it in the wrong place 18:30 < bridge> It's very noob friendly 18:30 < bridge> and I am the best worst noob out there 18:30 < bridge> :dumb: 19:59 < bridge> Is this button supposed to do anything? 19:59 < bridge> I cannot get it to ungray 19:59 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1349456884654145547/image.png?ex=67d32b28&is=67d1d9a8&hm=e48604c0e0c60194fe9a480d7fdaa14edac48f77f33b42ac8674a2408c049ba8& 20:51 < bridge> which map? 21:00 < bridge> custom test map 21:00 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1349472212612284497/smalltest.map?ex=67d3396f&is=67d1e7ef&hm=9a3e0495d826431a20d657ee6bef8da142248e7525982caf58008ec40a9bdfb7& 21:00 < bridge> well modified map xd 21:02 < bridge> seem like the tune_zone settings break it 21:02 < bridge> can look for a fix 21:03 < bridge> ty 21:20 < bridge> ok so it thinks tune_zone is valid command but the arguments are invalid 21:21 < bridge> so its a known, invalid command and the button only fixes unknown 21:21 < bridge> i guess intended? 21:41 < bridge> the same when command expects int and you put string 21:46 < bridge> but if a mod wants to use that command for whatever reason? 21:46 < bridge> shouldnt allow unknown settings allows succeed? 😄 21:47 < bridge> e.g. what if i want to support `tune gravity moon` 21:55 < bridge> its a 1 line fix i could make a pr i guess 22:01 < bridge> i mean it's not like i care too much, was just a thought. 22:01 < bridge> 22:01 < bridge> the map was just a test anyway, was just suprised that the button had a condition before activating. thought it was just buggy that it is disabled or smth unrelated to the editor code 22:04 < bridge> dooes someone have experience with packages on github? 22:07 < bridge> which kind of? 22:08 < bridge> @alex0006 22:08 < bridge> npm packages 22:08 < bridge> i wanna know if its a strufggle or ez 22:09 < bridge> i wanna make a component libary for a private project 22:09 < bridge> no experience. 22:09 < bridge> and other packages? 22:09 < bridge> i think docker images are also considered packages there. 22:09 < bridge> i mean is the package registy ok, or does it have something special? 22:10 < bridge> that's the only thing I touched. 22:10 < bridge> chillerdragon: iirc each player can only execute one read command at a time (/rank, /points, etc), one load/save per team, one join for time and birthday check (need to verify this!). However inserting ranks isn't rate limited and could overflow the queue. But yes in the end it assumes that 512 isn't reached. 22:11 < bridge> nothing special, just close to your repo and everything in one place. 22:11 < bridge> has pros and cons, but in general no different from docker hub 22:11 < bridge> not* 22:12 < bridge> hmm ok ty 22:12 < bridge> i dont want to pay 7$ /moth for a private package on npmjs.com 22:14 < bridge> frontend devs assemble! 22:14 < bridge> help this lost soul! 22:16 < bridge> chillerdragon: we kinda already have this: https://github.com/ddnet/ddnet/blob/7f286b684690344a2ee09ea14784aab856db62ec/src/game/server/player.h#L122 22:16 < bridge> not really used though (only for database stuff to not send results to wrong player) 22:23 < bridge> chillerdragon: https://docs.rs/slotmap/latest/slotmap/index.html?search=key SecondarySlotMap from here 22:27 < bridge> some (old) comparison: https://old.reddit.com/r/rust/comments/gfo1uw/benchmarking_slotmap_slab_stable_vec_etc/ 22:31 < bridge> got aware of slabs/slotmap by a youtube video linked by ryozuki(?): https://www.youtube.com/watch?v=hBwnOc-CfvQ (not this video, but some other from that channel was linked) 23:05 < ws-client3> @zwelf2 am i tripping or does it not even try to save queued writes on shutdown? 23:06 < bridge> It waits until all queries are completed. 23:06 < ws-client3> thats what i thought 23:06 < bridge> but starts skipping over read queries 23:06 < ws-client3> until i built a fake query that just sleeps and none of my writes would finish anymore 23:06 < bridge> (on shutdown) 23:06 < ws-client3> on shutdown 23:06 < ws-client3> https://github.com/ddnet/ddnet/blob/7f286b684690344a2ee09ea14784aab856db62ec/src/engine/server/databases/connection_pool.cpp#L335-L359 23:07 < bridge> hm 23:07 < ws-client3> i have the feeling the backup gets skipped on shutdown and then it triggers the failed mode 23:07 < bridge> (there might be a timeout after 60s?) 23:07 < ws-client3> which then goes straight to normal failed? 23:07 < ws-client3> no timeout 23:07 < ws-client3> i seem to only hit NORMAL_FAILED not NORMAL anymore 23:07 < ws-client3> but i only debugged for like 10s gtg now 23:07 < bridge> ah year, everything only gets written locally to sqlite 23:07 < bridge> *yeah 23:08 < bridge> to make shutdown fast 23:08 < ws-client3> oh ._. 23:08 < ws-client3> so its intentional 23:08 < ws-client3> hmm thats not good for account system logout 23:16 < bridge> Oh nice then my issue can be half closed unless we want to also really use it for rcon! Good to know I might use it 23:19 < bridge> Oh Shit that is good to know. And good that I checked. I somehow assumed ddnet code would infinitely scale or safely queue somehow. This is good to know because I was intending to allow admins to queue in bulk. 23:20 < bridge> Also I realized the sql code seems to process one query at a time blocking the others. Meaning if it were to reach the 512 the server would become quite unresponsive for many operations. 23:21 < bridge> Yeah, was looking into rewriting in rust with sqlx and async now again. c++ threading story isn't that great. 23:22 < bridge> if one query fails (maybe even when taking long due to timeout), all currently queued ones are processed like on shutdown until queue is empty to mitigate that a bit. 23:27 < bridge> ChillerDragon: can we date in ddnet-rs tmrw? 23:30 < bridge> DDNET-RS date tomorrow? 23:35 < bridge> I hope 23:55 < bridge> Oh boi that’s risky for the stability of my account system 23:56 < bridge> Don’t think I have time 23:56 < bridge> Better when I am back in Germany 23:58 < bridge> oki :3