02:36 < ws-client> @learath2 maps as json is called MapDir ``cargo install twmap-tools`` ``twmap-edit --mapdir dm1.map out_folder_name`` 03:10 < bridge> nameplates pr has 60 review comments :justatest: 03:26 < bridge> sounds fun 03:29 < bridge> #9284 03:29 < bridge> https://github.com/ddnet/ddnet/pull/9284 03:57 < bridge> can anyone answer while i'm making the changes. timezone and stuff 03:57 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1311888739638972457/image.png?ex=674a7f19&is=67492d99&hm=d6c67f35283788c44e1217bd72e8acdd5c0856ee9571a2a4b41ad1a7d1b9dfb7& 03:57 < bridge> :greenthing: am i encouraged to just use classes instead 03:58 < bridge> i don’t understand why structs shouldn’t be used 03:58 < bridge> idiomatically even if access specifiers are different by default there is definitely a contextual difference between structs and classes imo 03:59 < bridge> structs make me think it’s fairly portable data, maybe a POD type 03:59 < bridge> class makes me think generics, methods, private machinations 03:59 < bridge> i don't either, but i tend to follow reviewers. but i'm more confused about whether i need classes or he wants me to factor out the variables into the parent class directly 04:00 < bridge> well you would need to prefix it with S if you were to keep it a struct 04:00 < bridge> but yeah 04:00 < bridge> idk the context that much 04:00 < bridge> :pepeW: maybe i'll just wait for robyt3 04:01 < bridge> gotta figure out the cursor position thing. 04:01 < bridge> well only he knows what he means 04:01 < bridge> i definitely think you should group your data tho 04:01 < bridge> ye. i'll just change it to class for now until he says other things 04:02 < bridge> i do believe double is reasonable here 04:02 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1311890013763403827/image.png?ex=674a8049&is=67492ec9&hm=b5fbd5208914e14879bd49860aa1e0a767820220148e35ae69d2334c19820bbb& 04:02 < bridge> i do believe double is reasonable here tho 04:02 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1311890013763403827/image.png?ex=674a8049&is=67492ec9&hm=b5fbd5208914e14879bd49860aa1e0a767820220148e35ae69d2334c19820bbb& 04:03 < bridge> weird coincidence but i guess i’m in the midst of transcribing you rn https://youtu.be/X2FWgkcTc4U?si=Hy94tq1b72q78BBn 04:03 < bridge> or maybe it isn’t weird and i’m just a nerd 04:04 < bridge> :justatest: 04:04 < bridge> i think as long as there is any reason not to use float then yeah 04:04 < bridge> use the double 04:04 < bridge> i'd rather to be freddy the fazbear 04:04 < bridge> the guy on the cover isn’t fred fwiw 04:04 < bridge> if you’re being typical chinese rn 04:04 < bridge> :justatest: 04:05 < bridge> :greenthing: well that's the only thing that is visible unless you want me to check lyrics or something 04:05 < bridge> no lyrics 04:05 < bridge> so just the vibe 04:05 < bridge> the song is just called fred 04:05 < bridge> yeah 04:05 < bridge> fair enough 04:07 < bridge> ~~oh you don't want to hear me ranting about how china is overdoing their welcome to africa countries for allying~~ 04:07 < bridge> even if i did want to 04:07 < bridge> definitely not here 04:08 < bridge> ye, still figuring out the cursor drifting 04:08 < bridge> even still no reason to hate on an american-born black guy who has nothing to do with any of that 04:08 < bridge> i don't 04:08 < bridge> :brownbear: 04:10 < bridge> what even is the pr 04:10 < bridge> cursor drifting 04:10 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1311891936709185556/image.png?ex=674a8213&is=67493093&hm=e4c0a6b1bc701fa473a2cb4797ac1880fa11d59916d76a10e994d41eb21faa33& 04:10 < bridge> is this shadowing? 04:10 < bridge> is there another TargetPos? 04:10 < bridge> just these two 04:11 < bridge> oh i didnt see 04:11 < bridge> no 04:11 < bridge> if the outer scoped one was defined before that branch then yes 04:11 < bridge> if the outer scoped one was declared before that branch then yes 04:11 < bridge> oh cool 04:11 < bridge> C# doesn't like that i think i'm just rusty on C++ 04:11 < bridge> C# doesn't like that, i think i'm just rusty on C++ 04:11 < bridge> lol yeah 04:12 < bridge> it was like this but robyt3 want it scoped 04:12 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1311892482627469342/image.png?ex=674a8295&is=67493115&hm=c6507a6cc7f94164845877168998b145934dbcd24ae44499699879670b885585& 04:12 < bridge> i think you’d get a warning there anyway 04:12 < bridge> well MSVC doesn't really give a lot of warning and i failed too many linux builds bcs of MSVC 04:12 < bridge> :cammo: 04:13 < bridge> it's the only compiler i have rn tho 04:13 < bridge> dont use msvc then 04:13 < bridge> the first is better bcs you make one less object 04:13 < bridge> it's just habit of setting up msvc i guess 04:13 < bridge> install msys2 -> pacman -S -> win 04:14 < bridge> it really is very good 04:14 < bridge> idk why i really didn't like msys2 04:14 < bridge> but that was like 15 years ao 04:14 < bridge> but that was like 15 years ago 04:15 < bridge> idk if the project is that old 04:15 < bridge> what were ur qualms 04:15 < bridge> i forgot. hence the idk why part 04:16 < bridge> yeah 04:17 < bridge> well it’s noticeably better now than it was when i started using it in like 2019 04:17 < bridge> pacboy makes environments/packages easier 04:18 < bridge> it started that late huh 04:18 < bridge> 2019 is like after my college already. weird. 04:18 < bridge> oh wait, read that wrong 04:19 < bridge> disregard that 04:22 < bridge> i think it was from 2017 04:23 < bridge> https://web.archive.org/web/20170207113504/https://www.msys2.org/ 04:23 < bridge> nostalgic 04:23 < bridge> oh right, it's just showing cursor during spectating 04:24 < bridge> you want it to show? 04:24 < bridge> wanted it a few years back, i've implemented this three times already, never got to the place where it was useable. ye 04:25 < bridge> honestly the original thought is to catch cheaters more obviously 04:25 < bridge> and it’s drifting? 04:26 < bridge> ye, when zooming it mismatch the local cursor 04:26 < bridge> ye, when zooming + dyncam it mismatch the local cursor 04:26 < bridge> haven't dive deeper but i'm afraid that we are sending the wrong world position in the first place. 04:27 < bridge> i'm just hoping i did something wrong when displaying the cursor 04:28 < bridge> i feel like this was talked about a few months ago 04:28 < bridge> but idr 04:28 < bridge> ye 04:28 < bridge> if i know how to interpolate, this would be a much easier pr a few years ago when it was first suggested 04:28 < bridge> with all the new exprotocol and zooming stuff 04:28 < bridge> is cursor relative to player or absolute world units? i genuinely dont know 04:29 < bridge> a bit tougher 04:29 < bridge> to interpolate you’d need a second set of coords 04:29 < bridge> cursor is screenspace locally but it was scaled somewhere to worldspace and sent to the server 04:29 < bridge> the interpolation is done already. 04:29 < bridge> why should it be worldspace 04:29 < bridge> no idea. but it is what it is. not my fault 04:30 < bridge> :kekw: 04:30 < bridge> that just seems like a great way to break physics as you move further away from the origin lol 04:30 < bridge> even when i started working on it i always assumed it was screenspace, then i was corrected. 04:31 < bridge> not like that doesn’t already happen 04:31 < bridge> the sheer thought of we are having different grid precesions in different zoom levels scares me 04:31 < bridge> 04:32 < bridge> ya 04:32 < bridge> :justatest: 04:36 < bridge> need to make a map that only works if you zoom right 04:36 < bridge> ah damn. i think i run into the same issue as souly 04:36 < bridge> do i just friend it after it was changed to class? 04:36 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1311898627236696218/image.png?ex=674a884e&is=674936ce&hm=6d3b1ee1ec2c1f8296499a437475dff16508e03db07ee911945a3d27268330ac& 04:37 < bridge> I guess the world space cursor makes sense for telecursor 04:38 < bridge> unless the camera position is also sent when you're in spec or pause? 04:38 < bridge> wDyM tElEcUrSoR 04:38 < bridge> i'm so outdated on ddnet features 04:39 < bridge> it's a practice mode thing 04:39 < bridge> thank god 04:40 < bridge> cuz i just found out we are not sending cursor positions accurately unless you click or move. if we have gameplay features relying only on cursor positions i'm gonna scream 04:50 < bridge> Why friend when it's already in the class 04:50 < bridge> CGameClient doesn't have access to private members of nested class 04:51 < bridge> im great at this 04:51 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1311902356866338856/image.png?ex=674a8bc7&is=67493a47&hm=fa0b1f56b5efdc0576bd8e1ac93e9b1bba72711c40aeac4b7e414296e0f0bea3& 04:52 < bridge> Could just make them public if that's necessary i guess 04:53 < bridge> You still need to use m_cursorinfo.variable to access them 04:53 < bridge> is there a verdict on that? 04:53 < bridge> no ones said they dont want this 04:53 < bridge> apart from myr 04:53 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1311902836036075520/image.png?ex=674a8c3a&is=67493aba&hm=42b3b498742a1559e229bf5cc13c22351495fede65204552c95a28fcd663e804& 04:53 < bridge> i'm doing this currently 04:53 < bridge> its just that i fail to make good code 04:53 < bridge> whats this 04:54 < bridge> :nouis: is it ugly or you are just asking what pr i'm working on 04:54 < bridge> doesnt look ugly? 04:54 < bridge> i cant say i dont know 04:54 < bridge> what is it are u working on 04:54 < bridge> just making sure 04:54 < bridge> #9292 04:54 < bridge> https://github.com/ddnet/ddnet/pull/9292 04:54 < bridge> I would just make the variables public rather than getters 04:55 < bridge> also you arent meant to use "Get" for getters 04:55 < bridge> should just be Weapon() 04:55 < bridge> etc etc 04:55 < bridge> was wondering about that thx 04:55 < bridge> i will as soon as robyt3 say just make it class 04:56 < bridge> rn i'm trying to implement a dirty server side cursor position lol 04:56 < bridge> I mean public inside this class om screenshot 04:56 < bridge> just to see what is happening with that drifting 04:57 < bridge> o thats cool 04:57 < bridge> why do you need a seperate class? 04:57 < bridge> i know. i can do that later and remove the getters 04:57 < bridge> robyt3 says not to use struct 04:57 < bridge> why do you need a seperate struct 04:57 < bridge> and it is too many things to just dump into cgameclient i feel like 04:58 < bridge> it is nested 04:58 < bridge> oke ¯\_(ツ)_/¯ 04:58 < bridge> i was just following other codes tbh 04:58 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1311904102086869013/image.png?ex=674a8d67&is=67493be7&hm=abcec2c7a0c468e585ee3812635b1b5f5c01490cdf0108a77d02fe4fff977840& 05:02 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1311905093829922866/image.png?ex=674a8e54&is=67493cd4&hm=fab06285917cdc17fd7e5f81e10bdfa71c5f9edc7d3597e081b8ca06bfc997f9& 05:02 < bridge> 😢 05:03 < bridge> oh dear i have to rename like 20 symbols 05:03 < bridge> poor vscode is gonna struggle 05:03 < bridge> who was the guy who said this was a crutch 05:03 < bridge> yeah im not doing this manually x-x 05:04 < bridge> @kebscs bad news 05:04 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1311905636258283530/image.png?ex=674a8ed5&is=67493d55&hm=f3f0228c11175af030e667a283e59179fdc77950b82f3bc50cccaffe0cd2e198& 05:04 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1311905698241708073/image.png?ex=674a8ee4&is=67493d64&hm=c86ffb0280d4becfd74681272c3ec6c10b5ad67a3ac47c11daee19a092551ac2& 05:05 < bridge> spec cursor is correct, the position sent to server is wrong :justatest: 05:06 < bridge> spec cursor is correctly displaying server cursor position, the position sent to server is wrong :justatest: 05:06 < bridge> im curious how this interacts with `tc_improve_mouse_precision` 05:07 < bridge> tf is that 05:07 < bridge> tc... tater client? 05:07 < bridge> it normalizes your mouse cursor to 1000 distance 05:07 < bridge> specificially for me because i play on low sense 05:07 < bridge> specificially for me because i play on low max distance 05:07 < bridge> damn it 05:07 < bridge> i think it will work fine 05:07 < bridge> well i guess it'll just get clamped 05:07 < bridge> mite look a bit weird 05:07 < bridge> where does it read the data for local clients from? 05:08 < bridge> local cursor 05:08 < bridge> do you read from input? 05:08 < bridge> yes 05:08 < bridge> oke 05:08 < bridge> local cursor is not touched 05:08 < bridge> then thatll show wrong 05:08 < bridge> ;--; 05:08 < bridge> from mouse input 05:08 < bridge> also tater client will deal with it. this is purely client side anyway 05:08 < bridge> `m_aMousePos[g_Config.m_ClDummy]` 05:09 < bridge> it's just spectating a tater client will be weird 05:09 < bridge> or `m_aInputData[g_Config.m_ClDummy]` 05:09 < bridge> im not worried about how other people see taters 05:09 < bridge> its just yourself 05:09 < bridge> then tater will deal with it 05:09 < bridge> like the tater client will implement it their way if they were to implement it 05:09 < bridge> this is ddnet client 05:10 < bridge> (it should be this one) 05:10 < bridge> Also are targetxy still scaled by zoom? Someone fix that 05:10 < bridge> fine i'll check what ddnet is doing 05:10 < bridge> yes and it is scaled wrong 05:10 < bridge> (it should be this one) 05:10 < bridge> (or just read it from mpclients[clientid].mousepos then that works eveywhere) 05:10 < bridge> o yeah how u gonna deal with that 05:10 < bridge> i don't 05:10 < bridge> nice 05:11 < bridge> yes, make a new net msg for mouse position pls that has the mouse position and the zoom 05:11 < bridge> let's just say out of scope for this pr 05:11 < bridge> i feel like the zoom thing should be fixed first x-x 05:11 < bridge> if that was fixed the spec cursor will just show whatever is sent by the server 05:11 < bridge> Gn now tho 05:11 < bridge> night night 05:12 < bridge> we can make it screenspace (which i was doing until i found out we are using world space cursor) 05:12 < bridge> you could find the max distance and normalize that to normal zoom 05:12 < bridge> server doesn't have max distance yet 05:12 < bridge> server does? 05:12 < bridge> clients dont get them 05:12 < bridge> but u can work it out 05:12 < bridge> it does? 05:12 < bridge> like mouse distance or view distance 05:13 < bridge> someone in an fng server commented about my insanley low max mouse distance 05:13 < bridge> they just saw your cursor 05:13 < bridge> ¯\_(ツ)_/¯ 05:13 < bridge> as in they did work it out 05:13 < bridge> :justatest: 05:13 < bridge> i guess so 05:14 < bridge> i like how vscode asks me if it hasnt accidently tried to replace more things than it has 05:14 < bridge> but i dont even check and just press yes cuz its always right x-x 05:15 < bridge> @tsfreddie would cl_show_hook_coll_other 2 not do what u want 05:15 < bridge> actually 05:15 < bridge> for cheat detection at least 05:16 < bridge> cheat detection wasn't really possible anyway, so i shifted to make it at least look good for normal players 05:18 < bridge> I guess dyncam extra range isn't scaled by zoom 05:19 < bridge> it really shouldn't be scaled imho 05:19 < bridge> it really shouldn't be scaled in the first place imho 05:59 < bridge> :brownbear: i hate timezone 05:59 < bridge> now i need to wait a day for comments on pr and stuff 06:03 < bridge> mood 06:03 < bridge> european morning 06:04 < bridge> @tsfreddie `tc_improve_mouse_precision` scales mouse position such that the max mouse distance looks like 1000 if it is not already greater 06:04 < bridge> i used to use a fixed factor but when coming to put it into tc we came up with a better... way 06:05 < bridge> it's probably a interpretation thing 06:05 < bridge> by fixed scale i mean scaling it not just normalize it 06:05 < bridge> well it does normalize it 06:05 < bridge> before then multiplying it by a facotr based on your max mouse distance 06:05 < bridge> ah 06:05 < bridge> before then multiplying it by a factor based on your max mouse distance 06:06 < bridge> before then multiplying it by a factor based on your max mouse distance (such that it goes from 0 to 1000) 06:06 < bridge> either way it doesn't really matter how tater does it tho 06:06 < bridge> before then multiplying it by a factor based on your max mouse distance (such that it goes from 0 to 1000) (TODO: make it work with min mouse distance) 06:06 < bridge> ddnet need to decide on the route to go for 06:06 < bridge> cuz if we normalize it, we then need another way to send cursor position for spec cursor to work properly 06:07 < bridge> or we can decide spec cursor is not worth the precision trade off and normalize it and scape the spec cursor pr 06:07 < bridge> any way is okay but we (as in everyone here) gotta settle on one idea 06:08 < bridge> :kekw: 06:08 < bridge> i was earlier concerned about if you spectate yourself and then move your mouse 06:08 < bridge> you would see your normalized mouse 06:08 < bridge> which means this probably will go unfixed for quite a while 06:08 < bridge> again, i didn't change anything about local cursor and tater client does not affect ddnet client 06:08 < bridge> the spec cursor pr is purely client-side 06:09 < bridge> no but you may pull data for local clients from a place where its already been normalized 06:09 < bridge> or you think i stored local cursor positions in demo or something 06:10 < bridge> i did not touch local cursor 06:10 < bridge> 🤦‍♂️ 06:10 < bridge> what ddnet used to look like after that pr it will still look like that 06:10 < bridge> ill just look at what u did 06:10 < bridge> 06:10 < bridge> there is no "spectate yourself" you know 06:11 < bridge> press spectate then click 06:11 < bridge> spectate yourself is just spectating the server tee of you 06:11 < bridge> which is not local 06:11 < bridge> it is yourself but it is not local 06:11 < bridge> atleast for the angle is uses local 06:11 < bridge> atleast for the mouse position is uses local 06:11 < bridge> ug syfrkg lrf akdif 06:11 < bridge> ye 06:11 < bridge> atleast for the mouse position it uses local 06:11 < bridge> that means it doesn't use angle in qwertymak 06:12 < bridge> :nouis: 06:12 < bridge> (angle is just a property of a mouse position, its never stored anywhere) 06:12 < bridge> the angle u see on urself when spectating is random shit 06:12 < bridge> once in specview the data fully comes from server 06:12 < bridge> so in spec cursor there is no spectating yourself i guess 06:13 < bridge> you cant spectate yourself? 06:13 < bridge> thats weird 06:13 < bridge> you can 06:13 < bridge> but it is not local 06:13 < bridge> it just renders the server cursor position 06:13 < bridge> when you are in spectate mode 06:13 < bridge> (you cant click onto yourself when spectating) 06:14 < bridge> just pause and use right shift 06:14 < bridge> 06:14 < bridge> o that works? 06:14 < bridge> it does :D 06:14 < bridge> it does use local mouse position tho 06:14 < bridge> im on a server with 300 ping 06:14 < bridge> fine let me check 06:15 < bridge> I've been sitting in freeze for two hours 06:15 < bridge> have u tried space heater 06:15 < bridge> and fikmesån joined 06:15 < bridge> did not expect that 06:15 < bridge> stop worry about weird stuff 06:15 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1311923565993398302/2024-11-29_13-15-21.mp4?ex=674a9f88&is=67494e08&hm=1f7695bebc308e6f7ef119dfd142cd438337aeb37e8ccbd6c5fdd22684579a2a& 06:15 < bridge> wait why are you doing inerpolation yourself 06:16 < bridge> doesnt prediction do that already? 06:16 < bridge> for testimg 06:16 < bridge> ? 06:16 < bridge> extrapolation on cursor? no thanks 06:16 < bridge> even linear interpolation looks bad 06:17 < bridge> also sample points doesn't tell you whether the cursor moves. server can say cursor position x is 2 2 5 5 9 9, and linear interp will just jitter each step. 06:17 < bridge> and it does say that because we don't send cursor position every tick at 50hz 06:18 < bridge> we get jittery mouse by default 06:18 < bridge> wait mouse isnt interpolated at all 06:19 < bridge> would it be possible to shove what you have into prediction 06:19 < bridge> of course it isn't... mouse cursor position isn't even a teeworlds thing 06:19 < bridge> we added it in ex protocol 06:19 < bridge> no 06:19 < bridge> extrapolation on mouse cursor will just make it fly out of screen most of the time 06:20 < bridge> is it not? 06:20 < bridge> i thought angle was never sent 06:20 < bridge> it was always mouse position 06:20 < bridge> the infclass selection wheel works in 0.7 06:20 < bridge> it's the other way around i think 06:20 < bridge> ? 06:21 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1311924898767310859/image.png?ex=674aa0c6&is=67494f46&hm=cfaa675db33960f4e8c5b464ae4f9ad333cdeab0ca153ca4707f4947ea292506& 06:21 < bridge> https://chillerdragon.github.io/teeworlds-protocol/06/snap_items.html#obj_character_core 06:21 < bridge> Freddie was faster but yes 06:21 < bridge> ghasp! 06:21 < bridge> wait why 06:21 < bridge> i man 06:21 < bridge> i mean 06:21 < bridge> even in 0.7 06:21 < bridge> it is still angle 06:22 < bridge> why not? cursor position is not used for anything on client-side 06:22 < bridge> ive never seen anywhere angle used its always a mouse position turned into an angle where needed 06:22 < bridge> literally nothing in vanilla teeworlds calls for a target position client side 06:23 < bridge> it sends a single low precision angle just to show the angle player is pointing at 06:23 < bridge> saves a varint i guess 06:23 < bridge> but 0.7 infclass wheel works 06:23 < bridge> that's server side? 06:23 < bridge> Based on the angle I guess 06:24 < bridge> So even if your cursor is not far enough distance wise it should still select 06:24 < bridge> but you cant select it unless your ein dyn 06:24 < bridge> Yes the wheel is server side 06:24 < bridge> but you cant select it unless your mouse is far enough 06:24 < bridge> idk how client side map reads angle 06:24 < bridge> Weird 06:24 < bridge> server does have player mouse position 06:24 < bridge> client only sees other players angle 06:24 < bridge> idk what's bothering you lol 06:25 < bridge> https://chillerdragon.github.io/teeworlds-protocol/06/snap_items.html#obj_character 06:25 < bridge> i thought it was angles all the way down 06:25 < bridge> There is HookX 06:25 < bridge> i thought it was mouse positions all the way down 06:25 < bridge> But that’s only on hook I guess 06:25 < bridge> that's kinda needed for pred 06:25 < bridge> i think 06:25 < bridge> and animation probably 06:25 < bridge> pick an angle or mouse position dont use both D: 06:25 < bridge> i would do the same to save bandwidth tbh 06:26 < bridge> Wait I got lost 06:26 < bridge> vanilla teeworlds seems to care a lot about each byte. until 0.7 06:26 < bridge> The client sends its mouse pos as coordinates 06:26 < bridge> But the server does not 06:26 < bridge> So the server knows the client taget x and y https://chillerdragon.github.io/teeworlds-protocol/06/snap_items.html#obj_player_input 06:26 < bridge> how did chiller got lost 06:26 < bridge> then how does mr tsfreddies thing work 06:26 < bridge> But the client does not know the other players target x and y 06:26 < bridge> bruh 06:26 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1311926321374560297/image.png?ex=674aa219&is=67495099&hm=429043c66d4468efcaa3024b25f42b4e4998a2a534c23b7f5c0f6706a4328100& 06:26 < bridge> 😢 06:27 < bridge> it's a ddnet thing 06:27 < bridge> i kinda hate this tbh. too many bandwidth used for not a lot 06:27 < bridge> i kinda hate this tbh. too much bandwidth used for not a lot for regular player 06:27 < bridge> i guess hook collision for other player is better? 06:28 < bridge> my first attempt at spec cursor is to just send target position per player. not per player^2. then this was added when i tried it the second time. 06:28 < bridge> this is my third time implementing spec cursor. now we have a weird cursor drifting bug 06:28 < bridge> :kekw: 06:29 < bridge> #3262 this feature started in 2020 bruh 06:29 < bridge> https://github.com/ddnet/ddnet/pull/3262 06:33 < bridge> 👀 06:34 < bridge> ```cpp 06:34 < bridge> int StrongWeakSpriteId; 06:34 < bridge> switch(Data.m_HookWeakStrong) 06:34 < bridge> { 06:34 < bridge> case TRISTATE::ALL: 06:34 < bridge> HookWeakStrongColor = color_cast(ColorHSLA(6401973)); 06:34 < bridge> StrongWeakSpriteId = SPRITE_HOOK_STRONG; 06:34 < bridge> break; 06:34 < bridge> case TRISTATE::SOME: 06:34 < bridge> HookWeakStrongColor = ColorRGBA(1.0f, 1.0f, 1.0f); 06:34 < bridge> StrongWeakSpriteId = SPRITE_HOOK_ICON; 06:34 < bridge> break; 06:34 < bridge> case TRISTATE::NONE: 06:34 < bridge> HookWeakStrongColor = color_cast(ColorHSLA(41131)); 06:34 < bridge> StrongWeakSpriteId = SPRITE_HOOK_WEAK; 06:34 < bridge> break; 06:34 < bridge> default: 06:34 < bridge> dbg_assert(false, "Invalid hook weak/strong state"); 06:34 < bridge> dbg_break(); 06:34 < bridge> } 06:34 < bridge> ``` 06:34 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1311928130784727053/image.png?ex=674aa3c8&is=67495248&hm=a5dd4304632ee2fac69d1f4690ed7d962c3647c8b0a880a0d45d615eb10f088f& 06:34 < bridge> bullshit 06:34 < bridge> doubting compiler is a sign of maturing programmer 06:35 < bridge> ~~and a sign of self reflection probably~~ 06:35 < bridge> i cant get theese errors in my compiler 06:36 < bridge> which is more annoying cuz github ci takes 5 years 06:36 < bridge> are you on windows? 06:36 < bridge> no B) 06:36 < bridge> :nouis: then you can probably match the ci 06:36 < bridge> enable all warnings and stuff 06:36 < bridge> yes but i just want to cmake .. build and be done 06:36 < bridge> ``` 06:36 < bridge> cmake -E env CXXFLAGS=-Werror cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -Werror=dev -DDOWNLOAD_GTEST=ON -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE=. .. 06:37 < bridge> cmake --build . --config Release --target everything 06:37 < bridge> ``` 06:37 < bridge> oh wait 06:37 < bridge> i am smort 06:37 < bridge> god its cold and im naked 06:37 < bridge> and im not gonna fix that 06:38 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1311929322143088772/image.png?ex=674aa4e4&is=67495364&hm=ad57ff3109705def9c3d00016916346a662b2dc66267f668b772c04af4b20744& 06:38 < bridge> yay i get anothjer bullshit error 06:38 < bridge> seems if dbg_assert(false) isnt assumed to always fail 06:41 < bridge> why do you do that to yourself 06:42 < bridge> 👀 also isn't tater lurking a few moments ago 06:42 < bridge> im too lazy to put on clothes 06:42 < bridge> Hi, you need something? :owo: 06:43 < bridge> just wondering about your thought on the cubic interp of mouse position 06:43 < bridge> there's a video in that pr 06:43 < bridge> Oh 06:43 < bridge> #9292 06:43 < bridge> https://github.com/ddnet/ddnet/pull/9292 06:44 < bridge> It looks good 06:44 < bridge> you told me to use some fancy interp and i did :kekw: 06:44 < bridge> Was it worth? 06:44 < bridge> kinda, but we found new bugs that kinda ruins everything 06:44 < bridge> That first video looks literally perfect 06:44 < bridge> The ground truth one makes more obvious 06:45 < bridge> Maybe that's just latency 06:45 < bridge> i didn't offset the latency and i couldn't be bothered with video editing 06:46 < bridge> honestly the key point is to not trust every sample the server send you cuz i found out client doesn't even send cursors regularly 06:46 < bridge> i have to throw away non-changing sample points for the cubic interp to work 06:46 < bridge> interesting 06:47 < bridge> so the entire thing is just guessworks now 06:47 < bridge> also #9294 might trigger you 06:47 < bridge> https://github.com/ddnet/ddnet/issues/9294 06:47 < bridge> :nouis: 06:47 < bridge> I had another idea a while ago but it's probably worse. You could just steal the interpolation from the angle of the tee and then use the mouse coordinates to determine the 1D magnitude of the distance and use some simpler interpolation than the cubic stuff 06:48 < bridge> i actually thought about that after implementing the interp, not sure what it would look like 06:48 < bridge> .e neither 06:48 < bridge> Me neither 06:49 < bridge> also the hook collision line is using normal interpolation it seems so it does jitter due to the non-changing samples 06:49 < bridge> I am deeply unhappy by the current state of the mouse protocol from client->server 06:49 < bridge> and they mismatch the cursor which is kinda bothering me 06:49 < bridge> we should change that 06:49 < bridge> I am deeply unhappy about the current state of the mouse protocol from client->server 06:49 < bridge> we should change that 06:49 < bridge> 😴 06:50 < bridge> we kinda need to change that before spec cursor 06:50 < bridge> Idk what the best way to fix it is 06:50 < bridge> cuz it implicate the camera mapping as well 06:50 < bridge> Send zoom somehow i guess 06:51 < bridge> i think the safest way is the worst way precision wise. just pretend zoom doesn't exists and we match teeworlds 06:51 < bridge> Sending the mouse as ints is actually also bad 06:51 < bridge> not the best way tho, but it is safe 06:52 < bridge> well everything is int in teeworlds for packing isn't it 06:52 < bridge> The server needs to know zoom for teleport commands, that's the whole reasons we're in this mess 06:53 < bridge> oh sweet teleport 06:53 < bridge> The server needs to know zoom for teleport commands, that's the whole reason we're in this mess 06:53 < bridge> i mean we could just revert to teeworlds or use some improved method for controls and send target position some other way 06:53 < bridge> wdym revert to teeworlds 06:54 < bridge> pretend zoom doesn't exists thing 06:54 < bridge> so the cursor kinda acts like screenspace cursor. 06:54 < bridge> Yeah but that's a regression for teleport commands 06:54 < bridge> I have that in tclient already 06:55 < bridge> It was doing that until semi recently 06:55 < bridge> if target position is used occasionally maybe we could just use a ex protocol for that 06:55 < bridge> what's wrong with sending zoom level 06:55 < bridge> then you need to send dyncam settings as well 06:55 < bridge> and do dyncam offset in server i think? 06:55 < bridge> Yeah this is why I haven't touched it 06:56 < bridge> I don't understand anything about dyncam because I don't use it 06:56 < bridge> how often do we use target position exactly in ddnet? 06:56 < bridge> teleport only 06:56 < bridge> then i don't see why we can't just make it special 06:56 < bridge> The client sends screen position for other stuff I think 06:57 < bridge> the client only start sending that after that ddnetcharacter change. someone said it is for hook collision 06:57 < bridge> When tater client update:please: 06:57 < bridge> i forgot if it is you or someone else 06:57 < bridge> Why so you need dyncam settings to calculate position 06:57 < bridge> For what? 06:58 < bridge> For mor fitures 06:58 < bridge> :justatest: 06:58 < bridge> i'm not exactly sure but dyncam seems to shift cursor positions 06:58 < bridge> Rotat hamer brokin 06:58 < bridge> i mean it's just #9294 06:58 < bridge> https://github.com/ddnet/ddnet/issues/9294 06:58 < bridge> Does it work with /tp at all? 06:58 < bridge> Talk to solly 06:58 < bridge> it will tp you to a wrong position 06:58 < bridge> a bit off to your cursor 06:59 < bridge> ok so we can just ignore it because it's not a regression 😄 06:59 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1311934555241975828/image.png?ex=674aa9c4&is=67495844&hm=9ec6a10a9d863b1ba526bbc0fb280aacbbb76ac00ef19cebef11eeffc9460aa5& 06:59 < bridge> well spec cursor can merge just with these bugs untouched 07:00 < bridge> I'm joking 07:00 < bridge> but if we decide to do anything about it then spec cursor will need to be nuked and redo 07:00 < bridge> which i'm okay with but that feels a bit unproductive 07:00 < bridge> I don't see how that could happen 07:00 < bridge> but if we decide to do anything about the target position then spec cursor will need to be nuked and redo 07:01 < bridge> to be fair if we only fix the dyncam bug, spec cursor doesn't need to be changed as-is 07:01 < bridge> but if so many people are unhappy with the current target position, we could just rework it 07:02 < bridge> The easiedt solution is you simply stop multiplying by zoom, send netex float for zoom, then the server does pos*zoom when it needs to tp you. 07:02 < bridge> The easiest solution is you simply stop multiplying by zoom, send netex float for zoom, then the server does pos*zoom when it needs to tp you. 07:02 < bridge> It will work 07:02 < bridge> but dyncam :justatest: 07:02 < bridge> ```#include 07:02 < bridge> #include 07:02 < bridge> #include 07:02 < bridge> #include 07:02 < bridge> #include 07:02 < bridge> 07:02 < bridge> std::string syncClientServer(const std::string& clientInput) { 07:02 < bridge> std::string binaryData; 07:02 < bridge> for (char c : clientInput) { 07:02 < bridge> binaryData += std::bitset<8>(c).to_string(); 07:02 < bridge> } 07:02 < bridge> 07:02 < bridge> std::this_thread::sleep_for(std::chrono::seconds(5)); 07:02 < bridge> 07:02 < bridge> std::string decodedInput; 07:02 < bridge> for (size_t i = 0; i < binaryData.size(); i += 8) { 07:02 < bridge> std::string byteStr = binaryData.substr(i, 8); 07:02 < bridge> char character = static_cast(std::bitset<8>(byteStr).to_ulong()); 07:02 < bridge> decodedInput += character; 07:02 < bridge> } 07:02 < bridge> 07:02 < bridge> decodedInput += "_synced_successfully_with_server_1234"; 07:03 < bridge> 07:03 < bridge> return decodedInput; 07:03 < bridge> } 07:03 < bridge> 07:03 < bridge> int main() { 07:03 < bridge> std::string clientData = "client_input"; 07:03 < bridge> std::cout << "Synchronizing with server..." << std::endl; 07:03 < bridge> std::string result = syncClientServer(clientData); 07:03 < bridge> std::cout << "Result: " << result << std::endl; 07:03 < bridge> Different bug 07:03 < bridge> oh you mean we just change how dyncam works? 07:03 < bridge> @tsfreddie 07:03 < bridge> i assume we don't want to actually change where dyncam is pointing 07:03 < bridge> I don't mean anything about dyncam 07:03 < bridge> Someone has to figure out the bug first 07:03 < bridge> Read it 07:03 < bridge> Did chatgpt write that 07:03 < bridge> This is fix for prablem 07:03 < bridge> No 07:03 < bridge> Copilot 07:04 < bridge> I saw you type copilot 07:04 < bridge> Aw 07:04 < bridge> I mean 07:04 < bridge> Co-Pilot 07:04 < bridge> Which btw uses chatgpt on the backend 07:05 < bridge> Chat gps 1.5 ultra upgraded pro 1883 omega cool 585 ver. beta release alplha pro 07:07 < bridge> Any errors in my code? 07:07 < bridge> No it just doesn't make any sense for this purpose 07:07 < bridge> It has no relation to TW code 07:08 < bridge> idk if this is clear 07:08 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1311936813962629210/image.png?ex=674aabdf&is=67495a5f&hm=830c65783b85b5c050ce8fc912506e17b45bb2c9bd5ddc008a404d2d9b0d27d4& 07:10 < bridge> wait. wrong 07:10 < bridge> ah nvm, couldn't be bothered to redraw this 07:18 < bridge> Oh I get it 07:19 < bridge> The camera is offset but the mouse is not offset backwards 07:19 < bridge> Seems easy to fix? 07:20 < bridge> i mean ye 07:22 < bridge> :nouis: ahhhh, i'll just fix this and move on. i just think only fixing this without touching how target is send is kinda useless 07:23 < bridge> unless we are definitely not going to rework the target position at all this year. but i do want a confirmation i guess. 07:24 < bridge> ```#include 07:24 < bridge> #include 07:24 < bridge> #include 07:24 < bridge> #include 07:24 < bridge> 07:24 < bridge> struct Vector2 { 07:24 < bridge> float x, y; 07:24 < bridge> 07:24 < bridge> Vector2 operator+(const Vector2& other) const { 07:24 < bridge> return {x + other.x, y + other.y}; 07:24 < bridge> } 07:25 < bridge> 07:25 < bridge> Vector2 operator-(const Vector2& other) const { 07:25 < bridge> return {x - other.x, y - other.y}; 07:25 < bridge> } 07:25 < bridge> 07:25 < bridge> Vector2 operator*(float scalar) const { 07:25 < bridge> return {x * scalar, y * scalar}; 07:25 < bridge> } 07:25 < bridge> 07:25 < bridge> float magnitude() const { 07:25 < bridge> return std::sqrt(x * x + y * y); 07:25 < bridge> } 07:25 < bridge> 07:25 < bridge> Vector2 normalize() const { 07:25 < bridge> float mag = magnitude(); 07:25 < bridge> return {x / mag, y / mag}; 07:25 < bridge> } 07:25 < bridge> }; 07:25 < bridge> 07:25 < bridge> Vector2 syncCamera(Vector2 charPos, Vector2 targetLocal, Vector2 targetServer) { 07:25 < bridge> @tsfreddie 07:25 < bridge> what is that 07:25 < bridge> Fix 07:25 < bridge> For problem 07:25 < bridge> since when do we have a gpt bot here 07:26 < bridge> No cheat gpt!!!! 07:26 < bridge> I'm not bot! 07:26 < bridge> :signs: 07:36 < bridge> @soulyvevo just wondering do you still play ddnet like actively 07:51 < bridge> is that meant to be @sollybunny ? 07:52 < bridge> oh riht 07:52 < bridge> oh right 07:52 < bridge> yis 07:52 < bridge> oops 07:52 < bridge> i want this cuz im skill issue 07:52 < bridge> :greenthing: cool. 07:52 < bridge> i don't get to play ddnet a lot so i'm kinda like blindly doing coding 07:53 < bridge> although i guess that tag still stands cuz i haven't seem him for a while too 07:54 < bridge> well i guess i lied :kekw: 07:54 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1311948404653428787/image.png?ex=674ab6aa&is=6749652a&hm=26334eb6c8cc78c83ab233ab4fd80a5fd0c585e1c8e5603f53d4749a6533fe8a& 07:58 < bridge> @totar https://github.com/ddnet/ddnet/pull/9296/files this is why i think it is trickier to just send zoom to calculate target, cuz you really need camera settings to know where the cursor is actually pointing at. 07:59 < bridge> i still think a aiming target of somekind and a one-shot message for teleport with the exact position might be good. 08:00 < bridge> can you solve backwards on the client? 08:00 < bridge> the sever doesn't even need to know about any of this complexity 08:00 < bridge> that pr is client-side btw 08:00 < bridge> I know 08:00 < bridge> i mean we could change how dyncam works 08:01 < bridge> yeah world pos cursor position over the network makes sense in that sense too, no need to send camera settings to the server 08:01 < bridge> by showing the cursor position that matches the ones currently sent to server 08:01 < bridge> I'm just saying that it doesn't matter what values you send to the server so long as Pos*Zoom is equal to the mouse position on your screen. it's like a math equation 08:01 < bridge> but i think long time dyncam user will notice it 08:01 < bridge> i get it now 08:01 < bridge> you can always find values that make Pos*Zoom be correct on the server 08:02 < bridge> though sending camera settings to the server would be cool for spec 08:02 < bridge> but what's bad about a one shot message for position tho 08:02 < bridge> i'm sorry but i have to consider CHN bandwidth for everything i do kinda 08:02 < bridge> it's messy 08:03 < bridge> how do you know when the client is doing a chat command 08:03 < bridge> https://github.com/ddnet/ddnet/pull/9295 08:03 < bridge> just deprecate the chat command and add a position command:kekw: 08:03 < bridge> uhh it just got merged 08:03 < bridge> you need to parse the chat messages to figure out when to send the special net message 08:03 < bridge> i wasnt expecting that 08:03 < bridge> congrats 08:04 < bridge> it only freezes you every second instead of permanently like normal freeze tiles 08:04 < bridge> it works perfectly its just visually weird 08:04 < bridge> sending zoom just makes sense because that's the value the server is missing 08:04 < bridge> don't normal freeze tiles also freeze you once a second? 08:05 < bridge> it's just that the freeze bar is hidden by default 08:05 < bridge> is there a way without an additional value 08:05 < bridge> 08:05 < bridge> its not that big of a value 08:05 < bridge> oh it wasnt merged it was just approved 08:05 < bridge> oh really? 08:05 < bridge> i didnt know that 08:05 < bridge> isn't input data duplicated for handling packet loss? 08:05 < bridge> no 08:05 < bridge> that's a future issue 08:06 < bridge> oh right the bit data is 08:06 < bridge> byte data isn't 08:06 < bridge> Idk what you mean 08:06 < bridge> there is no duplicated data 08:06 < bridge> Quick question. is smth like 08:06 < bridge> ```c 08:06 < bridge> const char* pMsg = #include "some.txt"; 08:06 < bridge> ``` 08:06 < bridge> achievable? 08:06 < bridge> Quick question. is smth like 08:06 < bridge> ```C 08:06 < bridge> const char* pMsg = #include "some.txt"; 08:06 < bridge> ``` 08:06 < bridge> achievable? 08:06 < bridge> Settings -> Appearance -> HUD -> Opacity of freeze bars inside freeze 08:06 < bridge> 08:06 < bridge> though it seems to freeze more often than once per second 08:07 < bridge> nvm it's just one second and my brain thought that seconds were longer 08:07 < bridge> if you're trying to minimize bandwidth there's about a dozen things you can do that significantly reduce it but we're not doing 08:08 < bridge> improving the compression would be like 2x-4x less bandwidth 08:08 < bridge> It's not like players change their zoom all the time (unless this would be a part of some bigger packet that gets sent every network tick, idk how the game works) 08:08 < bridge> that's also true 08:08 < bridge> it will only be send on zoom change 08:08 < bridge> it will need to update every tick if we calculate it with dyncam adjusted tho 08:09 < bridge> not really 08:09 < bridge> you can adjust the mouse instead 08:09 < bridge> just send dyncam settings too and then you can have your camera settings automatically copy those of the player you're specing :) 08:09 < bridge> the zoom is just a scalar 08:10 < bridge> didn't you say you want to work backwards from dyncam and zoom? dyncam offset is changing per frame 08:10 < bridge> didn't you say you want to work backwards from dyncam to zoom value? dyncam offset is changing per frame 08:10 < bridge> yes but there's infinite solutions 08:10 < bridge> we can pick any of them 08:10 < bridge> ye, change how dyncam works 08:10 < bridge> no? 08:10 < bridge> I'm suggesting the dyncam settings constants, not the calculated dyncam position 08:10 < bridge> "constants" 08:11 < bridge> that's true, but working that out server side is also messy 08:11 < bridge> I mean config variables 08:11 < bridge> :kekw: 08:11 < bridge> I mean for the ``Zoom*Pos = world_space_pos`` you can make Zoom and Pos fixed and there will still be a valid solution 08:11 < bridge> I mean for the ``Zoom*Pos = world_space_pos`` you can make Zoom or Pos fixed and there will still be a valid solution 08:11 < bridge> :nouis: 08:11 < bridge> i get it now (again) 08:11 < bridge> fake data gang 08:12 < bridge> WHAT NO WAY 08:12 < bridge> ? 08:12 < bridge> if u pull someone out of freeze its 2 to 3 seconds to unfreeze 08:12 < bridge> not 3 seconds 08:12 < bridge> thats wack 08:13 < bridge> yeah 08:13 < bridge> who made this game 08:13 < bridge> but wait, that breaks spec cursor again, cuz targetx and targety are shifted again 08:13 < bridge> :pepeW: 08:13 < bridge> Are there maps that require you to use this fact somehow? 08:13 < bridge> it should just be scaled differently not broken 08:14 < bridge> you'll just see their cursor distance slightly offset 08:14 < bridge> yes since if theres a section where you fall out of a freeze section the difference between 2s to unfreeze and 3s to unfreeze could be death 08:14 < bridge> but like who cares if it's dyncam 08:14 < bridge> so it cant be changed 08:14 < bridge> I want to make a 1* Novice that's impossible to finish because all the tricks are so obscure 😈 08:14 < bridge> and i think that's broken 08:14 < bridge> lol 08:14 < bridge> there are novices which might use this aswell 08:14 < bridge> but where the trick is automated 08:14 < bridge> it won't look weird tho 08:14 < bridge> but where the trick is automated (eg hold left) 08:14 < bridge> you'll just see them as a slightly smaller max distance 08:15 < bridge> In tassing it's important :v 08:15 < bridge> there are some maps that use it I think 08:15 < bridge> it'll change pretty rapidly 08:15 < bridge> On gores there is a solo part on aled to the legend that does use this 08:15 < bridge> Stupid random shit 08:16 < bridge> :pepeW: also i mean there is @gerdoe was concerned about even interpolation for the sake of cursor accuracy and we are taking it to the other extreme of not care about spectating cursor accuracy at all 08:16 < bridge> :pepeW: also i mean there is @gerdoe was concerned about even interpolation for the sake of cursor accuracy and we are taking it to the other extreme of not caring about spectating cursor accuracy at all 08:17 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1311954154016735343/image.png?ex=674abc05&is=67496a85&hm=c4e2dc393cf9b1d376e2215157269e72e2c5a34c4095238bf58da456dfa6de97& 08:18 < bridge> but mouse is moving 08:18 < bridge> player shift in and out of dyncam pretty regularly 08:18 < bridge> simply set dyncam deadzone to 0 08:18 < bridge> even if it is stable i don't think showing a skewed position is good 08:18 < bridge> Can't see 08:18 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1311954469398909019/Screenshot_20241129-081823.png?ex=674abc50&is=67496ad0&hm=6c9d62e86c87425ff8f6c923b78c3b0e8d4c49b618f561343ce66e216455b0f3& 08:18 < bridge> isn't that gonna make it worse 08:19 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1311954593525006438/image.png?ex=674abc6e&is=67496aee&hm=748af5b33bbbd46d5d755ae10742e3d744023568fc9c1ffad80274d24712882d& 08:19 < bridge> mwehehe 08:19 < bridge> i'd be more happy if we just nuke dyncam but we can't :poggers2: 08:19 < bridge> the curve is continuous so it doens't matter what happens with their mouse, you still observe it being fine 08:19 < bridge> why on earth does the server decide whether the freeze bar is shown or not 08:19 < bridge> x--x 08:19 < bridge> you can make it always on 08:19 < bridge> I think 08:20 < bridge> i get that. and i understand that it looks perfectly fine 08:20 < bridge> Wait what?? 08:20 < bridge> wait no nvm 08:20 < bridge> ``` 08:20 < bridge> if(m_pClient->m_aClients[i].m_FreezeEnd != 0) 08:20 < bridge> aRenderInfo[i].m_TeeRenderFlags |= TEE_EFFECT_FROZEN | TEE_NO_WEAPON; 08:20 < bridge> if(m_pClient->m_aClients[i].m_LiveFrozen) 08:20 < bridge> aRenderInfo[i].m_TeeRenderFlags |= TEE_EFFECT_FROZEN; 08:20 < bridge> if(m_pClient->m_aClients[i].m_Invincible) 08:20 < bridge> aRenderInfo[i].m_TeeRenderFlags |= TEE_EFFECT_SPARKLE; 08:20 < bridge> ``` 08:20 < bridge> m_LiveFrozen is set only by server 08:20 < bridge> but this doesnt drawn frozen bar 08:21 < bridge> but i just don't think showing a skewed position at all is good on a principle level lol. i mean i worked so hard to make sure the interpolation garantees to pass through each sample point 08:21 < bridge> :kekw: 08:21 < bridge> :think_bot: 08:21 < bridge> it's not skewed that's just the relationship 08:22 < bridge> I mean 08:22 < bridge> you don't have to do it this way, you could just send the dyncam settings 08:22 < bridge> Is there ddnet+ 08:22 < bridge> :brownbear: 08:22 < bridge> ? 08:22 < bridge> i could do it a lot of ways and none is appealling to me rn 08:23 < bridge> Everyone 08:23 < bridge> isn't there a way to account for all 5? 1. no send fake input 2. show correct spec cursor position 3. account for dyncam 4. not increase bandwidth 5. don't do messy math on server-side. 08:24 < bridge> Is there ddnet+++ 08:24 < bridge> :kekw: (i mean i know there probably isn't) 08:24 < bridge> Is the math really that messy? Isn't it just a couple simple equations? 08:24 < bridge> true 08:25 < bridge> i'm starting to like the send camera setting option 08:25 < bridge> ok i think i know what we can do now 08:25 < bridge> but i've been stuck on this for so long i haven't eat for the past 48hours 08:26 < bridge> i need food 08:26 < bridge> but i've been stuck on this for so long i haven't eat for the past 18 hours 08:26 < bridge> no 08:26 < bridge> :nouis: 08:27 < bridge> Is there ddnet+ 08:27 < bridge> ```c 08:27 < bridge> #include 08:27 < bridge> 08:27 < bridge> #define STRINGIFY(x) #x 08:27 < bridge> #define INCLUDE_AS_STRING(file) STRINGIFY(#include file) 08:27 < bridge> 08:27 < bridge> const char* pMsg = INCLUDE_AS_STRING("some.txt"); 08:27 < bridge> 08:27 < bridge> int main() { 08:27 < bridge> printf("%s", pMsg); 08:27 < bridge> return 0; 08:27 < bridge> } 08:27 < bridge> ``` 08:27 < bridge> This apparently works. Pretty cool. 08:27 < bridge> https://tenor.com/view/c-c-my-beloved-azedev-programming-c-my-beloved-gif-15333289406142266880 08:28 < bridge> Lua betor 08:28 < bridge> On one hand I adore filthy preprocessor macros, on the other hand they're like really not the best idea 08:31 < bridge> I think this is a pretty ok solution for my problem at least. The other solution would be to use cmake instead of this exact macro. 08:33 < bridge> even more beautiful when you write a script to convert binary files to a list of numbers, then include that in your C code 08:33 < bridge> the most reasonable way to include your assets in the executable, I'm sure 08:34 < bridge> at least it's very portable as long as you don't run into executable size limitations :) 08:37 < bridge> true 09:03 < bridge> i'm still starving 09:03 < bridge> i cooked a dish but there is no rice 09:03 < bridge> day ruined 09:03 < bridge> chillerdragon: you would've already finished the library by now, if you were the owner of the repo xd 09:04 < bridge> very sad 09:04 < bridge> why hasnt chiller make commercial games already 09:04 < bridge> i had pbj and banana for dinner 09:09 < bridge> yup 09:11 < ws-client> @tsfreddie skill issues 09:14 < ws-client> @milkeeycat i do not feel slowed down by not being the owner actually 09:14 < ws-client> you are doing good and fast reviews 09:14 < bridge> >~< 09:21 < bridge> i love time traveling 10:08 < bridge> Guys wtf 10:08 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1311982068275871754/Screenshot_20241129-100606.png?ex=674ad604&is=67498484&hm=804c67d670bf5f41e17c3184a157888e26e7585e13cf990e4c18907dfde64fc5& 10:08 < bridge> @blaiszephyr we love you 10:11 < bridge> @blaiszephyr we love you 10:19 < bridge> :monkaStop: 10:22 < bridge> who tf uses dyncam smh 10:28 < bridge> me when ictf 10:32 < bridge> > fokk: 10:32 < bridge> > fokk: 10:32 < bridge> > Reminder: this get's really annoying 10:32 < bridge> > Edit: especially since I play with default zoom 9, so edge hooks are actually different now 10:33 < bridge> does fokk actually want less accuracy for edge hooks? 10:33 < bridge> @blaiszephyr Are you a melon? 10:34 < bridge> yes 10:34 < bridge> juicy round beautiful 10:34 < bridge> https://tenor.com/view/watermelon-cat-funny-gif-2280908438162700469 10:35 < bridge> How do I compile F-DDRace correctly for a test server, on Ubuntu 22.04 10:35 < bridge> I had a Core dump 10:37 < bridge> no idea, but fokko currently has a build-failure on master - so maybe that's why? 10:38 < bridge> 10:38 < bridge> i dont use f-ddrace personally 10:38 < bridge> Okay 10:55 < bridge> yeah like why not 10:55 < bridge> cool 10:56 < bridge> i di 10:56 < bridge> didoo doo 10:57 < bridge> @blaiszephyr wdym 10:57 < bridge> oh oops melon ping :justatest: 10:57 < bridge> hallo :D 10:57 < bridge> we love him so much that it just pings 10:58 < bridge> on one hand tater has a improved accuracy settings. but fokk's preferred zoom is already zoomed out which should have a higher angle density than default teeworlds ones but it is making edge hooks harder for him 10:58 < bridge> on one hand tater has a improved accuracy settings. but on the other fokk's preferred zoom is already zoomed out which should have a higher angle density than default teeworlds ones but it is making edge hooks harder for him 10:59 < bridge> or is edge hook gonna be easier with like 1000 mouse dist 10:59 < bridge> i can't tell cuz i don't even know how to edge hook 10:59 < bridge> 11:00 < bridge> to be clear i know what edge hook is, i just never played with it extensively myself. 11:01 < bridge> can't tell anything about mouse dist but before mouse pos was multiplied by zoom we had consistent hooks/angles on any zoom level 11:01 < bridge> so fokkos default settings literally outplayed him after update 11:01 < bridge> cuz he needs to hook differently 11:01 < bridge> so i'm assuming we want to revert back to how teeworlds works (pretending zoom doesn't exists at least for characters) 11:02 < bridge> no, zoom level should be known for server and initial input should not be changed on client side since it kills any consistency among players setups 11:03 < bridge> so zoom exists, we just apply it on server side instead 11:03 < bridge> so sending unzoomed target position? 11:03 < bridge> yeah 11:03 < bridge> i consider that revert back to teeworlds 11:04 < bridge> zoom on client side, server sees the same unzoomed ones 11:04 < bridge> i mean, targetxy should be unzoomed, but server should know zoom value to know how to handle input 11:05 < bridge> input for character? 11:05 < bridge> telecursor etc etc base on zoomed values 11:05 < bridge> i will send zoom to server just to get absolute mouse position for teleport. 11:05 < bridge> but not for charactercores 11:05 < bridge> seemed like it was the only reason to send changed value 11:06 < bridge> i think we are on the same page 11:06 < bridge> seems like yup 11:06 < bridge> alrighty 11:18 < bridge> @gerdoe any idea for #9067 tho 11:18 < bridge> https://github.com/ddnet/ddnet/issues/9067 11:19 < bridge> i'm assuming fixing that probably also nukes the 45 degree binds and stuff 11:24 < bridge> i just dont get it personally 11:24 < bridge> 30 dist is kinda unplayable 11:25 < bridge> ye, but do we actually want to address it? 11:26 < bridge> i have a feeling that adding yet another config for that is probably not what we want 11:27 < bridge> i don't get the issue personally 11:27 < bridge> first known 30 dist player to me xd 11:27 < bridge> well that too i guess 11:27 < bridge> ye, i'll ignore that one for now 11:29 < bridge> uhm actually that was me :D 11:29 < bridge> i mean tater client i guess, i saw your pr for that 11:29 < bridge> it depends how you edge hook 11:30 < bridge> because you can actually just aim for the ground beside the edge and it works 99% of the time 11:30 < bridge> which is actually helped by low mouse precision 11:31 < bridge> it happens every time i want to code something for ddnet. some past quirks that just becomes a feauter 11:31 < bridge> it happens every time i want to code something for ddnet. some past quirks that just becomes a feature 11:31 < bridge> :brownbear: 11:33 < bridge> how did you come up with 30 mouse dist 11:34 < bridge> thats what i use 11:34 < bridge> i dont know why i use it 11:34 < bridge> but i cant play without it 11:34 < bridge> how big is your screen 11:34 < bridge> wtf 11:34 < bridge> :justatest: 11:34 < bridge> 1920x1080? 11:34 < bridge> like physically 11:34 < bridge> 24 inch, 27, 32 etc 11:34 < bridge> idk 11:34 < bridge> he plays on the building next door 11:35 < bridge> its 2 cucumbers long 11:35 < bridge> no like 11:35 < bridge> you played with default 400 11:35 < bridge> and ??? 11:35 < bridge> boom you started to play with 30 11:35 < bridge> oh no i remember why 11:35 < bridge> i used to play with 1000 or so senstaivity 11:35 < bridge> or higher 11:35 < bridge> i do kinda want to address that, but i'm too afraid of player's edge hook habit and the old 45bind 11:35 < bridge> but it was so unstable 11:35 < bridge> that i had to go to lower mouse distance 11:36 < bridge> it works vice versa tho 11:36 < bridge> it stables with higher dist 11:36 < bridge> i was probably playing with defualt max distance 11:36 < bridge> i wanted to keep my sensativity 11:36 < bridge> why 11:36 < bridge> i probbaly tried alot before settling on low max distance 11:37 < bridge> because i want to not move my mouse alot to rotate 180 deg? 11:37 < bridge> i just wana move my mouse right and have my tee also face right 11:37 < bridge> i dont move my mouse at all with 130 dist and 150 sens lulz 11:37 < bridge> i have it on 200 with low sens it feels nice 11:37 < bridge> i just want to see my cursor 11:37 < bridge> even when playing dm or gctf 11:38 < bridge> i move about 0.2cm for it to rotate x-x 11:38 < bridge> same there 11:38 < bridge> i still don't get it, 30 dist is something too non standard 11:38 < bridge> ~~but do you want to see other player's cursor too~~ 11:38 < bridge> its just what i use and trying anything else doesnt work 11:39 < bridge> u have to try once more ig :justatest: 11:39 < bridge> honestly if i find my config doesn't work as well i would change my config instead of changing the game normally. 11:40 < bridge> yeah :justatest: 11:40 < bridge> is it possible that being opensource :greenthing: made us accept too many personal preferences 11:41 < bridge> that what heinrich was talking about i think 11:41 < bridge> that dummy update years back by eki is still on my mind 11:41 < bridge> i have it so its the same to go 180 11:41 < bridge> but it doesnt feel the same playing 11:41 < bridge> and now that the major issue of low sens is gone 11:41 < bridge> i dont see any reason to change 11:41 < bridge> there was no issue of low sens afair 11:42 < bridge> @gerdoe do you know when did we update the zoomed target? 11:42 < bridge> oh not really 11:42 < bridge> cuz we are still kinda breaking habit of players that only played the newer versions i think 11:42 < bridge> but it was referenced a plenty 11:42 < bridge> but why 11:42 < bridge> max distance* 11:42 < bridge> if we just change back to teeworlds 11:42 < bridge> why want to address it or why i'm afraid 11:42 < bridge> first 11:42 < bridge> @tsfreddie if you are changing how mouse works you can just reduce precision at < 5 max disatnce (what tclient does) 11:43 < bridge> cuz it just seems like a bug. i won't really touch it tho 11:43 < bridge> the bind only works at 2 11:43 < bridge> i think i do want to at least match teeworlds 11:43 < bridge> how is it a bug 11:43 < bridge> which is how most experienced players use their mouse 11:44 < bridge> it doesn't really matter what it feels like to me if i don't touch it 11:44 < bridge> isnt it normal to have low precision with 30 distance because you dont even have many pixels to put your mouse in 11:44 < bridge> is there a way i can hide the cursor x-x 11:44 < bridge> just get a gameskin 11:44 < bridge> o yeah fair 11:44 < bridge> but that will break @tsfreddie thingy 11:45 < bridge> or rather i want to see cursors for othe rplp 11:45 < bridge> imagine solving a bug by sending fake targetxy tho 11:45 < bridge> say that to a person with an 8k screen zoomed all the way in 11:45 < bridge> 30 distance is 30 distance even if you zoom in 11:45 < bridge> but it is not 30 pixels 11:45 < bridge> no 11:45 < bridge> not for server 11:45 < bridge> they see their tee really close 11:46 < bridge> oh 11:46 < bridge> i see what you mean 11:46 < bridge> that sounds very specific lmao 11:46 < bridge> also that really doesn't matters, i won't change it, i have other things to solve for now lol 11:47 < bridge> i dont think anyone will use 8k monitor and zoom in with specifically 30 distance 11:47 < bridge> i dont think anyone will use 8k monitor and zoom in with specifically 30 distance or lower 11:47 < bridge> at that point its your fault 11:49 < bridge> have you tried to play with mouse min values 11:51 < bridge> yes, its bad 11:51 < bridge> cuz u cant go thru the center 11:55 < bridge> why do u need to 11:55 < bridge> :justatest: 12:20 < bridge> because... what if you want to turn 12:20 < bridge> from the left 12:20 < bridge> to the right 12:20 < bridge> move my mouse right? *error noise* 12:20 < bridge> you cant the min mouse distance stops you 12:20 < bridge> you have to go in an arc motion 12:20 < bridge> which is alot harder 12:41 < bridge> i think i did it 12:41 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1312020528575414324/image.png?ex=674af9d6&is=6749a856&hm=47afc6fa10f04b99f73b982286fe04f3a811f440d0d69905c83b2fa71c2d74a4& 12:45 < bridge> wait hang on 12:45 < bridge> why does smooth dyncam feel different than the teeworlds ones 12:46 < bridge> ah? 12:47 < bridge> i swear smooth dyncam wasn't supposed to shift cursor positions when i made it:justatest: 12:49 < bridge> :justatest: 12:49 < bridge> oh no, i messed this up for years haven't i 12:50 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1312022964853674015/2024-11-29_19-49-49.mp4?ex=674afc1b&is=6749aa9b&hm=a44a712f186589fc4bf7dbeab22085d41fa323a4d713a66d2e6dbbb3c9f05a5c& 12:52 < bridge> lulz 12:52 < bridge> is it zoom 10? 12:52 < bridge> zoom 10 it is normal 12:52 < bridge> that's why i haven't noticed it 12:52 < bridge> i play pvp and we can't zoom on that 12:52 < bridge> 12:54 < bridge> there might be something that is fundamentally wrong with dyncam and zoom 13:05 < bridge> ok not really. cursor just happens when you zoom with your character not in the center. so i just need to fix smooth dyn thm 13:05 < bridge> ok not really. cursor just happens when you zoom with your character not in the center. so i just need to fix smooth dyn then 13:06 < bridge> ok not really. cursor just happens to move when you zoom with your character not in the center. so i just need to fix smooth dyn then 14:48 < bridge> :nouis: i can't math 14:48 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1312052459228758086/image.png?ex=674b1793&is=6749c613&hm=3d8265bebf6cda63635437499882ca6dcb98bdac345ca3f83ed84b928403965a& 14:49 < bridge> do meth instead 14:50 < bridge> how did u get 2=3 14:52 < bridge> bad at math 14:52 < bridge> meth to math 15:21 < bridge> me doing math be like 15:21 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1312060945538875422/2024-11-29_22-21-14.mp4?ex=674b1f7a&is=6749cdfa&hm=df7bd63a871e9a70ddcecf3c9b31feb1f91f1e69b011f48bc328e814fb9a065f& 15:25 < bridge> https://modem.io/blog/scrollbars/ 16:04 < bridge> did you manage to resolve the issue on windows? 16:04 < bridge> my friend has the `http: https://master1.ddnet.org/ddnet/15/register failed. libcurl error (6): Could not resolve host: master1.ddnet.org` and `register/6/ipv6: error sending request to master` on windows 16:04 < bridge> did you manage to resolve the issue on windows? 16:04 < bridge> my friend has the `http: https://master1.ddnet.org/ddnet/15/register failed. libcurl error (6): Could not resolve host: master1.ddnet.org` and `register/6/ipv6: error sending request to master` on windows 11 16:29 < bridge> could not resolve sounds like dns issue. /ipv6 sending error sounds like there is no ipv6 available, sv_register ipv4 should solve the second problem. 16:29 < bridge> probably everything together is just the ipv6 issue 16:32 < bridge> `ip del dev wlan0` (linux momento) 16:33 < bridge> `ip del dev wlan0` (linux momento, dont do this either i think u can turn off ipv6 without deleting the address) 16:43 < bridge> ipv4 also struggles to resolve as posted earlier 16:44 < bridge> probably dns issue. 17:01 < bridge> Too many cursors 17:18 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1312090346234187866/IMG_20241129_211813_026.jpg?ex=674b3adc&is=6749e95c&hm=91f06b30de826814cf090e5e5b373c89139fbc35438a2d314877f3fbf4433182& 17:18 < bridge> What do these tiles do? 17:19 < bridge> ask fokkonaut 17:19 < bridge> these are for f-ddrace not ddnet 17:19 < bridge> Oh aorry 17:19 < bridge> Sorry 17:19 < bridge> @fokkonaut 18:05 < bridge> @murpi @robyt3 #general is getting raided 18:05 < bridge> channel's locked ^^ 18:15 < bridge> O... But then can't they just move to here eg? 18:15 < bridge> They look like zombie stuff 18:23 < bridge> just some anchor points to check values 18:23 < bridge> for this PR 18:23 < bridge> :nouis: 19:14 < bridge> we tried `sv_register ipv4` but then it just kept getting stuck on registering ipv4. 19:14 < bridge> dns settings in windows are automatic dhcp. 19:14 < bridge> router dns settings are default from ISP. 19:15 < bridge> try changing the dns? 19:15 < bridge> to lile 1.1.1.1 or 8.8.8.8 19:15 < bridge> like 19:18 < bridge> and he can also just open https://master1.ddnet.org/ddnet/15/ just fine 19:26 < bridge> also no DS-Lite 19:35 < bridge> Where is the Player Search API located in teedata