00:06 < bridge> @fokkonaut hey did you find the way around targetx/y zoom problem? 00:50 < bridge> No tell me more 00:50 < bridge> I think something went viral a bit which increased player count. deen mentioned that iirc 00:51 < bridge> F 01:12 < ws-client> why did you add this btw @jxsl13 https://github.com/teeworlds-go/huffman/blob/b632fb8631af0ef31d72c36a9fed1e1001496b4c/.github/workflows/main.yml#L17-L22 01:14 < bridge> syntax check on readme.md changes usually not that interesting for compulation 01:15 < bridge> compilation 01:18 < bridge> so there is a global variable that is called DefaultDictionary 01:20 < bridge> that is initialized with the default teeworlds frequencies upon package initialization and is more or less global state which is reused for for every constructor that does not take a custom dictionary. 01:20 < bridge> that is why the tree/dictionary is not initialized upon every huffmann.Compress/Decompress call. 01:20 < bridge> Ah nice 01:21 < bridge> a pointer is passed around 01:21 < bridge> Well the readme was full of bugs so it’s checked in CI too now 01:21 < bridge> I don’t see the disadvantage of the default CI what’s the problem of the CI running when just a config or text file was changed? 01:22 < bridge> wasting resources 01:22 < bridge> So you are saving the planet? Xd 01:22 < bridge> I do my part 😄 01:22 < bridge> in a rational way 01:22 < bridge> Sure fine with me. Just took me 1 CI run to debug why the README.md wasn’t triggering CI 01:24 < bridge> can you release a new version if possible 01:24 < bridge> tag 01:25 < bridge> Ok 01:25 < bridge> should not exactly break the api except for the small behavioral change where empty slices are accepted as well 01:25 < bridge> and init is gone ._. 01:25 < ws-client> wot init 01:26 < bridge> breaks api lil bit 01:26 < bridge> the method 01:26 < ws-client> a 01:26 < ws-client> was never user facing 01:26 < bridge> well 01:26 < bridge> minor version bump .____. 01:26 < bridge> btw 01:27 < bridge> you can click on the godoc reference badge 01:27 < bridge> and jump straight to docs 😄 01:29 < ws-client> nono we went straight to 2.0.0 @jxsl13 the user never called Init but the api changed 01:29 < ws-client> ye i noticed its cool @jxsl13 01:29 < bridge> major updates are slightly harder 01:30 < bridge> can you remove the tag again 01:30 < ws-client> nope :p 01:30 < ws-client> why 01:30 < bridge> add a /v2 suffix in the go.mod 01:30 < ws-client> we can just tag again 01:30 < ws-client> aaaa 01:30 < bridge> and then add the tag again if I'm not mistaken 01:31 < bridge> I'm usually below v1 in order to introduce breaking changes whenever I want, cuz lazy 01:31 < bridge> 01:31 < bridge> x) 01:31 < ws-client> https://zillyhuhn.com/cs/.1720049474.png 01:31 < ws-client> you mean this? 01:31 < bridge> chillerdragon: how do I quit my job 01:31 < bridge> yes 01:31 < ws-client> axaxaxa @tsfreddie u alr did 01:31 < bridge> I mean that suffix exactly 01:32 < bridge> ok then 01:32 < ws-client> time to send heinrich an email again xd 01:34 < bridge> eeh 01:34 < bridge> all imports need also to be fixed 01:34 < bridge> what? you can do that? 01:34 < ws-client> i just noticed wtf thats annoying af 01:34 < bridge> throughout the code to have that /v2 suffix 01:35 < ws-client> thanks for the warning -.- 01:35 < bridge> that's a major change for you xD 01:35 < ws-client> i guess we ping heinrich again 01:35 < bridge> https://go.dev/doc/modules/major-version 01:36 < bridge> and update the readme D: 01:36 < bridge> /v2@latest 01:36 < bridge> ._. 01:37 < bridge> Translate yapabiliyormu 01:37 < bridge> denied 01:37 < bridge> Okey 01:39 < ws-client> i will get banned from go packages one day for sure 01:39 < ws-client> i renamed the protocol repo 3 times on github my lsp auto import was trippin hard 01:39 < ws-client> now i recreated one tag 3 times xd 01:39 < bridge> ad long as nobody pulled 01:40 < bridge> is fine xD 01:40 < bridge> or imported 01:41 < bridge> ._: 01:41 < ws-client> the latest didnt work sos 01:41 < bridge> lemme fix the readme 01:41 < ws-client> thank 01:44 < bridge> I don't even know where that's coming from 01:44 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1258206738587582505/Bildschirmfoto_2024-07-04_um_01.43.36.png?ex=668733d6&is=6685e256&hm=9f9de33ff84b3dbe6622574face687235df6680f6f082c7848f18e8fbf970f41& 01:44 < bridge> xD 01:44 < bridge> hard tabs 01:44 < ws-client> https://zillyhuhn.com/cs/.1720050267.png 01:44 < ws-client> me neither 01:44 < ws-client> discord banned me from seeing their images 01:45 < bridge> rip 01:45 < ws-client> common discord L 01:45 < bridge> gimme rot access to yout image server thingy 01:45 < bridge> root 01:46 < ws-client> <:justatest:572499997178986510> 01:46 < bridge> so that I can upload my screenshot 01:46 < ws-client> that is my vps 01:46 < bridge> xd 01:46 < ws-client> i upload with `scp` 01:47 < ws-client> i saw now 01:47 < ws-client> ye that is `go fmt` for you @jxsl13 01:47 < ws-client> if you break format in readme the CI will slap your ass now 01:48 < bridge> indeed 01:48 < ws-client> your electron editor seems opinionated about tabs vs spaces in a fakin markdown file xd 01:50 < bridge> that's vs code D: 01:50 < bridge> I literally don't even know where that's coming from 01:50 < ws-client> have you tried emacs? 01:50 < bridge> first time seeing 01:50 < bridge> I heard of emacs 01:51 < bridge> and then I used sublime text and now vs code 01:51 < bridge> will not touch anything else for now 01:51 < bridge> opened a pr 01:51 < ws-client> merged 01:52 < bridge> ci works, nice 01:52 < bridge> retag? 01:52 < ws-client> <:poggers2:1008007455936094328> 01:52 < ws-client> no 01:52 < ws-client> its only readme change 01:53 < bridge> :'/ 01:53 < ws-client> the build was already passing on the last commit 01:53 < bridge> that's godoc relevant readme 01:53 < ws-client> omagawd xd 01:53 < bridge> it's versionng the docs 01:53 < ws-client> nah we fix it in v3 01:53 < bridge> pls 01:53 < ws-client> omg i did 01:53 < bridge> lord 01:53 < ws-client> so many rlses 01:53 < bridge> xD 01:53 < ws-client> im brushing my teeth sec 01:54 < bridge> now let me do my go do url magic 01:54 < bridge> go doc 01:54 < bridge> to update go docs 01:55 < bridge> :'/ 01:57 < ws-client> i wonder if heinrich got 5 emails now xd 01:57 < ws-client> rlsd 02:00 < ws-client> @jxsl13 all good now right? 02:00 < ws-client> then ill go find some coffee 02:00 < bridge> no magic today 02:01 < ws-client> arent u tired jxsl? 02:01 < ws-client> what time is it? 1 am? 02:01 < bridge> 2am 02:02 < ws-client> woah 02:09 < bridge> importing works just fine 02:09 < bridge> https://pkg.go.dev/github.com/teeworlds-go/huffman/v2 02:21 < bridge> what are you making teeworlds-go for? just the lulz? 02:26 < bridge> saw chiller doing it, wanted to help a little bit 02:26 < bridge> found it cool 02:36 < ws-client> @learath2 im on some mission to spread teeworlds to as many languages as i can before i rq coding 02:36 < ws-client> so ppl can build tw projects in their fav language 02:37 < bridge> Noble quest 02:37 < ws-client> do i see that correctly? is the client really storing empty snapshots? xd 02:39 < ws-client> maybe after the 100 robsti refactors ddnet isnt im using tw 0.7 02:40 < bridge> who wants to play some teeworlds of any kind 02:40 < bridge> bored rn 02:40 < bridge> #developer lfg 02:40 < ws-client> but from my dbg prints it looks like it uses the m_aSnapshotIncomingData buffer as payload for snap empty and stores it xd 02:40 < ws-client> https://zillyhuhn.com/cs/.1720053493.png 02:42 < ws-client> i wonder if the server creates deltas against empty snapshots 02:43 < ws-client> i somehow do not want to store empty snapshots with some old payload xd 02:44 < ws-client> also is it weird that the hexdump kinda makes sense to me xd i stared so long at debug prints i can read most (non huffman compressed) tw traffic as hex xd 03:03 < ws-client> Nvm it doesnt use old data. That was a bug in the teeworlds engine xd. It uses the empty snapshot as incoming delta and then does store basically the old snapshot. 03:04 < ws-client> so its wasting a bit of storage imo but at least its not doing anything weird 04:15 < ws-client> https://zillyhuhn.com/cs/.1720059289.png 04:15 < ws-client> is that a bug? 06:19 < bridge> i am hitting this assert in my custom fork quite often and its pretty annoying https://github.com/ddnet/ddnet/blob/610381d29e560ec64f2f42f6be9fdddc7f6df0f9/src/engine/shared/http.cpp#L421 06:19 < bridge> 06:19 < bridge> am i doing something wrong? its either me having network hiccups or the backend dieing. Either way i dont want my client to crash. 06:19 < bridge> not sure if im just using the every changing http code incorrectly https://github.com/chillerbot/chillerbot-ux/blob/a39c3f65f65c4d90c377d68bf893526e2a3ed48f/src/game/client/components/chillerbot/chillerbotux.cpp#L43-L59 06:28 < bridge> Ok got it https://github.com/chillerbot/chillerbot-ux/commit/3204a95fd7e137151db0ddbf863692a784265023 i guess i was doing the state handling wrong 06:41 < ws-client> so much chat.zillyhuhn.com downtime these days yikes. Im bakk! 06:41 < ws-client> https://zillyhuhn.com/cs/.1720068089.png 06:48 < bridge> Забирайте S.T.A.L.K.E.R 2 предзаказ на свой Steam Бесплатно https://tinylinks.ru/i27qq не знаю баг это или нет но я забрал 06:56 < bridge> Wdym? 07:31 < bridge> gm 07:31 < bridge> gm 07:32 < bridge> TargetXY scales with the zoom nowadays which is very odd since you can hit less angles when zoomed in due to the scaling of integers. So when you zoom in/out your aim changes 07:33 < bridge> Ah, yea that thing 07:33 < bridge> No, I haven't looked into that since heinrich seems unbothered. 08:20 < ws-client> @teero777 holy shit that sounds bad 08:20 < ws-client> so if i aim lock some nasty edge and then do a quick zooz i might fail the hook? 08:30 < bridge> yes 09:08 < bridge> ddnet fps on my setup sucks so bad 09:08 < bridge> 400-500 fps but feels very choppy 09:09 < bridge> There's an issue already 09:09 < bridge> theoretically vsync is disabled and the game is renning in real full-screen mode but it doesn't feel that way 09:09 < bridge> theoretically vsync is disabled and the game is running in real full-screen mode but it doesn't feel that way 09:09 < bridge> https://github.com/ddnet/ddnet/issues/8452 09:39 < bridge> i dunno how but i made this by shooting once in tp thingy for grenade :justatest: 09:39 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1258326283948003342/image.png?ex=6687a32c&is=668651ac&hm=c164a9f05cf56835ad611ff237c3c0765f57c74c6fbe6dfbd441661bbbb74a6c& 09:41 < bridge> Duplicating entities? 09:41 < bridge> you only shot once? 09:41 < bridge> yes 09:41 < bridge> weird 09:42 < bridge> but it stops when i look away from tp thingy 09:42 < bridge> even though i didn't hold shoot 09:42 < bridge> :thonk: 09:45 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1258327879146799157/wot.mp4?ex=6687a4a8&is=66865328&hm=9ea9a89d9beba5ec12042e9602a006938d2a4fca160caddd32e9077fac20936f& 10:32 < bridge> antiping? probably the client trying to predict which teleporter next 10:35 < bridge> same happens without antiping 10:49 < bridge> Classic duplication glitch. Back in 2018 we used to do that with carpets … oh wait wrong game 10:55 < bridge> chillerdragon: you can simply keep an empty init function 10:55 < bridge> so that there's no breaking change 11:05 < bridge> I just held shoot button before pressing spec and it was shooting when I was in spec :pepeW: 11:48 < bridge> Does other player see the same thing 11:49 < bridge> would be pretty crazy if we really have a duplication glitch which seems pretty unlikely 12:27 < bridge> why did anyone want to scale it with zoom as multiplier 12:29 < bridge> having it as an unscaled world position is nice for some things 12:30 < bridge> the server knows where the client points to 12:31 < bridge> Failed to bridge media: attachment too large (48141924 > 20000000) 12:31 < bridge> 12:31 < bridge> Yum. 12:34 < bridge> Hmmm 12:38 < bridge> Do I have something to do now? 12:38 < bridge> <0xdeen> Nope 12:41 < bridge> Not even updating a translation? 12:41 < bridge> Not even updating the translation? 12:41 < bridge> <0xdeen> no, it's just a bug fix release 12:41 < bridge> <0xdeen> no translation changes 12:41 < bridge> Okaay 12:42 < bridge> https://github.com/teeworlds/teeworlds/issues/2071 12:42 < bridge> was thought to be fixed 5 years ago. but it wasn't ^^ 12:44 < bridge> is there any chance to revert this change btw? 12:44 < bridge> there's a chance to fix the bug 12:44 < bridge> but I think it's good that the server knows where the client points to 12:44 < bridge> which one? 12:44 < bridge> that your angle depends on the zoom level 12:45 < bridge> couldn't we just add zoom multiplier as extended attribute in the past xd 12:45 < bridge> why should the server do the calculation there? 12:46 < bridge> it seems much more well-defined for the client to tell the server where exactly it is pointing 12:46 < bridge> why would you need clients sending two different type of targetxy? 12:46 < bridge> up-to-date clients only send one type of targetxy, no? 12:46 < bridge> yeah but what about other clients huh 12:47 < bridge> you can recognize them based on the version number, if you need to 12:48 < bridge> anyway its strange to change players input behaviour that old servers can rely on 12:48 < bridge> is there a server that relied on that? 12:49 < bridge> i bet there was 12:49 < bridge> at least fokkonaut was mad when this came out 12:49 < bridge> I'd think the situation improved with this change 12:49 < bridge> no longer needing to rely on brittle hacks to determine the actual cursor position 12:49 < bridge> when will 0.7 support be dropped 12:50 < bridge> no plans. why do you ask? @reitw 12:50 < bridge> cuz there's no reason to still support a dead game 12:50 < bridge> so m_Pos + m_Target is hacky? 12:50 < bridge> please take your flamebait elsewhere 12:50 < bridge> and m_Zoom multiplier 12:51 < bridge> ig there might be features that anyone would love to be implemented that requires breaking the compat with 0.7 ? 12:51 < bridge> let's talk about it once we get that hypothetical feature idea 12:51 < bridge> not really flamebaits but facts, anyone knows how dead 0.7 is sadly 12:51 < bridge> this discussion isn't interesting, we've had it too many times 12:51 < bridge> vanilla players try to revive it though 12:52 < bridge> by playing only on aeon servers and refusing to enter bridge ones xd 12:52 < bridge> there's prob less than 100 or even 50 players 12:52 < bridge> please take this discussion to #off-topic if you want to continue it 12:53 < bridge> (unless you have new information, which I doubt) 12:53 < bridge> yeah true 13:01 < bridge> I don't plan to continue, but once there was mentioned stuff like a skeleton for people who wants to use ddnet base for custom mods. 13:01 < bridge> without 0.7 ddnet could have easily worked on smth to have server-side content (idk like custom guns, etc..) allowing more cool mods to be developed by the community. 13:01 < bridge> or even when you've all talked about the networking improvement part (to allow more efficient protections to be developed around). even if Davide has a workaround the most annoying thing that makes it more difficult to improve is the support to legacy clients 13:02 < bridge> > ddnet could have easily worked on smth to have server-side content (idk like custom guns, etc..) allowing more cool mods to be developed by the community. 13:02 < bridge> sounds cool, let's do that 13:02 < bridge> > even if Davide has a workaround the most annoying thing that makes it more difficult to improve is the support to legacy clients 13:02 < bridge> I don't even know if Davide has a workaround for 0.7 clients or not. but if not, that'd be fine 13:03 < bridge> I'm not sure what you're talking about. I don't think we had a feature declined because it couldn't work with 0.7 13:03 < bridge> recently you've talked about having tcp first for conn handling 13:03 < bridge> we can drop 0.7 support if it stands in the way of improvement 13:03 < bridge> yes, let's do that 13:04 < bridge> and m_Zoom multiplier would do the trick, ddnet wouldn't accept "player input changes" if it would break (ddnet) servers behaviour but this one just got through #8372 13:04 < bridge> and m_Zoom multiplier would do the trick, ddnet wouldn't accept "player input changes" if it would break (ddnet) servers behaviour but this one just got through #7512 13:10 < bridge> Is there really any benefit to that. Maybe it'll help with some firewall implementations. Do we even know if any of our hosters do it? 13:11 < bridge> davide said it'd help him tremendously 13:27 < bridge> So we just accept tcp connections then close them? Or do we need it alive? 13:27 < bridge> just open a tcp connection and that's it. we can close it immediately 13:27 < bridge> like to https://ger10.ddnet.org/ 13:28 < bridge> Oh doesn't have to be the exact port? 13:28 < bridge> no, just somewhere 13:28 < bridge> I'd just fire and forget a https request 13:28 < bridge> I think we even have an issue 13:28 < bridge> I think we even have an issue for it 13:29 < bridge> Perhaps we can also make this more generic? Allow servers to advertise a verify link 13:29 < bridge> https://github.com/ddnet/ddnet/issues/8210 13:32 < bridge> This issue says on the same port 13:33 < bridge> @davide55 does the TCP handshake need to be on the same port number as the UDP port number? 13:35 < bridge> <0xdeen> I don't think so, TCP and UDP ports are not related in any way, you can just have each server announce it's tcp-handshake-ip-port-combo 13:36 < bridge> I would also not think so, but I'd also not have guessed that a TCP handshake would help at all 13:38 < bridge> When I first heard it I assumed it's some bizarre firewall behaviour 13:43 < bridge> No 13:45 < bridge> fixed it 14:06 < bridge> You talkin go Huffman? Well the api changed from an unitialized raw go struct to the weird go styled fake constructor new function. Since I have no users I don’t mind to do breaking changes anyways xd 14:09 < bridge> Imo 0.6 should be dropped 14:11 < bridge> chillerdragon: the rules also apply to you. go to #off-topic for flamebait topics 14:14 < bridge> Yo btw when bridge off-topic? 14:14 < bridge> I thought it already was bridged 14:14 < bridge> only to matrix 14:14 < bridge> he's requesting IRC 14:14 < bridge> ah, probably never to irc 14:14 < bridge> Matrix cring 14:14 < bridge> not on my priority list right now 14:14 < bridge> although I agree that having an IRC bridge is kinda cool 14:15 < bridge> When leak priority list 14:15 < bridge> the bridges are literally only being used by 1 or 2 people for legitimate purposes and is only a tool to dodge moderation on discord 14:16 < bridge> why 14:16 < bridge> Yes 50% of those 1 or 2 ppl is me and I am a big supporter of no moderation @learath2 14:16 < bridge> its really cool 14:16 < bridge> Bugged and bloated. IRC is just so much smoother 14:16 < bridge> irc is the very best 14:16 < bridge> dont tell me you hate matrix bots 14:16 < bridge> good point. but I like having at least one non-proprietrary method to access our chat. I guess matrix is good enough for that 14:16 < bridge> thats the best part 14:17 < bridge> When non proprietary map submissions 14:18 < bridge> Matrix.org instance is basically proprietary xd 14:18 < bridge> why support an redefined and at the same time, slightly abandoned engine? 14:18 < bridge> why support a redefined and at the same time, slightly abandoned engine? 14:18 < bridge> I would setup a selfhosted matrix instance but I just don’t like it enough 14:18 < bridge> chillerdragon: ddnet matrix isn't hosted on matrix.org 14:19 < bridge> Well I am using matrix.org xd 14:19 < bridge> that's on you 14:19 < bridge> Sent from element on iOS 14:19 < bridge> Yes on me 14:20 < bridge> @cellegenrih: wat engine xd 14:20 < bridge> 0.7 14:20 < bridge> Yea it’s frustrating Oy is so inactive lately 14:21 < bridge> so inactive "lately" 14:21 < bridge> "lately" 💀 14:21 < bridge> this isn't a change 14:21 < bridge> lately 14:21 < bridge> He used to be more active imo 14:21 < bridge> brother I havent seen him since 0.7.4 14:21 < bridge> bro went missing for over a year 14:21 < bridge> https://en.wiktionary.org/wiki/lately 14:22 < bridge> "recently" "not too long ago" 14:22 < bridge> Yea I don’t recall ever waiting this long for oy return 14:22 < bridge> XDDD 14:22 < bridge> 4 years ago is still not too long ago right? 14:22 < bridge> Then another question, why wait for Oy? 14:22 < bridge> we have deen right here :owo: 14:22 < bridge> and heinrich 14:22 < bridge> because no one can be bothered to maintain teeworlds, including oy 14:23 < bridge> or chillerdragon 14:23 < bridge> deen and Heinrich don’t merge my 0.7 pr 14:23 < bridge> or chiller ye 14:23 < bridge> what 0.7 pr 14:23 < bridge> vote chiller for next engine creator 2k24 14:23 < bridge> you mean 0.7 features in ddnet? 14:23 < bridge> 0.7 support for ddnet client 14:23 < bridge> He had a sudden burst of activity there for a sec 14:23 < bridge> Which sec? 14:24 < bridge> You mean last time when he looked at 30% of the prs? 14:24 < bridge> I don't remember exact dates but I put in some work into editor2 and added the chat command menu thing 14:24 < bridge> oh cool, how would it work? 14:24 < bridge> for something to change, you need an active maintainer 14:24 < bridge> Bru that was like 2016 14:24 < bridge> if there's no one, there's no point in debating this 14:24 < bridge> oh cool, how would it work? (nvm) 14:25 < bridge> do you volunteer to maintain teeworlds? chillerdragon? 14:25 < bridge> Oy could assign some 14:25 < bridge> we would need a person first 14:25 < bridge> No 14:25 < bridge> find a volunteer and if I think they're even half-qualified I'll help you bring teeworlds back alive 14:26 < bridge> You guys need someone who knows the engine inside out and is willing to change certain ways the engine could function 14:27 < bridge> robsti 14:27 < bridge> Obv the 2 creators have different ideas in mind, they would rather just redo the engine from scratch 14:27 < bridge> have you asked whether he wants to maintain teeworlds, chillerdragon? 14:27 < bridge> this needs to be a volunteer 14:27 < bridge> not someone you assign 14:27 < bridge> I don’t recall I think we had that discussion before so I guess we don’t have anyone 14:28 < bridge> well thats fucked 14:28 < bridge> see. there's the problem. try to fix that 14:28 < bridge> No need for new teeworlds stuff anyways imo 14:28 < bridge> Just finally update ddnet to 0.7 and all good 14:28 < bridge> how so? to improve the way the engine could work, it needs to be done 14:29 < bridge> The game works well 14:29 < bridge> chillerdragon: if you mention porting ddnet to 0.7 without any new content one more time, I'm going to ban you for flamebiat 14:29 < bridge> Yes it does work, however it doesn't support things which can make it out of this era (0.6) 14:30 < bridge> 0.7 ain't some revolutionary aspect, where we can freely mod things or get more gamemodes without limitations 14:30 < bridge> The engine is no exception for this and modders or server devs have a harder time developing their own ideas without reinventing the wheel 14:30 < bridge> 0.7 isn’t about revolution or features it’s just keeping up with compatibility 14:31 < bridge> I swear to god, if I waited 6 years for a not revolutionary client, 14:31 < bridge> then it deserves not to be called a newer "teeworlds" 14:31 < bridge> Are you actively waiting? 14:31 < bridge> Still, yes, but not from ddnet developers naturally 14:31 < bridge> Yea the version breaking changes are a bit unfortunate 14:32 < bridge> porting ddnet to 0.7 in the current state of 0.7 is never going to happen 14:32 < bridge> I can guarantee you that. no current maintainer wants that 14:32 < bridge> it has been discussed with no ends 14:32 < bridge> I plan to make a new map editor, another is making a 2d to 3d render on their own engine using server data, one tried to make a rust compatibility 14:32 < bridge> Im seriously interested in a approximate priority list of yours @heinrich5991 14:33 < bridge> Where can I vote? Xd 14:33 < bridge> I plan to make a new map editor, another is making a 2d to 3d render on their own engine using server data, one still tries to make a fully functional rust compatibility 14:33 < bridge> chillerdragon: I'm currently extracting the compatibility code of ddnet 14:33 < bridge> look at this PR I just made at work, negative line count, still adds an entire feature 14:33 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1258400290357379082/image.png?ex=6687e819&is=66869699&hm=d2a1ac85dedf383a6bbcb4b0a5c00a9cc97b2ca10927e628121c57246407286a& 14:33 < bridge> even though my number one priority should be implementing QUIC 14:33 < bridge> and then accounts 14:34 < bridge> I’d like to give libtw2 snaps, ddnet proxy, ddnet ip redirects, \#7777 some priority votes hehe 14:34 < bridge> this is honestly not worth your time imo, the other two are far more important, we worked around the compatibility code for a decade now, we can handle a couple more years 😄 14:34 < bridge> I told you to proxy support instead -.- 14:35 < bridge> I know, but we're currently getting more compat code which I don't like. on two fronts, even 14:35 < bridge> add another decade to the list boys 14:35 < bridge> also, this could be reused should we want to integrate it into Jupstar's ddnet 14:35 < bridge> 10x developer 14:35 < bridge> chillerdragon: I'm accepting 20€/h to temporarily change my priority list 14:36 < bridge> btw, how are you planning on doing it? 0.7 and 128p support all require pretty intimate knowledge of the gamestate, will you be hooking in for that or will you be trying to recreate the state on a separate module? 14:36 < bridge> Xd 14:36 < bridge> Im broke 14:36 < bridge> separate module 14:36 < bridge> But nice 14:37 < bridge> wouldn't that in theory kinda double the work? That's why I avoided it, packing stuff up into packets, then unpacking and trying to figure out what state led to that packet sounded like such a waste of our cpu 😄 14:37 < bridge> yes. 14:37 < bridge> yes, it'll double the work 14:38 < bridge> but it's the only clean solution I see without introducing lots of work on maintenance 14:38 < bridge> Have you considered more precise hooks where the module can directly read into the gamestate? 14:38 < bridge> optimizations can be done later. I'd prefer to start from a clean slate at first 14:39 < bridge> but I feel most of the work you'll be doing can be avoided if we can cleanly use the real state instead of trying to recreate it 14:39 < bridge> I feel like this way my work can more easily be reused 14:39 < bridge> I mean it's your project, feel free to go about it however you like. I just attempted this before and it really annoyed me 😄 14:40 < bridge> because it's just like 5 hooks or so, all straightforward 14:40 < bridge> Sounds like rust it is, no? 😄 14:41 < bridge> it's indeed rust 14:41 < bridge> :poggers2: 14:41 < bridge> https://cxx.rs/ is actually nice to work with 14:42 < bridge> Never used tho 14:42 < bridge> But I thought aswell of rewriting some of our gRPC/protobuf stuff into rust in ddnet source itself 14:42 < bridge> Currently its cpp 14:42 < bridge> it's already integrated into ddnet 14:42 < bridge> that made it easy to start 14:42 < bridge> Yeah I've seen that 14:43 < bridge> Yea it really is easy to use 14:43 < bridge> But I havent had time to do so, still working on other stuff like new website & dnsbl 14:43 < bridge> I will aswell open source the dnsbl server & api on KoG Github 14:43 < bridge> Maybe someone with rust experience wants to contribute then 14:43 < bridge> Kog GitHub wot 14:44 < bridge> URL or didn’t happen 14:44 < bridge> I have one thing I would contribute to your dnsbl implementation 😄 14:44 < bridge> 👀 In the DNS answer itself? 14:44 < bridge> Yes, technically you are supposed to be returning an `NXDOMAIN`, you aren't 😄 14:45 < bridge> I can change that if you need 14:45 < bridge> It's not important, it's just something I noticed 14:46 < bridge> But we are not handling it, no? 14:47 < bridge> DDNet Source only checks if there is an A record set 14:47 < bridge> or empty 14:48 < bridge> I added a small transparent proxy that allows us to whitelist some ips. While implementing that I assumed you would be sending an NXDOMAIN, took me a couple minutes to figure out what was going on 14:48 < bridge> Oh 14:48 < bridge> Now I am returning NXDOMAIN 14:49 < bridge> lol 14:49 < bridge> hopefully I handled that properly 😄 14:49 < bridge> hi @p1mble 14:50 < bridge> Tbh I wanted to contribute to DDNet dnsbl for a long time 14:50 < bridge> But had no time to writeup my changes & why 14:50 < bridge> The server-side implementation 14:51 < bridge> You could also create an issue for it and maybe one of us would pick it up 14:51 < bridge> What are we lacking? 14:51 < bridge> Adding a more fine-grained control for dnsbl returns 14:52 < bridge> https://www.spamhaus.org/resource-hub/dnsbl/using-our-public-mirrors-check-your-return-codes-now./ 14:52 < bridge> Big DNSBL provideers like Spamhaus, they add specific 127.xxx.xxx.xxx return codes in A records to give more control in mailserver setups for example 14:54 < bridge> I think they also have TXT records right? 14:54 < bridge> So currently I only return the reversed ip, which is in fact compliant. But instead I want to return specific A addresses, so you can say 14:54 < bridge> 14:54 < bridge> Okay I want to block only cloud providers, but universities I want to allow 14:54 < bridge> You can add status messages to TXT, but A is used for ips 😄 14:55 < bridge> I mean to add something like a reason. I remember it being part of "standard" 14:55 < bridge> Mhmmm, ad hoc I cant remember any standard for TXT status reasons 14:55 < bridge> But I can add a reason if needed 14:55 < bridge> But there aswell, where do I get the reasons from? 😄 14:57 < bridge> Well idk, it is for if you want to include more information than you can convey in an ip address. The A Record is pretty much allowed to point to any ip so you can use that as a reason/category too 14:58 < bridge> Back in the days, the standard was to use 127.0.0.0/8 14:58 < bridge> RFC5782 2.1 paragraph 2 btw. It's technically a SHOULD even 😄 14:59 < bridge> > This RFC was published on the Internet Research Task Force (IRTF) stream. This RFC is not endorsed by the IETF and has no formal standing in the IETF standards process. 14:59 < bridge> 😄 15:00 < bridge> But yeah, I can add TXT aswell 15:00 < bridge> We already support IPv6, but its not used yet 15:01 < bridge> If we support TXT records, shall we output it to the console? 15:01 < bridge> But this could get spammy, no? 15:03 < bridge> Richard Stallman is mad at us 15:03 < bridge> Hm, it might be fine depending on the amount of blacklisted ips we encounter 15:04 < bridge> its a few millions a month 😄 15:04 < bridge> Guess what I am using 15:22 < bridge> it feels good when u fix a segfault 15:23 < bridge> (yes i get segfaults with rust, but cuz doing unsafe stuff with llvm compiled programs) 15:23 < bridge> you should write C then 15:23 < bridge> well i would better say, its the compiled program that triggers a segfault not rust 15:23 < bridge> so i fixed a compiler bug 15:24 < bridge> nein 15:25 < bridge> 🥔 15:25 < bridge> my language will be advertised to you as C sprinkled with some convenient shit 15:32 < bridge> does it use llvm as backend 15:32 < bridge> n..no 15:32 < bridge> gg ryo will not use it 15:33 < bridge> wait why did you choose to make it translate into nasm and then compile 15:33 < bridge> wait why did you choose to make it translating into nasm and then compiling 15:33 < bridge> how did I have to do it? 15:34 < bridge> using llvm as backend and something like bison as lexer and so on xd 15:35 < bridge> llvm would give you a lot of out of the box optimizations and you could concentrate yourself into design of language 15:35 < bridge> i wanted to make all the stuff myself 15:36 < bridge> using nasm is not doing all urself 15:36 < bridge> but its good tho xd 15:37 < bridge> i can make generator which will be spiting out zeroes and ones 15:38 < bridge> @milkeeycat nasm is not made to be used as a library but 15:38 < bridge> i have a suggestion that is 15:38 < bridge> https://www.keystone-engine.org/ 15:38 < bridge> it looks rly good 15:38 < bridge> and it can be used as a library 15:38 < bridge> https://www.keystone-engine.org/docs/tutorial.html 15:38 < bridge> > The following sample code presents how to compile 32-bit assembly instructions of X86 in C language. 15:39 < bridge> i can use it however i want 😏 15:39 < bridge> ok 15:39 < bridge> Generating machine code by hand is just a little too much unnecessary work 😄 15:39 < bridge> was just saying 15:40 < bridge> yeah but he probs uses nasm in a hacky way 15:40 < bridge> like making the file etc 15:40 < bridge> i think keystone is made more to fit what he wants 15:40 < bridge> ```c 15:40 < bridge> /* test1.c */ 15:40 < bridge> #include 15:40 < bridge> #include 15:40 < bridge> 15:40 < bridge> // separate assembly instructions by ; or \n 15:40 < bridge> #define CODE "INC ecx; DEC edx" 15:40 < bridge> 15:40 < bridge> int main(int argc, char **argv) 15:41 < bridge> { 15:41 < bridge> ks_engine *ks; 15:41 < bridge> ks_err err; 15:41 < bridge> size_t count; 15:41 < bridge> unsigned char *encode; 15:41 < bridge> size_t size; 15:41 < bridge> 15:41 < bridge> err = ks_open(KS_ARCH_X86, KS_MODE_32, &ks); 15:41 < bridge> if (err != KS_ERR_OK) { 15:41 < bridge> printf("ERROR: failed on ks_open(), quit\n"); 15:41 < bridge> return -1; 15:41 < bridge> } 15:41 < bridge> 15:41 < bridge> if (ks_asm(ks, CODE, 0, &encode, &size, &count) != KS_ERR_OK) { 15:41 < bridge> printf("ERROR: ks_asm() failed & count = %lu, error = %u\n", 15:41 < bridge> count, ks_errno(ks)); 15:41 < bridge> } else { 15:41 < bridge> size_t i; 15:41 < bridge> 15:41 < bridge> printf("%s = ", CODE); 15:41 < bridge> for (i = 0; i < size; i++) { 15:41 < bridge> printf("%02x ", encode[i]); 16:02 < bridge> yeah but now i can't map players cursor to their screen surface xd 16:03 < bridge> what's the use case for that? 16:03 < bridge> ingame interface using motd/broadcasts 16:04 < bridge> ah 😦 16:04 < bridge> ye that's why i was yapping xd 16:05 < bridge> @gerdoe so no interface for blockworlds™️ ? :( 16:05 < bridge> couldnt follow chat, was working 16:05 < bridge> in case of broadcasts i can use m_Direction but m_Target is necessary for working motd ui 16:05 < bridge> what kind of interface are you building? 16:06 < bridge> a selection? 16:06 < bridge> a selection, like a list box? 16:06 < bridge> yep 16:07 < bridge> perhaps you could add a proper UI to ddnet instead? 16:07 < bridge> i.e. have the server send a list box, let the client display the UI 16:08 < bridge> wanted to support both 0.6 and 0.7 but yeah i think its a proper way of implementing an actual interface 16:08 < bridge> you can still hack your way around the 0.7 client like you planned to 16:08 < bridge> correct 16:08 < bridge> i'll drop it anyway xddd 16:08 < bridge> if ddnet will do so 16:09 < bridge> 16:57 < bridge> makes sense 17:02 < bridge> chillerdragon wanting 0.7 port while heinrich making 0.7 compatibility code more maintainable. That's more or less the closest one can get to having 0.7 support. 17:03 < bridge> 👍 17:41 < bridge> https://cdn.discordapp.com/attachments/944647999529836554/1258060639344136222/bandicam_2024-05-23_23-01-22-026.mp4?ex=6687fd46&is=6686abc6&hm=34ebf8057dcab45b747b3e721df548d19910aea101f12ee2b2fd743317746f36& 17:43 < bridge> Took me back to 2012 17:45 < bridge> probably from 2012 actually 17:45 < bridge> :kek: 17:54 < bridge> I'd support work on #2875 but should probably be discussed first which use cases we want to support 17:54 < bridge> https://github.com/ddnet/ddnet/issues/2875 17:55 < bridge> yeah its actually mind blowing amount of cases you can think of 17:56 < bridge> currently im adding server side quad render request and textbox render request with ids so client can send net message with id and action 17:56 < bridge> small poc 17:56 < bridge> yeah, using any of our basic UI elements could be possible (text input, checkbox, scrollbar, number input, color input etc.) 17:57 < bridge> You'll need to figure out a wireformat to describe a ui aswell, it's a very annoying and tough problem 17:57 < bridge> oh yeah 17:57 < bridge> probably would have to differentiate between messages that are places on the map or non-interactive, and interactive UI forms, since you can only have one form/popup at a time 17:58 < bridge> probably would have to differentiate between messages that are places on the map or non-interactive, and interactive UI forms, since you can only have one active form/popup at a time 17:59 < bridge> about ingame quads: what do you think of map-patch net object which is actually map with deltas to change "overlaying" server-side managed map 17:59 < bridge> that will allow us to reuse map render and it will have less impact on number of netex messages 18:00 < bridge> so ui net code will come as completely another part 18:02 < bridge> I actually can't imagine anything simple that would allow laying out ui over the wire. Maybe a small bytecode that is intentionally not turing complete with commands like `vsplit` `hsplit` `dotextbox` `docheckbox` 18:02 < bridge> Do you really need to layout UI manually? I would think a linear layout of rows of UI elements would be enough 18:02 < bridge> ye sounds better than exploiting netexes xd 18:03 < bridge> manual ui will allow server modders make all kind of things and so its better imo 18:03 < bridge> You block traffic from millions of ips a month based on some list of known bad IPs? Are you sure there are no false positives? What kind of traffic is that even? Actual players with a real client? 18:08 < bridge> Using json to describe more complex UI layout seems possible :justatest: Would the maximum packet size be a concern then? 18:08 < bridge> ``` 18:08 < bridge> vsplit 2 4 18:08 < bridge> dotext "Login" center 18:08 < bridge> end 18:09 < bridge> hsplit 1 3 1 18:09 < bridge> end 18:09 < bridge> vsplit 1 1 1 1 1 18:09 < bridge> hsplit 1 2 18:09 < bridge> dotext "Username:" left 18:09 < bridge> end 18:09 < bridge> dotextbox 18:09 < bridge> end 18:09 < bridge> hsplit 1 2 18:09 < bridge> dotext "Password:" left 18:09 < bridge> end 18:09 < bridge> dotextbox 18:09 < bridge> end 18:09 < bridge> end 18:09 < bridge> end 18:09 < bridge> dobutton "Login" 18:09 < bridge> end 18:09 < bridge> end 18:09 < bridge> ``` 18:09 < bridge> not if server/client will translate it to bytecode :P 18:14 < bridge> does ddnet have some doxygen docs instance available online? 18:15 < bridge> ``` 18:15 < bridge> vsplit 2 4 18:15 < bridge> dotext "Login" center 18:15 < bridge> end 18:15 < bridge> hsplit 1 3 1 18:15 < bridge> end 18:15 < bridge> vsplit 1 1 1 1 1 18:15 < bridge> hsplit 1 2 18:15 < bridge> dotext "Username:" left 18:15 < bridge> end 18:15 < bridge> dotextbox 18:15 < bridge> end 18:15 < bridge> end 18:15 < bridge> hsplit 1 2 18:15 < bridge> dotext "Password:" left 18:15 < bridge> end 18:15 < bridge> dotextbox 18:15 < bridge> end 18:15 < bridge> end 18:15 < bridge> end 18:15 < bridge> dobutton "Login" 18:15 < bridge> end 18:15 < bridge> end 18:15 < bridge> end 18:15 < bridge> end 18:15 < bridge> end 18:15 < bridge> ``` 18:15 < bridge> https://codedoc.ddnet.org/ 18:16 < bridge> It's not very documented though 18:16 < bridge> anyone aware of an issue related to loading points/ranks ? 18:17 < bridge> because right now it seems like we can't do /points nor check the ranks 18:19 < bridge> hm the db server looks fine this time 18:19 < bridge> rank won't even be displayed when joining a new empty server with a map you finished before 18:20 < bridge> yeah it seems like nothing loads 18:20 < bridge> also indicating finish in browser doesnt work 18:24 < bridge> OH, the db server is not fine 18:24 < bridge> ``` 18:24 < bridge> Jul 04 18:14:16 ddnetdb2 systemd[1]: mariadb.service: Main process exited, code=killed, status=9/KILL 18:24 < bridge> Jul 04 18:14:16 ddnetdb2 systemd[1]: mariadb.service: Failed with result 'oom-kill'. 18:24 < bridge> ``` 18:24 < bridge> were you connected via ssh by chance on accident?! 18:24 < bridge> :Kek: 18:25 < bridge> @0xdeen perhaps you were a tad too generous with `innodb_buffer_pool_size` 18:32 < bridge> Also why didn't systemd in it's infinite wisdom restart this service? 18:36 < bridge> systemd can be setup to do so `Restart=on-failure` 18:36 < bridge> Why do I need to set that up? It never refrained for making decisions for me before 18:37 < bridge> https://www.freedesktop.org/software/systemd/man/latest/systemd.service.html 18:37 < bridge> 18:37 < bridge> ``` 18:37 < bridge> Restart= 18:37 < bridge> 18:37 < bridge> Configures whether the service shall be restarted when the service process exits, is killed, or a timeout is reached. The service process may be the main service process, but it may also be one of the processes specified with ExecStartPre=, ExecStartPost=, ExecStop=, ExecStopPost=, or ExecReload=. When the death of the process is a result of systemd operation (e.g. service stop or restart), the service will not be restarted. Timeouts include mis 18:37 < bridge> 18:37 < bridge> Takes one of no, on-success, on-failure, on-abnormal, on-watchdog, on-abort, or always. If set to no (the default), the service will not be restarted. If set to on-success, it will be restarted only when the service process exits cleanly. In this context, a clean exit means any of the following: 18:37 < bridge> 18:37 < bridge> exit code of 0; 18:37 < bridge> for types other than Type=oneshot, one of the signals SIGHUP, SIGINT, SIGTERM, or SIGPIPE; 18:37 < bridge> exit statuses and signals specified in SuccessExitStatus=. 18:37 < bridge> ``` 18:38 < bridge> https://www.freedesktop.org/software/systemd/man/latest/systemd.service.html 18:38 < bridge> 18:38 < bridge> ``` 18:38 < bridge> Restart= 18:38 < bridge> 18:38 < bridge> Configures whether the service shall be restarted when the service process exits, is killed, or a timeout is reached. The service process may be the main service process, but it may also be one of the processes specified with ExecStartPre=, ExecStartPost=, ExecStop=, ExecStopPost=, or ExecReload=. When the death of the process is a result of systemd operation (e.g. service stop or restart), the service will not be restarted. Timeouts include mis 18:38 < bridge> 18:38 < bridge> Takes one of no, on-success, on-failure, on-abnormal, on-watchdog, on-abort, or always. If set to no (the default), the service will not be restarted. 18:38 < bridge> 18:38 < bridge> If set to on-failure, the service will be restarted when the process exits with a non-zero exit code, is terminated by a signal (including on core dump, but excluding the aforementioned four signals), when an operation (such as service reload) times out, and when the configured watchdog timeout is triggered. If set to on-abnormal, the service will be restarted when the process is terminated by a signal (including on core dump, excluding the aforemen 18:38 < bridge> ``` 18:38 < bridge> i guess its just that restart is off by default, thats why you have to explicitly tell it to 19:02 < bridge> <0xdeen> ok, reducing 19:02 < bridge> @chillerdragon, any thought on adding two repos: varint and/or econ ? would like to split up twapi if you are fine with having those in your org? 19:28 < bridge> question, is the distance between the map border (white border which you are limited to build in) and the endless death tiles exactly 200 tiles? 19:33 < bridge> ```cpp 19:33 < bridge> bool CEntity::GameLayerClipped(vec2 CheckPos) 19:33 < bridge> { 19:33 < bridge> return round_to_int(CheckPos.x) / 32 < -200 || round_to_int(CheckPos.x) / 32 > GameServer()->Collision()->GetWidth() + 200 || 19:33 < bridge> round_to_int(CheckPos.y) / 32 < -200 || round_to_int(CheckPos.y) / 32 > GameServer()->Collision()->GetHeight() + 200; 19:33 < bridge> }``` 19:33 < bridge> yep 19:33 < bridge> ty for confirming :owo: 21:33 < bridge> https://www.teeworlds.com/forum/viewtopic.php?id=2339 21:38 < bridge> LOL 21:39 < bridge> systemctl status 21:42 < bridge> systemd has some restart options in ur unit .service file, some things would rather be restarted by their own means (like the transmission daemon prefers to be restarted with a specific signal) instead of just killing & spinning the same process up again 21:42 < bridge> also sorry for double ping if I did that 21:42 < bridge> didn't mean it 21:44 < bridge> :pepeangryping: systemctl poweroff 21:49 < bridge> I really need to add decorations to my ssh'd windows before I cause an incident. I almost did `rm -rf /boot/*` on ddnet.org 21:50 < bridge> °-° 21:50 < bridge> use a terminal emulator just for ddnet's ssh sessions 21:51 < bridge> Idk wym, I use a terminal emulator for all my terminals. Who even has physical terminals in 2024? 😄 21:52 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1258510764243812503/image0.jpg?ex=66884efc&is=6686fd7c&hm=7cbaf2ba17f2b0752f28373444a148a61dc9b3e7a9f598c4c45399dc93437e14& 21:52 < bridge> ah i wasnt specific enough, my bad :D 21:52 < bridge> 21:52 < bridge> i meant like, dont use your default emu for ddnet 21:53 < bridge> (e.g default -> alacritty, ddnet -> gnome's term) or smth xD 21:53 < bridge> I'll try to change the background color when I ssh 21:53 < bridge> I cba to maintain two different configs 21:54 < bridge> fair 22:09 < bridge> excellent idea 22:37 < bridge> even that sounds more complicated than what I would go for. a simple dialog with a number of buttons would be my start 22:48 < bridge> My only issue with that would be that every half measure we introduce has to be supported forever 22:56 < bridge> I think sending the client a list of options and the client selecting one (or escaping from the dialog) is straightforward enough that there's no problem in supporting it forever… I think 23:35 < bridge> a bad "full" measure might be even more annoying to support in the long term