00:13 < bridge> @heinrich5991 Firefox has the nice graphic. How do they generate it? Is there a script? 00:22 < bridge> chillerdragon: gay 00:24 < bridge> https://stackoverflow.com/a/7553878/870079 00:25 < bridge> hmm this answer suggests we might only need to copy the `.DS_Store` from dmg created on macOS 11:48 < bridge> i got an espresso machine yesterday 11:48 < bridge> im up at 4 now 13:17 < bridge> why sdl alpha blending weird? 13:17 < bridge> first is how it looks pre-blending 13:17 < bridge> second is how it should look 13:17 < bridge> third is how it actually looks. it’s dark in the middle 13:17 < bridge> https://media.discordapp.net/attachments/806786136474910730/1163035155460538438/image.png?ex=653e1be5&is=652ba6e5&hm=9391b99eab6fe560d1e5a7320d5bd2d893505ca08e22087f44238ab6472a14e0& 13:17 < bridge> 13:17 < bridge> https://media.discordapp.net/attachments/806786136474910730/1163035774866960464/image.png?ex=653e1c78&is=652ba778&hm=687c67ab991a3c51f491b87a6ec934a3b192c2b38a66cd564b1e729e1e277685& 13:17 < bridge> 13:17 < bridge> https://media.discordapp.net/attachments/806786136474910730/1163033900138905600/image.png?ex=653e1ab9&is=652ba5b9&hm=ad9ddd60a00e588417d63617e2419fa5f54aa71d25950ac5497c67c379d52e29& 13:18 < bridge> why sdl alpha blending weird? 13:18 < bridge> first is how it looks pre-blending 13:18 < bridge> second is how it should look 13:18 < bridge> third is how it actually looks. it’s dark in the middle 13:18 < bridge> https://media.discordapp.net/attachments/806786136474910730/1163035155460538438/image.png 13:18 < bridge> https://media.discordapp.net/attachments/806786136474910730/1163035774866960464/image.png 13:18 < bridge> https://media.discordapp.net/attachments/806786136474910730/1163033900138905600/image.png 13:18 < bridge> gross link watermarks 13:28 < bridge> sdl? 13:30 < bridge> yes 13:30 < bridge> sdl 13:30 < bridge> the sequel 13:30 < bridge> ? 13:30 < bridge> sdl = sdl2 library? 13:32 < bridge> yes lmfao 13:32 < bridge> yeah sry but u give 0 information 13:32 < bridge> 13:32 < bridge> so i assume you mean the SDL renderer? 13:32 < bridge> what blend mode do you use? 13:33 < bridge> blend mode 13:33 < bridge> sdl renderer or surface irrrelevant 13:34 < bridge> so which blend mode is blend mode? 13:34 < bridge> one minus alpha? 13:34 < bridge> SDL_BLENDMODE_BLEND 13:34 < bridge> so one minus alpha 13:35 < bridge> looks like the mask is alpha premutliplied and shouldnt be 13:37 < bridge> i guess SDL_BLENDMODE_ADD is the one that emulates that then 13:37 < bridge> nah 13:37 < bridge> or SDL_BLENDMODE_MOD 13:37 < bridge> if u premultiply your own vertex color 13:38 < bridge> try all the blend modes until it works 13:38 < bridge> i did already 13:38 < bridge> they are all not proper 13:38 < bridge> if u get your request right: u want to have the alpha values of texture1 be multiplied with the text that u add 13:39 < bridge> remade surf and specified rgba32 non premultiplied and still wacky 13:39 < bridge> u have to do that in one render call 13:39 < bridge> not in 2 13:42 < bridge> what render call 13:43 < bridge> let's get the thing right first: 13:43 < bridge> you want the second text to be partially transparent at the outer edges right? 13:43 < bridge> 13:43 < bridge> and texture1 defines how much transparent it should be 13:43 < bridge> yes 13:43 < bridge> tbh i don't know if u can do smth like that with the SDL renderer 13:43 < bridge> it seems very primitive 13:44 < bridge> u'd need to sample over texture 1 and multiple the alpha of this texture with the vertices that you render, when you create the second text 13:44 < bridge> i just want to blend the gradient texture over top of the source texture using a normal blending mode 13:44 < bridge> but i think there is a problem with their math since doing that creates dark spots near the middle 13:45 < bridge> it should be pretty simple 13:45 < bridge> no, that looks correct to me tbh 13:45 < bridge> it's not really trivial imo 13:45 < bridge> fwiw black is just for show 13:45 < bridge> when drawing the gradient im actually using transparent 13:45 < bridge> yeah but you need the information of that texture in a different render call 13:45 < bridge> im using surfaces 13:45 < bridge> render call = i want to draw these vertices 13:46 < bridge> yea we are not in gpu world rn 13:46 < bridge> let me read what they are in sdl2 renderer 13:46 < bridge> fwiw 13:46 < bridge> sdl2 renderer is gpu 13:46 < bridge> used with textures 13:46 < bridge> surfaces is cpu rendering 13:46 < bridge> texture = hardware backed surface 13:47 < bridge> well it's more abstract 13:47 < bridge> but using the accelerated init 13:47 < bridge> that's what it is 13:47 < bridge> ah so you have full control over all pixels? 13:47 < bridge> yes 13:47 < bridge> i don't wanna do it myself but i could 13:47 < bridge> i guess u have to do it your own then 13:47 < bridge> i just wonder why their math is weird 13:47 < bridge> shouldn't be hard u know 13:47 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1163080820211322940/image.png?ex=653e466c&is=652bd16c&hm=6bef2f10b63adb325000ff64309771d869397e7feec8b63e73cfd949c6e4269c& 13:48 < bridge> so u simply want to overwrite the pixels instead of making them transparent 13:48 < bridge> well that's one solution yes 13:48 < bridge> no no 13:48 < bridge> it's like they're using color key internally or smthm 13:48 < bridge> instead of mathing on the alphas 13:49 < bridge> well one minus source alpha is your blend mode 13:49 < bridge> what you want, but they don't offer, is using the dst alpha value 13:49 < bridge> the alpha values written by texture 1 13:50 < bridge> that is so ass 13:51 < bridge> u can do custom blending modes 13:51 < bridge> i guess ill check that out 13:53 < bridge> ```cpp 13:53 < bridge> SDL_ComposeCustomBlendMode(SDL_BLENDFACTOR_ONE, 13:53 < bridge> SDL_BLENDFACTOR_DST_ALPHA, 13:53 < bridge> SDL_BLENDOPERATION_ADD, 13:53 < bridge> SDL_BLENDFACTOR_ONE, 13:53 < bridge> SDL_BLENDFACTOR_DST_ALPHA, 13:53 < bridge> SDL_BLENDOPERATION_ADD); 13:53 < bridge> ``` 13:53 < bridge> ugg 13:53 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1163082197511716905/image.png?ex=653e47b4&is=652bd2b4&hm=61b7d7e8018e6b878fca5ffe5e43e760f0a04340cae5e93e642da82475363450& 13:54 < bridge> it should work as you expect with alpha blending and a properly generated mask. I bet your issue is the mask 13:55 < bridge> tried mask and it didn't help 13:55 < bridge> by mask I mean the texture2 that has the gradient 13:55 < bridge> you think that im making the gradient wrong? 13:55 < bridge> i dont think this renderer has support for multiple texture sampling 13:56 < bridge> so u cannot really mask it 13:56 < bridge> as u imagine it 13:56 < bridge> I bet it is a gradient from rgba(0,0,0,0) to rgba(0,0,255,255) which is not what you want 13:56 < bridge> you want rgba(0,0,255,0) to rgba(0,0,255,255) 13:56 < bridge> which is not-premultiplied alpha 13:56 < bridge> im not doing color blending only alpha, 13:56 < bridge> from blue to transparent 13:57 < bridge> ```cpp 13:57 < bridge> void RenderLinearGradient(SDL_Surface *surf, 13:57 < bridge> const SDL_Rect *rect, 13:57 < bridge> const SDL_Color *color1, 13:57 < bridge> const SDL_Color *color2, 13:57 < bridge> bool orientation) 13:57 < bridge> { 13:57 < bridge> SDL_Rect walking_rect = SDL_Rect(*rect); 13:57 < bridge> 13:57 < bridge> auto *offset = orientation ? &walking_rect.x : &walking_rect.y; 13:57 < bridge> auto *pos = orientation ? &walking_rect.w : &walking_rect.h; 13:57 < bridge> 13:57 < bridge> auto starting_offset = *offset; 13:57 < bridge> auto starting_pos = *pos; 13:57 < bridge> *pos = 1; 13:57 < bridge> for (; *offset < starting_offset + starting_pos; (*offset)++) { 13:57 < bridge> float fraction = (float(*offset - starting_offset) / float(starting_pos)); 13:57 < bridge> SDL_FillRect(surf, &walking_rect, Interpolate(surf->format, color2, color1, fraction)); 13:57 < bridge> } 13:57 < bridge> } 13:57 < bridge> ``` 13:57 < bridge> define "transparent" htats the issue 13:57 < bridge> this my fn 13:57 < bridge> 0,0,0,0 13:57 < bridge> try blue with alpha 0 13:57 < bridge> 0,0,1,0 or smth 13:58 < bridge> @k2d222 what you want is 13:58 < bridge> 13:58 < bridge> render text1 13:58 < bridge> render text2 13:58 < bridge> put gradient over text2? 13:58 < bridge> yes it's not really mask it's overlya 13:58 < bridge> yes it's not really mask it's overlay 13:59 < bridge> or text generally 13:59 < bridge> if that's all the same text 13:59 < bridge> cal them surfs ur hurting my brain 13:59 < bridge> im like what text and then i remember u speak of texture 13:59 < bridge> xd 13:59 < bridge> no 13:59 < bridge> i mean text this time 14:00 < bridge> ou 14:00 < bridge> it's a bit wierd to call it surface, that generally refers to smth els 14:00 < bridge> it's a bit wierd to call it surface, that generally refers to smth else 14:00 < bridge> not in 2d 14:00 < bridge> @mpft before applying the gradient 14:00 < bridge> 14:00 < bridge> do u render the text in one go? 14:00 < bridge> yeah 14:00 < bridge> ok 14:00 < bridge> here's it with transparent blue btw 14:00 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1163084043911438397/image.png?ex=653e496d&is=652bd46d&hm=d513c13f33f9a451bec9165eef2cffce616e1eea26aa8c19040c7ad92dce296f& 14:00 < bridge> ok 14:00 < bridge> what i expected 14:00 < bridge> and then u want to put the gradient over it 14:01 < bridge> yep 14:01 < bridge> ok 14:02 < bridge> so basically what u actually want is 14:02 < bridge> 14:02 < bridge> render the text on a seperate texture, that has no background color 14:02 < bridge> bcs one problem is that the background color is used during blending too 14:02 < bridge> which makes everything darker not only the text 14:02 < bridge> or 14:03 < bridge> u want a pure alpha texture. and use blue manually 14:04 < bridge> ok or let's do it differently 14:04 < bridge> why is this black in first place? 14:04 < bridge> ~ 14:04 < bridge> did u do that manually by hand? 14:04 < bridge> or how should i understand that 14:05 < bridge> i replaced the transparent in my gradient fn invoc w black 14:05 < bridge> but it looks identical when i just turn off blending 14:05 < bridge> ok 14:05 < bridge> but that sounds wrong to me already. 14:05 < bridge> 14:05 < bridge> it should be white 14:06 < bridge> when using 0,0,0,0? 14:06 < bridge> ok tbf it depends on the blend mode 14:06 < bridge> can u just post the gradient here? 14:07 < bridge> the texture for it 14:07 < bridge> it's dynamically generated 14:07 < bridge> i'd have to dump 14:07 < bridge> i c 14:07 < bridge> this is recreated 14:07 < bridge> with same math 14:08 < bridge> yeah, so u don't aim to make text transparent 14:08 < bridge> but simply overwrite it 14:08 < bridge> yep 14:08 < bridge> oh wow sorry i didn't realize that's what u were asking 14:08 < bridge> that's also a pretty good idea 14:08 < bridge> it's ok. i was very confused here too 14:08 < bridge> then bg can be whatever and not be a color 14:08 < bridge> no, for this renderer your approach is better 14:09 < bridge> maybe faster and easier 14:09 < bridge> but not better 14:09 < bridge> if i want to have transparency effects in the ui like i usually do 14:09 < bridge> my approach requires to sample from 2 textures at once 14:09 < bridge> from the text-texture and the gradient-texture 14:09 < bridge> that's the problem 14:09 < bridge> i dunno if u can do it without shaders 😄 14:09 < bridge> ok i mean u can do anything 14:09 < bridge> since it's on the CPU 14:09 < bridge> SDL_ComposeCustomBlendMode lets you use source and destination 14:10 < bridge> src color mode, src alpha mode, src blend op, dst color mode, dst alpha mode, dst blend op 14:10 < bridge> that's my understanding is it correct? 14:10 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1163086498929848321/image.png?ex=653e4bb6&is=652bd6b6&hm=7829960169105963651c826f5012c0a9980e672f9eb1bbf9cbc612ba60523fc0& 14:10 < bridge> sorta but no borders on gradient 14:10 < bridge> just the inner 14:11 < bridge> mh then normal blending should work indeed 14:11 < bridge> eys 14:11 < bridge> yea 14:11 < bridge> so why black 14:11 < bridge> >_> 14:11 < bridge> but 14:11 < bridge> to be sure, dump the gradient 14:11 < bridge> k 14:11 < bridge> that's the only way to be sure 14:11 < bridge> time to import sdl2_image 14:11 < bridge> :pepeW: 14:11 < bridge> all your stuff does not happen on the GPU? 14:11 < bridge> all cpu 14:11 < bridge> would be much easier XD 14:12 < bridge> not really for arbitrary rendering 14:12 < bridge> well at least not without shaders 😂 14:12 < bridge> yea 14:12 < bridge> lmfao 14:13 < bridge> oh my GOD i don't even have it 14:13 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1163087343801081896/image.png?ex=653e4c7f&is=652bd77f&hm=d3644643eee026bf563218199ac5be079dfe47a61741a683a0c29b489078c4c9& 14:14 < bridge> sample a few valuess along the x axis should be sufficient 14:15 < bridge> no it's rly 2 fn calls and i already have the thing set up now 14:15 < bridge> thanks msys 14:17 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1163088153721192448/test.png?ex=653e4d40&is=652bd840&hm=76efae3b13291bca6ccbbaac0f8a0c5d3c9f45a6dbaf8335cd04a7e1b7f62e0d& 14:17 < bridge> there 14:17 < bridge> dumped 14:17 < bridge> yeah ok 14:18 < bridge> you were right from the start then i guess 14:18 < bridge> i hate it when i'm right 14:20 < bridge> what u could try is dumping before gradient and after 14:20 < bridge> i blit that right on top of this 14:20 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1163089085259337768/image.png?ex=653e4e1f&is=652bd91f&hm=796a60b956dd6e6b9eeb268ba89c65466710911af710b5fd5b15667fa0963e2b& 14:20 < bridge> i could imagine one reason why it's wrong 14:21 < bridge> u overwriting the final alpha values with values close to 0 14:21 < bridge> 14:21 < bridge> and at some point it uses that texture to render it to the screen 14:21 < bridge> unfortunately i don't think that's possible cuz the gradient texture gets blitted to the button + the button gets blitted directly to the window's surface 14:22 < bridge> that's the only alpha stuff happening 14:22 < bridge> and i'm only touching the values in the gradient fn 14:22 < bridge> I insist that the img has the issue of premult alpha, and that produces the black result that you have as expected. the region with alpha = 0 must have the correct rgb values. 14:22 < bridge> where would this premultiplication be happening 14:22 < bridge> my interpolation fn is unbiased 14:22 < bridge> ```cpp 14:22 < bridge> uint32_t Interpolate(SDL_PixelFormat *format, 14:22 < bridge> const SDL_Color *color1, 14:22 < bridge> const SDL_Color *color2, 14:22 < bridge> float fraction) 14:22 < bridge> { 14:22 < bridge> return SDL_MapRGBA(format, 14:22 < bridge> static_cast((color1->r - color2->r) * fraction + color2->r), 14:23 < bridge> static_cast((color1->g - color2->g) * fraction + color2->g), 14:23 < bridge> static_cast((color1->b - color2->b) * fraction + color2->b), 14:23 < bridge> static_cast((color1->a - color2->a) * fraction + color2->a)); 14:23 < bridge> } 14:23 < bridge> ``` 14:23 < bridge> i mean it would make sense, but i wonder when this multiplication should happen 14:23 < bridge> do you have experience with sdl2 renderer? 14:23 < bridge> https://wiki.libsdl.org/SDL2/SDL_BlendMode > the described blend mode function indicates that it expects non-premult alpha 14:23 < bridge> yes 14:24 < bridge> but like, he dumped the texture 14:24 < bridge> yet the image gradiend dumped has premult alpha 14:24 < bridge> that might be png encoder 14:24 < bridge> i mean, "premult alpha" not really, it's just a normal gradient from opaque blue to black transparent 14:25 < bridge> to me the color looks right 14:25 < bridge> in gimp 14:26 < bridge> @mpft can u write to the pixels directly? 14:26 < bridge> how low level 14:26 < bridge> like set all alpha to 1 after your whole calculation 14:26 < bridge> of the surface 14:26 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1163090578238611487/image.png?ex=653e4f83&is=652bda83&hm=fd4f27b9a891c8482d24fd2a21ba1db1f91c44336ca16ef2ec7984afef29eede& 14:27 < bridge> top=ewan btm=me 14:27 < bridge> yeahmm 14:27 < bridge> it does fade to black 14:27 < bridge> ah i see 14:27 < bridge> i could but that's exactly how it displays with alpha blending off 14:27 < bridge> i will try blending opaque blue to transparent blue 14:27 < bridge> @k2d222 is right actually 14:27 < bridge> i mean gradienting 14:27 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1163090858862727248/image.png?ex=653e4fc5&is=652bdac5&hm=e53463840663a13245d6d79ca0d98416c2e2ad2175b2e377950e5363aae7c039& 14:27 < bridge> u know 14:27 < bridge> i mean yea that's what im doing 14:28 < bridge> 0,0,00 14:28 < bridge> 0,0,0,0 14:28 < bridge> yeah but i disabled alpha layer 14:28 < bridge> ah yeah 14:28 < bridge> can u simply use the blue all the time 14:28 < bridge> only make alpha go 0 14:28 < bridge> it does work but it's not desirable 14:28 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1163091098537836606/image.png?ex=653e4fff&is=652bdaff&hm=2fe583920c57a15bf9e01a15732d0ec16e365fea873860124c06a997c55b6609& 14:28 < bridge> u dont want any color gradiation 14:29 < bridge> what do you dislike about it? 14:29 < bridge> what is that not what u want?? 14:30 < bridge> i am just wondering how it is that pdn can create the exact correct gradient from scratch when i use 0,0,0,0 as the second color 14:30 < bridge> but now that i look at my mockup gradient i see that it's the same blue and all that changes is the alpha. so pdn must be doing something 'smart' under the hood and changing my black transparent to something more appropriate 14:30 < bridge> cool i guess 14:30 < bridge> since that's what i was comparing it against i thought black was not the issue 14:30 < bridge> it does exist yes 14:31 < bridge> some programs do that 14:31 < bridge> would have been nice to know 30 mins ago 14:31 < bridge> damn 14:31 < bridge> they un-premultiply alpha and copy neighbor alpha in pixels that have alpha=0 14:32 < bridge> it's a bit hacky but allows correct antialiasing at opaque-alpha edges in some cases 14:32 < bridge> yeah 14:32 < bridge> quite hacky 14:32 < bridge> definitely not expected 14:32 < bridge> unity does that iirc 14:33 < bridge> what is pdn? 14:33 < bridge> paint.net 14:34 < bridge> why do they do this? 14:34 < bridge> 14:34 < bridge> do they dislike loosing color values? 14:35 < bridge> how does that even help restore the original color if alpha = 0 14:36 < bridge> to avoid interpolation artefacts at sharp opaque->transparent edges, but I think that was in fact not what was happening for @mpft 14:36 < bridge> it’s the gradient tool, it may just be for this exact scenario 14:36 < bridge> I read about it recently leme see if i find the article for you 14:37 < bridge> ok but do we speak about pre multiplied textures, with a blend mode that is addative? 14:40 < bridge> check out my awesome hue interpolation 14:40 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1163094039218888724/image.png?ex=653e52bc&is=652bddbc&hm=29a833fd6381ef574301159194da3938b473848982111fdf0287daf0b6c35f71& 14:41 < bridge> even tho my rgb interpolation does it just fine 14:41 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1163094238158925954/image.png?ex=653e52eb&is=652bddeb&hm=8f8e0a857eabeea9d25e8cb476c2cfb3f25ff7dfdc173fae6bae6f032a4dce28& 14:41 < bridge> i wanted to try it 14:41 < bridge> it's not high tech enough 14:42 < bridge> heh, apparently I remembered it incorrectly, still good to know about, here's the source 14:42 < bridge> https://youtu.be/d6tp43wZqps?si=rUkq6fjBGbiI19G6&t=627 14:43 < bridge> good video to watch overall btw 14:43 < bridge> i like my buttons 14:43 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1163094913408311370/image.png?ex=653e538c&is=652bde8c&hm=dd2137603e387dbd56c0d46103998103f51cfbae8cf9e4402c49cd464a2ae4ec& 14:44 < bridge> ah 14:44 < bridge> ddnet has the same problem btw 14:45 < bridge> in ddnet we call it "dialate" 14:45 < bridge> pre multiplied textures have one obvious problem 14:45 < bridge> dilate* 14:45 < bridge> loss of precision? 14:45 < bridge> they remove accuracy if u use them with u8 color components 14:45 < bridge> yes 14:45 < bridge> precision is better word^^ 14:45 < bridge> ty 😄 14:46 < bridge> I never know the difference between precision and accuracy, but precision exists in french 14:46 < bridge> I never know the difference between precision and accuracy, but precision exists in french and not accuracy 15:01 < bridge> same thing 15:02 < bridge> dump it again 15:02 < bridge> watcha workin on 15:02 < bridge> looks futuristic xd 15:04 < bridge> idk im just making stuff 15:04 < bridge> ive been helping this guy do some sdl stuff and he needed a gui 15:04 < bridge> and i always knew a gui in sdl would be very easy to do i just never had to do it 15:04 < bridge> so im doing it 15:04 < bridge> but not for him just for fun 15:07 < bridge> ddnet gui system is very logical but not readable in code. It's a nightmare to come back to some gui that you made months ago and try to get what's going on 15:07 < bridge> ddnet gui system is filling rects xd 15:08 < bridge> it's immediate mode nonsense 15:08 < bridge> yes. good rects 15:08 < bridge> ruthless on the cpu 15:08 < bridge> egui does similar, but is still nicer to use imo 15:08 < bridge> egui sux 15:08 < bridge> qt win 15:08 < bridge> immediate is good 15:08 < bridge> qt vloat 15:08 < bridge> for a game ui maybe 15:08 < bridge> qt bloat 15:08 < bridge> yeah 15:08 < bridge> not if it's installed on your system as a shared lib lol 15:09 < bridge> stuff like React is cleaner imo for GUIs 15:09 < bridge> ew 15:09 < bridge> webb 15:09 < bridge> i mean the idea 15:09 < bridge> not javascript xd 15:09 < bridge> I've never seen a frontend in C++ that isn't a mess 15:10 < bridge> that is probably bcs they don't give enough shit about performance xd 15:11 < bridge> platform native widgets 15:11 < bridge> qt is very performant 15:11 < bridge> or wxwidgets 15:11 < bridge> rly wxwidgets LMFAO 15:11 < bridge> no I'm kidding 15:11 < bridge> c++ is simply no language to write simplistic code in 15:12 < bridge> at least not with the current standard 15:12 < bridge> 3000 loc for a settings menu xdd 15:12 < bridge> rust for example is a bit better. bcs of auto moving stuff 15:12 < bridge> UIs are very descriptive and cpp is very imperative, xmls et.al are relatively good to describe uis 15:12 < bridge> but rust is sometimes also too explicit 15:13 < bridge> more 15:13 < bridge> typescript allows annoymous data types etc. 15:13 < bridge> that simplifies code often 15:13 < bridge> void* :justatest: 15:13 < bridge> + everything is shared pointer basically 15:13 < bridge> xd 15:15 < bridge> i've seen a codebase use std::variant+int+float+bool+....> and that was quite clean in fact 15:15 < bridge> qvariant 15:15 < bridge> XDDD 15:15 < bridge> oh 15:15 < bridge> weren't u shader coder? 15:15 < bridge> or do u also know cpp 15:15 < bridge> I know cpp 15:16 < bridge> some of it 🙂 15:16 < bridge> every time i do gui in anything but qt i feel like blowing my brains out 15:16 < bridge> nothing make sense like it does 15:16 < bridge> this is why they can charge thousands of dollars for a commercial license 15:16 < bridge> but why 15:17 < bridge> JSX is the cleanest way to describe an UI imo 15:17 < bridge> or TSX 15:17 < bridge> have you used qt? 15:17 < bridge> never used qt. What's so good about it? 15:18 < bridge> not for a project bigger than a few buttons 15:18 < bridge> ^ but maybe u can explain this 15:18 < bridge> but i used stuff like java ui(whatever it was called), win32 native UI, VCL 15:19 < bridge> I can see the link to the wiki page incoming xdd 15:19 < bridge> u thinking of swing 15:19 < bridge> i will explain later when my brain is not tied up 15:20 < bridge> https://wiki.qt.io/Qt_for_Beginners 15:20 < bridge> when i scroll through this. i have to say it's basically like most oldschool GUI libs 15:20 < bridge> https://qt-wiki-uploads.s3.amazonaws.com/images/6/69/Beginner-Pretty-Button.jpg 15:20 < bridge> debatable 😂 15:21 < bridge> u dont like oxygen 15:21 < bridge> There is a thing like qteditor right? 15:21 < bridge> Time to make a ddnet gui editor 15:22 < bridge> https://react.dev/learn/tutorial-tic-tac-toe 15:22 < bridge> @mpft look this example in comparision 15:22 < bridge> a function is a gui component 15:22 < bridge> and u use hooks to track the state 15:22 < bridge> that gives a clean hirarhy 15:22 < bridge> that gives a clean hierarchy 15:23 < bridge> but tbf, javascript is slow af 😂 15:23 < bridge> that's defs an obvious problem 15:24 < bridge> rust alternative 15:24 < bridge> https://github.com/DioxusLabs/dioxus 15:24 < bridge> xd 15:25 < bridge> the biggest plus for egui is that it's insanely easy to write the backend for it.. so u can easily integrate it into your own game engine 15:26 < bridge> this is the same appeal as imgui 15:26 < bridge> this is the same appeal as dearimgui 15:26 < bridge> yes 15:26 < bridge> it's basically the rust version of it xd 15:26 < bridge> bleh 15:27 < bridge> if i could use html+css i'd prefer that tho.. even tho it's already very bloated xd 15:27 < bridge> it simply is more powerful 15:29 < bridge> maybe 15:29 < bridge> i've used that the second most but it's not my second most favorite 15:29 < bridge> i wish u could just figma it all 15:30 < bridge> i did this mockup in figma lol 15:30 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1163106607945752626/image.png?ex=653e5e70&is=652be970&hm=07fbe79e4cb54d09041f08a9a95a9c6dbc7f3575553c2bf7ae8435a7a3d5a7e7& 15:32 < bridge> nice 15:32 < bridge> do u become ddnet-ui dev 15:32 < bridge> hehe 15:32 < bridge> i've done a bunch already 15:32 < bridge> robyte's enemy 15:32 < bridge> xd 15:32 < bridge> it's horrible 15:32 < bridge> there is so much to optimize 15:32 < bridge> makes me sweat even thinking about it 15:33 < bridge> what i actually dislike most is having to use static objects for the GUI IDs 15:33 < bridge> that basically makes it impossible to reuse any code 15:33 < bridge> since if two objects with same ID are on screen, both are the same 15:33 < bridge> yeah 15:34 < bridge> should just use pointers 15:34 < bridge> smh 15:34 < bridge> should try to automatically guess the IDs 15:34 < bridge> like egui xd 15:34 < bridge> only very rarely u need to set IDs manually 15:34 < bridge> same for react btw 15:45 < bridge> yea 15:52 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1163112269878673448/sched_MkDPmhqnYw.mp4?ex=653e63b6&is=652beeb6&hm=9a948bf9a5c261fb3efd4bd8a672f20c63245e6d1dad0ab42d48622e776ba51a& 15:52 < bridge> gg ez 15:58 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1163113635481124985/sched_JIzjFPVvED.mp4?ex=653e64fc&is=652beffc&hm=8ff8b40d974be92beeed5bd1eafa45de70badf5d9b2039577a5089b80987c2a0& 15:58 < bridge> or interpolated 15:58 < bridge> watever 15:58 < bridge> oh yeah thats much better 15:59 < bridge> this probably reserved for keyboard navigation 15:59 < bridge> okay naptime at 8 am 15:59 < bridge> then i wake up at the usual 2pm and prosper 15:59 < bridge> 😈 15:59 < bridge> is it just me or is kog tab broken 16:00 < bridge> kog.tw is down 16:00 < bridge> lol are you trying to play kog 16:00 < bridge> yucky 16:00 < bridge> seems to work for me anyway 16:00 < bridge> go to sleep you before you hear smth you don't want 16:01 < bridge> this is usa at 8 am 16:01 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1163114376346222622/image.png?ex=653e65ac&is=652bf0ac&hm=512bb11ff319573fb9fcfe9475ab4869fbf478778acd4890fab996bf8ccf96b8& 16:01 < bridge> kog tab xd 16:01 < bridge> yea i went there 16:01 < bridge> and it worked 16:01 < bridge> not me either 16:01 < bridge> not me neither 16:01 < bridge> kok 16:02 < bridge> u need to advocate more in us 16:02 < bridge> u need to advertise more in us 16:02 < bridge> perhaps 16:58 < bridge> <_voxeldoesart> wait whats the scheme for again 18:00 < bridge> hehehehehehe, scalalable solutions, docker.., kubernetes.. but it still goes down 18:00 < bridge> :owo: 18:11 < bridge> @totar is the shadertoy user ^^ 18:14 < bridge> The website is not on the K3s cluster 🙂 18:24 < bridge> Qt is just bog standard retained mode ui 18:33 < bridge> queue tee 18:35 < bridge> @robyt3 what r ur next projects xd 18:36 < bridge> Currently just fixing various bugs and refactoring. I also want to add an external console to the client to interact with the local server 18:37 < bridge> fix c++ 18:37 < bridge> :justatest: 18:37 < bridge> :justatest: 18:37 < bridge> (by using 🦀 ) 18:37 < bridge> @robyt3 when do we start writing a launcher xdd 18:37 < bridge> This is not the worst idea btw 18:37 < bridge> Ah, true that was also an idea we had 18:37 < bridge> oh ye 18:38 < bridge> At the very least a trampoline so we can do updates properly 18:38 < bridge> one day i started with tauri but i forgot 18:38 < bridge> my small request about econ in client is to support more than 1 console xd 18:38 < bridge> nice, then let's remove the main window at that point 18:38 < bridge> and add a "skip launcher" option 18:38 < bridge> and write in rust 18:38 < bridge> wth is launcher 18:38 < bridge> a launcher 18:38 < bridge> in tee paradigma 18:38 < bridge> Grenade launcher 18:38 < bridge> like mc launcher 18:38 < bridge> and what will change 18:39 < bridge> one launcher to launch ddnet client only xd 18:39 < bridge> we can move like updater into it 18:39 < bridge> The main reason why we need it is to detect the client crashing, so the launcher can change the graphics settings 18:39 < bridge> we can select graphic settings 18:39 < bridge> updater, file integrity checker, easier to do in rust because decoupled 18:39 < bridge> we can have multiple client support xd 18:39 < bridge> move news there 18:39 < bridge> totally not why i want this 18:39 < bridge> download a software vulkan driver 18:39 < bridge> 😬 18:39 < bridge> driver updater 18:39 < bridge> xdd 18:40 < bridge> xDDD 18:40 < bridge> All of those would be much better in a launcher, though given this community’s distaste of everything mew, I’m sure someone is getting shot for it 18:40 < bridge> new* 18:40 < bridge> @learath2 that would be you sir 18:40 < bridge> :justatest: 18:40 < bridge> as long as it has a clear visible "skip launcher" it's ok i think 18:40 < bridge> Launchers are always disliked I guess 18:40 < bridge> @learath2 we should invent a developer that doesnt exist 18:40 < bridge> i will launch ddnet client manually without launcher if it will be a thing in the future 18:40 < bridge> and put the blame on it 18:40 < bridge> I’ll do the commits and move to new zealand to hide from the cultists 18:40 < bridge> so no actual person is harmed 18:40 < bridge> we just say that dev did it 18:41 < bridge> and it doesnt exist 18:41 < bridge> :gigachad: 18:41 < bridge> our ugly main screen isn't really better IMO 18:41 < bridge> its good actually 18:41 < bridge> as simple as it needs to be 18:41 < bridge> I would honestly have an invisible trampoline 18:42 < bridge> Only visible when stuff is getting updated or a crash happened last launch/this launch or some button is held to open gfx settings 18:43 < bridge> We should invent an entire admin actually, they could be responsible for everything 18:43 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1163155132939255818/image.png?ex=653e8ba2&is=652c16a2&hm=acd6065175cbf07e239de1c7905215d94ff58b2306ca90e332738ad06b5c620f& 18:43 < bridge> and if someone wants to chat with it 18:43 < bridge> we put it behind chatgpt 18:43 < bridge> i want it like this 18:43 < bridge> missing ddnet-rs 18:43 < bridge> shawshank reference 18:43 < bridge> 2.0 = rust 18:43 < bridge> Mhhhhhhhhh do we have to have multiple client support :pepeW: 18:44 < bridge> yes 18:44 < bridge> :ahendmymiserableexistence: 18:44 < bridge> bcs heinrich dislikes breaking backward compability 18:44 < bridge> and i dont see any other chance to promote a new client 18:44 < bridge> 18:44 < bridge> You want to make a backwards incompatible client just to spite him? 😄 18:44 < bridge> yes 18:44 < bridge> break compat in every way, while improving obv 18:44 < bridge> no 18:45 < bridge> i want to make it so ddnet has a chance to get better 18:45 < bridge> but as long as half of the devs are against it 18:45 < bridge> change map format, change protocol, disregard old distros and use newer dependencies 18:45 < bridge> i prefer we just support both 18:45 < bridge> No, don’t improve anything, just remove all backwards compat, that would be hilarious 18:45 < bridge> xDD 18:45 < bridge> just to troll 18:45 < bridge> remove opengl 1 and 3.3 support 18:45 < bridge> vulkan master race 18:45 < bridge> u 18:45 < bridge> And 2 18:46 < bridge> 1.4 is best renderer 18:46 < bridge> old tee vibes 18:46 < bridge> Wait did we already remove gl2/3.0? 18:46 < bridge> also compile with a newer glibc just to make people update their distro 18:46 < bridge> use trunk kernel 18:46 < bridge> kek 18:47 < bridge> no, u can continue waiting 18:47 < bridge> xd 18:47 < bridge> we should use all vulkan 1.2 and 1.3 extensions 18:47 < bridge> :justatest: 18:48 < bridge> yes xd 18:48 < bridge> ALL 18:48 < bridge> We should make a kernel driver that only works on the very latest kernel, than have the userland client make sure that the module is loaded 18:48 < bridge> even if we dont need them 18:48 < bridge> Every game has a cool kernel driver now 18:48 < bridge> and then blame gpu drivers 18:48 < bridge> xd 18:48 < bridge> bugs 18:48 < bridge> Nice, I'd love to also learn Windows driver programming :monkaStop: 18:49 < bridge> We can also check that gpu model matches the pattern 40xx 18:49 < bridge> the requirement is to always add the ad injector or telemetry 18:49 < bridge> otherwise ur driver wont be accepted 18:49 < bridge> :gigachad: 18:50 < bridge> The driver comes with better anticheat than VAC :justatest: 18:50 < bridge> I did a couple things once, mostly just experimenting 18:50 < bridge> lets add a ring 0 kernel anti cheat 18:50 < bridge> No one would trust us tbf 18:51 < bridge> Including you 😄 18:51 < bridge> It would be impossible to install the driver on Windows without allowing untrusted drivers somewhere 18:51 < bridge> Extremely popular games get to shove it down peoples throats because what will you do? Not play VALORANT? 18:52 < bridge> We apply for and pay for a driver signing certificate ofc 18:52 < bridge> so all maintainers agree we need launcher, epic awesome 18:52 < bridge> nice 18:53 < bridge> Only like $200/year 18:53 < bridge> I bet we’ll all disagree on what it should be like 😄 18:53 < bridge> yeah that's why i talked about it 18:53 < bridge> robyte now knows what i need 18:54 < bridge> And the players will hate it even if it’s completely invisible because it’s hip to hate things 18:54 < bridge> It's would a nice separate project for someone to start in rust 18:54 < bridge> as said, fat ass "SKIP LAUNCHER BRO, NEVER SEE IT AGAIN" button 18:55 < bridge> The launcher could be invisible the entire time like @learath2 suggested 18:55 < bridge> They will know that it exists and be annoyed at that 18:55 < bridge> we all agree the launcher will be written in rust 18:55 < bridge> safety first 18:55 < bridge> No, it’ll be written in electron 18:55 < bridge> xd 18:55 < bridge> JSX 💪 18:55 < bridge> 400 MB for the launcher 18:55 < bridge> 2mb for game 18:55 < bridge> 1GB atleast 18:56 < bridge> Also let’s make it 32bit 18:56 < bridge> lmao 18:56 < bridge> lets use SDL2 renderer 18:56 < bridge> if we dont need to render web, a launcher with rust and iced 18:56 < bridge> the average memory usage would be like 5mb i think 18:56 < bridge> https://iced.rs/ 18:57 < bridge> the launcher just needs a fancy background image tbh 18:57 < bridge> then u almost can't fail 18:57 < bridge> look at any game launcher 18:57 < bridge> https://docs.rs/iced/latest/iced/ 18:57 < bridge> they pretty simplistic 18:57 < bridge> If we want to support news then we need HTML I guess 18:58 < bridge> not rly 18:58 < bridge> Unless it's really simple like in the client 18:58 < bridge> we just parse the html 18:58 < bridge> and display it ourselves 18:58 < bridge> a rly simple html renderer 18:58 < bridge> The launcher should just be invisible 18:58 < bridge> aka just parse bold tags 18:58 < bridge> and links 18:58 < bridge> :PepeCross: 18:58 < bridge> With regex 18:58 < bridge> xdd 18:58 < bridge> insert SO question here 18:58 < bridge> :gigachad: 18:58 < bridge> first time should be visible to show discord links etc. 18:58 < bridge> 18:58 < bridge> similar to current main page inside client 18:58 < bridge> or home page 18:58 < bridge> it's there to replace that page 18:58 < bridge> @learath2 we could also add feature votes in launcher 18:59 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1163159149115363498/image.png?ex=653e8f5f&is=652c1a5f&hm=762c8851c4fc3237ff9f079d19b7053afc06edebac419d35dc4e21216c801443& 18:59 < bridge> It shouldn't be extra work for deen, so it should either parse the news directly from the website or directly from the info json 18:59 < bridge> I meant as in no gui should ever exist for it, except for an emergency gfx settings editor and crash reporter 18:59 < bridge> run server goes into LAN tab 18:59 < bridge> rest is also in server browser 18:59 < bridge> ye info json 19:00 < bridge> rss less goo 19:00 < bridge> bruh we need 4k raytracing 19:00 < bridge> Yes, ddnet but with god rays 19:00 < bridge> Next to "Run server" I'd want a Settings-icon button to configure the local server 19:00 < bridge> https://tenor.com/view/sun-nicolas-cage-nicolas-cage-sun-bright-morning-gif-5550039 19:01 < bridge> On widescreen I really would want a side panel with the news in it instead of hidden away in a corner 19:01 < bridge> fine, but imo we don't need it there. could also be in LAN tab.. but yeah 19:01 < bridge> dunno 19:01 < bridge> yeah, would also be useful to have the "Run server" button in the LAN tab 19:02 < bridge> Otherwise I always start the server, go the LAN tab, and need to refresh again 19:02 < bridge> I wouldn't exactly like a separate window before launching the client. I'd be fine with one showing up if the ddnet client doesn't show up itself. otherwise it's just a distraction. firefox doesn't open a launcher either 19:03 < bridge> See, there is no way all of us ever agree on anything 😄 19:03 < bridge> ? 19:04 < bridge> he said he doesnt like a seperate window 19:04 < bridge> that also applies to the current main page 19:04 < bridge> just open it in the browser at that point IMO 19:04 < bridge> I highly doubt that’s what he meant. I’d bet money on it 19:04 < bridge> I agree ;) 19:05 < bridge> does firefox have that screen? 19:05 < bridge> Yes, it’s the home screen 19:06 < bridge> This thing 19:06 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1163160942268399647/IMG_0739.png?ex=653e910b&is=652c1c0b&hm=286fc4755d105a890f0dbed2e07f5e994ed93a39671457636c5e629e883b5466& 19:06 < bridge> anyway, not everyone has to agree 19:06 < bridge> there is a skip button 19:06 < bridge> Someone should just make the bare minimum invisible launcher and push it through quickly at night before all the devs wake up 19:07 < bridge> Maybe no one will even notice 19:07 < bridge> invisible launcher seems fine 19:07 < bridge> if it doesn't delay the start too much 19:08 < bridge> Ideally it should just do a couple `stat` calls, a handful of `read` calls, and an `exec` 19:08 < bridge> probably fork and exec? 19:09 < bridge> I think a launcher would be meaningful if you could set different mods or smt like mc. But in the case of ddnet we have no mods :O. (I'm talking about the client btw). 19:09 < bridge> here, finished the launcher 19:09 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1163161777253666967/image.png?ex=653e91d2&is=652c1cd2&hm=ba62fae66a3e483a508a97d1ed6f36067388088382bef2fadd03075eb00002fe& 19:11 < bridge> well it should open first time 19:11 < bridge> to emulate the home page 19:11 < bridge> which will be gone 19:11 < bridge> discord link etc. 19:12 < bridge> this one 19:21 < bridge> See no way we all ever agree on this 😄 19:21 < bridge> we don't have to 19:21 < bridge> I don't think the main menu should be going anywhere. You already decided it's gone 19:21 < bridge> heinrich says he wants backward compability bcs he doesnt want to drop support for 1% of players 19:21 < bridge> 19:21 < bridge> so we can effort to have a launcher for another 1% 19:22 < bridge> it's useless after seeing it once and has no "don't show again" 19:22 < bridge> so yes 19:22 < bridge> decided 19:22 < bridge> Very team player, much wow 19:23 < bridge> yeah 19:23 < bridge> team player 19:23 < bridge> #7258 19:23 < bridge> https://github.com/ddnet/ddnet/pull/7258 19:23 < bridge> everyone pro 19:23 < bridge> 1 person against 19:23 < bridge> very team play 19:28 < bridge> so then tell me your reason against it, if u dislike it so much 19:29 < bridge> I don't dislike a launcher. I dislike that we are removing the main menu. I like the main menu 19:29 < bridge> do you feel like the main menu looks good? 19:30 < bridge> visually 19:30 < bridge> It's lacking a news section imo, it can use more density. But overall yes, it looks decent imho 19:31 < bridge> Maybe moving some stuff around, sure. But removing it completely isn't something I'd be for 19:31 < bridge> i don't want to lie, i find it rather ugly. 19:31 < bridge> 19:31 < bridge> Imagine you start a game and this is the first thing you see... 19:31 < bridge> add a twinbop 19:32 < bridge> some fanservice 19:32 < bridge> What do you think is wrong with it? 19:32 < bridge> It has our logo, it has buttons for all the things you might want to do. The browser interface is far more overwhelming to someone that just opened the game evr 19:33 < bridge> Ever* 19:34 < bridge> similar to what you said, i dislike it being so open 19:34 < bridge> 19:34 < bridge> the icons look weirdly placed (behind the button) 19:34 < bridge> 19:34 < bridge> the logo should be wider (go over the buttons) 19:34 < bridge> 19:34 < bridge> "Quit" just looks shit 19:34 < bridge> 19:34 < bridge> bottom right fits nothing like bottom left 19:34 < bridge> so the symmetry is missing here 19:34 < bridge> we could e.g. in the right bottom show the current tee, and put a customize button 19:34 < bridge> to give it more personality 19:35 < bridge> It's only so empty in widescreen btw, it looks better composed in 4:3 19:35 < bridge> was about to say that xD 19:35 < bridge> ok but i guess most ppl start it in 16:9 19:35 < bridge> at least frist time 19:35 < bridge> Yeah, I would love to maybe add news or maybe the tee as you say to it in widescreen where we have the space 19:36 < bridge> and our theme maps are also rather boring 19:36 < bridge> maybe bit more grass etc. 19:36 < bridge> not just a sun with wrongly animated clouds xD 19:36 < bridge> But removing it, I honestly haven't ever thought about. I think some sort of hub page like this is necessary for people starting the game for the first time 19:36 < bridge> well launcher does that 😂 19:38 < bridge> Mh, maybe if we add launch flags to the game and launch into a certain page, but even then that's meh UX, we don't want people closing the client and going back to the launcher for the hub page 19:38 < bridge> well the main page can stay 19:38 < bridge> it should just not be default 19:39 < bridge> once u seen it, u probably never care again about it 19:39 < bridge> It should be the default. People that don't want it should disable it themselves 19:39 < bridge> at least all ppl i know asked me how to disable it 19:39 < bridge> hidden in the settings 19:39 < bridge> not very user friendly imo 19:39 < bridge> It's mostly for new people. 1337 haxors and cool gamers that have no time for menus can disable it 19:39 < bridge> @totar didnt even know it about 2 weeks ago 19:40 < bridge> and he is like top notch client dev 19:40 < bridge> isn't it a new thing though? 19:40 < bridge> no 19:40 < bridge> Not very new 19:40 < bridge> it was there since the main page exist 19:41 < bridge> :O I too didn't know it. Just recently saw a conversation about it and I thought it was added recently 19:41 < bridge> @totar didnt even know it about 2 weeks ago (https://discord.com/channels/252358080522747904/293493549758939136/1147989915351662602) 19:42 < bridge> Honestly never once felt like that one extra click to get into the game was an inconvenience but I have a feeling that I'm not allowed to make that comment since my playtime last year was too low to have any opinion 19:42 < bridge> yeah 19:42 < bridge> i open client 5-10 times per day 19:42 < bridge> sucks 19:42 < bridge> i die internally 19:42 < bridge> But dw, I started playing with murpi again. I'll be allowed opinions soon 19:42 < bridge> nice 19:42 < bridge> wb 19:42 < bridge> xd 19:43 < bridge> I open client around 10-20 times too but never felt it to be a problem. 19:43 < bridge> I just tap doulbe enter ;) 19:43 < bridge> I actually open and close the client a lot too. I play fng between games of league 19:43 < bridge> but was it also no problem when it got introduced? 19:43 < bridge> now it's in your muscle memory 19:44 < bridge> The main screen was introduced? Wasn't it always there? xD 19:44 < bridge> Honestly? No I never even thought about it. I was playing a lot back then too 19:44 < bridge> lmao 19:44 < bridge> it was introduced in like ddnet 14 or smth 19:44 < bridge> around steam release 19:44 < bridge> The first time I thought about the extra click was a couple weeks ago when people were talking about it in here 19:45 < bridge> ah yeah 19:48 < bridge> I use the demo from launch enough that I don't mind the main menu 19:48 < bridge> I use the demo viewer from launch enough that I don't mind the main menu 19:49 < bridge> but the button also exist in the server browser 19:49 < bridge> So small 19:49 < bridge> Idk 90% of the launch time is the client loading not clicking the menu 19:49 < bridge> for me client starts instant 19:49 < bridge> hardware issue 😂 19:50 < bridge> Bruh how 19:50 < bridge> Does skins make it slower 19:50 < bridge> 100% 19:50 < bridge> we load everything single threaded 19:50 < bridge> one after each other 19:50 < bridge> so u have the storage access delay every time 19:50 < bridge> Mmm 19:51 < bridge> I still thinks it's nice to have it, makes it feel like a real game 19:51 < bridge> I still think it's nice to have it, makes it feel like a real game 19:51 < bridge> Someone needs to add lazy loading of skins 😄 19:51 < bridge> Or just load them on a separate thread 19:51 < bridge> before we need a main menu, we need better music 19:51 < bridge> 😂 19:51 < bridge> Optimally, someone needs to write a better job system first 😄 19:52 < bridge> Honestly, doing it PROPERLY is very hard. Technically io bound jobs can be scheduled much differently than cpu bound ones 19:53 < bridge> Folly and similar future/promise solutions have 2 separate pools for those 19:53 < bridge> Then you get into stuff like chaining where you need to think about what gets executed in which pool when. 19:54 < bridge> see 19:54 < bridge> that's why we need ddnet 2.0 19:54 < bridge> Sometimes you want the chained job to go back in the queue, sometimes you want it executed inline 19:54 < bridge> it starts instant 19:55 < bridge> In Rust one just ignores all that complexity and hopes tokio devs have it all right, maybe we should use a library for it too? 19:55 < bridge> That's why we need ddOS, so you can reload DDNet into memory immediately and your OS is the launcher 19:55 < bridge> That's why we need ddOS, so you can preload DDNet into memory immediately and your OS is the launcher 19:56 < bridge> short flex 19:56 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1163173463280853012/test.mp4?ex=653e9cb4&is=652c27b4&hm=72a64f7d0567755de04110ba14b90e6b8bd0584bc61104f6da5c003a7afa9398& 19:56 < bridge> No OS, only ddnet. We can put the launcher into MBR 19:56 < bridge> Loads too fast. I don't like it 19:56 < bridge> btw what happened to Chiller? It's been a while since I saw him 19:57 < bridge> He overdosed on 0.7 19:57 < bridge> xd 19:57 < bridge> after robyte said he dislikes 0.7 19:57 < bridge> Ah it all makes sense now 19:57 < bridge> direct rq 19:57 < bridge> He was so close to getting his 0.7 support into the client 19:57 < bridge> But then chaos 19:58 < bridge> I don't dislike 0.7, but adding 45 TODOs was a bit too much 19:58 < bridge> it's ok, come to the jupstar side 19:58 < bridge> newer is better 19:58 < bridge> quality > quanitity 19:58 < bridge> performance is everything 19:59 < bridge> when a user starts ddnet he must feel "I deserved that" 19:59 < bridge> Except when it comes to frame count? 😄 19:59 < bridge> Remove all backwards compatibility for next April 1st 19:59 < bridge> if the quality clearly overweights the fps argument i can live with that 19:59 < bridge> but everything should feel instant 19:59 < bridge> and smooth 20:00 < bridge> You need to get to 5.391 * 10^44 frames per second ASAP 20:00 < bridge> We can render directly into spacetime 20:01 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1163174726018027540/test.mp4?ex=653e9de1&is=652c28e1&hm=e7ac4b7a63f33a562e83e74465ddfe717e0da57955742ecd7205fe0b7948f19d& 20:01 < bridge> instant server joining 20:01 < bridge> another short flex 20:01 < bridge> If just looks wrong, you need to add a couple sleeps 20:01 < bridge> i need to hook into javascript 20:02 < bridge> call sleep 20:02 < bridge> and then go back 20:02 < bridge> full js runtime deps 20:03 < bridge> Start a 68030 emulator, sleep on there in a nop loop, then go on 20:05 < bridge> ddnet 2.0 should have split screen support 20:05 < bridge> kek 20:05 < bridge> and mutli mouse support 20:05 < bridge> u want another flex? 20:05 < bridge> that's actually hard xd 20:05 < bridge> ye ik xD 20:05 < bridge> x11 multiple mouse support is hilarous 20:06 < bridge> I tried implemented smt like that with libinput but it's so hard that I didn't get anywhere 20:06 < bridge> ye 20:07 < bridge> https://discord.com/channels/252358080522747904/293493549758939136/1147541187671113748 20:07 < bridge> Ah yeah I remember that xD 20:07 < bridge> but tbf that's more the power of using no global variables 20:07 < bridge> than anything else 20:08 < bridge> i archieved similar stuff with cpp version 20:08 < bridge> But I meant split-screen support as being able to plug another keyboard and mouse and play with those too. So it goes hand in hand with multi-mouse support :/ 20:09 < bridge> yes, the problem here is really just winit support for it 20:09 < bridge> else i'd say it's ez 20:09 < bridge> if only x11 supports it, then it probably untested af xd 20:09 < bridge> I thought about a demo player preview in the browser but that would be equivalent to creating an entire new client inside the client due to the global variables 20:10 < bridge> my client is constructed so, that u can view demos ingame even 20:10 < bridge> hmm as k2d2 said x11 mutli pointer support isn't good. I think the only viable solution would be to use libinput for linux and equivalents for win/mac/bsd 20:10 < bridge> but tbf i don't have demo support yet xD 20:10 < bridge> just thought about the hierarchy 20:11 < bridge> If it's structured well it shouldn't matter if the snapshots and messages are from a server or from a demo file 20:11 < bridge> yes 20:12 < bridge> well i hope i can hurry a bit until like end of the year 20:12 < bridge> then i can maybe show some stuff 20:12 < bridge> currently i worked on DPI aware UI 20:12 < bridge> with zooming support 20:50 < bridge> Why is our jobpool only using two threads anyway? 20:51 < bridge> Is probably go for `2 * std:🧵:hardware_concurrency() + 2` many threads for now 20:51 < bridge> I'd probably go for `2 * std:🧵:hardware_concurrency() + 2` many threads for now 20:52 < bridge> why the 2*? 20:52 < bridge> `std:🧵:hardware_concurrency() + 1` 20:52 < bridge> So more threads can wait on I/O 20:52 < bridge> We don't assume the jobs are all doing useful work, no? 20:53 < bridge> will be funny to have a job pool with 34 threads 20:53 < bridge> ah right we dont use green threads 21:02 < bridge> The idle threads would be waiting on a semaphore so that's fine. Though their stacks would be allocated, but I think our stack footprint is tiny on job pool runners so it just might be doable 21:07 < bridge> <_voxeldoesart> on android? is mobile client coming back after all? 21:09 < bridge> It improve the code quality even if Android is unused right now 21:11 < bridge> We could probably compile an Android version, but then people would complain because there is no input method unless you connect mouse/keyboard/controller 21:11 < bridge> <_voxeldoesart> No joystick buttons like the other mobile client? 21:12 < bridge> We'd have to add something like that, I don't know other mobile clients or even the old version we have 21:23 < bridge> especially for small games like ddnet 21:26 < bridge> it will eat the last MB of memory on potato PC 😄 21:26 < bridge> The game will truly be ruined forever 21:26 < bridge> what kind of launchers do u use lmao 21:27 < bridge> Powered by electron 21:27 < bridge> but srsly, a simple launcher shouldn't be a problem xd 21:27 < bridge> Yeah, we are just joking around 21:28 < bridge> An invisible one or a simple one is not even a resource consideration 21:28 < bridge> An electron one I would just leave the team over 21:29 < bridge> i dunno, chairn is serious af xd 21:29 < bridge> He is a phd afterall 21:30 < bridge> well then, i take it back 21:30 < bridge> he is allowed to use win7 21:30 < bridge> xd 21:30 < bridge> He is serious about the earlier comment though probably. People do dislike launchers 21:31 < bridge> Launchers are often done completely wrong, just add extra clicks and spyware 21:31 < bridge> Waaaay back in 2004 when I first started gaming people didn't like launchers 😄 21:31 < bridge> Yes, this was soo common, cluttered weird apps full of ads 21:34 < bridge> first comment is kinda serious, second is joke 21:34 < bridge> invisible one is probably fine, i think users shouldn't need one more click to start the game 21:34 < bridge> psychological barriers are powerful repellents 21:35 < bridge> i dunno, which ppl u mean? 21:35 < bridge> minecraft launcher is quite liked i think 21:35 < bridge> they like launchers like origin 21:35 < bridge> bcs they arent just launchers 21:35 < bridge> they are whole OS 21:36 < bridge> back in 2008- i remember launchers from MMOs 21:36 < bridge> I'm not talking about any specific person. I'm just thinking back to my time playing shitty mmorpgs and gunz 21:36 < bridge> looking forward to download the game 21:36 < bridge> now that i think about it, we could have separate map editor and skin manager, stuff like that 21:36 < bridge> though mappers will probably dont like not being able to map and chat at the same time 21:37 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1163198887717244979/oee1p5ll9gf71.jpg?ex=653eb462&is=652c3f62&hm=8689dedb0e630baa82b5c7c6f57e315817f69bf245c3b82651e6a4aa1af451d1& 21:37 < bridge> good memories 21:37 < bridge> The private servers that ditched the launcher were always appreciated 21:37 < bridge> classic mmo launcher 21:37 < bridge> Grandchase was such a vibe. I hosted a private server for a couple months 21:37 < bridge> i played grand chase back then 21:37 < bridge> also another one about golfing 21:37 < bridge> weeb ofc 21:38 < bridge> hmm and more stuff 21:38 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1163199361140916275/pangya.webp?ex=653eb4d2&is=652c3fd2&hm=b43d76ca0df9cab6e4fb77e63804b1713f0cfccfe4e85cde2d3d4be3b9a5fd07& 21:39 < bridge> i was an advanced weeb already kek 21:39 < bridge> :justatest: 21:39 < bridge> this game was on wii too iirc 21:39 < bridge> I used to play grandchase, florensia, metin 2, knight online. Some very meh games 21:39 < bridge> this is a golf mmo 21:39 < bridge> xddd 21:40 < bridge> https://en.wikipedia.org/wiki/PangYa 21:40 < bridge> Funnily enough I think the first anime I ever watched was like when I was finishing up highschool. I resisted the weeb for very long 21:40 < bridge> they put dragon ball (bola de drac in catalan) on tv 21:40 < bridge> so i got anime from tv 21:41 < bridge> also one piece 21:41 < bridge> dragon ball dub in catalan is iconic 21:41 < bridge> (im talking about when goku is a kid) 21:41 < bridge> https://tenor.com/view/kid-goku-kid-goku-clapping-gif-21748543 21:41 < bridge> this 21:41 < bridge> the catalan dub itself has fans, it was that good 21:41 < bridge> When I was a wee youngling, we had anime on tv aswell, but I got unlucky. Erdogan got elected and decided anime was degeneracy, so I never got to watch any 21:42 < bridge> big f 21:42 < bridge> We had dubbed one piece and dubbed dragon ballz 21:42 < bridge> here now they even put modern anime 21:42 < bridge> i was demon slayer on tv 21:42 < bridge> saw* 21:42 < bridge> If demon slayer was aired on tv in turkey, they would shoot up the channel nowadays 21:42 < bridge> xd 21:43 < bridge> Waaay too much fanservice in that one 21:43 < bridge> Ware is ddnet fan service? 21:43 < bridge> well not that much but i guess 21:44 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1163200656862101545/Dota_patcher.jpg?ex=653eb607&is=652c4107&hm=2c6dc5710f26ee128222e6f5e7444efcd05710e7053e4306acf0d09de9f0b75e& 21:44 < bridge> we need to make a oldschool ddnet launcher 21:44 < bridge> 3d buttons 21:51 < bridge> veloren also has a launcher 21:55 < bridge> https://learn.microsoft.com/en-us/visualstudio/debugger/how-to-set-a-thread-name-in-native-code?view=vs-2022#set-a-thread-name-by-throwing-an-exception 21:55 < bridge> :pepeW: How to set a thread name on Windows 22:01 < bridge> speaking of dragon ball, that was the dragonball mmo launcher: 22:01 < bridge> https://www.dbocom.com/images/taiwan_unpatch.jpg 22:01 < bridge> oh ye xd 22:01 < bridge> do u know that game? 22:01 < bridge> please don't 22:01 < bridge> i think itried it 22:02 < bridge> i played it xd 22:02 < bridge> to max lvl xd 22:02 < bridge> the launcher was cool, bcs everything that is white in the pic above was transparent 22:02 < bridge> 22:02 < bridge> so shenlong went over the edges 22:05 < bridge> This gui was cool for a while. Lot's of transparent irregular guis came out for a moment 22:33 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1163213014548361307/RDT_20231015_2132511996254161840652730.jpg?ex=653ec18a&is=652c4c8a&hm=47089222c944dfbc3068a711e945614c027a55b389cebedd5e51ded5c0abe8c2& 22:33 < bridge> xd 22:34 < bridge> just make the swap bigger /s 22:35 < bridge> pokemon in like 300KB xd 22:35 < bridge> good old days 22:36 < bridge> I have this hunch that you watched that video on that one dude training an ML algo to finish pokemon red 22:36 < bridge> https://oyster.ignimgs.com/mediawiki/apis.ign.com/pokemon-lets-go-pikachu-eevee/a/aa/Screen_Shot_2018-11-16_at_1.21.49_AM.jpg?width=1280 22:36 < bridge> 22:36 < bridge> i bet every bush here is bigger than whole pokemon blue, red, green combined xD 22:36 < bridge> KEK 22:36 < bridge> it got recommended to me 22:36 < bridge> probs bcs google knows we talking here 22:37 < bridge> 😄 22:42 < bridge> Developers now: Let's just add DLSS/FSR as an excuse to not optimize 22:42 < bridge> Ew 22:45 < bridge> @robyt3 does windows do lazy allocations for thread stacks? 22:46 < bridge> I don't know, but I wouldn't really expect it for Windows. You can specify the stack size when creating the thread (one of the 0's means default) 22:46 < bridge> what even is the current default stack size on modern windows? 22:46 < bridge> i remember it was like 16 KBytes 22:46 < bridge> some day xd 22:46 < bridge> https://learn.microsoft.com/en-us/windows/win32/procthread/thread-stack-size 22:48 < bridge> "The default size for the reserved and initially committed stack memory is specified in the executable file header" 22:48 < bridge> Whatever is specified in our file header then ... 22:48 < bridge> k 22:55 < bridge> On linux we could madvise away the threads stacks after a while 22:55 < bridge> We very rarely have more than one job usually 22:56 < bridge> on linux stack is lazy allocated anyway 22:56 < bridge> That could change quickly if we load every image in another job 22:56 < bridge> But as soon as we use it it'll be forever allocated 22:56 < bridge> 8MB or whatever ur limit is, is really just the limit