00:00 < bridge> Good thing I rewrote all of it to not need to mess with this :kek: 00:00 < bridge> you have to do deal with it 00:00 < bridge> unless your map data isnt a one to one with how its stored 00:00 < bridge> you can hide alot of unused data in the map format 00:01 < bridge> What? What exactly do you mean 00:01 < bridge> in the map format theres blocks of data which are indexed, and then each layer has flags saying what type it is and an index into this data for each type that it could be 00:01 < bridge> m_Flags 00:01 < bridge> m_Data 00:01 < bridge> m_Tele 00:01 < bridge> m_Switch 00:01 < bridge> .... 00:01 < bridge> setting m_Flags to multiple types doesnt work 00:02 < bridge> its absolutley cursed 00:02 < bridge> (sized blocks of data) 00:02 < bridge> (which are not verified at load time) 00:02 < bridge> I honestly have no idea what you are talking about even though I did rewrite the map loader 00:03 < bridge> (whose size are not verified at load time, which is very annoying) 00:03 < bridge> well it may be quirks of how the ddnet map loader works 00:03 < bridge> im just assuming what the map format is from how the structs are 00:03 < bridge> im just infering what the map format is from how the structs are 00:03 < bridge> it would be incredibly dumb if the map format is simpler than i see it here 00:03 < bridge> but it would be nice that it could be refactored to not be ... like that 00:03 < bridge> https://github.com/Teero888/ddnet_maploader_c99/blob/master/ddnet_map_loader.h 00:04 < bridge> so much cleaner 00:04 < bridge> `void *get_data(datafile_t *data_file, int index) {` you have the index block sizes here 00:04 < bridge> `void *get_data(datafile_t *data_file, int index) {` you have the data blocks here 00:04 < bridge> I do store the map differently in memory than ddnet because of cache stuff 00:04 < bridge> `void *get_data(datafile_t *data_file, int index) {` and `int get_item_size(datafile_t *data_file, int index) ` you have the data blocks here 00:04 < bridge> But thats a minor change 00:05 < bridge> Ah that's what you mean xd 00:05 < bridge> i lied you do it the exact same lmao 00:05 < bridge> how u have no clue what im talking abt xd 00:06 < bridge> i lied you do it the exact same lmao (i just didnt see it cuz the .h doesnt contain map data struct) 00:06 < bridge> I wrote this a while ago xdd 00:08 < bridge> maybe 7 months ago I knew what I was doing. 00:11 < bridge> okay I sleep gn 02:00 < bridge> @ryozuki for your os/kernel please implement in-process memory isolation to be able to sandbox dynamically loaded libraries without losing computational speed. 02:04 < bridge> for example if I wanted to make a client side server mod plugin manager so you can for example download a plugin for custom prediction, it is very hard to ensure that that plugin doesn't have access to the network or filesystem. Of course you can use wasm for example. That's what ddnet-rs does but you lose up to 20% speed which is very annoying. 02:04 < bridge> Currently there isn't a single solution that works cross-platform and doesn't sacrifice performance 02:05 < bridge> I read this. But you need a patched kernel and an Intel CPU for this to work. 02:05 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1416937978101501992/1801.06822v3.pdf?ex=68c8a9d3&is=68c75853&hm=ad5a8a13e29edd2902609d4fa1de2325427176509d875999377a9b515950bd5a& 02:06 < bridge> So wasm is basically the only option. But I don't wanna sacrifice speed. On the other hand I don't want malicious plugins to be distributed. 02:06 < bridge> So wasm is basically the only option but I don't wanna sacrifice speed. On the other hand I don't want malicious plugins to be distributed. 02:08 < bridge> And you can completely forget about windows lmao. 02:09 < bridge> The other possibility is to create a child process for the plugin but communicating between the main and the child would again be slow asf 02:16 < bridge> Intel cpus have memory protection keys since 2015 starting with the Skylake models, amd since 2020 with zen3. Not sure about any others. the paper is from 2018 so the amd MPK wasn't out yet 02:16 < bridge> I read this. But you need a patched kernel and linux for this to work. 02:16 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1416937978101501992/1801.06822v3.pdf?ex=68c8a9d3&is=68c75853&hm=ad5a8a13e29edd2902609d4fa1de2325427176509d875999377a9b515950bd5a& 02:19 < bridge> Proper user space memory protection key support for windows isn't out yet afaik so i can't use this for cross platform 02:20 < bridge> And I have no idea how the situation is on mac 02:24 < bridge> I read this. But you need a patched kernel and linux for this to work. 02:24 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1416937978101501992/1801.06822v3.pdf?ex=68c8a9d3&is=68c75853&hm=ad5a8a13e29edd2902609d4fa1de2325427176509d875999377a9b515950bd5a& 02:28 < bridge> Okay I'm stupid. Without patching your kernel it is basically impossible to block syscalls of only part of the program (dynamically loaded plugin). 02:29 < bridge> @ryozuki for your os/kernel please implement in-process memory and syscall isolation to be able to sandbox dynamically loaded libraries without losing computational speed. 02:29 < bridge> This is so annoying why has nobody ever thought about fixing this. Why do kernels not support this 02:30 < bridge> I should make a pr 02:30 < bridge> well I can't really make a pr to the windows kernel 02:30 < bridge> I would have to get a job there 02:30 < bridge> so much effort 02:55 < bridge> Currently this can't be done on official client. If you want this feature, you can request it by opening an issue on Github 02:57 < bridge> Oops, this feature has already been rejected. 02:57 < bridge> https://discord.com/channels/252358080522747904/757720336274948198/1416857769931440202 03:01 < bridge> What do I have to do with this ๐Ÿ˜‚ ๐Ÿ˜‚ 03:06 < bridge> Also it is a bit confusing that f1 key does smth different in editor, I miss clicked it a bunch of times 03:06 < bridge> Bit definetly not illegal or whatever ๐Ÿ’€ 03:09 < bridge> But definetly not illegal or whatever ๐Ÿ’€ 07:17 < bridge> morning 08:34 < bridge> ``` 08:34 < bridge> [0.056865] Found root partition with uuid 87654321-4321-8765-cba9-987654321fed 08:34 < bridge> [0.056923] Partition name "EDOS_DATA" 08:34 < bridge> ``` 08:34 < bridge> ``` 08:34 < bridge> /edos 08:34 < bridge> protocol: limine 08:34 < bridge> kernel_path: boot():/boot/kernel 08:34 < bridge> cmdline: root=UUID=87654321-4321-8765-cba9-987654321fed rootfstype=fat32 08:34 < bridge> ``` 08:34 < bridge> pog i have cmdline parsing and mounting 08:42 < bridge> Where is that tripple main screenshot from? 09:08 < bridge> you're the person who does quick fixes :kyaruXD: 09:08 < bridge> "first" public teeworlds commit from magnus's github 09:08 < bridge> :poggers2: 09:14 < bridge> gumo, every normal and crashbug causing person ^.^ 09:17 < bridge> @blazulite can you show your target switch sounds here in the channel after you finished? :owo: 09:17 < bridge> Yea! 09:17 < bridge> In fact I was actually about to talk about that lol 09:20 < bridge> I have different ideas for it: 09:20 < bridge> - Switch sound (Like a light switch) 09:20 < bridge> - Something similar to `sfx_hit_weak-03` but lighter 09:20 < bridge> - Something similar to `sfx_msg-highlight` 09:21 < bridge> go ahead, the light switch idea was already around. I want you to do this unbiased first ๐Ÿ™‚ 09:39 < bridge> Prototype for the Third option 09:39 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1417052195349598289/Untitled_project.mp4?ex=68c91432&is=68c7c2b2&hm=f286a07f6b9f499c50666d802ffbf6250118c8b2535e085dbac4b27e24964ac7& 11:08 < bridge> Is there any way to undo an approve? ๐Ÿค” 11:09 < bridge> like I can request changes, but I don't know if the "comment" button undoes the approve 11:09 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1417074832096362586/Screenshot_20250915-110914.png?ex=68c92947&is=68c7d7c7&hm=734d6df4b5dbdc638b5bd0382e402f6795c66c4944e9454e49911f01715b8548& 11:10 < bridge> I don't have this button in 2 11:10 < bridge> I believe because my approval is of "no value" anyway ._. 11:13 < bridge> okay I can't undo my own approvals, interesting 11:14 < bridge> I also can't rerequest my own review hm 11:22 < bridge> Second idea 11:22 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1417078066827497534/Untitled_project2.mp4?ex=68c92c4b&is=68c7dacb&hm=0c611f1b28f85034fef953295d725c1ef99cd02b95d5f3b5172454e67350a50d& 11:22 < bridge> Sfx 11:22 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1417078096296804362/prototype2.zip?ex=68c92c52&is=68c7dad2&hm=464dad06a8c6d6db01101d3332392147e9a99cc60e4216619106f993878214f1& 11:39 < bridge> First idea 11:39 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1417082390479638608/Untitled_project1.mp4?ex=68c93052&is=68c7ded2&hm=efea42f6451def6a1b82a657ea50d32e167a192c246c362b292ecde2b408f4e8& 11:39 < bridge> Sfx 11:39 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1417082424013357098/prototype1.zip?ex=68c9305a&is=68c7deda&hm=d1415aaacfbb764ff2018375f6e560075a83d5581068f2573b8b3aad29712211& 11:41 < bridge> I'll review them later today ๐Ÿ™‚ 11:41 < bridge> I personally like how the prototype2 and prototype1 sounds like 11:41 < bridge> They're supposed to sound lower in-game, but I made them "loud" for them to be better appreciated 11:41 < bridge> I personally like how the prototype2 and prototype1 sounds like 11:41 < bridge> They're supposed to sound lower in-game, but I made them loud in the videos for them to be better appreciated 11:41 < bridge> !remind 380 review target sounds 11:41 < chillerbot12> Helo Assa I will remind you at Mon Sep 15 2025 18:01:37 GMT+0200 (Central European Summer Time) about your matter again. 12:41 < ws-client> **** @milkeeycat i have skill issues help. I had segmentation fault because i forgot to `= {};` init my struct :/ and i got really confused 12:48 < bridge> nub 12:52 < bridge> ```cpp 12:52 < bridge> auto VerifyLayer = [&](CMapItemLayerTilemap *pLayer) { 12:52 < bridge> using TileType = 12:52 < bridge> std::conditional_t std::conditional_t void*>>; 12:52 < bridge> if(!pLayer) 12:52 < bridge> return (TileType *)nullptr; 12:52 < bridge> const int Size = GameClient()->Layers()->Map()->GetDataSize(pLayer->*pLayerPart); 12:52 < bridge> if(Size <= 0 || (size_t)Size < (size_t)pLayer->m_Width * (size_t)pLayer->m_Height * sizeof(TileType)) 12:52 < bridge> return nullptr; 12:52 < bridge> return (TileType *)GameClient()->Layers()->Map()->GetData(pLayer->*pLayerPart); 12:52 < bridge> }; 12:52 < bridge> ``` 12:52 < bridge> guys did i cook 12:56 < bridge> std::conditional_t :justatest: 12:56 < bridge> this looks a lot like my raw function for rendering 12:57 < bridge> it dont work x-x 12:57 < bridge> i want it to return the the right type so i dont have to 12:57 < bridge> what's the goal of all the genericness 12:57 < bridge> sunk cost fallacy 12:58 < bridge> i could just cast at the call site 12:58 < bridge> but thats cringe 12:58 < bridge> I would blindly assume all the layers are the same size 12:59 < bridge> because they are 12:59 < bridge> they arent 12:59 < bridge> @sollybunny https://github.com/ddnet/ddnet/blob/6dc8032694e2411ce575201711658cca8101338c/src/game/map/render_layer.cpp#L813 12:59 < bridge> they arent? 12:59 < bridge> CTeleTile is bigger 12:59 < bridge> what 12:59 < bridge> im desperatley tryignt o make the tele tile code look the same as the other 2 12:59 < bridge> you can teleporters outside the gametile grid? 12:59 < bridge> you can have teleporters outside the gametile grid? 13:00 < bridge> CTile is 4 unsigned chars 13:00 < bridge> CTeleTile is 2unsigned chars 13:00 < bridge> CTeleTile is 2 unsigned chars 13:00 < bridge> idk what padding has to say about that 13:00 < bridge> oh you mean stride size is different 13:00 < bridge> but it doesnt work if i blindly assume they are the same 13:00 < bridge> but this means, CTeleTile is smaller and not bigger, because 2 < 4 13:01 < bridge> sorry 13:01 < bridge> yes u r right 13:01 < bridge> I would just make a function that handles the stride differences 13:01 < bridge> thats what ptr types do 13:01 < bridge> but i want it to return a different type dpeending on which index i request 13:01 < bridge> which is generics which is not yet supported by cpp 13:02 < bridge> `VerifyLayer<&CMapItemLayerTilemap::m_Data>(GameClient()->Layers()->GameLayer());` this isnt valid syntax 13:02 < bridge> id have to fall back to macros 13:02 < bridge> I'm still not fully understanding the motivation behind this 13:02 < bridge> it checks the size and returns the right type so i can index into it without worrying about size 13:02 < bridge> right 13:03 < bridge> `VerifyLayer<&CMapItemLayerTilemap::m_Data>(GameClient()->Layers()->GameLayer());` 13:03 < bridge> `VerifyLayer<&CMapItemLayerTilemap::m_Data>(GameClient()->Layers()->FrontLayer());` 13:03 < bridge> `VerifyLayer<&CMapItemLayerTilemap::m_Data>(GameClient()->Layers()->TeleLayer());` 13:03 < bridge> `VerifyLayer<&CMapItemLayerTilemap::m_Tele>(GameClient()->Layers()->TeleLayer());` 13:03 < bridge> those are what i want the calls to look like 13:03 < bridge> and for it to return CTIle* for all but the last 13:03 < bridge> why not just hard code the size and pass it around from where you define every type of outline. 13:03 < bridge> because thats cringe when types are meant to do that 13:04 < bridge> its what im gonna have to do 13:04 < bridge> or atleast pass in the size 13:04 < bridge> and cast outside 13:04 < bridge> the render layers solve this by polymorphism ๐Ÿคทโ€โ™‚๏ธ 13:05 < bridge> This is very unreadable 13:05 < bridge> you want like, reflection I guess right? 13:05 < bridge> that would make this easy 13:06 < bridge> mm if i could put the paramaters into templaets it would work 13:06 < bridge> i would prefer constexpr ifs but both dont work anyway 13:06 < bridge> i would prefer constexpr ifs but both dont work either 13:06 < bridge> Start by describing the problem instead of your solution 13:08 < bridge> i want to get CTile* or CTeleTile* from Layers()->* checking the size and returning the data ptr 13:08 < bridge> oh wait 13:08 < bridge> if i return an std::function to get x, y -> index that works too 13:08 < bridge> no generics required 13:09 < bridge> ermm 13:09 < bridge> That, and checking the size when returning the pointer is the wrong approach 13:09 < bridge> why, i dont want everything to be rwapped in checks 13:09 < bridge> The map should only have to be validated once when loading 13:09 < bridge> After that, you don't need validation anymore 13:10 < bridge> well everywhere else its used its validated 13:10 < bridge> eg collision 13:10 < bridge> ```cpp 13:10 < bridge> if(m_pLayers->TeleLayer()) 13:10 < bridge> { 13:10 < bridge> unsigned int Size = m_pLayers->Map()->GetDataSize(m_pLayers->TeleLayer()->m_Tele); 13:10 < bridge> if(Size >= (size_t)m_Width * m_Height * sizeof(CTeleTile)) 13:10 < bridge> m_pTele = static_cast(m_pLayers->Map()->GetData(m_pLayers->TeleLayer()->m_Tele)); 13:10 < bridge> } 13:10 < bridge> ``` 13:10 < bridge> you could add the size as part of the type itself right? 13:10 < bridge> ``constexpr m_Size = sizeof(CTeleTile);`` 13:11 < bridge> That's how the code ended up being written. Doesn't really make it the correct approach if the problem you are trying to solve is "add proper map validation". 13:11 < bridge> im sunk cost fallacying whilst rewriting outlines in tclient 13:11 < bridge> but yes i would rather i didnt have to do validation 13:14 < bridge> I wouldn't waste effort trying to reduce duplicated code and logic if it makes it very unreadable instead. Looks like `CCollision` already validates its members, so you could use those instead of `CLayers`. 13:14 < bridge> thats a bit wack 13:14 < bridge> that's a good idea 13:14 < bridge> 2v1 okay xd 13:14 < bridge> but dependning on collision is weird 13:15 < bridge> ok maybe 13:15 < bridge> but there's not any non collision layers we want to outline atm? 13:15 < bridge> non 13:16 < bridge> I wonder if you could do outlines with a shader :p hrr 13:16 < bridge> A slightly cleaner would be to move the validation from `CCollision` to `CLayers`, because the former also depends on the latter. 13:16 < bridge> A slightly cleaner approach would be to move the validation from `CCollision` to `CLayers`, because the former also depends on the latter. 13:16 < bridge> yes, you could 13:17 < bridge> which isn't to say that we should 13:17 < bridge> nono, I mean if **you** could :p 13:17 < bridge> the old collision code requires the data and tele index of the tele layer which collision doesnt which is slightly confusing 13:17 < bridge> the old outline code requires the data and tele index of the tele layer which collision doesnt which is slightly confusing 13:17 < bridge> maybe it was magic that somehow worked the same as collision does now 13:18 < bridge> and ive been tryign to accomodate it despite it not being required 13:18 < bridge> I'm pretty sure it's just doing an existence check 13:18 < bridge> TeleLayer()->m_Data and m_Tele are used 13:18 < bridge> oh its all private in collsion 13:18 < bridge> aduh 13:19 < bridge> I think it was to distinguish between tele in and tele out 13:20 < bridge> i guess collision desont care about tele out 13:22 < bridge> I would be surprised if collision is completely unaware of teleout 13:23 < bridge> Lol kaizo network feature being ported to ddnet 13:24 < bridge> ok maybe you're right 13:27 < bridge> it doesn't provide a way to distinguish them other than just using the tele layer directly 14:27 < bridge> hmm ivec3 distance already breaks at ivec3(431, 431, 431) ๐Ÿค” 15:09 < bridge> hmm the PR list doesn't look too bad tbh, we have many PRs ready just waiting for other mainteiners to review or simply press merge 15:16 < bridge> https://github.com/ddnet/ddnet/pull/10529 15:16 < bridge> this would be nice to have a review 15:17 < bridge> most likely is ready 15:19 < bridge> I'll give it another look ๐Ÿ™‚ 15:20 < bridge> @kebscs what is 15:20 < bridge> ``` 15:20 < bridge> NetEventEx("TargetHit:Common", "targethit@netevent.ddnet.org", [ 15:20 < bridge> NetBool("m_Weakly"), 15:20 < bridge> ]), 15:20 < bridge> ``` 15:20 < bridge> 15:20 < bridge> for? 15:20 < bridge> if you say "sound", can you guess what's missing? 15:21 < bridge> if you say "sound" or "particles", can you guess what's missing? 15:23 < bridge> havent seen it, must be newly added by louis 15:23 < bridge> @learath2 u like intrusive lists as a ' enjoyer right 15:24 < bridge> ill have to use then for my ready queue since having allocs in scheduler at irq is bad 15:24 < bridge> @learath2 u like intrusive lists as a C enjoyer right 15:33 < bridge> Yep, embrace intrusiveness 15:48 < bridge> chillerdragon: why is the linter not in bash? :feelsbadman: 15:58 < ws-client> **** @milkeeycat I almost wrote parts of it in bash just to trigger heinrich xd 15:58 < ws-client> **** but then i had so much fun with C already 15:59 < ws-client> **** also C has better bindings for libclang than bash lel 15:59 < bridge> chillerdragon: it's time to fix it 15:59 < bridge> chiller should I compile a list of PRs you may merge for you? 15:59 < bridge> chiller should I compile a list of PRs you may merge for you? (excluding my own) 16:00 < ws-client> **** yea no joke i thought about writing a minimal cli in C for libclang wrap and the rest in bash xd @milkeeycat but nonono 16:00 < ws-client> **** @Assa i think i am kinda aware of all open prs 16:01 < ws-client> **** not a single one of them is a free merge for me. Execept of course 20 of my epic prs. 16:02 < bridge> all 90 16:03 < bridge> Excuse me, 87 ofc 16:05 < bridge> @chillerdragon what about 10824 ? 16:09 < ws-client> **** hm idk 16:20 < bridge> @robyt3 how do i overwrite all the skin information at once, the old way of just setting g_Config now segfaults 16:20 < bridge> trying to do it via command is not atomic 16:47 < bridge> well its a start at least xD 16:47 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1417159841083818096/2025-09-15_16-46-06.mp4?ex=68c97873&is=68c826f3&hm=452d139d38ad6719b37d0234f5f14ac7577457f0125289e5d93c2c3625ebb7ee& 16:59 < ws-client> **** @Teero how do you render? 16:59 < ws-client> **** is it pure C rewrite? 16:59 < ws-client> **** SDL? 17:00 < bridge> yes, C+vulkan+glfw 17:00 < bridge> and imgui for UI 17:19 < bridge> ddnet-c 17:40 < bridge> @jupeyy_keks feet fetish? 17:40 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1417173233496752321/2025-09-15_17-40-04.mp4?ex=68c984ec&is=68c8336c&hm=3796bd44fb28c0df1c9f26d8c3f0f88732b2890bfb194cea5c478fc6e7b36e71& 17:45 < bridge> WE NEED /DANCE 17:45 < bridge> xD 17:45 < bridge> that would be fucking epic 17:45 < bridge> sadly its fun and ddnet would reject 17:50 < bridge> :poggers2: 17:52 < bridge> im so fucking confused rn 17:53 < bridge> Extra epic: allow arbitrary emote animations dictated by the client, so clients can add their own 17:56 < bridge> i think someone did ip/tcp thru emotes 17:57 < bridge> He for a second make the: 17:57 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1417177613566345317/image0.gif?ex=68c98900&is=68c83780&hm=c36b1b312cbfce75e30371dc83668922e9e7d4eb59b06653f5668d01e9e0ed0d& 18:01 < chillerbot12> Elo @Assa I just wanted to remind you that: review target sounds 18:16 < ws-client> **** @Teero ur gigachad ngl. I wish the legit stuff would be open source. And i actually quite dislike that you work on tas ._. imo it devalues clips farmed by real humans and is basically cheating. 18:28 < bridge> idk bout dat if its done nicely 18:28 < bridge> extension on emote wheel to start an animation would be sick 18:29 < bridge> idk if we have the full int for emotes 18:29 < bridge> or if the server clamps them 18:30 < bridge> so far I like this one the most, the click is neat, can you make the click louder? 20:01 < bridge> Is there any command that can send the necessary rcon command to all my servers? 20:02 < bridge> Hi how to change Time to Score only on server side I changed every m_Score in player.cpp and removed all Time stuff and it's still showing Time not Score. I know that in DM, CTF, TDM it's showing SCORE but I need to leave DDRace game type. 20:11 < ws-client> **** @themsxr what are you working on? 20:11 < ws-client> **** @rehoboamrulit you can use econ or fifo for that plus a small script 20:19 < bridge> Just own gamemode new block mode but can't still change this time omg so my level showing as time like 00:01 lmao 20:19 < ws-client> **** @themsxr i see, any reason your not using any of the available block modes? 20:20 < ws-client> **** @themsxr also this is the line you want to remove https://github.com/ddnet/ddnet/blob/cdddec731c25baa17cde6b9aa2042bbaa08b9ee1/src/game/server/gamecontroller.cpp#L615 20:21 < bridge> yes 20:23 < bridge> Thanks ChillerDragon ๐Ÿ˜„ I prefer to make my own for fun and learn something new 20:24 < ws-client> **** i have a Dรฉjร  vu 20:25 < ws-client> **** why is it ppl create block modes for fun but nobody creates ddrace for fun xd 20:25 < bridge> mentality 20:27 < ws-client> **** i think asking how to disable timescore flag happend more often than asking about the wiki 20:27 < ws-client> **** i think chilerbot needs this 20:27 < bridge> There's something to make in classic DDRace? I think people prefer to play offical game type not modifed one ๐Ÿ˜„ It would be better if we could change things from client side and add new cool things ๐Ÿ˜„ 20:28 < ws-client> **** @themsxr i mean if you reinvent the wheel to learn you could also rewrite the ddrace mod thats what i mean 20:29 < ws-client> **** change what from the client side? 20:29 < bridge> Idk I think many people have some ideas to add something new that could be cool to use in Races 20:30 < ws-client> **** like what 20:31 < bridge> I can't answer on that. That was just a answer on your question why people don't edit classic DDRace ๐Ÿ˜„ 20:31 < bridge> I guess that's the point why 20:31 < ws-client> **** you lost me xd 20:31 < ws-client> **** i dont mean edit 20:31 < ws-client> **** i mean rewrite 20:31 < bridge> Ah 20:31 < ws-client> **** take vanilla teeworlds source 20:31 < ws-client> **** and implement ddrace 20:32 < bridge> ah yeah that would be cool thing to do, right ๐Ÿ˜ฎ 20:32 < ws-client> **** idk i dont think so xd 20:32 < ws-client> **** but i also wouldnt rewrite a block mode today 20:32 < bridge> Why 20:33 < ws-client> **** i dont think coding is fun and i dont want to learn 20:33 < ws-client> **** i only care about results 20:33 < ws-client> **** different mindset i guess 20:34 < ws-client> **** if i wanted a block mod i would just download F-DDrace and start gaming xd 20:35 < bridge> TiL me and chiller are entire opposites 20:35 < bridge> i'd rewrite my entire system if i had the time 20:35 < bridge> Oh, yeah. Coding is my hobbysince I was kid and I hope that it's my future work soon, trying so hard. That's why I'm making own stuff for fun here 20:35 < ws-client> **** i see 20:36 < bridge> Yeah melon sometimes that's the problem, people want to do a lot but time is a barrier 20:37 < bridge> i have so.. many projects i want to do but then my wife drags me out of my room to enjoy that thing called "life" 20:37 < bridge> i'm still unsure what it is but the people playing that game are mean 20:40 < bridge> no matter what you do you only have 24 hours in a day 20:41 < bridge> that's why collaborating exists 20:41 < bridge> hahahaah pilonpl some people have only 2-4 hours a day ๐Ÿ˜„ 20:43 < bridge> just think about it, collectively all people on earth have 192 billion hours every day 20:44 < bridge> Maybe when you don't have a job, wife and a child ๐Ÿ˜„ 20:45 < bridge> I got my hands on a cool rust PDF and I've been reading it for 2 hours, I wanted to finish a project in c++ 20:45 < bridge> What am I doing with my life 20:45 < bridge> Ikr, get a wife and kids 20:45 < bridge> now wait a minute 20:45 < bridge> :kyaruXD: 20:47 < bridge> https://rust-unofficial.github.io/too-many-lists/ 20:47 < bridge> 20:47 < bridge> this was so fun to read through idk 20:51 < bridge> wow linked list hater 20:51 < bridge> i love linked lists 20:58 < ws-client> **** rip assa who probably had a reminder in chilerbot xd 20:59 < ws-client> **** ez restarted 20:59 < ws-client> **** how can i has fng score in my blox copy love block server in the tab??????? 20:59 < chillerbot> to show points instead of time in the scoreboard remove this line https://github.com/ddnet/ddnet/blob/a9c316055f5d2579f6166152ec20c4241e0da456/src/game/server/gamecontroller.cpp#L600 20:59 < ws-client> **** ok perfect 21:02 < bridge> @learath2 i achieved greatness 21:02 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1417224013356339370/image.png?ex=68c9b437&is=68c862b7&hm=ed36e6ec2313dc07f90741d550c66fcd7ea33d9a0167f95fd19352fd4d63e908& 21:02 < bridge> multi core multitasking 21:05 < bridge> :pepeRage: 21:12 < bridge> Be happy it will all be open source once it's finished, since I've recently decided idgaf about the accuracy towards the ddnet physics which was the fact that was holding back performance the most, I can actually fix all the physics bugs and make the physics finally performant enough for thousands of players. That also means those physics and the tas tool that goes along with it can't be used by botters at all since it's not compatible with the defau 21:17 < bridge> @teero777 which light sword color suits you the most? 21:18 < bridge> Yellow for sure 21:20 < bridge> what? like a katana? what is a light sword color 21:20 < bridge> ohh 21:20 < bridge> i light saber 21:20 < bridge> a light saber 21:21 < bridge> i would choose blue 21:21 < bridge> or white 21:21 < bridge> a jedi knight 21:21 < bridge> i'd say 2 blue and 2 green ones would suit him 21:22 < bridge> is he a cyborg? 21:22 < bridge> :brownbear: 21:22 < bridge> yes :deen_star: 21:22 < bridge> @teero777: ok nice 21:23 < bridge> I will open server with it! Canโ€™t wait to abandon C++ 21:23 < bridge> @teero777 are you more of a sailor moon or doremi guy? 21:23 < bridge> doremi? dororo? 21:23 < bridge> im so confused man 21:24 < bridge> Do-Re-Mi-Fa-So-La-Ti-Do! 21:26 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1417230011106197624/VID_20250915_013646_530.mp4?ex=68c9b9cd&is=68c8684d&hm=31224356466c336a6c7c2c43008d9f5b658cba8635003334b0b2fb3f494d7fd1& 21:30 < bridge> @jupeyy_keks i have a review for you, < 20 LOC, just 36 extra lines of unit tests 21:31 < bridge> #10893 and my weekly jupey token is gone ๐Ÿ™‚ 21:31 < bridge> the distance bs? 21:31 < bridge> https://github.com/ddnet/ddnet/pull/10893 21:31 < bridge> yes 21:31 < bridge> when are floats good? 21:31 < bridge> 21:31 < bridge> when they small 21:31 < bridge> fix your caller side 21:32 < bridge> ? 21:32 < bridge> u multiply fucking 30k x 40k 21:32 < bridge> ofc that sucks 21:32 < bridge> even long longs would break for ivec4, as I tried to explain 21:32 < bridge> we dont need 4d math 21:32 < bridge> even long longs would break for ivec3, as I tried to explain 21:32 < bridge> typo 21:33 < bridge> because the dot function overflows with values bigger than `(datatype::max())^(1/3)/2` 21:33 < bridge> because the dot function overflows with values bigger than `(datatype::max())^(1/3)/3` 21:34 < bridge> then stop calculating these stupid numbers 21:34 < bridge> @essigautomat is this needed anywhere? xd 21:34 < bridge> he uses it with quads probs 21:34 < bridge> but he can just /1024 them 21:34 < bridge> currently not, that's why I am trying to fix it. I see a usecase for them (where I just implemented distance myself basically) 21:34 < bridge> @jupeyy_keks can you help me with my shader? xd 21:35 < bridge> yes, but i am probs not better than gpt5 21:35 < bridge> we can duo on his shader, so we are gpt10 21:36 < bridge> @teero777 which hxh opening is the best? 21:36 < bridge> departure>departure>departure>departure>departure 21:36 < bridge> then you merging it all upstream and unifying client and server physics right 21:37 < bridge> @jupeyy_keks which dxd opening is the best? 21:37 < bridge> hehehehehehe 21:37 < bridge> higschool? 21:57 < bridge> this is so cool 21:57 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1417237991004569620/image.png?ex=68c9c13c&is=68c86fbc&hm=f7d977473c93de54c69cfc6a92ed98ca19cf4612256b43f1ccbb48071c79e58c& 22:31 < bridge> @teero777 uv - vec2(anim.x, -anim.y) 22:31 < bridge> @teero777 uv + vec2(anim.x, -anim.y) 22:36 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1417247647735091342/image.png?ex=68c9ca3a&is=68c878ba&hm=60e0d07c4567f9abc6fc2825aee371aea10ad63c941aa35f437661394985eab7& 22:36 < bridge> what 22:37 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1417247883396255764/image.png?ex=68c9ca72&is=68c878f2&hm=c0ebe24163c1c5420ccbb291c423f38940b04396a1586cb1f5b4ef78119ffd41& 22:37 < bridge> aber animation is noch wrong 22:38 < bridge> nice 22:39 < bridge> @jupeyy_keks 22:39 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1417248443902201876/Unbenannt.png?ex=68c9caf8&is=68c87978&hm=d808d7cb2629f491ce5ac50033191766827f2af54229af63f019c969c7d25d63& 22:40 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1417248712618676286/image.png?ex=68c9cb38&is=68c879b8&hm=7ccb6d47a09a8244196ce02cf2f571b054fa61a50967a5c2f3ae3a874d924b11& 22:56 < bridge> @aoetw If you would like to add to [#10925](https://github.com/ddnet/ddnet/issues/10925), then feel free to do so 22:56 < bridge> https://github.com/ddnet/ddnet/issues/10925 22:59 < bridge> @chillerdragon please review #10890 22:59 < bridge> https://github.com/ddnet/ddnet/pull/10890 23:03 < bridge> xd