00:00 < bridge> <Solly> @robyt3 about the collapsable serverinfo/communtiies and then my counter-pr of sticking communities at the top of filters
00:00 < bridge> <Solly> because either solution is a solution to it taking up space, but no solution is not good
00:00 < bridge> <Solly> obviously i think putting it in filters is better (since i made the counter pr)
00:00 < bridge> <Solly> but which one is going to be ... merged? (It doesnt actually affect me ill change it in the one i use)
00:00 < bridge> <Solly> @robyt3 about the collapsable serverinfo/communtiies and then my counter-pr of sticking communities at the top of filters
00:00 < bridge> <Solly> because either solution is a solution to it taking up space, but no solution is not good
00:00 < bridge> <Solly> obviously i think putting it in filters is better (since i made the counter pr)
00:00 < bridge> <Solly> but which one is going to be ... merged? (It doesnt actually affect me ill change it in my fork)
00:01 < bridge> <robyt3> So far, neither of them seem like they would get merged, at least by me
00:02 < bridge> <Solly> do you not think that its in the way?
00:03 < bridge> <robyt3> No, it's supposed to be highly visible
00:03 < bridge> <Solly> but it is a filter?
00:03 < bridge> <Solly> and not ... that importnat
00:03 < bridge> <Solly> ddnet will be at the top anyway just due to player count
00:03 < bridge> <Solly> and kog
00:03 < bridge> <robyt3> And it's not visible on the individual community tabs so it doesn't take up space there
00:04 < bridge> <Solly> i dont use them i generally just filter
00:04 < bridge> <Solly> (but thats me)
00:04 < bridge> <Solly> but if u switch back and forth there is layout shift
00:04 < bridge> <Solly> if u switch back and forth there is layout shift
00:04 < bridge> <robyt3> It's up there instead of on the filter tab because it was previously not clear for players
00:05 < bridge> <Solly> there was previously a community filter?
00:05 < bridge> <Solly> i didnt notice evidently
00:05 < bridge> <Solly> i thought it was added at the same time communities got got their icons
00:05 < bridge> <robyt3> It went through some iterations in nightly or maybe one release version, not sure
00:06 < bridge> <Solly> i kinda skipped from no communities / verifications to where it is now
00:06 < bridge> <Solly> i like the icons
00:22 < bridge> <louis> the communities definitely feels out of place but i think a better solution involves refactoring the entire filter section (i've never used Server Address, and now we have two selections for Game Types, and i think a lot of these filter boxes can go into a collabsible 'advanced features' tab)
00:22 < bridge> <louis> as of now the communities box feels a little small and hard to navigate
00:22 < bridge> <Solly> i like them all being in one place w/o dropdowns or extra menus
00:22 < bridge> <Solly> i think the first type selection shgould be removed
00:23 < bridge> <louis> ye, but theres a tradeoff between the space for these filters and the space for the community list
00:23 < bridge> <Solly> as it is rn i dont think things need more space
00:23 < bridge> <louis> as of now it only shows 4 communities for me without scrolling. I'd rather it show more communities than have some useless boxes I never check
00:24 < bridge> <Solly> do u use more than the top 4 communities?
00:24 < bridge> <Solly> *idea*
00:24 < bridge> <louis> i use communities outside of the top 4 and there's no way to sort them
00:25 < bridge> <Solly> the type search box is to string search the type field right
00:25 < bridge> <Solly> but then the type list is a preset sort of thing (and also some special behaviour)
00:25 < bridge> <Solly> why not merge them
00:25 < bridge> <Solly> such that the type search box searches the types (in server list) and also the preset types (where if you click on one its updated in the search box)
00:25 < bridge> <Solly> same can be done with communities
00:26 < bridge> <Solly> oh no doesnt work u can select multiple types
00:26 < bridge> <louis> can you type your whole message before you press enter :pepeW:
00:28 < bridge> <Solly> no
00:28 < bridge> <Solly> because i dont think my whole sentance at once, it comes to me in parts
00:28 < bridge> <Solly> if i had done so the whole sentnace wouldve had to be different, since i realised my idea was a bit silly. but i still think that the whole combining string search and presets is a thing to consider
00:28 < bridge> <Solly> and thats too much effort
00:29 < bridge> <Solly> also some people like multiple short messages, so.. im not changing
00:29 < bridge> <Solly> (that concludes my ted talk)
00:29 < bridge> <Solly> #off-topic
00:30 < bridge> <Solly> (my fingers go faster than my mind woaaw)
00:30 < bridge> <Solly> also some people like multiple short messages, so.. im not changing. you should just acept me 4 who i am 😊
00:30 < bridge> <louis> when you type a bunch of short messages then go back on what you said it makes it harder to read and it means I'm less likely to understand the point you're trying to make. i probably type faster than you but i still type out my entire message before i hit enter :justatest:
00:31 < bridge> <Solly> holdon
00:31 < bridge> <louis> the game types search box can probably be moved inside the types box at the top anyways (and be scrollable along with the type box)
00:31 < bridge> <Solly> i have an image of me doing 150wpm which im really proud of
00:32 < bridge> <Solly> and i did it on a school keyboard
00:32 < bridge> <Solly> oh no doesnt work u can select multiple types
00:32 < bridge> <Solly> "oh no doesnt work u can select multiple types"
00:32 < bridge> <Solly> "oh no doesnt work u can select multiple types" - me
00:32 < bridge> <Solly> i have an image of me doing 150wpm which im really proud of (i cant reproduce it)
00:33 < bridge> <louis> ye, it'd need a button to toggle
00:33 < bridge> <louis> might be ugly
00:38 < bridge> <Solly> any1 know how to fix cmake errors
00:38 < bridge> <Solly> 😢
00:39 < bridge> <Solly> or warnings which make tests fail
00:44 < bridge> <Solly> i figured it out
00:44 < bridge> <Solly> i justhad to read a bit harder
00:50 < bridge> <Solly> ```rust
00:50 < bridge> <Solly> [  5%] Building CXX object CMakeFiles/rust-bridge-shared.dir/src/rust-bridge/engine/shared/rust_version.cpp.o
00:50 < bridge> <Solly> <command-line>: error: macro names must be identifiers
00:50 < bridge> <Solly> <command-line>: error: macro names must be identifiers
00:50 < bridge> <Solly> <command-line>: error: macro names must be identifiers
00:50 < bridge> <Solly> <command-line>: error: macro names must be identifiers
00:50 < bridge> <Solly> <command-line>: error: macro names must be identifiers
00:50 < bridge> <Solly> <command-line>: error: macro names must be identifiers
00:50 < bridge> <Solly> ```
00:50 < bridge> <Solly> uhhh
00:54 < bridge> <learath2> google broke firefox everyone responsible deserves capital punishment
00:54 < bridge> <Solly> google helped firefox stay alive
00:54 < bridge> <Solly> firefox was mismanaged
00:54 < bridge> <Solly> was my understanding
00:54 < bridge> <learath2> or atleast permajail
00:55 < bridge> <learath2> google services keep breaking on firefox (obviously to push people to chromelikes)
00:55 < bridge> <Solly> ah yes
00:55 < bridge> <Solly> they do that
00:57 < bridge> <Solly> the cmakefile is so poorly formatted jesus
00:57 < bridge> <Solly> 4 space indent, 2 space indent 1 space indent 8 space indent?
00:57 < bridge> <Solly> space imbetween Not and If? idk man
00:58 < bridge> <Solly> turns out my cmake formatter also sucks
00:58 < bridge> <Solly> and unindenting things breaks stuff
00:58 < bridge> <Solly> dman i didnt know cmakefiles were indent sensative x-x
01:06 < bridge> <totar> Mozilla killed Firefox by being poor, all the original developers are gone.
01:07 < bridge> <totar> Idk how much longer I'll be able to keep using it
01:07 < bridge> <Solly> ungoogled chromium!
01:07 < bridge> <Solly> because chromium is kinda just the better browser (having used both)
01:07 < bridge> <_voxeldoesart> what does this mean for the browser?
01:07 < bridge> <Solly> but id prefer is firefox doesnt die...
01:07 < bridge> <Solly> more than it is already dead
01:08 < bridge> <totar> I want a normal browser not something I have to fix every 6 months
01:08 < bridge> <Solly> theres full 0.7 skin support
01:08 < bridge> <Solly> https://cdn.discordapp.com/attachments/293493549758939136/1308222297194364978/image.png?ex=673d2875&is=673bd6f5&hm=eb6e36512ddc0ceca5eeb929ce4c590d1faa89d0ca939ab4e7e2e4dbbda23f11&
01:08 < bridge> <Solly> why is this tucked away to only when you are playing 0.7
01:08 < bridge> <totar> It's for 0.7 players I guess
01:09 < bridge> <Solly> yeah but i didnt know there was 0.7 support until i saw the config vars
01:09 < bridge> <Solly> i had never looked
01:09 < bridge> <Solly> i think it should be a tab
01:09 < bridge> <totar> it's recent
01:09 < bridge> <_voxeldoesart> thanks chiller
01:09 < bridge> <Solly> https://cdn.discordapp.com/attachments/293493549758939136/1308222542321942568/image.png?ex=673d28af&is=673bd72f&hm=747177294c3d0af829418e99b29060fd778583bf8ae5fa2ca45e297d5ff78990&
01:09 < bridge> <Solly> like this
01:09 < bridge> <Solly> i love 0.7 skins :)
01:09 < bridge> <Solly> like this
01:09 < bridge> <_voxeldoesart> like this
01:10 < bridge> <Solly> are ddnet servers ever going to support 0.7 skins?
01:10 < bridge> <totar> If 0.7 gets more popular it will probably get a bigger part of the client
01:10 < bridge> <Solly> haha no :)
01:10 < bridge> <Solly> but i like the skins
01:11 < bridge> <totar> I don't expect that 0.7 skins are planned or plan to be planned
01:11 < bridge> <Solly> aw
01:11 < bridge> <Solly> also theres weird padding in ur settings page
01:11 < bridge> <totar> where
01:11 < bridge> <Solly> https://cdn.discordapp.com/attachments/293493549758939136/1308223090567675924/image.png?ex=673d2932&is=673bd7b2&hm=7177fff148f94b0375234b039b8ee47529c05041c511ef903e3c103ac3a0a8e2&
01:11 < bridge> <totar> That is weird
01:11 < bridge> <Solly> https://cdn.discordapp.com/attachments/293493549758939136/1308223134633037834/image.png?ex=673d293c&is=673bd7bc&hm=da2365776cfe654ec2ddd7cf038de628dcf52ea06ee59741a180be34c94adeb2&
01:12 < bridge> <Solly> @totar can i make a pr ><
01:12 < bridge> <totar> Yes I'm not stopping you
01:13 < bridge> <Solly> yipee
01:13 < bridge> <totar> Just make sure it works with all the settings
01:13 < bridge> <Solly> ill try not to break it
01:14 < bridge> <Solly> would a pr to add 0.7 skin support be added
01:14 < bridge> <Solly> just be a sv config to turn it off
01:14 < bridge> <Solly> a cl config to send 0.7 skin instead
01:14 < bridge> <Solly> and server support to relay skins the same way it does for  0.6
01:14 < bridge> <Solly> just be a sv config to turn it off
01:14 < bridge> <Solly> a cl config to send 0.7 skin instead (if supported)
01:14 < bridge> <Solly> and server support to relay skins the same way it does for  0.6
02:08 < bridge> <Solly> how do i use hotreloading?
02:13 < bridge> <kebscs> 0.6 skins better
02:13 < bridge> <kebscs> login to rcon on local server
02:14 < bridge> <Solly> then what?
02:14 < bridge> <kebscs> change the map to the same as in editor
02:14 < bridge> <kebscs> and itll hot reload on save in editor
02:14 < bridge> <Solly> yeah but i like 0.7 skins, they are already in ur client, but server just doesnt send em
02:14 < bridge> <Solly> i meant hot reloading code
02:15 < bridge> <kebscs> idk
02:15 < bridge> <kebscs> never used hot reloading in vs
02:15 < bridge> <kebscs> it compiles fast enough for me
02:15 < bridge> <Solly> yeah but im doing incremental changes
02:15 < bridge> <Solly> so bit annoying
02:15 < bridge> <Solly> to compile (takes 5s or so), open, *wait*, navigate to where im looking (takes another 5s)
02:16 < bridge> <Solly> well its more that im converting alot of code
02:16 < bridge> <kebscs> for values i was adding a test config value
02:16 < bridge> <Solly> and im doing it in small chunks to make sure i dont mess up
02:31 < ws-client> <ChillerDragon> @fokkonaut i dont think he rq. why?
02:42 < ws-client> <ChillerDragon> @Solly ddnet servers support 0.7 skins if you connect from 0.7
02:49 < bridge> <Solly> who do i ping to ping you? do i just type @chillerdragon
02:49 < bridge> <Solly> oh it... pinged the discord one
02:50 < bridge> <Solly> i didnt do that on purpose
02:50 < bridge> <Solly> but ive never seen a 0.7 skin?
02:50 < bridge> <totar> Just type his name
02:50 < bridge> <totar> He is like voldemort
02:50 < bridge> <Solly> i already used voldermort
02:51 < bridge> <Solly> for the client that shant be named
02:51 < bridge> <Solly> the devil is the only other thing which seems to appear when you talk about them (speak of the devil)
02:52 < bridge> <Solly> and the devil, despite never being caught doing bad things feels more evil than voldermort who has on multiple occasions murdered people and also wants to kill a child for 7 books
02:52 < bridge> <Solly> and the devil, despite never being caught doing bad things, feels more evil than voldermort who has on multiple occasions murdered people and also wants to kill a child for 7 books
02:53 < bridge> <Solly> https://cdn.discordapp.com/attachments/293493549758939136/1308248640174821436/image.png?ex=673d40fd&is=673bef7d&hm=8a6372864a41122572ffff4a40dfebacd48576b52392a3ce4325563bab57a468&
02:53 < bridge> <Solly> https://cdn.discordapp.com/attachments/293493549758939136/1308248679798538320/image.png?ex=673d4107&is=673bef87&hm=92d2046804a6e3107741e0e0d828ee61c46849c2e56687a1631542c0942e19e7&
02:53 < bridge> <Solly> i wouldnt call that support
02:54 < bridge> <Solly> can other 0.7 clients see 0.7 skins
02:54 < bridge> <Solly> im pullling out the 5th desktop for this one jeez
02:54 < bridge> <Solly> yes
02:54 < bridge> <Solly> https://cdn.discordapp.com/attachments/293493549758939136/1308249026486861824/image.png?ex=673d415a&is=673befda&hm=1d4585afb188ebc6c31fe82dc7b387809632545827817e3d341eef050841964a&
03:59 < ws-client> <ChillerDragon> @Solly you can ping me by writing my name with @ or without https://zillyhuhn.com/cs/.1731985143.png
03:59 < ws-client> <ChillerDragon> @Solly you probably never saw a 0.7 skin because you always play 0.6
04:15 < bridge> <Solly> the 0.7 skins dont show properly on ddnet
04:16 < bridge> <Solly> and i dont think it would be that hard to change
04:17 < bridge> <Solly> @chillerdragon if youre still awake... how do you do scrolling
04:18 < bridge> <Solly> ```
04:18 < bridge> <Solly> static CScrollRegion s_ScrollRegion;
04:18 < bridge> <Solly>         vec2 ScrollOffset(0.0f, 0.0f);
04:18 < bridge> <Solly>         CScrollRegionParams ScrollParams;
04:18 < bridge> <Solly>         ScrollParams.m_ScrollUnit = 120.0f;
04:18 < bridge> <Solly>         ScrollParams.m_SliderMinHeight = 500.0f;
04:18 < bridge> <Solly>         s_ScrollRegion.Begin(&MainView, &ScrollOffset, &ScrollParams);
04:18 < bridge> <Solly>         MainView.y += ScrollOffset.y;
04:18 < bridge> <Solly> ```
04:18 < bridge> <Solly> 
04:18 < bridge> <Solly> then scrollregion.addrect(??)
04:18 < bridge> <woidless> This is the first time I've seen what a discord looks like from the ChillerDragon side
04:18 < bridge> <Solly> lmao
04:30 < bridge> <Solly> i forgo to do .end
04:52 < bridge> <Solly> TEXTALIGN_ML or TEXTALIGN_LEFT
05:35 < bridge> <Solly> ```
05:35 < bridge> <Solly>     // this is kinda slow, but whatever
05:35 < bridge> <Solly>     for(auto &Key : gs_aKeys)
05:35 < bridge> <Solly>         Key.m_KeyId = Key.m_ModifierCombination = 0;
05:35 < bridge> <Solly> 
05:36 < bridge> <Solly>     for(int Mod = 0; Mod < CBinds::MODIFIER_COMBINATION_COUNT; Mod++)
05:36 < bridge> <Solly>     {
05:36 < bridge> <Solly>         for(int KeyId = 0; KeyId < KEY_LAST; KeyId++)
05:36 < bridge> <Solly>         {
05:36 < bridge> <Solly>             const char *pBind = m_pClient->m_Binds.Get(KeyId, Mod);
05:36 < bridge> <Solly>             if(!pBind[0])
05:36 < bridge> <Solly>                 continue;
05:36 < bridge> <Solly> 
05:36 < bridge> <Solly>             for(auto &Key : gs_aKeys)
05:36 < bridge> <Solly>                 if(str_comp(pBind, Key.m_pCommand) == 0)
05:36 < bridge> <Solly>                 {
05:36 < bridge> <Solly>                     Key.m_KeyId = KeyId;
05:36 < bridge> <Solly>                     Key.m_ModifierCombination = Mod;
05:36 < bridge> <Solly>                     break;
05:36 < bridge> <Solly>                 }
05:36 < bridge> <Solly>         }
05:36 < bridge> <Solly>     }
05:36 < bridge> <Solly> ```
05:36 < bridge> <Solly> oh dear
06:52 < bridge> <Solly> TEXTALIGN_MIDDLE doesnt work
07:52 < bridge> <x1lenix> tell me why is my custom client after compiling is crashing when i want to connect any server
07:53 < bridge> <kollpotato> u broke something
07:54 < bridge> <x1lenix> moreover, I just installed the ddnet master and threw in the library
07:54 < bridge> <x1lenix> After that, he complimented
07:54 < bridge> <x1lenix> I didn't even touch anything.
08:04 < bridge> <kollpotato> i cant help you without any information about crashes
08:15 < bridge> <Solly> when people say crashing its normally assert failure or seg fault. as you havent provided a dbg msg its probably a segfault
08:15 < bridge> <Solly> you can catch all segfaults by using asan
08:15 < bridge> <Solly> the readme in https://github.com/ddnet/ddnet tells u how to enable it
08:15 < bridge> <Solly> when people say crashing its normally assert failure or seg fault. as you havent provided a dbg msg its probably a segfault
08:15 < bridge> <Solly> you can catch all segfaults by using asan
08:15 < bridge> <Solly> the readme in <https://github.com/ddnet/ddnet> tells u how to enable it
08:17 < bridge> <Solly> font size in ddnet is varying between 12, 13 and 14, and its not noticeable at all
08:17 < bridge> <Solly> but really annoying
10:56 < bridge> <robyt3> Always use the constants that specify both vertical and horizontal like `TEXTALIGN_MC`, never use the constants that only specify one (except with good reason)
11:09 < bridge> <Solly> mmk its just tater had lots of _left
11:09 < bridge> <Solly> and i got confused
11:17 < bridge> <Assa> just fixed a compiler issue by updating cmake, i can't believe it
16:04 < bridge> <ryozuki> @jupeyy_keks https://jvernay.fr/en/blog/skyline-2d-packer/implementation/
16:45 < bridge> <ryozuki> https://en.wikipedia.org/wiki/Whitening_transformation
16:50 < bridge> <inv41idu53rn4m3> Has linear algebra gone too far?
16:51 < bridge> <ryozuki> xd
17:25 < bridge> <Solly> [yes](https://yuxinchen2020.github.io/ele520_math_data/lectures/randomized_linear_algebra.pdf)
17:27 < bridge> <inv41idu53rn4m3> Oh yeah I remember hearing about something like this, where through some fancy trick + some randomness you can do matrix multiplication faster
17:33 < bridge> <Solly> I think it was solving inverses through iterative method were randomness would either speed up convergence or skip local minima
17:33 < bridge> <Solly> Rtfp (read the fucking paper)
18:05 < bridge> <zhn> https://cdn.discordapp.com/attachments/293493549758939136/1308478278654365726/image.png?ex=673e16db&is=673cc55b&hm=44e7a26c3986c612d8c7d70ea238c023a6cca1048e9e305c99036bb2654c138f&
18:21 < bridge> <learath2> lolwat
18:22 < bridge> <totar> I don't think this is that bad
18:23 < bridge> <totar> If you need a local sqlite on the client you can also upload it to postgres to query on your server
18:25 < bridge> <learath2> I mean maaaybe useful if you can have queries that can reach within the sqlite sub-db, like with jsonb columns
18:34 < bridge> <woidless> https://cdn.discordapp.com/attachments/293493549758939136/1308485543532822578/Screenshot_2024-11-19-22-33-56-009_org.ddnet.client.png?ex=673e1da0&is=673ccc20&hm=c4e8469d0db3ddae5079bde2b190665d33ff4d1070fe18a20f08eca654c0a503&
18:34 < bridge> <woidless> 256 players... how?
18:35 < bridge> <inv41idu53rn4m3> *magic*
18:36 < bridge> <meloÆž> i dont even want to imagine how ugly it looks... - it's easy to set it up, but it will just look and probably feel bad
18:57 < bridge> <learath2> Some just lie about it (which is against the masterserver rules)
18:57 < bridge> <learath2> Or someone actually did spend the time to extend the 128p patch to a 256p patch
20:06 < bridge> <0xfaulty> @heinrich5991 here is another attempt to request an increase in the size of the JSON accepted by the master server to 32KB. Currently, if I don't send the skin, send an empty clan, and set the score to zero, I can fit about 134 players. Without these tricks, the maximum is around 89 players. The remaining fields are mandatory and cannot be removed; otherwise, the client will drop the server information. I plan to compress the JSON later by removin
20:06 < bridge> <0xfaulty> 
20:07 < bridge> <0xfaulty> I made approximate calculations without considering the JSON limitations, focusing more on the size of server data:
20:07 < bridge> <0xfaulty> 
20:07 < bridge> <0xfaulty> Approximate maximum size of server information: 410 bytes
20:07 < bridge> <0xfaulty> Approximate maximum size of information per player: 256 bytes
20:07 < bridge> <0xfaulty> 
20:07 < bridge> <0xfaulty> Thus, in the maximum case:
20:07 < bridge> <0xfaulty> 
20:07 < bridge> <0xfaulty> 64 players: 410 + 256 * 64 = 16,794 bytes
20:07 < bridge> <0xfaulty> 128 players: 33,178 bytes
20:07 < bridge> <0xfaulty> 256 players: 65,949 bytes
20:07 < bridge> <0xfaulty> 
20:07 < bridge> <0xfaulty> If compression is applied:
20:07 < bridge> <0xfaulty> 
20:07 < bridge> <0xfaulty> 64 players: 13,209 bytes (345 + 201 * 64)
20:07 < bridge> <0xfaulty> 128 players: 26,073 bytes
20:07 < bridge> <0xfaulty> 256 players: 51,801 bytes
20:07 < bridge> <0xfaulty> 
20:07 < bridge> <0xfaulty> Since the client sorts players by score, I can optimize this by sorting on the server side and sending, for example, only the top 64 players with skins, while the rest are sent without skins. This could reduce the information for 256 players to 35,162 bytes (410 + 12,864 + 21,888). If only 32 skins are sent, the total would be 32,378 bytes.
20:07 < bridge> <0xfaulty> Samples:
20:07 < bridge> <0xfaulty> ```json
20:07 < bridge> <0xfaulty> {
20:07 < bridge> <0xfaulty>   "max_clients": 256,
20:07 < bridge> <0xfaulty>   "max_players": 256,
20:07 < bridge> <0xfaulty>   "passworded": false,
20:07 < bridge> <0xfaulty>   "game_type": "XXXXXXXXXXXXX",
20:07 < bridge> <0xfaulty>   "name": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
20:07 < bridge> <0xfaulty>   "map": {
20:07 < bridge> <0xfaulty>     "name": "XXXXXXXXXXXXXXXX",
20:08 < bridge> <0xfaulty>     "sha256": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
20:08 < bridge> <0xfaulty>     "size": 1111111
20:08 < bridge> <0xfaulty>   },
20:08 < bridge> <0xfaulty>   "version": "XXXXXXXXXXXXX",
20:08 < bridge> <0xfaulty>   "client_score_kind": "XXXXXX",
20:08 < bridge> <0xfaulty>   "requires_login": false,
20:08 < bridge> <0xfaulty>   "clients": [
20:08 < bridge> <0xfaulty>   ]
20:08 < bridge> <0xfaulty> }
20:08 < bridge> <0xfaulty> ```
20:08 < bridge> <0xfaulty> 
20:08 < bridge> <0xfaulty> ```json
20:08 < bridge> <0xfaulty> {
20:08 < bridge> <0xfaulty>   "name": "XXXXXXXXXXXXXXX",
20:08 < bridge> <0xfaulty>   "clan": "XXXXXXXXXXX",
20:08 < bridge> <0xfaulty>   "country": 111,
20:08 < bridge> <0xfaulty>   "score": 11111,
20:08 < bridge> <0xfaulty>   "is_player": false,
20:08 < bridge> <0xfaulty>   "skin": {
20:08 < bridge> <0xfaulty>     "name": "XXXXXXXXXXXXXXXXXXXXXXXX",
20:08 < bridge> <0xfaulty>     "color_body": 11111111,
20:08 < bridge> <0xfaulty> translation magic
20:30 < bridge> <0xfaulty> I think I'll create issue on github to not lose conversation details
20:53 < bridge> <kollpotato> use protocol buffers when :nouis:
20:53 < bridge> <kollpotato> (this comment was not sponsored by google)