00:37 < bridge> Idk but you can do /me in this irc channel and nobody on discord sees it. Does that help? 04:58 < bridge> going to learn rust 05:31 < ws-client> "go"ing to learn rust 05:32 < ws-client> https://zillyhuhn.com/cs/.1706848345.png 05:32 < ws-client> #gorust 05:59 < bridge> rust 06:07 < bridge> go 07:40 < bridge> https://tenor.com/view/timesuck-dan-cummins-cult-bad-magic-gif-19516024 08:51 < bridge> https://tenor.com/view/cat-drinking-lazy-bum-slob-gif-8690497 09:27 < ws-client> I can put user input into my sql statement if this regex matches without having to worry about bobby tables right? ``/^[a-z]+$/`` 09:29 < bridge> https://www.jstage.jst.go.jp/article/elex/advpub/0/advpub_20.20230584/_article 09:29 < bridge> Single-channel 240-Gbit/s sub-THz wireless communications using ultra-low phase noise receiver 09:36 < bridge> time to compile nodejs 09:36 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1202895259756007464/image.png?ex=65cf1e82&is=65bca982&hm=2d353fafff9a445aa24552e1c01d8711c80ee5f7637d5c8876728298bf152f1e& 10:22 < bridge> you can put any user input into your database using a proper library/driver that is able to correctly escape your input. what you should not do is constructing the sql with the user input by hand. 10:23 < bridge> using positional parameters `$1, $2` or non positional `?` (not supported by PostgreSQL) 10:26 < bridge> sometimes it's still ok to construct sql but with highly validated inputs like integers or strings that can only be one of a predefined set of strings, etc. 10:27 < bridge> imo that regex would not fall under that latter category. 10:29 < bridge> hi ryo 10:29 < bridge> is the rust book a modern resource i should use to learn rust 10:29 < bridge> or old 10:30 < bridge> it's the bible, I guess 10:30 < bridge> asking if there is anything else is already blasphemy 10:33 < bridge> If you ask me it's not worth it too much. Maybe to get a basic feeling, but generally learning by doing is still the best. 10:33 < bridge> 10:33 < bridge> You should be open to redactor your code multiple times to improve it and/or try different ways to solve the same problem 10:38 < bridge> ya 10:38 < bridge> If you ask me it's not worth it too much. Maybe to get a basic feeling, but generally learning by doing is still the best. 10:38 < bridge> 10:38 < bridge> You should be open to refactor your code multiple times to improve it and/or try different ways to solve the same problem 11:18 < ws-client> @jxsl13 as far as i know this does not work for table or column names 12:07 < bridge> I'm thinking about stop sponsoring chn servers recently 12:12 < bridge> You don't have to. Does it have a different reason than money? 12:12 < bridge> money isn't really a issue tbh lmao 12:12 < bridge> there are just way too many people with way too much free time here to block to fake to apply mod just to mess with me 12:13 < bridge> and those chinese ip changers/proxies are actively ignoring our request to stop supporting ddnet. made everything more difficult 12:13 < bridge> So you are unhappy being a mod? 12:13 < bridge> scratch all that, i think i'm just depressed lmao 12:13 < bridge> Ah 12:13 < bridge> i'm not even modding 12:13 < bridge> 12:13 < bridge> U mean actively hosting the server 12:14 < bridge> well i'm not really doing anything other than providing the server 12:14 < bridge> it started to feel like everyone just playing for griefing now 12:14 < bridge> Rip 12:14 < bridge> its the best 12:14 < bridge> or maybe only checking report channel is not good for mental 12:15 < bridge> @mpft dont listen to jupstar, he thinks the rust book is like the old rusty books of coding 12:15 < bridge> but its just a big big tutorial on rust 12:15 < bridge> its literally the best resource to learn rust 12:15 < bridge> i mean it is called rust book 12:16 < bridge> also next time ping me or i miss ur msg xd 12:17 < bridge> @mpft more resources, but book is ur primary: 12:17 < bridge> 12:17 < bridge> - https://cheats.rs/ cheatsheet, its epic 12:17 < bridge> - https://doc.rust-lang.org/rust-by-example/ 12:17 < bridge> - https://github.com/rust-lang/rustlings 12:17 < bridge> the cheatsheet looks like this 12:17 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1202935868298625094/image.png?ex=65cf4454&is=65bccf54&hm=d2f5a504f9070df9af81cf1d7f9454ebed99ebd6dd30215dcb1f5ee1dea60c52& 12:18 < bridge> sweet 12:18 < bridge> i will check it out tomorrow 12:19 < bridge> no 12:19 < bridge> do it now 12:19 < bridge> I disagree it doesn't teach you lot of best practices 12:19 < bridge> rust cant wait 12:19 < bridge> It's an introduction nothing now 12:19 < bridge> More 12:19 < bridge> and he needs that as first 12:19 < bridge> And I wrote that 12:19 < bridge> ok 12:19 < bridge> then we are all in agreement 12:19 < bridge> lets all dance 12:20 < bridge> https://tenor.com/view/crab-rave-dancing-dancing-crab-gif-16543314 12:20 < bridge> But good day to start rust 12:20 < bridge> Ffr 12:21 < bridge> @mpft learn proc macros. Important 12:26 < bridge> Why don't we include NETMSGTYPE_SKINCHANGE from 0.7.3 to make sixup better 12:26 < bridge> Why don't we include NETMSGTYPE_SV_SKINCHANGE from 0.7.3 to make sixup better 12:26 < bridge> Why don't we include NETMSGTYPE_SV_SKINCHANGE and NETMSGTYPE_CL_SKINCHANGE from 0.7.3 to make sixup better 12:33 < bridge> i think sixup haven't been a priority for a very long time 12:34 < bridge> also you can always pr 12:36 < bridge> https://youtu.be/q307jxe_CCo?si=b0BRZjCXWSJC1n1q 13:23 < bridge> ye i'll stop sponsoring ddnet chn starting in june 13:23 < bridge> i already sent out a post asking more people to donate servers 13:37 < bridge> @learath2 13:37 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1202956060395184168/image.png?ex=65cf5722&is=65bce222&hm=fe58fc6b0a11a4e3438c6ed46ebbd74318a53b2aafc5364c24b083ccc3f780c0& 13:37 < bridge> did u know about this kernel option 13:48 < bridge> yeah this sucks 13:49 < bridge> is it possible to run ddnet using i3-dmenu-desktop? :thonk: 13:49 < bridge> I hope you'll still be around sharing cool stuff (unless that burns you out too) 13:50 < bridge> I'm not familiar with that (I am with dmenu) 13:51 < bridge> when have i ever shared anything cool lol 13:51 < bridge> but ye, i'll be around 13:51 < bridge> :) 13:51 < bridge> i'll still handle mod and community 13:52 < bridge> maybe get someone else to watch over, but it is hard to find someone you trust to just hand everything over 13:52 < bridge> not that I technically own anything but still 13:53 < bridge> my pc just got delayed for another week 13:53 < bridge> im gonna cry 13:53 < bridge> what am i even paying 2.4K€ for, if it takes 2 week to arrive 13:53 < bridge> u can only have chinese mods, right? 13:53 < bridge> i want that shit to be airdropped within 2 hours at my doorstep man, its 2024 for nothing >:( 13:53 < bridge> I handle chinese mod application, but I personally have mod just like other mods 13:54 < bridge> i don't use them tho, cuz i don't really play ddnet since i started working 13:54 < bridge> nah i meant fng 13:55 < bridge> i don't think noby host fng on our servers anymore 13:55 < bridge> lets go pm 13:56 < bridge> @milkeeycat is like a i3 .desktop launcher with dmenu as interface? 13:56 < bridge> @milkeeycat is it like a i3 .desktop launcher with dmenu as interface? 13:56 < bridge> yea 13:57 < bridge> This bad news make almost all of the CHN players surprised, i think so 13:57 < bridge> ig you should make a .desktop file for ddnet then 13:57 < bridge> i have it xD 13:57 < bridge> but it doesnt launch ddnet 😦 13:57 < bridge> i yoinked it from ddnet website 13:58 < bridge> ``` 13:58 < bridge> [Desktop Entry] 13:58 < bridge> Type=Application 13:58 < bridge> Name=DDNet 13:58 < bridge> Path=/home/urmom/personal/ddnet/build/ 13:58 < bridge> Exec=DDNet %u 13:58 < bridge> Terminal=false 13:58 < bridge> Categories=Games 13:58 < bridge> MimeType=x-scheme-handler/ddnet; 13:58 < bridge> ``` 14:00 < bridge> I remember that there is a DDNet.desktop in the "other" directory 14:00 < bridge> the good old "urmom" user 14:00 < bridge> the good old "urmom" directory 14:01 < bridge> does it throw an error or smt? 14:01 < bridge> nothing 14:01 < bridge> i can run it by typing ddnet:// in firefox tho Xd 14:02 < bridge> It's new. I just enabled it with my last kernel upgrade, but idk if anything uses it yet 14:02 < bridge> You can do `sudo make install` in your build directory, and it will install the .desktop file. 14:06 < bridge> it works :p 14:06 < bridge> and it install shit tons of files 14:06 < bridge> and it installed shit tons of files 14:07 < bridge> ig the problem was it couldn't find the `DDNet` programm in path 14:08 < bridge> but shouldn't the `Path=` do that (set the cwd to the one specified) 14:08 < bridge> it was using the same path for custom protocol whatever that thing is called 14:08 < bridge> and it worked 14:09 < bridge> is there sudo make uninstall? :justatest: 14:10 < bridge> Nope :^) 14:11 < bridge> maybe you could see the logs (it it outputs that) to what and where it was installed 14:11 < bridge> (the ouput of `sudo make install`) 14:12 < bridge> yeah, i have it 14:22 < bridge> ``` 14:22 < bridge> [Desktop Entry] 14:22 < bridge> Type=Application 14:22 < bridge> Name=DDNet 14:22 < bridge> GenericName=Platform Game 14:22 < bridge> Path=/home/urmom/personal/ddnet/build/ 14:22 < bridge> Exec=/home/urmom/personal/ddnet/build/DDNet %u 14:22 < bridge> Icon=ddnet 14:22 < bridge> Terminal=false 14:22 < bridge> Keywords=game;multiplayer; 14:22 < bridge> Categories=Game;ArcadeGame; 14:22 < bridge> MimeType=x-scheme-handler/ddnet; 14:22 < bridge> Comment=Launch DDNet 14:22 < bridge> ``` it worked 😄 14:26 < bridge> i hate that when i edit a msg in github, it always makes the ugly small ass edit box 14:26 < bridge> 14:26 < bridge> they could easily at least take the space of "Add comment" or smth 14:26 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1202968293112160306/image.png?ex=65cf6287&is=65bced87&hm=99ab6bcff99a0247ac1a987dd5c65e7783db4f79e4b6e35ef5d4a84824a0c872& 14:27 < bridge> gh should hire me 14:27 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1202968562881404948/image.png?ex=65cf62c7&is=65bcedc7&hm=39380250a85b1133b7afe09f499c0082d9dcfa1c4dd590f0259be2ab1d338bde& 14:27 < bridge> i hate that when i edit a msg in github, it always makes the ugly small ass edit box 14:27 < bridge> 14:27 < bridge> they could easily at least take the space of "Add comment" or smth 14:27 < bridge> ^ this is default size 14:28 < bridge> this would already be perfect 14:28 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1202968687083130920/image.png?ex=65cf62e5&is=65bcede5&hm=9d72a8cf8f6b9bce869ce2e09804704902418a0cb73e48a2b8993a1309aeace4& 14:28 < bridge> xd 14:28 < bridge> not so hard xd 14:29 < bridge> can u resize it? 14:29 < bridge> cant u resize it? 14:35 < bridge> you can resize it in the bottom right corner. but why is it not usable by default? 14:35 < bridge> I think sometimes it resizes itself 14:39 < bridge> yep for me it doesnt remember the resize 14:40 < bridge> so every time i edit i get small ugly editbox 14:40 < bridge> in this comment its not even as bad.. if u have wall of text, it's horrible 14:44 < bridge> wtf? 14:44 < bridge> where did u buy 14:44 < bridge> is some piece of hardware not in stock or what 14:45 < bridge> https://www.mindfactory.de/?pk_campaign=1591185980&pk_kwd=mindfactory&pk_source=google&pk_medium=cpc&pk_content=687799830193&gclid=Cj0KCQiAwvKtBhDrARIsAJj-kTg5WZq9AH1ENQhm_6Khn7qbRBPe6eAWmGibQdwUL1E5B5zuwRWpzeoaAqBEEALw_wcB 14:45 < bridge> 14:45 < bridge> and yes they delayed it because of the case - even tho i said idgaf send me one where everything fits 14:45 < bridge> they didnt 14:46 < bridge> u can ask them to cancel only the case and buy a new one 14:46 < bridge> 14:46 < bridge> or switch to a cheaper or equal expensive one 14:47 < bridge> but i guess cancel would mean u dont get free shipping right? 😄 14:47 < bridge> that sucks ofc 14:47 < bridge> i think only 150€+ is free at mindfactory 14:47 < bridge> and only from 0-6 o'clock xDD 14:47 < bridge> weirdest rule 14:52 < bridge> yeah its insane 14:52 < bridge> meh another week of laptop gaming ig 14:53 < bridge> hello there 14:54 < bridge> how can i change a player color? i know i need to change this 14:54 < bridge> ```cpp 14:54 < bridge> pPlayer->m_TeeInfos.m_ColorFeet = someint 14:54 < bridge> ``` 14:54 < bridge> but i don't know how to convert a hsla to int 14:55 < bridge> how can i change a player feet color? i know i need to change this 14:55 < bridge> ```cpp 14:55 < bridge> pPlayer->m_TeeInfos.m_ColorFeet = someint 14:55 < bridge> ``` 14:55 < bridge> but i don't know how to convert a hsla to int 15:38 < bridge> The combination of VSCode and an extension that formats my code automatically when saving and pushing commits to GitHub doesn't work so well 👀 15:39 < bridge> what part exactly does not work 15:39 < bridge> u have to set the formatter and also activate format on save 15:39 < bridge> https://github.com/ddnet/ddnet-web/pull/285 15:39 < bridge> S Tier indenting 15:40 < bridge> rip 15:40 < bridge> glorious 15:41 < bridge> do you use prettier? 15:41 < bridge> i wonder if that even works for native html 15:41 < bridge> Yes 15:42 < bridge> it does 15:42 < bridge> oops i was late 15:43 < bridge> mhh 15:43 < bridge> that should normally work well on vscode 15:43 < bridge> but never used it with html tho 15:44 < bridge> big fan 15:50 < bridge> I mean it does work, I'd even say it's easier to read now, buuut if I'd were to change even more files, finding my changes would be like finding a needle in a haystack 😄 15:51 < bridge> u could format all in one commit, add your changes ontop of those 15:56 < bridge> yea. that's bad. please don't mix reformatting with actual changes 15:57 < bridge> I don't see a good way to see what changed 15:57 < bridge> Can you help me fix that? ^^ 16:01 < bridge> is your diff big? 16:02 < bridge> your actual diff 16:02 < bridge> your changes 16:03 < bridge> I'd say no, maybe 500 lines 16:03 < bridge> it's mostly just text 16:05 < bridge> mh you could try make a second branch, only do the formatting and try to merge your other branch on it 16:05 < bridge> but no idea how likely collisions are 16:05 < bridge> I don't want to format the code at all xd 16:05 < bridge> well that's too late xd 16:06 < bridge> I'd checkout the earlier commit and then redo the changes, without reformatting and just force push 16:06 < bridge> the changes -> my changes 16:06 < bridge> Does that not work? 16:06 < bridge> yes but sounds like lot of work 16:06 < bridge> it's basically as starting from new or not 16:07 < bridge> No, the PR has multiple commits, and the last one can be redone fairly quickly 16:07 < bridge> ah ok 16:07 < bridge> git rebase --interactive HEAD~2 16:07 < bridge> then put e for edit into the last one or d for drop 16:08 < bridge> when u done: 16:08 < bridge> git commit --amend 16:08 < bridge> 16:08 < bridge> then 16:08 < bridge> git rebase --continue 16:08 < bridge> in case of edit xd 16:33 < bridge> oh my gawd why is this so hard 17:05 < bridge> some get melons, others get potatoes. 17:07 < bridge> it might be possible to do but you will not like the verbosity of the sql statement. Alternatively, you could have a single table that has a column that you use for switching between contexts. 17:09 < bridge> format on save is evil 17:14 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1203010606873968650/Screenshot_20240202-171409.png?ex=65cf89ef&is=65bd14ef&hm=fa7eedb5d4618f83a45a5824ff71133ba790b4e1084394ae7c74e7b0ebfe6b50& 17:31 < bridge> @murpi I can fix it later 17:31 < bridge> ah, you're already on it 17:32 < bridge> already done 👀 17:32 < bridge> (I think) 17:33 < bridge> https://factorio.com/blog/post/fff-396 18:03 < bridge> Why do some config variables have zero for both min and max? Like `sv_port` for example. 18:04 < bridge> that declares a config variable without limits 18:05 < bridge> Seems kinda confusing, also shouldn't `sv_port` have a limit in this case? e.g. 1-65535 18:06 < bridge> do pr, get fame 18:08 < bridge> Would be cleaner to use `INT_MIN` and `INT_MAX` instead of `0` for variables without limits 18:08 < bridge> would be cleaner to have proper type support 😬 18:08 < bridge> NonZerou16 18:10 < bridge> Also, the server doesn't seem reachable when you use `sv_port -1000`, no idea what port it tries to bind to 18:12 < bridge> Lol wut 18:12 < bridge> Tbh sound is already great in factorio 18:12 < bridge> what xd 18:12 < bridge> Ah, obviously I should just literally connect to `localhost:-1000` and that works?? :monkalaugh: 18:12 < bridge> :poggers2: 18:12 < bridge> `resolved connect address 'localhost:-1000' to [::1]:64536` facinating 18:13 < bridge> idk if its in rust source but rust defines u64::MAX to -1 18:13 < bridge> xd 18:13 < bridge> atleasdt its what rust-analyzer hover showed lol 18:13 < bridge> try one that overflows u16 to 0 18:14 < bridge> or to a used port 18:14 < bridge> it's just cast to a u16 18:14 < bridge> ```rust 18:14 < bridge> impl u64 { 18:14 < bridge> uint_impl! { 18:14 < bridge> Self = u64, 18:14 < bridge> ActualT = u64, 18:14 < bridge> SignedT = i64, 18:14 < bridge> NonZeroT = NonZeroU64, 18:14 < bridge> BITS = 64, 18:14 < bridge> MAX = 18446744073709551615, 18:14 < bridge> rot = 12, 18:14 < bridge> rot_op = "0xaa00000000006e1", 18:14 < bridge> rot_result = "0x6e10aa", 18:14 < bridge> swap_op = "0x1234567890123456", 18:14 < bridge> swapped = "0x5634129078563412", 18:14 < bridge> reversed = "0x6a2c48091e6a2c48", 18:14 < bridge> le_bytes = "[0x56, 0x34, 0x12, 0x90, 0x78, 0x56, 0x34, 0x12]", 18:14 < bridge> be_bytes = "[0x12, 0x34, 0x56, 0x78, 0x90, 0x12, 0x34, 0x56]", 18:14 < bridge> to_xe_bytes_doc = "", 18:15 < bridge> from_xe_bytes_doc = "", 18:15 < bridge> bound_condition = "", 18:15 < bridge> } 18:15 < bridge> widening_impl! { u64, u128, 64, unsigned } 18:15 < bridge> midpoint_impl! { u64, u128, unsigned } 18:15 < bridge> } 18:15 < bridge> ``` 18:15 < bridge> i wonder what the macro does 18:15 < bridge> uff the rust png crate compresses extremly bad 18:15 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1203025719798796378/image.png?ex=65cf9802&is=65bd2302&hm=3274a5414bf91da3cc57b7bcfafce1a546e179d9c7d6a442ea5659554357462f& 18:15 < bridge> someone expert? 18:15 < bridge> so 0 will let the OS select a port 18:15 < bridge> and every other port is just that modulo 65536 18:15 < bridge> `E server: couldn't open socket. port 64536 might already be in use` looks like it does module 18:15 < bridge> that font color kills me 18:15 < bridge> it's the type cast that does the implicit modulo 18:15 < bridge> we're putting it into a u16 somewhere 18:15 < bridge> our int 18:16 < bridge> Yeah, `NETADDR` uses `short` 18:16 < bridge> a C style cast from uint to int is not ub right? 18:16 < bridge> whats ub is overflows 18:16 < bridge> man where is voxel when u need him xd 18:16 < bridge> i wonder if we can find any under or overflows 18:17 < bridge> @jupeyy_keks try https://github.com/shssoichiro/oxipng 18:17 < bridge> uint to int is fine, I think 18:17 < bridge> -o max 18:17 < bridge> @pipou_tw do you remember what optimizations you ran on top of arctic frost? 18:17 < bridge> 18:17 < bridge> like any optimizer that uses a higher compression level? 18:18 < bridge> ```rust 18:18 < bridge> // Used because the `?` operator is not allowed in a const context. 18:18 < bridge> macro_rules! try_opt { 18:18 < bridge> ($e:expr) => { 18:18 < bridge> match $e { 18:19 < bridge> Some(x) => x, 18:19 < bridge> None => return None, 18:19 < bridge> } 18:19 < bridge> }; 18:19 < bridge> } 18:19 < bridge> ``` 18:19 < bridge> lol 18:19 < bridge> is it blazingly fast? 18:19 < bridge> 18:19 < bridge> i am just impressed that an embedded deflate compression beats the png encoder of rust's png crate xD 18:19 < bridge> allegedly the fastest i could find in rust 18:19 < bridge> so either that map resources were compressed with some expensive optimization or the compression sucks hard 18:19 < bridge> maybe png is made to be fast and processing pngs? not compressing idk 18:19 < bridge> make a pr 18:19 < bridge> (embedded tw map images) 18:20 < bridge> normally png has some optimizations for better results, e.g. transforming the image in a lossless way, and using zopfli i get insane size diffs 18:21 < bridge> I have no idea what you are talking about 18:21 < bridge> ``` 18:21 < bridge> Optimizing Santa_Factory1.png 18:21 < bridge> Input size: 528347 (515K) 18:21 < bridge> Result size: 74757 (73K). Percentage of original: 14.149% 18:21 < bridge> ``` 18:21 < bridge> 14% of original xd 18:21 < bridge> do you use some kind of map optimizer tool? 18:21 < bridge> serde also uses a try macro because it was faster 😦 18:21 < bridge> No, why 😮 18:22 < bridge> because it compiles faster* or it is faster at runtime? 18:22 < bridge> iirc serde does the impossible to compile fast 18:22 < bridge> faster at runtime 18:22 < bridge> (but also at compile-time) 18:22 < bridge> what's the asterisk doing there? 🙂 18:22 < bridge> @jupeyy_keks oxipng uses zopfli 18:22 < bridge> `oxipng = { version = "9.0", features = ["parallel", "zopfli", "filetime"], default-features = false }` 18:22 < bridge> i am experimenting with how a map format would look like if it could have other compression algorithms and other benefits like not storing images inside the map itself. 18:22 < bridge> 18:22 < bridge> I was just wondering why arctic frost is pretty good compression wise 18:23 < bridge> nice, but zopfli is very very slow, i'd like to have a good default one 18:23 < bridge> but still maybe nice as a "optimized" save or smth 18:23 < bridge> u want good compression or fast xd 18:23 < bridge> i want one that is fast, but not as bad as the png crate xD 18:23 < bridge> I reduce the image size the most I can 18:23 < bridge> [dependencies] 18:23 < bridge> zopfli = { version = "0.8.0", optional = true, default-features = false, features = ["std", "zlib"] } 18:23 < bridge> rgb = "0.8.36" 18:23 < bridge> indexmap = "2.0.0" 18:24 < bridge> libdeflater = "1.19.0" 18:24 < bridge> log = "0.4.19" 18:24 < bridge> bitvec = "1.0.1" 18:24 < bridge> rustc-hash = "1.1.0" 18:24 < bridge> which cant even beat tw's embedded images 18:24 < bridge> zopfli is optional 18:24 < bridge> which uses normal zlib 18:24 < bridge> with zopfli i get: 18:25 < bridge> old: 18:25 < bridge> 1,7 MiB (1.759.726) 18:25 < bridge> 18:25 < bridge> new: 18:25 < bridge> 1,1 MiB (1.116.559) 18:25 < bridge> less impressive than i thought tbh 18:25 < bridge> :lol: 18:26 < bridge> Maybe it depends on how the image is rendered (in graphics softwares) 18:26 < bridge> that's file size 18:27 < bridge> @pipou_tw but thanks anyway 18:27 < bridge> with oxipng? 18:27 < bridge> i will try that now 18:27 < bridge> without zopfli tho 18:27 < bridge> gogogo 18:28 < bridge> maybe its meant to be fast 18:28 < bridge> cuz mt 18:28 < bridge> i try png with compression best now first 18:28 < bridge> 1,4 MiB (1.460.418) 18:28 < bridge> measure runtime 18:28 < bridge> well at least better than default 18:28 < bridge> ah yeah should add that too, true 18:32 < bridge> btw does it have hidden c libs? xd 18:32 < bridge> zopfli would probably add one 18:38 < bridge> @ryozuki 18:38 < bridge> 18:38 < bridge> ``` 18:38 < bridge> 18:38 < bridge> ### original teeworlds map file: 18:38 < bridge> 1.7 MiB (1.759.726) 18:38 < bridge> 18:38 < bridge> ### crate png: 18:38 < bridge> 18:38 < bridge> - best compression 18:38 < bridge> encoding images to png took 0.80s / 798ms / 798ms global 18:38 < bridge> 1.4 MiB (1.460.418) 18:39 < bridge> 18:39 < bridge> - non specified: 18:39 < bridge> encoding images to png took 0.04s / 38ms / 38ms global 18:39 < bridge> 2.9 MiB (3.082.201) 18:39 < bridge> 18:39 < bridge> ### png non specified + oxipng: 18:39 < bridge> encoding images to png took 5.40s / 5403ms / 5403ms global 18:39 < bridge> 1,0 MiB (1.074.655) 18:39 < bridge> ``` 18:39 < bridge> 18:39 < bridge> the result is insane, better than zopfli with --keepcolortype 18:39 < bridge> 18:39 < bridge> so i guess it might change the color types of the pngs 18:39 < bridge> 18:39 < bridge> 18:39 < bridge> but runtime is bad XD 18:39 < bridge> xd 18:42 < bridge> maybe i should try a different format than png 18:43 < bridge> webp 18:48 < bridge> maybe jpeg xl? 18:48 < bridge> it has a lossless mode 18:49 < bridge> Mh but it has no browser support 18:50 < bridge> ah 18:50 < bridge> Wouldn't be horrible, but for tw probably not nice xd 18:57 < bridge> in this random size benchmark i found on (https://siipo.la/blog/whats-the-best-lossless-image-format-comparing-png-webp-avif-and-jpeg-xl) 18:57 < bridge> 18:57 < bridge> https://siipo.la/app/uploads/lossless-comparison-median-file-size-1xritv3md2goacqf6n9jplnxd-800x596.webp?ver=97874f66 18:57 < bridge> 18:57 < bridge> jpg xl also wins xd 18:57 < bridge> https://siipo.la/app/uploads/lossless-comparison-median-file-size-1xritv3md2goacqf6n9jplnxd-800x596.webp?ver=97874f66 18:57 < bridge> in this random size benchmark i found on (https://siipo.la/blog/whats-the-best-lossless-image-format-comparing-png-webp-avif-and-jpeg-xl) 18:57 < bridge> 18:58 < bridge> jpg xl also wins xd 18:58 < bridge> https://siipo.la/app/uploads/lossless-comparison-median-encoding-time-no-error-bars-1xritv3md2goacqf6n9jplnxd-800x522.webp?ver=ca79d534 18:58 < bridge> this makes me nervous tho 18:58 < bridge> webp wins there ^^ 18:59 < bridge> oxipng is already very slow for me xd, how could it win here 18:59 < bridge> i probably need one with default settings xd 19:00 < bridge> can someone help me ? 19:00 < bridge> i like if size is small as optional optimization 19:00 < bridge> 19:00 < bridge> but default should be fast 19:02 < bridge> you could look around in the code for other places that do it 19:04 < bridge> i founded this, but i don't get how it's working 19:04 < bridge> ```cpp 19:04 < bridge> int ColorFeet = ColorHSLA(m_ColorFeet).UnclampLighting().Pack(ms_DarkestLGT7); 19:04 < bridge> ``` 19:04 < bridge> and why the color is not an unsigned int ? 19:10 < bridge> https://www.telegraph.co.uk/news/2024/02/01/german-kebab-10-euros-cost-of-living-crisis/ 19:10 < bridge> lmao 19:13 < bridge> 10€ 😮 19:22 < bridge> here most are 5-6 19:23 < bridge> I think my last kebabs were also 5-6€ 19:57 < bridge> 10 euro kebab??? blasphemous 19:57 < bridge> Germany is a failed state 19:59 < bridge> please draw time vs size to find optimal one 20:01 < bridge> Teeworlds has an allergy to unsigned types 20:02 < bridge> not so easy to find a good one in internet xd 20:04 < bridge> You want something like this indeed, you just don't need to unclamp 20:06 < bridge> For 0.7 clients you'll need to pack with `ms_DarkestLGT7` for 0.6 ones you need to pack with a different value I don't remember 20:07 < bridge> I'm still not a huge fan of the colors even after my very own rewrite. I should have created a new class `ColorTee` and `ColorTeeSixup` for clamped ones 20:47 < bridge> Ehh 20:47 < bridge> dont know how useful that would actually be 20:48 < bridge> @jupeyy_keks store layers as images as well :D 20:48 < bridge> ok this is just stupid now 20:50 < bridge> yeah would be cool^^ 21:05 < bridge> hello dear jan38 21:55 < bridge> in a town its indeed 5€, whoever charges that much on kebab should be sentenced 22:01 < bridge> minimum i had a kebab for was 3€ 22:12 < bridge> INDEED 5€ ? i live in a town with 20K citizens, i pay almost 8 22:24 < bridge> https://github.com/n7space/aerugo 22:26 < bridge> This project is developed as part of the European Space Agency activity Evaluation of Rust Usage in Space Applications by Developing BSP and RTOS Targeting SAMV71 22:27 < bridge> :poggers2: 22:57 < bridge> :kek: :kek: :kek: :kek: :kek: :kek: :kek: :kek: v 22:57 < bridge> :kek: :kek: :kek: :kek: :kek: :kek: :kek: :kek: 22:58 < bridge> @heinrich5991 ehrm, askshually it was my 2nd pr :pepeW: 22:58 < bridge> :AFpikasip: 22:58 < bridge> first one was about custom browser protocol 22:58 < bridge> ah 22:58 < bridge> github said "first-time contributor" 22:59 < bridge> it wasnt merged 22:59 < bridge> i think since the PR was closed without merging? 22:59 < bridge> ye 22:59 < bridge> oh fuck, i didnt check checkboxes 22:59 < bridge> :feelsbadman: 23:00 < bridge> could've get it merged if you checked them ;( 23:00 < bridge> yea 23:00 < bridge> thats probably why it was closed 23:00 < bridge> surely! 23:07 < bridge> will increase compile times though. dont think its worth.