00:10 < bridge> wehn a twinbop and its creator love eachother very much 00:11 < bridge> out comes a chillerdragon 00:11 < bridge> 😊 00:13 < bridge> i still dont get it 02:07 < bridge> some things are better learnt at an older age :D 02:11 < bridge> will we get accounts someday chillerbot? 02:11 < bridge> !roll 0 1 02:11 < chillerbot> 0 02:11 < bridge> okay gg 02:25 < bridge> u cant coin flip it 02:25 < bridge> probability / 100 of accounts ever chillerbot 02:25 < bridge> !roll 02:25 < chillerbot> 90 02:25 < bridge> fake 02:52 < bridge> `Value = 3.166667e+01` 02:52 < bridge> aka 31.7 plz 03:00 < bridge> do `%a` for more accurate reprensentation 03:00 < bridge> you just gotta learn to read it xd 03:00 < bridge> its what my ide does 06:33 < bridge> morning 07:10 < bridge> Morning femboys and others 07:12 < bridge> gm 07:13 < bridge> apparently you cannot set the path to an existing git binary in the zed editor 07:13 < bridge> kinda mind boggling 08:46 < bridge> https://blog.wesleyac.com/posts/ioapic-interrupts 09:24 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1401103304456409098/image.png?ex=688f0ea3&is=688dbd23&hm=0b9d44e766776255356767be1cb45139d26f50e8e189229ae8288e907f467497& 09:24 < bridge> pog got keyboard working, cuz i went hard way and use uefi instead of bios, the old pic is disabled, to i had to setup a local apic and i/o apic 09:24 < bridge> and parse de acpi table 09:24 < bridge> :justatest: 09:24 < bridge> and parse the acpi table 09:59 < ws-client> **** @Robyt3 what do you think about some kind of label for things that could make the client too op? 10:00 < ws-client> **** like improved dummy controls, console turing machines, or aim binds like #10561 10:00 < chillerbot> https://github.com/ddnet/ddnet/issues/10561 10:01 < ws-client> **** imo especially with those kind of issues we could use some help. Because most devs active on github are actually no power users who interact with that kind of stuff. 10:02 < ws-client> **** For example there are a few people that can do things with their dummy which totally goes over the head of the active devs. 10:33 < bridge> 1 - Milkeeys day is good 10:33 < bridge> 2 - Milkeeys day is average 10:33 < bridge> 3 - Milkeeys day is bad 10:33 < bridge> !roll 1 3 10:33 < chillerbot> 2 10:34 < bridge> 1 - greet everyone 10:34 < bridge> 2 - greet devs only 10:34 < bridge> 3 - greet noone 10:34 < bridge> !roll 1 3 10:34 < chillerbot> 2 10:34 < bridge> Morning devs 10:36 < bridge> 1 - say "i use tmux btw" 10:36 < bridge> 2 - say "i use neovim btw" 10:36 < bridge> 3 - say "i use rust btw" 10:36 < bridge> !roll 1 3 10:36 < chillerbot> 1 10:36 < bridge> i use tmux btw 10:44 < ws-client> **** spammers 10:45 < bridge> 1 - we are spammers 10:45 < bridge> 2 - we are no spammers 10:45 < bridge> 3 - chillerdragon is a spammer 10:45 < bridge> !roll 1 3 10:45 < chillerbot> 3 10:46 < ws-client> **** <:justatest:572499997178986510> 10:47 < ws-client> **** the bot is rigged 10:47 < ws-client> **** !roll 0 1 10:47 < chillerbot> 1 10:49 < bridge> Will we get accounts this year? 10:50 < bridge> !roll 0 1 10:50 < chillerbot> 0 10:50 < bridge> :feelsbadman: 10:55 < bridge> <01000111g> Will we all make it? 10:55 < bridge> <01000111g> !roll 0 1 10:55 < chillerbot> 0 10:55 < bridge> <01000111g> gg 10:56 < bridge> In what year will accounts be finished? 10:56 < bridge> !roll 2025 2025 10:56 < chillerbot> 2025 10:56 < bridge> <01000111g> omg nice 10:57 < bridge> does it do anything when sixup doesnt have the entities? 10:57 < bridge> doors, draggers etc 11:02 < ws-client> **** @kebscs the wrong value is currently not being red if that is what your asking 11:02 < ws-client> **** but its still wrong 11:04 < ws-client> **** !ping 11:04 < chillerbot> pong 11:04 < ws-client> **** remove roll command because of spam? 11:04 < ws-client> **** !roll 0 1 11:04 < chillerbot> 1 11:04 < ws-client> **** ok bye 11:40 < bridge> Not sure if it needs a separate label besides `needs-discussion`. Maybe add a label for issues that propose changes to client input. 11:46 < ws-client> **** i see 11:49 < bridge> @sollybunny Please update some of your open PRs before opening even more :justatest: 11:50 < ws-client> **** road to 69 prs 12:01 < ws-client> **** @robyt3 u said "That should already be realised by incrementing ANTIBOT_ABI_VERSION. Antibot always needs to be recompiled at the same time as the server or it usually results in crashes anyway." 12:01 < ws-client> **** u sure about that? 12:02 < ws-client> **** that should only be the case of the abi version also changed not every recompile 12:02 < ws-client> **** s/of/if/ 12:02 < ws-client> **** https://github.com/ddnet/ddnet/pull/9407#pullrequestreview-2652799597 12:06 < bridge> I think other changes also caused problem in the past, because some base code is shared. For example https://github.com/ddnet/ddnet/commit/18cfbb53f9824dc35b07750302f310d1e3f66b63 broke ABI compatiblity 12:07 < ws-client> **** shared in the ABI it self or in the ab module ddnet uses? 12:08 < bridge> I don't know the implementation either, but I assume it only dynamically links the functions 12:08 < bridge> #6352 12:08 < bridge> https://github.com/ddnet/ddnet/issues/6352 12:08 < ws-client> **** the way i understood it the antibot module should not call any server symbols and its binary should be distributable to any ddnet server with the same ABI version 12:09 < bridge> yeah, that would be ideal, but I think it still uses base functions 12:09 < ws-client> **** lerato once shared some ab compilation command and heinrich also revealed some internals via email based on that i assumed that ddnet antibot is fully selfcontained 12:10 < ws-client> **** in antibob i use base functions too but i do not depend on them being compatible with the server o.O 12:10 < ws-client> **** i only depend on the log_info etc functions not to change 12:11 < ws-client> **** i just reimplemented mem_copy in my antibot module, ez 12:11 < ws-client> **** https://github.com/ChillerDragon/antibob/blob/8cdbaff5b56f5f377d75f244ad077920f4942531/src/ddnet/polybob/base/system.cpp#L137 12:11 < ws-client> **** i got no crashes so far 12:11 < ws-client> **** i dont even need the server source to compile 12:11 < ws-client> **** so i can also target closed source ddnet servers with my antibot module 12:12 < bridge> yeah, that probably makes more sense 12:12 < ws-client> **** i was 100% sure ddnet does that too 12:12 < bridge> I assume we wouldn't have had the then issue 12:12 < ws-client> **** i see 12:12 < bridge> I assume we wouldn't have had the issue then 12:12 < ws-client> **** thats why im asking, interesting 12:13 < ws-client> **** ez ddnet social engineer reverse engineering 12:13 < ws-client> **** chillerbot-zx gonna go brr 12:24 < bridge> 👀 12:28 < bridge> chillerdragon: it's yours 12:29 < bridge> Chiller on his way to distribute his module just for it to be sold within 30 minutes 12:30 < ws-client> **** oke fred thanks for the response withing 0 business days @ChnFreddie 12:32 < ws-client> **** @melon nah im not rookie my antibot saas will not be binary open. The antibot module you get will just send input data to my backend server and get a http response if it is a cheater or not. 12:33 < ws-client> **** voldemort devs are making big stonks right now but you dont understand how unimaginable rich i will be when i start to suck in all donation money from any server provider 12:33 < chillerbot> You can see donors and how to donate here https://ddnet.org/funding/ 12:33 < bridge> lol 12:33 < bridge> Idk as a server owner having to rely on a flag system I don't control.. 12:34 < ws-client> **** its antibot in the cloud with monthly license fee 12:34 < bridge> ew 12:34 < ws-client> **** i think you dont understand how op my ab is 12:34 < bridge> Hey you sniffed me okay 12:34 < bridge> I helped 12:34 < ws-client> **** xd 12:34 < bridge> I get atleast 25% 12:34 < ws-client> **** ok fair 12:35 < ws-client> **** you will also continue to work 40h a week right? 12:35 < bridge> On the other hand, is your ab's focus on fng ? 12:35 < bridge> :feelsbadman: 12:35 < bridge> https://tenor.com/view/money-gif-11341170073272671015 12:35 < ws-client> **** as the first employee of zillyhuhn ab enterprise and partners 12:35 < bridge> :kek: 12:35 < ws-client> **** @melon no 12:35 < ws-client> **** its just tested mainly on fng because thats the only source of cheaters i have 12:36 < bridge> Open up a copy love box server 12:36 < ws-client> **** i added some command to redirect all cheaters to another server 12:36 < ws-client> **** helped to get players in zcatch xd 12:36 < bridge> Ez sniffing 40 botters each day 12:36 < ws-client> **** good idea actually 12:36 < ws-client> **** but i have enough data for now 12:36 < bridge> There is never enough test data while fighting 10x devs 12:37 < ws-client> **** xd 12:37 < ws-client> **** melon voldemort dev fanboi 12:37 < ws-client> **** my ab has a 100% detection rate for the illegal cheat client chillerbot-zx 12:38 < ws-client> **** so i think 50$ is a fair monthly fee for 200 ab check requests 12:38 < ws-client> **** wait? monthly and per request? ye i guess 200 tops and you have to repay every month even if you use 0 12:38 < ws-client> **** sounds fair 12:39 < ws-client> **** work on tclient=1 work on ddnet=0 12:39 < ws-client> **** !roll 0 1 12:39 < chillerbot> 1 12:39 < ws-client> **** ez 12:40 < bridge> Nooo chiller, 5 free requests and 20cents each 12:40 < bridge> Nooo chiller, 5 free requests and 20cents each after 12:40 < ws-client> **** also sounds good 12:41 < ws-client> **** lure them in 12:46 < bridge> spam 12:59 < bridge> This doesnt scale well sadly 12:59 < bridge> @robyt3 I am thinking about changing EditorHistoryLogic, removing `Redo` and adding `Apply` instead, which also takes a bool `first`. So instead of doing an editor operation, you create the history object and apply it. This would also allow us to unit test them 13:06 < ws-client> **** @avolicious how do i obtain the name ChillerDragon on beta servers? 13:06 < bridge> Just login 13:07 < ws-client> **** did not work for me 13:08 < bridge> @chillerdragon you commented to 2 issues then went back 2 ddnet x-x 13:08 < ws-client> **** https://zillyhuhn.com/cs/.1754132904.png 13:09 < ws-client> **** @Solly (bun bun) nah didnt do ddnet yet i will try one tater issue to please the holy oracle chillerbot rng 13:09 < ws-client> **** its bad karma to ignore its response 13:09 < bridge> you could do chatbubbles 13:09 < ws-client> **** nah too hard 13:09 < bridge> if you want 13:09 < bridge> (i dont wan to) 13:09 < ws-client> **** xd 13:10 < ws-client> **** first i gotta yap up avo 13:10 < bridge> its like ui 13:10 < bridge> but in game 13:10 < bridge> can you partition for enabling of /practice while youre at it 13:10 < ws-client> **** practice for noobs 13:10 < ws-client> **** we need /swap 13:11 < ws-client> **** and /map 13:11 < ws-client> **** @Solly (bun bun) tclient doesnt have client side /practice? cringe 13:11 < bridge> auisd how 13:11 < bridge> you want it to tas? 13:11 < ws-client> **** just spin up local server 13:12 < bridge> oh right 13:12 < bridge> no 13:12 < bridge> wheres the convenience in that 13:12 < ws-client> **** well it would be as convenient 13:12 < ws-client> **** because you can do it mid run without kill 13:12 < bridge> playing maps alone on a solo server is extremley lonely 13:12 < bridge> playing maps alone on a lan server is extremley lonely 13:12 < ws-client> **** u practice w friends? 13:12 < ws-client> **** cant relate got no friends 13:16 < ws-client> **** @Solly (bun bun) why is tater CI such a wasteland 13:16 < ws-client> **** go merge some prs 13:16 < bridge> did i fuck it 13:17 < ws-client> **** i sent like 4 prs to fix CI and its still not done 13:18 < bridge> ah mate i havent enabled github push notificatons 13:18 < bridge> im an absolute wreckkk 13:21 < ws-client> **** fr 13:22 < ws-client> **** i dont want to get 20 emails when working on tclient 13:22 < ws-client> **** pls fix 13:25 < bridge> @chillerdragon my pc just died due to you 13:25 < ws-client> **** deserved 13:25 < bridge> Bruh 13:25 < bridge> I got the 5 beeps of doom 13:25 < bridge> Then it just turns on? 13:25 < bridge> The fuck 13:27 < bridge> It only beeps when there's an hdmi shoved into it? 13:28 < bridge> Bruh whatttt the fuck 13:30 < ws-client> **** maybe u wiggled the hdmi 13:32 < bridge> The rename doesn't seem necessary, I prefer the naming of `Undo`/`Redo`, otherwise it should be `Apply`/`Unapply`. And there are already various `Apply` functions in some editor actions. Ideally, all editor actions would only be implemented by `IEditorAction`s being executed on editor histories. You can already unit test the editor in its current state I think. 13:38 < bridge> @chillerdragon no it was the cable of doom 13:38 < bridge> which i had lost into the pile of others since moving 13:42 < bridge> @chillerdragon i handnt got dilation errors before 13:42 < bridge> now i have 13:42 < bridge> what did u do 13:42 < ws-client> **** i sshd into github server and did some trolings 13:42 < bridge> can u fix it x-x 13:42 < ws-client> **** i guess you turned on your email notifications 13:42 < bridge> (idrc about messy commit history) 13:42 < ws-client> **** btw i think i know how i caused the issues 13:42 < bridge> no u told me there was waiitng prs 13:43 < ws-client> **** they were hidden by other issues i fixed 13:43 < bridge> but the pr was changing all the imgs 13:43 < ws-client> **** fail fast ah type beat 13:47 < bridge> @chillerdragon are you fixing it or should i 13:47 < bridge> i dont want to step on ur toes 13:47 < ws-client> **** dilate? 13:48 < ws-client> **** i wanna get ma feature merged first you can fix in the meantime 13:48 < bridge> okayy ill try 13:56 < ws-client> **** @Solly (bun bun) nsfw https://zillyhuhn.com/cs/.1754135757.png 13:57 < bridge> yah u got a problem wiutht aht 13:57 < ws-client> **** no its hot 13:57 < bridge> epic 13:58 < ws-client> **** lmao chillerbot-ux had same git conflict like tater 13:58 < bridge> where? 13:59 < bridge> for when you pulled master? 13:59 < bridge> for when you pulled master in ur pr? 13:59 < ws-client> **** ye 13:59 < ws-client> **** some bitsh edited bottom of client.h class 13:59 < bridge> i wish u could cancel multiple gh workflows at once 13:59 < bridge> gameclient? 13:59 < ws-client> **** engine client 13:59 < bridge> ah, my ide was hiding the file 13:59 < ws-client> **** its probably some antibot measurement 14:00 < ws-client> **** to annoy cheat devs 14:00 < bridge> right 14:00 < ws-client> **** right 14:00 < bridge> if they have to wade through merge conflicts 14:00 < bridge> theyw ill stop making cheats 14:00 < ws-client> **** fr 14:00 < ws-client> **** or stop updating and eat version bans 14:01 < bridge> x-x 14:01 < ws-client> **** rossbit is antibot pinoeer smh 14:01 < ws-client> **** pinoeer 14:01 < bridge> pioneer 14:01 < bridge> ? 14:01 < ws-client> **** yes xd 14:02 < ws-client> **** @Solly (bun bun) u should be ddnet maintainer contributing to tclient was fun af 14:02 < bridge> epic 14:02 < bridge> no more tlcient contributions for the next 6m then? 14:02 < bridge> no more tlcient contributions for the next 6mon then? 14:02 < ws-client> **** i have one epic pr pipelined 14:03 < bridge> is it chat bubbles 😵‍💫 14:03 < ws-client> **** non nsfw commit messages are cool right? 14:03 < bridge> uhmm 14:03 < bridge> they are prefered 14:03 < ws-client> **** xd 14:03 < ws-client> **** nice 14:03 < ws-client> **** will tater go bonkers when he is back? 14:03 < bridge> have useen commit history 14:03 < bridge> its mostly me 14:03 < bridge> apart from at release where he undoes some stuff 14:03 < ws-client> **** wowo u the goat 14:03 < bridge> then 👍 14:04 < bridge> thanks 14:04 < bridge> i used to havea client 14:04 < bridge> then the merge conflicts came 14:04 < bridge> and i evacuated my features to tclient 14:04 < ws-client> **** one botter down 14:04 < bridge> noo 14:08 < ws-client> **** @Solly (bun bun) oke now im done with tclient for 6 months 14:10 < bridge> i guess uve done as much as teero lmao 14:11 < ws-client> **** hrhrhrhr 14:12 < ws-client> **** https://zillyhuhn.com/cs/.1754136719.png 14:17 < ws-client> **** @robyt3 maintaining my udp dumper branch is becoming annoying. I am about to nuke it. Concluding the asan -1 datasize issue is caused by packets hallucinated on the server side and not sent by the client 14:17 < ws-client> **** or what do you think? 14:17 < bridge> white 14:17 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1401177201419878535/image.png?ex=688f5375&is=688e01f5&hm=b115c642449d9280a3f92e22f94c7177142852f6f37baac0a70f4f24db0fac12& 14:18 < ws-client> **** updating my daily driver client right now is: merge chillerbot-ux into ddnet, merge chillerbot-zx into chillerbot-ux, merge zx branch into tmp_dbg_patch branch 14:18 < ws-client> **** @Solly (bun bun) hot that you are co author there 14:18 < ws-client> **** wait you are not 12 right? 14:18 < bridge> im moderator silly 14:18 < bridge> i have to look atleast 16 14:18 < ws-client> **** still weird 14:18 < bridge> (im 19, no one wished me happy birthday) 14:18 < ws-client> **** forgot i said anything im over 40 years old 14:19 < ws-client> **** when bday? 14:19 < bridge> oop 14:19 < bridge> 9 july 14:19 < ws-client> **** old souly 14:19 < bridge> bruh 14:19 < bridge> youre 40 14:19 < ws-client> **** rude 14:19 < ws-client> **** what is my age? 14:19 < bridge> well considering youre actually oevr 40 14:19 < bridge> im being nice 14:19 < ws-client> **** !roll 14:19 < chillerbot> 91 14:19 < ws-client> **** <:justatest:572499997178986510> 14:19 < bridge> :) 14:22 < bridge> omw to test it holdon 14:22 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1401178416010494112/image.png?ex=688f5497&is=688e0317&hm=f08434eefd82d625eeeeedce8222458db929e6c9e8cdcb22a50faf5c87427ab0& 14:22 < bridge> i wish cmake was smarter about git 14:22 < ws-client> **** enjoy sexfaults 14:23 < bridge> from all the dilation 14:23 < ws-client> **** dilusional tclient 14:24 < ws-client> **** we gotta fix the weird integration test caused by merge tho 14:24 < ws-client> **** i smh wanna see the CI green 14:25 < bridge> @chillerdragon warlist was implemented without looking at you 14:25 < bridge> 👀 14:25 < bridge> name near finish i did look at urs 14:25 < ws-client> **** a 14:25 < bridge> delololololeoleueleule 14:25 < ws-client> **** tru u even posted here 14:25 < bridge> What I mean is we have a lot of actions which are applied and then a history object is created, instead of vise versa 14:26 < ws-client> **** commenting on my genius IsNearFinish code 14:26 < bridge> it was no genuis 14:26 < ws-client> **** rude 14:26 < bridge> im sorry why you checking a checkerboard pattern 14:26 < ws-client> **** dont u dare shame my code 14:27 < bridge> That's what I mean. Editor actions are objects in the history, implementing the command pattern. 14:31 < bridge> @chillerdragon it didndt fail 14:31 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1401180492644221078/image.png?ex=688f5686&is=688e0506&hm=54b6a585393e560fb1786061490466be13fca00ee13b1049956c53f79f13f9af& 14:31 < bridge> it just shows red 14:31 < bridge> when its not done 14:31 < bridge> stupiod 14:31 < bridge> AH I KNOW WHY IT CANT DILATE 14:32 < bridge> AH I KNOW WHY IT CANT DILATE (tclient context) 14:50 < ws-client> **** @Solly (bun bun) do you accept patches for t#48 ? its the oldest and most upvoted issue 14:50 < chillerbot> https://github.com/sjrc6/TaterClient-ddnet/issues/48 14:51 < bridge> thx @kebscs ❤️ 14:53 < bridge> the tune tile pr? 14:53 < bridge> np 14:54 < ws-client> **** loony tunes ah pr 14:54 < ws-client> **** omg guys i had too much coffee 14:57 < bridge> @chillerdragon melon started workingon it and probably died to feature creep @blaiszephyr 14:57 < ws-client> **** so i can pick it up? xd 14:58 < bridge> `draws a catoonish tunnel in the whole, sees bird skin player disappear` 14:58 < bridge> `draws a catoonish tunnel in the wall, sees bird skin player disappear` 14:58 < bridge> man my cofee still needs to do it's job 14:58 < ws-client> **** :coffee: 15:00 < bridge> @chillerdragon wait for @blaiszephyr 15:00 < bridge> @blaiszephyr 15:00 < bridge> ChillerDragon: its basically ready but i didnt like the way the potato looked so i dumped the entire thing, feel free to pick it up 15:00 < bridge> 15:00 < bridge> make it look good tho. 15:01 < ws-client> **** send ur code 15:01 < ws-client> **** open draft pr 15:02 < bridge> if i say i dumped the entire thing, i mean it 15:02 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1401188394503114853/image.png?ex=688f5de2&is=688e0c62&hm=40a21a3a7a1d93f5c698dc899b1d507ad0daaf31c69d569a456f1a21b5e9c2b7& 15:02 < bridge> :kek: 15:02 < ws-client> **** ewwww 15:02 < ws-client> **** can u pls put such kind of windows screenshots in a spoiler behind a trigger warning 15:03 < bridge> :nobytroll: 15:03 < bridge> @blaiszephyr try reflog 15:03 < bridge> they may be hiding 15:03 < ws-client> **** reflog never forgets 15:03 < ws-client> **** unless u wipe the .git or do git garbage collector stuff 15:03 < bridge> cd ../ && sudo rm -rf ddnet && git clone git@github.com:ddnet/ddnet.git 15:04 < bridge> `cd ../ && sudo rm -rf ddnet && git clone git@github.com:ddnet/ddnet.git` 15:04 < ws-client> **** @melon how can it not look good btw? 15:04 < bridge> undilated image of potato from google is fine 15:04 < bridge> it was just a potato, i wanted it to be a cool RGB rotating potato 15:04 < bridge> and pl;ay mlg music? 15:04 < ws-client> **** https://zillyhuhn.com/cs/.1754139882.png 15:05 < ws-client> **** the issue does not specify rgb btw 15:05 < bridge> https://youtu.be/H4FbRfeOl-8?t=20 (timestamped) 15:06 < bridge> https://youtu.be/EXEbZPQHVTg 15:06 < bridge> the hit sound would be epic for osu 15:11 < ws-client> **** @Solly (bun bun) u force pushed my ass 15:11 < bridge> uhh yeah 15:12 < bridge> rebase your ass 15:12 < ws-client> **** oke 15:12 < bridge> git rebase HEAD~1 --onto tater/master 15:12 < ws-client> **** ``git reset --hard tater/master`` 15:12 < bridge> but ur changes!! 15:12 < ws-client> **** a no changes 15:12 < ws-client> **** my master broke 15:12 < bridge> ``` 15:12 < bridge> git reset --soft HEAD~1 15:12 < bridge> git stash 15:13 < bridge> git reset --hard tater/master 15:13 < bridge> git stash pop 15:13 < bridge> ``` 15:13 < bridge> :) 15:13 < ws-client> **** git stash poop 15:13 < bridge> rebase is overrated 15:13 < bridge> oh good point i have some important stuff on my stash 15:13 < bridge> which i stashed due to doing ur chagnes 15:14 < ws-client> **** u recover stuff from ur stash? 15:14 < ws-client> **** https://zillyhuhn.com/cs/.1754140436.png 15:14 < ws-client> **** my stashes tend to get forgettn forever 15:16 < bridge> i only got 28 15:16 < bridge> most of them are garbage due to my misuse of stash as rebasing 15:16 < bridge> i mostly use it as a stack 15:16 < bridge> to move changes around without having to deal with git 15:17 < bridge> get this commit from here to here without dying? use stash today! 15:17 < ws-client> **** what the windows want? 15:17 < ws-client> **** https://github.com/ChillerTater/TaterClient-ddnet/blob/8716ec301b2464602b96e7e3b46f0fb8ec86d9bb/src/game/client/components/tclient/mod.cpp#L148 15:17 < ws-client> **** ``C:/mingw64/lib/gcc/x86_64-w64-mingw32/12.2.0/include/c++/bits/char_traits.h:431:56: error: 'void* __builtin_memcpy(void*, const void*, long long unsigned int)' accessing 9223372036854775810 or more bytes at offsets [2, 9223372036854775807] and 1 may overlap up to 9223372036854775813 bytes at offset -3 [-Werror=restrict]`` 15:18 < bridge> ognna need more info 15:18 < ws-client> **** https://github.com/sjrc6/TaterClient-ddnet/actions/runs/16693651702/job/47254747218 15:18 < bridge> ah yea 15:18 < bridge> had this issue in master too 15:18 < bridge> idk how it got solved 15:18 < bridge> i think its to do with internal use of signed ints 15:19 < bridge> that bytecount just screams overflow 15:19 < bridge> is the passed var uninitialized? 15:19 < bridge> is the passed int uninitialized? 15:19 < bridge> `m_Content = "'" + std::string(pStr) + "' is not a valid id";` 15:19 < bridge> is the passed int uninitialized / can it be? 15:19 < bridge> pstr is passed in 15:20 < bridge> if (pStr && *pStr) { }; 15:20 < bridge> i assume pStr is just garbage 15:20 < bridge> pStr isnt garbage ):< 15:20 < bridge> its clients[id].m_aName 15:20 < bridge> it cant be garbage 15:20 < ws-client> **** have you played on kog before? 15:21 < ws-client> **** i have seen some garbage names 15:21 < bridge> i assume they are null terminated atleast 15:21 < bridge> due to client verification 15:21 < ws-client> **** what if the client is not connected? 15:21 < bridge> then you cant get this msg 15:21 < bridge> pass it in directly then :Clueless: 15:21 < ws-client> **** maybe just dont use std::string 15:21 < bridge> but its just so convenient 15:21 < bridge> 😭 15:22 < ws-client> **** use char like gigachad <:gigachad:960830678465933403> 15:22 < ws-client> **** souly the soy dev 15:22 < bridge> `m_Content = "'" + clients[id].m_aName + "' is not a valid id";` 15:22 < bridge> nothing supposedly stops you from doing this 15:22 < ws-client> **** wtf melon 15:22 < bridge> oh wait 15:22 < bridge> thats from command 15:22 < bridge> not client 15:22 < bridge> so it defiantley cant be invalid 15:23 < ws-client> **** must be compiler bug then 15:23 < ws-client> **** i will email bill gates sec 15:23 < bridge> theres already a issue 15:24 < bridge> same happens on a few versions of gcc i thinks 15:24 < bridge> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105329 15:25 < bridge> maybe ill just assert its length 15:48 < bridge> Try to convert each term to an `std::string` (or only the first one?), I think I've seen something similar in another PR, but I don't know why this happens either 15:51 < bridge> I found this eariler, and fixed by using .append() 15:52 < bridge> Same +operator on string and const char* 17:18 < bridge> why does my fps drop so much when seeking thorugh a demo by tick 17:21 < bridge> because it uses SetPos which goes through the file again 17:22 < bridge> Use profiler, or add `time_get_nanoseconds` calls to measure average seeking time 17:22 < bridge> ```cpp 17:22 < bridge> // playback everything until we hit our tick 17:22 < bridge> while(m_Info.m_NextTick < WantedTick && IsPlaying()) 17:22 < bridge> DoTick(); 17:22 < bridge> ``` 17:22 < bridge> ): 17:36 < bridge> why is there a blank when i am choosing custom res? 17:36 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1401227093756608552/image.png?ex=688f81ec&is=688e306c&hm=f4198a1b6706113e473f02a4c2408dbe7c12428b114d562e452cb09082d9d300& 17:42 < bridge> ddnet has a limits on resolution 17:42 < bridge> tclient has tc_any_resolution 17:42 < bridge> well uhh i think the comparison from half my fps to instant is pretty good 17:44 < bridge> The question is which code in particular 17:45 < bridge> well its gotta be the loop 17:45 < bridge> goes back to last keyframe then runs forward again which is uneeded 17:45 < bridge> instead of just going forward 17:45 < bridge> I prefer measurements 17:45 < bridge> its gonna be a big number x-x 17:45 < bridge> Or a fully mathematical proof 17:46 < bridge> Or a full mathematical proof 17:46 < bridge> if i hold down `.` 17:46 < bridge> in ddnet i get 60fps 17:46 < bridge> in ddnet + 17:46 < bridge> ```cpp 17:46 < bridge> if(WantedTick == m_Info.m_NextTick + 1) 17:46 < bridge> { 17:46 < bridge> DoTick(); 17:46 < bridge> Play(); 17:46 < bridge> return true; 17:46 < bridge> } 17:46 < bridge> ``` i get 120fps 17:46 < bridge> if i hold down `.` 17:46 < bridge> in ddnet i get 60fps 17:46 < bridge> in ddnet + 17:46 < bridge> ```cpp 17:46 < bridge> if(WantedTick == m_Info.m_NextTick + 1) 17:47 < bridge> { 17:47 < bridge> DoTick(); 17:47 < bridge> Play(); 17:47 < bridge> return true; 17:47 < bridge> } 17:47 < bridge> ``` i get 120fps (my max fps) 17:47 < bridge> is that not rigerous 17:47 < bridge> of course i should probably make that general if its within the keyframe to not go backwards instead of only handling going forward a single tick 17:49 < bridge> If you only want to go to the next tick, then you could maybe just play the demo for a precise time, then it would even be smoothed with intra tick. 17:49 < bridge> this isnt about normal playback 17:49 < bridge> its about seeking 17:49 < bridge> its about seeking (using SetPos) 17:50 < bridge> As I said, measure what is actually slow about it inside those functions 17:50 < bridge> ```cpp 17:50 < bridge> size_t KeyFrame = std::clamp(m_vKeyFrames.size() * Percent, 0, m_vKeyFrames.size() - 1); 17:50 < bridge> while(KeyFrame < m_vKeyFrames.size() - 1 && m_vKeyFrames[KeyFrame].m_Tick < KeyFrameWantedTick) 17:50 < bridge> KeyFrame++; 17:50 < bridge> while(KeyFrame > 0 && m_vKeyFrames[KeyFrame].m_Tick > KeyFrameWantedTick) 17:50 < bridge> KeyFrame--; 17:50 < bridge> ``` 17:50 < bridge> this could be binary search right? 17:50 < bridge> Would probably be slower 17:50 < bridge> in a large demo tho 17:51 < bridge> This already does a lookup using the percentage 17:51 < bridge> its probably not that long 17:51 < bridge> It's not binary, it's just goes to the correct keyframe +-2 immediately I guess 17:51 < bridge> It's not binary, it just goes to the correct keyframe +-2 immediately I guess 17:52 < bridge> You'd have to test and measure how accurate this is, probably depends on the amount of data per keyframe being similar 17:52 < bridge> i dont think tahts the main part 17:53 < bridge> am measuring :P 17:55 < bridge> Should be simple with `time_get_nanoseconds` calls around relevant blocks, then aggregate the values and count how many samples you have, then log results after a while 17:55 < bridge> Or actual profiler 17:55 < bridge> ``` 17:55 < bridge> 2025-08-02 15:54:55 I DEBUG: find keyframe = 562 17:55 < bridge> 2025-08-02 15:54:55 I DEBUG: seek file = 11897 17:55 < bridge> 2025-08-02 15:54:55 I DEBUG: play = 42086798 17:55 < bridge> ``` 17:55 < bridge> (nanoseconds) 17:56 < bridge> they change quite alot but are withint he same order of magnitue 17:56 < bridge> they change quite alot but are withint he same order of magnitude 17:56 < bridge> You need to measure at least a few thousand times to get comparable results 17:56 < bridge> sigh 17:56 < bridge> im gonna get the same numbers 17:57 < bridge> The relative results will likely be the same, yeah 17:57 < bridge> But I think the times for the first two steps are not accurate with only one sample at that scale 17:58 < bridge> is there a way to find admin on ban mute kick etc. I'm making an audit log system 17:58 < bridge> you can tell where the keyframes are becuase it starts at 120fps and slowly goes down to 30 17:59 < bridge> Not sure that's solvable, you need to replay the ticks to get the correct state, though visual effects are already skipped 17:59 < bridge> not if youre going forwards 17:59 < bridge> the player does already does it 17:59 < bridge> just do what the player does every tick just once 18:01 < bridge> Should be possible by looking for log messages like this: 18:01 < bridge> ``` 18:01 < bridge> server: ClientId=0 authed with key=local-server (admin) 18:01 < bridge> server: ClientId=0 rcon='muteid 0 30' 18:01 < bridge> ``` 18:01 < bridge> Then give all admins/mods different keys to identify them 18:02 < bridge> Thanks, now for the next hours I will be implementing this to my build 18:02 < bridge> Thanks, now for the next 24 hours I will be implementing this to my build 18:02 < bridge> ```bash 18:02 < bridge> $ ./DDNet > file 18:02 < chillerbot> $ is reprecated reverse moved back to ! 18:02 < bridge> $ cat file | grep "DEBUG: seek" > fileseek 18:02 < chillerbot> $ is reprecated reverse moved back to ! 18:02 < bridge> $ cat file | grep "DEBUG: find" > filefind 18:02 < chillerbot> $ is reprecated reverse moved back to ! 18:02 < bridge> $ cat file | grep "DEBUG: play" > fileplay 18:02 < chillerbot> $ is reprecated reverse moved back to ! 18:02 < bridge> $ awk '{ sum += $NF; count++ } END { if (count > 0) print sum / count }' fileseek 18:02 < chillerbot> $ is reprecated reverse moved back to ! 18:02 < bridge> 7719.02 18:02 < bridge> $ awk '{ sum += $NF; count++ } END { if (count > 0) print sum / count }' filefind 18:02 < chillerbot> $ is reprecated reverse moved back to ! 18:02 < bridge> 204.046 18:02 < bridge> $ awk '{ sum += $NF; count++ } END { if (count > 0) print sum / count }' fileplay 18:02 < chillerbot> $ is reprecated reverse moved back to ! 18:02 < bridge> 2.43504e+07 18:02 < bridge> ``` 18:02 < bridge> :monkaStop: 18:02 < bridge> @chillerdragon 18:03 < bridge> omg 18:03 < bridge> `$$$$$` 18:03 < bridge> the line has to start with a $ 18:03 < bridge> okay it's only the newlines 18:04 < bridge> now we know a single message to get the bot banned ... 18:05 < bridge> @robyt3 i forgot to record to file 18:05 < bridge> but uhh 18:05 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1401234416616869989/image.png?ex=688f88be&is=688e373e&hm=3579e8df188bfd381a44e60e40e5df178fd673211ea847022a79c72f1eb0b02f& 18:05 < bridge> it takes as long to just play as it takes to find the right keyframe normally 18:06 < bridge> its just doing less work... it shouldnt be controversial D: 18:07 < bridge> Seems good if it works and you can integrate it cleanly into `CDemoPlayer::SetPos` directly 18:07 < bridge> yeah i can 18:07 < bridge> cuz you know the current tick 18:07 < bridge> But also update your other open PRs 18:08 < bridge> COUGH 18:08 < bridge> At least the ones with "Waiting for author" label 18:08 < bridge> this isnt getting accepted ever is it 18:08 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1401235268991717477/image.png?ex=688f8989&is=688e3809&hm=3b81d6a58ad9a9be5f146cdcfaf2914c2d54d744a1d2839b3976bf33ae021e8c& 18:09 < bridge> Not by me 18:09 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1401235417365217371/image.png?ex=688f89ad&is=688e382d&hm=74f193c14082ea93d2d5c52e7c8a9168bbb904c642ce8886f84746212bc50978& 18:09 < bridge> 👀 18:09 < bridge> theres a place for filters 18:09 < bridge> !! 18:09 < bridge> yeah i already tried that 18:09 < bridge> ima close it xd 18:14 < bridge> the way keyframes are found feels very magic numbery 18:16 < bridge> yes, it was always magic, probably trial and error 18:17 < bridge> 204ns for finding the keyframe seems a bit steep 18:17 < bridge> 612 cycles 18:17 < bridge> 612 cycles at 3GHz 18:17 < bridge> damn its fucking cool you can just do that 18:25 < bridge> ```cpp 18:25 < bridge> m_Info.m_NextTick = -1; 18:25 < bridge> m_Info.m_Info.m_CurrentTick = -1; 18:25 < bridge> m_Info.m_PreviousTick = -1; 18:25 < bridge> } 18:25 < bridge> 18:25 < bridge> // playback everything until we hit our tick 18:25 < bridge> while(m_Info.m_NextTick < WantedTick && IsPlaying()) 18:25 < bridge> DoTick(); 18:25 < bridge> ``` 18:25 < bridge> oh wait what 18:28 < bridge> huh theres a frame in my demo where i get nothing 18:28 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1401240319210819665/image.png?ex=688f8e3d&is=688e3cbd&hm=059ff5c5ccbef048ea0ad6db1067f226d11c8c160a5615878ed2334bd0cd7979& 18:28 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1401240338953273405/image.png?ex=688f8e42&is=688e3cc2&hm=0ac902ed44453b1c20d8396f7204596696cc897f99c186de8491f9ca30c7cdff& 18:29 < bridge> without my changes 18:30 < bridge> No idea what you did, but demos only contain every second tick unless you recorded on a high bandwidth server 18:31 < bridge> Somewhat misleading that the buttons say "one tick" 19:55 < bridge> saying `one servertick` would be confusing for the regular user tho ig 19:56 < bridge> I'd use "Next tick" and "Previous tick" instead 20:00 < bridge> #10589 is blocking me currently if anybody wants to keep me busy :justatest: oh and I wanted to review kebs, so this is not too urgent 20:00 < bridge> https://github.com/ddnet/ddnet/pull/10589 20:05 < bridge> I'll try to review it tomorrow. I think the files in the `map` folder should not include the editor (and ideally also not the gameclient). 20:23 < bridge> editor should not be included (in headers), Gameclient might be hard, I need multpile backends like graphics, render map, IMap, ... currently using the subcomponent interface 20:28 < bridge> if you insist on the editor, we could split the cpp file and move it to the editor 20:43 < bridge> The access from the map rendering directly game state like game tick doesn't really make sense. The map rendering should be a component that is used by the game and editor and not refer back to those. `CRenderTools` shouldn't be used, all envelope rendering related functions should be in the new files. Not sure about the component interfaces, maybe just add a `CMapRenderInterfaces` instead so it's separated. 20:44 < bridge> The access from the map rendering directly to the game state like game tick doesn't really make sense. The map rendering should be a component that is used by the game and editor and not refer back to those. `CRenderTools` shouldn't be used, all envelope rendering related functions should be in the new files. Not sure about the component interfaces, maybe just add a `CMapRenderInterfaces` instead so it's separated. 20:54 < bridge> Envelopes need to access the intermediate ticks, but only ingame, or we reimplement this subtick logic 20:55 < bridge> maybe we actually should, menu background map is bound to tickrate 20:55 < bridge> I believe my PR is only an intermediate step for all of this