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