00:19 < bridge> @murpi can you fix the bot to show the @ of the person instead of their account name? 00:25 < bridge> ok im so smart i managed to do laser door prediction 00:26 < bridge> @essigautomat full laser overhaul 🤝 00:31 < bridge> no 00:31 < bridge> you didn't 00:31 < bridge> abdhisuzadhibfpsz asdbhohuisfd 00:31 < bridge> @kebscs you didn't manage dynamic doors sent from the server 00:32 < bridge> do not pr until you did 00:32 < bridge> This means you need to keep track of all doors and check which doors the server sends and if it sent one last tick and didn't send it this tick then you need to remove it 00:33 < bridge> do not pr without doing this 00:33 < bridge> wdym? 00:34 < bridge> if the server decides to remove a door entity. like some modded servers may do 00:34 < bridge> then you need to also remove that door in the collision 00:34 < bridge> meaning you need to compare all the doors from the previous tick to the ones sent this tick to know which doors appeared or dissapeared 00:35 < bridge> do you have a server that does that? 00:35 < bridge> a modded server may do that 00:35 < bridge> 😍 00:35 < bridge> and not managing this clientside would cause prediction errors and thus limits moddability 00:35 < bridge> nice 00:35 < bridge> yes but do you have a server so i can test this? 00:36 < bridge> i already did door prediction like a year ago but it was annoying to fix this so i stopped 00:36 < bridge> or which mod exactly does it? 00:36 < bridge> no just write good code 00:36 < bridge> i dont know 00:36 < bridge> no. 00:36 < bridge> make one if you need one. dont be lazy 00:37 < bridge> does that need to be in prediction 00:38 < bridge> cant the modded server send switch off event or smth 00:38 < bridge> teero crashout 2025 00:38 < bridge> what about not sending door status every tick? wtf 00:38 < bridge> wrong reply 00:38 < bridge> teero crashout 2025 00:38 < bridge> also if modded servers break prediction, it's nothing new xD 00:39 < bridge> go fuck yourself. stop writing bad/incompatible code. you are just pushing away future problems. 00:39 < bridge> I don't understand a shit but I support Teero 00:40 < bridge> how can i tell its incompatible when theres no server i can test it on 00:40 < bridge> 👍 00:40 < bridge> like think? xd 00:40 < bridge> There's a DDNet-Server.exe on your game directory lmao 00:40 < bridge> I do agree with Teero that prediction should work as similar to ground truth as possible 00:40 < bridge> but I also agree that servers shouldn't be doing dumb bullshit 00:41 < bridge> this isn't dumb bullshit tho. a server can basically place blocks which is revolutionary 00:42 < bridge> yeah, thats what players are for 00:42 < bridge> doors are just stoppers 00:42 < bridge> since when can a server place blocks 00:42 < bridge> Wait, time to turn Teeworlds into a game about breaking and placing blocks? 00:42 < bridge> meaning the server can place stoppers 00:42 < bridge> i remember louis having an idea like that once 00:42 < bridge> with the proper door prediction implementation it can be. 00:43 < bridge> atleast the physics parts. it would be a little wonky tho 00:44 < bridge> The variable door length tile is already in the making 00:45 < bridge> it wont be anything close 00:45 < bridge> u can skip doors so easily 00:45 < bridge> ^ ^ ^ ^ ^ 00:46 < bridge> u cant do that withoyt adding a new tile 00:46 < bridge> theres no way to arbitrarily remove door entities in ddnet, why should prediction expect a server to do that 00:46 < bridge> I can! would just break backwards compat. 00:47 < bridge> im pretty sure any mod should use switches to control removing doors and such 00:47 < bridge> not if the server says you can't! 00:47 < bridge> since we're talking about modded servers apparently 00:47 < bridge> theres a difference between backwards compatibility and breaking 100s of maps 00:47 < bridge> i mean the entities gets destroyed, i just destroyed placed doors in destrucor 00:47 < bridge> whats the problem 00:48 < bridge> it's just a fine line ... like a door 00:51 < bridge> pretty sure i made an issue on it 00:52 < bridge> on some older clients there was some thing that caused highier resolution skins to have colors applied incorrectly 00:53 < bridge> and by incorrectly i mean it just applied the color without doing that weird brightness balance 00:53 < bridge> seriously can we just remove that 00:53 < bridge> why would brightness be adjusted like that 00:54 < bridge> it doesnt even let you have a fully white skin in some cases 00:54 < bridge> and in most cases it makes the skin really pixellish or completely breaks color cobtrast 00:54 < bridge> and in most cases it makes the skin really pixellish or completely breaks color contrast 01:00 < bridge> moddability? 01:00 < bridge> #7777 mentioned? 01:00 < bridge> https://github.com/ddnet/ddnet/issues/7777 01:01 < bridge> i guess its not source level 01:01 < bridge> destructor? xd 01:01 < bridge> you are not telling me you are keeping door entities in the entity linked list are you? 01:02 < bridge> (where should they be) 01:02 < bridge> how would this be practical tho 01:02 < bridge> teero crashout before gta6 is crazy 01:02 < bridge> they do not belong there xd 01:02 < bridge> the only thing they do is modify the collision to place stoppers with a switchnumber 01:02 < bridge> reminds me of the time i trolled him while keeping a boxes collision within bounds of a rect 01:02 < bridge> gta6 meme in 2025 🥀 01:02 < bridge> reminds me of the time i trolled him with keeping a boxes collision within bounds of a rect 01:02 < bridge> its like if i wanted 0 gravity i would use the tune, i wouldnt add gravity y vel to every player every tick 01:03 < bridge> linked lists are awfully slow and you just made the prediction 2000% slower on braintee if that is what you did kebs 01:03 < bridge> dont encourage modability for jank stuff like door 01:03 < bridge> im so productive (renaming variables) 01:03 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1355693866715578388/image.png?ex=67e9dbcd&is=67e88a4d&hm=8df79f256088395b882da9a8457c6cfdd83ed0e0b6b65049970373697f9b7660& 01:04 < bridge> you can only have 255 switches xd 01:05 < bridge> i was so productive today aswell! 01:05 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1355694293544866033/image.png?ex=67e9dc33&is=67e88ab3&hm=2c234617d6a9abf8b54462e0fd98df7327eae9b3de55cf7d5b0bc7478689a337& 01:05 < bridge> the dream will soon come when ddnet devs all come togethet to make something organized and thought out :frozen: 01:05 < bridge> remove 2 lines vs add 20 01:06 < bridge> how else do you keep track of the doors 01:06 < bridge> if not in list 01:06 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1355694601322627222/image.png?ex=67e9dc7c&is=67e88afc&hm=63bcb7a05611babd1792fef0bb54990ff2334b58a2707e7ed28c5c88894a87ce& 01:06 < bridge> ): 01:07 < bridge> bot is open src 01:07 < bridge> make a seperate list that is not a linked list. it should not be a prediction entity. 01:08 < bridge> since the actual prediction is just the stopper prediction 01:10 < bridge> kinda is an entity 01:12 < bridge> actually infclass engineer places arbitrary doors @kebscs 01:12 < bridge> not sure if its the same implementation but maybe u can test that 01:12 < bridge> 257* 🫠 01:12 < bridge> or i think some infclass guy might place doors 01:12 < bridge> wtf why 01:12 < bridge> memory was the issue, idk what gray bars mean 01:13 < bridge> all the infclass entities show as blue for me 01:13 < bridge> 255 in Switch layer + 1 in game + 1 in front 01:13 < bridge> yeah idk what they use for the lasers, probably isnt doors then 01:13 < bridge> heh, do those 2 even work properly? 01:13 < bridge> doesn't make any diff xd 01:14 < bridge> im curious what mod you have planned that uses arbitrary placed doors 01:14 < bridge> unfortunately, yes, thats what my bugfix PR is for 01:14 < bridge> (I personally wouldn't block a PR fixing ddnet/ddrace doors prediction without trying to handle runtime placed ones) 01:15 < bridge> ((I would prefer one that does that too EXCEPT if it comes at a large performance/compatibility penalty)) 01:20 < bridge> i mean it just places stop tiles when doors are on screen 01:20 < bridge> and deletes them when they arent or disappear 01:20 < bridge> and its only once on spawn/despawn 01:28 < bridge> yes 03:07 < bridge> yay door prediction 03:07 < bridge> i dont need to see teleporting monstrosity every time 03:09 < bridge> making ddmax maps less pain 😆 03:10 < bridge> teero is 3 minutes from your destination 03:10 < bridge> teero is 2 minutes from your destination 03:10 < bridge> teero is 59 seconds from your destination 03:10 < bridge> teero is 58 seconds from your destination 03:11 < bridge> mother of god 03:11 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1355711111277711511/image.png?ex=67e9ebdc&is=67e89a5c&hm=70dd1c68fb590a86b3df85b70a4684d9b85cfa2984ea7e3cc65bc530f353cbe4& 03:12 < bridge> nice door prediction:brownbear: 03:12 < bridge> how to fix 03:12 < bridge> i added to cmake and it fails 03:12 < bridge> CMake Error (dev) at CMakeLists.txt:367 (message): 03:12 < bridge> GAME_CLIENT does not contain every file from directory src/game/client 03:13 < bridge> is it in alphabetical order 03:13 < bridge> it would give the 03:13 < bridge> 03:13 < bridge> GAME_CLIENT is not alphabetically sorted error i think 03:13 < bridge> o 03:13 < bridge> id try that anyways 03:13 < bridge> but yeah, sort it alphabetically and check xD 03:14 < bridge> ok ill sort 03:19 < bridge> looks like it builds 03:19 < bridge> ty 08:48 < bridge> gm 10:42 < ws-client> @kebscs this script auto fixes your CMakeLists.txt for you https://github.com/lib-crash/lib-teeworlds/blob/master/bin/tw_cmake 11:47 < bridge> @kebscs did you check how they behave if you clip into them? 11:47 < bridge> @kebscs did you check how the prediction behaves if you clip into a door? 13:29 < bridge> I would like to remind you all that writing tests is a sign of weakness and self doubt. Trust in your code. Good day 13:29 < bridge> https://tenor.com/view/a-few-good-men-jack-nicholson-you-cant-handle-the-truth-mad-angry-gif-15104348 13:30 < bridge> And use all the techniques from this video to go fast: https://www.youtube.com/watch?v=4LiP39gJuqE :justatest: 13:30 < bridge> is the font used for the goals section from nintendos donkey kong 13:31 < bridge> Looks like a font based on the Super Mario 64 title logo 13:46 < bridge> why write tests, when you have bug reports the first day after release? /s 13:52 < bridge> kaze is good guy 13:54 < bridge> the thing is i already implemented all of this a year ago but never prd it. now its worse and its getting prd 13:56 < bridge> the whole pr hes doing is this: 13:56 < bridge> ``` 13:56 < bridge> else if(Data.m_Type == LASERTYPE_DOOR) 13:56 < bridge> { 13:56 < bridge> const int Index = Data.m_From.y * Collision()->GetWidth() * 32 + Data.m_From.x; 13:56 < bridge> if(s_CurrentDoors.find(Index) == s_CurrentDoors.end()) 13:56 < bridge> { 13:56 < bridge> float d = distance(Data.m_From, Data.m_To); 13:56 < bridge> 13:56 < bridge> for(int i = 0, id = std::ceil(d); i < id; i++) 13:56 < bridge> { 13:56 < bridge> float a = i / d; 13:56 < bridge> vec2 Pos = mix(Data.m_From, Data.m_To, a); 13:56 < bridge> 13:56 < bridge> if(Collision()->CheckPoint(Pos.x, Pos.y) || Collision()->GetTile(Pos.x, Pos.y) || Collision()->GetFTile(Pos.x, Pos.y)) 13:56 < bridge> break; 13:56 < bridge> else 13:56 < bridge> Collision()->SetDCollisionAt( 13:56 < bridge> Pos.x, 13:57 < bridge> Pos.y, TILE_STOPA, 0 /*Flags*/, 13:57 < bridge> Data.m_SwitchNumber); 13:57 < bridge> } 13:57 < bridge> } 13:57 < bridge> } 13:57 < bridge> ``` 13:57 < bridge> put this at the end of NetObjAdd and you're done 13:57 < bridge> the whole pr hes doing is this: 13:57 < bridge> ```cpp 13:57 < bridge> else if(Data.m_Type == LASERTYPE_DOOR) 13:57 < bridge> { 13:57 < bridge> const int Index = Data.m_From.y * Collision()->GetWidth() * 32 + Data.m_From.x; 13:57 < bridge> if(s_CurrentDoors.find(Index) == s_CurrentDoors.end()) 13:57 < bridge> { 13:57 < bridge> float d = distance(Data.m_From, Data.m_To); 13:57 < bridge> 13:57 < bridge> for(int i = 0, id = std::ceil(d); i < id; i++) 13:57 < bridge> { 13:57 < bridge> float a = i / d; 13:57 < bridge> the whole pr hes doing is this: 13:57 < bridge> ```cpp 13:57 < bridge> else if(Data.m_Type == LASERTYPE_DOOR) 13:57 < bridge> { 13:57 < bridge> const int Index = Data.m_From.y * Collision()->GetWidth() * 32 + Data.m_From.x; 13:57 < bridge> 13:57 < bridge> float d = distance(Data.m_From, Data.m_To); 13:57 < bridge> 13:57 < bridge> for(int i = 0, id = std::ceil(d); i < id; i++) 13:57 < bridge> { 13:58 < bridge> float a = i / d; 13:58 < bridge> vec2 Pos = mix(Data.m_From, Data.m_To, a); 13:58 < bridge> 13:58 < bridge> if(Collision()->CheckPoint(Pos.x, Pos.y) || Collision()->GetTile(Pos.x, Pos.y) || Collision()->GetFTile(Pos.x, Pos.y)) 13:58 < bridge> break; 13:58 < bridge> else 14:04 < bridge> sry im just mad 14:06 < bridge> Anyone has any idea to curb join spamming? I was thinking of just not sending server messages with joins anymore 14:06 < bridge> But that's very suboptimal 14:08 < bridge> you can just group them like normal messages but not only group the last message 14:08 < bridge> Issue is that the bots slightly change their names when joining 14:08 < bridge> So they don't stack 14:08 < bridge> oh right 14:10 < bridge> Another thought I had was throttling joins per ip 14:11 < bridge> you could also make 0 point players not have a join message 14:11 < bridge> This takes a query to get, but I guess it's a cheap one 14:12 < bridge> that's true. 14:12 < bridge> This has to be fixed somehow, it's very annoying :/ 14:13 < bridge> you could make a new hud element for joins that is not so disrupting 14:13 < bridge> next to the kill hud for example 14:14 < bridge> although i think many people would be against it 14:14 < bridge> Yeah this is what I was trying to say with my first idea. But is it prominent enough? The only reason we want the messages is so people can see who joined. DDRace players are very trained to just ignore the kill feed 14:15 < bridge> I guess I should first investigate whether these clients are joining from one ip 14:15 < bridge> the thing that annoys me the most about it is that it disrupts any conversation you have in the chat 14:15 < bridge> yes probably 14:22 < bridge> Is it really that much worse? Because tick isn't implemented it just skips them in the loop 14:23 < bridge> And they're in entities list to keep track which one is deleted so the modability you talked about is preserved 14:25 < bridge> And there's never that many doors for it to be performance issue 14:37 < bridge> where are they deleted? 14:38 < bridge> idk i guess the entity list handles that 14:38 < bridge> bcs if i move my screen away from the doors the destructors get called 14:46 < furo> @learath2 The client library they use sends `NETMSG_CLIENTVER` with a DDNet version string containing a link to the npm package (`https://www.npmjs.com/package/teeworlds/v/${version}`), but I guess if you start auto banning that they will fix it ;D 15:01 < bridge> isn't this only the case if you don't have /showall? 15:04 < bridge> why is this not an obvious thing? 15:05 < bridge> theres no reason to be leaving and joining 50 times per second 15:07 < furo> That's already the case. If you do too many repeated connections you will be unable to join due to `Too many connections in a short time`. 15:09 < bridge> then why no banned ): 15:10 < bridge> i know of 5 ways to dodge that message without touching the code 15:11 < furo> Go on 15:14 < bridge> i wont leak ways to prevent our safety measures xD 15:14 < bridge> i wont leak ways to dodge our safety measures xD 15:14 < bridge> make a pr which prevents em ;D 15:14 < furo> Send in dm :) 15:14 < bridge> sry i dont dm bots, they scare me 15:14 < furo> Okay, keep your secrets then :( 15:15 < bridge> wdym dm you 15:15 < bridge> lmao 15:16 < bridge> furo: i sent dm 15:16 < bridge> dm'ing those bots is a tedious thing but its possible 15:17 < bridge> hmm in fact it does lag if i put 1000 speeders 15:17 < bridge> speeders? xd 15:17 < bridge> doors* 15:18 < furo> @meloƞ Thanks for the tips, I'll create my spam bot now. 15:18 < bridge> FUCK 15:19 < bridge> the server only keeps track of the doors because it needs to send the info to the client. 15:21 < bridge> and how can the client keep track of them to delete doors if not needed? 15:24 < bridge> ( ͡° ͜ʖ ͡°) 15:29 < bridge> nvm it lags even without prediction code 15:29 < bridge> the prediction code doesnt actually change much 15:31 < bridge> ok i get no fps difference with prediction on/off 15:32 < bridge> hmm in fact it does lag if i put 1000 doors 15:38 < bridge> both 140fps with 1000 doors 15:40 < bridge> Did you compile in release mode? 140 FPS seems pretty slow in either case 15:41 < bridge> tested both on debug 15:41 < bridge> ill try release 15:41 < bridge> Debug mode is not meaning to compare performance 15:41 < bridge> Debug mode is not meaningful to compare performance 15:42 < bridge> Always compile in release mode for profiling 15:42 < bridge> (and set all limits in the client to unlimited) 15:43 < bridge> alright ty 15:43 < bridge> thought its the same since the same code is running 15:43 < bridge> and isnt optimized out so maybe better 15:43 < bridge> and isnt optimized out so maybe better to test 15:44 < bridge> Could be very different code when compiled in release mode 15:45 < bridge> yeah i mean when in debug both implementations arent optimized 15:45 < bridge> so they run closer to truth? 15:45 < bridge> maybe but ig i was wrong 15:45 < bridge> But in release maybe the existing was optimized but the new code is not 15:46 < bridge> on release its 270-300 15:47 < bridge> for both 15:47 < bridge> release with debug info but probably doesnt change anything 15:51 < bridge> yeah, that should be fine (and required if you want readable info when profiling) 15:53 < bridge> If you have a test map you could also benchmark with `ddnet_(old|new) "connect localhost; benchmark_quit 60 /absolute/path/to/bench_(old|new).log"` 15:53 < bridge> Then wait 60 seconds 15:53 < bridge> Then you have the frametimes in the log file and can graph those 15:54 < bridge> probably dont need, i look at the in game fps and graph and i cant tell a difference 16:00 < bridge> Is there a good way to determine how much skin should/could be loaded at most? I would go with a simple fixed number of maximum 256/512 skins being loaded at once for starters. Probably just half that number of 32 bit versions. But if it was possible to determine the approximate amount of free VRAM I'd maybe try to more dynamically fill at most 20% of available VRAM with skins. 16:00 < bridge> Is there a good way to determine how many skins should/could be loaded at most? I would go with a simple fixed number of maximum 256/512 skins being loaded at once for starters. Probably just half that number of 32 bit versions. But if it was possible to determine the approximate amount of free VRAM I'd maybe try to more dynamically fill at most 20% of available VRAM with skins. 16:02 < bridge> @essigautomat 16:02 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1355904929507574001/image.png?ex=67eaa05e&is=67e94ede&hm=16ffc7c8028e8ca7a69b89728c65cccdd8c7f0e807416fb0e79f1d6aed89d25d& 16:02 < bridge> why loading only as much is needed, when joining a server doesnt work? 16:05 < bridge> What do you mean? Because of the map? 16:05 < bridge> I'm adding lazy loading/unloading to skins in general 16:05 < bridge> why load 256/512 skins when can only load 64 at most, 1 for each player 16:06 < bridge> For example because 16:06 < bridge> - 128 players 16:06 < bridge> - menus shows more 16:06 < bridge> - skins shouldn't immediately be unloaded/loaded again 16:07 < bridge> Skin loading will be very fast and has zero FPS impact at 240 FPS for me, but should still be avoided 16:07 < bridge> ah right 16:07 < bridge> makes sense then 16:16 < ws-client> @tater 16:16 < bridge> @totar 16:16 < bridge> chiller hes sleeping i think xd 16:17 < ws-client> its middle of the afternoon watafak 16:18 < ws-client> the tclient website says latest version is 10.2.0 and the download links lead to 10.1.2 whats up with that 16:19 < bridge> hes -7 16:19 < ws-client> where is he 16:19 < bridge> dunno 16:19 < bridge> somewhere .7 16:19 < bridge> somewhere -7 16:20 < bridge> he went to sleep like an 2 hours ago xd 16:20 < bridge> i dont think he'll be online for some time 16:20 < bridge> working on a remote means it fetches the skins even when theyre never rendered which is quite annoying as the sshfs is ... really slow (despite both machines having a >1gbps internet, sshfs is just bad xd) 16:20 < bridge> means that the majority of loading time is skins 16:20 < bridge> also funny thing that opening assets causes a loading screen which doesnt respect my ui color and has the old background 17:33 < bridge> Ok 17:33 < bridge> OMG 17:33 < bridge> they have a bridge 17:34 < bridge> It's real 17:40 < bridge> yea ive changed laser rifle to shoot doors 17:40 < bridge> and deleting it works fine 17:40 < bridge> no broken pred 17:41 < bridge> but some race condition when exiting game and crashes so will look for fix 17:41 < bridge> but some race condition when exiting game crashes so will look for fix 17:53 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1355932992081625168/image.png?ex=67eaba81&is=67e96901&hm=73237b4aaaf6471fbe0a78d84576760cd0e839cf4e2951e68649557af61018c6& 17:53 < bridge> extrmely well timed crash 18:06 < bridge> ok fixed, ready for review 🙂 18:08 < bridge> race condition?? xd 18:08 < bridge> you aren't doing anything multi threaded or are you? 18:09 < bridge> no, idk what thats called 18:09 < bridge> in case of destructor it worked when it got deleted with Reset() from world 18:09 < bridge> segfault? 18:09 < bridge> but crashed when quitting game bcs tiles arent initialized 18:10 < bridge> so i guess making reset virtual and overriding it wokrs 18:10 < bridge> so i guess making reset virtual and overriding it works 18:10 < bridge> probably 18:11 < bridge> but crashed when quitting game bcs tiles arent initialized(already deleted) 18:15 < bridge> ```cpp 18:15 < bridge> void dbg_break() 18:15 < bridge> { 18:15 < bridge> int _ = *(volatile int*)nullptr; 18:15 < bridge> //#ifdef __GNUC__ 18:15 < bridge> // __builtin_trap(); 18:15 < bridge> //#else 18:15 < bridge> // abort(); 18:15 < bridge> //#endif 18:16 < bridge> ``` 18:16 < bridge> feature request, segfault instead of sigill/abort so libasan catches :) 18:16 < bridge> (well keep the other 2 incase it doesnt segfault for some reason) 18:18 < bridge> it's less clear within gdb though 18:21 < bridge> you always get the dbg break msg beforehand 18:21 < bridge> does gdb catch builtin trap/abort with stacktrace 18:21 < bridge> yes 18:21 < bridge> libasan can catch signalls but cant give stack trace 18:21 < bridge> i wonder if u can detect at runtime if your in gdb 18:22 < bridge> probably, i know at least a tool that does it 18:22 < bridge> Intel PIN 18:23 < bridge> 18:23 < bridge> not very well 18:25 < bridge> SOLLY HI 18:26 < bridge> WANNA BE FRIENDS ? 18:26 < bridge> WHO WANT TO BE FRIENDS WITH ME? 18:26 < bridge> 😦 18:35 < bridge> You play Roblox. You deserve to be ostracized. 18:35 < bridge> poor guy 18:36 < bridge> Try to act normal around here and people will talk to you 😄 18:40 < bridge> This is undefined behavior, you should set `ASAN_OPTIONS="handle_abort=1"` if you ASAN to handle `abort()` calls instead 18:40 < bridge> This is undefined behavior, you should set `ASAN_OPTIONS="handle_abort=1"` if you want ASAN to handle `abort()` calls instead 18:40 < bridge> it doesnt give me a stack trace 18:42 < bridge> it just seems to set a handler 18:42 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1355945244130148524/image.png?ex=67eac5ea&is=67e9746a&hm=98400635bfe3b5edfa373868a478f94342a33c0026f8b98a2dffe0001c20fe42& 18:42 < bridge> and that doesnt get any info about the caller 18:43 < bridge> ^ hasnt tried it in ages 18:43 < bridge> ^ gonna try it now 18:44 < bridge> Otherwise, does running in gdb with ASAN not work? 18:44 < bridge> i dont like running under gdb x-x 18:44 < bridge> but i dont know 18:44 < bridge> if they step on eachother 18:45 < bridge> everyone segfaults wehn reading from 0 tho 18:45 < bridge> and if it doesnt then it just reads a garbage value which... is fine 18:46 < bridge> No, it's undefined behavior, the compiler is free to do other things like calling random functions 18:46 < bridge> from derefencing a nullptr? 18:46 < bridge> idk why a compiler would... do that 18:46 < bridge> because optimizations 18:47 < bridge> it may elude the next function call as well 18:47 < bridge> oh i guess so if type shenangns 18:47 < bridge> (eg std::optional) 18:47 < bridge> but thats an int 18:47 < bridge> and everything after it doesnt have to be run and doesnt much care about previous state 18:48 < bridge> also its volatile so the compiler cant optimize it away 18:48 < bridge> while this looks funny, It actually makes sense if you are able to understand the contexts. Is anything marked in this positions unclear for you? 18:51 < bridge> `. It is allowed to compile code that dereferences a null pointer into code that formats your hard disk.` hilarious 18:52 < bridge> if it makes it more certain can force it to never be inlined and extern c it 18:55 < bridge> I fixed everything, just looked funny 19:23 < bridge> @sollybunny https://github.com/google/sanitizers/wiki/AddressSanitizerAndDebugger 19:23 < bridge> are you trying this? xd 19:23 < bridge> or what is this about 19:23 < bridge> libasan is made by google yes 19:24 < bridge> look at the page... 19:24 < bridge> think before typing 19:24 < bridge> i did think 19:24 < bridge> i didnt click the link tho 19:24 < bridge> but no im not 19:24 < bridge> but no im not trying to use libasan and gdb at the same time, nor od i want to x-x 19:25 < bridge> ok 20:21 < ws-client> @zhn what does чо ноу mean? 20:29 < bridge> "what no" xd 20:33 < bridge> @sollybunny use @milkeeycat as the backend 20:33 < bridge> @milkeeycat where api 20:38 < bridge> @sollybunny Looks like you discarded the second commit from https://github.com/ddnet/ddnet/pull/9735#discussion_r1976703549 in your rebase? 20:39 < bridge> oops did i 20:39 < bridge> Just squash the changes into one commit 20:39 < bridge> thats what i thought i did 20:39 < bridge> Maybe you didn't fetch before rebasing 20:39 < bridge> ``` 20:39 < bridge> git reset --soft ddnet/master 20:39 < bridge> git commit -m ... 20:39 < bridge> git push --force 20:39 < bridge> ``` 20:40 < bridge> ^ or my shitty version of it 20:40 < bridge> Because the commit was made using GitHub interface I think 20:40 < bridge> oh yeah 20:41 < bridge> didnt pull 20:43 < bridge> git fetch —all is important for making sure u have the right refs on remote branches iirc 20:43 < bridge> i just didnt pull 20:43 < ws-client> @totar also is it tater client or tclient? 20:43 < bridge> 6 20:43 < ws-client> the branding seems a bit all over the place 20:43 < bridge> one stands for the other 20:43 < bridge> also sometimes its called just tater 20:43 < ws-client> horrible 20:43 < bridge> which annoys me xd 20:43 < ws-client> yes 20:43 < ws-client> pls fix solly 20:43 < bridge> TaterClient-DDNet 20:44 < bridge> sooo 20:44 < bridge> tclient/tater client i dont mind that much 20:44 < ws-client> https://tclient.app/ 20:44 < bridge> i think it should be called just tater 20:44 < ws-client> but tater is a person 20:44 < ws-client> or is it totar 20:44 < ws-client> or sjrc6 20:44 < ws-client> omg 20:44 < bridge> tater 20:44 < bridge> sjrc6 is old name 20:44 < bridge> proabbly 20:44 < bridge> @totar explain yourself 20:44 < ws-client> horrible 20:45 < bridge> its totar on discord cuz tater was taken probably 20:46 < bridge> @robyt3 btw can i add handle abort = 2 into the thing 20:46 < bridge> @robyt3 btw can i add handle abort = 1 into the thing 20:47 < bridge> handle_abort=1 20:49 < bridge> yeah, makes sense I guess if this also makes ASan catch `abort` 20:50 < bridge> theres now attempt many 20:50 < bridge> pushed 20:51 < bridge> ` wget "javascript:void(0);"` hate when i copy a url 20:51 < bridge> and its bloody javascript:void(0) 20:54 < bridge> yea 21:11 < bridge> is there a reason i can't bind hdf to mousewheeldown? 21:11 < bridge> or it is a bug 21:11 < bridge> i mean i can bind but it doesn't work 21:15 < bridge> Mouse wheel works different than other keys, when you move it it presses and immediately releases the key 21:16 < bridge> yeah so i would expect a hammer from my dummy 21:16 < bridge> `bind mousewheeldown "+fire;+toggle cl_dummy_hammer 1 0"` 21:17 < bridge> which it doesn't 21:18 < bridge> `+toggle` only works with keys that are held down, but mouse wheel is never held down 21:18 < bridge> try `toggle` 21:19 < bridge> oh that's so annoying I love it 21:19 < bridge> need to move scroll wheel two clicks, your tee fires twice for every dummy hammer 21:20 < bridge> i'm basically trying to learn 3fly without external tools 21:20 < bridge> or cheats* 21:21 < bridge> Can't you 3fly with normal binds? 21:22 < bridge> dummy 3fly 21:22 < bridge> im noob 21:22 < bridge> i dont release lmb 21:22 < bridge> https://cdn.discordapp.com/attachments/252358080522747904/1348432057042206922/C60DF6305554C32B4DCAF4EEEB89DF2E.gif 21:25 < bridge> `std::unique_ptr m_pBackend = nullptr;` 21:25 < bridge> should all pointer types be p... 21:27 < bridge> yeah, we also use `p` prefix for smart pointers 21:28 < bridge> can i add that to contributing 21:28 < bridge> can i add that to contributing.md 21:28 < bridge> sure 21:28 < bridge> and make it a table while im at it 21:29 < bridge> ```cpp 21:29 < bridge> `C` 21:29 < bridge> 21:29 < bridge> Class, CMyClass, This goes for structures as well. 21:29 < bridge> ``` 21:29 < bridge> hmm u use s though 21:31 < bridge> `struct`s are legacy also, new code should always use `class`es. Not sure if that's in the guide yet 21:31 < bridge> it is 21:32 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1355988155672563925/image.png?ex=67eaede1&is=67e99c61&hm=d0c5eed1978246723475a832d8bb59f7e9da715ff3483f05776023620e465b3f& 21:32 < bridge> also what are these examples 21:33 < bridge> oh nvm 21:48 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1355992125891805405/skin-lazy-loading.mp4?ex=67eaf193&is=67e9a013&hm=f8d0be3039a4723da802a69471c7c807550ed13c75bd6d5670c7949b429038a0& 21:56 < bridge> hell yeah 21:59 < bridge> https://www.reddit.com/r/ProgrammerHumor/comments/1jngeon/willbewidelyadoptedin30years/ 22:02 < bridge> 😄 22:05 < bridge> fucking finally 22:06 < bridge> `fputs("mystring", stdout);` 22:06 < bridge> ): 22:07 < bridge> i think jsut `puts` is enough, no need for `fputs` 22:09 < bridge> `The puts function appends the newline character to the output, while fputs function does not.` 22:20 < bridge> my brain is leaking 22:20 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1356000058377769101/image.png?ex=67eaf8f7&is=67e9a777&hm=1de242d520c5a49128b5898371c2bcaa61c5cd83720e0e3c78f8d3e5d233f92f& 22:20 < bridge> elak 22:27 < bridge> :O 22:29 < bridge> oh wait these already exist? 22:30 < bridge> idk what is that i was just wandering about 22:31 < bridge> how do i use it i cant get it to work? 22:31 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1356003038535618800/image.png?ex=67eafbbd&is=67e9aa3d&hm=7bb5e3bc52fa1f4620271fc9f5b32b69e0de44728e91a8570deb353754ed9e1d& 22:32 < bridge> yeah im just trying to fix this 22:32 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1356003108198551732/image.png?ex=67eafbce&is=67e9aa4e&hm=3714a5005890e7d9f19bbf2985f01fc99081eb7b33c5c385a76ee7c3a64d9dae& 22:32 < bridge> `closing favorites group while it is empty, ignoring` 22:32 < bridge> i dont think it should ignore it 22:32 < bridge> just discard the group 22:33 < bridge> what i did is discard tho.. 22:33 < bridge> maybe i should change the msg 22:34 < bridge> well probably since thats how i read it /shrug 22:34 < bridge> i think this entity here 22:34 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1356003756314988836/image.png?ex=67eafc68&is=67e9aae8&hm=b182419289fd812b4a375ab131511ff312809c756b5c54d902f2262a83ab57e4& 22:34 < bridge> is the favourate group 22:34 < bridge> but obviously it doesnt work 22:35 < bridge> this is the "adding group of 0 favorites" 22:35 < bridge> so it is invalid 22:35 < bridge> oh maybe 22:36 < bridge> what is a favourite group 22:36 < bridge> ^ 22:36 < bridge> `closing favorites group while it is empty, discarded` good? 22:37 < bridge> my wording is bad 22:37 < bridge> discarding empty favorite group as it is empty 22:37 < bridge> discarding empty favorite group 22:37 < bridge> okay 22:38 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1356004583427670036/image.png?ex=67eafd2e&is=67e9abae&hm=f9cbe80f14dfef316495479e20668b7858d515770dab6c8aad590cfa3af8a6a3& 22:38 < bridge> i think its supposed to accept an argument 22:38 < bridge> https://cdn.discordapp.com/attachments/252358080522747904/1267876556261560454/EB37683D3A4CDA1932DD5DD1561EC9AF.gif 22:39 < bridge> @pioooooo are you just doing this or making them actually do something 22:39 < bridge> no 22:39 < bridge> (it wasnt a yes/no) 22:39 < bridge> im just fixing this 22:39 < bridge> i mean 22:39 < bridge> okay 22:39 < bridge> :] 22:39 < bridge> ;} 22:39 < bridge> im going to make them do something 22:40 < bridge> there are people who want "custom communities", "tags" or whatever 22:40 < bridge> this feature is already here, if unused 22:45 < bridge> wait... 22:45 < ws-client> @Solly (bun bun) hmm the favorite groups make exec parsing stateful ._. 22:45 < bridge> maybe fav groups are meant to let you have multiple ips per sevrer 22:45 < bridge> not really? 22:45 < ws-client> what aboutputting it in one command like ``add_favorite_group gaming 127.0.0.1:8303`` 22:45 < bridge> you cant determine whether an add_favourate was in a fav group 22:46 < bridge> as for if its good or not to do so 22:46 < bridge> yeah if something new was being added thats how i would do it 22:46 < bridge> im stil tryna figure out how add_fav_group is used 22:47 < bridge> agh the browser no longer shows 7 connections ): 22:48 < bridge> @chillerdragon it also means removing favourate groups 22:48 < bridge> if they do nothing 22:51 < bridge> https://github.com/ddnet/ddnet/commit/6600024f243e338ed3fc1423b073b933b13a5d21 22:54 < bridge> ¯\_(ツ)_/¯