00:06 <+bridge> [ddnet] how can i keep something in the cache while reloading the map? 00:06 <+bridge> [ddnet] I want to keep a varibale in gamecontext 00:11 <+bridge> [ddnet] don't reset it in OnReset? 00:11 <+bridge> [ddnet] or something like that 00:29 <+bridge> [ddnet] CServer passes a bool to let you know whether we are shutting down or just changing/reloading a map 00:29 <+bridge> [ddnet] So you can save things in a variable and reassign them after the gamecontext is reconstructed 07:18 <+bridge> [ddnet] @Learath2 but I want to load a CSaveTee after the map changed 08:32 <+bridge> [ddnet] @fokkonaut I had some of that done in safe_reload. The idea would be to allocate space for the CSaveTee's std::move or std::copy them over, reconstruct the gamecontext, then std::move them back 08:33 <+bridge> [ddnet] But the harder part is to move the tees into the correct teams 08:35 <+bridge> [ddnet] why? 08:36 <+bridge> [ddnet] just saving all information, + team 09:19 <+bridge> [ddnet] Problem is that as soon as the gamecontext is constructed, I think the players haven't joined yet 09:20 <+bridge> [ddnet] So you can't use a variable inside Reset and as the gamecontext is being destroyed, you cant store anything in that legally. 09:20 <+bridge> [ddnet] So there is no good place to store this 09:27 <+bridge> [ddnet] so you need a variable inside `CGameContext` instead 09:31 <+bridge> [ddnet] @heinrich5991 can't, it's getting destructed 09:31 <+bridge> [ddnet] that you set in Reset 09:31 <+bridge> [ddnet] Well you could store it in a variable in Reset, then move it 09:33 <+bridge> [ddnet] Then you wait for all the players to join 09:33 <+bridge> [ddnet] Move to their teams as they join 15:31 <+bridge> [ddnet] GER2 Novice Perma server dont show up in ddnet tab 18:17 <+bridge> [ddnet] https://dev.to/web/design-github-profile-using-readme-md-8al 18:19 <+ChillerDragon> omg thats crazy @Soreu 18:19 <+bridge> [ddnet] indeed 18:21 <+ChillerDragon> is this planned or active? 18:24 <+ChillerDragon> https://github.com/ChillerDragon/ 18:24 <+ChillerDragon> ah its working 18:24 <+ChillerDragon> not sure if i like it tbh 18:24 <+ChillerDragon> you can use it to create big image banners lol 18:26 <+bridge> [ddnet] I don't see it working yet 18:26 <+ChillerDragon> it is 18:26 <+ChillerDragon> https://zillyhuhn.com/cs/.1594052786.png 18:26 <+bridge> [ddnet] there's one of example repos: https://github.com/katmeister/.github 18:27 <+ChillerDragon> oh indeed in private browser i do not see it hm 18:27 <+bridge> [ddnet] so it's just not tricked by mobile's desktop mode 18:27 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/729735343233957888/Screenshot_2020-07-06-18-27-19-976_com.android.chrome.jpg 18:27 <+bridge> [ddnet] :p 18:28 <+ChillerDragon> nah seems to be only for the account owner during beta 18:28 <+bridge> [ddnet] Also, you created repo named as your nick, while they created one named .github 18:28 <+bridge> [ddnet] so... 18:29 <+ChillerDragon> ah interesting 18:29 <+bridge> [ddnet] guess there are two ways and both are tested 18:30 <+bridge> [ddnet] imo the .github version makes more sense, but for sure there will be people voting for both 18:30 <+ChillerDragon> i also prefer .github 18:31 <+ChillerDragon> sounds more future proof and obvious what it is 18:32 <+ChillerDragon> microsoft is going wild feature wise and yeeting on availability 18:32 <+ChillerDragon> hope github doesnt end like minecraft ... feature bloated and unusable unstable 18:32 <+ChillerDragon> or like skype :troll: 18:38 <+bridge> [ddnet] since microsoft github is has more downtime 18:38 <+bridge> [ddnet] :greenthing: 19:19 <+ChillerDragon> ye in the beginning i was more joking about it but slowly its really noticeable 19:19 <+ChillerDragon> idk maybe i might also be spending more time on github nowerdays 19:24 <+bridge> [ddnet] since microsoft github has more downtime 19:36 <+bridge> [ddnet] imagine not using ddnet client 19:48 <+bridge> [ddnet] can't, I'm using it since the very beginning 19:53 <+bridge> [ddnet] <ᶰ°Konͧsti> gamerclient>DDNet client :kek: 20:50 <+bridge> [ddnet] @deen heyo, how the /r works? How I can enable it? 21:21 <+bridge> [ddnet] <ᶰ°Konͧsti> @Fearzy everyone in ur team has to write /practice first 21:22 <+bridge> [ddnet] Oh 21:22 <+bridge> [ddnet] I get it 21:22 <+bridge> [ddnet] ur rank wont count 21:23 <+bridge> [ddnet] Yeah, I know thanks, well I don't know that everyone has to write /practice first 21:55 <+bridge> [ddnet] I dont think it has to be everyone 21:55 <+bridge> [ddnet] Iirc it was majority voting so you only need 50% + 1 21:55 <+bridge> [ddnet] only >50% 21:57 <+bridge> [ddnet] Can anyone help me with a 128 player mask? i dont really understand why this doesnt work correctly: https://github.com/fokkonaut/F-DDrace/commit/fa74501da03b4087fed1876d98f054b57294c0f0 21:57 <+bridge> [ddnet] also, i dont know how to do this part: https://github.com/fokkonaut/F-DDrace/commit/fa74501da03b4087fed1876d98f054b57294c0f0#diff-df1a1bb3f0853fbdb44420570856cebfL708 22:28 <+bridge> [ddnet] ~ negates all bits 22:28 <+bridge> [ddnet] you use Mask128() both for 0 (all bits disabled) and -1 (all bits enabled), at least one of these usages is wrong 22:29 <+bridge> [ddnet] oh, so 22:29 <+bridge> [ddnet] ah that makes sense i guess 22:29 <+bridge> [ddnet] and how do i solve the one with the ~ 22:29 <+bridge> [ddnet] you need to flip all the bits of the whole mask 22:30 <+bridge> [ddnet] you can overload operator~ to do this 22:30 <+bridge> [ddnet] doesnt work 22:30 <+bridge> [ddnet] why not? 22:30 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/729796497436180532/unknown.png 22:30 <+bridge> [ddnet] 😦 22:30 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/729796535834902598/unknown.png 22:30 <+bridge> [ddnet] usually looks like this 22:31 <+bridge> [ddnet] ~ only takes 1 operand 22:31 <+bridge> [ddnet] |= 2 22:31 <+bridge> [ddnet] oh wait, yea, i removed the paramter 22:31 <+bridge> [ddnet] I think the error you get would even be decent for this, in C++ standards atleast 22:32 <+bridge> [ddnet] what does the error say? and you probalby shouldn't return Mask& 22:33 <+bridge> [ddnet] what should i return? 22:33 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/729797187508109312/unknown.png 22:33 <+bridge> [ddnet] Mask128 22:33 <+bridge> [ddnet] Mask128& would mean that you return a reference 22:33 <+bridge> [ddnet] wait, heinrich, uhm 22:34 <+bridge> [ddnet] so setting the mask 0 means no one can see it and -1LL means everyone can? 22:34 <+bridge> [ddnet] yes 22:34 <+bridge> [ddnet] for the long long 22:34 <+bridge> [ddnet] because -1 is represented as 0xffff_ffff 22:34 <+bridge> [ddnet] all bits are set 22:35 <+bridge> [ddnet] -1 is only guaranteed to be all ones in C++ past a certain standard when they made the representation two's complement 22:36 <+bridge> [ddnet] (just an inconsequential fun fact, there are no sign and magnitude implementations out there to worry about 😛 ) 22:40 <+bridge> [ddnet] @heinrich5991 would this be correct? 22:40 <+bridge> [ddnet] ``` 22:40 <+bridge> [ddnet] Mask128 operator~() 22:40 <+bridge> [ddnet] { 22:40 <+bridge> [ddnet] m_aMask[0] = ~m_aMask[0]; 22:40 <+bridge> [ddnet] m_aMask[1] = ~m_aMask[1]; 22:40 <+bridge> [ddnet] return *this; 22:40 <+bridge> [ddnet] }``` 22:41 <+bridge> [ddnet] no 22:41 <+bridge> [ddnet] why? 22:41 <+bridge> [ddnet] if I say `int i = 3; ~i;` that doesn't change i 22:41 <+bridge> [ddnet] your implementation changes the operand of `~` 22:42 <+bridge> [ddnet] ? 22:42 <+bridge> [ddnet] ? 22:42 <+bridge> [ddnet] that's not a question 22:43 <+bridge> [ddnet] i dont understand 22:47 <+bridge> [ddnet] These are not the questions of a programmer, my grandmother reacts like this when I try to teach her how to create contacts on her phone 😛 22:47 <+bridge> [ddnet] What part do you not understand? 22:54 <+bridge> [ddnet] `Mask127 operator~() const` is the signature I'd use and it'd tell you what's wrong with yours 22:56 <+bridge> [ddnet] it wouldn't tell the exact steps to fix it though 22:56 <+bridge> [ddnet] Yeah but it might give a hint as to what you meant I guess 22:56 <+bridge> [ddnet] isnt the random word generator for /save on an already existing code not good 22:56 <+bridge> [ddnet] its like if you tried to register for a website but it said "sorry, that password is taken" 22:57 <+bridge> [ddnet] it's not exactly a trivial problem to solve @louis, Zwelf tried and it broke quite a bit 22:58 <+bridge> [ddnet] ah ok 23:03 <+bridge> [ddnet] @Learath2 what do i do inside of the ~ function with the two halfs of the mask? 23:03 <+bridge> [ddnet] i got the rest working btw, the mask works 23:11 <+bridge> [ddnet] uf, I'm disappointed that you aren't even trying 23:11 <+bridge> [ddnet] ```c++ 23:12 <+bridge> [ddnet] Mask128 operator~() const { 23:12 <+bridge> [ddnet] Mask128 t; 23:12 <+bridge> [ddnet] t.m_aMask[0] = ~m_aMask[0]; 23:12 <+bridge> [ddnet] t.m_aMask[1] = ~m_aMask[1]; 23:12 <+bridge> [ddnet] return t; 23:12 <+bridge> [ddnet] } 23:12 <+bridge> [ddnet] ``` 23:12 <+bridge> [ddnet] thats how i did it lol 23:12 <+bridge> [ddnet] Is it now?... 23:12 <+bridge> [ddnet] ye 23:12 <+bridge> [ddnet] It's not what you sent here 23:12 <+bridge> [ddnet] yess, true 23:13 <+bridge> [ddnet] and there is no operator~ in either of your commits 23:13 <+bridge> [ddnet] Turns out I'm not telepathic and can only see as much as you show 23:14 <+bridge> [ddnet] i know this sounds stupid, but i had it that way before, and then changed it, and right now i had this on my screen again 23:14 <+bridge> [ddnet] point is, inside of this operator, you are not allowed to modify `this` 23:15 <+bridge> [ddnet] hence the const there to protect you from mistakes 23:16 <+bridge> [ddnet] yea 23:17 <+bridge> [ddnet] I'd also probably add a constructor that takes two `uint64_t`s so I can just write `return Mask128(~m_aMask[0], ~m_aMask[1]);` 23:25 <+bridge> [ddnet] true 23:29 <+bridge> [ddnet] thanks alot 23:32 <+bridge> [ddnet] btw, I did this before and sadly compilers are not quite smart enough to optimize this well 😦 23:33 <+bridge> [ddnet] they are smart enough to optimize `std::bitset` well though, except for MSVC 23:33 <+bridge> [ddnet] with msvc you can use the compiler builtin to do a 128bit shift, which optimizes great, so you can do that 23:34 <+bridge> [ddnet] (not that the performance matters that much in this case honestly) 23:38 <+bridge> [ddnet] optimize what? 23:39 <+bridge> [ddnet] the ~ should be well-optimized 23:39 <+bridge> [ddnet] is it the << ? 23:43 <+bridge> [ddnet] Checking and setting flags doesn't optimize well 23:43 <+bridge> [ddnet] The shifts optimized decently in clang, horribly in gcc and MSVC 23:51 <+bridge> [ddnet] I've been wondering why there is no processor support for any 128 bit operation except imul 23:51 <+bridge> [ddnet] does the ALU get too complex? 23:52 <+bridge> [ddnet] the question they're asking themselves is probably: is it work the die space? 23:52 <+bridge> [ddnet] worth*? 23:52 <+bridge> [ddnet] ye 23:53 <+bridge> [ddnet] possibly, I'd have guessed simd would benefit from these existing but I'm not very good with vectorization 23:54 <+bridge> [ddnet] https://godbolt.org/z/3op3jH 23:55 <+bridge> [ddnet] doesn't look that nice, indeed 23:55 <+bridge> [ddnet] @Learath2 Isn't SSE 128bit, then AVX 256bit and AVX512 512bit? 23:55 <+bridge> [ddnet] oh, you mean for a single 128 bit number 23:55 <+bridge> [ddnet] Yep 23:55 <+bridge> [ddnet] but I also don't know how good it can be 23:56 <+bridge> [ddnet] I guess it's not very common when vectorizing to need a 128b + 128b 23:57 <+bridge> [ddnet] + looks fine 23:57 <+bridge> [ddnet] https://godbolt.org/z/Uff_Kt 23:58 <+bridge> [ddnet] or just use unsigned __int128 since our compilers probably support it anyway?