00:00 < bridge> You work until night? :lol: 00:02 < bridge> pipeline is running again :) 00:38 < bridge> does ddnet want freeze stars back? tclient will have it next update. It's like 10 lines of code 00:49 < bridge> Is it possible to order the spec view by player id? would greatly appreciate it 00:51 < bridge> what is the current ordering? 00:51 < bridge> alphabetical 00:51 < bridge> alphabetical? 00:59 < bridge> yes 01:00 < bridge> o.o I would've bet player id 02:11 < ws-client> nice patiga 02:18 < ws-client> @Jupstar ✪ иди is not NAN not a number its idi and it means "go". In this case its followed by "нахуй" nahui which means dick. Its classic insult "go to dick" 02:21 < ws-client> @milkeeycat which protocol? I hope you are implementing 0.7 I personally always start with the first message that is sent. And then make sure the server responds correctly and then respond to that. 02:21 < ws-client> you can get pretty far without the int packer 06:02 < bridge> theoretically, you could do cloudflare warp -> your cheap vps as vpn 06:03 < bridge> my assimption being that cloudflare wrap does not give you a fixed ip address which could be whitelistef 06:03 < bridge> assumption 06:03 < bridge> whitelisted* 07:02 < bridge> chillerdragon: im already implementing packer xd 07:28 < bridge> Doesn’t hurt having packer is good 08:41 < bridge> my implementing of packer started with fixing bugs in the compiler 😬 08:41 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1283316571044974643/image.png?ex=66e28d31&is=66e13bb1&hm=69992a1942bae26f3e34ad9a342d76775d8c7c236d72f0304d2f1aa6334791df& 08:43 < bridge> how ddnet manages global bans? I peeked thru scripts and I don't get how they are not getting reapplied, bans.cfg that exec'd by every server contain `ban ip duration reason`, when, by who, and how expired bans will be removed, if bans contain only duration, but not any kind of timestamp 08:59 < bridge> We do but I have a feeling that it should be more than 10 lines. Which gives me the feeling that I won't like how you added them back. Which means I'll make a comment on the PR and fokkonaut will call me a seaslug 09:00 < bridge> what functionality do you need out of them that requires more than 10 lines 09:00 < bridge> they need prediction? 09:00 < bridge> They still need to be timed like the old ones, do you have that covered? 09:01 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1283321398072311861/image.png?ex=66e291b0&is=66e14030&hm=cd2ed7a36a866b2f7e7bdd4d95474b27abf0ca6caee1d8d8224da4569747fbc9& 09:02 < bridge> This looks about right, but I'll have to take a look at the original code 09:02 < bridge> the only issue is that because the client receives 25tps they are randomly out of sync by 1 tick half the time 09:03 < bridge> but the previous ones might have also been idk 09:07 < bridge> but they're not predicted so it's impossible to notice anyway 09:07 < bridge> unless you have <10ms ping 09:09 < bridge> def not impossible 09:13 < bridge> <0xdeen> Make a PR with an option please, I don't think it's a hill worth dying on, so we could add an option for it for the 0.1% of people who don't upgrade because of it. 09:15 < bridge> I already promised the star people I'd add it back as an option. I just didn't have the time for it :/ 09:17 < bridge> I was rather shocked how easy it was relative to how much arguing occurred 09:17 < bridge> the freezebar basically implemented everything required to have the stars clientside 09:21 < bridge> It's not that it was hard. Any config option was a huge issue at that moment in time 09:22 < bridge> I think it still is to heinrich, but something this small is very maintainable and doesn't need constant testing. So I'm sure he won't mind that much 09:30 < bridge> It would be nice if there was some clarification on this. It seems like tiny features with a single config option that are trivial to maintain get rejected very often. 09:32 < bridge> I've managed to maintain like 60 such tiny features downstream without having to rewrite any of them due to upstream changes. 09:32 < bridge> the upstream devs weren't even aware they exist 09:37 < bridge> I think what heinrich actually wants is to avoid feature creep/bloat but he should simply say that instead instead of claiming "maintainability" is difficult 09:51 < bridge> It's simply that some people prefer the teeish look and the fact the stars stick to the gameworld, not the tee 09:52 < bridge> It's simply that some ppl make a religion out of everything 09:52 < bridge> Bad argument 09:52 < bridge> If we'd have forced everyone to use the newest version this discussion wouldn't exist today 09:52 < bridge> It would make no difference 09:53 < bridge> Old freeze stars were not even predicted 09:53 < bridge> They logically make no sense 09:54 < bridge> And people still enjoyed them, just because they don't make sense to you or "logically" doesnt mean they are bad, useless or harmful 09:55 < bridge> I'd say bloat is harmful 09:55 < bridge> If there is a clear advantage in freeze stars we can still make the bar better 09:55 < bridge> And: The discussion whether we want to add them back is over already. We will, (Learath2 wanted to do that a long time ago and just didn't have the time. @totar please make a PR) 09:55 < bridge> Its not about that 09:55 < bridge> If someone think you can solve the freeze bar thing by simply replacing a texture, that would be a good workaround 09:56 < bridge> If someone thinks that you can solve the freeze bar thing by simply replacing a texture, that would be a good workaround 09:57 < bridge> At this point why not add 0.5 support 09:57 < bridge> Whataboutism 09:57 < bridge> no 09:57 < bridge> Ye 09:57 < bridge> That is your POV 09:57 < bridge> This is objectively 09:57 < bridge> ^ 09:57 < bridge> This is objectively 09:57 < bridge> 0.5 is not used, not wanted and not maintained 09:58 < bridge> the stars are wanted, said to be implented by learath already, and by many people (if you remember, I made some votes) 09:58 < bridge> But it's simply not about that 09:58 < bridge> Its not that the freeze bar is bad, or not good enough 09:58 < bridge> They clearly said they want the "OLD" freeze stars back. 09:58 < bridge> 09:58 < bridge> Indicating they don't understand the problem with freeze stars 09:59 < bridge> Could you elaborate 09:59 < bridge> What Problems? 09:59 < bridge> Prediction? 09:59 < bridge> For example lack of prediction 09:59 < bridge> How does it matter if they are rendered clientside just like the freezebar 09:59 < bridge> Freeze stars were simply wrong 09:59 < bridge> Bad argument 09:59 < bridge> Could aswell remove them visually completely 10:00 < bridge> Nope 10:00 < bridge> freeze bar also lacks prediction currently 10:00 < bridge> K 10:00 < bridge> that is a logical argument 10:00 < bridge> You dont seem to have good arguments today 10:00 < bridge> You never even started to argument 10:00 < bridge> Like always basically 10:00 < bridge> If you say so 10:01 < bridge> Then that should be fixed too, because otherwise it's not a complete feature 10:01 < bridge> the lack of prediction is kind of a feature 10:01 < bridge> Exactly 10:02 < bridge> And there is no point in predictig it 10:02 < bridge> that's not true 10:02 < bridge> True 10:02 < bridge> But it's not really required 10:02 < bridge> ??? 10:02 < bridge> fokko bro 10:02 < bridge> Everything should be predicted 10:02 < bridge> Otherwise it's a bug.. 10:03 < bridge> the issue is that when you have high ping it makes the position of other tees very inaccurate so they enter/leave freeze a lot. So you will see someone enter freeze, change skin, get freeze bar. Then the next tick they are not in freeze. 10:03 < bridge> presumably someone decided to not predict freeze for that reason 10:03 < bridge> visually 10:03 < bridge> in the physics they are still frozen 10:03 < bridge> Sure but that is a different issue. You cannot foresee the future. 10:03 < bridge> 10:04 < bridge> The task of prediction is as the name suggest to predicts what happens 10:04 < bridge> I've tested it before it subjectively looks worse 10:04 < bridge> Not really 10:04 < bridge> Also human input is not really fast, so in many cases prediction will be right 10:04 < bridge> it makes it impossible to tell if someone next to you in gores is actually frozen or just antiping frozen because their skin will show frozen 90% of the time 10:04 < bridge> I dunno, it's like the fast input discussion 10:04 < bridge> Theoretically that is a bug 10:05 < bridge> But the fewer input lag still feels good 10:05 < bridge> fast input has not even been discussed lol 10:05 < bridge> Well we discussed it 10:05 < bridge> jupey, did you read that? :D 10:05 < bridge> the way that ddnet does it atm is industry standard. fast input is the weird way 10:05 < bridge> but it's not bad 10:06 < bridge> Fact is most ppl play with ping 20 and not 300. 10:06 < bridge> 10:06 < bridge> With ping 300 everything teleports around 10:06 < bridge> So this is not as bad as you make it seem 10:06 < bridge> But thats the point where antiping is really required 10:06 < bridge> Imo you dont seem to have that full picture. Many people will complain 10:06 < bridge> Antiping is in first step a way to make the game feel smooth for a local player 10:06 < bridge> So your assumption is already wrong 10:07 < bridge> But it wont be smooth by that 10:07 < bridge> LIL 10:07 < bridge> LOL* 10:07 < bridge> If you remove prediction completely it will look be unsmooth too 10:07 < bridge> Anyways you only try to push your opinion today without arguments. Have a good day 10:07 < bridge> because you suddenly teleport around when hitting someone that isn't there 10:08 < bridge> No, you very clearly don't understand what antiping and prediction are 10:08 < bridge> That's a simple fact 10:08 < bridge> Your entire job is to maintain the 60 tiny features for your client. We have to make sure the entire client is maintained 10:08 < bridge> Assuming things are a fact is a dangerous thing 10:08 < bridge> If turning off prediction could fix anything, why shouldn't we do it? 10:08 < bridge> That is the result of your non existing arguments 10:08 < bridge> No need to get personal 10:08 < bridge> that's fair 10:08 < bridge> Mr. mad 10:08 < bridge> no need to get personal 10:09 < bridge> Ha-ga 10:09 < bridge> Ha-ha 10:10 < bridge> And you clearly dont have the full picture, understanding people's needs are different from "what is logically and programatically ''''correct''''." 10:10 < bridge> And thats a fact 10:10 < bridge> That is your _fact_ 10:10 < bridge> Ah, based on your 'argumenrs' 10:10 < bridge> If you dislike prediction, do cl_predict 0 10:10 < bridge> 10:10 < bridge> good luck playing the game 10:11 < bridge> Whataboutism 10:11 < bridge> Actually this specific thing probably looks better without prediction except for the specific case of 2 local tees, dummy + yourself 10:11 < bridge> That is still not the point 10:12 < bridge> Everything should be predicted 10:12 < bridge> If you want to opt-out, good luck 10:12 < bridge> maybe start clarifying your point instead 10:12 < bridge> If you predict half of the game and not the other, that is bad 10:12 < bridge> inconsistent 10:12 < bridge> . 10:12 < bridge> Tater made a good point here 10:12 < bridge> which you didnt even say anything to yet :) 10:12 < bridge> Well if it feels better, why does consistency matter? Prediction is for UX, no? 10:12 < bridge> You ignored all my points about high ping 10:13 < bridge> Because they are arguments. 10:13 < bridge> @jupeyy_keks something's very off with you today 10:13 < bridge> Yeah 10:13 < bridge> I am trolled by random ppl in the internet 10:13 < bridge> @totar if you've implemented predicted freezebar can we take a look? I'm curious how it feels 10:13 < bridge> Like me or Learath2? 10:13 < bridge> ^ 10:14 < bridge> Maybe you should try not to be that triggered, lol. Just trying to clarify things, asking questions, but you're mad 10:14 < bridge> I played this game a lot in my life. The lack of prediction for lot of things was always a downer. 10:14 < bridge> I personally think that predicting everything, and other players should be the default, because that is the clostest to what _probably_ happens ingame 10:15 < bridge> Maybe you should try not to be that triggered, lol. Just trying to clarify things, asking questions, but you seem to be mad 10:15 < bridge> (esp. if anti-ping is on) 10:15 < bridge> I think you didn't even understand the issue Tater mentioned 10:15 < bridge> I do 10:15 < bridge> I didn't save the code but it wasn't that hard, probably worth having as a checkbox in tclient so I'll do it again. 10:15 < bridge> i played gores on chile servers a lot 10:16 < bridge> And i can ensure you, you don't concentrate on others anyway at that point anymore. 10:16 < bridge> They teleport like crazy 10:16 < bridge> it's not just predicted freeze bar but also predicted tee skin for other players which was the main thing imo 10:16 < bridge> it's possible that just freeze bar could be predicted 10:16 < bridge> idk how that would be 10:16 < bridge> idk how that would feel 10:16 < bridge> Maybe predict freezebars for only local tees? 10:17 < bridge> Sure but not even your own freeze is predicted currently 10:17 < bridge> I think at least this is very bad 10:17 < bridge> No matter the other arguments 10:17 < bridge> The moment u touch someone with ping 300, u are doomed anyway 10:17 < bridge> Then not predicting it makes it no better 10:17 < bridge> I have an unfinished new version of the antiping smoothing algorithm which might fix this 10:18 < bridge> tclient has "ghosts" feature for other tees which makes it easy to avoid bumping them on high ping in gores 10:18 < bridge> The problem is always, e.g. in ddrace it can defs make sense to predict others.. Often they don't move, or you do a "normal" ddrace part 10:18 < bridge> And in these cases prediction will be correct even with high ping 10:18 < bridge> That is why I'd say there should be prediction 10:19 < bridge> And if ppl in gores really, which i personally doubt, are annoyed by it. Then it could be opt-out 10:19 < bridge> I am mostly talking about anti-ping here 10:19 < bridge> the issue with antiping is that past a certain point it's actually worse than no antiping. by extrapolating the tee position for >10 ticks you remove all the "signal" from their position which makes it impossible to figure out where they actually are. 10:20 < bridge> antiping smoothing should account for this but it doesn't really do anything 10:20 < bridge> Sure, but at that point the game is kinda unplayable anyway, IMHO. 10:20 < bridge> 10:20 < bridge> If u play with chile players you simply avoid other players. That is how you play it 10:20 < bridge> At best you don't interact with them 10:20 < bridge> I don't think it's that unplayable 10:21 < bridge> Well you do up and down saves only 10:21 < bridge> 10:21 < bridge> and stay 10 tiles away from them 10:21 < bridge> to not touch them 10:21 < bridge> the reason it's unplayable is because antiping is hiding all the information the server is actually telling you 10:21 < bridge> But the information of the server is 300ms old 10:21 < bridge> it basically teleports the tees to a random position and you have no chance to figure out where they are 10:22 < bridge> 300ms old is much better than random 10:22 < bridge> If someone suddenly stopped and you run into him, you are 100% doomed xD 10:22 < bridge> with or without antiping 10:22 < bridge> but 300ms is a lot of time in a high action game like gores 10:22 < bridge> you simply have not tried the tclient features that fix it lol 10:23 < bridge> hold on I'll make a video 10:29 < bridge> ok I have an issue to fix the video is delayed slightly 10:56 < bridge> normal antiping 10:56 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1283350342574145567/Base_Profile_2024.09.11_-_03.53.55.116.DVR.mp4?ex=66e2aca5&is=66e15b25&hm=1aeb396e1f2627659b5e508aac4d00e2ae119087b580625d05918087d2f174a0& 10:56 < bridge> with unpredicted ghost 10:56 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1283350376401338409/Base_Profile_2024.09.11_-_03.55.06.118.DVR.mp4?ex=66e2acad&is=66e15b2d&hm=e1a85c3d9c9c567865a003bf46d42aad162533c0606e7a79ffc0650e8d90a3d4& 10:56 < bridge> @jupeyy_keks 10:57 < bridge> when playing you just ignore the antiping player unless you're dragging them 10:57 < bridge> and I bump much less 10:57 < bridge> your brain is also much better at predicting their next 300ms of movement than the prediction is 10:59 < bridge> the bigger issue is actually not the real player bumping you but the predicted player bumping you when the bump never even happened 11:05 < bridge> Yes that is undoubtedly an issue. 11:05 < bridge> At these pings prediction ofc also misspredicts stronger. The non-prediction is still not what is actually happening in the game tho. So in this situation opt-out probably makes sense. 11:05 < bridge> 11:05 < bridge> Funnily enough the last freeze then was correctly predicted 😄 11:05 < bridge> 11:05 < bridge> 11:05 < bridge> I'd still like to test freeze prediction with low ping (<40) to see how annoying it is there. That is still the normal experience for most players 11:06 < bridge> > Funnily enough the last freeze then was correctly predicted 😄 11:06 < bridge> 2% overall accuracy 😄 11:06 < bridge> this problem is fixable in antiping smoothing though 11:06 < bridge> as you can see even with it enabled there is almost zero smoothing 11:08 < bridge> What i wonder tho. let's assume only the freeze skin is predicted, not the position: 11:08 < bridge> Sure most of the time it would incorrectly change skin. 11:08 < bridge> 11:08 < bridge> But the last freeze you would probably see the player is about to die (bcs close to freeze), I wonder if a visual feedback like freeze skin could make you react faster, or if the fact that skin often changes wrongly is more important 11:08 < bridge> it makes it look like you're playing in a team of ninjas 11:08 < bridge> xd 11:12 < bridge> it's unfortunately a very complicated problem. because you are must convey 2 gamestates to the player on 1 monitor. and with 1 camera position 11:14 < bridge> and then they will still have 300ms of latency on top of your 2 gamestates issue 12:01 < bridge> What programming language is better to learn if I want to make programs for myself, for example, a messenger with a friend 12:01 < bridge> Or #developer only for ddnet? 12:03 < bridge> #developer for all developer is fine 12:03 < bridge> Is it your first programming language you are learning? 12:03 < bridge> Yes 12:05 < bridge> https://media.discordapp.net/attachments/791748998687227964/1201960623471341689/2024-01-30_214159481.gif 12:06 < bridge> I would usually suggest C to any starter, but if your intention is to start making useful things quickly it's not a very quick process. 12:06 < bridge> Python is probably the easiest to get started with and start making useful stuff in 12:06 < bridge> I would choose C if I woke up one day and forgot everything I learned xd 12:07 < bridge> :justatest: 12:07 < bridge> C is very good for learning no matter what the new nerds say. It forces you to learn at least some computer science 12:07 < bridge> You need a vector, hashmap, list? Tough tits, make your own 12:07 < bridge> I remember how hard to me was to understand how to use pointers 12:08 < bridge> C++ or c# Is there a difference? 12:08 < bridge> Very different languages 12:08 < bridge> C# is closer to Java 12:08 < bridge> And which one to choose? 12:09 < bridge> Depends on what you want to do. If you want to write business software for small-medium businesses targetting windows C# is much better 12:09 < bridge> https://wheelofnames.com/ type languages here and spin 12:09 < bridge> If you want to contribute to ddnet, make your own game engine, do high performance computing C++ is the way to go 12:10 < bridge> (Or Rust really, probably much easier to work with for a beginner) 12:10 < bridge> choose a language that fits what you want to achieve, or choose one of the known "beginner" languages, (eg scripting languages like Python) - it doesn't matter what you begin with, after learning one language it's much easier to adapt to others 12:10 < bridge> Do I understand that C and C++ are different languages? 12:10 < bridge> C/C++ are riddled with pitfalls. Very hard to learn properly and make useful production ready software in 12:11 < bridge> Yes 12:11 < bridge> Very different 12:11 < bridge> C++ is C with many modern new features like object oriented programming support and advanced metaprogramming 12:12 < bridge> wat's meta programming :justatest: 12:12 < bridge> templates and macros and stuff 12:12 < bridge> Woow im want macros hehe:kek: 12:13 < bridge> Im know it not allowed in ddnet 12:13 < bridge> C has macros, but no template blackmagic 12:13 < bridge> I always thought of templates as ugly generics 12:14 < bridge> Heinrich coming back in hot 12:15 < bridge> I wonder what sorts of mean words I'll be called for agreeing with it this time, can't wait for a nice fruitful discussion 12:15 < bridge> If im want made client for ddnet me need know c++ 12:16 < bridge> Yes, C++ is essential for anything ddnet related 12:16 < bridge> but if he wants to make his own client he can choose any language he wants 12:16 < bridge> dd-pg is rust based btw :cat_hehe: - but yes for regular ddnet you'd want c++ knowledge 12:17 < bridge> Well, technically yes, but I doubt someone learning their very first programming language can reimplement teeworlds/ddnet without being able to read C++ 12:26 < bridge> How to download c++ and where better coding? In visual studio code? 12:31 < bridge> you're better of finding a video online on a develop environment for c++ using visual studio / visual studio code - when you've familiarized yourself with it look into the GitHub readme to see how to use visual studio/ visual studio code to build and run ddnet 12:31 < bridge> Yeah, it's really hard to guide someone through the initial setup 12:33 < bridge> I'd suggest to start with GUI coding, because you have visual feedback directly. E.g. typescript. 12:33 < bridge> 12:33 < bridge> When you understand some basics of coding, I'd switch to c to get a proper understanding of what programming languages do under the hood. 12:33 < bridge> 12:33 < bridge> At last switch to rust and contribute to twgame & create a launcher 12:34 < bridge> I'd suggest to start with GUI coding, because you have visual feedback directly. E.g. typescript. 12:34 < bridge> 12:34 < bridge> When you understand some basics of coding, I'd switch to c/c++ to get a proper understanding of what programming languages do under the hood. 12:34 < bridge> 12:34 < bridge> At last switch to rust and contribute to twgame & create a launcher 12:35 < bridge> got this book home from work 12:35 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1283375446750400605/PXL_20240911_103524570.jpg?ex=66e2c406&is=66e17286&hm=6d46daccee87bd6abbed5e4d8530afb02cf4d7291b91fbd02990853c39e07bea& 12:48 < bridge> how to make two while true 12:48 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1283378558433235045/image.png?ex=66e2c6ec&is=66e1756c&hm=8acf0f2b7f5c88961ca3961a5b9c3d691be982f1e0e419ffe234bb181fc2b88e& 12:48 < bridge> or im cant? 12:50 < bridge> huh red cube 12:50 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1283379231824416811/image.png?ex=66e2c78c&is=66e1760c&hm=701fa65cea651c2f71fd8b74eb8a09253d1f32e1b322b33521c38670d7313556& 12:51 < bridge> In python u have to be careful with idention 12:52 < bridge> Your second while loop never executes, bcs it's not part of the first 12:52 < bridge> But while True is usually bad 12:52 < bridge> oke 12:52 < bridge> im founded c++ 12:53 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1283379766438789170/image.png?ex=66e2c80c&is=66e1768c&hm=1668ce5d9676256af306034543e9a94da492ea71a9ca993e57a60619821b5b9f& 12:53 < bridge> in c++ it is also bad to use while true. 12:53 < bridge> 12:53 < bridge> while true means "for ever" 12:53 < bridge> for ever: 12:53 < bridge> print(r). 12:53 < bridge> 12:53 < bridge> 12:53 < bridge> It will never do anything than printing r 13:04 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1283382537900658710/image.png?ex=66e2caa1&is=66e17921&hm=5c66dc87e136e15d2c27133c2639876298ac37b28e0f6eaeed6dc745bd5dd771& 13:04 < bridge> this is c++ 13:04 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1283382615620976733/image.png?ex=66e2cab3&is=66e17933&hm=d939f27cbbf68214e90b75fbb3f55f833f758a1fcfb89ac81a3b36f1fb553cf9& 13:04 < bridge> While true 13:04 < bridge> 13:04 < bridge> True is always 1 13:04 < bridge> 13:04 < bridge> So this while loop is an endless loop, a bad one to be exact because there is no way for you to escape this endless loop 13:05 < bridge> Ah gg Internet 13:06 < bridge> Download the visual studio build tools with c++ support and the windows sdk appropriate to your system 13:07 < bridge> https://visualstudio.microsoft.com/ru/vs/features/cplusplus/ it? 13:07 < bridge> Looks good ye 13:10 < bridge> I didn't really understand how I need to work in visual studio code or visual studio 2022 13:10 < bridge> 13:11 < bridge> im try using youtube 13:11 < bridge> lol 13:14 < bridge> https://www.youtube.com/watch?v=DMWD7wfhgNY this looks about right for visual studio code 13:14 < bridge> for visual studio you don't need to do anything, it's a full IDE that comes with a compiler, you can just install and use that too 13:47 < bridge> even comes with this :troll: https://badoption.eu/blog/2023/01/31/code_c2.html 14:06 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1283398362992869396/20240911140005_1.jpg?ex=66e2d95e&is=66e187de&hm=a997f1b25d6b3491cd6a25aa8c2f7feaff3b22d4baf96162318efa739e7469fd& 14:09 < bridge> when client side chat filter? 14:21 < bridge> @Discord Mod ^ ban 14:24 < bridge> Lmao 14:26 < bridge> you should report that in #✉-create-a-ticket if that is serious, bcs now you just do advertisement for a cheat 14:26 < bridge> "get good with cheat" 14:26 < bridge> pfff 14:27 < bridge> might delete the screenshot 14:27 < bridge> I didn't quite understand, I thought he was using krx 14:29 < bridge> don't post the name of bot clients publicly please, we don't filter chat because chiller would go crazy 14:30 < bridge> 😂 14:30 < bridge> why would u not want a chat filter? 14:30 < bridge> You can discuss the feature without such a screenshot 14:31 < bridge> We all know how chat spam looks like 14:31 < bridge> it is the first time someone is actually spamming me since pepe died 14:32 < bridge> 🫠 14:32 < bridge> there was occasionally a single message with a krx idiot 14:32 < bridge> this one is the first in years to spamm 100+ messages in the chat 14:32 < bridge> you still shouldn't break the rules by mentioning it 😄 14:32 < bridge> see #7 14:33 < bridge> Yeah it sucks, I agree 14:33 < bridge> theres not even a rule channel? 14:33 < bridge> Ah it's in #welcome i think 14:34 < bridge> so u are saying i am not allowed to properly report krx faggots because it is against the rules? 14:34 < bridge> #✉-create-a-ticket 14:34 < bridge> promoting cheats is not allowed in public chat 14:34 < bridge> by mentioning it you promote it 14:34 < bridge> this is the developer channel not the public chat 14:34 < bridge> This is the public developer channel 14:35 < bridge> I don't want to discuss this. Simply don't do it, because if you do it (even in good faith) 14:35 < bridge> others will do so too in bad faith 14:35 < bridge> You can say whatever you want in reports, no bot client names in any channel that everyone can see 14:36 < bridge> Not the worst idea, some people just prefer not to see certain stuff. If we don't have an issue for it we can create one 14:37 < bridge> how is there not an issue for it when stepfunn already talked about a client side chat filter 2 years ago 14:37 < bridge> https://github.com/ddnet/ddnet/issues/2304 14:37 < bridge> Heh, you were the one that got it bumped last time too 14:37 < bridge> I wonder why no one implemented it yet, it's a quick feature 14:38 < bridge> and can be cleanly separated from rest of code 14:38 < bridge> string in, string out 14:38 < bridge> and is I think already implemented for serverside so just a copy paste job 14:40 < bridge> how about u make a setting where ppl can add custom words to the filter for a solution to the 'creative wording' 14:40 < bridge> In conclusion, it is my professional opinion that this feature isn't implemented because of a severe lack of developer 14:41 < bridge> I would definitely just ship a simple list and people can add whatever they want to it as an extra 14:41 < bridge> i know some python, but not how to actually program 14:42 < bridge> We also have `str_utf8_to_skeleton` that we can use for it if we want to make it a little harder to get through with creative letters 14:43 < bridge> We also have `str_utf8_to_skeleton` that we can use for it if we want to make it a little harder to get through with creative spelling 16:49 < bridge> Serverside requires a server restart for the wordlist to apply (would be nice if we could change that) 16:49 < bridge> For the serverside too? 16:50 < bridge> Yee, I think I tested it a year ago or so 16:50 < bridge> I had to shutdown the server first for the worldlist to apply 16:50 < bridge> No I mean do you think there is value in it getting updated for serverside too? 16:50 < bridge> Definitely 16:51 < bridge> We'd be able to censor bad spam messages, without relying on the antibot (or heinrich) 16:52 < bridge> We'd be able to censor bad spam messages, without restarting the server // relying on the antibot (or heinrich) 16:52 < bridge> fwiw that serverside list is only used in china for now, and idk if it censors phrases or hides messages entirely 16:52 < bridge> It might not be ideal for catching repetitive spam 16:52 < bridge> It replaces the bad words with asterisks 16:53 < bridge> > fwiw that serverside list is only used in china for now 16:53 < bridge> And that's what I don't get at all, why only use it for china 16:54 < bridge> people are creative, ull find out why all this stuff doesn't work as it should :kek: 16:54 < bridge> This claim that people can bypass the issue by changing a few letters is a seriously weak argument overall. 16:55 < bridge> I can't imagine that every single person who happens to be a uber racist, has a word list with every variation of the n word saved in a text document just for ddnet. It's just too silly. 16:55 < bridge> what about rcon command to reload censored words list? 16:55 < bridge> as we have with language client side 16:55 < bridge> ask rei 16:55 < bridge> :justatest: 16:55 < bridge> The claim that people can bypass the issue by changing a few letters is a seriously weak argument overall. 16:56 < bridge> the epic comeback of 5991 16:57 < bridge> It was a legal requirement in china to not get us into big trouble with the big Xi 17:46 < bridge> can someone explain why we assign `BindAddr.type` after parsing the `bindaddr` config variable using `net_host_lookup` [here](https://github.com/ddnet/ddnet/blob/9f278979e56df5ca3791b750e62189ea3cbbb3ec/src/engine/server/server.cpp#L2722-L2727)? 17:46 < bridge> 17:46 < bridge> same thing with `ec_bindaddr` for econ [here](https://github.com/ddnet/ddnet/blob/9f278979e56df5ca3791b750e62189ea3cbbb3ec/src/engine/shared/econ.cpp#L77-L83). 17:46 < bridge> 17:46 < bridge> as far as i understand it `net_host_lookup` is supposed to parse the value and set `BindAddr.type` either to `NETTYPE_IPV4` or `NETTYPE_IPV6` and this determines how the 16 bytes in `BindAddr.ip` are to be interpreted. 17:46 < bridge> 17:46 < bridge> but if `BindAddr.type` is afterwards set to `NETTYPE_ALL` like in the econ code, this causes subsequent code to interpret it as both ipv4 and ipv6. when `ec_bindaddr` is `localhost` (the default) then `net_host_lookup` returns `::1` and when the first 4 bytes are interpreted as ipv4 this results in `0.0.0.0`. so by default econ is exposed publicly... 17:46 < bridge> 17:46 < bridge> at first i thought this was just a bug in the econ code, but the standard server startup code does the same pattern of first calling `net_host_lookup` and then overwriting `BindAddr.type`. am i missing something? 17:49 < bridge> @Chilleroni Makkaroni, you online? 17:52 < bridge> what is that supposed to do, the 10hz part? on one hand you got every 2 seconds a keepalive and this is every1 second input sending? 17:52 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1283455151109181562/Bildschirmfoto_2024-09-11_um_17.51.23.png?ex=66e30e41&is=66e1bcc1&hm=f3ab45a0e8e2846f5332cd6b4fb3e8737c9fd5c4db12dbcc6586919a8809c736& 17:52 < bridge> @chillerdragon 18:07 < bridge> Looks weird, i'd create an issue on GH 18:09 < bridge> I wonder how you bind an addr to `NETTYPE_ALL` tho 18:09 < bridge> i'm sending a PR 18:09 < bridge> the code interprets the same 16 bytes as ipv6 and ipv4 (only first 4 bytes here) and binds to both 18:10 < bridge> which is nonsense 18:10 < bridge> And how will you bind NETTYPE_ALL in your PR? 18:10 < bridge> the fix is to not set `NETTYPE_ALL` 18:11 < bridge> and how to bind ipv6 & 4 at the same time? 18:11 < bridge> you don't 18:11 < bridge> at least not for econ, which is the only thing i'm touching 18:11 < bridge> not sure how the server.cpp code works 18:11 < bridge> mh k 18:14 < bridge> "The value AF_UNSPEC indicates that 18:14 < bridge> getaddrinfo() should return socket addresses for any 18:14 < bridge> address family (either IPv4 or IPv6, for example)" 18:14 < bridge> 18:14 < bridge> This would then be lost 18:22 < bridge> it's not lost, you can specify either ipv4 or ipv6 but not both 18:28 < bridge> nice catch :o 18:31 < bridge> nice 18:33 < bridge> but then it's lost 18:34 < bridge> it's not both at the same time xd 18:35 < bridge> ah but getaddrinfo() is still called on the value of `ec_binaddr` and parses the address 18:35 < bridge> it tells us whether the address in `ec_binaddr` is an ipv4 or an ipv6 address 18:38 < bridge> ah right you can still use/disable `IPV6_V6ONLY` to allow ipv4 connections 18:39 < bridge> that's totally separate but yeah 18:39 < bridge> yes 18:39 < bridge> i thought that is what we mean with ALL 18:39 < bridge> xd 18:39 < bridge> my take is what i wrote in the PR: 18:39 < bridge> > In general having a NETADDR instance with the type field set to NETTYPE_ALL never makes sense. These 16 bytes are either an ipv4 address or an ipv6 address but not both. 18:40 < bridge> hoping there is not some black magic in the code i'm not understanding ... 18:40 < bridge> Yes, you are right. The black magic is that flag already 18:55 < bridge> @timakro will you not fix it for the other sockets? Should at least create an issue ig 18:56 < bridge> i can open an issue 18:59 < bridge> Seems wrong to do it for UDP sockets, don't we currently support connecting to servers both with IPv4 and IPv6? 8930 makes it so econ only binds on either, whereas previously you could connect with both if you used `ec_bindaddr "localhost"`. 19:00 < bridge> true, but i think it's unrelated to udp vs tcp 19:00 < bridge> But it's kinda weird to have a bindaddr that makes it bind to other formats 19:00 < bridge> maybe our bindaddr should be an array 19:00 < bridge> i mean ip addresses are either ipv4 or ipv6 by definition. but you could make a case for a string like `localhost` to bind to both 19:01 < bridge> servers can bind to two different interfaces with ipv4 and ipv6 though, which seems to be the default if you don't specify a bindaddr 19:02 < bridge> yeah we cannot lose that behavior, you're right 19:03 < bridge> yeah, or a separate bindaddr6 would be enough 19:05 < bridge> binding to everything, i.e. 0.0.0.0 and [::] is actually one of the few things that can be represented using a NETADDR with NETTYPE_ALL because both are just all zeros in binary representation 19:05 < bridge> but that also looks hacky 19:05 < bridge> we should give clear solutions 19:06 < bridge> separate bindaddr6 seems like a good solution 19:06 < bridge> yeah 19:06 < bridge> i guess that is the best xd 19:06 < bridge> you can create an issue if you want 19:07 < bridge> xd 21:31 < bridge> Cool, found a bug with the `hot_reload` xd 21:32 < bridge> Cool 21:32 < bridge> Or in tux's words: 21:32 < bridge> Ok cool 21:38 < bridge> is there a local server crashlog that I can use? 21:42 < bridge> r u on windows? 22:35 < bridge> use pest repellent to kill the bug 22:36 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1283526498749382787/image.png?ex=66e350b4&is=66e1ff34&hm=dfa70ac67dc455623bd53fc257d30045846c47edd32b2e4da644a8412b45c780& 22:36 < bridge> Yes but I don't see how a gameplay feature is being affected depending on OS xd 22:40 < bridge> So, what's the bug? 22:41 < bridge> yes but then there should be a crashdump 22:42 < bridge> Somehow I managed to crash the server with the hot_reload feature by placing teleport to the tee's position in the editor and hot reloading upon save 22:42 < bridge> I cannot replicate it and I thought maybe by using a crashlog, I can identify it 22:43 < bridge> Upon further tests, in some cases it just doesn't teleport the player to the desired teleto position, but instead to the spawn position 22:46 < bridge> %appdata%/ddnet/dumps 22:47 < bridge> there is one 22:47 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1283529293359743006/DDNet-Server_win64-steam_crash_log_2024-09-11_20-35-52_9324_bae736293a2bd1921dfc121e9c730c3d8e15bc70.RTP?ex=66e3534e&is=66e201ce&hm=0a8374b7e59698fb78b37a816e453e8f267d8f33ccd9a844354a9f15ca88f381& 22:48 < bridge> It seems to match with the crash I had 22:52 < bridge> Did you `hot_reload` while in `super`? This should already be fixed in nightly. 23:10 < bridge> Wow 23:10 < bridge> _Wow_ 23:10 < bridge> 23:10 < bridge> Today i worked on the graphics card dropdown in ddpg. I opened the game over the debugger and saw that only amdvlk was in the list. I thought: ok weird, where is radv and lavapipe, like in ddnet cpp. 23:10 < bridge> 23:10 < bridge> I assumed steam somehow modifies the env vars. 23:10 < bridge> 23:11 < bridge> I created a release build and started without debugger and there they were. 23:11 < bridge> 23:11 < bridge> That made me curious about a completely different problem I have since around one year. Whenever I debug the game with the sound backend on, it disconnects the debugger for an unknown reason 50% of the time. 23:11 < bridge> 23:11 < bridge> Graphic drivers have hdmi support, hdmi has audio support. my debugger only loads amdvlk. 23:11 < bridge> 23:11 < bridge> I uninstalled amdvlk. 23:11 < bridge> 23:11 < bridge> The fcking sound debugger disconnect problem is gone. 23:11 < bridge> 23:11 < bridge> 23:11 < bridge> Omg dude, I just cannot believe this randomness sometimes. 23:11 < bridge> Completely randomly suffered for 1 year with a random weird non-sense problem. I always said radv is better than amdvlk, but i never was hostile against amdvlk. that changed today :lol: :lol: :lol: :lol: 23:11 < bridge> crazy 23:23 < bridge> nice they apparently fixed it in the q3 update from 2 weeks ago. 23:23 < bridge> 23:23 < bridge> so if u have q2 directly purge. 23:23 < bridge> 23:23 < bridge> man i blamed pipewire, i blamed the rust lib. i blamed everything i had. the graphics driver was really the last thing i thought about 😄 23:51 < bridge> @totar did u ever write smth on the tas algo you use ("search and refinement")?