00:45 <+bridge> [ddnet] I added a new cpp file under game/client/components and a responding header file and i included the header in gameclient 00:45 <+bridge> [ddnet] but it seems like the cpp file isnt compiled because i have a lot of code in tehre that shouldnt compile but it still successfully compiles with 0 warnings 00:47 <+Learath2> Did you add it to CMakeLists ? 00:48 <+bridge> [ddnet] no 00:48 <+bridge> [ddnet] iu guess i should 00:48 <+bridge> [ddnet] lemme have a look at the file 00:49 <+bridge> [ddnet] ah i see evertyhign is added manually thgere 00:51 <+bridge> [ddnet] ok nice ty @Learath2 i have my expected errors now c: 00:58 <+Learath2> it used to be a glob, but apparently this is a better practice 13:10 <+bridge> [ddnet] I must say, banks have one of the most broken corporate structures that I've ever seen 13:29 <+bridge> [ddnet] Why? 13:30 <+bridge> [ddnet] You can complain all you want, the branch manager can be apologetic all he wants, but if he can't communicate with the internal department responsible for your problem your problem won't get fixed 13:30 <+bridge> [ddnet] No way you can directly talk to the internal department either 13:31 <+bridge> [ddnet] So complaining is pointless, you just submit a request and wait until the responsible person decides to read complaints 13:44 <+bridge> [ddnet] <♪♫> be prepared to wait at least 6 months to get what you need 😃 13:47 <+bridge> [ddnet] luckily I know a guy who knows a guy 13:48 <+bridge> [ddnet] It's either that or you need to have a ridiculous amount of money in your account (which sadly I don't) 😛 13:49 <+bridge> [ddnet] <♪♫> that helps 😋 14:16 <+bridge> [ddnet] Oh well, luckily I never had problems with my bank and they even correctly detected and reimbursed me when someone stole my credit card info (might be DDNet server related, tried way too many hosters) 14:16 <+bridge> [ddnet] Not sure if that's just your bank or all though 14:20 <+bridge> [ddnet] yo guiis 14:20 <+bridge> [ddnet] can some1 explain snapshots? 14:20 <+bridge> [ddnet] I wonder how ofthen the CGameClient::OnNewSnapshop() function gets called 14:28 <+bridge> [ddnet] <♪♫> hey, no idea i'm not familiar with that, you could either ++ a static var or use tools like hmm i don't remember is it gprof ? gcov/lcov lvoc something like that 14:36 <+bridge> [ddnet] You get one snapshot per ticks that could be processed before the next ticks start time 14:37 <+bridge> [ddnet] That is unless you are connecting or recovering and your snap rate is limited 14:42 <+bridge> [ddnet] lol all this code gets executed every tick? 14:42 <+bridge> [ddnet] It iterates over all skin names and compares them for evey player? 14:42 <+bridge> [ddnet] No, it gets executed every couple ticks 14:42 <+bridge> [ddnet] but it could potentially be executed every tick yes 14:44 <+bridge> [ddnet] how is the client still that fast haha 14:44 <+bridge> [ddnet] In the runloop the server gets the current time, then until it's time for the next tick to start it'll keep ticking. As soon as it's time for the next tick to start, it'll snap. And unless you are a rate-limited client you'll get a snap 14:45 <+bridge> [ddnet] So the client should get slower the more skins you have i guess 14:45 <+bridge> [ddnet] Because languages like C/C++/Rust are no joke, they have a ridiculous amount of optimisation that goes into them and they are blazingly fast 14:45 <+bridge> [ddnet] I thought the skin graphics are saved on join and on change 14:46 <+bridge> [ddnet] A computer can do a lot more then one might imagine after using a language like Java or something interpreted like python 14:46 <+bridge> [ddnet] Because i want to add something similar to a skin system to my client without slowing it down :c 14:46 <+bridge> [ddnet] its like a second skin 14:48 <+bridge> [ddnet] So i am save with iterating over a big array of strings every tick and compare it agianst all the playernames 14:48 <+bridge> [ddnet] Where in OnNewSnapshot do we iterate every skin? 14:49 <+bridge> [ddnet] m_aClients[ClientID].m_SkinID = g_GameClient.m_pSkins->Find(m_aClients[ClientID].m_aSkinName); 14:49 <+bridge> [ddnet] i think here 14:49 <+bridge> [ddnet] if i understood it correctly 14:49 <+bridge> [ddnet] find does stuff and then calls FindImpl 14:49 <+bridge> [ddnet] ``` 14:49 <+bridge> [ddnet] int CSkins::FindImpl(const char *pName) const 14:49 <+bridge> [ddnet] { 14:49 <+bridge> [ddnet] for(int i = 0; i < m_aSkins.size(); i++) 14:49 <+bridge> [ddnet] { 14:49 <+bridge> [ddnet] if(str_comp(m_aSkins[i].m_aName, pName) == 0) 14:49 <+bridge> [ddnet] { 14:49 <+bridge> [ddnet] return i; 14:49 <+bridge> [ddnet] } 14:49 <+bridge> [ddnet] } 14:49 <+bridge> [ddnet] return -1; 14:49 <+bridge> [ddnet] } 14:50 <+bridge> [ddnet] ``` 14:50 <+bridge> [ddnet] Yeah i see 14:50 <+bridge> [ddnet] It's for each snapped player mind you 14:50 <+bridge> [ddnet] so only players close to you 14:50 <+bridge> [ddnet] oh so snapped players are only close players? 14:50 <+bridge> [ddnet] yea so all visible players i guess 14:51 <+bridge> [ddnet] i play a lot whit showall on full ddnet servers 14:51 <+bridge> [ddnet] Also only for players that changed Clientinfo 14:51 <+bridge> [ddnet] wait only if they changed it 14:51 <+bridge> [ddnet] where do i see that 14:52 <+bridge> [ddnet] if(Item.m_Type == NETOBJTYPE_CLIENTINFO) 14:52 <+bridge> [ddnet] ah here? 14:52 <+bridge> [ddnet] Snapshots are deltas 14:52 <+bridge> [ddnet] they indicate change 14:52 <+bridge> [ddnet] what ever that means xd 14:53 <+bridge> [ddnet] Which word do you not understand in that sentence? 14:54 <+bridge> [ddnet] delete but i get it now 14:54 <+bridge> [ddnet] delete is change i rememberd something from school 14:54 <+bridge> [ddnet] delta* 14:54 <+bridge> [ddnet] not delete xd 15:53 <+bridge> [ddnet] The server sends delta snapshots but the client reconstructs the full snap before processing it. But well... calling this code 25 times per second isn't that much 17:17 <+bridge> [ddnet] k thanks @redix 20:34 <+bridge> [ddnet] What the actual fuck is wrong with windows? ..... 20:48 <+bridge> [ddnet] @Learath2 what do you mean 20:49 <+bridge> [ddnet] everything is fcked 20:49 <+bridge> [ddnet] october up, 20:49 <+bridge> [ddnet] edge -> chromium, 20:49 <+bridge> [ddnet] .... 20:50 <+bridge> [ddnet] I'm trying to get the stupid utf8 output working on console 20:58 <+bridge> [ddnet] Not possible I think 20:59 <+bridge> [ddnet] maybe we can just create our own console-like window in sdl2? 20:59 <+bridge> [ddnet] <♪♫> good luck, from what i saw it might be done but with big caveats like not on all win versions and so on 20:59 <+bridge> [ddnet] or just turn off the console alltogether on windows and write to a log file 20:59 <+bridge> [ddnet] there are editors on windows that can display utf8 just fine 21:05 <+bridge> [ddnet] I thought outputting with WriteConsoleW would handle all the stupid parts but apparently even that isn't enough 21:08 <+bridge> [ddnet] @jao how does one find someone on ddnet.tw when they have a utf8 name? 21:10 <+bridge> [ddnet] uh you could copy paste from in-game or somewhere 21:10 <+bridge> [ddnet] or navigate through favorite partners 21:11 <+bridge> [ddnet] and if it's not all uft8 chars you might get away by searching the non utf8 ones and then have the right suggestion 21:13 <+bridge> [ddnet] This is just insane, how this can even happe nis beyond me 21:13 <+bridge> [ddnet] the data is completely garbled by the time it makes it into kernel32.dll 21:13 <+bridge> [ddnet] It's like they rand() it 21:19 <+bridge> [ddnet] <♪♫> does mintty uses cmd ? 21:19 <+bridge> [ddnet] <♪♫> https://i.imgur.com/GUiy7e4.png 21:20 <+bridge> [ddnet] mbrtowcs also totally destroys the pointer it gets, wtf 21:20 <+bridge> [ddnet] <♪♫> " however, mintty is not a full replacement for the Windows Console window (by default running the Windows Command Processor / command prompt / cmd.exe)." 21:20 <+bridge> [ddnet] mintty is sane 21:20 <+bridge> [ddnet] mbsrtowcs I mean 21:27 <+bridge> [ddnet] the data is garbled way before we hand it off to msvcrt though 🤔 21:28 <+bridge> [ddnet] ```5B 32 30 31 38 2D 31 32 2D 30 37 20 32 31 3A 32 34 3A 31 38 5D 5B 63 68 61 74 5D 3A 20 4C 65 61 72 61 74 68 32 3A 20 7A D1 94 E2 84 93``` 21:28 <+bridge> [ddnet] This is what gets to the logger, those aren't valid code points 21:29 <+bridge> [ddnet] ```5B 32 30 31 38 2D 31 32 2D 30 37 20 32 31 3A 32 34 3A 31 38 5D 5B 63 68 61 74 5D 3A 20 4C 65 61 72 61 74 68 32 3A 20 7A D1 94 E2 84 93``` 21:31 <+bridge> [ddnet] Actually no they are just fine... 21:55 <+tosky> Rᥱad wһаt IRC іnvestіgatⅰ⋁e jⲟᥙrᥒalⅰѕts hɑⅴе unϲഠⅴereԁ οn the frеenode pеⅾоpһіlia sϲɑᥒԁɑl httpsː⧸/еnⅽуcⅼοреdⅰaⅾraⅿаtiϲɑ.rs/Frееnodegate 21:55 <+tosky> А fascinɑtiᥒɡ bⅼoɡ whеrᥱ freᥱnode stɑff ⅿеⅿbеr Ϻɑttһew ⅿѕt Trοᥙt recഠᥙnts his experiences of eyᥱ−rаⲣiᥒg yoᥙᥒɡ сһiⅼⅾrᥱn httⲣs∶//MɑttSTrⲟut.ⅽഠⅿ⧸ 21:56 <+bridge> [ddnet] <♪♫> +s +r 22:19 <+bridge> [ddnet] How does one encode utf16? 23:58 <+bridge> [ddnet] It only took me 4 hours \o/ 23:58 <+bridge> [ddnet] And after all that I got told by Mithrandir that I should be focusing on other issues 🙂 23:58 <+bridge> [ddnet] As always very rewarding to work on this stuff 😛