02:50 * Tyrone slaps Tyrone around a bit with a large fishbot 03:13 < bridge_> yea 04:55 < ws-client> endianess is such a pain but i managed to understand ddnet snap uuids :D ... i know im late to the party 04:57 < ws-client> so teeworlds uses types starting from 1 to max teeworlds snap items and ddnet uses types starting from max snap type (32767) going down to 32703 04:58 < ws-client> the teeworlds types are known at compile time and can be looked up in a table. The ddnet ex items are not known at compile time and change even while a tee is connected 04:59 < ws-client> There can only be 64 unique ddnet ex items in a single snapshot but there can be as many ddnet ex items during one play session as there are uuids 05:00 < ws-client> So 128 player support that snaps 128 ddnet ex characters in one snap would be impossible? 06:53 < bridge_> http://2143.christmas/f/Ge2h.png 06:54 < bridge_> i own rtx 3060 now 06:54 < bridge_> i have 4 more gigs of vram 11:06 < bridge_> wtf dude 11:06 < bridge_> 2 GPUs 64GB RAM, did u get a paycheck or what did i miss xD 11:06 < bridge_> one is integrated gpu 11:06 < bridge_> misleading 11:06 < bridge_> ah yeah it even says so 11:07 < bridge_> i have had multi gpu setups before 11:07 < bridge_> it's great for VMs 11:07 < bridge_> nice PC, bad OS xd 11:07 < bridge_> yea 11:32 < bridge_> i could even rn but i would have to sacrifice my third nvme drive 11:32 < bridge_> and that’s a part of a non redundant raid array with 11:32 < bridge_> and that’s a part of a non redundant raid array with important os stuff on it 11:32 < bridge_> so i would needa linux 11:33 < bridge_> https://youtu.be/AmW2v4XWV-0?si=NDW5koIfj4XSgQug 12:51 < bridge_> chillerdragon: do you have stats for delta sizes? 12:51 < bridge_> i'm interested in the size of deltas after network compression 13:20 < ws-client> LEEERATOOOOOOOOO 13:21 < ws-client> @Jupstar ✪ you mean the size thats sent over the network and how big it is unpacked? 13:22 < bridge_> yes and no i want the packed size 13:22 < bridge_> 13:22 < bridge_> i want the size what is actually sent 13:22 < bridge_> but only from snapshot deltas, not other traffic 13:23 < ws-client> i guess 13:23 < ws-client> lemme check 13:24 < bridge_> and ofc it would be nice to know how many characters were in the game at that moment 😄 13:26 < ws-client> just me :D 13:26 < bridge_> perfect 13:26 < ws-client> but ye i would need too much time to properly look it up i think 13:26 < bridge_> 13:26 < ws-client> im in the middle of a debugging sessions 13:26 < bridge_> yeah np 13:27 < bridge_> if u some day can just look up the packet size if u stand still and do nothing 13:27 < bridge_> that would already help 13:27 < bridge_> but i will otherwise just do it 13:27 < ws-client> my first guess would be 83 bytes get unpacked to 88 bytes :D 13:27 < bridge_> i am just bad and finding it in cpp code xd 13:27 < ws-client> but thats 99% totally off 13:28 < ws-client> https://zillyhuhn.com/cs/.1713612473.png 13:28 < ws-client> 83 bytes are sent over the network 13:28 < bridge_> that's a vanilla server? 13:28 < bridge_> or ddnet server 13:28 < ws-client> for a fresh 0.7 connection 13:28 < ws-client> no thats ddnet with ddnet ex items too 13:28 < bridge_> ok 13:29 < ws-client> https://paste.zillyhuhn.com/f7 13:29 < ws-client> on connect it updates the character items 13:29 < ws-client> duuudde i am THIS close to fixing the last bug 13:30 < ws-client> where is lerato!? 13:31 < ws-client> implicit cast of bool sixup to size_t size !? 13:31 < ws-client> lerato watafak were you thinking 13:31 < ws-client> https://zillyhuhn.com/cs/.1713612625.png 13:31 < ws-client> https://zillyhuhn.com/cs/.1713612681.png 13:32 < ws-client> @learath2 i feel like this code could use a comment :D 13:32 < bridge_> chillerdragon: ah interesting 13:32 < bridge_> is that a dumb of single character? 13:32 < ws-client> thats me fresh after connect ye 13:33 < bridge_> i'm suprised it is so small 13:33 < ws-client> it creates a delta for both vanilla char and ddnet char 13:33 < ws-client> 83 bytes? 13:33 < bridge_> well my diff results in 56 bytes, after compression 13:33 < bridge_> but the initial diff size is insanely much bigger 13:33 < bridge_> https://pastebin.com/euRNUVyJ 13:33 < ws-client> pls dont benchmark my numbers 13:34 < ws-client> i told u i didnt do measurements just a random screenshot xd 13:34 < ws-client> idk what that number means 13:34 < ws-client> its probably mostly ip udp headers 13:34 < bridge_> the biggest difference in my approach is, that it is a binary diff 13:34 < bridge_> 13:34 < bridge_> so it's not aware of the snapshot content 13:34 < ws-client> the snapshot data is 44 bytes 🤷 13:34 < bridge_> that surprises me too 13:35 < bridge_> ah, but 0.7 removes player info from snapshot right? 13:35 < ws-client> ye pls do ur own benchmark :D 13:35 < ws-client> ye it does 13:35 < bridge_> nah i totally trust your benchmarks 13:36 < ws-client> omg i should have said nothing 13:36 < ws-client> instead of gaslighting you 13:37 < bridge_> it's ok chiller. why should your dumb tool not show the truth xd 13:37 < ws-client> its heinrichs dissector 13:37 < bridge_> see 13:37 < ws-client> its OG tool but idk how to use it 13:38 < ws-client> dude lerato 13:39 < ws-client> the item size of sound world is 0 for 0.6 and 1 for 0.7?! 13:39 < ws-client> i cant 13:39 < bridge_> wtf is a sound world 13:39 < ws-client> ok watever im pretty sure whatever this satanistic code is doing i need it too because fakin sound world was breaking my demo deltas 13:39 < ws-client> https://chillerdragon.github.io/teeworlds-protocol/07/snap_items.html#event_sound_world 13:40 < bridge_> ah lol 13:40 < bridge_> ah right 13:40 < bridge_> in teeworlds events are part of the snapshot 13:40 < bridge_> i don't understand that decision tbh 13:40 < bridge_> aren't events a one time thing 13:40 < ws-client> ye ye you convinced me on that one 13:41 < bridge_> ah did we even talk about that 😄 13:41 < ws-client> yes 13:41 < bridge_> well defs was fun 13:41 < ws-client> i liked your point of some events being important 13:41 < bridge_> we should repeat that 13:41 < ws-client> and snapshots might be lost including all their events and they will never be resend 13:42 < ws-client> ye we should 13:42 < bridge_> but i'd like to have heinrich in too next time 13:42 < bridge_> but he afk ignores me 13:42 < bridge_> 😬 13:42 < ws-client> ye that be fun 13:42 < bridge_> jupstar vs heinrich 13:42 < bridge_> 13:42 < bridge_> the best buddies ever 13:42 < ws-client> epic 13:43 < bridge_> but i also want to talk about other things anyway 13:43 < ws-client> ok i gotta get back to debugging before bed time 13:50 < bridge_> i dont understand anything xd 13:50 < bridge_> 13:50 < bridge_> netmsg = simply a new packet? 14:47 < ws-client> https://zillyhuhn.com/cs/.1713617218.png 14:47 < ws-client> that was a weird one after switching branch back and forth i can not reproduce anymore 14:47 < ws-client> i think ccache starts to troll me 14:48 < ws-client> i am surprised that this is the first weird thing i see given that for quite some time ccache was hiding compile errors from me for quite some time 14:48 < ws-client> cant fail to build a file if its loaded from cache lmao 14:49 < ws-client> @Jupstar ✪ if you ask me leratos message does not make much sense xd 14:50 < bridge_> CHILLER, wazzup, u awake already? or does the debugging session haunt your sleep 14:50 < ws-client> i just rq 14:50 < ws-client> i fixed the thing which i thought was the last bug and finish all features of ddnet7 with leratos weirdest code ever 14:50 < ws-client> only to realize that demos do not work when the dummy is connected and that seems to be a nasty new quest 14:51 < bridge_> ah good thing this will never happen with dd-pg 14:51 < bridge_> bcs dummies dont really exist 14:51 < bridge_> i mean they exist, but not as a new network entity 14:51 < ws-client> https://github.com/ddnet/ddnet/blob/master/src/engine/client/client.cpp#L2300 14:52 < ws-client> ``void CClient::ProcessServerPacket(CNetChunk *pPacket, int Conn, bool Dummy)`` 14:52 < ws-client> if Conn is 0 Dummy is true and vice versa 14:52 < ws-client> so confusing :D i thought since there are two variables they have two different informations such as wether the packet is sent to the active tee or not 14:53 < ws-client> but both arguments ``Conn`` and ``Dummy`` have the same information 14:53 < ws-client> Dummy is false* 14:53 < bridge_> ? 14:53 < bridge_> Conn is an enum isnt it 14:53 < ws-client> yes 14:53 < bridge_> `Dummy` is true if the message is not from the active connection 14:53 < bridge_> pretty confusing, yes 14:54 < ws-client> i dont think so 14:54 < ws-client> https://github.com/ddnet/ddnet/blob/master/src/engine/client/client.cpp#L2300 14:54 < ws-client> oh wait 14:54 < ws-client> aaaa 14:54 < ws-client> because cl_dummy changes 14:54 < ws-client> ah right nvm then 14:54 < ws-client> ah no then its totally fine xd 14:55 < ws-client> But i still have no idea how leratos code works 14:56 < bridge_> it's still confusing 14:56 < ws-client> by setting sound world to the wrong size of 0.7 connections 14:56 < ws-client> for* 14:56 < bridge_> sound world 😭 14:56 < bridge_> world sound 14:56 < bridge_> rename it 14:56 < ws-client> lerato be like ``true == 3`` 14:57 < ws-client> sound in da world 14:57 < ws-client> im ok with that 14:58 < ws-client> but im not native i dont use the saying "oh thats a sound thing" 14:58 < ws-client> like "a sound plan" 14:59 < bridge_> xd 14:59 < ws-client> sound world 14:59 < bridge_> you use that library unsound 14:59 < ws-client> wowowo 15:00 < bridge_> yeah i agree, world sound is better 15:00 < bridge_> i agree with myself 15:00 < ws-client> did you know clang built a C repl? 15:00 < ws-client> they copied my project 15:00 < bridge_> hillerDragon 15:01 < bridge_> hashset uses 48 bytes xDD 15:01 < bridge_> 15:01 < bridge_> sadly tinyset is broken 15:01 < bridge_> now i use Option> 15:01 < bridge_> 15:01 < bridge_> epyc 15:01 < bridge_> 15:01 < bridge_> totally not over complicated to use 15:02 < bridge_> but at least only uses 8 bytes, which is important in my case 15:03 < bridge_> @robyt3 i have an important question and you need to answer honestly: 15:03 < bridge_> 15:03 < bridge_> - do you think tee-ish UI is something desirable? 15:03 < bridge_> - Do you think that a new user that never seen ddnet, likes the home menu page? 15:04 < bridge_> 15:04 < bridge_> Like imagine u open any game and it looks like ddnet's first impression 15:04 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1231229026006466560/image.png?ex=66250ee2&is=6623bd62&hm=3af468aaf5d3e50f23687c0e5b9ec88c82d9b6f77513edd74316e4783aa34036& 15:04 < ws-client> https://zillyhuhn.com/cs/.1713618254.png 15:05 < ws-client> they dont have readline support yet so no history and emacs mode thats pretty cring 15:05 < ws-client> all in all my repl still feels supirior to clangs but im sure they will catch up 15:10 < bridge_> I don't feel anything particular wrong with it, I think it fits the game. Certainly better than others modern games that immediately open 3 popups telling you about sales and updates while you just want to start playing. Though the first thing you see if you open the game as a new player would be the language selection, name selection and tutorial (unless you skip it). 15:14 < bridge_> ok 15:23 < ws-client> jopsti u like dis menu? 15:23 < ws-client> https://www.youtube.com/watch?v=TN0zLNKQsGg 15:24 < bridge_> i mean for a pause menu it looks pretty good xd 15:25 < ws-client> a bit bloated but ye i think super meat boy managed to fit their 2d cartoon style while also being applealing to mainstream 15:26 < bridge_> ChillerDragon: Could I translate your Teeworlds programming videos and upload them to chinese video website? 15:27 < ws-client> @fred axaxax 15:27 < ws-client> i dont speak chinese ._. 15:28 < ws-client> you mean like bilibili? sounds annoying to sign up there but i assume its a big market 15:28 < bridge_> Yes 15:30 < bridge_> Ah so, I think the best way to translate them is to add subtitles 15:30 < ws-client> i still have trauma from when i tried to create a email on chinese yahoo or something like that 15:30 < ws-client> so google translate subtitles? 15:30 < bridge_> he said, he translate it 15:30 < bridge_> not you 15:31 < ws-client> ah lol thanks jopsti 15:31 < ws-client> he also does the uploading then i assume 15:32 < ws-client> @remakepower ah you are just asking for permissions? ye sure 15:32 < bridge_> I was asking the premissions 15:32 < ws-client> i licensed the videos on youtube under creative commons they are free to use and redistribute 15:32 < ws-client> credits are appreciated 15:35 < bridge_> Thank you for your permission. Also, there is someone had upload them 4 years ago 15:36 < bridge_> And he only upload 7 videos in them. 15:36 < bridge_> So that's why i ask now 15:37 < bridge_> So that's why i asked just now 15:37 < ws-client> do you have a link? :) 15:39 < bridge_> What's the link? 15:39 < ws-client> to the old 7 videos 15:40 < ws-client> i would like to see how it looks like c: 15:40 < bridge_> https://www.bilibili.com/video/BV1da4y177Tc 15:42 < ws-client> ty 15:42 < bridge_> he didn't do any translate 15:42 < ws-client> it even links youtube 15:42 < ws-client> is that a common practice? to reupload youtube videos to bilibili and then link the original video? 15:42 < ws-client> almost like trying to advertise youtube on bilibili :D 15:42 < bridge_> Yes 15:42 < bridge_> if someone don't link the original video? 15:42 < bridge_> chiller: but nobody reads description xdd 15:42 < ws-client> yeye ofc 15:42 < ws-client> i store my passwords in youtube descriptions 15:42 < ws-client> safest place on earth 15:42 < bridge_> The uploader will be accused 15:43 < ws-client> oh by whom? 15:43 < ws-client> by the community? bilibili? or youtube? 15:43 < bridge_> community 15:43 < ws-client> ah i see 15:44 < ws-client> https://zillyhuhn.com/cs/.chinadragon.png 15:44 < ws-client> easy captcha 15:44 < bridge_> Hm 15:45 < bridge_> There will be a problem for you(probably) 16:36 < bridge_> It's not always a packet, without flushing netmsgs are grouped into netchunks which are packets 16:37 < bridge_> ah right there clicks something in my head 16:37 < bridge_> The issue in teeworlds is that we have both state and events. So the source of truth for things is mixed, but they need to stay in sync 16:38 < bridge_> e.g. grenade explosion is an event, but it's effects on tees are only visible in the new state in the snapshot 16:38 < bridge_> if you send the explosion in a netmsg but it's effects of pushing tees around in the snapshot, now it is possible the netmsg arrives late, and since it has no facility to sync to a tick it's not possible to apply retroactively either 16:38 < bridge_> i'd claim on a stable connection events come in _almost_ when snapshots come in 😄 16:39 < bridge_> I'm guessing matricks just didn't feel like thinking about all the complexity of moving everything to events or everything to state and just had events that affect state visibly in the snapshot as a simple solution 16:41 < bridge_> but we don't have a guaranteed way to make that happen in the current form of network we have without flushing all the time 16:41 < bridge_> are netchunks per connection? 16:42 < bridge_> We have a sendqueue of cnetchunks per cconnection iirc 16:43 < bridge_> ah our queue sytem is not multiplex? 16:43 < bridge_> If a chunk with a flush flag is added to the sendqueue, the entire queue is sent without event happening 16:44 < bridge_> if you ask me, that should be done anyway 16:44 < bridge_> 16:44 < bridge_> ideally the server only sends snapshots and events to a single connection 16:45 < bridge_> at least i don't see a huge reason to not directly flush. maybe the implementation is not built for it 16:45 < bridge_> 16:45 < bridge_> but locking the mutex to put a packet on a send queue doesn't sound too expensive 16:46 < bridge_> well ok the implementation is also single threaded 16:47 < bridge_> that could defs be a problem 16:50 < bridge_> mh interesting 17:13 < bridge_> bring back rainbow team colors this randomized one suck 17:14 < bridge_> who decided to change even 17:24 < bridge_> it's not random 17:24 < bridge_> 17:24 < bridge_> it's just different order 17:25 < bridge_> https://cdn.discordapp.com/attachments/342454474117218334/1151990562900160662/265515094-3ee7a052-a2fa-4fd6-b950-d8c2711a91a1.png?ex=66340351&is=66218e51&hm=8b648e2de27be35bdc92fa97e434e736e7cdb4a82902fbe41f43d0a37d8335ee& 17:28 < bridge_> looks uglier on tab tho :( 17:46 < bridge_> why was the order changed btw? 17:46 < bridge_> apparently to make it easier to distinguish between the teams 17:51 < bridge_> @milkeeycat what happens if you skill necromancer on max level? 17:52 < bridge_> wot 17:52 < bridge_> xd 17:52 < bridge_> correct answer 17:52 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1231271299700232253/necro.mp4?ex=663659c1&is=6623e4c1&hm=5a9601c73c6653fcd2f2e623a6d814baf9e3067d9cdf5366b81fe822177ad88f& 17:53 < bridge_> ```rust 17:53 < bridge_> pub fn new(op: BinOp, left: Option>, right: Option>) -> Self { 17:53 < bridge_> Self { op, left, right } 17:53 < bridge_> } 17:53 < bridge_> ``` 17:53 < bridge_> would you use `Self` as type or write type name? :thonk: 17:53 < bridge_> i'd write Self 17:54 < bridge_> now make binds system for 10+ dummies 17:54 < bridge_> lmao 17:55 < bridge_> and add vim motions to chat 😬 17:57 < bridge_> Hello, I've got a question about @DDNet, how is it able to find people online? I am trying to make an npm package which should facilitate all things about ddnet and seeing that I want to also implement some sort of PlayerFinder class, but I am not sure how it's done 17:57 < bridge_> Hello, I've got a question about @DDNet, how is it able to find people online? I am trying to make an npm package which should facilitate all things about ddnet and ddnet data and seeing that I want to also implement some sort of PlayerFinder class, but I am not sure how it's done 17:58 < bridge_> u mean in server browser? 17:58 < bridge_> no, i meant this 17:58 < bridge_> $find Sans3108 17:58 < bridge_> Found 1 server(s) with "Sans3108" currently playing: 17:58 < bridge_> 1. Server: DDNet RUS - Moderate — Link: 17:59 < bridge_> but that is probably using the server browser information 17:59 < bridge_> https://master1.ddnet.org/ddnet/15/servers.json 17:59 < bridge_> ^ here are all currently playing players 17:59 < bridge_> all server etc, 17:59 < bridge_> all of them from 1 single master server? 17:59 < bridge_> that makes stuff easier, nice 17:59 < bridge_> yep 😄 18:34 < bridge_> I'm having a bit of trouble finding the script/part of the code that sends the final response, I want to inspect it so I know what types I'm working with as well as construct a schema that I can use to validate the data 18:34 < bridge_> Do you know where can I find it? 18:38 < bridge_> i think every server can send what they want to a certain extend 18:38 < bridge_> but you could look how the client parses it 18:39 < bridge_> I've noticed that with some other parts of the api 😄 18:39 < bridge_> Still, there should be some code that constructs that json, and I think it might help me better understand it 18:39 < bridge_> but I'm not sure where to find it 18:40 < bridge_> https://github.com/ddnet/ddnet/blob/a00d6a311971cafe96f2ec7baf9637a9c5989be4/src/engine/client/serverbrowser_http.cpp#L258-L269 18:40 < bridge_> sadly i cannot tell you where in the server it happens. simply search for http_register or similar 18:42 < bridge_> i mostly work client side 18:42 < bridge_> alright, thank you! :tip: 18:42 < bridge_> https://github.com/ddnet/ddnet-discordbot/blob/master/cogs/playerfinder.py 18:43 < bridge_> the entire bot is open source 18:43 < bridge_> I've seen that, hence my question, thanks 23:40 < bridge_> What's this about? 23:40 < bridge_> 23:40 < bridge_> maxTime isn't being used where I'm assuming it should be, instead minTime is used for both keys, is this intended? 23:40 < bridge_> [maps.py]() 23:40 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1231358833159438376/image.png?ex=6636ab47&is=66243647&hm=6772ec2083b101406e06e86a6931ff75f367ab6a484f2dd75ce744417e37a389& 23:40 < bridge_> What's this about? 23:40 < bridge_> 23:40 < bridge_> maxTime isn't being used where I'm assuming it should be, instead minTime is used for both keys, is this intended? 23:40 < bridge_> right here: [maps.py]() 23:40 < bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1231358833159438376/image.png?ex=6636ab47&is=66243647&hm=6772ec2083b101406e06e86a6931ff75f367ab6a484f2dd75ce744417e37a389& 23:54 < bridge_> should have naded down 😔