00:02 <+bridge> [ddnet] naively I would think so 00:04 <+bridge> [ddnet] @deen can you show a `ulimit -a | grep open`? 00:04 <+bridge> [ddnet] Though I wonder why so many files are stuck open :p 00:04 <+bridge> [ddnet] ❯ ulimit 00:04 <+bridge> [ddnet] unlimited 00:04 <+bridge> [ddnet] :poggers: 00:04 <+bridge> [ddnet] Oh, I bet I forgot an io_close 00:05 <+bridge> [ddnet] why use grep 00:05 <+bridge> [ddnet] ulimit -n 00:05 <+bridge> [ddnet] does the same right 00:05 <+bridge> [ddnet] I didn't remember the flag 00:05 <+bridge> [ddnet] it tells u it 00:05 <+bridge> [ddnet] if u do ulimit -a 00:05 <+bridge> [ddnet] xd 00:05 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/764247297441660948/unknown.png 00:06 <+bridge> [ddnet] I now know this, I hadn't checked 00:06 <+bridge> [ddnet] :greenthing: 00:06 <+bridge> [ddnet] 1024 00:06 <+bridge> [ddnet] @deen I think the last commit should fix it 00:07 <+bridge> [ddnet] Though github is being a little bit of a goof right now 00:07 <+bridge> [ddnet] ❯ cat /proc/sys/fs/file-max 00:07 <+bridge> [ddnet] 9223372036854775807 00:07 <+bridge> [ddnet] whats this 00:07 <+bridge> [ddnet] :justatest: 00:07 <+bridge> [ddnet] I pushed a commit on the branch and it didn't get added to the PR 00:07 <+bridge> [ddnet] Yes, works now 00:08 <+bridge> [ddnet] @Ryozuki I think that one is the absolute maximum 00:08 <+bridge> [ddnet] Like the filesystem just can't do any more 😄 00:08 <+bridge> [ddnet] well its a lot 00:08 <+bridge> [ddnet] xD 00:08 <+bridge> [ddnet] @Learath2 what does fix do btw? just overwrite files? 00:08 <+bridge> [ddnet] or move modified files to config_directory too? 00:09 <+bridge> [ddnet] For now it will get the missing files and overwrite the others 00:09 <+bridge> [ddnet] I couldn't figure out how to get to the `config_directory` 00:09 <+bridge> [ddnet] Just need to implement `CStorage::Store` and it'll move the modified and extra files to the config dir 00:11 <+bridge> [ddnet] I wonder why the kernel uses a signed integer for indexing the file handles 00:16 <+bridge> [ddnet] Some argue that with unsigned ints there's a high risk of underflow, not sure if that's the reason in the kernel 00:17 <+bridge> [ddnet] huh, signed integers overflow too, even worse they overflow in an undefined way in C and C++ 00:18 <+bridge> [ddnet] Yeah, but not so commonly. For example going through the array from the back and your condition is i >= 0 is an easy mistake with unsigned ints 00:18 <+bridge> [ddnet] Ah, yeah, I've seen that many times 00:19 <+bridge> [ddnet] array index in C/C++ is also signed int 00:22 <+bridge> [ddnet] Though curiously `std::vector::size()` returns `size_type` which is unsigned. 00:25 <+bridge> [ddnet] Great, somehow I can't comment on Github anymore 😄 00:26 <+bridge> [ddnet] oh, adblocker is blocking the + 00:35 <+Learath2> :D 00:39 <+bridge> [ddnet] Linuxbroke, sendhelp 00:44 <+bridge> [ddnet] Anyone who values their lives should enable sysrq on their kernel 00:53 <+bridge> [ddnet] <Дядя Женя> Can you give me any hints? I'm trying to understand how chat messages working, so I can try to add roundrect background for each message for example 00:53 <+bridge> [ddnet] <Дядя Женя> Can you give me any hints? I'm trying to understand how chat messages are working, so I can try to add roundrect background for each message for example 00:54 <+bridge> [ddnet] `src/game/client/components/chat.cpp` is where the chat messages are rendered 00:55 <+bridge> [ddnet] You are looking for the `OnRender` function 00:55 <+bridge> [ddnet] <Дядя Женя> I see the m_aLines[MAX_LINES] array, which is, I assume, getting some new messages somewhere (maybe I saw that part of code already, did not pay attention) 00:55 <+bridge> [ddnet] <Дядя Женя> then creates text containers in `OnPrepareLines` and `OnRender` 00:55 <+bridge> [ddnet] `OnMessage` is where the new messages are added to that array 00:56 <+bridge> [ddnet] <Дядя Женя> and seems like calling `TextRender()->RenderTextContainer()` 00:56 <+bridge> [ddnet] <Дядя Женя> and now I stop understanding what's going on 00:57 <+bridge> [ddnet] In `OnRender` those prepared text containers are rendered 00:57 <+bridge> [ddnet] You want to render your rect before that 00:57 <+bridge> [ddnet] <Дядя Женя> yeah, nice hint 00:57 <+bridge> [ddnet] <Дядя Женя> but anyway I'm trying to understand how text is exactly rendered, as far as I can go 00:58 <+bridge> [ddnet] Well good luck, 12 years working on this codebase and I still don't have all of text rendering down 00:58 <+bridge> [ddnet] <Дядя Женя> also, seems like my visual studio's `find all references` function is not working properly for ddnet 00:58 <+bridge> [ddnet] <Дядя Женя> sad 00:59 <+bridge> [ddnet] `CTextRender::TextEx` is the function that renders the actual text 00:59 <+bridge> [ddnet] <Дядя Женя> that's really bad, 'cause I used to use it a lot 00:59 <+bridge> [ddnet] <Дядя Женя> for example, I want to know, if `chat.cpp` is the only one who uses `CTextRender::RenderTextContainer` 00:59 <+bridge> [ddnet] Well VSCode with the cmake tools has great "find all references". IDE 0 - Text Editor 1 01:00 <+bridge> [ddnet] @Дядя Женя it's not, nameplates are also rendered in TextContainers 01:00 <+bridge> [ddnet] <Дядя Женя> idk what's wrong with my VS now, working perfectly in other projects 01:00 <+bridge> [ddnet] killmessages use them too, that's it iirc 01:01 <+bridge> [ddnet] <Дядя Женя> Oh, it was weird button over there 01:02 <+bridge> [ddnet] The idea with a text container is that we use immediate mode ui, which means every shape is rendered every frame but text can get a little costly to render, so we render them once inside the container, then in future we just render the entire container 01:02 <+bridge> [ddnet] <Дядя Женя> https://cdn.discordapp.com/attachments/293493549758939136/764261424943857664/unknown.png 01:02 <+bridge> [ddnet] <Дядя Женя> works fine now 01:03 <+bridge> [ddnet] <Дядя Женя> > The idea with a text container is that we use immediate mode ui, which means every shape is rendered every frame but text can get a little costly to render, so we render them once inside the container, then in future we just render the entire container 01:03 <+bridge> [ddnet] <Дядя Женя> @Learath2 that's the best practice for that 01:03 <+bridge> [ddnet] <Дядя Женя> and I got it already 01:03 <+bridge> [ddnet] <Дядя Женя> But still can't understand what's going on in `RenderTextContainer` 01:03 <+bridge> [ddnet] An even more performant/gpu friendly way would be doing all of the ui in retained mode, but that's a massive rework that brings many issues with it that no one really wants to undertake 01:04 <+bridge> [ddnet] Well which part don't you get? 01:05 <+bridge> [ddnet] <Дядя Женя> Not sure why you're so worried about optimization in ddnet client 01:05 <+bridge> [ddnet] <Дядя Женя> It's running pretty fast now 01:05 <+bridge> [ddnet] I'm not, I'm perfectly fine with the UI as is, @Jupstar ✪ doesn't like immediate mode though 01:06 <+bridge> [ddnet] <Дядя Женя> ```cpp 01:06 <+bridge> [ddnet] <Дядя Женя> if(TextContainer.m_StringInfo.m_SelectionQuadContainerIndex != -1) 01:06 <+bridge> [ddnet] <Дядя Женя> { 01:06 <+bridge> [ddnet] <Дядя Женя> Graphics()->SetColor(1.f, 1.f, 1.f, 1.f); 01:06 <+bridge> [ddnet] <Дядя Женя> Graphics()->RenderQuadContainer(TextContainer.m_StringInfo.m_SelectionQuadContainerIndex, 1, -1); 01:06 <+bridge> [ddnet] <Дядя Женя> 01:06 <+bridge> [ddnet] <Дядя Женя> static int64 s_CursorRenderTime = time_get_microseconds(); 01:06 <+bridge> [ddnet] <Дядя Женя> 01:06 <+bridge> [ddnet] <Дядя Женя> if((time_get_microseconds() - s_CursorRenderTime) > 500000) 01:06 <+bridge> [ddnet] <Дядя Женя> Graphics()->RenderQuadContainer(TextContainer.m_StringInfo.m_SelectionQuadContainerIndex, 0, 1); 01:06 <+bridge> [ddnet] <Дядя Женя> if((time_get_microseconds() - s_CursorRenderTime) > 1000000) 01:06 <+bridge> [ddnet] <Дядя Женя> s_CursorRenderTime = time_get_microseconds(); 01:06 <+bridge> [ddnet] <Дядя Женя> } 01:06 <+bridge> [ddnet] <Дядя Женя> ``` 01:06 <+bridge> [ddnet] Try not to paste multiple lines here, it's linked to irc so you are kinda spamming there 01:07 <+bridge> [ddnet] <Дядя Женя> ok, sorry 01:10 <+bridge> [ddnet] Okay, that looks to be a part of the selection and cursor support 01:11 <+bridge> [ddnet] <Дядя Женя> Pretty sure that I will drop the idea of trying to make something in ddnet code, but ideally I don't like the idea of storing lines instead of messages 01:12 <+bridge> [ddnet] What do you mean? We do store the entire message in one "line" 01:12 <+bridge> [ddnet] <Дядя Женя> Even when it splits in 2? 01:12 <+bridge> [ddnet] Line wrapping is applied later by the text renderer 01:13 <+bridge> [ddnet] <Дядя Женя> Ok, nice 01:13 <+bridge> [ddnet] We give it the entire line, we give it the width of the box, it chops the text up 01:13 <+bridge> [ddnet] fwiw the selection stuff doesn't look used yet, I wonder what it can do 🙂 01:14 <+bridge> [ddnet] Any other questions? I'll just head off to sleep 01:14 <+bridge> [ddnet] <Дядя Женя> Nothing. I remember seeing some useless code few years ago, when I tried to open ddnet code again 01:15 <+bridge> [ddnet] <Дядя Женя> Wondering if it was fixed now xD 01:15 <+bridge> [ddnet] We try our best to clean up unused stuff, but it's like 1.5 decades of work, it's hard to clean the entire thing up and not miss something 01:20 <+bridge> [ddnet] <Дядя Женя> Do you know where is it wrapping lines of chat text? 01:22 <+bridge> [ddnet] <Дядя Женя> nvm, found it 01:36 <+Obiwan> Hey Jupstar 01:36 <+Obiwan> I understood about your advice, and downloaded fng2 mod, but i have 1 quetion: How to enable golden spikes? 01:40 <+Obiwan> +bridge Jupstar: Hello, are you alive? huh 01:43 <+bridge> [ddnet] Well obv Jupstar isn't here all day every day :D 01:44 <+Obiwan> It isnt funny huh, i awaiting he's tip 01:50 <+bridge> [ddnet] https://en.cppreference.com/w/cpp/utility/launder 01:51 <+bridge> [ddnet] this seems very hard to understand, I'm giving up for tonight 01:52 <+bridge> [ddnet] is it just to lessen TBAA effects? 01:58 <+bridge> [ddnet] <Дядя Женя> I may be rly stupid, but what's going on here? 01:58 <+bridge> [ddnet] <Дядя Женя> https://cdn.discordapp.com/attachments/293493549758939136/764275653016289281/unknown.png 01:59 <+bridge> [ddnet] <Дядя Женя> Right after that goes 01:59 <+bridge> [ddnet] <Дядя Женя> https://cdn.discordapp.com/attachments/293493549758939136/764275957065318410/unknown.png 02:00 <+bridge> [ddnet] <Дядя Женя> am I that bad in math or is it nonsense? 02:13 <+bridge> [ddnet] <Дядя Женя> oh, ok, it's rounding 02:16 <+bridge> [ddnet] @heinrich5991 std::launder is indeed to stop TBAA from going overboard 02:18 <+bridge> [ddnet] <Дядя Женя> ok, I have a question, 30 mins not found any answer for that 02:19 <+bridge> [ddnet] <Дядя Женя> why does new line of chat message start with less offset 02:19 <+bridge> [ddnet] <Дядя Женя> why does new line of chat message start with less x_offset 02:20 <+bridge> [ddnet] Which line? 02:20 <+bridge> [ddnet] <Дядя Женя> second xD 02:20 <+bridge> [ddnet] I mean in the code 02:21 <+bridge> [ddnet] <Дядя Женя> https://cdn.discordapp.com/attachments/293493549758939136/764281337816285214/unknown.png 02:21 <+bridge> [ddnet] <Дядя Женя> I can't find any reason for that. Cursor always returned to m_StartX 02:21 <+bridge> [ddnet] <Дядя Женя> I can't find any reason for that. Cursor is always returned to m_StartX 02:26 <+bridge> [ddnet] It's for the heart for friends 02:26 <+bridge> [ddnet] <Дядя Женя> omg 02:26 <+bridge> [ddnet] it should disappear if you disable `cl_message_friend` 02:26 <+bridge> [ddnet] chat.cpp:893 02:29 <+bridge> [ddnet] (The first part where you might think it's getting rendered it L869 but if you don't set `TEXTFLAG_RENDER` on a cursor, it won't really render, it will just advance the cursor) 02:32 <+bridge> [ddnet] <Дядя Женя> it's really dirty hacks going there 02:35 <+bridge> [ddnet] <Дядя Женя> how do I print to the console? 02:42 <+bridge> [ddnet] ``` 02:42 <+bridge> [ddnet] dbg_msg("topic", "here is a number %d and here is some text: %s", 42, "hello world"); 02:42 <+bridge> [ddnet] ``` 02:42 <+bridge> [ddnet] @Дядя Женя ^ 07:15 <+bridge> [ddnet] Obiwan golden spokes are tiles in the map. In ddnet editor you can select fng entities 07:18 <+bridge> [ddnet] @russian letters, pixel alignment tries to use less sub pixels. But since the font size is always an integer instead of float it probably not often useful, just added bcs it's anyways been there 10:01 <+bridge> [ddnet] > Money laundering is used to prevent people from tracing where you got your money from. Memory laundering is used to prevent the compiler from tracing where you got your object from, thus forcing it to avoid any optimizations that may no longer apply. 10:01 <+bridge> [ddnet] https://stackoverflow.com/questions/39382501/what-is-the-purpose-of-stdlaunder 10:01 <+bridge> [ddnet] :tee_thinking: 10:33 <+bridge> [ddnet] It's something you'll likely never use 10:34 <+bridge> [ddnet] Need to be placement newing something with a const qualified member over something else 10:35 <+bridge> [ddnet] at least the name is appropriate. 11:04 <+bridge> [ddnet] It's useful if you want to separate allocation from initialization (placement new) on objects with const data (avoiding ill-formedness). So it's a low level feature (which should have been a languange feature instead of an STL feature) 11:47 <+bridge> [ddnet] @Jupstar ✪ theorically its implementation-defined not ub :monkalaugh: 11:48 <+bridge> [ddnet] that is ub for me 11:48 <+bridge> [ddnet] :monkalaugh: 11:53 <+bridge> [ddnet] :justatest: 11:54 <+bridge> [ddnet] backend_sdl is full of ub 11:54 <+bridge> [ddnet] why do we call it find_binary 11:54 <+bridge> [ddnet] if it does partition_linear 11:55 <+bridge> [ddnet] isnt that linear then xd 11:55 <+bridge> [ddnet] ` Cmd_Texture_Create(static_cast(pBaseCommand));` 11:55 <+bridge> [ddnet] looks like doing this is not ok 11:55 <+bridge> [ddnet] what does it say 11:56 <+bridge> [ddnet] ah no 11:56 <+bridge> [ddnet] downcasting misaligned memory 11:56 <+bridge> [ddnet] address* 11:56 <+bridge> [ddnet] 11:56 <+bridge> [ddnet] its all here 11:56 <+bridge> [ddnet] @deen can you quickly look into find_binary, maybe i just dont understand it, but doesnt look like binary search xd 11:56 <+bridge> [ddnet] or what is the sense of find_binary xd 11:56 <+bridge> [ddnet] binary data? 11:59 <+bridge> [ddnet] @Ryozuki mhh yeah, looks like alot of false positives probably 11:59 <+bridge> [ddnet] @Jupstar ✪ never looked at that code, looks like it calls partition_linear by mistake and should be partition_binary 11:59 <+bridge> [ddnet] ok 11:59 <+bridge> [ddnet] but weird 11:59 <+bridge> [ddnet] https://github.com/ddnet/ddnet/blob/9d39e1da6d6a592d71a3992f4450e37b5cb5616f/src/engine/client/graphics_threaded.h#L586 11:59 <+bridge> [ddnet] i think it comes from here 12:00 <+bridge> [ddnet] its just alot of polymorphism casts 12:00 <+bridge> [ddnet] that it detects 12:00 <+bridge> [ddnet] i dunno if it has some option for old cast 12:00 <+bridge> [ddnet] ubsan doesn't have false positives btw, everything it finds is an actual problem 12:00 <+bridge> [ddnet] &m_CmdBuffer.DataPtr returns a unsigned char 12:00 <+bridge> [ddnet] oh 12:01 <+bridge> [ddnet] no false positives :justatest: 12:01 <+bridge> [ddnet] src/game/client/components/menu_background.cpp:42:40: runtime error: downcast of address 0x5612c7fb0480 which does not point to an object of type 'CMenuMap' 12:01 <+bridge> [ddnet] 0x5612c7fb0480: note: object is of type 'CBackgroundEngineMap' 12:01 <+bridge> [ddnet] looks wrong imo 12:01 <+bridge> [ddnet] it clearly creates a cmenumap 12:02 <+bridge> [ddnet] even used `override` to not fall into the signature trap 12:02 <+bridge> [ddnet] or is the vtable not available in constructors 12:02 <+bridge> [ddnet] @deen https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81705 12:03 <+bridge> [ddnet] are you sure? 12:03 <+bridge> [ddnet] we use the clang version, not gcc. and also "no false positives assuming no bugs in ubsan" 12:04 <+bridge> [ddnet] i still dont see a bug in that code 12:05 <+bridge> [ddnet] yeah 12:05 <+bridge> [ddnet] so i think the undefined behaviour is virtual functions 12:05 <+bridge> [ddnet] makes sense and good to know 12:06 <+bridge> [ddnet] about memory alignment 12:06 <+bridge> [ddnet] in x86 it probs doiesnt matter too much 12:06 <+bridge> [ddnet] but we could fix all xd 12:06 <+bridge> [ddnet] exactly, we should still fix them for other cpu archs 12:07 <+bridge> [ddnet] but thats alot of work actually 12:07 <+bridge> [ddnet] the whole command buffer just doesnt care about alignment 12:07 <+bridge> [ddnet] what would you need to do to fix this? 12:07 <+bridge> [ddnet] align memory 12:07 <+bridge> [ddnet] alignof(ptr_type) 12:07 <+bridge> [ddnet] is 8 on 64bit 12:08 <+bridge> [ddnet] so always add paddings 12:08 <+bridge> [ddnet] to all commands 12:08 <+bridge> [ddnet] well if we go even further 12:08 <+bridge> [ddnet] fix all floating point alignments 12:08 <+bridge> [ddnet] they make more trouble under arm 12:10 <+bridge> [ddnet] `alignas(alignof(unsigned)) unsigned m_Cmd;` ? 12:11 <+bridge> [ddnet] never used this 12:11 <+bridge> [ddnet] gotta research 12:13 <+bridge> [ddnet] no 12:13 <+bridge> [ddnet] not unsigned, that wont matter alot 12:13 <+bridge> [ddnet] its the pointer itself 12:13 <+bridge> [ddnet] ah 12:33 <+bridge> [ddnet] we have alot of floating point errors @deen 😄 12:33 <+bridge> [ddnet] yes 12:33 <+bridge> [ddnet] i fixed alot somewhere 12:43 <+bridge> [ddnet] ah sad, i probs didnt save most fixes, but atleast one: 12:43 <+bridge> [ddnet] https://github.com/Jupeyy/ddnet/commit/adb5aabe725cc9f4fdce38f444b5f27d7235c2b3 12:44 <+bridge> [ddnet] sadly most of these things are also in gamecore.cpp or .h 12:44 <+bridge> [ddnet] so i didnt want to touch them i think 12:44 <+bridge> [ddnet] this case i saved bcs the result is sent to the GPU 12:45 <+bridge> [ddnet] but opengl has nan and inf, so not UB directly 13:10 <+bridge> [ddnet] find_binary is really find_binary 13:10 <+bridge> [ddnet] it confused me for a while too 13:10 <+bridge> [ddnet] why 13:11 <+bridge> [ddnet] wait 13:11 <+bridge> [ddnet] u mean find binary data? 13:11 <+bridge> [ddnet] i dont really get how its binary search, i also switched it and still works xd 13:11 <+bridge> [ddnet] Nah, you were talking about partition_binary and partition_linear 13:11 <+bridge> [ddnet] yes 13:11 <+bridge> [ddnet] its used in find_binary 13:11 <+bridge> [ddnet] partition_linear 13:12 <+bridge> [ddnet] i changed it in 13:12 <+bridge> [ddnet] https://github.com/ddnet/ddnet/pull/3053 13:12 <+bridge> [ddnet] and still works 13:12 <+bridge> [ddnet] Oh find_binary was using partition_linear? 😄 13:12 <+bridge> [ddnet] yeah 😄 13:12 <+bridge> [ddnet] :lol: 13:13 <+bridge> [ddnet] troll function for sure 13:13 <+bridge> [ddnet] @redix fixed it on vanilla a year ago, why wouldn't he share? traitor 13:14 <+bridge> [ddnet] xDDD 13:15 <+bridge> [ddnet] Only noticed that while fixing the snapshots ^^ 13:15 <+bridge> [ddnet] welcome in the club 13:16 <+bridge> [ddnet] Was a bit confused when I noticed that :D 13:16 <+bridge> [ddnet] welcome in the club 13:16 <+bridge> [ddnet] xd 13:18 <+bridge> [ddnet] @deen about the skin fix, we have todo it differently 13:18 <+bridge> [ddnet] else skins like blacktee are broken 13:20 <+bridge> [ddnet] too bad, can you change it? 13:21 <+bridge> [ddnet] inside ur pr? 13:29 <+bridge> [ddnet] The downcast thing is because entities remove and insert themselves from the gameworld, which is just odd 13:46 <+bridge> [ddnet] but that wouldnt be ub would it? 13:46 <+bridge> [ddnet] it has to be constructed wrongly somehow 13:50 <+bridge> [ddnet] Currently when RemoveEntity is called from `~CEntity` which happens after `~CCharacter`. At which point it is just a `CEntity` which is UB to cast to a `CCharacter` and call a method on 13:53 <+bridge> [ddnet] ah alight 13:53 <+bridge> [ddnet] ah alright 14:44 <+bridge> [ddnet] <Дядя Женя> k, good morning. I'll continue asking stupid questions here if you don't mind 14:45 <+bridge> [ddnet] about text? 14:45 <+bridge> [ddnet] <Дядя Женя> chat 14:45 <+bridge> [ddnet] <Дядя Женя> I managed to align some chat messages text yesterday and even draw roundrect background for each message, but it's too dirty 14:46 <+bridge> [ddnet] <Дядя Женя> The first question is more about cpp I guess, 'cause seems like I suck in it. 14:46 <+bridge> [ddnet] if u doing it for ddnet make sure to use buffered rects xd 14:47 <+bridge> [ddnet] <🖤Smetanolub💎> женя угомонись 14:47 <+bridge> [ddnet] <🖤Smetanolub💎> шо ты пишешь 14:47 <+bridge> [ddnet] <Дядя Женя> I made a function for drawing chat message background in CTextRender class, which is stupud idea. I probably need a reference to CRenderTools here, but I didn't find the way to get it 14:48 <+bridge> [ddnet] u can request it form kernel probably, but do it rather in chat.cpp 15:28 <+bridge> [ddnet] @Jupstar ✪ i guess, or in your own, both are fine 15:30 <+bridge> [ddnet] ok then i'll do it xd 15:32 <+bridge> [ddnet] (i just pushed again) 15:34 <+bridge> [ddnet] oh 15:34 <+bridge> [ddnet] too late i guess xD 15:34 <+bridge> [ddnet] that was my fear xD 15:34 <+bridge> [ddnet] yeah, sorry 😄 16:09 <+bridge> [ddnet] no way again in editor game crashed 16:10 <+bridge> [ddnet] @texnonik did you do anything specific? 16:11 <+bridge> [ddnet] also what version 16:11 <+bridge> [ddnet] we had quite alot changes in the rc 16:12 <+bridge> [ddnet] newest 16:13 <+bridge> [ddnet] 15.0.5, right? 16:13 <+bridge> [ddnet] yes 16:14 <+bridge> [ddnet] i was copying a lot ideas from old map , saved as new map , go load other map put the all copied ideas in other map and while i was deleting parts that i didn't need it freezed and then quit as always happened in old version ... 16:15 <+bridge> [ddnet] i tryed repeat it but it didn't crashed 16:37 <+ChillerDragonTL> what about generating automated crash reports in rlsd clients? 16:37 <+bridge> [ddnet] dbg symbols are quite huge 16:37 <+ChillerDragonTL> I guess even a non debug crash report can be more useful than none idk how exactly that should work without affecting performance 16:37 <+ChillerDragonTL> maybe not even slap a debugger on it 16:38 <+ChillerDragonTL> just track a few function calls and on crash store a backtrace 16:38 <+ChillerDragonTL> or are crashes too rare? I cant tell. 16:38 <+bridge> [ddnet] well the best would be cutting the debug symbols after building so we can keep a client with symbols 16:38 <+bridge> [ddnet] and then just stack trace with memory addresses 16:38 <+bridge> [ddnet] yeah, works fine with splitdwarf 16:39 <+ChillerDragonTL> but does that then require running it inside a debugger? 16:39 <+bridge> [ddnet] i think it just sets a hardware expection or smth 16:40 <+bridge> [ddnet] the os knows that the client crashes too without any debugger 😄 16:40 <+ChillerDragonTL> i run most of my software w symbols and in debug mode and it works fine but i do not think we should ship something like thatr 16:40 <+ChillerDragonTL> but can the os generate a backtrace? 16:41 <+bridge> [ddnet] i dont have too much details on that tbh, but i know that many games do this, and i doubt they trade performance for it 16:41 <+bridge> [ddnet] its like with exceptions 16:42 <+ChillerDragonTL> might aswell optionally sent them back to ddnet automatically 16:42 <+bridge> [ddnet] it already be a huge win if its saved in some error log 16:43 <+ChillerDragonTL> yes 16:43 <+ChillerDragonTL> but i dont know if crashes are even a problem i cant remeber the last crash i had w ddnet 16:44 <+bridge> [ddnet] well it always depends 16:44 <+bridge> [ddnet] if you just joining the server and play its most likely that u wont get any crash, bcs thats what the devs found most easily 16:44 <+ChillerDragonTL> on what 16:44 <+bridge> [ddnet] but editor and stuff is harder for sure 16:44 <+ChillerDragonTL> i use the editor tho 16:44 <+ChillerDragonTL> and demos 16:44 <+ChillerDragonTL> and the console 16:45 <+ChillerDragonTL> and the remote console 16:45 <+bridge> [ddnet] ok xD, well we had crashes tho 16:45 <+ChillerDragonTL> so im just lucky for 5 yrs straight? 16:46 <+bridge> [ddnet] yes 16:46 <+ChillerDragonTL> lol nice 16:46 <+bridge> [ddnet] "is:issue is:open crash " 16:46 <+bridge> [ddnet] ;D 16:46 <+ChillerDragonTL> i actually lost more progress on windows crashing than ddnet crashing 16:47 <+ChillerDragonTL> yikes 12 open 66 closed 16:47 <+ChillerDragonTL> the current reported one might be #1452 16:48 <+ChillerDragonTL> ddnet bot u here? 16:48 <+ChillerDragonTL> wait is it a discord exclusive feature 16:48 <+ChillerDragonTL> omg 16:48 <+ChillerDragonTL> https://github.com/ddnet/ddnet/issues/1452 16:56 <+bridge> [ddnet] It's really hard for us to generate any meaningful backtrace in our application after it crashed 16:56 <+ChillerDragonTL> hm why? 16:58 <+bridge> [ddnet] I'd guess the OSs have support for that 16:58 <+bridge> [ddnet] linux has coredumps, windows probably also has something like that 16:59 <+bridge> [ddnet] Well the OS killed your application for a reason, at that point even if you catch the signal, there is no guarantee that anything makes sense 16:59 <+bridge> [ddnet] You could have completely overwritten the stack e.g. 16:59 <+bridge> [ddnet] yea, but that's how we usually debug ^^ 17:00 <+bridge> [ddnet] the debugger also just looks at the stack (that might have been overwritten already) 17:00 <+bridge> [ddnet] Well we get to run it a couple times, we get to try different tools, it's acceptable when the crash is happening on my machine 17:01 <+bridge> [ddnet] On iOS and Android there are many solutions that monitor the call stack by sampling it, it does cost a bit, but you get real nice crash reports 17:02 <+bridge> [ddnet] oh, interesting 17:02 <+bridge> [ddnet] got a name/link? 17:03 <+bridge> [ddnet] <Дядя Женя> Is the server send plain text as system messages and not events? 17:03 <+bridge> [ddnet] yes 17:03 <+bridge> [ddnet] <Дядя Женя> When will it start send events? 17:04 <+bridge> [ddnet] <Дядя Женя> When will it start sending events? 17:04 <+bridge> [ddnet] Mh, I can't seem to remember where I saw it, must have been a talk on debugging but the guy had access to the call stack at 150hz for the last 5 seconds 17:05 <+bridge> [ddnet] "many solutions" might have been exaggerating a bit, I'm not really sure how common it is actually 17:08 <+bridge> [ddnet] Oh I have an idea, how about stealing crashpad from chromium? 17:08 <+bridge> [ddnet] that might work 17:08 <+bridge> [ddnet] should be opt in though, might contain personal data 17:09 <+bridge> [ddnet] We just capture it and ask the user if he wants to send it? 17:09 <+bridge> [ddnet] ye 17:09 <+bridge> [ddnet] that's opt-in in my view 17:09 <+bridge> [ddnet] Or maybe we capture it and just save it in a dir, so they can provide it with their report? 17:09 <+bridge> [ddnet] I guess the first one would result in more people reporting though 17:09 <+bridge> [ddnet] that would also work 17:18 <+bridge> [ddnet] Heh, if you sign your application with a fancy expensive certificate, you can gain access to the error reports sent to microsoft 17:35 <+bridge> [ddnet] Or you can use Crashpad 17:36 <+bridge> [ddnet] though it will require using google toolchain which is a bit too complex 17:47 <+bridge> [ddnet] <Дядя Женя> where can I find code that renders this top right list ? 17:47 <+bridge> [ddnet] <Дядя Женя> https://cdn.discordapp.com/attachments/293493549758939136/764514472911306752/unknown.png 17:48 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/764514692244570112/SPOILER_message.txt 17:50 <+bridge> [ddnet] All launch crash from start 17:50 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/764515173821579314/SPOILER_message.txt 17:55 <+bridge> [ddnet] killmessages 18:10 <+bridge> [ddnet] <Дядя Женя> what `Graphics()->MapScreen()` does? 18:11 <+bridge> [ddnet] translate map coordinates into screen coordinates 18:11 <+bridge> [ddnet] (or the other way around, not sure) 19:04 <+bridge> [ddnet] <Дядя Женя> what's the reason for ddnet work a lot worse with significant fps drop and freezes on connecting to server when playing right from the compiled version from source code? Is that something about preprocessors? 19:06 <+bridge> [ddnet] <Дядя Женя> I guess something heavy is not compiled for the public version? 19:07 <+bridge> [ddnet] debug version? 19:07 <+bridge> [ddnet] or what do u mean 19:07 <+bridge> [ddnet] <Дядя Женя> yes 19:08 <+bridge> [ddnet] bcs in debug versions, there are no optimizations and sometimes the compiler's libs have additional things that helps for debugging but slow the execution down 19:09 <+bridge> [ddnet] <Дядя Женя> I just worried if that's my code causes long freeze before joining the server 19:10 <+bridge> [ddnet] well switch to releasewithdebuginfo/release and you'll know 19:31 <+ChillerDragon> @Soreu I finished replacing all textures with SVGs on https://zillywoods.github.io/ZillyWoods-web/ it scales so well on my 4k screen <3 The grass looks a little bit different maybe ill change it. Could you send a screen how it looks like on ur broken end now? :/ 19:32 <+bridge> [ddnet] I'd like to remind you that it is broken for me because of the code I wrote 😅 19:32 <+Ryozuki> ChillerDragon 144hz > 4k screen 19:32 <+bridge> [ddnet] @Soreu fix 19:33 <+bridge> [ddnet] will do 19:35 <+bridge> [ddnet] did u upload to ur database? 19:35 <+bridge> [ddnet] ...someday :justatest: 19:36 <+bridge> [ddnet] i want to have svg :D:D 19:36 <+bridge> [ddnet] He's replacing single tiles from grass_main 19:37 <+bridge> [ddnet] atleast smth 😄 19:37 <+bridge> [ddnet] because I did cut the mapres in pieces to use only the needed ones 19:38 <+bridge> [ddnet] keep it up chillerdragon, looks really good 😄 19:38 <+bridge> [ddnet] https://www.github.com/TeeworldsDB/images/tree/master/realistic%2Ftransparent 19:38 <+bridge> [ddnet] yeah the single tiles, but i'll wait for the full mapres xd 19:38 <+bridge> [ddnet] there they are somehow 19:39 <+bridge> [ddnet] I don't even understand how he pulled part of different repo into the website 19:40 <+bridge> [ddnet] but I barely understand GitHub anyway xd 19:46 <+ChillerDragon> submodule magic i am a git wizard 19:47 <+ChillerDragon> yes Jupstar ofc everythin in the repo and doodads are almost finished but keep in mind i wont produce tilesets from last decade but 0.7 standards :D 19:47 <+ChillerDragon> Ryozuki: nah 60hz the screen is older than time it self and actually affordable xd 19:48 <+ChillerDragon> oh wait u did a compare 19:48 <+ChillerDragon> ok fair guess it depends i have more hz but less pixels on my laptop and i prefer my 60hz big 4k screen 19:49 <+bridge> [ddnet] chillerdragon what u mean with tilesets from last decade? 19:49 <+bridge> [ddnet] can 0.7 client set single tiles or what xd 19:50 <+ChillerDragon> teeworlds uses a new incompatible mapres format 19:50 <+ChillerDragon> to the one that ddnet uses 19:50 <+bridge> [ddnet] wtf, how that 19:50 <+ChillerDragon> im all for backwards compability but sometimes u have to move forwards :) 19:50 <+ChillerDragon> how did u not know? 19:50 <+bridge> [ddnet] but pls explain 19:51 <+bridge> [ddnet] since when? 19:51 <+ChillerDragon> 0.7 rls 19:51 <+bridge> [ddnet] but i used 0.7 tilesets 19:51 <+bridge> [ddnet] they work fine 19:51 <+ChillerDragon> well "work" 19:51 <+ChillerDragon> if u embedd them 19:51 <+bridge> [ddnet] i honestly dunno what u mean 19:51 <+ChillerDragon> sec 19:52 <+ChillerDragon> https://raw.githubusercontent.com/teeworlds/teeworlds/master/datasrc/mapres/grass_main.png https://raw.githubusercontent.com/ddnet/ddnet/master/data/mapres/grass_main.png 19:52 <+bridge> [ddnet] its a normal png 19:52 <+ChillerDragon> if u place shadow in ddnet client and open it in vanilla client its gone 19:53 <+ChillerDragon> do u know what i mean? 19:53 <+bridge> [ddnet] well that not a real problem, if we have svg with shadows, ddnet has shadows again 19:53 <+ChillerDragon> thats the thing 19:53 <+bridge> [ddnet] its just missing in the png 😄 19:53 <+ChillerDragon> i wont make shadows :p 19:53 <+bridge> [ddnet] or opposite 19:53 <+ChillerDragon> i will make 0.7 tiles 19:53 <+bridge> [ddnet] yeah but we dont need to name it grass_main 19:54 <+ChillerDragon> well ok fine 19:54 <+bridge> [ddnet] we could call it grass_4k 19:54 <+bridge> [ddnet] ;D 19:54 <+ChillerDragon> yes then sure no problemo 19:54 <+ChillerDragon> i thought more like replacing the standard tiles 19:54 <+bridge> [ddnet] well we can build uppon your tileset 😄 19:55 <+ChillerDragon> ill pay a lawayer to craft me a 0.7+ license 19:55 <+ChillerDragon> xd 19:55 <+bridge> [ddnet] BSD license.. yes ;D 20:33 <+bridge> [ddnet] suggestion: add more emotes like the once from twitch.tv? like widepeepohappy, Pogu, monkaw etc etc...? 🙂 20:34 <+bridge> [ddnet] suggestion: add more emotes like the once from twitch.tv? like widepeepohappy https://cdn.betterttv.net/frankerfacez_emote/270930/1, Pogu https://cdn.betterttv.net/frankerfacez_emote/256055/1, monkaw https://cdn.betterttv.net/frankerfacez_emote/214681/1 etc etc...? 🙂 20:34 <+bridge> [ddnet] add emotes to chat again too 20:34 <+bridge> [ddnet] :f4: 20:35 <+bridge> [ddnet] https://cdn.betterttv.net/frankerfacez_emote/425196/1 20:38 <+bridge> [ddnet] suggestion: add more emotes like the once from twitch.tv? like widepeepohappy https://cdn.betterttv.net/frankerfacez_emote/270930/1, Pogu https://cdn.betterttv.net/frankerfacez_emote/256055/1, monkaw https://cdn.betterttv.net/frankerfacez_emote/214681/1 etc etc...? - https://betterttv.com/emotes/top 20:39 <+bridge> [ddnet] suggestion: add more emotes like the once from twitch.tv? like widepeepohappy, Pogu , monkaw etc etc...? - https://betterttv.com/emotes/top 20:40 <+bridge> [ddnet] suggestion: add more emotes like the once from twitch.tv? like widepeepoHappy, Pogu , monkaW etc etc...? - https://betterttv.com/emotes/top 20:40 <+bridge> [ddnet] add emotes to chat 20:41 <+bridge> [ddnet] not this again xd 20:41 <+bridge> [ddnet] someone allready suggested it :P? 20:41 <+bridge> [ddnet] someone allready suggested it 😛 ? 20:41 <+bridge> [ddnet] even implemented 20:41 <+bridge> [ddnet] not these emotes tho 20:41 <+ChillerDragon> spam more pls Aoe xd 20:42 <+ChillerDragon> wait are we talking about tw chat or discord emotes? 20:42 <+bridge> [ddnet] discord emotes, what do you mean spam ? 20:42 <+bridge> [ddnet] ohh 20:42 <+bridge> [ddnet] discord xd 20:42 <+bridge> [ddnet] why was the in-game chat emotes removed 20:42 <+bridge> [ddnet] thought ingame 20:42 <+bridge> [ddnet] bcs they are distracting and annoying xd 20:43 <+bridge> [ddnet] it was funny 20:43 <+bridge> [ddnet] we have tee emotes 20:43 <+bridge> [ddnet] tee emotes best 20:43 <+bridge> [ddnet] i miss 🤖 in chat :( 20:43 <+bridge> [ddnet] they were so annoying 20:43 <+bridge> [ddnet] 🇳🇴 🇺 20:43 <+bridge> [ddnet] suggestion: add more emotes like the once from twitch.tv to the discord group? like widepeepoHappy, Pogu , monkaW etc etc...? - https://betterttv.com/emotes/top 20:43 <+bridge> [ddnet] no they werent 20:44 <+bridge> [ddnet] yes 20:44 <+bridge> [ddnet] why werent they just made opt-in 20:44 <+bridge> [ddnet] after all the code was added to support them 20:44 <+bridge> [ddnet] just as easy to add a setting 20:44 <+bridge> [ddnet] because then u see the emote names instead of the emote :kek: 20:44 <+bridge> [ddnet] ye so 20:44 <+bridge> [ddnet] thats even more spam 20:45 <+bridge> [ddnet] even more annoying 20:45 <+bridge> [ddnet] ye the solution is to just add back emotes 20:45 <+bridge> [ddnet] :antijao: `:antijao:` 20:45 <+bridge> [ddnet] which is more annoying 20:45 <+bridge> [ddnet] the solution is to remove them 20:45 <+bridge> [ddnet] but people can still use the version with emotes 20:45 <+bridge> [ddnet] but they wont have new features 20:45 <+bridge> [ddnet] and still can type `😄` into the chat with any vr 20:46 <+bridge> [ddnet] idc 20:46 <+bridge> [ddnet] F4 emotes in chat sux 20:46 <+bridge> [ddnet] i still use ddnet 10 20:46 <+bridge> [ddnet] why would they use it 20:46 <+bridge> [ddnet] to see emotes 20:46 <+bridge> [ddnet] no one else sees emotes anyways 20:46 <+bridge> [ddnet] so ur like talking with urself 20:46 <+bridge> [ddnet] same as using a custom skin that none else has 20:46 <+bridge> [ddnet] some ppl do it 20:46 <+bridge> [ddnet] KENZO LIE 20:47 <+bridge> [ddnet] (tbh i agree its totally useless feature lol) 20:47 <+bridge> [ddnet] but using a custom u see all the time urself 20:47 <+bridge> [ddnet] custom tee* 20:47 <+bridge> [ddnet] ye and u can see ur own emotes 20:47 <+bridge> [ddnet] but no one talks with himself 20:47 <+bridge> [ddnet] no one that’s mentally stable 20:48 <+bridge> [ddnet] <ᶰ°Konͧsti> im never used emoji version but im writing emote names ingame anyway 20:48 <+bridge> [ddnet] <ᶰ°Konͧsti> xd 20:48 <+bridge> [ddnet] its like when people who dont have nitro say `:kek:` on discord 20:48 <+bridge> [ddnet] <ᶰ°Konͧsti> :kek: 20:48 <+bridge> [ddnet] they cant see the emote but who cares xd 20:48 <+bridge> [ddnet] <ᶰ°Konͧsti> :feelsbadman: 20:48 <+bridge> [ddnet] u see people saying :kek: in ddnet? 20:49 <+bridge> [ddnet] <ᶰ°Konͧsti> yes 20:49 <+bridge> [ddnet] yes 20:49 <+bridge> [ddnet] <ᶰ°Konͧsti> lol 20:49 <+bridge> [ddnet] <ᶰ°Konͧsti> Much 20:49 <+bridge> [ddnet] and `:feelsamazingman:` 20:49 <+bridge> [ddnet] lol no 20:49 <+bridge> [ddnet] <ᶰ°Konͧsti> lol yes 20:49 <+bridge> [ddnet] <ᶰ°Konͧsti> xd 20:50 <+bridge> [ddnet] ive literally seen it 20:50 <+bridge> [ddnet] wym 20:50 <+bridge> [ddnet] also the `:danAmazing:` 20:50 <+bridge> [ddnet] yes ppl say kek 20:50 <+bridge> [ddnet] no they never showed up in tw chat 20:50 <+bridge> [ddnet] but ppl still say it with :: anyway 20:50 <+bridge> [ddnet] <ᶰ°Konͧsti> :danAmazing: dead :feelsbadman: 20:50 <+bridge> [ddnet] :feelsbadman: 20:50 <+bridge> [ddnet] <ᶰ°Konͧsti> me and Suxep even had danAmazing binds xd 20:51 <+bridge> [ddnet] 🇳🇴🇺 20:51 <+bridge> [ddnet] norway u 20:51 <+bridge> [ddnet] example: 20:51 <+bridge> [ddnet] `*** 'Konsti' called vote to kick 'jao' (lol)` 20:51 <+bridge> [ddnet] `*** 'jao' has left the game (You have been banned for 5 minutes (Banned by vote))` 20:51 <+bridge> [ddnet] `Konsti: :danAmazing:` 20:52 <+bridge> [ddnet] `nameless tee: :danAmazing:` 20:52 <+bridge> [ddnet] <ᶰ°Konͧsti> Aor sax something if big troll 20:52 <+bridge> [ddnet] <ᶰ°Konͧsti> say* 20:52 <+bridge> [ddnet] whos aor 20:52 <+bridge> [ddnet] <ᶰ°Konͧsti> xddd 20:52 <+bridge> [ddnet] <ᶰ°Konͧsti> Fucked up 20:52 <+bridge> [ddnet] :danAmazing: 20:52 <+bridge> [ddnet] to minimize spam on ddnet just add chat filter on server side 20:53 <+bridge> [ddnet] its about emotes 20:53 <+bridge> [ddnet] <ᶰ°Konͧsti> F4 20:53 <+bridge> [ddnet] client side obivously 20:53 <+bridge> [ddnet] <ᶰ°Konͧsti> They would ban me from saying n word 20:53 <+bridge> [ddnet] people who dont want to see spam can choose to filter it out 20:53 <+bridge> [ddnet] the default should b to allow all 20:53 <+bridge> [ddnet] same could apply for 18+ language i guess 20:53 <+bridge> [ddnet] <ᶰ°Konͧsti> nword= noby ofc 20:53 <+bridge> [ddnet] u 20:53 <+bridge> [ddnet] im about emoji spamming 20:53 <+bridge> [ddnet] noone really *spams* emojis 20:53 <+bridge> [ddnet] just says them someitmes xd 20:53 <+bridge> [ddnet] trolls can 20:54 <+bridge> [ddnet] no 20:54 <+bridge> [ddnet] ppl spam emojis to me 20:54 <+bridge> [ddnet] trolls cna spam non emojis 20:54 <+bridge> [ddnet] trolls can 20:54 <+bridge> [ddnet] everyone has a different defn of 'spam' 20:55 <+bridge> [ddnet] trying to filter it serverside is 20:55 <+bridge> [ddnet] i think its literally impossible beyond simple ratelimiting 20:55 <+bridge> [ddnet] oh also ddnet should be less restrictive on the automute ratelimit 20:55 <+bridge> [ddnet] they should just let people setup their own chat filter in client 20:55 <+bridge> [ddnet] and +1 20:55 <+bridge> [ddnet] i always get automuted just cus i type fast 20:55 <+bridge> [ddnet] press return less often helps but 20:55 <+bridge> [ddnet] stop typing short messages 20:55 <+bridge> [ddnet] <ᶰ°Konͧsti> lmfao 20:55 <+bridge> [ddnet] i cant not type short messages 20:55 <+bridge> [ddnet] typing long messages is boring 20:55 <+bridge> [ddnet] i have the same problem because i type rly fast 20:55 <+bridge> [ddnet] even when i type long messages 20:55 <+bridge> [ddnet] <ᶰ°Konͧsti> ```@louis :nouis:``` 20:55 <+bridge> [ddnet] or when i correct messages that i mistype 20:56 <+bridge> [ddnet] it sometimes automutes me and i have to a: buse 20:56 <+bridge> [ddnet] and unmute myself 20:56 <+bridge> [ddnet] a: buse 20:56 <+bridge> [ddnet] i swear im not spamming tho 20:56 <+bridge> [ddnet] if u send a short sentence every couple seconds like im doing rn 20:56 <+bridge> [ddnet] it can mute u 20:57 <+bridge> [ddnet] <ᶰ°Konͧsti> just do like on noby server, u cant spam the same messages 20:59 <+bridge> [ddnet] yes 20:59 <+bridge> [ddnet] i would make a PR for ratelimit 20:59 <+bridge> [ddnet] if they wanted it 20:59 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/764562845680795678/Screen_Shot_2020-10-10_at_1.59.41_PM.png 21:00 <+bridge> [ddnet] i use this instead of auto mute and i know u can just spam and change the last character but it still helps alot xd 21:00 <+bridge> [ddnet] itts just set to only let u say the same thing 3x/min 21:00 <+bridge> [ddnet] but the limit and time could be anything 21:01 <+bridge> [ddnet] then you can add emotes :feelsamazingman: 21:02 <+bridge> [ddnet] i mean 21:02 <+bridge> [ddnet] a 64/64 ddnet ddrace server might have higher standards of chat moderation than my smaller fng server .. xd 21:03 <+bridge> [ddnet] ig spam protect should be or serverside only or clientside only 21:03 <+bridge> [ddnet] and last one would be better 21:03 <+bridge> [ddnet] i think the only serverside spam protection should be simple rate limit 21:03 <+bridge> [ddnet] do you know clientside 21:04 <+bridge> [ddnet] eh, @Jupstar ✪ can you help with that? 21:04 <+bridge> [ddnet] or you are grender boy 21:04 <+bridge> [ddnet] or you are render boy 21:04 <+bridge> [ddnet] maybe ryo knows 21:07 <+bridge> [ddnet] <ᶰ°Konͧsti> ͍ 21:21 <+bridge> [ddnet] tldr? 21:22 <+bridge> [ddnet] add back emotes 21:22 <+bridge> [ddnet] client side spamprotection is useless 21:22 <+bridge> [ddnet] when the client is open source xd 21:23 <+ChillerDragon> chat spam is rare a problem tho 21:24 <+bridge> [ddnet] client side spam protection = add_foe 21:24 <+ChillerDragon> or do it like the browser console and show the amount of occurences using a number 21:25 <+ChillerDragon> https://zillyhuhn.com/cs/.1602357875.png 21:28 <+bridge> [ddnet] @Jupstar ✪ why> its just :-: filter 21:28 <+bridge> [ddnet] @Jupstar ✪ why? its just :-: filter 21:29 <+bridge> [ddnet] so u want a chat filter, mh, that might be unwated by some servers 21:29 <+bridge> [ddnet] or do u want chat filter like removing bad words 21:31 <+bridge> [ddnet] > unwated by some servers 21:31 <+bridge> [ddnet] uhm why? 21:32 <+bridge> [ddnet] mods* 21:32 <+bridge> [ddnet] well its a forced limit 21:33 <+bridge> [ddnet] so do u want a rate limit, or a chat filter? 21:33 <+bridge> [ddnet] im not sure rn 21:34 <+bridge> [ddnet] uh oh 21:34 <+bridge> [ddnet] maybe add new flag/netobj that will be sended to new ddnet users with rate limit count 21:34 <+bridge> [ddnet] or dk 21:35 <+bridge> [ddnet] add to exist 21:35 <+bridge> [ddnet] add to existing 21:37 <+bridge> [ddnet] well u can always create an issue or pr, maybe someone will help you 21:38 <+bridge> [ddnet] hm, okey 21:38 <+bridge> [ddnet] okey