00:04 < bridge> nvm i think its sent by server based on distance from CNetMsg_Cl_ShowDistance 00:18 < bridge> yea 00:19 < bridge> we got it figured out 01:05 < bridge> YUGE 01:05 < bridge> https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2688r2.html 01:06 < bridge> gn 01:06 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289000109425557546/cachedImage.png?ex=66f73a66&is=66f5e8e6&hm=d40a9e9ff5dea7343ae22cf5a4b0bfdf38fcf024a6249d3524161ea6c59e62ae& 01:06 < bridge> 5 pm approximately 01:06 < bridge> gonna eat dinner soon 01:37 < bridge> 4 year old bug most likely 👍 01:38 < bridge> most likely a 4 year old bug 👍 01:38 < bridge> Yo wassup @mpft 02:15 < bridge> nm 02:15 < bridge> what’s up with you 03:02 < ws-client> hmm 0.6 skin support for 0.7.6? xd 03:13 < bridge> sounds good 03:14 < bridge> don’t 0.6 and 0.7 skins have different dimensions? maybe you could just autodetect skins and store them in the same place 03:14 < bridge> assuming there aren’t conflicts 05:57 < bridge> Chiller queues up the PRs to submit them all at once lol 05:59 < bridge> this PR has flakey tests? 06:00 < bridge> actually seems like tests are just failing for recent PRs 08:04 < bridge> I wasn’t home when I made the prs. So no internet to go to gh xd 08:10 < bridge> good morning job havers and others 09:07 < bridge> <01000111g> i go hiking now. ty for ur work :brownbear: 09:11 < bridge> job haters :poggers2: (im job haver 😭) 09:14 < bridge> when you're back in germany we can go hiking one day :owo: 09:14 < bridge> when you're back in Germany we can go hiking one day :owo: - i would also invite heinrich and fokkonaut, given these two are climbing/bouldering(?) iirc so they might be interested as well 09:15 < bridge> or you can both play dis map https://ddnet.org/maps/Chill-32-Let-39-s-32-Climb-32-3 09:16 < bridge> already did :gigachad: 09:29 < bridge> Climb > Gores 09:33 < bridge> i dont like gore 09:33 < bridge> too much gore 09:36 < bridge> https://codersblock.org/multiplayer-fps/part3/ 09:36 < bridge> ``` 09:36 < bridge> struct Player_Input 09:36 < bridge> { 09:36 < bridge> bool32 up, down, left, right; 09:36 < bridge> }; 09:36 < bridge> ``` 09:36 < bridge> first time i see `bool32` xdd 09:37 < bridge> is bool32 even a built-in type in c++ ? 09:38 < bridge> i think it's a typedef to u32 or smth 09:38 < bridge> sounds more like a typdef/enum to m 09:38 < bridge> sounds more like a typdef/enum to me 09:38 < bridge> ye 09:43 < bridge> @aoetw: githubbing pog 09:44 < bridge> dude comes back after a huge break and decides to become a github influencer and tester - whatachad 09:52 < bridge> Yeah I don't really play much anymore. Would rather be mapping & testing 😄 09:52 < bridge> What is a github influencer lmao 09:55 < bridge> This pull request is sponsored by Raid Shadow Legends! 09:57 < bridge> :kek: it's a meme with chillerdragon's github profile 10:01 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289134720701038604/image.png?ex=66f7b7c4&is=66f66644&hm=9f23b7bdd11849fe8f563a946fc8ce8770405d9c1985e45dfc7254bf39518ceb& 10:01 < bridge> 131 followers :poggers2: 10:01 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289134866868469800/image.png?ex=66f7b7e7&is=66f66667&hm=d45d308fcf8c2a8013285800c3b3ef2173a7d9dba41a13f8d2e37441369319e2& 10:01 < bridge> :justatest: 10:02 < bridge> Chillerdragon why do you still not have the Discord app? 10:02 < bridge> count the c++ projects 10:02 < bridge> 10:02 < bridge> now remember chillerdragon didnt know the difference between a pointer and a reference:cat_hehe: 10:02 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289135024230109225/image.png?ex=66f7b80c&is=66f6668c&hm=ba9fe9430d573318c7b689c5e2ab433a16d4211ec78956df8c77e0a90092486a& 10:02 < bridge> I don’t like discord 10:03 < bridge> count the c++ projects 10:03 < bridge> 10:03 < bridge> now remember chillerdragon didnt know the difference between a pointer and a reference:cat_hehe: (love you chiller) 10:03 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289135024230109225/image.png?ex=66f7b80c&is=66f6668c&hm=ba9fe9430d573318c7b689c5e2ab433a16d4211ec78956df8c77e0a90092486a& 10:05 < bridge> reference is a pointer with some weirdness, change my mind 10:05 < bridge> use skype instead 10:05 < bridge> also referenced are trol 10:05 < bridge> also references are trol 10:08 < bridge> how so 10:08 < bridge> 10:08 < bridge> i like int `func(const int &ref) {};` 10:08 < bridge> more than 10:08 < bridge> ` int func(int *ref) {};` 10:08 < bridge> 10:08 < bridge> i also dislike that i have to dereference a pointer if i want to access the value 10:08 < bridge> 10:08 < bridge> e.g `std::cout << *ref << std::endl;` 10:08 < bridge> how so 10:08 < bridge> 10:08 < bridge> i like `int func(const int &ref) {};` 10:09 < bridge> more than 10:09 < bridge> ` int func(int *ref) {};` 10:09 < bridge> 10:09 < bridge> i also dislike that i have to dereference a pointer if i want to access the value 10:09 < bridge> 10:09 < bridge> e.g `std::cout << *ref << std::endl;` 10:09 < bridge> how so 10:09 < bridge> 10:09 < bridge> i like `int func(const int &ref) {};` 10:09 < bridge> more than 10:09 < bridge> ` int func(int *ref) {};` 10:09 < bridge> (personal preference and i dont know why tbh) 10:09 < bridge> i also dislike that i have to dereference a pointer if i want to access the value 10:09 < bridge> 10:09 < bridge> e.g `std::cout << *ref << std::endl;` 10:09 < bridge> std 10:09 < bridge> when you look at function call you don't know if it's passed by value or by reference 10:09 < bridge> sry i'll add `using namespace std` next time :( 10:09 < bridge> and i got fucked by it many times 10:09 < bridge> my skill issues probably :\ 10:10 < bridge> using namespace only hides the std 10:10 < bridge> It’s better to be open about your stds so others know 10:10 < bridge> i love me some std's... 10:10 < bridge> it's called "jump to definition" and it's great! 10:12 < bridge> The only thing cool in C++ are classes with methods 10:12 < bridge> my reptile brain only looks for `&` in function calls to know if it's passed by value or not 10:12 < bridge> chillerdragon: my language has methods on structs 😏 10:13 < bridge> pog 10:29 < bridge> references can't be null aka. will always point to some memory. is 8bytes just as a pointer on 64bit systems 10:30 < bridge> ah true, pointers always have to be initialized or they contain fancy garbage 10:31 < bridge> how can i silence clang_tidy in vsc? this is highly annoying 10:31 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289142387641290793/image.png?ex=66f7bee8&is=66f66d68&hm=de143a806c7a6f73dc6b23dd2ffada5fc6d5966fe0f6ec63b811bacee7f965f2& 10:32 < bridge> espacially because it's not shown as a suggestion but an error :kekw: 10:32 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289142492238970921/image.png?ex=66f7bf01&is=66f66d81&hm=0985ddb294cc436df83be67e4df45a927037ba1c79e856fa18c91c10e670b9d4& 10:33 < bridge> ?? 10:33 < bridge> ms_Binddr 10:33 < bridge> ms_Binder 10:33 < bridge> ms_MBinder 10:33 < bridge> Why are you not naming correctly 10:33 < bridge> no 10:34 < bridge> yes. 10:34 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289143008381505592/image.png?ex=66f7bf7c&is=66f66dfc&hm=4c79b6d190644b533aad0db2fcd1c4cb827920eac149ffc2bc6d9176358070f8& 10:34 < bridge> no 10:34 < bridge> :peperage: 10:34 < bridge> ms_binder 10:34 < bridge> ms_Binder 10:39 < bridge> > NVRM: loading NVIDIA UNIX Open Kernel Module for x86_64 560.35.03 Release Build (portage@localhost) Fri Sep 27 08:43:42 AM CEST 2024 10:39 < bridge> im trying the latest nividia open kernel module 10:58 < bridge> https://smallcultfollowing.com/babysteps/blog/2024/09/26/overwrite-trait/ 11:00 < bridge> @learath2 @jupeyy_keks https://github.com/rustls/ktls 11:00 < bridge> higher-level, safe wrappers over kTLS 11:00 < bridge> > kTLS lets the kernel (and, in turn, any network interface that supports it) take care of encryption, framing, etc., for the entire duration of a TLS connection... as soon as you have a TLS connection. 11:00 < bridge> > 11:00 < bridge> > For the handshake itself (hellos, change cipher, encrypted extensions, certificate verification, etc.), you still have to use a userland TLS implementation. 11:28 < ws-client> i got dropped from 176.9.114.238:8341 and cant reconnect can anyone reproduce? 11:28 < ws-client> i can connect to other ger2 servers just fine 11:30 < ws-client> ok im back in after 3 minutes 11:30 < ws-client> weird 11:31 < ws-client> woah seems like my route to germany is really bad 11:31 < bridge> chiller 11:32 < bridge> did you like just randomly timeout from the server 11:32 < bridge> i have issues like that too 11:32 < ws-client> yea while staying connected to another one at the same time 11:32 < ws-client> i blame the country im in 11:32 < bridge> i have to restart my game to rejoin 11:32 < ws-client> im 200 ping away on a fakin island so i guess the bamboo routing drops me sometimes 11:33 < ws-client> i didnt have to restart just wait 4 minutes 11:33 < bridge> i had to wait until my tee disconnected 11:33 < bridge> if i didnt restart 11:34 < ws-client> i have a fixed cl_port not sure how much a restart would do 11:35 < ws-client> lmao all GER2 servers with 14 and less players work all with more players i can not connect to xd 11:35 < ws-client> i miss germany 11:37 < ws-client> ok nvm its not the player count its just only a few servers that work. Its weird because its the same ip. So it shouldnt be routing right? 12:56 < bridge> You need to set cl_port to 0 if you want to avoid this, it's a firewall thing 12:57 < ws-client> ger2 has a firewall? 12:57 < bridge> at least on ger10 12:57 < ws-client> yea i never had issues with the fixed port in germany but good to know that it might happen 12:58 < ws-client> when return to ddnet development fokko? 12:58 < ws-client> i need those 128 players 13:01 < ws-client> bru gh collapses similar comments from different people xd 13:01 < ws-client> https://zillyhuhn.com/cs/.1727434897.png 13:15 < bridge> . 13:36 < bridge> https://www.tomshardware.com/tech-industry/tsmc-execs-allegedly-dismissed-openai-ceo-sam-altman-as-podcasting-bro 13:36 < bridge> xd 14:40 < bridge> im doing something like https://en.wikipedia.org/wiki/Fantasy_video_game_console but for a CPU/system 14:40 < bridge> im calling it edux 14:41 < bridge> i got a assembler for a custom assembly to compile to the custom ISA and a VM to execute that 14:44 < ws-client> nice i think my github bot works xd. @0xdeen fyi you can now comment "rebase" on my prs and my bot should force push a rebase within 15 minutes. 14:46 < bridge> that's ... really cool!, can you share the link? 14:47 < ws-client> oh shiet i discovered a flaw it will not remember what it rebased xd 14:47 < ws-client> https://github.com/ChillerDragon/rebase-bob 14:47 < bridge> 14:47 < bridge> chillerdragon: is it at least written in assembly? 14:47 < ws-client> in posix shell like all my github bots xd 14:47 < bridge> too bad 14:48 < bridge> rewrite it in assembly! 14:48 < bridge> nop 14:48 < bridge> i don't have a free few weeks 14:48 < bridge> id rather hit my wall against the wall trying to fix compiler 14:49 < bridge> id rather hit my head against the wall trying to fix compiler 15:05 < bridge> https://1c-dn.com/1c_enterprise/1c_programming_language/ 15:05 < bridge> apparently this is the COBOL of russia used in banks? 15:05 < bridge> xD 15:06 < bridge> https://x.com/anpaure/status/1838742382180700595 15:07 < bridge> chillerdragon: write tw client in 1c 15:07 < bridge> no 15:08 < bridge> only by very very old retail businesses 15:08 < bridge> > According to a 2014 IDC study, 1C:Enterprise occupies a third of the Russian enterprise software market, second to SAP's 49 percent 15:08 < bridge> aka russian accounting firms 15:08 < ws-client> whats "1c" 15:09 < ws-client> new C killer? 15:09 < bridge> the russian programming lang used in old places 15:09 < bridge> nah this shit is old 15:13 < bridge> 10 yo study x) 15:13 < bridge> ye 15:13 < bridge> their support sucks, their framework sucks 15:13 < bridge> you just need to undrestand russian tho 15:14 < bridge> they would die immediately if all businesses refused to support this legacy shit 15:14 < bridge> looks like pascal in russian 15:14 < bridge> chiller diller 15:14 < bridge> you just need to understand russian tho 15:15 < bridge> it's tomorrow already 15:15 < bridge> :smallGames: 15:15 < ws-client> oh right 15:15 < ws-client> i forgot 15:15 < ws-client> too late alr 15:15 < ws-client> but im whitelisted ye? 15:16 < bridge> yeah but i need to upload cur src 15:16 < bridge> if u want to seriously test i can do that 15:16 < ws-client> ye dont worry 15:16 < ws-client> i got to bed anyways now no new things now 15:16 < bridge> ok, tomorrow i am not here 15:16 < bridge> so if u want sunday, ping m,e 15:16 < bridge> so if u want sunday, ping me 15:16 < ws-client> oke 15:34 < bridge> @jupeyy_keks what u talking about here? 15:34 < bridge> whitelisted for? 15:39 < bridge> he wants to test the client integration of logging_into/creating accounts 15:39 < bridge> im building dd-pg 15:39 < bridge> lmao 15:40 < bridge> @jupeyy_keks im checking the source code 15:40 < bridge> damn u did smth big 15:40 < bridge> xD 15:41 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289220334477901844/image.png?ex=66f80780&is=66f6b600&hm=4bbcc9a6cc4a8d5a78db1e4dd3a6117b9e266446a0731837c4575a9cc1493750& 15:41 < bridge> lmao @teero777 wanted smaller tee collisions 15:41 < bridge> so this isnt really a bug, just some random test 15:41 < bridge> i love the egui gui xd 15:42 < bridge> it says like 5k fps 15:42 < bridge> is that a release build? 15:42 < bridge> ye 15:42 < bridge> cargo +nightly build --release 15:42 < bridge> mh k, melons super computer had like 9k 15:42 < bridge> fps is top right right 15:42 < bridge> yeah 15:43 < bridge> idk its like fixed on 5k-6k 15:43 < bridge> when i esc it goes to 144fps, is the menu vsync forced? xd 15:43 < bridge> i found what i actually wanted to do btw 15:44 < bridge> the menu has capped fps 15:44 < bridge> refresh rate of your monitor 15:44 < bridge> @jupeyy_keks do u think using nvidia open kernel changes smth 15:44 < bridge> i don't think so 😄 15:44 < bridge> this. someone made the map actually 2x 15:44 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289221121434193940/image.png?ex=66f8083b&is=66f6b6bb&hm=e8d579dcd435ff37a32b354a7f2c385d7b97511ef61ccf18e8ae7139111cd21e& 15:44 < bridge> it would be cool to be able to integrate that 15:44 < bridge> ``` 15:44 < bridge> ❯ ./target/release/ddnet-playground 15:44 < bridge> [2024-09-27T13:40:59Z INFO fs] Found config dir in "/home/edgar/.config/ddnet" 15:44 < bridge> [2024-09-27T13:40:59Z INFO fs] Found config dir in "/home/edgar/.config/ddnet" 15:44 < bridge> [2024-09-27T13:40:59Z WARN winit::platform_impl::linux::x11::xdisplay] error setting XSETTINGS; Xft options won't reload automatically 15:44 < bridge> [2024-09-27T13:40:59Z WARN thread_priority] Couldn't set the priority for the thread with Rust Thread ID ThreadId(45) named Some("backend-thread"): OS(13) 15:44 < bridge> [2024-09-27T13:40:59Z INFO winit::platform_impl::linux::x11::window] Guessed window scale factor: 1 15:44 < bridge> [2024-09-27T13:40:59Z INFO graphics_backend::backends::vulkan::phy_device] Vulkan 1.3.280 (driver: 560.35.3.0), NVIDIA 15:44 < bridge> [2024-09-27T13:40:59Z INFO fs-watch] could not watch directory/file: No such file or directory (os error 2) 15:44 < bridge> connect time cl: 6665068186 15:44 < bridge> [2024-09-27T13:41:06Z INFO ddnet_playground::client::game] loading map: linear 15:45 < bridge> [2024-09-27T13:41:07Z INFO fs-watch] could not watch directory/file: No such file or directory (os error 2) 15:45 < bridge> wasm log msg: WARN-sql: failed to prepare setup for sqls: not implemented for the dummy database in twgame:718 15:45 < bridge> wasm log msg: WARN-sql: failed to prepare setup for sqls: not implemented for the dummy database in twgame:718 15:45 < bridge> [2024-09-27T13:41:45Z INFO fs-watch] could not stop watching directory/file: No watch was found. about ["/home/edgar/.config/ddnet/mods/render"] 15:45 < bridge> wasm log msg: WARN-sql: failed to prepare setup for sqls: not implemented for the dummy database in twgame:718 15:45 < bridge> connect time cl: 58687199188 15:45 < bridge> [2024-09-27T13:41:58Z INFO ddnet_playground::client::game] loading map: ctf5 15:45 < bridge> [2024-09-27T13:41:58Z INFO fs-watch] could not watch directory/file: No such file or directory (os error 2) 15:45 < bridge> [2024-09-27T13:44:03Z INFO fs-watch] could not stop watching directory/file: No watch was found. about ["/home/edgar/.config/ddnet/mods/render"] 15:45 < bridge> [2024-09-27T13:44:03Z INFO fs-watch] could not stop watching directory/file: No watch was found. about ["/home/edgar/.config/ddnet/mods/ui"] 15:45 < bridge> [2024-09-27T13:44:03Z INFO sound_backend::backend_thread] sounds backend thread exited: sending on a closed channel disabled backtrace 15:45 < bridge> [2024-09-27T13:44:03Z INFO graphics_backend::backend_thread] graphics backend thread exited: sending on a closed channel 15:45 < bridge> ``` 15:45 < bridge> yeah 15:45 < bridge> if u closed the client normally that is expected log 15:46 < bridge> ah i love it xDD 15:46 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289221519008071731/image.png?ex=66f8089a&is=66f6b71a&hm=69b1ffc4e087ef0d3e4fde327a043eae2122c6e7bccd41bfeebe359f72e872d3& 15:46 < bridge> why lto false? 15:46 < bridge> bcs code-units costs like 30s extra compile time 15:46 < bridge> and lto like 5 minutes xD 15:46 < bridge> that build is already insanely slow 15:52 < bridge> @jupeyy_keks what gpu melon has? 15:52 < bridge> rx 7900xtx 15:52 < bridge> from btop and nvtop my gpu is at 100% and my cpu at 3% 15:52 < bridge> i have a 3080 15:52 < bridge> 💀 15:52 < bridge> why dont you just ping me 15:52 < bridge> why jupsti 15:52 < bridge> well its normal, the bottleneck should be the gpu 15:52 < bridge> :kekw: 15:52 < bridge> 6k fps not bad 15:53 < bridge> compare it to normal ddnet on linear 15:53 < bridge> im a madman and ill do a lto build with std included 15:53 < bridge> @ryozuki what i'd actually find interesting is, if you press f1 -> `dbg.bench true` -> quit -> start client and show the log of the terminal then 15:53 < bridge> that shows how much time is spent in some stuff 15:54 < bridge> make integrated flamegraph 15:54 < bridge> what is tract-core 15:54 < bridge> why is there some inference ai thing in dd-pg xd 15:55 < bridge> xDD 15:55 < bridge> it's for the noise cancellor for proximity chat 15:55 < bridge> epic 15:55 < bridge> ddnet ai powered 15:55 < bridge> ok its linking the final binary 15:55 < bridge> lto ftw 15:55 < bridge> https://github.com/Rikorose/DeepFilterNet 15:55 < bridge> made in germany 15:55 < bridge> 😏 15:55 < bridge> xD 15:55 < bridge> apparently it's as good as the AI thing discord uses 15:55 < bridge> quite impressive 15:58 < bridge> still building... 15:59 < bridge> i guess lto is single threaded 15:59 < bridge> there's thin-lto which is a lot faster IIRC 15:59 < bridge> and produces similar results 15:59 < bridge> i want the max 15:59 < bridge> oh its done 15:59 < bridge> 6 mins only 16:00 < bridge> with mold it should be multi threaded i think 16:00 < bridge> 16:00 < bridge> at least to a certain extend 16:00 < bridge> https://doc.rust-lang.org/cargo/reference/profiles.html#lto 16:00 < ws-client> wat was the build command again? 16:00 < ws-client> just cargo build and cargorun? 16:00 < bridge> lto is esp good for dead code elimination, so maybe lto-thin is worth a try 16:00 < bridge> `cargo +nightly build --release -Z build-std=panic_abort,std --target x86_64-unknown-linux-gnu` 16:00 < bridge> `./target/x86_64-unknown-linux-gnu/release/ddnet-playground` 16:00 < ws-client> watafak xd 16:00 < ws-client> so complicated 16:00 < bridge> cargo +nightly run --release 16:01 < ws-client> i dont think i have enough disk space for this 16:01 < bridge> with -Z build-std=panic_abort,std it builds the std with the local cpu features 16:01 < bridge> avx512 16:01 < bridge> what ryo is doing is, that he hopes to get more fps. but sadly it won't do so 16:01 < bridge> xd 16:01 < bridge> i get same fps xd 16:02 < bridge> @ryozuki do this 16:02 < bridge> i want to know 16:02 < bridge> i get 4k fps in ddnet client 16:03 < bridge> epyc rust moment 16:03 < bridge> do i join a server? 16:03 < bridge> or just quit 16:03 < bridge> quit 16:03 < bridge> start client 16:03 < bridge> quit 16:03 < bridge> xd 16:03 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289225990442061864/message.txt?ex=66f80cc4&is=66f6bb44&hm=04f60ee9ce2943ff9058fe8967c5225d6a3e9318211499b80b3432339926ddc9& 16:03 < bridge> "creating vk logical device took 0.11s / 109ms / 207ms global" 16:04 < bridge> nvidia drivers 16:04 < bridge> on windows this step also takes insanely long 16:04 < bridge> with radv it takes like 20ms 16:04 < ws-client> yea its too late to clone this big ass repo with 70 KiB/s 16:04 < bridge> xd 16:04 < ws-client> and boom it finished? 16:04 < ws-client> xd 16:05 < ws-client> my connection is random af 16:05 < bridge> @ryozuki u on linux i assume? 16:05 < bridge> gentoo ye 16:05 < bridge> why does sound take so long for u 16:05 < bridge> hmm idk 16:05 < ws-client> cargo run gives me SSL errors gg 16:05 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289226474930438155/message.txt?ex=66f80d38&is=66f6bbb8&hm=3e621eb2b1f0057ba73a23c8cf837bc0e5735da22d0a666eaa7cec57005a3961& 16:05 < bridge> i use pipewire 16:05 < bridge> i have so much better results xd 16:06 < bridge> my pc is slower than yours btw 16:06 * bridge normally 16:06 < bridge> sound took 0.03s / 25ms / 35ms global 16:06 < bridge> on a second rerun 16:06 < bridge> looks a bit bittle 16:06 < bridge> creating vk logical device took 0.11s / 111ms / 196ms global 16:06 < bridge> this seems same 16:06 < bridge> xd 16:07 < bridge> also a lot 16:07 < bridge> mine takes half the time 16:07 < bridge> nvidia drivers bloated 16:07 < bridge> do u use pipewire? 16:07 < bridge> :lol: 16:07 < bridge> yes 16:07 < bridge> oh is sound nvidia too? 16:07 < bridge> only if u use hdmi 16:08 < bridge> or the nvidia drivers init sound regardless 16:08 < bridge> ur initializing the event loop took 0.04s / 40ms / 40ms global 16:08 < bridge> vs mine initializing the event loop took 0.01s / 8ms / 8ms global 16:08 < bridge> lel 16:08 < bridge> 😏 16:08 < bridge> (mine is faster) 16:08 < bridge> that is basically the x11 window 16:08 < bridge> i bet kde is simply slow in that xD 16:08 < bridge> xd 16:09 < bridge> anyway its epic ddnet in rust 16:09 < bridge> dd-pg on  test_force_pushed_updates [!] is 📦 v0.1.0 via 🦀 v1.81.0 took 2s 16:09 < bridge> ❯ du -sh 16:09 < bridge> 15G . 16:09 < bridge> this has like 2 builds xd 16:09 < bridge> 😬 16:10 < bridge> ❯ du -sh target/* 16:10 < bridge> 4.0K target/CACHEDIR.TAG 16:10 < bridge> 6.8G target/debug 16:10 < bridge> 3.8G target/release 16:10 < bridge> 3.5G target/x86_64-unknown-linux-gnu 16:10 < bridge> last is lto 16:10 < bridge> now u understand why i also clean like 200GB when i do cargo clean 16:10 < ws-client> ok nvm i have 6GB left on my drive 16:10 < ws-client> i dont think i will do it on sunday xd i got so many network issues anyways 16:10 < ws-client> guess ill sign up from germany then 16:10 < bridge> .rwxr-xr-x 112M edgar 27 Sep 15:59 ddnet-playground 16:11 < bridge> chiller stop complain and do it now 16:11 < bridge> not bad 112mb 16:11 < bridge> xdddd 16:11 < bridge> then i can finally close the acc server xD 16:11 < bridge> @ryozuki with lto? 16:11 < bridge> ye 16:11 < bridge> uff 16:11 < bridge> stripped? 16:11 < bridge> 124M with lto 16:11 < ws-client> jopsti u cant imagine how borked my internet is i gotta wait decades for basic stuff 16:11 < bridge> xd 16:11 < ws-client> also i just dont have the disk space xd 16:11 < bridge> no 16:11 < bridge> 100M stripped 16:11 < bridge> just delete some ddnet build 16:12 < bridge> ok xD 16:12 < bridge> well everything static linked 16:12 < bridge> 124M without lto 16:12 < bridge> ye 16:12 < bridge> its like bundling sdl 16:12 < bridge> ``` 16:12 < bridge> ❯ ldd ddnet-playground 16:12 < bridge> linux-vdso.so.1 (0x00007f65dd7ae000) 16:12 < bridge> libopus.so.0 => /usr/lib64/libopus.so.0 (0x00007f65d7767000) 16:12 < bridge> libwayland-client.so.0 => /usr/lib64/libwayland-client.so.0 (0x00007f65d7757000) 16:12 < bridge> libasound.so.2 => /usr/lib64/libasound.so.2 (0x00007f65d7668000) 16:13 < bridge> libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/13/libgcc_s.so.1 (0x00007f65d7642000) 16:13 < bridge> libm.so.6 => /lib64/libm.so.6 (0x00007f65d7593000) 16:13 < bridge> libc.so.6 => /lib64/libc.so.6 (0x00007f65d73d2000) 16:13 < bridge> libffi.so.8 => /usr/lib64/libffi.so.8 (0x00007f65d73c5000) 16:13 < bridge> /lib64/ld-linux-x86-64.so.2 (0x00007f65dd7b0000) 16:13 < bridge> ``` 16:13 < bridge> ddnet for reference 16:13 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289228450258882602/message.txt?ex=66f80f0f&is=66f6bd8f&hm=1ab6fe213ceb9886ad24c6eab463d5dfac201da880c71245a98f18d66378b51d& 16:14 < bridge> it uses winit 16:14 < bridge> i know 16:14 < bridge> i wonder if its cuz gentoo it links so much stuff 16:15 < bridge> `twmap-edit` was probably used here, you can multiply the size of maps by any positive integer factor with it :) 16:18 < bridge> try only listing direct dependencies 16:18 < bridge> same for ddnet-pg 16:18 < bridge> how? 16:18 < bridge> objdump -p 16:19 < bridge> i think xd 16:19 < bridge> `objdump -p | grep NEEDED` 16:20 < bridge> dd-pg: 16:20 < bridge> 16:20 < bridge> ``` 16:20 < bridge> NEEDED libopus.so.0 16:20 < bridge> NEEDED libwayland-client.so.0 16:20 < bridge> NEEDED libasound.so.2 16:20 < bridge> NEEDED libgcc_s.so.1 16:20 < bridge> NEEDED libm.so.6 16:20 < bridge> NEEDED libc.so.6 16:20 < bridge> ``` 16:20 < bridge> 16:20 < bridge> ddnet 16:20 < bridge> 16:20 < bridge> ``` 16:20 < bridge> NEEDED libfreetype.so.6 16:20 < bridge> NEEDED libGLEW.so.2.2 16:20 < bridge> NEEDED libpng16.so.16 16:20 < bridge> NEEDED libz.so.1 16:20 < bridge> NEEDED libSDL2-2.0.so.0 16:20 < bridge> NEEDED libwavpack.so.1 16:20 < bridge> NEEDED libavformat.so.60 16:20 < bridge> NEEDED libavcodec.so.60 16:20 < bridge> NEEDED libavutil.so.58 16:20 < bridge> NEEDED libswscale.so.7 16:20 < bridge> NEEDED libswresample.so.4 16:20 < bridge> NEEDED libopusfile.so.0 16:21 < bridge> NEEDED libvulkan.so.1 16:21 < bridge> NEEDED libGL.so.1 16:21 < bridge> NEEDED libnotify.so.4 16:21 < bridge> NEEDED libgobject-2.0.so.0 16:21 < bridge> NEEDED libcrypto.so.3 16:21 < bridge> yea, that looks more like it 16:22 < bridge> wow ddnet has so few deps 16:22 < bridge> quite impressive actually 16:23 < bridge> if we'd count deps that i added in cargo.toml files. 16:23 < bridge> 16:23 < bridge> that would be like 10 times as much xD 16:44 < bridge> same 😅 17:00 < bridge> 2 factors contributed to this: 17:00 < bridge> - matricks kept it minimal and every maintainer since then has paid attention to not add any deps unless necessary 17:00 < bridge> - It's so annoying to add new libs with our current setup and C++ in general 17:02 < bridge> yeah, esp the second always kills me 😄 17:02 < bridge> esp on windows 17:02 < bridge> 😬 17:02 < bridge> :monkaStop: 17:03 < bridge> https://github.com/Jupeyy/dd-pg/blob/5fd667e959373877413438fd5cae8c8e44767621/Cargo.lock 17:03 < bridge> 17:03 < bridge> my cargo.lock is > 10k lines 17:05 < bridge> well i hope i can remove some stuff, and improve build times a bit 17:05 < bridge> on the other hand side, all these massive libs are just so powerful and easy to use 17:06 < bridge> Well in exchange for long build times you technically get a more optimal binary 17:07 < bridge> yeah i honestly wonder why dd-pg performs so good 17:07 < bridge> <0dpododdododo> who ask 17:07 < bridge> it has more FPS than ddnet on twgame, which is a wasm module 17:07 < bridge> so WASM beats native 17:07 < bridge> rip 17:07 < bridge> <0dpododdododo> who ask!!! 17:07 < bridge> asked who? 17:07 < bridge> <0dpododdododo> https://media.discordapp.net/attachments/960609967281434674/1114247923056771213/attachment.gif 17:08 < bridge> Well you wrote dd-pg from scratch what we have is a mess that grew naturally 17:08 < bridge> <0dpododdododo> https://media.discordapp.net/attachments/1088553777927295120/1097521249586008104/gif.gif?width=858&height=670 17:09 < bridge> some people concern me... 17:09 < bridge> <0dpododdododo> thank me to my countributioin 17:09 < bridge> sure, but i use lots of hashmaps, and with wasm lots of heap allocs 17:09 < bridge> 17:09 < bridge> and all this shit that should be slow xd 17:09 < bridge> Can you go contribute somewhere else? 17:09 < bridge> thanks senpai 17:10 < bridge> Heap allocs and hashmaps and stuff have constant overhead. Our mess has linear and polynomial performance 17:11 < bridge> oh yeah true, i think i didnt purposely ever added linear searches or similar 17:11 < bridge> maybe in the UI 17:11 < bridge> but not in the game 17:12 < bridge> there will never be enough linear 17:12 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289243216000061490/2024-09-27_17.10.46.png?ex=66f81ccf&is=66f6cb4f&hm=365b612bee4aa015ad04df558bb320d5476625441413531197eeec6e56b2e221& 17:12 < bridge> wait till Linear² comes up 17:12 < bridge> If you allocate on the heap, once, it's not really much worse than a stack allocation. 17:12 < bridge> 17:12 < bridge> If your hashmaps allow constant time lookups whatever overhead there is to using them is most definitely much less than the performance penalty of an O(n^2) lookup 😄 17:13 < bridge> if you fill the memory you allocate, heap allocs are very close 17:13 < bridge> https://raw.githubusercontent.com/spuhpointer/stack-vs-heap-benchmark/refs/heads/master/filled2.png 17:14 < bridge> (non filled for comparision) 17:14 < bridge> https://raw.githubusercontent.com/spuhpointer/stack-vs-heap-benchmark/refs/heads/master/noinit2.png 17:15 < bridge> This is allocation cost, right? It shouldn't matter if you are allocating once or twice. Only on the hot path should this matter. 17:15 < bridge> 17:15 < bridge> It also depends a lot on the allocator 17:16 < bridge> it also depends on the size 17:17 < bridge> This graph isn't too too useful imo. The linear cost of filling the memory obviously dominates. Which should be almost exactly the same for both heap and stack allocations 17:17 < bridge> all i can say is that with WASM modules for physics it must allocate every frame rn, bcs i cannot deserialize into an existing buffer yet 17:18 < bridge> Ah, I guess that would be a decent improvement. Why is it not possible yet? 17:19 < bridge> it's the vec in vec problem. I'd need to almost write a custom serde deserializer 17:20 < bridge> buffer = vec 17:20 < bridge> if u have a vec of vecs, then the inner vecs get destructed if u clear the outer one 17:21 < bridge> The thing is, it won't improve performance 17:21 < bridge> is that a rust thing? 17:21 < bridge> i tried native twgame module, the heap allocs are simply negatible 17:22 < bridge> the sentence "benchmark your app to find bottlenecks" is just so true 17:22 < bridge> Probably not. Heap allocs are tiiiny overheads with modern arena allocators 17:22 < bridge> Unless you are doing millions of them, or you are in the 90s and you use an allocator that calls sbrk on every malloc 17:23 < bridge> we as humans are always super hysterical about heap allocs, or linear searched or hashmaps or whatever. 17:23 < bridge> 17:23 < bridge> But if they are actually the bottleneck is hard to say 😄 17:23 < bridge> The hot path is also not the hot path. 17:23 < bridge> 17:23 < bridge> There is always even hotter pathes xD 17:23 < bridge> optimizing float_to_int in the game physics for example was worth it 17:23 < bridge> even tho it does nothing than converting floats to ints xD 17:23 < bridge> Well ddnet is living proof that O(n^2) algorithms can be used just fine 17:24 < bridge> true 😄 17:24 < bridge> The hot path is also not the hot path. 17:24 < bridge> 17:24 < bridge> There is always even hotter paths xD 17:24 < bridge> I should do another perf on a full server to see if there is anything low hanging 17:25 < bridge> Iirc antibot is the biggest cost rn, but I don't know it good enough to mess with it 17:25 < bridge> And noby has a very special way he writes code 17:28 < bridge> hi can someone review my PR please https://github.com/ddnet/ddnet/pull/9047 17:28 < bridge> i changed it from draft to ready for review 17:28 < bridge> Sounds very scary. I'll take a look 🙃 17:28 < bridge> thx :) 17:29 < bridge> i chcecked before and i dont think we need star in hud 17:29 < bridge> you already type /team /practice /invincible to get it so you wont just get it by accident 17:29 < bridge> /invincible toggles so i thought i might be useful, but i see your point 17:29 < bridge> up for discussion 17:29 < bridge> /invincible toggles so i thought it might be useful, but i see your point 17:30 < bridge> just chat message "You are now invincible: immune to freeze,kill tiles etc" would be sufficient i think 17:30 < bridge> We want to move away from server messages being indicators for stuff as much as possible 17:30 < bridge> NOT THE GRAPHS AGAIN 17:30 < bridge> they are the best i have 17:30 < bridge> i always use them now 17:31 < bridge> i post them once per month until someone gives me better ones 17:32 < bridge> yea but taking space in hud and hud image for something that would be used once a while isnt good imo 17:32 < bridge> and its a chat command so confirmation message makes sense 17:32 < bridge> @timakro do u need a hud icon? 17:33 < bridge> invincible tees should have enchantment glow from minecraft that would be sick 17:33 < bridge> no i don't **need** it 17:33 < bridge> yes that would be the best because it would tell you AND other players that you are invincible 17:33 < bridge> not sure how to implement it though 17:34 < bridge> It shouldn't take up space in the hud if it's not on. 17:34 < bridge> 17:34 < bridge> We can always make the hud image larger, clients crop to the size they need so older clients wouldn't be broken 17:34 < bridge> i meant 17:34 < bridge> i like hat message more 🙂 17:34 < bridge> i like chat message more 🙂 17:34 < bridge> You ask @jupeyy_keks and hope he is in a good mood and is willing to help 17:35 < bridge> oh the yellow hud icon is nice 17:35 < bridge> not the rainbow though 17:35 < bridge> i think even the yellow doesn't perfectly fit with the other icons tbh 17:35 < bridge> but this is the pinnacle of my graphic design skills 17:35 < bridge> also let's hope nintendo does not sue... 17:35 < bridge> can't we add support for multiple nameplate icons in space of the strong/ weak hook area? 17:35 < bridge> search for you are now in solo part string something like that 17:36 < bridge> and have a ⭐️ there too 17:36 < bridge> and -1 sends for all clients 17:36 < bridge> i'm talking about minecraft enchanted item sheen 17:36 < bridge> ah alr 17:37 < bridge> i think its possible to do a SmolMap, a hashmap that is initially stack allocated 17:37 < bridge> i didn't even know you could see strong/weak hook now. how to enable it? 17:37 < bridge> like smolstr 17:37 < bridge> hi ryo ^^ 17:38 < bridge> appearance>name plate 17:38 < bridge> Isn't this display a debug only feature? It's really not the best idea to have the only display of a feature be in debug 17:38 < bridge> i dont even understand the request after reading it 5 times 17:39 < bridge> How to make tee glow like minecraft enchanted items glow? 17:39 < bridge> indeed, dont optimize prematurely, do flamegraphs and profile 17:40 < bridge> oh, we'd need uv-animations 17:41 < bridge> @jupeyy_keks btw in rust u can use cargo flamegraph 17:41 < bridge> i think they simply move the texture coordinates 17:41 < bridge> i know 17:41 < bridge> i often use it 17:41 < bridge> also in rust u can also use this https://github.com/mstange/samply 17:41 < bridge> it's epyc 17:41 < bridge> it makes perf stats in firefox profiler format 17:41 < bridge> its dope 17:41 < bridge> ok 17:41 < bridge> try it 17:41 < bridge> Also don't code like you have no brain wrinkles 17:41 < bridge> firefox profiler shows flamegraphs too 17:42 < bridge> Don't optimize early but don't write a brute force algorithm because it's quicker and we must deploy 17:42 < bridge> yeah, but by not optimizing prematurely i mean if something that u dont know will improve perfomance and takes like a lot of effort u should first check if its relevant 17:42 < bridge> which often do take a lot of effort 17:43 < bridge> ofc u shouldnt add bubble sort 17:43 < bridge> I'd have thought you'd need to render the entire tee (body, eyes, feet, 0.7 tees have more components) to a off-screen buffer first and apply the shine effect there and then render the buffer to the screen. But I don't know if ddnet has the graphics APIs for that 17:43 < bridge> altho openbsd did it 17:43 < bridge> and they got away with it till not long ago 17:43 < bridge> kek 17:44 < bridge> On a scale of 0 to impossible. How hard would that be with the 69 different backends we support? 17:44 < bridge> there is a way to make it easier 17:44 < bridge> :LFG_EvilKermit: 17:44 < bridge> why hard? it's ez 17:44 < bridge> u just need to change uv coordinates 17:44 < bridge> except u want max perf and do it in the shader 17:44 < bridge> well u need to analyze the skin texture too 17:45 < bridge> but that can be done on cpu 17:45 < bridge> e.g. use the outline texture of skins 17:45 < bridge> and make that your glow effect base 17:45 < bridge> what's an uv animation? 17:46 < bridge> https://tenor.com/view/minecraft-gif-22453064 17:46 < bridge> xDDD 17:46 < bridge> minecraft rain is UV anim too i think 17:46 < bridge> they simply have a repeating pattern 17:46 < bridge> i mean technically, what does it do to the image and how 17:47 < bridge> isn't this just a texture that's shifted every frame imposed on top? 17:47 < bridge> i guess it moves the texture along the object or smth 17:47 < bridge> it seems more complicated than a moving texture but a moving texture might suffice for us 17:47 < bridge> yeah, but if u want a pixel perfect glow 17:47 < bridge> u need a stencil i guess 17:48 < bridge> or a shader 17:48 < bridge> It's not too hard to do in a shader, but we have gl1.5 too which I'm sure doesn't support it. I don't even think we pass enough to the shader to control it tbf 17:48 < bridge> glowy tees pog 17:48 < bridge> Holo tee 17:48 < bridge> my idea would have been to render all the tee components (body, feet, eyes) to a buffer, then apply the shine texture to the buffer and then render the buffer to the screen 17:48 < bridge> @learath2 A minecraft enchanted tee 17:48 < bridge> but idk how to create an off-screen buffer 17:48 < bridge> or render to it 17:49 < bridge> xd 17:49 < bridge> i'd suggest you don't do the glow effect 17:49 < bridge> That is definitely not possible in gl1.5 iirc 17:49 < bridge> enchanted golden ~~apple~~ tee 17:49 < bridge> gl=opengl? 17:49 < bridge> it's super ez to add bad performance wiht offscreen buffers, stencil buffers etc. 17:49 < bridge> e.g. u change from read-only rendering to read-write 17:49 < bridge> we need just 64 off screen buffers, they can live forever (one per tee) 17:50 < bridge> What about just generating some shiny particles around the tee like ninja or freeze? 17:50 < bridge> yeah would be much easier 17:50 < bridge> sounds like a more practical solution 17:50 < bridge> I would probably just have a sin wave rotated, pow'd multiply the out color, but again idk what I would do for gl1.5 17:50 < bridge> i want uv anims for quads on maps, that would be cool xd 17:51 < bridge> how shitty is gl1.5 if it doesn't allow to render to a off-screen texture/buffer lol 17:51 < bridge> what do you even mean with offscreen texture 17:51 < bridge> but yeah i wouldn't wanna add the backend code for multiple backends to create and render to buffers either way 17:51 < bridge> offscreen textures are super hard xD 17:51 < bridge> opengl 1.5 was released on July 29, 2003 17:51 < bridge> wow okay 17:52 < bridge> wow it's so new? 17:52 < bridge> xd 17:52 < bridge> xd 17:52 < bridge> i thought it's much older 17:52 < bridge> 1.5 July 29, 2003 17:52 < bridge> 2.0 September 7, 2004 17:52 < bridge> 2.1 July 2, 2006 17:52 < bridge> 3.0 August 11, 2008 17:52 < bridge> People wanted to add particles (louis I think) when someone removed the server message when hitting powerup tiles, after it got reverted. Should probably do the same to these 17:52 < bridge> 3.3 11. März 2010 17:52 < bridge> 17:52 < bridge> first sane opengl version 17:53 < bridge> 4.3 6. August 2012 17:53 < bridge> vulkan 1.0 compatible version 17:54 < bridge> @jupeyy_keks what exactly do you mean by "uv animation" btw? Animating the uv mapping? How does that help? 17:54 < bridge> yeah dunno, i thought we only need a circle above the tee 17:55 < bridge> but then i realized that will look shit too 17:55 < bridge> so just forget what i said 17:55 < bridge> without a shader it will look shit 17:56 < bridge> This exact effect is what I had in mind and I would probably achieve it in shader by multiplying the outcolor. But I don't think we can do that here, right? I don't think we have the information in the shader and just directly no shaders in gl1.5 17:57 < bridge> Another way that comes to mind is a stencil buffer, but again I don't think we can have those before gl3.3 17:57 < bridge> :justatest: 17:57 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289254704358100992/image.png?ex=66f82782&is=66f6d602&hm=9e367dbbdb261e0b54f72c6411a3927311a00e3f67efb7e2dc578bec4fbccdde& 17:58 < bridge> yeah good question. 17:58 < bridge> 17:58 < bridge> there are 3 options: 17:58 < bridge> - this minecraft pickaxe is a real 3d object, then it would even work in ogl 1.5 17:58 < bridge> - this pickaxe uses a shader like u said 17:58 < bridge> - they use a stencil buffer + uv anim with a "normal" quad, which would work too in ogl 1.5, but i think stencil buffers are only an extension or smth 17:58 < bridge> can we draw a texture masked by another texture? 17:58 < bridge> like an alpha mask 17:59 < bridge> with a shader that is ez ig 17:59 < bridge> How about a glow effect done on cpu like the glow skins in the db? 17:59 < bridge> without, dunno 17:59 < bridge> sure but that wouldn't be animated 17:59 < bridge> except u want to upload a texture every frame 17:59 < bridge> i think this is beyond what's possible without changing a lot of graphics stuff in ddnet 17:59 < bridge> Yeah but I guess it would be an indicator that's not too too hard to code 18:00 < bridge> yeah 18:00 < bridge> https://inspirnathan.com/posts/65-glow-shader-in-shadertoy 18:00 < bridge> https://tenor.com/view/super-mario-world-snes-super-nintendo-2d-platformer-yoshi-gif-23210200 18:00 < bridge> Yeah, you might need to fall back to what louis suggested with the small star rendered above the nameplate 18:00 < bridge> they just change the color and add some particles 18:00 < bridge> :lol: 18:00 < bridge> so a halo drawn behind the skin? is that how the skindb glow works? 18:00 < bridge> Or some particles 18:00 < bridge> we need 1995 tec 18:00 < bridge> :lol: 18:01 < bridge> https://inspirnathan.com/images/content/posts/65-glow-shader-in-shadertoy/gif-1.gif 18:02 < bridge> I think so. Inflate the outline, each step of the inflation is less alpha 18:02 < bridge> the enchant in minecraft is a texture 18:02 < bridge> "/assets/minecraft/textures/misc/enchanted_item_glint.png" 18:02 < bridge> maybe the halo could be star shaped and rotating 18:02 < bridge> can u send it? 18:02 < bridge> i am interested 18:02 < bridge> ah you mean basically render a re-colored scaled up version of the tee behind 18:03 < bridge> That's kinda what I had in mind yes 18:03 < bridge> With some falloff so it doesn't just look like a chunky tee sticker 18:03 < bridge> falloff=soft edges? 18:04 < bridge> Yeah 18:04 < bridge> and how would i do that -.- 18:04 < bridge> This uses sdf so you need jump flood pass first 18:04 < bridge> The exact same way the outline is rendered. Instead of rendering outline texture, render the inflated glow version you generated 18:04 < bridge> i can't generate anything though 18:05 < bridge> i can just render the existing body texture and change scale and color 18:05 < bridge> i think i might experiment with a rotating maybe size-pulsing semi-transparent yellow/white star thing behind the player 18:05 < bridge> You can on cpu when loading the skins generate it. Idk it might be too slow and unnecessary 18:05 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289256721692491828/image.png?ex=66f82963&is=66f6d7e3&hm=97dadc674beb59948eeb0a00b1b025cc65f4a6ce50b52aa8904c43337db4fcc9& 18:05 < bridge> i think it looks like this 18:06 < bridge> i cant find it rn 18:06 < bridge> Scaling isn't the correct operation because it only works with convex shaped objects 18:06 < bridge> idk where prism launcher saves minecraft instances xd 18:06 < bridge> ok 18:06 < bridge> That is absurd. Now I'm curious how it works 18:06 < bridge> then they most likely use stencil or have a 3d object 18:06 < bridge> i guess the black is invisible 18:07 < bridge> its probs a shader cuz resourcepacks cant change how its animated 18:07 < bridge> @jupeyy_keks is there really no way to animate/modify a texture without loading it again on gl1.5? 18:07 < bridge> https://www.shadertoy.com/view/cty3R3 you want this 18:08 < bridge> You can modify the textures AFAIK, we do it with the text atlas. But then you lose the original 18:08 < bridge> except for simple colors? i dunno 18:08 < bridge> you may enjoy https://www.dwitter.net/ - it's basically shader art that fits into 140 bytes 18:09 < bridge> i mean the static pipeline probably had some kind of multi texturing support for alpha masks 18:09 < bridge> i bet u can do what minecraft does 18:09 < bridge> ``` 18:09 < bridge> eval(unescape(escape`󩭯󬬨󭌪󟜶󜌬󪜽󮬽󜝥󜼻󭌼󜬰󙬦󪜭󛜻󮌮󩭩󫍬󤭥󨽴󚌮󛬮󭌿󦼹󝬰󚽩󚭓󚍴󚜯󜼬󜼴󜌫󪜪󪜯󜽥󜼭󪜪󚍴󟌲󟼭󜜺󭌪󚬳󙜮󝬩󛍷󟝓󚍩󛼳󜬰󚜪󝌹󛍷󧜺󦽺󛝷󛌵󜌫󪜬󭼪󜬬󚍩󛼱󝌭󜜳󚜪󚬲󙜴󜌰󟌲󝜰󧜩󚝸󛭦󪝬󫍓󭍹󫍥󟝴󟽒󚌩󞭒󚍺󛌲󝜰󛝩󛼴󛍩󛼹󚜬󭼽󚍺󚭩󛝩󚭩󚜪󚬮󝜻`.replace(/u../g,''))) 18:09 < bridge> ``` 18:09 < bridge> apparently this draws a miami tree 18:09 < bridge> but tbh i also dunno lot about all the static pipeline tricks 18:09 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289257650131046480/image.png?ex=66f82a41&is=66f6d8c1&hm=3ef75872defc30835c2d72f79f9ab74d9b2b60443232c353696a0f00e3511163& 18:10 < bridge> Actually, maybe we can just accept that gl1.5 won't show this effect. I think all our other backends have shaders where this effect is easily done 18:10 < bridge> drop ogl1 18:10 < bridge> yeah many of them use an encoder to use the full 256 states per byte instead of only valid utf8 18:12 < bridge> it's hard to even find docs about the old fixed function pipeline now 😄 18:12 < bridge> btew 18:13 < bridge> 12k players on ddnet 18:13 < bridge> 600 on GER 18:13 < bridge> this is another generation :sadAUE: 18:13 < bridge> Yeah, EUR is pretty much dead compared to RUS and CHN 18:13 < bridge> why we dont have influencers 18:14 < bridge> curious there arent many asian devs yet 18:14 < bridge> be one 18:14 < bridge> i guess language barrier is too big 18:14 < bridge> i was about to make a mom joke but im old now 18:14 < bridge> Actually there seems to be some stencil buffer support in gl1 😄 18:15 < bridge> glEnable(GL_STENCIL_TEST); 18:15 < bridge> :justatest: 18:15 < bridge> but that doesnt mean you can create a window with stencil buffer xdd 18:16 < bridge> 🙃 18:16 < bridge> but anyway 18:16 < bridge> stencil would defs work 18:17 < bridge> There is also `TEXTURE_ENV_MODE`, I wonder if that can work somehow 18:18 < bridge> ``` 18:18 < bridge> glEnable(GL_STENCIL_TEST); // by default not enabled 18:18 < bridge> glStencilMask(stencilMask); // allow writing to stencil buffer, by default (0xFF) no mask. 18:18 < bridge> glClearStencil(clearStencilValue); // clear stencil value, by default = 0 18:18 < bridge> glStencilFunc(func, ref, mask); // by default GL_ALWAYS, 0, 0xFF, always pass stencil test 18:18 < bridge> glStencilOp(fail,zfail,zpass); // by default GL_KEEP, GL_KEEP, GL_KEEP, do not change stencil buffer 18:18 < bridge> glClear(GL_STENCIL_BUFFER_BIT); // clear stencil buffer, fill with (clearStencilValue & stencilMask) 18:18 < bridge> ``` 18:18 < bridge> from wiki 18:18 < bridge> Yeah I can see `TEXTURE_ENV_MODE` `MODULATE` working somehow, let me mess around with it a bit 😄 18:27 < bridge> https://www.dwitter.net/d/32535 18:29 < bridge> there was something you could change in the code to print the decoded version but i cannot remember -.- 18:31 < bridge> I managed to ruin it 18:31 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289263221156352060/perfect.png?ex=66f82f71&is=66f6ddf1&hm=1187cdcc3e88634528846f35268b54a9d1d915a736f30efd4af2bbd953092323& 18:32 < bridge> https://www.dwitter.net/d/32480 18:32 < bridge> actually this website does not use shaders idk why i said that 18:33 < bridge> https://wiki.ddnet.org/wiki/GFX_Troubleshooting 18:33 < bridge> 18:33 < bridge> also please use #bugs next time 18:33 < bridge> https://wiki.ddnet.org/wiki/GFX_Troubleshooting 18:33 < bridge> 18:33 < bridge> also please use #bugs next time 🤓 18:58 < bridge> https://www.hardmo.de/article/2021-03-14-zst-proof-types.md 19:00 < bridge> ummm 19:00 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289270530314342450/perfect.png?ex=66f8363f&is=66f6e4bf&hm=a3a9fa04a409ded4f30e9ed021c52a236cf31f3787c69311281851c3c946c2e7& 19:01 < bridge> Dead by Teelight 19:02 < bridge> Sadly this only seems to be useful for doing stuff like this, I couldn't manage to get the position of the pixel into one of the operands 19:03 < bridge> I can maybe make it blink a little 😄 19:03 < bridge> Can't do position dependent animation with this tho 19:05 < bridge> Maybe with texture stages idk while I enjoy ancient apis this is one I'm not very familiar with 19:06 < bridge> http://lukaskalbertodt.github.io/2019/12/05/generalized-autoref-based-specialization.html 19:06 < bridge> evil ddnet 19:08 < bridge> how to open menu back !!??!?!?! @.pet @aliaxy @cendren 19:08 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289272464760766465/image.png?ex=66f8380d&is=66f6e68d&hm=aa8d4231e050dcf04b859e8f7accf2526e49c1693f2109d887e83f653e781ef0& 19:09 < bridge> @jaxza @coelacanth@tintint8 19:10 < bridge> Press tab. Please ask in #questions next time and don't ping randomly. 19:11 < bridge> ty, rate the penis pls 19:11 < bridge> @discortmoderator 19:11 < bridge> @Discord Mod 19:11 < bridge> ty see you with your next account 19:11 < bridge> tf some russian is named discord mod xD 19:11 < bridge> and i pinged them by mistake lmao 19:12 < bridge> i also pinged him once 😬 19:14 < bridge> poor discord mods 19:14 < bridge> just ping me, i dont have a social life anyway 19:14 < bridge> did u do that 19:14 < bridge> i dindu nuffin 19:14 < bridge> Was me, murpi afk af usually 19:14 < bridge> prolly Skeith 19:15 < bridge> that damn abuser 19:15 < bridge> knew it 19:15 < bridge> :greenthing: 19:15 < bridge> imagine not living in discord 19:15 < bridge> smh 19:15 < bridge> when give permissions for devs in dev channel :feelsbadman: 19:15 < bridge> Probably never 19:15 < bridge> well, we had holy wars here 19:15 < bridge> https://tenor.com/view/dune-2-lady-jessica-the-holy-war-begins-theoryx-gif-15358066274858079870 19:16 < bridge> good times 19:16 < bridge> *any*? 19:17 < bridge> :p 19:18 < bridge> Only 11585² or smaller :justatest: 19:18 < bridge> can someone explain what dilate does to an asset? i never understood that 19:19 < bridge> it edits transparent pixels. it changes their color to that of a non-transparent pixels in its neighborhood 19:19 < bridge> but there is clearly still some transparency left after, right? 19:19 < bridge> so it only partially does this? 19:19 < bridge> it doesn't change the transparency, only the color values 19:20 < bridge> ah 19:20 < bridge> this fixes issues with interpolation and mipmapping 19:20 < bridge> interesting 19:21 < bridge> @jupeyy_keks https://deepmind.google/discover/blog/how-alphachip-transformed-computer-chip-design/ 19:21 < bridge> pog 19:22 < bridge> "Using AI to design Google’s AI accelerator chips" 19:22 < bridge> I think I broke it too much 19:22 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289276026064732281/perfect.png?ex=66f83b5e&is=66f6e9de&hm=65b0a24767f64d7e4fc1b4269e0fcb823b48cfd327df0763a1debdce06c74143& 19:22 < bridge> nice soon we dont need humans anymore 19:22 < bridge> I think it'd be nice if the game had particles like this, rather than system messages 19:22 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289276086081028191/image.png?ex=66f83b6c&is=66f6e9ec&hm=ba71546c267f498dc029ffd0d24deee7551a88f22d92ec1e0b3eb6fbf55e58bf& 19:22 < bridge> btw google is the only one with hardware for the enormous context models 19:23 < bridge> But made less annoying 19:23 < bridge> invincibility indicator=your game breaks 19:23 < bridge> the tees top right are close to having a enchant effect 19:31 < bridge> you divide by 0 at 16.... 19:31 < bridge> everything more up just crashes in some image lib 19:31 < bridge> `Failed to save map: Map - In Image87 items of this type is too many, the maximum is 64` 19:31 < bridge> 8 doesnt work either :( 19:31 < bridge> 4 works... 19:33 < bridge> im still too big 19:33 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289278642861641761/image.png?ex=66f83dce&is=66f6ec4e&hm=0b4c48dde38f135fc2e1bbbf5b98ac1a9bb499c232c46b37c1cc95d841685d54& 19:33 < bridge> what about 5-7? 19:36 < bridge> you removed the option to do none powers of 2 btw 19:36 < bridge> Failed to save map: Map - In Group at index 3 -> In Layer at index 0 -> Images used by tiles layers must have w 19:36 < bridge> idth and height be divisible by 16 19:36 < bridge> `Failed to save map: Map - In Group at index 3 -> In Layer at index 0 -> Images used by tiles layers must have w 19:36 < bridge> idth and height be divisible by 16` 19:36 < bridge> that is 7 19:36 < bridge> 6 gives the same 19:37 < bridge> ah, thats fair 19:37 < bridge> I actually do not understand what is goign on here so I'll just stop messing around with it 19:37 < bridge> As soon as I try to use more than one texture unit it just starts rendering cursed stuff 19:38 < bridge> not fair 19:38 < bridge> i want to be a literal ant 19:38 < bridge> well thats sadly not easily possible ^^ 19:38 < bridge> every file in ddnet that starts with graphics or is part of the graphics pipeline just sucks 19:38 < bridge> sad but true 19:38 < bridge> the script would need to optimize the tilemaps on the fly, or replace the tilemaps with quads layers 19:38 < bridge> backend sdl 19:38 < bridge> sucks 19:38 < bridge> graphics threaded 19:38 < bridge> sucks 19:38 < bridge> backend_vulkan 19:39 < bridge> sucks 19:39 < bridge> I know you don't know the fixed function pipeline very well either but do you happen to know why I can't use `TEXTURE1`? 19:39 < bridge> did u enable texture1? 19:39 < bridge> quads gud 19:39 < bridge> u first need to enable the "name" 19:40 < bridge> not that great as a replacement for tilemaps, the tile textures will leak into each other 19:40 < bridge> ok nvm, i thought `(GL_TEXTURE1);` but apparently that is newer opengl already 19:40 < bridge> :lol: 19:40 < bridge> wait 19:40 < bridge> WTF 19:41 < bridge> `glActiveTexture(GL_TEXTURE1);` 19:41 < bridge> this 19:41 < bridge> I just did `glActiveTexture(GL_TEXTURE1);` then `glEnable(GL_TEXTURE_2D);` 19:41 < bridge> it''s opengl 2.0 tho 19:41 < bridge> ActiveTexture is apparently 1.5 19:41 < bridge> https://registry.khronos.org/OpenGL/specs/gl/glspec15.pdf 19:41 < bridge> that's not how it works 19:42 < bridge> TEXTURE_2D is active anyway 19:42 < bridge> i would play it ngl 19:42 < bridge> after u activated texture1 u do `glBindTexture(GL_TEXTURE_2D, m_vTextures[TextOutlineTextureIndex].m_Tex);` 19:42 < bridge> The spec suggested texture 2d is per texture unit, that's why I enabled it again :/ 19:42 < bridge> https://github.com/ddnet/ddnet/blob/2a64dac091f089f13fd4645399bcce8b38da5814/src/engine/client/backend/opengl/backend_opengl3.cpp#L1150-L1153 19:43 < bridge> see how i even active texture0 afterwards again 19:43 < bridge> it's only to set the texture stuff 19:43 < bridge> mh ok, well it probably isn't wrong 19:43 < bridge> to call it 19:43 < bridge> just leave it there 19:44 < bridge> I don't want to bind a texture to it, I want to sample into it using `GL_TEXTURE_ENV_MODE` `GL_REPLACE` like they do on the wiki https://www.khronos.org/opengl/wiki/Texture_Combiners 19:44 < bridge> :o looks like the script already optimizes the tilemap textures 19:44 < bridge> I guess one could implement non-power-of-two-scaling, but then you'd need to resize the tilemap textures in weird ways 19:44 < bridge> oh ok 19:44 < bridge> where i can find line like ``` player if hooked tee ``` 19:44 < bridge> I basically wanted to just sample whatever texturing you do into texture0, then use `GL_COMBINE` on `TEXTURE1` so I can multiply the final color 19:44 < bridge> how did u obtain texture1? 19:45 < bridge> i mean 19:45 < bridge> the texture target 19:45 < bridge> Hm, good question, it's not bound to anything, perhaps that's causing the issue 19:45 < bridge> i am afraid this part is impossible even at 4x xd 19:45 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289281848458874922/image.png?ex=66f840ca&is=66f6ef4a&hm=c5f2b5141cc6281476911fc5dec255b494a416266926a85aeeb87d1de6e9791c& 19:46 < bridge> Is there a way to bind an "empty" texture to it? I don't really want to use anything from it. The texture environment is literally just replacing every color with the color from TEXTURE0 now 19:46 < bridge> Is there a way to bind an "empty" texture to it? I don't really want to use anything from it. The texture environment is literally just replacing every color with the color from TEXTURE0 for now 19:46 < bridge> 8 did work for me, I might be on an old version of the map tho 19:46 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289282134535831654/8.map?ex=66f8410e&is=66f6ef8e&hm=5d09a348417d4d43a928a8cea0e5a9cb81bb3eba86bcca83d36ec21667471c6d& 19:47 < bridge> xDD 19:47 < bridge> 0 is always valid 19:47 < bridge> in opengl 19:47 < bridge> wrong map brotha 19:47 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289282314408562719/image.png?ex=66f84139&is=66f6efb9&hm=5227cca23c6f994078e38996c344a746ba4688076c209f8bd1f1f8f171ccb69e& 19:47 < bridge> ```c 19:47 < bridge> glActiveTexture(GL_TEXTURE1); 19:47 < bridge> glEnable(GL_TEXTURE_2D); 19:47 < bridge> 19:47 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE); 19:47 < bridge> glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, t); 19:47 < bridge> 19:47 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE); 19:47 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB, GL_TEXTURE0); 19:47 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR); 19:47 < bridge> 19:47 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_REPLACE); 19:47 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_ALPHA, GL_TEXTURE0); 19:48 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA, GL_SRC_ALPHA); 19:48 < bridge> ``` 19:48 < bridge> Here is what I have 19:48 < bridge> shrink da map 19:48 < bridge> ah I thought you wanted the bomb map for some reason 19:48 < bridge> xD 19:48 < bridge> the proper one 19:48 < bridge> very important is `glActiveTexture(GL_TEXTURE0);` after u done 19:48 < bridge> If I'm not reading the spec wrong, this should just be replacing the final color for everything by whatever the color was in texture0 which is just whatever we normally do 19:48 < bridge> else u stay in the wrong slot 19:49 < bridge> @jupeyy_keks still waiting for shring mod in pg 19:49 < bridge> imagine big tees yeeting you 19:49 < bridge> hm, but then the stuff I do in TEXTURE1 is just not used at all, no? 19:50 < bridge> it should. 19:50 < bridge> 19:50 < bridge> opengl is a state machine 19:50 < bridge> u switch to 1. modify it's props 19:50 < bridge> then switch back 19:50 < bridge> @learath2 now there's little bit better mafs expression generation 😄 19:50 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289283001967968277/image.png?ex=66f841dd&is=66f6f05d&hm=bde6d1072c199e82083a4060fc0ca299f0a49a243c6d53b9f4161f3a09f69c09& 19:50 < bridge> state stays 19:50 < bridge> idk what texture ends up getting used at the end though 19:50 < bridge> opengl before 4.5 really sucks when i think about it xD 19:50 < bridge> isn't it the currently active one? 19:51 < bridge> since u never bind any, u probably get texture 0 19:51 < bridge> Atleast if I do go back to texture0 afterwards it changes nothing 19:51 < bridge> some driver specific invalid one that is purely white 19:51 < bridge> @patiga does it scale envelopes too? 19:51 < bridge> I hope so, though I don't remember 19:52 < bridge> ```c 19:52 < bridge> glActiveTexture(GL_TEXTURE1); 19:52 < bridge> glEnable(GL_TEXTURE_2D); 19:52 < bridge> 19:52 < bridge> float t[4] = {0.8f, 0.0f, 1.0f, 1.0f}; 19:52 < bridge> 19:52 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE); 19:52 < bridge> glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, t); 19:52 < bridge> 19:52 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_MODULATE); 19:53 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB, GL_TEXTURE0); 19:53 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR); 19:53 < bridge> 19:53 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_RGB, GL_CONSTANT); 19:53 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB, GL_SRC_COLOR); 19:53 < bridge> 19:53 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_REPLACE); 19:53 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_ALPHA, GL_TEXTURE0); 19:53 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA, GL_SRC_ALPHA); 19:53 < bridge> 19:53 < bridge> glActiveTexture(GL_TEXTURE0); 19:53 < bridge> ``` 19:53 < bridge> This doesn't do any cursed stuff, but it also does nothing 19:53 < bridge> but what do u expect to happen 19:53 < bridge> It's supposed to multiply all colors with t 19:53 < bridge> of texture1? 19:53 < bridge> It's supposed to multiply all colors of TEXTURE0, with t 19:54 < bridge> You can see my SRC0 is set to `GL_TEXTURE0` 19:54 < bridge> ok why do even switch to texture 1 if it's unused 19:54 < bridge> but anyway, i dont understand this env api xd 19:55 < bridge> Good question, because if I do it just in texture0 I seem to lose images somehow 😄 19:55 < bridge> this is real ddnet 19:56 < bridge> this is REAL DDNET 19:57 < bridge> If I enable combine on texture0 and do the modulation I lose the insides of the text 19:57 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289284778645913620/perfect.png?ex=66f84384&is=66f6f204&hm=6f9d37fd92f64519eeaae5814c71b13caaeedfeac8edf9788d7c4e19f040341b& 19:57 < bridge> looks like some 2014 custom client xd 19:58 < bridge> https://x.com/KangarooPhysics/status/1625423951156375553 19:58 < bridge> https://xkcd.com/2740/ 19:59 < bridge> but looks kinda correct 19:59 < bridge> So I thought if I don't mess with texture 0, but instead multiply texture0 with the color to get a texture1 it might work 😄 19:59 < bridge> it is very close, but idk what happened to the text 😄 20:00 < bridge> This API is indeed certified weird. They just bolted it on because the fixed pipeline has no way to combine textures otherwise 20:00 < bridge> but set GL_CONSTANT for the src1 color but never specify the color 20:00 < bridge> who should that work 20:00 < bridge> it kinda looks like it's missing some calls 20:00 < bridge> You can only specify one color, it's `GL_TEXTURE_ENV_COLOR`, `GL_CONSTANT` pulls from that 20:01 < bridge> oh ok 20:01 < bridge> The alphas also look right, so idk what's happening to the text there 20:02 < bridge> aanyway, I don't get it and you don't seem to know this ancient api either, so I guess it'll just have to be a mystery 20:03 < bridge> maybe driver bug 20:03 < bridge> 😬 20:03 < bridge> 😬 20:04 < bridge> Even just multiplying it all with white which should do nothing ruins the text 20:05 < bridge> maybe you are onto smth 20:05 < bridge> text is alpha only 20:05 < bridge> alpha channel only 20:06 < bridge> do u specify the alpha 1? 20:06 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_ALPHA, GL_TEXTURE0); 20:06 < bridge> i only see SRC0_ALPHA 20:06 < bridge> but the mode is REPLACE not MODULATE 20:06 < bridge> So it's just taking texture0 alpha and replacing it with texture0 alpha 20:06 < bridge> it should be noop 20:06 < bridge> as if i understand what that means xD 20:07 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289287249753673798/image.png?ex=66f845d2&is=66f6f452&hm=4952f5cec42fb90fd193557b39a1b460fa9bbe164624f9570ec6506010c64db9& 20:07 < bridge> maybe it's UB to not set the SRC1_ALPHA tho xd 20:07 < bridge> What do you mean by alpha only? 20:07 < bridge> it uses the alpha channel only 20:07 < bridge> I set it to modulate and set it to multiply by 1 too, it's still black so that's not it 20:07 < bridge> no RGB 20:08 < bridge> ah 20:08 < bridge> Hm so normally it's white and the outline is just lower alpha? 20:08 < bridge> it's probably just getting black 20:08 < bridge> since RGB of the texture is 0 20:08 < bridge> That would explain it 20:08 < bridge> Hm so normally it's black and the outline is just lower alpha? 20:09 < bridge> But wait, how does it appear white then? 20:10 < bridge> the normal rendering API doesnt fetch the RGB components at all 20:10 < bridge> it simply fills it with 1 20:14 < bridge> Hm, this is above my paygrade. Idk what I'm doing that prevents that 20:15 < bridge> Somehow changing the texture environment is breaking that, even if I'm literally only taking the texture and not doing anything to it 😄 20:16 < bridge> it's probably that env api that simply uses rgb here 20:16 < bridge> u can special case it with text 20:16 < bridge> to use constant 1 20:24 < bridge> @jupeyy_keks is there a debugger for this dinosaur? 20:25 < bridge> u could force opengl 3.0 with backcompat and hope that renderdoc accepts it xd 20:25 < bridge> else really no idea 20:26 < bridge> I wonder how people worked with this damn, so annoying 20:26 < bridge> you would think a state machine wouldn't be really hard to debug 20:27 < bridge> Actually I didn't even check if my driver supports multitexturing tbh 20:27 < bridge> i doubt your have a 1997 pc 20:28 < bridge> lmao 20:28 < bridge> what if he is using nouveau 20:28 < bridge> true 20:28 < bridge> that is like a teleport to 1997 20:28 < bridge> ya 20:29 < bridge> 32 😄 20:29 < bridge> bit? 20:29 < bridge> wuh 20:29 < bridge> 32 texture units 20:29 < bridge> oh 20:30 < bridge> Anyway, I'm now very annoyed that it just won't work 20:30 < bridge> yea 20:30 < bridge> I thought my iems kept breaking but apparently the filters get clogged from earwax vapor condensation 20:30 < bridge> which is like 20:30 < bridge> alright 20:30 < bridge> but idk how to clean them effectively 20:30 < bridge> alcohol does not penetrate 20:30 < bridge> @jupeyy_keks can I pay you a euro to figure out why the stupid text won't render properly? 20:31 < bridge> lmao 20:31 < bridge> is your code on gh? 20:32 < bridge> No but it's just 20:32 < bridge> ```c 20:32 < bridge> { 20:32 < bridge> float t[4] = {1.0f, 1.0f, 1.0f, 1.0f}; 20:32 < bridge> 20:32 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE); 20:32 < bridge> glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, t); 20:32 < bridge> 20:32 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_MODULATE); 20:32 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB, GL_TEXTURE); 20:32 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR); 20:32 < bridge> 20:32 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_RGB, GL_CONSTANT); 20:32 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB, GL_SRC_COLOR); 20:33 < bridge> 20:33 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_MODULATE); 20:33 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_ALPHA, GL_TEXTURE); 20:33 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA, GL_SRC_ALPHA); 20:33 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_ALPHA, GL_CONSTANT); 20:33 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_ALPHA, GL_SRC_ALPHA); 20:33 < bridge> } 20:33 < bridge> ``` 20:33 < bridge> 20:33 < bridge> Pasted at the end of gl1's setstate before `glMatrixMode` 20:33 < bridge> You can make t purple if you want to make it obvious 20:33 < bridge> No but it's just 20:33 < bridge> ```c 20:33 < bridge> { 20:33 < bridge> float t[4] = {1.0f, 1.0f, 1.0f, 1.0f}; 20:33 < bridge> 20:33 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE); 20:33 < bridge> glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, t); 20:33 < bridge> 20:33 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_MODULATE); 20:33 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB, GL_TEXTURE); 20:33 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR); 20:33 < bridge> 20:33 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_RGB, GL_CONSTANT); 20:33 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB, GL_SRC_COLOR); 20:33 < bridge> 20:33 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_MODULATE); 20:33 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_ALPHA, GL_TEXTURE); 20:33 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA, GL_SRC_ALPHA); 20:34 < bridge> 20:34 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_ALPHA, GL_CONSTANT); 20:34 < bridge> glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_ALPHA, GL_SRC_ALPHA); 20:34 < bridge> } 20:34 < bridge> ``` 20:34 < bridge> 20:34 < bridge> Pasted at the end of gl1's setstate before `glMatrixMode` 20:34 < bridge> ok 20:34 < bridge> time to boot ogl 1 20:35 < bridge> and this is what I've been referring to for the spec https://registry.khronos.org/OpenGL/specs/gl/glspec15.pdf 20:40 < bridge> @learath2 what color do u want the text? 20:41 < bridge> I just want it multiplied with t like everything else 20:43 < bridge> like this or what 20:43 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289296283265400862/image.png?ex=66f84e3b&is=66f6fcbb&hm=4e1b6cc0cf50b0804f522d5bf7cebd2e57e53ed8d402917b645151c4c8956dd3& 20:44 < bridge> do you also want the non textured things colored or what? 😄 20:44 < bridge> No, just textured stuff. But now I understand what went wrong 😄 20:45 < bridge> At some point I somehow forgot this is applying to textures not the final framebuffer 20:45 < bridge> @jupeyy_keks in any case, can you ignore text somehow? 20:46 < bridge> can u disable env somehow? 20:46 < bridge> Yes, set `GL_TEXTURE_ENV_MODE` back to `GL_MODULATE` and the color back to `0, 0, 0, 0` 20:47 < bridge> nice 20:47 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289297409314259109/image.png?ex=66f84f48&is=66f6fdc8&hm=458c65e14e98aa6ce508be440c2d8299055f6f245a5aeed642b5d2ba6710c04f& 20:47 < bridge> :poggers2: dayum! 20:47 < bridge> You are so cool 20:48 < bridge> The GL whisperer 20:48 < bridge> well then simply do that for text textures. 20:48 < bridge> 20:48 < bridge> the cmd is called `Cmd_TextTextures_Create` 20:48 < bridge> 20:48 < bridge> i simply saved that they are text textures xdd 20:48 < bridge> 20:48 < bridge> ```c++ 20:48 < bridge> TextureCreate(pCommand->m_Slot, pCommand->m_Width, pCommand->m_Height, GL_ALPHA, GL_ALPHA, CCommandBuffer::TEXFLAG_NOMIPMAPS, pCommand->m_pTextData); 20:48 < bridge> TextureCreate(pCommand->m_SlotOutline, pCommand->m_Width, pCommand->m_Height, GL_ALPHA, GL_ALPHA, CCommandBuffer::TEXFLAG_NOMIPMAPS, pCommand->m_pTextOutlineData); 20:48 < bridge> 20:48 < bridge> m_vTextures[pCommand->m_Slot].m_Text = true; 20:48 < bridge> m_vTextures[pCommand->m_SlotOutline].m_Text = true; 20:48 < bridge> ``` 20:48 < bridge> such a GL whisperer 20:49 < bridge> Now that was underwhelming 😄 20:49 < bridge> :lol: 20:49 < bridge> Sadly this api is not enough for making the enchant effect 20:49 < bridge> idk what you're trying to d o 20:49 < bridge> idk what you're trying to do 20:50 < bridge> If you could somehow get the UV coords into TEXTURE1, you could probably do something that moves across the tee, but it doesn't seem to be available in the api 20:51 < bridge> So you'd probably have to create a texture on the cpu with the coordinates in the colors, put that into a texture unit and use that instead 20:52 < bridge> tunnel vision 20:52 < bridge> Was investigating whether an effect like https://discord.com/channels/252358080522747904/293493549758939136/1289251835831386214 is possible using the old fixed pipeline 20:52 < bridge> ah 20:52 < bridge> nice 20:52 < bridge> what textures are you trying to apply it to 20:52 < bridge> the text? 20:53 < bridge> Could load the texture in there and multiply but to get it moving is an issue since you don't get the coordinates of the fragment at all 20:53 < bridge> The tee 20:53 < bridge> ah 20:53 < bridge> sounds awesome 20:53 < bridge> for super 20:53 < bridge> Also still couldn't really figure out how to get the damn second texture unit working anyway 20:54 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289299165716807710/20240927_205428.jpg?ex=66f850eb&is=66f6ff6b&hm=90ce679b6f44bd65da74a77b0a50dd428181835d9f0ff1d57441c904182d9b25& 20:56 < bridge> ? 20:56 < bridge> Which LLM is this snarky? 20:56 < bridge> xdd 20:57 < bridge> hey they're making LLMs more inclusive thru accessibility 21:00 < bridge> insane 21:00 < bridge> did u guys see the c++ match proposal 21:00 < bridge> the one u sent earlier? looks cool 21:01 < bridge> i want it so bad 21:01 < bridge> that's the #1 rustism that can be dropped in imo 21:01 < bridge> to make it good 21:01 < bridge> without going back on years of deliberate design 21:03 < bridge> ```rust 21:03 < bridge> match expr { 21:03 < bridge> ExprBinary { 21:03 < bridge> op: BinOp::Add | BinOp::Sub, 21:03 < bridge> left, 21:03 < bridge> right, 21:03 < bridge> } => { 21:03 < bridge> if let Some(dest) = dest { 21:03 < bridge> let (dest, dest_new) = if let Destination::Memory(_) = &dest { 21:03 < bridge> (self.arch.alloc()?.dest(size), true) 21:03 < bridge> } else { 21:03 < bridge> (dest, false) 21:03 < bridge> }; 21:03 < bridge> 21:03 < bridge> self.expr(*left, Some(dest.clone()), state)?; 21:03 < bridge> let (src, src_new) = expr_to_source(self, *right, true)?; 21:03 < bridge> 21:03 < bridge> match op {} // i need to match on op here 21:03 < bridge> } 21:03 < bridge> } 21:03 < bridge> _ => (), 21:03 < bridge> }; 21:03 < bridge> ``` 21:04 < bridge> rust pros, is there a way to get `op` value in such a case? 21:04 < bridge> yes 21:05 < bridge> ```rust 21:05 < bridge> match expr { 21:05 < bridge> ExprBinary { 21:05 < bridge> op, 21:05 < bridge> left, 21:05 < bridge> right, 21:05 < bridge> } => { 21:05 < bridge> if let (Some(dest), BinOp::Add | BinOp::Sub) = (dest, op) { 21:05 < bridge> let (dest, dest_new) = if let Destination::Memory(_) = &dest { 21:05 < bridge> (self.arch.alloc()?.dest(size), true) 21:05 < bridge> } else { 21:05 < bridge> (dest, false) 21:05 < bridge> }; 21:05 < bridge> 21:05 < bridge> self.expr(*left, Some(dest.clone()), state)?; 21:05 < bridge> let (src, src_new) = expr_to_source(self, *right, true)?; 21:05 < bridge> 21:05 < bridge> match op {} // i need to match on op here 21:05 < bridge> } 21:05 < bridge> } 21:05 < bridge> _ => (), 21:05 < bridge> }; 21:05 < bridge> ``` 21:05 < bridge> :kekw: 21:05 < bridge> that's no joke 21:05 < bridge> i want to match only between `BinOp::Add` and `BinOp::Sub` :\ 21:05 < bridge> i still have that 21:06 < bridge> in the if 21:06 < bridge> oh 21:06 < bridge> im blind 21:06 < bridge> thanks 21:06 < bridge> I don't think that behaves the same 21:06 < bridge> It won't go to the next match case, no? 21:06 < bridge> ah, it will match on any `ExprBinary` 21:07 < bridge> ? 21:07 < bridge> the next match is literally _ => () 21:07 < bridge> i have other 21:07 < bridge> u still get the same result 21:07 < bridge> i just didn't paste that xd 21:07 < bridge> then move them into this one 21:08 < bridge> I think you want something like 21:08 < bridge> ```rust 21:08 < bridge> match expr { 21:08 < bridge> ExprBinary {op} if checkopwhatever => {} 21:08 < bridge> } 21:08 < bridge> ``` 21:08 < bridge> No? 21:08 < bridge> I don't know if it's possible tbf but match guards or whatever it's called 21:10 < bridge> There is iirc also an if let guard proposal that has been open for the last 6 years iirc 21:10 < bridge> There is iirc also an if let guard proposal that has been open for the last 6 years 21:12 < bridge> match op { SomeCase => {}, SomeOtherCase => {} } should work ig 21:12 < bridge> `if matches!(op, BinOp::Add | BinOp::Sub)` should still work in the match guard 21:12 < bridge> `match op { SomeCase => {}, SomeOtherCase => {} }` 21:13 < bridge> ye but when match on `op` later it wants me to cover every variant 21:13 < bridge> i guess that's not a good idea 21:13 < bridge> Did you try mine? 21:14 < bridge> i tried this 21:14 < bridge> As a match guard? 21:14 < bridge> @milkeeycat can u show your whole code? 21:14 < bridge> the whole big match 21:14 < bridge> true, leak it! 21:14 < bridge> let us gossip over it 21:14 < bridge> you'll be nitted 21:14 < bridge> Just cover all the cases, just put the unreachable macro on the catchall 21:14 < bridge> nitted picked 21:14 < bridge> that's my power move 21:15 < bridge> milkeeys daily dev questions is what keeps me up to date 21:15 < bridge> don't know wat to do, slap `unreachable!()` 21:15 < bridge> Just unwrap unchecked everywhere, does rust know better than you? 21:15 < bridge> ```rust 21:15 < bridge> match expr { 21:15 < bridge> ExprBinary { 21:15 < bridge> op: BinOp::Assign, 21:16 < bridge> left, 21:16 < bridge> right, 21:16 < bridge> } => { 21:16 < bridge> let left = left.dest(self)?.ok_or(CodeGenError::Assign(*left))?; 21:16 < bridge> 21:16 < bridge> self.expr(*right, Some(left.clone()), state)?; 21:16 < bridge> 21:16 < bridge> if let Some(dest) = dest { 21:16 < bridge> self.arch.mov(&left.clone().into(), &dest, signed)?; 21:16 < bridge> } 21:16 < bridge> 21:16 < bridge> self.free(left)?; 21:16 < bridge> } 21:16 < bridge> ExprBinary { op, left, right } if matches!(op, BinOp::Add | BinOp::Sub) => { 21:16 < bridge> if let Some(dest) = dest { 21:16 < bridge> let (dest, dest_new) = if let Destination::Memory(_) = &dest { 21:16 < bridge> (self.arch.alloc()?.dest(size), true) 21:16 < bridge> } else { 21:16 < bridge> (dest, false) 21:16 < bridge> }; 21:16 < bridge> 21:16 < bridge> self.expr(*left, Some(dest.clone()), state)?; 21:16 < bridge> let (src, src_new) = expr_to_source(self, *right, true)?; 21:16 < bridge> 21:16 < bridge> match op { 21:16 < bridge> BinOp::Add => (), 21:16 < bridge> BinOp::Sub => (), 21:16 < bridge> This looks good to me, ship it 21:16 < bridge> lgtm 21:16 < bridge> what's your problem with handling everything in one ExprBinary scope? 21:16 < bridge> that's what im doing 21:17 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289304730459308105/image.png?ex=66f85619&is=66f70499&hm=5749335f8f623e910bf898ca514d419aaf50f99c32c87b56b1c9a1f0e44e38fb& 21:17 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289304730690130042/image.png?ex=66f85619&is=66f70499&hm=fa75ab14fc7341e73f4a4cef346b7d5d1e2d498cd108e73ecfb20fba047beec6& 21:17 < bridge> Yeah ngl I don't see why not just have one `ExprBinary` with a `match op` inside instead 21:17 < bridge> Not like you won't unpack left and right for some binary expressions 21:17 < bridge> yeah man AI has spoken! 21:17 < bridge> 21:17 < bridge> `Overall, this is a well-structured approach to handling binary expressions in a code generator. It covers the main cases and provides a solid foundation for further development.` 21:18 < bridge> but it told you to get back to work 21:18 < bridge> why mods bully my :feelsbadman: 21:18 < bridge> why mods bully me :feelsbadman: 21:21 < bridge> A gold sparkling effect for invincibility would definitely be easier than tinkering with the graphics backends 21:21 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289306008396500992/DDNet_2024.09.27_-_21.18.48.01-1.mp4?ex=66f8574a&is=66f705ca&hm=893aab1ee35642d7a0d6923941d753204fb84a3e68cec3e9b56903f203fba9ca& 21:22 < bridge> now bring back 2009 rainbow tee with it and i say we ship it 21:22 < bridge> wauw looks nice 21:22 < bridge> can we add more particles in the png files for confetti and this then? 21:23 < bridge> extend confetti? °-° 21:23 < bridge> I was just curious of the possibilities of the old pipeline that's all 21:23 < bridge> yeah, would make sense to add more sprites for confetti and invincibility. right now they both use the same sprite as death particles 21:24 < bridge> they just need the 🎉 particles 21:24 < bridge> and invincibility could have these thingies 21:24 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289306744966877256/image.png?ex=66f857fa&is=66f7067a&hm=884b8210a0c5c53049df2de1d1210524a41432344074c410f51457a1ebf27647& 21:24 < bridge> ```rust 21:24 < bridge> match expr.op { 21:24 < bridge> op @ (BinOp::Add | BinOp::Sub) => { 21:24 < bridge> } 21:24 < bridge> }; 21:24 < bridge> ``` 21:24 < bridge> 21:24 < bridge> there's even syntax with `@` 21:24 < bridge> @jupeyy_keks did you know that? 0_o 21:26 < bridge> what does @ do ? bind the value (Add/Sub) to op if it matches? 21:26 < bridge> honestly here it does nothing useful because it's the same as using `expr.op` itself xd 21:26 < bridge> but i didn't know it's even a valid syntax 21:27 < bridge> https://stackoverflow.com/questions/69435734/rust-what-does-the-at-sign-operator-do 21:27 < bridge> ah yeah that solves your issue ig 21:41 < bridge> have u seen the new github design 21:42 < bridge> that line height kills me 21:42 < bridge> I disabled the commit feature preview since it's was so bugged 21:44 < bridge> how do i add the ellipsis char to the text? 21:44 < bridge> "Custom…" is square 21:44 < bridge> Custom[] 21:44 < bridge> std::string("Custom") + FONT_ICON_ELLIPSIS 21:44 < bridge> also square 21:44 < bridge> I don't mean as a font icon 21:44 < bridge> Custom\u2026 only this works but not clean 21:44 < bridge> Just as text 21:44 < bridge> Just copy the text from my comment 21:45 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289311940492918937/image.png?ex=66f85cd0&is=66f70b50&hm=f056c1b4f2194fb275642739537fdc101ac89fa2687bddddbc28c210cdbe3bf3& 21:45 < bridge> and i get this warning 21:45 < bridge> `D:\ddnet-master\ddnet\src\game\editor\popups.cpp(1): warning C4828: The file contains a character starting at offset 0x2244 that is illegal in the current source character set (codepage 65001). 21:45 < bridge> ` 21:47 < bridge> Use the `…` literally in the source file 21:47 < bridge> @teero777 just had another brief look, enjoy :D 21:47 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289312548214013952/8.map?ex=66f85d61&is=66f70be1&hm=960486f0d5434a669d341e96b3d7799c5e0bd9497080185e5d2238a6899d3662& 21:47 < bridge> yes i have it and it becomes square 21:48 < bridge> Change the encoding in your editor to UTF-8 21:56 < bridge> ok time to fight with visual studio on how to do that 21:56 < bridge> I think it doesn't really make sense to make the invincibility thing look fancy — it's not even a normal gameplay feature but just something for /practice 22:01 < bridge> it's defs funny how suddenly learath starts to invest into ogl 1.5 just for a rarely used feature during gameplay :lol: 22:01 < bridge> ok i had to enable some hidden menu option and then change save encoding XD 22:01 < bridge> but works now 22:11 < bridge> do any of you know of any visual DB schema designers that aren't terrible? 22:12 < bridge> DBeaver ftw 22:12 < bridge> brain 22:13 < bridge> This works until you have like 20 tables and it gets really annoying to avoid mistakes 22:14 < bridge> i'm not kidding, i really like https://github.com/dbeaver/dbeaver 22:14 < bridge> yeah I'm looking at it now 22:14 < bridge> which part of the docs has the schema stuff 22:14 < bridge> The word you are looking for is "ER Diagram". You can google around there are dozens 22:15 < bridge> I used dbdiagram.io for a screenshot for my db course 22:18 < bridge> oh i am so tiny 22:18 < bridge> i love it 22:18 < bridge> pic 22:19 < bridge> find me 22:19 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289320488920944681/image.png?ex=66f864c6&is=66f71346&hm=63166d609d96343e9d9ece8b595ebf1abf189ec62c1d84137219b9dcca6f639b& 22:19 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289320629098512394/image.png?ex=66f864e8&is=66f71368&hm=2ecbed68beebd7999b1cff6e5bd0ccc4392adff680dc8dea77b0daf2f190c63c& 22:19 < bridge> spoiler i am right ther 22:19 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289320639328682034/image.png?ex=66f864ea&is=66f7136a&hm=40075d25e1faf17b3bb6a2261260d1965617da35168e3871ca8d0941d1468aaa& 22:19 < bridge> xDDD 22:19 < bridge> oops 22:19 < bridge> I replied to wrong person xd 22:20 < bridge> xD 22:20 < bridge> :pepeangryping: 22:20 < bridge> eagle eyes 22:20 < bridge> am I supposed to download the LITE version? 22:20 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289320788155175076/image.png?ex=66f8650e&is=66f7138e&hm=b96c3269bcf135751e3f8191d045b31be4d041303ae40566bc26071db312ecb7& 22:21 < bridge> here is a proper pic 22:21 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289320955721814027/image.png?ex=66f86536&is=66f713b6&hm=9cce4448933c13fe6b0a8298c9ed8ac90f57180fde64c84eb843f0203a63d680& 22:21 < bridge> cute 22:22 < bridge> @blaiszephyr should I get dbeaver from github instead of the website? 22:23 < bridge> i dont actually remember how i got it :kek: 22:23 < bridge> oh 22:23 < bridge> I ended up on dbeaver pro website somehow 22:24 < bridge> ok nvm 22:24 < bridge> tja 22:36 < bridge> how does one specify the entities of the server again? - or is that map specific? i completly forgot 22:38 < bridge> idk it feels kinda clunky if you're trying to quickly sketch a schema from scratch, for maintaining an existing one it seems good though 22:38 < bridge> oh wait you're trying to sketch one 22:38 < bridge> i thought you wanted to display your existing one the entire time 22:38 < bridge> mb 22:38 < bridge> LOL 22:39 < bridge> lol 22:39 < bridge> well eventually I'll want to actually use the schema but right now I just care about it being fast to change so I can try ideas 22:40 < bridge> It's sent by the server here, https://github.com/ddnet/ddnet/blob/2a64dac091f089f13fd4645399bcce8b38da5814/src/game/server/gamecontroller.cpp#L630-L632 22:41 < bridge> thanks darling 22:43 < bridge> :( 22:43 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289326577338945687/image.png?ex=66f86a72&is=66f718f2&hm=c80fdc8a3015ff688992f16ea6f3be63b369fea74113bb3450e5e5fd860e374b& 22:45 < bridge> What is this even? 22:46 < bridge> looks like a javascript error :kek: - i think their npm module is broken 22:46 < bridge> Ah it creates a dbml from a live db? 22:46 < bridge> yep 22:47 < bridge> Yeah idk never used that part. I hand drew a diagram for a course 23:08 < bridge> ayy i figured it out 23:08 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289332863359123578/image.png?ex=66f8704d&is=66f71ecd&hm=6e15722821f2f3a2a6ef2667be1d1250bdb11f976e6924fd39a55b25ab744433& 23:11 < bridge> ayy i figured it out 23:11 < bridge> it's one big mess! 23:11 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1289333701213290578/image.png?ex=66f87115&is=66f71f95&hm=009bcc2c11c823681294e792a38834ad7082c27a352f0492cfcf97aa7e6ff61c& 23:42 < bridge> Spaghetti 23:57 < bridge> :frozen: :giftee_red: :giftee_green: :jaouis: :wiki: :ddnet_lgbt: