02:59 < bridge> <_voxeldoesart> based 08:53 < bridge> https://www.jetbrains.com/rust/ 08:56 < bridge> @jupeyy_keks prepare tomorrow question 08:56 < bridge> 09:05 < bridge> Good reminder next question i have, i should write down so i don't forget again xd 10:20 < bridge> https://wiki.gentoo.org/wiki/Mirrorselect 10:21 < bridge> `sudo mirrorselect -s3 -b10 -D -c Germany` 10:21 < bridge> for best mirrors 10:46 < bridge> very useful for our, in meantime 2, gentoo users πŸ˜‚ 10:46 < bridge> xD 10:46 < bridge> learath is one too 10:48 < bridge> Gentoo is the best thing since sliced bread 10:50 < bridge> xD 10:51 < bridge> I just flunked an accounting exam so bad 10:52 < bridge> My balance sheet was off by 200k and I somehow managed to end up with negative work in progress inventory. Then the company that made profit on the balance sheet ended up making loss on the income statement 11:43 < bridge> @patiga ur twmap lib is awesome, but i have one request, often to modify tiles u need to deal with the load and the compressed data enum, maybe make a utility method that loads and returns the loaded tiles reference which u can read and modify easily? 11:43 < bridge> ```rust 11:43 < bridge> let mut map_old = TwMap::parse_file(map1)?; 11:43 < bridge> map_old.load()?; 11:43 < bridge> let mut map_new = TwMap::parse_file(map2)?; 11:43 < bridge> map_new.load()?; 11:44 < bridge> let mut result = map_old.clone(); 11:44 < bridge> 11:44 < bridge> let map_old_game: &GameLayer = map_old.find_physics_layer().expect("couldn't find game layer"); 11:44 < bridge> let map_new_game: &GameLayer = map_new.find_physics_layer().expect("couldn't find game layer"); 11:44 < bridge> 11:44 < bridge> let tiles_old = match map_old_game.tiles() { 11:44 < bridge> twmap::CompressedData::Compressed(_, _, _) => unreachable!(), 11:44 < bridge> twmap::CompressedData::Loaded(x) => x, 11:44 < bridge> }; 11:44 < bridge> let tiles_new = match map_new_game.tiles() { 11:44 < bridge> twmap::CompressedData::Compressed(_, _, _) => unreachable!(), 11:44 < bridge> twmap::CompressedData::Loaded(x) => x, 11:44 < bridge> }; 11:44 < bridge> ``` 11:44 < bridge> to reduce boilerplate on the match i mean 11:44 < bridge> (hope im using it correctly) 11:45 < bridge> have you tried `.load_conditionally(some_closure)`? 11:45 < bridge> and then you can just do `find_physics_layer_mut()` (if that exists ^^) 11:46 < bridge> finding the layer is not a problem 11:46 < bridge> hm i cant find load_conditionally 11:46 < bridge> my point is about the code in tiles_old and tiles_new 11:46 < bridge> the match 11:48 < bridge> ah right, you do map.load() anyways, you can use `unwrap[_mut]()` on the `CompressedData` enum. 11:48 < bridge> ohh it has a unwrap 11:48 < bridge> TIL 11:48 < bridge> ye thats what i wanted 11:49 < bridge> nice πŸ‘ 11:49 < bridge> maybe it should be renamed 11:49 < bridge> to 11:49 < bridge> get_loaded 11:49 < bridge> unwrap is smth rust users like to avoid 11:49 < bridge> well i do 11:49 < bridge> xD 11:49 < bridge> I do think the decompression interface could be done in some nicer way, but I wanted to give the error enough context info so that you can find the exact layer in the map and identify if you just read the error message 11:51 < bridge> due to mutability and this concern of mine, the first thing you do with the map is decompressing the parts of it which you want to access 11:51 < bridge> so a later unwrap is fine there I think, else you didn't hold up your contract with twmap or smth :d 11:51 < bridge> ye it makes sense 11:52 < bridge> i guess i should only load the tiles 11:52 < bridge> does find_physics_layer work without loading on map? 11:52 < bridge> (though if you save the map again, it will decompress everything before saving anyways currently) 11:52 < bridge> yes, but the tiles will stay compressed 11:52 < bridge> im porting and improving ravies map diff script 11:53 < bridge> to rust 11:53 < bridge> oh nice, that tool seemed very useful :) 11:53 < bridge> ye 11:59 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1151819400547160114/image.png 11:59 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1151819400823967795/image.png 12:14 < bridge> @patiga epic generics 12:14 < bridge> i could abstract this for all layers 12:14 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1151823243678842970/image.png 12:15 < bridge> :poggers: generics paying off 12:18 < bridge> cargo install ddnet-map-diff 12:18 < bridge> https://github.com/edg-l/ddnet-map-diff 12:19 < bridge> i gotta run clippy pedantic 12:23 < bridge> @patiga would be fun to maybe put this as a command for the testing bot, and generate a image 12:23 < bridge> i wonder who deals with this 14:41 < bridge> i wish c++ had better tooling 14:42 < bridge> i wish to do cargo flamegraph on ddnet 14:42 < bridge> and it work out of the box 14:42 < bridge> maybe clion can do that for you out of the box 14:43 < bridge> https://wiki.xfce.org/releng/wayland_roadmap 14:43 < bridge> too much bloat 14:43 < bridge> and paid 14:44 < bridge> Do they rename to wlce? Xd 14:44 < bridge> you can probably get it for free because you're contributing to ddnet, not sure 14:51 < bridge> oh 14:51 < bridge> i remembered u can visualize perf records with firefox 15:30 < bridge> why doesn't http://ger10.ddnet.org/ have an ssl certificate? 15:33 < bridge> It does 15:33 < bridge> Use https 15:35 < bridge> works for me as well 16:12 < bridge> then why doesn't it have an https redirect? 16:15 < bridge> No need 16:15 < bridge> i mean yeah it doesn't need it to function correctly but why not 16:29 < bridge> Because 16:54 < bridge> https://profiler.firefox.com/ 16:57 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1151894585770004570/image.png 16:57 < bridge> hm unknown 16:58 < bridge> how to get in debug symbols there 16:58 < bridge> i compiled with relwithdeb 17:00 < bridge> wasnt there a command that automatically generated a link 17:00 < bridge> then it worked for me 18:48 < bridge> <_voxeldoesart> i havent gotten the time to code it yet but im gonna make a program that sort of works side by side with an extension for adobe animate, that takes an array of points and does a bunch of math to them to output voronoi lines based on their positions 18:50 < bridge> <_voxeldoesart> i just have to find a way to make it optimized for more than like 30 points because i made a basic mockup (including a renderer) in scratch and it was slow as fuck 18:50 < bridge> <_voxeldoesart> maybe raw python code for Just the math would work fine 18:54 < bridge> <_voxeldoesart> i almost *want* to try another language for this but i have no idea how memory works and tbh the last thing id want is a segfault 19:33 < bridge> hey why isnt killing predicted btw 19:34 < bridge> is it because of the spawns working in a funny way 19:52 < bridge> @ryozuki lmao someone did a video about moving from unity to godot. He installed godot while starting an unity project :issou: 19:52 < bridge> xd 19:55 < bridge> <_voxeldoesart> LOL 19:57 < bridge> @heinrich5991 @robyt3 19:57 < bridge> could one of you provide a calculation which i can use to translate the colors on my server to the new ones without a hardcoded map? 19:59 < bridge> A hardcoded map seems like the best solution 19:59 < bridge> 🫑 19:59 < bridge> 🫑 20:00 < bridge> πŸ—ΊοΈ 20:01 < bridge> https://docs.rs/lazy_format/latest/lazy_format/ 20:02 < bridge> Since the keys of the map are 1-64 you only need an array with the numbers in the second row of this image 20:02 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1151941040685719623/265515094-3ee7a052-a2fa-4fd6-b950-d8c2711a91a1.png 20:03 < bridge> That should give you team that has a color similar to the old one 20:03 < bridge> That should give you a team that has a color similar to the old one 20:03 < bridge> yes 20:03 < bridge> isnt it the same? 20:03 < bridge> or at least unnoticable 20:04 < bridge> unnoticable, yes 20:04 < bridge> Only team 1 is 100% the same 20:04 < bridge> All others would be very unlikely 20:04 < bridge> I see 20:04 < bridge> at least its somewhat a rainbow 20:14 < bridge> Does someone know what the dilate functions in `image_manipulation.cpp`do? `Dilate` seems to overwrite transparent pixels with the average color of its neighbours. But I dont see why you would want to do this 20:17 < bridge> https://wiki.ddnet.org/wiki/Extra_tools#dilate 20:23 < bridge> ah makes sense, thanks. I'm wondering if they could be optimized since they take up most of the time when adding images to the editor 20:23 < bridge> Dilate takes most of the time? I thought it would be the PNG decoding 20:25 < bridge> at least for `basic_freeze` it does 20:28 < bridge> gonna be honest im against this, i like the old scoreboard being in a nice rainbow and like what if teams 1, 56 and 22 are close together? aint the problem still gonna be there? 20:29 < bridge> though i would probably get used to it in like 2 days anyway lmao 20:29 < bridge> Also I'm confused about this comment and the functions taking a `BPP` argument 20:29 < bridge> ``` 20:29 < bridge> // Seems safe for BPP = 3, 4 which we use. clang-analyzer seems to 20:29 < bridge> // assume being called with larger value. TODO: Can make this 20:29 < bridge> // safer anyway. 20:29 < bridge> ``` 20:29 < bridge> How does it even make sense to apply this operation to RGB images? 20:32 < bridge> We only ever pass BPP=4 to the function anyway, could probably be removed if the parameter makes no sense and we already check before calling 20:35 < bridge> bug: 20:35 < bridge> when you open the game and close it while an error message is up then it wont close until the error message is gone and the background goes gray. 20:36 < bridge> im too lazy to report this on gh or check if it has already been fixed. can someone try this on a non-linux machine? 20:42 < bridge> What kind of error message do you mean? 20:42 < bridge> for example the skin error messages for formats etc 20:43 < bridge> the big red ones that pop up 20:43 < bridge> ingame 20:43 < bridge> I see 20:43 < bridge> they block the exiting process 20:46 < bridge> just fix xd 20:46 < bridge> probably just some if statement but i have exams tmrw 20:47 < bridge> atleast thats my excuise 20:47 < bridge> atleast thats my excuse 20:47 < bridge> i mean just fix the error xD 20:47 < bridge> its the new popom thing 20:47 < bridge> its the new pompom thing 20:48 < bridge> btw whats up with the new "quitting please wait" thing before closing? 20:48 < bridge> kinda gay if you ask me 20:49 < bridge> Not quitting seems like the desired behavior, but the background going gray is a bug 20:49 < bridge> Because the warning is shown when you quit and saving the config fails 20:50 < bridge> Client needs to wait so the users has read the warning 20:50 < bridge> Client needs to wait so the user has read the warning 20:50 < bridge> what if i dont have a mouse and want to quit the game? xd 20:50 < bridge> Press enter 20:50 < bridge> i cant click the button obviously 20:50 < bridge> Or escape 20:50 < bridge> that works? 20:50 < bridge> k 20:50 < bridge> It should, otherwise it's a bug 20:51 < bridge> is that still a problem tho? 20:51 < bridge> All dialogs should be usable with enter and escape 20:51 < bridge> just wondering 20:51 < bridge> seems like qutting twice also does the job 20:52 < bridge> maybe its already fixed. havent updated anything 20:52 < bridge> good 21:14 < bridge> @robyt3 when copy image to clipboard support for windows 21:14 < bridge> then we can overload the printscreen key in fullscreen and save the image to clipboard 21:15 < bridge> bcs windows is a joke and cant do that 21:15 < bridge> lmao 21:16 < bridge> Does SDL3 still not have more clipboard API? 21:16 < bridge> i think they had an issue for that 21:18 < bridge> Windows already supports several clipboard formats, nobody added support to SDL yet 21:18 < bridge> we need to update to sdl3 because its a higher number 21:18 < bridge> higher better 21:18 < bridge> https://learn.microsoft.com/en-us/windows/win32/dataxchg/standard-clipboard-formats 21:18 < bridge> asap 21:20 < bridge> We could update to latest and likely last SDL2 version 2.28.3 though 21:24 < bridge> well windows always gives problems with sdl 21:26 < bridge> Looked mostly like bugfixes in the SDL changelog, so hopefully less issues 21:26 < bridge> 2.28 should be the last version of SDL2 21:27 < bridge> After that there's an SDL3-bridge and eventually SDL3 itself 21:28 < bridge> perf issue here, bug there 21:28 < bridge> 21:28 < bridge> makes no fun xd 21:28 < bridge> i bet sdl3 wont be stable until after 2 years after release 21:33 < bridge> another reason for rust 21:33 < bridge> winit 21:33 < bridge> the problem with sdl is it tackles all stuff 21:33 < bridge> i used winit 21:33 < bridge> so if u have a bug cuz input u cant update everything else 21:33 < bridge> in rust the ecosystem is more modular 21:33 < bridge> it sucks more than sdl, no front xD 21:33 < bridge> winit just does 1 thing 21:33 < bridge> yes that is good ideed 21:33 < bridge> indeed 21:48 < bridge> ideed sounds better 21:55 < bridge> iJupstar 21:57 < bridge> ipaid 21:58 < bridge> ilovepiracy 23:18 < bridge> https://twitter.com/KenneyNL/status/1700199272757485798 23:18 < bridge> i love that unity shat themselves 23:18 < bridge> cuz its the best time for godot to become more fmaous 23:21 < bridge> https://fund.godotengine.org/ 23:21 < bridge> 30k€ per month nice 23:30 < bridge> https://www.reddit.com/r/gamedev/comments/16hnibp/unity_silently_removed_their_github_repo_to_track/ 23:32 < bridge> <_voxeldoesart> Rather you die a hero, or you live long enough to become the villain.