00:05 < bridge> you'll have to send your full commands 00:05 < bridge> i just pulled and tried again and it worked 00:06 < bridge> <12944qwerty> literally just using this 00:07 < bridge> <12944qwerty> copied and pasted those commands 00:07 < bridge> <12944qwerty> ok i found the dlls in the build dir but they're not in the release dir where the exe is 00:10 < bridge> using pipewire is about 500ms ): 00:11 < bridge> better than cpp pulse 00:11 < bridge> worse than js pulse 00:22 < bridge> https://github.com/ddnet/ddnet/pull/9733 00:22 < bridge> bump 00:22 < bridge> ready, and approved for a long time 00:22 < bridge> and just a client side, mod related change 00:24 < bridge> <12944qwerty> can't read cmakelists very well but it looks like it's copying the dlls? Might be looking at the wrong area though 00:24 < bridge> <12944qwerty> https://cdn.discordapp.com/attachments/293493549758939136/1381398388276461728/image.png?ex=68475f00&is=68460d80&hm=9a46eb746dfa88e3495b8c2a0fe2e3bd445adb4f498b61d13f295727b471ea63& 00:27 < bridge> <12944qwerty> lmaooo I moved the dlls from build to release manually and got this 00:27 < bridge> <12944qwerty> https://cdn.discordapp.com/attachments/293493549758939136/1381399377632952401/image.png?ex=68475fec&is=68460e6c&hm=db4b579979993e5fe3049466bacd73121b39579b601edddb083dd16390522ca5& 00:28 < bridge> <12944qwerty> https://cdn.discordapp.com/attachments/293493549758939136/1381399422503485501/image.png?ex=68475ff7&is=68460e77&hm=481be9bca665b9ae9073b00a8886f31df1396d768a483fd6474638f3b69f989d& 00:28 < bridge> <12944qwerty> lmaooo I moved the dlls from build to release manually and got this 00:28 < bridge> <12944qwerty> https://cdn.discordapp.com/attachments/293493549758939136/1381399454782984313/image.png?ex=68475fff&is=68460e7f&hm=44643eed3b9d345a7262babe2558e3431e840e5995ed0be16203d0e1f3a73797& 00:28 < bridge> <12944qwerty> https://cdn.discordapp.com/attachments/293493549758939136/1381399455525372075/image.png?ex=68475fff&is=68460e7f&hm=a6c1b4f10a5405479e9c08a3f93584703c647acd7ec3c0786c39132bf38a42b5& 00:35 < bridge> it can't find data dir 00:41 < bridge> you're right, it does 00:41 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1381402869038710915/image.png?ex=6847632d&is=684611ad&hm=ab0946282c8b235b20754b469c3fd4d56b56a69a3c59e987561a04ce768de873& 00:42 < bridge> <12944qwerty> Yup that's what i have 00:42 < bridge> i do not build with that flag however 00:42 < bridge> <12944qwerty> What flag 00:42 < bridge> PREFER_BUNDLED_LIBS 00:43 < bridge> <12944qwerty> I didn't use that flag though? 00:43 < bridge> this is what usually happens (i typically don't even have ddnet-libs checked out) 00:43 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1381403271628853278/image.png?ex=6847638d&is=6846120d&hm=bc43f3a0c545206e86208b06ef85e98863cf24316ea8787b078b090805befdfb& 00:43 < bridge> it's being set automatically because ddnet-libs is checked out 00:54 < bridge> <12944qwerty> So remove the submodules then install the ones i don't have and try again? 00:55 < bridge> or set the flag to false 00:55 < bridge> if not specifies it detects whether or not to use the bundled libs by whether they are present 00:55 < bridge> hence `PREFER_` 00:55 < bridge> but i don't know 00:55 < bridge> let me see why it might not be copyin 00:58 < bridge> <12944qwerty> Yeah some of them say using bundled and some saythey dont 00:58 < bridge> <12944qwerty> Sqlite3 being one of the use bundled ones 00:59 < bridge> i mean 01:01 < bridge> whether to use system or vendored libs is its own choice and there are obviously tradeoffs 01:01 < bridge> but it's pretty agreeably bad to mix the two 01:01 < bridge> so you can either set prefer bundled to true, and if the system versions are present they'll be used 01:01 < bridge> so you can either set prefer bundled to true, and if the system versions are not present the bundled ones will be used 01:02 < bridge> or you can set it to false/delete the folder, and then it should prefer the system version 01:03 < bridge> <12944qwerty> Thats whats currently happening though isn't it? 01:03 < bridge> yea and you're mixing the two 01:03 < bridge> thought it shouldnt be related to your issue 01:03 < bridge> it's probably better to make sure you have all the dependencies in either 01:04 < bridge> i obviously just install them thru msys2 and use system libs 01:04 < bridge> i think i can see why it's not copying over lol 01:04 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1381408686232309820/image.png?ex=68476898&is=68461718&hm=afe4021eff96c4a13be367fe5fbbe25dfe19534e1b5022e6836810ff870d1bb1& 01:05 < bridge> that var is not being set anywhere 01:10 < bridge> it should be getting set on this line 01:10 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1381410030661668946/image.png?ex=684769d8&is=68461858&hm=01a3568a8c45ca3c00fc734fcfe7224ddb56a1de6473a67bf51a289bb84ac471& 01:10 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1381410034734469121/image.png?ex=684769d9&is=68461859&hm=c36edd477c52a9df042a561168df6bb94ec9c6d30797b11ff5e981315be93f9c& 01:12 < bridge> only thing i can think is lib_dir is fucked up but if your others are working fine im not sure 01:12 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1381410484422447235/image.png?ex=68476a44&is=684618c4&hm=13b219aeed91143ac67095a3356d0712f38ee1ed83b1ebd46ecb1e3ec32504ff& 01:13 < bridge> that's the case you should be running into. `LIB_DIR` in the project root should be `windows/lib64`, so `DIR` in `set_extra_dirs_lib` should end up as `ddnet-libs/sqlite3/windows/lib64` 01:14 < bridge> i guess i'm not sure why it's doing this. i can't really reproduce bcs it's being copied for me 01:14 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1381411126658465823/image.png?ex=68476add&is=6846195d&hm=e540bbfe43055471b59b6d62ab99e7a36f6e09b34248918dbc4e1a7d4058a1a6& 01:14 < bridge> i'd say maybe it's architecture related, but i don't see how that's possible considering you do get the rest of the dlls in there 01:15 < bridge> gamma rays 01:15 < bridge> that var is not being set anywhere (false, i did not see the fn call above) 01:17 < bridge> <12944qwerty> Are you getting the dlls in the release dir? 01:19 < bridge> i don’t have a release dir 01:19 < bridge> thats a screenshot of the build dir with prefer bundled on 01:19 < bridge> after generate, pre build 01:19 < bridge> <12944qwerty> Right, and i get thw dlls in there too 01:19 < bridge> <12944qwerty> I think the problem is during build or post build when its not in release 01:20 < bridge> should cl_antiping by on by default? 01:20 < bridge> when it came out it was glitched, from what im reading in discord logs, but now everyone uses it 01:22 < bridge> <12944qwerty> It wasn't for me when i started 01:23 < bridge> yes its off by default 01:24 < bridge> i mean that it should be on, but it isnt and why 01:27 < bridge> not sqlite, i thought 01:27 < bridge> here it’s highlighted after presumably the same steps you’re taking 01:28 < bridge> <12944qwerty> It is there along with the other dlls in your sc 01:28 < bridge> what’s the issue ? 01:28 < bridge> <12944qwerty> Idk 01:28 < bridge> my `build` folder corresponds to CMAKE_BINARY_DIR which for you might be called release if you’re using a multi config generator or just called it that 01:28 < bridge> <12944qwerty> It wont run ddnet.exe in the release dir after build because it cant find sqlite3.dll even though the dll is in the build dir 01:29 < bridge> so sqlite3.dll is in build, not build/release? 01:29 < bridge> <12944qwerty> Yes 01:29 < bridge> mmm 01:29 < bridge> i was using single config so that didn’t happen 01:29 < bridge> not in order to avoid it, just coincidence 01:29 < bridge> <12944qwerty> Yeah the commands you had sent had used ninja multiconfig 01:37 < bridge> <12944qwerty> I'll try single config to see if that works 01:37 < bridge> <12944qwerty> Was there a reason for multiconfig for deving 01:38 < bridge> <12944qwerty> Was there a reason for multiconfig for devving 01:40 < bridge> You can generate once and build both release and debug 01:40 < bridge> I don’t typically use it 01:41 < bridge> <12944qwerty> Oh 02:37 < bridge> <12944qwerty> single config worked 02:39 < bridge> that’s worth looking into 02:39 < bridge> it’s funny because the dir it goes in before the target is typically none of your business/there’s nothing you can do to adjust it by normal means iirc 02:42 < bridge> it’s funny because you typically can’t control where in the binary dir your files are placed, unless you use a generator expression in your string literal, where the generator’s “prependage” is overridden 02:43 < bridge> that may be what’s 02:45 < bridge> but actually i dont think that applies in this case for a few reasons 03:10 < bridge> what changed 19.1 to 19.2, i seem to have way less fps when 50 debug dummies connected, on same server ofc 03:10 < bridge> could someone test that? 03:26 < bridge> <12944qwerty> debug dummies? 03:31 < bridge> dbg_dummies command, basically fake players 03:32 < bridge> <12944qwerty> where do i call that, i don't see it in rcon or cmdlist 03:32 < bridge> it’d be f1 03:33 < bridge> <12944qwerty> i dont' see it there either 03:33 < bridge> rcon 03:33 < bridge> <12944qwerty> yeah it says no such command 03:35 < bridge> debug build only 03:35 < bridge> <12944qwerty> ah 03:36 < bridge> dorp 03:36 < bridge> ♥ twinbop ddrace testing 03:36 < bridge> Address: ddnet://64.225.97.84:8304 03:36 < bridge> 64.225.97.84:8304 is not a DDraceNetwork or Community server. 03:36 < bridge> you can test here 03:36 < bridge> it has dbg_dummies enabled 03:44 < bridge> <12944qwerty> my ears help 06:00 < bridge> <12944qwerty> how do i run the debug version in the single config? ig it runs release only 06:03 < bridge> read comment 06:03 < bridge> in original cmds 06:04 < bridge> <12944qwerty> ninja: error: 'debug/libddnet_engine_shared.a', needed by 'DDNet.exe', missing and no known rule to make it 06:04 < bridge> rust error 06:05 < bridge> check output 06:05 < bridge> <12944qwerty> isn't --fresh supposed to reset the build and target dirs 06:06 < bridge> probably 06:06 < bridge> i usually delete build 06:06 < bridge> if im in doubt 06:06 < bridge> <12944qwerty> it said i was using a different generator even with that so 06:06 < bridge> <12944qwerty> deleteded build lets se 06:06 < bridge> <12944qwerty> ignore my spelling 06:09 < bridge> <12944qwerty> ok how do i actually debug with this build lol 06:09 < bridge> it's been build with debug symbols 06:10 < bridge> whatever debugger you wanna use should be able to make sense of it 06:10 < bridge> do u know how to use gcc or lldb 06:10 < bridge> code-lldb plugin in vscode is good 06:10 < bridge> why god made me so sleepy 06:12 < bridge> <12944qwerty> thanks 06:14 < bridge> <12944qwerty> it won't stop at breakpoints- 06:14 < bridge> <12944qwerty> i'm trying to debug the server 07:16 < bridge> @everyone @here Бесплатный кряк фаталити чит на кс2 DLL + CFG бесплатно!!! - https://abotus.cfd 07:16 < bridge> @everyone @here Free crack FATALITY cheat cs2 DLL + CFG free!!! - https://abotus.cfd 11:59 < bridge> i love "remove duplicate code" then the diff makes the code bigger 11:59 < bridge> the price we pay 12:00 < bridge> where did that happen^^ 12:03 < bridge> It adds more code overall because of more error handling and added commands and features 12:23 < bridge> always, just merge my cmakelists pr and -3000 easy 12:27 < bridge> Working great in my Windows 7 32 bit VM :kek: 12:27 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1381580520466546768/image.png?ex=684808a0&is=6846b720&hm=5fbf54cbb08b6cea2b93881f9b900eb09138b967745179f1d3a0572f7d0e350d& 12:29 < bridge> is that this chroma subsampling that I keep hearing about 12:29 < bridge> is this that chroma subsampling that I keep hearing about 12:29 < bridge> Somehow it can't load some string functions but then it launches anyway after this error :monkaS: 12:29 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1381581081345523782/image.png?ex=68480926&is=6846b7a6&hm=6efa6b741bfcfa9a50d9cdb989dd40c964d9f5675cc27e78d07cfffddd47c0e8& 12:40 < bridge> Fixed by install CRT, but that seems unrelated to the graphics being broken 12:44 < bridge> It might be possible to use a Rust webassemblied Python interpreter and join it with twmap-py, sounds fun actually 12:44 < bridge> though how would it get access to the maps? 12:45 < bridge> Pull from ddnet-maps periodically? 12:46 < bridge> hm, I'd prefer to build it as a static site, however that might be unfit in this case 12:47 < bridge> I guess it could just let the user drag-and-drop stuff in it again, a zip with all maps or simply many many files 12:47 < bridge> not sure how much browers like ~3000 drag-and-dropped files 12:47 < bridge> (or >2GB dropped zips) 12:48 < bridge> I'm impressed you got it running at all, did it take a lot of debugging? 12:50 < bridge> The latest version "worked" immediately like this, I only want to briefly try if I could reproduce #6897 12:50 < bridge> https://github.com/ddnet/ddnet/issues/6897 12:51 < bridge> Somehow previous versions work worse though, they just don't render at all. The current version doesn't render when the console is open. Maybe we render too much in one frame for OpenGL 1.1 within the virtual machine. 12:52 < bridge> does it output anything helpful to the console? 12:54 < bridge> /ddps 12:55 < bridge> mine were always smaller 😦 12:59 < bridge> Only lots of performance warnings 12:59 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1381588499081330741/image.png?ex=6848100e&is=6846be8e&hm=7ae752e7d33b74cb6ef49ebb799ec89754a0231462de96a13f35d3cc563e4a33& 13:00 < bridge> is this latest master? 13:01 < bridge> yeah, but in a Windows 7 32 bit VM 13:02 < bridge> I guess this breaking is not related to the Pipeline 13:03 < bridge> No, it breaks immediately on launch 13:08 < bridge> I personally would do it 13:08 < bridge> I dislike having to mention every file in there 13:09 < bridge> What's the benefit of calling swap before rendering? 13:10 < bridge> Generally yes, you can do http queries in js. 13:10 < bridge> 13:10 < bridge> But anyway, in worst case update the map pack on a vps or smth ^^ 13:11 < bridge> So you are using mesa drivers for windows? 13:11 < bridge> It's to flush the commands 13:11 < bridge> to the backend 13:11 < bridge> It's the default of the VirtualBox guest extensions for Windows 13:11 < bridge> e.g. deleting the buffers 13:12 < bridge> Maybe try ones from the mesa github repo.. maybe the shipped ones are broken or smth 13:12 < bridge> but shouldn't anything rendered before already be flushed? :justatest: 13:13 < bridge> Well in mapload you delete the previous map. Deleting this means you add commands to the command buffer 13:13 < bridge> and to flush this command buffer we call swap 13:14 < bridge> As robyte said correctly it's kinda luck dependent tho 13:14 < bridge> Maybe we should force swap here 13:14 < bridge> To make sure we free memory 13:14 < bridge> Well often memory is not cleared after a few frames anyway 13:14 < bridge> So probs not really worth it xd 13:15 < bridge> We actually handle out of memory. But I know from at least teero on linux that the drvier is buggy and crashes on OOM instead of cleanly handling it :/ 13:16 < bridge> Thank you, I guess it makes sense then 13:19 < bridge> Unfortunately Linux is buggy itself is buggy by implementing overcommit by default 13:19 < bridge> Unfortunately Linux is buggy itself by implementing overcommit by default 13:25 < bridge> Latest from GitHub seem less broken. Console and screen aspect work again. But now I have only 6 FPS. 13:25 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1381594981973627020/image.png?ex=68481618&is=6846c498&hm=84432a1b1b360131aaac9c4af2c8235078287b04973b538b15bb8c3d79cb0b57& 13:25 < bridge> furo: ddstats.tw is down :owo: 13:29 < bridge> so every time you load the site, you also download the entire mappack? 😅 13:30 < bridge> Ah the other is hardware accelerated? 13:30 < bridge> Neat 13:30 < bridge> I think you can tell to cache it or use the local storage 13:31 < bridge> or indexeddb 13:35 < bridge> interesting, had never heard of indexddb, would still be kinda wild to store 1.3GB in there, no? 13:36 < bridge> I dunno, it's designed for that 13:36 < bridge> The ppl that would use that tool probably _want_ that? xd 13:37 < bridge> I suppose 13:37 < bridge> very interesting 13:37 < bridge> Besides that the wasm thing should also have a filestorage 13:39 < bridge> Ok dunno, but indexeddb is defs a way 13:40 < bridge> hm, yea that sounds like its worth a shot 13:41 < bridge> I should probably store each map independently, to not stress the ram usage 13:41 < bridge> I'm ok either way 13:41 < bridge> I dunno who even wants to use that tool anyway xd 13:41 < bridge> 13:41 < bridge> I sometimes wonder about certain stuff in maps 13:42 < bridge> But haven't heard that from others 13:42 < bridge> is there some place where I can download the ddnet maps one-by-one (and not abusing resources?) 13:42 < bridge> You can download raw files in github 13:42 < bridge> not cross-origin though, right? 13:42 < bridge> I dunno xd 13:42 < bridge> Maybe you need an extra layer yeah 13:43 < bridge> in the end I could host the maps in gitlab actions ig, they won't hate me for 1.3GB I think 13:43 < bridge> Probs not 13:43 < bridge> I abuse the github cache more on ddnet-rs xd 13:44 < bridge> xd how much you using? 13:44 < bridge> 15gb per OS 13:44 < bridge> 13:44 < bridge> and actually it's more like 30gb, 15 is just their official limit 13:44 < bridge> :o 13:44 < bridge> It's actually only 10. but I am basically always over it 13:44 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1381599893956722728/image.png?ex=68481aab&is=6846c92b&hm=29e1b41cf91008e6fc44c97d865f36a8970e5e71955821f88b50f4c7321b4469& 13:45 < bridge> Depends on how active I develop 13:45 < bridge> I've seen it over 30GB already 13:45 < bridge> but wait don't you hate python? 13:45 < bridge> Yes, why? 13:46 < bridge> You want to provide a rust api too? 13:46 < bridge> Thanks 13:46 < bridge> :deen_star: 13:49 < bridge> actually 10gb across all caches :/ 13:49 < bridge> 13:49 < bridge> it's so small xD 13:49 < bridge> rust builds are just so giantic 😬 13:53 < bridge> no, I'm just wondering if the python interface is actually something you would want to use 13:54 < bridge> want is a broad term xD 13:55 < bridge> If I can easily run small checks on quads on all maps somehow that would defs help. 13:55 < bridge> I dunno how easily that is in whatever language 14:21 < bridge> shouldnt this be packed/? 14:22 < bridge> packed how? 14:22 < bridge> int jump: 1 14:22 < bridge> you mean bit packing? 14:22 < bridge> yeah 14:22 < bridge> yeah it can be 14:22 < bridge> on net its getting compressed anyway 14:22 < bridge> it's not the same 14:23 < bridge> it uses varint compression 14:23 < bridge> not good right now, and packing wont negativly effect compression 14:23 < bridge> each 4 byte int becomes 1 byte, but they could be even smaller 14:23 < bridge> bit*? 14:23 < bridge> no 14:23 < bridge> byte 14:23 < bridge> yeah 14:23 < bridge> Wow, that's an old msg you reacted to 14:23 < bridge> yeah 14:23 < bridge> we were talking about it elsewhere 14:23 < bridge> im waiting for heinrich to say "packet loss" doesnt exist 14:23 < bridge> im waiting for heinrich to say "packet loss doesnt exist" 14:24 < bridge> which is wrong 14:24 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1381609794716307557/image.png?ex=684823e4&is=6846d264&hm=7f96b35e782ad01ded423234e06bfc59c9004d561dca7b24bd2f62008fd77cb3& 14:24 < bridge> i got better internet in october 14:24 < bridge> i got better internet in september when i moved to uni 14:24 < bridge> i went back home for chrimstas 14:24 < bridge> two red days 👀 14:24 < bridge> i left my computer on 14:25 < bridge> afk time really shouldnt be counted 14:25 < bridge> I'm at 3 hours uptime on my machine 14:25 < bridge> because I got home 3 days ago 14:25 < bridge> https://ddstats.tw/ 14:25 < bridge> anyone know who is hosting this? 14:25 < bridge> or why it is down 14:25 < bridge> I'm at 3 days uptime on my machine 14:25 < bridge> because I got home 3 days ago 14:25 < bridge> furo left us again 14:26 < bridge> :troll: 14:26 < bridge> heinrich hasn't spoken in the discord in 8 months fwiw 14:26 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1381610348930666567/image.png?ex=68482468&is=6846d2e8&hm=026887a004c6379b02946f6bf3459449ebfd80b8104822a80c659cfc7eb67e5b& 14:26 < bridge> if using zstd or any other zip-like thing, then we shouldnt need to optimize for 0s or anything 14:26 < bridge> matrix or irc? 14:26 < bridge> does he speak over matrix? 14:26 < bridge> idk 14:26 < bridge> probably irc 14:27 < bridge> I guess I didn't notice 14:27 < bridge> yeah he seems the IRC type :P 14:27 < bridge> Send him a pm if you want a response 14:27 < bridge> He's just not active here 14:27 < bridge> yeah ik 14:27 < bridge> maybe like bit counting the compiler would understand this 14:27 < bridge> I don't need a response I was just saying he isn't active 14:28 < bridge> YES YES IT IS 14:28 < bridge> I COULDNT PLAY 14:28 < bridge> I COULDNT PLAY BECAUSE OF PACKET LOSSS!!! 14:28 < bridge> on koggers i sometimes have packet loss like lags on fr servers 14:29 < bridge> It's not the ping bcs that is rather stable xd 14:29 < bridge> i used to have 13% constant packet loss, my home internet has been changed, but i want others to not feel my pain 14:29 < bridge> is there an api of official ddnet that i can use,i want real time data,the sql file is not real time nor a thing that i can run on github 14:29 < bridge> 13% packet loss is awful anywhere lol how did you manage to play any other game 14:30 < bridge> because other games send tons of inputs every tick 14:30 < bridge> or tater shall explain it better or see the video which i learnt baout this 14:31 < bridge> anytime i hear about N% constant packet loss first thing i want to do is to check my cables and my isp's engineer's hands who connected me to isp box xd 14:31 < bridge> https://github.com/ddnet/ddnet/pull/8432 14:31 < bridge> 14:31 < bridge> any reviewers in the chat perhaps? I made this explanation which I will copy paste 14:31 < bridge> 14:31 < bridge> Current behavior: 14:31 < bridge> - DirectInput -> FireWeapon (spawn projectiles) 14:32 < bridge> - GameTick++ 14:32 < bridge> - Character Tick -> HandleWeapons -> FireWeapon (also possibly spawn projectiles) 14:32 < bridge> 14:32 < bridge> 8432 behavior: 14:32 < bridge> - GameTick++ 14:32 < bridge> - WeaponTick -> FireWeapon (spawn projectiles) (with shorter lifespan to account for tick difference) 14:32 < bridge> - Character Tick -> HandleWeapons -> FireWeapon (also possibly spawn projectiles) 14:32 < bridge> most people arent able or capable of fixing basic things 14:32 < bridge> my internet used to go over overhead phone lines 14:32 < bridge> you can get N% packet loss very easily by standing 100ft away from your wifi router or behind a thick wall. nothing needs to be wrong with your cables or ISP 14:32 < bridge> damn where it is like this 14:33 < bridge> just a random place, and im sure many other places like this exist 14:33 < bridge> wifi is never about reliability, i was talking about cables straightforward xd 14:33 < bridge> but wifi exists and we should allow people to use it xd 14:33 < bridge> That is quite a massive physics change or not? 14:33 < bridge> E.g. hammer does not spawn projectiles 14:34 < bridge> wdym? if it's implemented correct there is no physics change at all. 14:34 < bridge> i know there are 5-7 cities in russia that have isps offering ADSL still but not in europe lol 14:34 < bridge> both produce the same behavior just in different ways 14:34 < bridge> all im saying is that people exist who rely on packet loss resistance, and its really sad that after all this time ddnet doesnt have it 14:35 < bridge> Then what is the reason you want to remove directinput. 14:35 < bridge> 14:35 < bridge> btw it's not direct input 14:35 < bridge> i didnt even know it was possible, i didnt know hwy brawlhalla played normally for me but ddnet didnt xd 14:35 < bridge> it's early input 14:35 < bridge> the character class just calls it wrong 14:36 < bridge> because it's confusing and a huge mess, unless you understand the tick lifecycle extremely well 14:36 < bridge> the confusion caused this bug https://github.com/ddnet/ddnet/pull/10071 14:37 < bridge> @totar b4 i have to look in code, where does `OnPredictedInput` come in play here? 14:38 < bridge> something is off for me there, but anyway this discussion is about ddnet inabilty to help with packet loss rather than brawlhalla (had couple of friends who didn't really want to play brawl cuz they couldn't play it good on wifi xd) 14:39 < bridge> do you mean ``OnClientPredictedInput``? 14:39 < bridge> I assume that is one level higher up 14:39 < bridge> But yeah probs 14:40 < bridge> ah wait you're right that one also exists 14:40 < bridge> tbh this should just be called OnInput 14:40 < bridge> it's the same as before 14:41 < bridge> the direct input loop that happens outside the gameworld tick gets replaced by WeaponTick() which does the same function but as part of the gametick 14:41 < bridge> I mean how is the execution order 14:41 < bridge> Before it was: 14:41 < bridge> 14:41 < bridge> DirectInput 14:41 < bridge> PredictedInput 14:41 < bridge> Tick 14:41 < bridge> no 14:41 < bridge> before it was 14:41 < bridge> DirectInput 14:41 < bridge> Tick 14:41 < bridge> PredictedInput 14:41 < bridge> now it's 14:42 < bridge> Tick 14:42 < bridge> WeaponTick (rename/refactor) 14:42 < bridge> PredictedInput 14:42 < bridge> ```cpp 14:42 < bridge> for(int c = 0; c < MAX_CLIENTS; c++) 14:42 < bridge> { 14:42 < bridge> if(m_aClients[c].m_State != CClient::STATE_INGAME) 14:42 < bridge> continue; 14:42 < bridge> bool ClientHadInput = false; 14:42 < bridge> for(auto &Input : m_aClients[c].m_aInputs) 14:42 < bridge> { 14:42 < bridge> if(Input.m_GameTick == Tick() + 1) 14:42 < bridge> { 14:42 < bridge> GameServer()->OnClientPredictedEarlyInput(c, Input.m_aData); 14:42 < bridge> ClientHadInput = true; 14:42 < bridge> } 14:42 < bridge> } 14:42 < bridge> if(!ClientHadInput) 14:42 < bridge> GameServer()->OnClientPredictedEarlyInput(c, nullptr); 14:42 < bridge> } 14:43 < bridge> 14:43 < bridge> m_CurrentGameTick++; 14:43 < bridge> NewTicks++; 14:43 < bridge> 14:43 < bridge> // apply new input 14:43 < bridge> for(int c = 0; c < MAX_CLIENTS; c++) 14:43 < bridge> { 14:43 < bridge> if(m_aClients[c].m_State != CClient::STATE_INGAME) 14:43 < bridge> continue; 14:43 < bridge> bool ClientHadInput = false; 14:43 < bridge> for(auto &Input : m_aClients[c].m_aInputs) 14:43 < bridge> { 14:43 < bridge> if(Input.m_GameTick == Tick()) 14:43 < bridge> { 14:43 < bridge> The early input already uses `Tick() + 1` 14:43 < bridge> So it's for the same tick 14:43 < bridge> wdym? 14:43 < bridge> it's not 14:43 < bridge> it uses m_CurrentGameTick internally during WeaponFire() to set the spawning tick of the projectiles that get created during directinput 14:43 < bridge> It is 14:43 < bridge> Yes 14:44 < bridge> But there is m_LatestInput and m_Input in character 14:44 < bridge> ok I should clarify 14:44 < bridge> the Tick++ and GameTick() are not the same thing 14:45 < bridge> what is your question again? 14:45 < bridge> are brownies that good 14:46 < bridge> We need the same thing with IQ test. 14:46 < bridge> I actually just want to understand if the order of execution for DirectInput & PredictedInput in the character class is still the same 14:47 < bridge> Regardless of if the projectiles skip one tick bcs of directinput 14:47 < bridge> the *order* is the same, yes. The difference is that """DirectInput""" happens after the Tick++ so it has to compensate for that 14:48 < bridge> it does directinput then predictedinput or whatever they're called 14:49 < bridge> predicted input btw doesn't do any inputs really it just sets the m_Input and other random stuff 14:50 < bridge> directinput is very different 14:51 < bridge> Yep, but that is essential bcs of a bug in the server code: 14:51 < bridge> ```cpp 14:51 < bridge> // Direct Weapon selection 14:51 < bridge> if(m_LatestInput.m_WantedWeapon) 14:51 < bridge> WantedWeapon = m_Input.m_WantedWeapon - 1; 14:51 < bridge> ``` 14:51 < bridge> Actually a rather annoying bug 14:51 < bridge> The reason why the dummy shots before changing weapon 14:51 < bridge> idk if I'm aware of this bug, it's on purpose? 14:52 < bridge> I don't think it is, but dummy players abuse it ig 14:52 < bridge> isn't it a client bug if it only affects dummy? 14:52 < bridge> If you activate hammer fly, but the dummy has a gun, then it first shoots the gun 14:52 < bridge> Well the client sets the weapon and shots in the same tick 14:52 < bridge> oh 14:52 < bridge> but m_Tick is only set after the early input 14:52 < bridge> like the gores bind 14:53 < bridge> like the gores bind? 14:53 < bridge> same thing afaik 14:53 < bridge> ig, i never used that bind 14:54 < bridge> I had to make a version that would switch the weapon twice after each fire to get it to correct activate after respawning 14:54 < bridge> I had to make a version that would switch the weapon twice after each fire to get it to correctly activate after respawning 14:54 < bridge> me, i exist 14:55 < bridge> if it does work the same as the gores bind then I definitely tested it with that patch. 14:55 < bridge> also kog has been running this patch for over a year afaik 14:56 < bridge> not many dummy players on kog tho 14:57 < bridge> Well your patch has one more important patch imo: 14:57 < bridge> 14:57 < bridge> https://github.com/ddnet/ddnet/pull/8432/files#diff-65908fcaf323f624c0a8e584e92664d0d49640bb139729c6e22a14a5b2170c3fR1834 14:57 < bridge> ? 14:57 < bridge> This is something I'd call a bug actually 14:58 < bridge> Right now if e.g. you have have lags and the packets arrive out of order over 20ms, then you might end up overwriting new input with old input 14:58 < bridge> I'm aware 14:58 < bridge> Yes 14:58 < bridge> it's a decision 14:58 < bridge> Don't get me wrong 14:58 < bridge> I think that this has higher prio 14:58 < bridge> than your refactor 14:59 < bridge> I'm open to letting the client change the inputs in their buffer but it opens up potential exploits 14:59 < bridge> you could restrict it to old clients only 14:59 < bridge> as far as I can tell this must come from the skins Update 14:59 < bridge> that's not who the exploit is for, it's for cheat clients 15:01 < bridge> Everything about the input queue is just wrong 15:02 < bridge> what? 15:02 < bridge> how 15:11 < ws-client> @totar i always play with dummy on kog xd 15:12 < bridge> but you are probably not using cheatly dummy rocket binds 15:12 < bridge> but you are probably not using cheaty dummy rocket binds 15:12 < bridge> how to enable show others in solo 15:12 < bridge> cl_show_others 1? 15:12 < bridge> for server i mean 15:12 < bridge> the server cant control the setting 15:12 < bridge> without faking solo 15:12 < bridge> Ahh can't remember all the stuff I had, but 15:12 < bridge> 15:12 < bridge> ```cpp 15:12 < bridge> for(auto &Input : m_aClients[c].m_aInputs) 15:13 < bridge> ``` 15:13 < bridge> 15:13 < bridge> Since this is in order, it will use the first input that matches. On a lag newer input is potentially ignored bcs of the 15:13 < bridge> ```cpp 15:13 < bridge> if(IntendedTick <= Tick()) 15:13 < bridge> IntendedTick = Tick() + 1; 15:13 < bridge> ``` 15:13 < bridge> thing. 15:13 < bridge> 15:13 < bridge> Then old input can reset 15:13 < bridge> `m_aClients[ClientId].m_LastInputTick = IntendedTick;` 15:13 < bridge> and cause a `NETMSG_INPUTTIMING` to be sent again, but only for the next input to arrive. 15:13 < bridge> IMO it should either ack all non-acked inputs or have a better strict monotonic counter 15:13 < bridge> But there was something more, can't remember 15:14 < bridge> Also I'd prefer `NETMSG_INPUTTIMING` is flushed so the client can more accurately calculate its ping without needing pingpong packets 15:14 < bridge> which part of this is related to 8432 15:15 < bridge> I have told you that patches to the input queue are imo more important 15:15 < bridge> And your pr has at least one 15:15 < ws-client> @totar nah only swap and hammerfly xd 15:15 < bridge> ^ 15:15 < bridge> this confused me 15:15 < bridge> I thought you meant that was a bug 15:16 < bridge> you mean the input queue is more important that the direct input thing? 15:16 < bridge> than the refactoring yes 15:16 < bridge> they're both refactoring in a way 15:16 < bridge> the variables that direct input uses are deleted by creating the input buffer 15:17 < bridge> there is no more m_LatestInput 15:17 < bridge> But your patch is important for a simple reason: 15:17 < bridge> 15:17 < bridge> You are not using a counter 15:17 < bridge> The counter really causes stupid behavior with out of order packets 15:17 < bridge> that's the whole point yes 15:18 < bridge> the counter was needed because direct input existed 15:18 < bridge> That is why I think that part of the patch is more interesting xd 15:18 < bridge> How so? 15:18 < bridge> direct input can have multiple inputs per tick 15:18 < bridge> so you can't have this strict ring buffer if you had that behavior 15:18 < bridge> Do we talk about early input? 15:19 < bridge> direct input is just to check if someone is afk or not xd 15:19 < bridge> the reason this is possible is because directinput was discovered to not exist on the client 15:19 < bridge> it used to have a different purpose in 0.5 15:19 < bridge> Yeah 15:20 < bridge> This actually doesn't even sound that bad, but IMO the counter is still wrong here then 15:20 < bridge> Well not IMO, it is 15:20 < bridge> Bcs of the first part of this msg 15:20 < bridge> It would often use the outdated input instead of the newest 15:21 < bridge> it's the reason why #10071 bug ruins teehistorian data, because it was assumed that direct input only handled the first input it recieved but actually it handles all 15:21 < bridge> https://github.com/ddnet/ddnet/pull/10071 15:21 < bridge> IF we want multiple inputs, then multiple inputs per tick should overwrite the existing input 15:21 < bridge> Not add a new queue entry 15:21 < bridge> ok but we don't want multiple inputs so we don't need to discuss that xd 15:22 < bridge> either the client should overwrite the past inputs or we drop duplicates 15:22 < bridge> both options are valid 15:22 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1381624549921132675/image.png?ex=684831a2&is=6846e022&hm=7186efa450fd98e9862f1d7e15d9a77b13d9eb2069b93c41a61b653a3083e685& 15:22 < bridge> thanks kebs 15:23 < bridge> But just to be clear, this bug happens because a old input is far back in the queue and a new input of the same tick is then added to the front of the queue, right? 15:24 < bridge> If not, that is my problem with the queue as of now 15:25 < bridge> It's buggy 15:25 < bridge> I don't think the position in the queue matters at all. It happens anytime the client sends 2 different inputs for the same gametick where one of them has a fire and one of them doesn't. 15:25 < bridge> 15:25 < bridge> That happens due to the prediction time shenanigans that the client does which I'm sure you're aware of 15:25 < bridge> Mh yeah ok 15:25 < bridge> Then that is an additional problem 15:26 < bridge> to be fair it's not the client's fault really. 15:26 < bridge> it's trying its best 15:26 < bridge> Yeah 15:31 < bridge> @totar Would it be possible to split #8432 into more separate PRs? Some commits would be easier to merge then others. And some commits look like fixup commits that shouldn't be in the final merge but squashed into parent commits. 15:31 < bridge> https://github.com/ddnet/ddnet/pull/8432 15:33 < bridge> the commits were intended to make it easier to verify correctness and then be squashed later but the order ended up being not helpful. I can split it into 2 PRs but it might be easier to just rewrite the history into fewer commits 15:33 < bridge> Commits that only change names or documentation can definitely be split 15:35 < bridge> Do you think having the whole thing in 1 commit would be bad? 15:35 < bridge> I think multiple commit do make it easier to review, but in this case some of those commits might already require a discussion individually, so it doesn't make the PR much easier to merge 15:36 < bridge> hmm 15:36 < bridge> ok I will try to make it like 2 or 3 commits 15:36 < bridge> For example, would the commits changing `m_LastAckedSnapshot` handling be standalone? 15:37 < bridge> ah 15:37 < bridge> (they should be squashed) 15:37 < bridge> sorry I was remembering why I did that in the first place 15:43 < bridge> ok actually I forgot, it's been literally over a year. but I think the reason was because if an input arrive late after being delayed it messed up the state of ``m_LastAckedSnapshot``, but we now support correctly handling out of order inputs so it's not acceptable to just let the ``m_LastAckedSnapshot`` use the wrong value for snapshot calculation. 15:43 < bridge> 15:43 < bridge> to be fair ``m_LastAckedSnapshot`` is not very critical in the first place, if it was wrong by +-5 ticks nothing really changes. The NETMSG_INPUTTIMING uses the ``IntendedTick`` value instead. 15:44 < bridge> ok actually I forgot, it's been literally over a year. but I think the reason was because if an input arrive late after being delayed it messed up the state of ``m_LastAckedSnapshot``, but we now support correctly handling out of order inputs so it's not acceptable to just let the ``m_LastAckedSnapshot`` use the wrong value for snapshot calculation. 15:44 < bridge> 15:44 < bridge> to be fair ``m_LastAckedSnapshot`` is not very critical in the first place, if it was wrong by +-5 ticks nothing really changes except the snapshot diff being less efficient . The NETMSG_INPUTTIMING uses the ``IntendedTick`` value instead. 15:44 < bridge> ok actually I forgot, it's been literally over a year. but I think the reason was because if an input arrive late after being delayed it messed up the state of ``m_LastAckedSnapshot``, but we now support correctly handling out of order inputs so it's not acceptable to just let the ``m_LastAckedSnapshot`` use the wrong value for snapshot calculation. 15:44 < bridge> 15:44 < bridge> to be fair ``m_LastAckedSnapshot`` is not very critical in the first place, if it was wrong by +-5 ticks nothing really changes except the snapshot diff being less efficient. The NETMSG_INPUTTIMING uses the ``IntendedTick`` value instead. 15:46 < bridge> I'll go over the commits and make them fewer 15:48 < bridge> Also separate PRs are better if the commit work independently. If we merge one change at a time it's easier to pinpoint if something breaks. 15:48 < bridge> Also separate PRs are better if the commits work independently. If we merge one change at a time it's easier to pinpoint if something breaks. 15:49 < bridge> mmm it's messier to make it work as seperate PRs but also not that much code if you prefer it that way 15:49 < bridge> are you going to merge one of them and then wait weeks before the other one? 15:50 < bridge> idk if I feel comfortable verifying the correctness as 2 PRs 15:51 < bridge> it's possible I'd just need to do it with new things 15:51 < bridge> I guess it's fine if it doesn't work in multiple PRs 15:51 < bridge> But the documentation should definitely be separate 15:52 < bridge> But the documentation and naming changes should definitely be separate 15:53 < bridge> I think the things that look like naming changes might be a git diff artifact and are infact new functions but I will double check 15:54 < bridge> also the PR description is a rambling mess I will fix that 15:55 < bridge> nvm there are some naming changes that can be seperate 16:16 < bridge> @robyt3 https://github.com/ddnet/ddnet/issues/10337 16:16 < bridge> skin loading? 18:01 < bridge> yeah, seems likely if related to number of players. Also happens when nameplates are disabled 18:07 < bridge> i think this also happened when the dummies had default skin 18:08 < bridge> so not sure if skin loading, but drop is significant 18:08 < bridge> with 128 players its a lot 18:12 < bridge> yeah, not loading by updating I presume 18:32 < bridge> i found a tee in the wild today in the list of contributors for lite-xl 18:32 < bridge> who is Jipok 19:06 < ws-client> Jipok W profile pic 19:09 < ws-client> @gorp_tw wats ur gh 19:10 < bridge> it's lynn, you have to know 19:10 < ws-client> lynn = gorp? 19:10 < bridge> yes 19:10 < ws-client> i thought gorp just spawned 19:10 < bridge> no 19:10 < ws-client> whats lynn gh xd 19:11 < bridge> katalynn or smth xd 19:11 < bridge> look in ddnet-web 19:11 < ws-client> kaitlynia 19:11 < ws-client> you knowing that is pro josspit 19:11 < bridge> https://github.com/kaitlynia 19:11 < ws-client> we need to duel in github username knowledge game one day 19:11 < bridge> xDDDDDDD 19:12 < bridge> Sadly you are influencer #1 19:12 < ws-client> i am stargazer of https://github.com/kaitlynia/Petal le 19:12 < ws-client> l 19:12 < ws-client> i opened group chat https://github.com/ChillerDragon/github-meta/issues/10 19:13 < bridge> lmao 19:13 < bridge> classic chiller 19:14 < ws-client> oke josspit 19:14 < ws-client> surprise qiúiz 19:15 < ws-client> what is tater client main dev github username? (looking it up = <:banhammer:392813948858269696>) 19:15 < bridge> srj6 19:15 < ws-client> close 19:15 < ws-client> i think its missing a c 19:15 < bridge> uff 19:15 < ws-client> https://github.com/sjrc6/ 19:15 < ws-client> but not bad 19:16 < ws-client> @totar wtf is that name btw? explain 19:16 < ws-client> super jump release candidate 6 19:21 < bridge> @chiller why no ddnet commits? 19:21 < bridge> fell off lately 19:22 < bridge> wowow Petal mentioned 19:22 < bridge> I found lynn on some random webrtc repo once 19:22 < bridge> But can't remember which one 19:23 < bridge> xiu 19:24 < bridge> :nouis: 22:55 < bridge> since when cant you say voldemort (client) in chat? 22:55 < bridge> dafuk 22:55 < bridge> i got insta muted for 60s when i tried to say it again out of confusion 23:01 < bridge> Angst Pottr? 23:01 < bridge> Angst Potter? 23:02 < bridge> Is there a single reason where you have to say it 23:03 < bridge> not really 23:03 < bridge> why mute though 23:04 < bridge> Idk I mute people for 5 minutes when they spam it 23:05 < bridge> alright 23:05 < bridge> should also add the russian version of the word then 23:15 < bridge> Good idea 23:23 < bridge> first? 23:23 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1381745644892590130/image.png?ex=6848a269&is=684750e9&hm=6a7c905fe3c603b5810fe02fa51394d8c23243d9b3369eb8eefb23a1f457ffd4& 23:28 < bridge> ? 23:29 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1381746942333419520/image.png?ex=6848a39e&is=6847521e&hm=7d148e152ec23b428d3ae59cc56f1c992343119691f2efbe5fce25d648314837& 23:29 < bridge> the Hakem dude still botting 23:29 < bridge> holy shit 23:29 < bridge> when yall gon ban that ip 23:29 < bridge> is there even a way for yall to blacklist yet 23:43 < bridge> I wouldn’t say it fell off. I took a tiny break because I was annoyed by the amount of open PRs