00:00 <+bridge> [ddnet] I doubt that, I think we added something specific to steam 00:01 <+bridge> [ddnet] On Steam we disabled autoupdater 00:02 <+bridge> [ddnet] and to be fair, autoupdaters are basically the same as malware since they load random code from the internet and execute it 00:04 <+bridge> [ddnet] Is web browser a ransomware? ๐Ÿ˜„ 00:04 <+bridge> [ddnet] no, but enjoy adware 00:04 <+bridge> [ddnet] except google chrome 00:05 <+bridge> [ddnet] autoupdaters are great attack vectors actually 00:05 <+bridge> [ddnet] just need to compromise one badly secured autoupdate server 00:05 <+bridge> [ddnet] Is web browser a malmware? ๐Ÿ˜„ 00:07 <+bridge> [ddnet] which probably needs at least control over the network 00:07 <+bridge> [ddnet] so unsecured wifi somewhere 00:07 <+bridge> [ddnet] Arent website suffer from the same problem? 00:08 <+bridge> [ddnet] or someone misplacing a private key 00:09 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> Well mitm attack is also possible so I see why certificate is important 00:09 <+bridge> [ddnet] It might be a good idea to sign our releases actually now that I think about it 00:09 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> In web it's tls 00:09 <+bridge> [ddnet] @Learath2 even with a private key, you still need contrl over the network 00:10 <+bridge> [ddnet] A sha sum of every file, which we can sign with a key, so if someone compromises ddnet.tw they can't deploy ransomware 00:10 <+bridge> [ddnet] @hein? 00:10 <+bridge> [ddnet] wtf discord, anyway, @heinrich5991 say I leak my private key accidentally, someone could use that to deploy an update on ddnet.tw 00:11 <+bridge> [ddnet] don't need control over the network if you can compromise the source 00:11 <+bridge> [ddnet] yes, true 00:11 <+bridge> [ddnet] but you need one more thing 00:12 <+bridge> [ddnet] in web it's also CORS exploits 00:13 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> But you can fool server with disabled cors just by modifying request headers? 00:14 <+bridge> [ddnet] I don't think CORS is relevant here, there is no cross origin request being done to the update server, nor would such a request ever expose private information as the update server only hosts public information 00:15 <+bridge> [ddnet] mitm we already mitigate with having TLS 00:15 <+bridge> [ddnet] If we also start signing the things we host, compromising the source wouldn't be a concern either 00:16 <+bridge> [ddnet] would have to make sure to not lose the signing keys 00:16 <+bridge> [ddnet] A smartcard is the only sane choice for that 00:16 <+bridge> [ddnet] can get lost, get broken 00:16 <+bridge> [ddnet] need a backup 00:16 <+bridge> [ddnet] 2 smartcards? 00:16 <+bridge> [ddnet] backup smartcard that i 00:16 <+bridge> [ddnet] s 00:16 <+bridge> [ddnet] yes 00:16 <+bridge> [ddnet] maybe 3, we can all keep one and feel cool ๐Ÿ˜„ 00:17 <+bridge> [ddnet] the question is: what is likelier 00:17 <+bridge> [ddnet] A split custody setup where 2 out of 3 signing keys are required to do a release, like in the movies 00:17 <+bridge> [ddnet] we mess something up and lose the signing keys 00:17 <+bridge> [ddnet] or we mess something up and someone ships malware 00:18 <+bridge> [ddnet] Losing signing keys isn't the end, we can always just say in news that they should get a new copy ๐Ÿ˜„ 00:19 <+bridge> [ddnet] โ€ฆ ๐Ÿ˜„ 00:19 <+bridge> [ddnet] that also demonstrates the security of them? ^^ 00:19 <+bridge> [ddnet] the extra security 00:20 <+bridge> [ddnet] What are the odds of 2 of us losing keys though? 00:20 <+bridge> [ddnet] I guess an attacker could always say in news that we lost the keys :/ 00:20 <+bridge> [ddnet] Lets sign the news too 00:21 <+bridge> [ddnet] I guess it could give us some delay 00:21 <+bridge> [ddnet] I just wanted to feel cool with a smartcard reader ๐Ÿ˜ฆ 00:21 <+bridge> [ddnet] I need a reason to buy one 00:22 <+bridge> [ddnet] don't the cool kids have dedicated devices for that? 00:22 <+bridge> [ddnet] yubikey or sth? 00:22 <+bridge> [ddnet] already have a yubikey, though I use if more for u2f 00:24 <+bridge> [ddnet] @deen I don't think you can check for bans later, won't that allocate a slot for banned people? 00:29 <+bridge> [ddnet] I didn't try. I hoped they'd get insta-kicked 00:29 <+bridge> [ddnet] Maybe we can optimize IsBanned instead 00:30 <+bridge> [ddnet] If we only allow ban ranges of proper subnet masks it should be cheaper to check those 00:31 <+bridge> [ddnet] Though we only have a handful of ban ranges if any, that loop should end rather quickly anyway 00:31 <+bridge> [ddnet] In my case the ban list was empty btw 00:32 <+bridge> [ddnet] <แถฐยฐKonองsti> lifeban Tsin :justatest: 00:34 <+bridge> [ddnet] our ban list has very little entries, probably? 00:34 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> Can ip ban list be implemented on network stack? Like iptables or something 00:36 <+bridge> [ddnet] That's a very odd function, the hash looks absolutely massive 00:36 <+bridge> [ddnet] gameserver bans are for stuff like votes, moderating servers 00:36 <+bridge> [ddnet] having a ban list in the server is nice for displaying error messages 00:37 <+bridge> [ddnet] <แถฐยฐKonองsti> can u actually lose control over DDNet 00:37 <+bridge> [ddnet] `CNetHash aHash[17];`ย is 136 bytes 00:40 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> BTW, why someone ddos servers? Like what's the point of it? 00:40 <+bridge> [ddnet] dont ask us lol xD 00:41 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> I guess that's the reason why I can't connect using my VPN 00:42 <+bridge> [ddnet] How about storing the ips in a trie instead of a hashmap? 00:42 <+bridge> [ddnet] Or just putting everything in a sorted array and doing binary search? 00:43 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> I've seen ip storaging in trees in some devops tool 00:43 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> It's pretty efficient 00:45 <+bridge> [ddnet] For the record, nftables and iptables just evaluates each rule one by one, so even a linear search is performant enough 00:47 <+bridge> [ddnet] I think our list might just be short enough for linear search 00:47 <+bridge> [ddnet] (and we don't need in order checking like nf/iptables, we can do binary search too) 00:48 <+bridge> [ddnet] unclear if binsearch is faster 00:48 <+bridge> [ddnet] it can't possibly be slower, can it? 00:48 <+bridge> [ddnet] atleast in the average case 00:49 <+bridge> [ddnet] can, misprediction 00:49 <+bridge> [ddnet] ah the branch predictor, hm 00:51 <+bridge> [ddnet] can also use simd to check more in parallel 00:51 <+bridge> [ddnet] although I had a bad simd performance story recently 00:52 <+bridge> [ddnet] but I think for this usecase it would be fine 00:54 <+bridge> [ddnet] Whatever we use, I think this ad-hoc implementation of a hashmap is far from ideal and I'm fairly certain a hashmap isn't even the best thing to use here 00:55 <+bridge> [ddnet] branchless binary search? ๐Ÿ˜„ 00:56 <+bridge> [ddnet] at like 16 bans 00:56 <+bridge> [ddnet] you can probably check them in what 00:56 <+bridge> [ddnet] 16 instructions? 00:56 <+bridge> [ddnet] if you lay them out nicely 00:58 <+bridge> [ddnet] How? The best I can think of is 32 instructions 00:58 <+bridge> [ddnet] 2 * 16 + 2 to make it loop 34 actually 01:01 <+bridge> [ddnet] load 4 bans into xmm register, load 4 masks into ymm register, and ip, ymm, xmm == ymm 01:01 <+bridge> [ddnet] load 4 bans into xmm register; load 4 masks into ymm register; and ip, ymm; xmm == ymm 01:01 <+bridge> [ddnet] + a branch 01:02 <+bridge> [ddnet] with 256bit registers, you get it down to 16 instructions 01:02 <+bridge> [ddnet] Ah with simd, yeah I guess 01:07 <+bridge> [ddnet] We could also keep range and normal bans separate. Then it's just `and ip, xmm; makesureallcomponentsarenonzero xmm;` 01:07 <+bridge> [ddnet] there is probably an instruction for that nowadays ๐Ÿ˜„ 01:08 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> How to get into development? I know cpp a bit 01:08 <+bridge> [ddnet] @ะะฝะดั€ะตะน ะ ัƒะดะพะน have you tried compiling ddnet? 01:08 <+bridge> [ddnet] We have an extensive issue tracker with 100s of issues to choose from ๐Ÿ™‚ 01:08 <+bridge> [ddnet] if you need help with compiling, just ask in this chat 01:08 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> Not yet 01:08 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> > @ะะฝะดั€ะตะน ะ ัƒะดะพะน have you tried compiling ddnet? 01:08 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> @heinrich5991 01:09 <+bridge> [ddnet] once you can compile, you can change something small; if that works, you can take a look at github 01:09 <+bridge> [ddnet] that's what we use for development 01:09 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> Ok, but how to know if issue is constructive? Have all of them been reviewed or smth? 01:09 <+bridge> [ddnet] anyone can suggest changes there 01:09 <+bridge> [ddnet] no 01:09 <+bridge> [ddnet] things that clearly sound like bugs are always okay to fix 01:10 <+bridge> [ddnet] for feature requests, better ask in this channel or on the issue tracker first 01:13 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> Okay, I will ask when I get some problems 01:13 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> Okay, I will ask when I get some problems 01:14 <+bridge> [ddnet] ๐Ÿ‘ 01:14 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> Did I duplicate the same message? 01:14 <+bridge> [ddnet] yes 01:14 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> Lol, looks like I've immediately got some networking problems 01:45 <+bridge> [ddnet] @heinrich5991 have a minute? 01:46 <+bridge> [ddnet] yes 01:47 <+bridge> [ddnet] https://github.com/ddnet/ddnet/pull/2738/checks?check_run_id=1072423768 can you see why this fails? 01:47 <+bridge> [ddnet] I don't see a qualifier being discarded anywhere 01:48 <+bridge> [ddnet] Ah, the function itself is const 01:48 <+bridge> [ddnet] gm 01:48 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/753039169554612284/rubber-duck.png 01:49 <+bridge> [ddnet] Follow up question, how best to fix that? I mean I can remove the qualifier, but ::find_binary doesn't really change the data anyway 01:49 <+bridge> [ddnet] it's a defect of c++ and matricks' tl 01:49 <+bridge> [ddnet] only matricks' tl? 01:50 <+bridge> [ddnet] the stl implementation of binary_search doesn't have the same issue 01:51 <+bridge> [ddnet] I meant that it's only an issue of matricks' tl, not of C++ 01:51 <+bridge> [ddnet] you could change matricks TL library to be const-aware 01:52 <+bridge> [ddnet] C++ has a bit of an issue with qualifiers anyway 01:52 <+bridge> [ddnet] or we could use std::vector instead 01:52 <+bridge> [ddnet] or you cast it away 01:52 <+bridge> [ddnet] it's not even UB 01:53 <+bridge> [ddnet] As long as you don't actually modify it through that reference ๐Ÿ˜„ 01:53 <+bridge> [ddnet] not even that is UB 01:54 <+bridge> [ddnet] the only thing that matters is what the actual thing the pointer points to is declared as 01:54 <+bridge> [ddnet] the const on pointers is a guideline for mere mortals 01:54 <+bridge> [ddnet] How sure are you? 01:54 <+bridge> [ddnet] pretty 01:54 <+bridge> [ddnet] let's find some references 01:55 <+bridge> [ddnet] https://stackoverflow.com/questions/771100/changing-the-value-of-a-const-pointer 01:55 <+bridge> [ddnet] stackoverflow says I'm right 01:55 <+bridge> [ddnet] > Your assignment expression may or may not be undefined behavior. It is permitted to cast away constness if the object actually pointed to is not const. 01:58 <+bridge> [ddnet] c++11 5.2.11p7 "[Note:Depending on the type of the object, a write operation through the pointer, lvalue or pointer to data member resulting from aconst_cast that casts away a const-qualifier(75) may produce undefined behavior (7.1.6.1).โ€” end note]" 01:58 <+bridge> [ddnet] I guess as long as the actual object it points to isn't const, it's fine 02:00 <+bridge> [ddnet] Anyway, I'll just remove the const qualification of the function 02:00 <+bridge> [ddnet] Doubt it allows any major optimization anyway 02:01 <+bridge> [ddnet] const doesn't allow for optimizations 02:01 <+bridge> [ddnet] due to the fact mentioned above 02:01 <+bridge> [ddnet] (const on pointers) 02:04 <+bridge> [ddnet] I wouldn't be so sure, but I'm too tired to research, so I'll just take your word for it 02:06 <+bridge> [ddnet] We should get a new qualifier, "iseriouslymeanitconst" 02:06 <+bridge> [ddnet] https://theartofmachinery.com/2019/08/12/c_const_isnt_for_performance.html second link from google 02:07 <+bridge> [ddnet] although that one isn't based on the C standard but on actual compilers 02:07 <+bridge> [ddnet] you can have that in rust btw ๐Ÿ˜„ 02:08 <+bridge> [ddnet] data behind &-references is guaranteed not to change (unless it contains a type with interior mutability, which is explicitly marked for the compiler) 02:10 <+bridge> [ddnet] Someone should make a human friendly version of rust we mere mortals can use 02:12 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> Is it possible to compile client to Android? 02:14 <+bridge> [ddnet] no, not anymore 02:34 <+bridge> [ddnet] @heinrich5991 what about to get rid of CFGFLAG_TEST. Mark them by CFGFLAG_GAME instead. 02:34 <+bridge> [ddnet] CFGFLAG_GAME will prevent it from being executed (if sv_test_cmds was set) as you requested. 02:34 <+bridge> [ddnet] The only downside I see is possibility to add them into map config but should we care about it? 02:34 <+bridge> [ddnet] @heinrich5991 what about to get rid of CFGFLAG_TEST. Mark them by CFGFLAG_GAME instead. 02:34 <+bridge> [ddnet] CFGFLAG_GAME will prevent them from being executed (if sv_test_cmds was set) as you requested. 02:34 <+bridge> [ddnet] The only downside I see is possibility to add them into map config but should we care about it? 02:34 <+bridge> [ddnet] @heinrich5991 what about to get rid of CFGFLAG_TEST. Mark them by CFGFLAG_GAME instead. 02:34 <+bridge> [ddnet] CFGFLAG_GAME will prevent them from being executed (if sv_test_cmds was not set) as you requested. 02:34 <+bridge> [ddnet] The only downside I see is possibility to add them into map config but should we care about it? 02:36 <+bridge> [ddnet] The reason behind: to me CFGFLAG_GAME means "this command affects gameplay". So we should mark commands like "tele, shotgun" by CFGFLAG_GAME 02:39 <+bridge> [ddnet] we might introduce CFGFLAG_NOMAPCFG or something. But with CFGFLAG_TEST I have no idea how to understand these flags and how to mark without marking a lot of commadns by both of em 02:39 <+bridge> [ddnet] we might introduce CFGFLAG_NOMAPCFG or something (if ever need). But with CFGFLAG_TEST I have no idea how to understand these flags and how to mark without marking a lot of commadns by both of em 02:41 <+bridge> [ddnet] hm. might be possible, at the expense of less meaningful error messages 02:41 <+bridge> [ddnet] one could just leave the flags as either GAME or TEST though 02:42 <+bridge> [ddnet] that would make it easy to see which to apply 09:20 <+bridge> [ddnet] > Someone should make a human friendly version of rust we mere mortals can use 09:20 <+bridge> [ddnet] @Learath2 :tee_thinking: 16:06 <+bridge> [ddnet] why is entities.png still staying in data/mapres? 16:26 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/753260011194679406/Kobra_2_2020-09-09_16-21-23.demo 16:26 <+bridge> [ddnet] Since when you can bug thru doors without even actually moving, but just using hook? 16:46 <+bridge> [ddnet] I don't think we changed the physics there, so since forever I guess? 16:52 <+bridge> [ddnet] I've been noticing client freezes more often lately 16:52 <+bridge> [ddnet] anyone else? 16:52 <+bridge> [ddnet] might that have something to do with the steam lib? 16:52 <+bridge> [ddnet] I guess I need to benchmark the missed frames 16:53 <+bridge> [ddnet] There is another Kobra map where u can just go through the lasers without deactivating them 17:01 <+bridge> [ddnet] @heinrich5991 haven't noticed, but I haven't played, only watched 17:02 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> I try to compile project, but that's what I get `CMake Error: The following variables are used in this project, but they are set to NOTFOUND.` 17:02 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> `...` 17:02 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> `OPUSFILE_LIBRARY (ADVANCED)` 17:02 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> Oh I see, I don't have sqlite, opus, ogg and some more 17:03 <+bridge> [ddnet] @TIC only if you disable half of them, and go thru on ~45 degree 17:03 <+bridge> [ddnet] @ะะฝะดั€ะตะน ะ ัƒะดะพะน which OS are you on? 17:03 <+bridge> [ddnet] linux? windows? 17:03 <+bridge> [ddnet] we have some guides for dependencies at https://github.com/ddnet/ddnet/ 17:03 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> Linux. Sorry, prerequisites were after installation instruction 17:03 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> So I didn't see it 17:04 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> but now I do 17:04 <+bridge> [ddnet] nice ๐Ÿ‘ 17:05 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> Well, after installation of all required libraries, cmake can't find `ddnet/SQLite3_INCLUDEDIR` 17:08 <+bridge> [ddnet] did you try removing CMakeCache.txt and CMakeFiles? 17:08 <+bridge> [ddnet] to get a clean cmake build 17:14 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> Thanks. 17:14 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> > did you try removing CMakeCache.txt and CMakeFiles? 17:14 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> @deen 18:24 <+bridge> [ddnet] @Learath2 can one configure clang-format to not put spaces around bitwise operations? 18:27 <+bridge> [ddnet] I don't see it in the docs 18:27 <+bridge> [ddnet] accept that clang-format puts spaces around bitwise operators? creates quite a diff 18:28 <+bridge> [ddnet] It will create quite a diff either way, no? 18:28 <+bridge> [ddnet] I'm trying to minimize it currently 18:57 <+bridge> [ddnet] Not exactly as trivial as I hoped to change the bans into a linear search 18:58 <+bridge> [ddnet] Well I guess it is simple but I also wanted to start storing them as NETADDR and NETMASK pairs 18:58 <+bridge> [ddnet] ips being stored as an array of 16 bytes is a bit of an issue 19:00 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> I don't have an icon on Ubuntu xd 19:00 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> https://cdn.discordapp.com/attachments/293493549758939136/753298771160465478/unknown.png 19:00 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> Steam version 19:04 <+bridge> [ddnet] Hm, not sure where we have to provide that icon for it to work 19:04 <+bridge> [ddnet] in steamworks settings, somewhere 19:04 <+bridge> [ddnet] but I thought we provide it 19:05 <+bridge> [ddnet] The application file usually provides it and I'd think that'd be generated by steam in this case 19:05 <+bridge> [ddnet] mach-o and elf are both missing a nice way to include icons 19:05 <+bridge> [ddnet] stuff pinned there is probably desktop files 19:05 <+bridge> [ddnet] which include support for icons 19:07 <+bridge> [ddnet] linux desktop files and macOS bundles are such ugly ways of doing this 19:08 <+bridge> [ddnet] This is one thing windows got right in their COFF extensions, the metadata being inside the executable 19:10 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> Do I understand right, that antibot should be used by ABI and is private for each server? 19:10 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> Do I understand correctly, that antibot should be used by ABI and is private for each server? 19:10 <+bridge> [ddnet] yes, it's an extension mechanism 19:11 <+bridge> [ddnet] @onby wanted to try his private antibot mechanism on ddnet servers which is why I introduced that abstraction 19:11 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> Private means he wrote some logic to filter bots for his own servers? 19:12 <+bridge> [ddnet] private means he didn't want to publish the code 19:12 <+bridge> [ddnet] it also runs on official servers now 19:12 <+bridge> [ddnet] for reference @Learath2, "quickly adding clang-format" already cost me ~6 hours today ๐Ÿ˜‰ 19:13 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> If I want to implement my own antibot, what can I read about ABI communication? I'm pretty new to this, so only understood in general how this extension mechanism works 19:13 <+bridge> [ddnet] Apparently we forgot Mac and Linux icons 19:13 <+bridge> [ddnet] oops 19:13 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> also maybe there are public bots to research them? 19:14 <+bridge> [ddnet] @ะะฝะดั€ะตะน ะ ัƒะดะพะน I'll go eat something now. if the question is stil open afterwards, I can answer it. ping me again in one/two hours or so 19:15 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> Okay 19:15 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> > Apparently we forgot Mac and Linux icons 19:15 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> @deen may I open issue for this on GH? 19:16 <+bridge> [ddnet] Not really necessary 19:16 <+bridge> [ddnet] I'll fix it later today 19:28 <+bridge> [ddnet] I have been downloading something for the past hour, the stupid computer went to sleep when I went to the bathroom and the site doesn't support resumption 19:30 <+bridge> [ddnet] I guess the only option is to cry myself to sleep 19:40 <+bridge> [ddnet] <ะะฝะดั€ะตะน ะ ัƒะดะพะน> What is your setup to develop DDnet client? Like IDE, maybe some specific configs, building flags etc 19:41 <+bridge> [ddnet] I use vscode and the only build flag I really use is `-DCMAKE_BUILD_TYPE=Debug` and `-GNinja` 19:42 <+bridge> [ddnet] You really don't need much though, C and C++(atleast the way we use it) are beautiful that way, you don't need an IDE to code, they are simple enough languages 20:02 <+bridge> [ddnet] neovim with coc.nvim and cmake with `cmake .. -GNinja -DMYSQL=ON -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DVIDEORECORDER=ON -DSTEAM=ON` 20:02 <+bridge> [ddnet] I was looking into coc.nvim yesterday, it looks so unvim ๐Ÿ˜„ 20:02 <+bridge> [ddnet] there should be a flag to enable all flags 20:03 <+bridge> [ddnet] coc.nvim is god bless 20:03 <+bridge> [ddnet] but coming from u i expected nothing less 20:03 <+bridge> [ddnet] unreasonable hate for everything 20:04 <+bridge> [ddnet] Well obviously not everything 20:04 <+bridge> [ddnet] ha i doubt 20:04 <+bridge> [ddnet] and unreasonable is in your obviously not so humble opinion ๐Ÿ˜› 20:04 <+bridge> [ddnet] :nouis: 20:07 <+bridge> [ddnet] i also haven't icon on windows steam ddnet client 20:22 <+bridge> [ddnet] @ะะฝะดั€ะตะน ะ ัƒะดะพะน for implementing your own antibot, you could also just fill out antibot_null.cpp 20:24 <+bridge> [ddnet] NETADDR is quite meh, using 16 bytes for even ipv4 addresses 20:25 <+bridge> [ddnet] @Learath2 I think I'd do it the same way 20:25 <+bridge> [ddnet] what would you propose for storing the client IP addresses? 20:25 <+bridge> [ddnet] (for storing bans, one could use a different struct) 20:26 <+bridge> [ddnet] `NETADDRv4` for v4 addresses `NETADDRv6` for v6 addresses 20:26 <+bridge> [ddnet] how would you store client IP addresses then? 20:27 <+bridge> [ddnet] Hm, I guess you have to waste the 12 bytes unless you want templating 20:28 <+bridge> [ddnet] templating as I imagine it wouldn't make it cleaner 20:28 <+bridge> [ddnet] I'd probably do something like `template class CClient { ADDR_T m_Addr; }` 20:28 <+bridge> [ddnet] adding NETADDRV4 NETADDRV6 structs might be worthwhile though 20:29 <+bridge> [ddnet] that pushes up the responsibility to the user of the struct 20:29 <+bridge> [ddnet] how does the user handle it? 20:29 <+bridge> [ddnet] keep different client IDs for ipv4/v6 clients? 20:29 <+bridge> [ddnet] Hm, yeah not pretty 20:31 <+bridge> [ddnet] How about `union NETADDR { NETADDRv4 v4; NETADDRv6 v6; };`? 20:31 <+bridge> [ddnet] I'd go 20:31 <+bridge> [ddnet] We still waste the 12 bytes, but we can use the inner type for the bans 20:32 <+bridge> [ddnet] yes, adding NETADDRV4 NETADDRV6 would be useful 20:32 <+bridge> [ddnet] `struct NETADDR { int type; union { NETADDRv4 v4; NETADDRv6 v6; } inner; };` 20:33 <+bridge> [ddnet] Btw how is ipv6 routing done usually? 16 byte is a very meh length for processors 20:33 <+bridge> [ddnet] I don't know 20:33 <+bridge> [ddnet] what do you mean, meh length? 20:33 <+bridge> [ddnet] x86 has registers that size 20:34 <+bridge> [ddnet] Eh? 128bit registers? 20:34 <+bridge> [ddnet] There are the SIMD registers, but they are hardly intended for this purpose 20:35 <+bridge> [ddnet] yes, I mean xmm 20:35 <+bridge> [ddnet] etc. 20:36 <+bridge> [ddnet] it supports all the operations that I can think of that are necessary for IPv6 manipulation 20:36 <+bridge> [ddnet] dunno if they cause performance penalties when used 20:36 <+bridge> [ddnet] because they might need to be saved on context switchtes 20:37 <+bridge> [ddnet] Well they take more cycles than their non vector counterparts 20:37 <+bridge> [ddnet] simd OR takes 0.33 cycles I think 20:37 <+bridge> [ddnet] on 128 bytes 20:37 <+bridge> [ddnet] bit* 20:38 <+bridge> [ddnet] https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=mm_and_si128&expand=4070,300,301,302,300,300 20:40 <+bridge> [ddnet] 64 bit OR takes 0.25 cycles 20:40 <+bridge> [ddnet] I'll check later if that's the route they went inside the linux kernel 20:41 <+bridge> [ddnet] hm 20:41 <+bridge> [ddnet] I think by default, only the first 64 bits of IPv6 should be used for routing 20:41 <+bridge> [ddnet] not sure if enforced 20:54 <+bridge> [ddnet] yes, most routers can safely ignore the second 64 bits 20:54 <+bridge> [ddnet] IPv6 routing is actually more effective because there's no header checksum that routers have to validate and recompute 20:55 <+bridge> [ddnet] data integrity verification is done at L2 anyway 21:18 <+bridge> [ddnet] Q: How does the networking even work at all? ๐Ÿ˜„ 21:19 <+bridge> [ddnet] We seem to be putting host byte order ips into sockaddr_in 21:22 <+bridge> [ddnet] and `sockaddr_to_netaddr` is using `htons`, it should be using `ntohs` 21:22 <+bridge> [ddnet] it's the same ๐Ÿ˜„ 21:22 <+bridge> [ddnet] same? 21:23 <+bridge> [ddnet] for big/little endian yes 21:23 <+bridge> [ddnet] for mixed endian not, I guess 21:23 <+bridge> [ddnet] Since when is the network byte order little endian? 21:23 <+bridge> [ddnet] it's big endian 21:23 <+bridge> [ddnet] network order 21:23 <+bridge> [ddnet] but htons and ntohs are both "swap endian" 21:23 <+bridge> [ddnet] on little endian 21:23 <+bridge> [ddnet] (and no op on big endian) 21:24 <+bridge> [ddnet] Ah, what was that property called? 21:24 <+bridge> [ddnet] self inverse? 21:25 <+bridge> [ddnet] An involute \o/ 21:25 <+bridge> [ddnet] pls what 21:25 <+bridge> [ddnet] ntohs is an involute 21:25 <+bridge> [ddnet] ntohs(ntohs(x)) = x 21:26 <+bridge> [ddnet] https://tenor.com/view/epidiom-hypnomind-gif-12139800 21:26 <+bridge> [ddnet] an involution* 21:26 <+bridge> [ddnet] so a self inverse 21:27 <+bridge> [ddnet] `__builtin_bswap16(value);` is better because it's just single instruction unlike ntohs/htons which is slow library call ๐Ÿ˜„ 21:27 <+bridge> [ddnet] @Comrade I'd bet quite a bit that it optimizes to that 21:27 <+bridge> [ddnet] @Comrade also not available on msvc? 21:27 <+bridge> [ddnet] yes 21:27 <+bridge> [ddnet] @Learath2 might not due to shared library linking 21:28 <+bridge> [ddnet] ntohs/htons cannot be inlined 21:28 <+bridge> [ddnet] welcome to the good old C ๐Ÿ˜„ 21:28 <+bridge> [ddnet] :justatest: 21:28 <+bridge> [ddnet] Compilers don't care about your rules 21:29 <+bridge> [ddnet] both gcc and clang optimize this down to a bswap 21:29 <+bridge> [ddnet] oh nice 21:30 <+bridge> [ddnet] icc too 21:30 <+bridge> [ddnet] but __builtin_bswap16 still has one tiny advantage - it's constexpr (on GCC at least) 21:30 <+bridge> [ddnet] There is no constexpr in C ๐Ÿ˜„ 21:30 <+bridge> [ddnet] what does that help? if you want to use it on template instantiation? @Comrade 21:31 <+bridge> [ddnet] why would you do that? 21:31 <+bridge> [ddnet] who knows ๐Ÿ˜„ 21:31 <+bridge> [ddnet] (constexpr is unrelated to constant evaluation at compile time) 21:31 <+bridge> [ddnet] I guess you might want to initialize a constant? 21:31 <+bridge> [ddnet] @Learath2 meh, involute felt better 21:31 <+bridge> [ddnet] @Soreu it did didn't it? ๐Ÿ˜„ I remembered an involute is a curve so checked, and apparently different things 21:33 <+bridge> [ddnet] @heinrich5991 we still do just copy the ips as is, how does that work? 21:33 <+bridge> [ddnet] wdym copy as is? 21:33 <+bridge> [ddnet] Do we store them big endian? 21:34 <+bridge> [ddnet] `mem_copy(dst->ip.v6.ip, &((struct sockaddr_in6*)src)->sin6_addr.s6_addr, 16);` 21:37 <+bridge> [ddnet] We seem to print them in the order we store them and I didn't notice ips being backwards 21:38 <+bridge> [ddnet] if `inet_ntop` converts it to correct string, it must be big endian 21:40 <+bridge> [ddnet] I also wonder why they went from 4 bytes all the way to 16 bytes in ipv6? just 1 more byte would give us more ips than there ever will be humans on earth 21:41 <+bridge> [ddnet] no, we would face the same problem after some time 21:41 <+bridge> [ddnet] I guess we can think about that when we conquer alpha centauri? 21:41 <+bridge> [ddnet] 128bit numbers are just a PITA to work with 21:42 <+bridge> [ddnet] even upping it to 8 bytes would give us more than enough ips to bathe in 21:42 <+bridge> [ddnet] IPv6 address is actually only 64-bit, because the first 64 bits are "network address" 21:43 <+bridge> [ddnet] the second 64 bits are "device address" 21:43 <+bridge> [ddnet] the second 64 bits are "device address" within the network 21:43 <+bridge> [ddnet] Well you still need to compare 128 bits at the end of the day 21:44 <+bridge> [ddnet] if you have only 64-bit address, you still need evil NAT at the end 21:44 <+bridge> [ddnet] comparing 128 bits is not a problem nowadays, right? 21:44 <+bridge> [ddnet] Not a problem is debatable, on a modern processor you have SIMD that can do a comparison of that size (which is kinda a hack really, it's not really what it's for) 21:45 <+bridge> [ddnet] Why would you need NAT with 64bit ip addresses? 21:45 <+bridge> [ddnet] let's wait for 128 bit processors then ๐Ÿ˜„ 21:47 <+bridge> [ddnet] 64-bit address might not be enough in far future i think 21:47 <+bridge> [ddnet] and as you can seen, updating IP protocol is nightmare ๐Ÿ˜„ 21:47 <+bridge> [ddnet] An assignment of one /48 gives you a whopping 65k lans, I can't even fathom anyone actually using anything close to that 21:48 <+bridge> [ddnet] it does allow for the autoconfig thing thoug 21:48 <+bridge> [ddnet] h 21:48 <+bridge> [ddnet] well, today it would be enough, yes, but even IPv4 address space was so huge 30 years ago 21:48 <+bridge> [ddnet] Anyway, I was just wondering why the huge jump was thought to be needed by the designers of ipv6 21:49 <+bridge> [ddnet] Well there aren't even enough ipv4s for each person on earth, so it obv was a bad decision ๐Ÿ˜„ 21:49 <+bridge> [ddnet] probably from a time where not everyone had a computer 21:49 <+bridge> [ddnet] ^ 21:49 <+bridge> [ddnet] "the world market is about 10 computers" 21:49 <+bridge> [ddnet] yes 21:50 <+bridge> [ddnet] Ah, stateless autoconfiguration is a nice pro 21:50 <+bridge> [ddnet] today even toilet needs IP address ๐Ÿ˜„ 21:50 <+bridge> [ddnet] https://en.wikipedia.org/wiki/IPv6#Larger_address_space 21:51 <+bridge> [ddnet] > While this address space is very large, it was not the intent of the designers of IPv6 to assure geographical saturation with usable addresses. Rather, the longer addresses simplify allocation of addresses, enable efficient route aggregation, and allow implementation of special addressing features. In IPv4, complex Classless Inter-Domain Routing (CIDR) methods were developed to make the best use of the small address space. The standa 21:52 <+bridge> [ddnet] @Comrade a couple more bits and we could give every atom on earth an ipv6 address 21:52 <+bridge> [ddnet] humans never move on until the problem is at the door 21:52 <+bridge> [ddnet] @heinrich5991 Makes sense 21:52 <+bridge> [ddnet] i wonder how long till ipv4 will be considered ancient 21:53 <+bridge> [ddnet] given that it's still industry standard today 21:53 <+bridge> [ddnet] ipv4 is never going away at this rate 21:53 <+bridge> [ddnet] maybe not in our lifetime 21:53 <+bridge> [ddnet] Look at the amount of ISPs deploying CGNAT 21:54 <+bridge> [ddnet] why they use that instead of migrating to ipv6 21:54 <+bridge> [ddnet] Business dinosaurs hear there is a piece of hardware that will let them keep using their 80 year old routing hardware and they will jump at the opportunity 21:54 <+bridge> [ddnet] internet was designed as decentralized network, but now it's becoming more and more centralized (=broken) 21:54 <+bridge> [ddnet] IPv6 can fix that 21:54 <+bridge> [ddnet] acording to wiki cgnat has lot of security problems xd 21:54 <+bridge> [ddnet] No is great, it optimizes for profits 21:55 <+bridge> [ddnet] "Carrier-grade NAT usually prevents the ISP customers from using port forwarding" 21:55 <+bridge> [ddnet] ufff 21:55 <+bridge> [ddnet] big no pls 21:55 <+bridge> [ddnet] Capitalismgang destroying everything good about everything while people cheer them on 21:56 <+bridge> [ddnet] I guess our best bet would be a massive government stepping in and enforcing the change 21:56 <+bridge> [ddnet] i would bet china would do it before usa 21:56 <+bridge> [ddnet] US loves their free market too much 21:56 <+bridge> [ddnet] I'd bet on the EU, they like this sort of thing 21:56 <+bridge> [ddnet] the free market apple actually enforces apps working with ipv6 today 21:56 <+bridge> [ddnet] Or maybe china yeah, with the state actually owning everything 21:57 <+bridge> [ddnet] Apple is such an odd mix of great and awful engineering it boggles my mind 21:57 <+bridge> [ddnet] It's like there is a group of people inside that actually still care about producing well engineered things fighting against the business moguls 21:58 <+bridge> [ddnet] they sell 1000โ‚ฌ display stands 21:58 <+bridge> [ddnet] xd 21:58 <+bridge> [ddnet] or whathever the word is 21:59 <+bridge> [ddnet] ipv6 is such a chicken and egg issue anyway :/ 22:00 <+bridge> [ddnet] No one wants to switch until everyone else has switched 22:00 <+bridge> [ddnet] services are IPv6 ready (except GitHub) 22:00 <+bridge> [ddnet] client devices are IPv6 ready 22:00 <+bridge> [ddnet] but lazy internet providers are the problem ๐Ÿ˜„ 22:00 <+bridge> [ddnet] join the IETF 22:01 <+bridge> [ddnet] and propose ur super duper solution 22:01 <+bridge> [ddnet] I have an amazing solution 22:01 <+bridge> [ddnet] We infiltrate the EU council and hold the MPs hostage until they agree to sign an ipv4 deprecation bill 22:02 <+bridge> [ddnet] You have the best solutions, always 22:02 <+bridge> [ddnet] <แถฐยฐKonองsti> Ryozoozki 22:02 <+bridge> [ddnet] ikr 22:02 <+bridge> [ddnet] Creative, Innovative 22:02 <+bridge> [ddnet] Easy to plan 22:03 <+bridge> [ddnet] they should have various experienced professionals in diverse fields instead of useless boomers who only are there cuz they were born into a politician family 22:03 <+bridge> [ddnet] \*thinks of Greta\* 22:03 <+bridge> [ddnet] i said "experienced professionals" 22:03 <+bridge> [ddnet] not a kid 22:03 <+bridge> [ddnet] xd 22:04 <+bridge> [ddnet] I just can't delete that from my head 22:04 <+bridge> [ddnet] everyone forgot about greta cuz covid 22:04 <+bridge> [ddnet] It's so funny watching 65 year old men decide on things about technology though 22:04 <+bridge> [ddnet] the world rly forgets fast 22:04 <+bridge> [ddnet] The US Senate interviewing mark zuckerberg was like the meme of a decade 22:04 <+bridge> [ddnet] xDD 22:05 <+bridge> [ddnet] well mark is also a meme 22:05 <+bridge> [ddnet] he looks like an alien 22:05 <+bridge> [ddnet] or them asking the ceo of google whether apple phones track them 22:05 <+bridge> [ddnet] he also had a thing in his chair to be more up 22:05 <+bridge> [ddnet] and drank water awkwardly 22:05 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/753345372704866494/unknown.jpeg 22:05 <+bridge> [ddnet] not really 22:05 <+bridge> [ddnet] all was rly pepeg 22:05 <+bridge> [ddnet] The guy literally said "It's a different company" they said "ANSWER THE QUESTION" 22:06 <+bridge> [ddnet] When he tried to answer it, describing how things like this work "ITS A YES OR NO QUESTION SIR" 22:06 <+bridge> [ddnet] Amazing stuff really 22:07 <+bridge> [ddnet] Another senator asking how many employees google has to prepare the search results for it's users 22:07 <+bridge> [ddnet] lmao 22:07 <+bridge> [ddnet] Like this is a grocery shop 22:07 <+bridge> [ddnet] XDDD 22:07 <+bridge> [ddnet] yea, heard this one 22:07 <+bridge> [ddnet] [10:05 PM] Learath2: or them asking the ceo of google whether apple phones track them 22:07 <+bridge> [ddnet] wtf 22:07 <+bridge> [ddnet] source? 22:07 <+bridge> [ddnet] youtube has employes on the other end receiving my videos 22:07 <+bridge> [ddnet] You could see his soul leaving the body when he heard that question 22:07 <+bridge> [ddnet] :troll: 22:08 <+bridge> [ddnet] It was in the congressional hearing, I'll skim through it see if I can find it 22:10 <+bridge> [ddnet] https://youtu.be/-nSHiHO6QJI?t=151 22:11 <+bridge> [ddnet] This man thinks google can track him through his iphone 22:13 <+bridge> [ddnet] The time they asked zuckerberg about "emailing people through whatsapp" was also very cute 22:14 <+bridge> [ddnet] that tracking issue is their problem because they should've read EULA ๐Ÿ˜„ 22:15 <+bridge> [ddnet] LOL 22:15 <+bridge> [ddnet] not true in the EU 22:16 <+bridge> [ddnet] @Comrade 22:16 <+bridge> [ddnet] yes, EU laws are more strict in privacy stuff 22:17 <+bridge> [ddnet] (and sensibly so, since because only a rounding error of people read EULAs) 22:17 <+bridge> [ddnet] you start ur newly bought game for 60โ‚ฌ, u see a eula text that u can scroll for 10 minutes, you skip it and play 22:17 <+bridge> [ddnet] :justatest: 22:18 <+bridge> [ddnet] I think the political systems everywhere need major rework. Letting people deliver rulings on things they can't possibly even begin to understand is rather stupid 22:19 <+bridge> [ddnet] How is a man the age of my grandfather supposed to figure out how copyright law is supposed to be enforced on the internet? 22:19 <+bridge> [ddnet] My grandfather still believes you can take things off of the internet 22:19 <+bridge> [ddnet] my grandmother doesnt have internet or a pc :justatest: 22:20 <+bridge> [ddnet] blame lawyers for making simple things so complex ๐Ÿ˜„ 22:20 <+bridge> [ddnet] oof @ that video excerpt @Learath2 22:20 <+bridge> [ddnet] it's a YES OR NO question 22:20 <+bridge> [ddnet] you should be able to answer that 22:21 <+bridge> [ddnet] They should appoint me the supreme judge of the world. The only law "Common sense" 22:21 <+bridge> [ddnet] Some aspects of the current legal systems are just "odd" 22:22 <+bridge> [ddnet] You can have video of someone murdering their wife and children and they'll get away because the video was recorded illegaly ๐Ÿ˜„ 22:22 <+bridge> [ddnet] depends on jursidcition 22:23 <+bridge> [ddnet] But why? It's common sense that the murderer should be in jail. We can talk about the illegal recording later 22:24 <+bridge> [ddnet] "Lawmakers questioned Google's CEO Sundar Pichai" those ppl asking those questions are the ones that make the laws 22:24 <+bridge> [ddnet] its terrifying 22:24 <+bridge> [ddnet] Anyway, these things are fun to talk about but at the end of the day we all know nothing will change, as it hasn't in hundreds of years 22:25 <+bridge> [ddnet] Watch a session of the british house of lords if you want to see actually terrifying things 22:25 <+bridge> [ddnet] [3:21 PM] Learath2: Some aspects of the current legal systems are just "odd" 22:25 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/753350428862709941/gof68I2h2OMhI37lD1lPptg6YJENCKVpiEoLqRw6fWw.png 22:25 <+bridge> [ddnet] when you are too smart for those guys that you have to think how to tell them in really dumb terms 22:25 <+bridge> [ddnet] so funny 22:26 <+bridge> [ddnet] @onby sources please 22:26 <+bridge> [ddnet] One old guy said "Britain fought germany in ww2, it's only natural we want to steer clear" and another said "The francogermanic empire" unironically 22:26 <+bridge> [ddnet] 22:26 <+bridge> [ddnet] ty 22:27 <+bridge> [ddnet] > "You make $100 million a year, you ought to be able to answer my question" 22:27 <+bridge> [ddnet] > And you, sir, make $174k a year, you ought to be able to distinguish between Apple and Google 22:27 <+bridge> [ddnet] rekt 22:27 <+bridge> [ddnet] Another said "The EU did not create peace in europe, it was just an alliance against the common enemy the soviet union" 22:27 <+bridge> [ddnet] huh? 22:27 <+bridge> [ddnet] we have the longest peaceful period since centuries in the EU 22:28 <+bridge> [ddnet] oh 22:28 <+bridge> [ddnet] well within the eu there is peace, but its not like countries inside the eu help in wars 22:28 <+bridge> [ddnet] spain sends weapons 22:28 <+bridge> [ddnet] here and there 22:28 <+bridge> [ddnet] Yes, but that's what one 90 year old "lord" in the house of lords thinks 22:28 <+bridge> [ddnet] well within the eu there is peace, but its not like countries inside the eu doesnt help in wars 22:29 <+bridge> [ddnet] EU itself was wartorn for decades before the formation of the EU 22:30 <+bridge> [ddnet] @BannZay since you're playing with commands lately, maybe introduce/edit `/showall` as option in settings or in console, so that it would be saved to initial `.cfg` without the need to type it on every server join? 22:30 <+bridge> [ddnet] I guess this was very offtopic for this channel anyway ๐Ÿ˜„ 22:30 <+bridge> [ddnet] u dont need showall @Soreu anymore 22:30 <+bridge> [ddnet] @Learath2 well no one else uses this channel 22:30 <+bridge> [ddnet] I kind of do 22:30 <+bridge> [ddnet] how 22:31 <+bridge> [ddnet] the reason why it's not enabled by default/cannot be enabled is that it creates a lot of traffic 22:31 <+bridge> [ddnet] at least what deen said a while ago 22:31 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/753352010950246511/screenshot_2020-09-09_22-31-23.png 22:31 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/753352013982728262/screenshot_2020-09-09_22-31-20.png 22:32 <+bridge> [ddnet] look at left corner of map 22:32 <+bridge> [ddnet] r u using latest 22:32 <+bridge> [ddnet] people disappear for me when like ~4 tiles from the edge 22:32 <+bridge> [ddnet] that may be a bug then 22:32 <+bridge> [ddnet] ah 22:32 <+bridge> [ddnet] u are playing gores or ddnet? 22:32 <+bridge> [ddnet] gores is outdated so 22:32 <+bridge> [ddnet] checked on both 22:32 <+bridge> [ddnet] ye, but this screen is from GER1 multimap 22:32 <+bridge> [ddnet] are you using latest version? 22:32 <+bridge> [ddnet] 10 sec ago 22:33 <+bridge> [ddnet] @heinrich5991 traffic and also other resource usage. full server with /showall changes my fps from 400 to 60 22:33 <+bridge> [ddnet] oh, the `.1` changed it :F my bad :F 22:33 <+bridge> [ddnet] KoG still sucks ass with this @qshar :C 22:34 <+bridge> [ddnet] cuz they dont keep up 22:34 <+bridge> [ddnet] Ik 22:34 <+bridge> [ddnet] @Ryozuki Help them stay up to date xD 22:34 <+bridge> [ddnet] how 22:34 <+bridge> [ddnet] u cant 22:34 <+bridge> [ddnet] they are closed source 22:34 <+bridge> [ddnet] ye ik 22:34 <+bridge> [ddnet] its against my nature 22:34 <+bridge> [ddnet] dammit 22:34 <+bridge> [ddnet] :greenthing: 22:35 <+bridge> [ddnet] didn't you guys wanted to code something like "plugins" of different mods, so that it would be easier to adapt DDNet to become different mod, or the other way around? 22:35 <+bridge> [ddnet] or that was just one of those weird dreams 22:35 <+bridge> [ddnet] u know ppl want lot of things 22:35 <+bridge> [ddnet] but not all gets done 22:35 <+bridge> [ddnet] :D 22:35 <+bridge> [ddnet] shh 22:36 <+bridge> [ddnet] visible /spec on KoG is still way more important todo xd 22:37 <+bridge> [ddnet] i wonder why its trending 22:37 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/753353468672213112/unknown.png 22:37 <+bridge> [ddnet] you can configure how far tee`s will be rendered 22:37 <+bridge> [ddnet] not sure if there is command for it 22:40 <+bridge> [ddnet] I thought about script that will be executed on you connectecting the server. I been thinking about to not connect my dummy every time I reload map on my test server 22:40 <+bridge> [ddnet] @Soreu xd 22:40 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/753354107984543834/EhfnoZbWoAAJET-.png 22:40 <+bridge> [ddnet] I thought about script that will be executed when you connectected to the server. I been thinking about to not connect my dummy every time I reload map on my test server 22:40 <+bridge> [ddnet] I already like this dude 22:41 <+bridge> [ddnet] and it fits so well with the arctic code vault 22:49 <+bridge> [ddnet] I thought about script that will be executed when you connectected to the server. I been thinking about it to not connect my dummy every time I reload map on my test server 23:28 <+bridge> [ddnet] https://en.wikipedia.org/wiki/Arithmetic_coding 23:28 <+bridge> [ddnet] > Arithmetic coding and Huffman coding produce equivalent results โ€” achieving entropy โ€” when every symbol has a probability of the form 1/2k. In other circumstances, arithmetic coding can offer better compression than Huffman coding because โ€” intuitively โ€” its "code words" can have effectively non-integer bit lengths, whereas code words in prefix codes such as Huffman codes can only have an integer number of bits. Therefore, a code 23:28 <+bridge> [ddnet] tw uses huffman coding right? :tee_thinking: 23:36 <+bridge> [ddnet] yes, huffman coding 23:37 <+bridge> [ddnet] arithmetic coding is probably too slow 23:40 <+bridge> [ddnet] the wiki says otherwise lol xD 23:40 <+bridge> [ddnet] @heinrich5991 apparently due to this https://en.wikipedia.org/wiki/Asymmetric_numeral_systems 23:40 <+bridge> [ddnet] > Recent family of entropy coders called asymmetric numeral systems allows for faster implementations thanks to directly operating on a single natural number representing the current information. 23:41 <+bridge> [ddnet] faster implementations than what? 23:41 <+bridge> [ddnet] huffman i guess 23:41 <+bridge> [ddnet] or the implementation without this 23:42 <+bridge> [ddnet] I don't see how it can be faster than huffman 23:42 <+bridge> [ddnet] huffman is a special case of arithmetic coding that works without multiplication/division 23:43 <+bridge> [ddnet] but just bit shifting 23:43 <+bridge> [ddnet] > ANS combines the compression ratio of arithmetic coding (which uses a nearly accurate probability distribution), with a processing cost similar to that of Huffman coding. 23:43 <+bridge> [ddnet] sounds intriguing 23:43 <+bridge> [ddnet] ah 23:43 <+bridge> [ddnet] yeah that 23:44 <+bridge> [ddnet] ans is used by zstd 23:44 <+bridge> [ddnet] ah 23:44 <+bridge> [ddnet] tANS looks to be the only kind worth looking into for our use case 23:45 <+bridge> [ddnet] 23:53 <+bridge> [ddnet] @ะะฝะดั€ะตะน ะ ัƒะดะพะน Actually nothing seems wrong about the Steam Linux icons, weird 23:55 <+bridge> [ddnet] @heinrich5991 did you upload the steam icons? On Mac OSX it uses the server icon I think, not the client one. and according to icns2png nothing else is contained in the icns file 23:55 <+bridge> [ddnet] I uploaded the steam icons 23:56 <+bridge> [ddnet] I'll update the icns file