00:22 <+bridge_> Only half of the reality 00:23 <+bridge_> @fokkonaut How many people contributed to F-DDRace after you Open Sourced it? 00:24 <+bridge_> f-ddrace isnt a good comparison i think, bcs it doesnt have a lot of players 00:24 <+bridge_> but i doubt another custom client will have either 00:24 <+bridge_> > open source -> coders will come if they are interested 00:24 <+bridge_> F-DDRace was the first Teeworlds Mod that had 128p 00:24 <+bridge_> F-DDRace was the first Teeworlds Mod that had 128 players support 00:25 <+bridge_> Then he open sourced it & other modes just copied his 128 players support & they are now closed sourced 😄 00:27 <+bridge_> sad tbh 00:27 <+bridge_> And now fokkos server is gone 00:27 <+bridge_> Or atleast I cant find it 00:28 <+bridge_> copying code by hand is honestly becoming a sign of craftsmanship compared to just vibe coding the entire thing 00:29 <+bridge_> if he really cares about that he should have GPLed 00:29 <+bridge_> ?????? 00:30 <+bridge_> 128 is not really a custom thing anyway 00:30 <+bridge_> why ???? 00:30 <+bridge_> gorp is right 00:30 <+bridge_> i doubt he cares anyway 00:30 <+bridge_> what the fuck is the ??? about 00:30 <+bridge_> Do you think people care about licensing? 00:30 <+bridge_> noone cares about licenses XD 00:30 <+bridge_> If they want to avoid legal fees sure 00:30 <+bridge_> Even if you would put AGPL on it, they dont care 00:30 <+bridge_> Try it 00:30 <+bridge_> Its fun 00:31 <+bridge_> No one really wants to go to court though 00:31 <+bridge_> but if the code is legit copied it's breaking law 00:31 <+bridge_> if you need to maintain a good standing with other good people then yes, you do have to care about it 00:31 <+bridge_> it's not just legal 00:31 <+bridge_> imo thats more important than the law anyway 00:31 <+bridge_> otherwise u get stuff like master bans, banning the players who use ur stuff 00:31 <+bridge_> etc 00:31 <+bridge_> social dynamic is a lot 00:32 <+bridge_> I don't think ddnet would be happy to accept communities who are known livence violators 00:32 <+bridge_> I don't think ddnet would be happy to accept communities who are known licence violators 00:32 <+bridge_> as it is its pretty hard to be accepted 00:32 <+bridge_> I don't think ddnet would be happy to accept communities who are known license violators 00:32 <+bridge_> so you're probably right 00:33 <+bridge_> But they're close source how you gonna search evidence 00:34 <+bridge_> if they're not smart enough to make it themselves then it will be obviously copied 00:34 <+bridge_> see: cactus client 00:35 <+bridge_> But they can argue 00:35 <+bridge_> And things won't just go straight 00:35 <+bridge_> You cant take them to court anyways 00:35 <+bridge_> Before this goes to court, there is a long process & you need money for it ^^ 00:36 <+bridge_> it's not about going to court 00:36 <+bridge_> you only have to prove to peers 00:36 <+bridge_> you can DMCA a github repo for GPL violations without any court case or money spent 00:36 <+bridge_> it happens often 00:37 <+bridge_> But thats Github Policy 00:37 <+bridge_> but it's real 00:37 <+bridge_> But its Github Policy 00:38 <+bridge_> A mapper cant decide where he hosts his maps, not even with the license. There is no way to enforce the license 00:40 <+bridge_> mapper could dmca ddnet master server owner for linking to infringing distribution of their work 00:41 <+bridge_> Who to contact? Who is the master server owner? 00:42 <+bridge_> whoever owns the domain 00:42 <+bridge_> dmca was invented to settle copyright infringment without court cases, it's very good at doing that 00:42 <+bridge_> I wonder when someone will try DMCA kog.tw 00:42 <+bridge_> I would be very interested to be honest 00:43 <+bridge_> false dmca is also illegal 00:43 <+bridge_> Any mapper before 2019 could do that, because at this time we changed the license 00:44 <+bridge_> all you'd have to do is remove their maps 00:44 <+bridge_> if the claim is real 00:44 <+bridge_> How should we verify the claim 00:44 <+bridge_> idk I'm know a lawyer 00:45 <+bridge_> idk I'm not a lawyer 00:45 <+bridge_> Even a lawyer would say thats tricky, because its not signed with a cryptographic signature to identify one individual or a group of individuals to proof the claim 00:47 <+bridge_> some parties are sensitive to actual risk of being taken to court (registrars, VPS, ect) so must make a best effort to decide if it's real or not 05:41 <+bridge_> lmao 05:42 <+bridge_> I think that's not limited by the license. 05:45 <+bridge_> Hm 05:45 <+bridge_> I don't think so 05:45 <+bridge_> There were some Block mods that had 256 players support before F-DDrace was created. 05:45 <+bridge_> But yeha 05:46 <+bridge_> But yeah 05:47 <+bridge_> F-DDrace is the first Teeworlds 0.7 mod that had 128 players support with backcompat and sevendown bridge. 08:48 <+bridge_> I was just having fun learning how to do stuff, I never intended to go this far 09:36 <+ChillerDragon> solly u here 09:42 <+bridge_> solly left the server 09:46 <+ChillerDragon> fr? 09:46 <+ChillerDragon> wtf why 09:48 <+bridge_> solly is taking a break from ddnet 09:50 <+bridge_> solly 😭 11:18 <+bridge_> Milkeey editor pr wot 11:19 <+bridge_> @milkeeycat: what made you do that? oO 11:26 <+bridge_> Because... I like the game xd 11:26 <+bridge_> Noway 11:26 <+bridge_> Do you even play? 11:26 <+bridge_> Almost every day -.- 11:26 <+bridge_> So you just saw the issue opened and decided to give it a go? @milkeeycat 11:26 <+bridge_> Ye 11:27 <+bridge_> Woah I didn’t know u play 11:27 <+bridge_> Watafak 11:27 <+bridge_> That’s so cool that you fix these bugs thanks :) 11:27 <+bridge_> W catto 11:27 <+bridge_> What do you play? 11:28 <+bridge_> @milkeeycat: 11:28 <+bridge_> ddrace, fng, sometimes other game modes if there're players 11:28 <+bridge_> I see 11:29 <+bridge_> Cool cool 11:29 <+bridge_> I guess we play on different servers I never see u 11:29 <+bridge_> and kog but after they added accounts I was lazy to make an account so I don't play on [A] servers xd 11:29 <+bridge_> I only play [A] 11:29 <+bridge_> The others are so useless 11:29 <+bridge_> those server always have hard maps and am too bad for them xd 11:30 <+bridge_> They lag a lot and are full of people I rather not play with xd 11:31 <+bridge_> I am tempted to comment „oops“ under your pr 11:31 <+bridge_> Because you know OOP 11:32 <+bridge_> xd 11:33 <+bridge_> ı lost my old ddnet account because I reset my computer due to its age. When I downloaded ddnet again, it redirected me to a new account. Will I no longer be able to access my old account? 11:33 <+bridge_> ddnet account :boohoo: 11:33 <+bridge_> we don't have accounts 11:35 <+bridge_> But logically, it should have been linked to the same Steam account. 11:37 <+bridge_> do you mean kog account? Wth are you talking about? 11:37 <+bridge_> normal ddracenetwork 11:38 <+bridge_> Points are associated with your ingame name, just pick the same name in the settings as before 11:38 <+bridge_> okey thank you 11:39 <+bridge_> i understand 11:39 <+bridge_> sorry if I sounded too mean, the first coffee still needs to show it's effects 😄 11:41 <+bridge_> yum coffee 11:41 <+bridge_> <@498918197475672076>: 11:41 <+bridge_> He still here or not? 11:42 <+bridge_> If he is here we need to ban @qxdfox fast for spreading false information 11:42 <+bridge_> I don't see the user, it says "unknown user" 11:42 <+bridge_> Shiet 11:42 <+bridge_> Rip solly 11:42 <+bridge_> Wat happend to him 11:42 <+bridge_> @totar: unban solly 11:43 <+bridge_> it not false 11:43 <+bridge_> .\_. 11:43 <+bridge_> let the guy take a break 11:43 <+bridge_> Did he do the Jupstar? 11:44 <+bridge_> No 11:44 <+bridge_> It’s my top2 favorite solly 11:44 <+bridge_> Right after solly vevo 11:44 <+bridge_> I PMed him, he says he takes a break from ddnet 11:44 <+bridge_> Woah 11:44 <+bridge_> Thats crazy 11:44 <+bridge_> What happend 11:44 <+bridge_> burnout 11:45 <+bridge_> I think that's reasonable btw ^^ take your break, then come back 11:45 <+bridge_> No 11:46 <+bridge_> @milkeeycat did you check if copying of other physics layers still works? 11:46 <+bridge_> Just looking at the diff this looks sus 11:47 <+bridge_> exactly 11:47 <+bridge_> Why does GetTile even exist if we can’t call it 11:47 <+bridge_> What was its use case? 11:47 <+bridge_> The front layer thingy? 11:47 <+bridge_> hooktrough ah I assume 11:48 <+bridge_> @essigautomat: how do you drink your coffee? 11:48 <+bridge_> pulls master, 2000 changes, wtf? 11:48 <+bridge_> strong and black, made from beans 11:49 <+ChillerDragon> gebasiert 11:49 <+bridge_> *but assa, all coffee is made from beans*, yes but my coffee machine is a bit more expensive and makes the coffee directly from beans, I enter coffee beans, coffee comes out 11:49 <+ChillerDragon> oh your one of those 11:49 <+ChillerDragon> w fancy machine 11:50 <+bridge_> I have a serious coffeine addiction - I recently cut of energy drinks from my life 11:50 <+ChillerDragon> addictions are nice 11:50 <+ChillerDragon> i have teeworlds addiction :3 11:50 <+bridge_> after ~ 17 years of ddnet/tw I can't deny that either 11:51 <+bridge_> I play this game now for over half of my life 11:51 <+ChillerDragon> and longer than the average player age xd 11:52 <+ChillerDragon> when 18+ servers 11:54 <+bridge_> never, as long as it's against masterserver rules 11:54 <+bridge_> and how would you enforce this, UK style ID checks? 11:57 <+bridge_> @chillerdragon the diff of milkycat seems to solve the problem 💀 11:57 <+bridge_> Other layers should work as before, only ⁨`CLayerGame`⁩ overwrites ⁨`GetTile`⁩ 11:59 <+bridge_> ``` 11:59 <+bridge_> CTile CLayerGame::GetTile(int x, int y) const 11:59 <+bridge_> { 11:59 <+bridge_> if(Map()->m_pFrontLayer && Map()->m_pFrontLayer->GetTile(x, y).m_Index == TILE_THROUGH_CUT) 11:59 <+bridge_> { 11:59 <+bridge_> return CTile{TILE_THROUGH_CUT}; 11:59 <+bridge_> } 11:59 <+bridge_> else 11:59 <+bridge_> { 11:59 <+bridge_> return CLayerTiles::GetTile(x, y); 11:59 <+bridge_> } 11:59 <+bridge_> } 11:59 <+bridge_> ``` 11:59 <+bridge_> 11:59 <+bridge_> Do you know why this was added? 12:02 <+bridge_> I think nobody does, it looks to me like this copy brush functionality was added twice 12:03 <+bridge_> Probably so you can draw hookthrough at same time 12:05 <+bridge_> yes but this is handled in CLayerTiles directly 12:17 <+bridge_> I actually don't understand how this works with milkys PR, like are there multiple brushes opened if you copy a gamelayer part with front layer? 12:21 <+bridge_> i think the point is, if you select hookthrough on game layer, it places front hookthrough+game solid 12:21 <+bridge_> but not sure why it breaks so badly on issue's vid 12:21 <+bridge_> I think the first "if" condition in his change is wrong or the change is unnecessary 12:26 <+bridge_> no this doesn't make sense, SetTile might be wrong 12:26 <+bridge_> i think this gettile is correct 12:30 <+bridge_> There must be something else going on, it works for me and only breaks after copy and pasting around a lot 12:31 <+bridge_> like the brush beeing not properly cleared or something 12:31 <+bridge_> yea 17:44 <+ChillerDragon> can my std::optional be nullopt and i can use its .value() in comparisons? 17:46 <+ChillerDragon> i guess gotta use value_or() but i would love it to juste be always false smh 17:49 <+bridge_> You can compare empty optionals with other optionals or values directly 18:06 <+bridge_> but you need to make sure to compare two empty optionals properly 18:16 <+bridge_> What about one empty and one not? 18:16 <+bridge_> If both have no value are they equal? 18:17 <+bridge_> they should compare to false 18:17 <+bridge_> I just do a lot of has\_value calls in my code when comparing two optionals seems redundant 18:17 <+bridge_> Ok nice 18:17 <+bridge_> Two optionals are equal if they either both are equal or both contain the same value 18:17 <+bridge_> Two optionals are equal if they either both are empty or both contain the same value 18:17 <+bridge_> Oh hm :/ 18:17 <+bridge_> I don’t want it to be true if both are empty 18:18 <+bridge_> An optional and a value are only equal of the optional is non-empty contains that value 18:18 <+bridge_> Oh ok nice 18:18 <+bridge_> An optional and a value are only equal if the optional is non-empty and contains that value 18:18 <+bridge_> But how do I compare then? 18:18 <+bridge_> With a call do .value()? 18:18 <+bridge_> std::nullopt.value() == 2 18:18 <+bridge_> Like this? 18:19 <+bridge_> This doesn't make sense for a constant nullopt 18:19 <+bridge_> Ye 18:19 <+bridge_> ⁨`Optional == 2`⁩ 18:19 <+bridge_> Think of it as opt var which could be null 18:19 <+bridge_> Oh so no .value() even 18:19 <+bridge_> I see thanks 18:20 <+bridge_> That should be the same as ⁨`Optional.has_value() && Optional.value() == 2`⁩ 18:20 <+bridge_> Perfect 18:20 <+bridge_> Let’s me cleanup my code when I get to touching it again 18:20 <+bridge_> Thank :) 18:20 <+bridge_> Wait ah 18:20 <+bridge_> But in my case both are optionals xd 18:21 <+bridge_> Ah fak it I think I just keep spamming has\_value everywhere 18:21 <+bridge_> You can do ⁨`Optional1 == Optional2`⁩ provided you want them to be equal also when both are empty 18:21 <+bridge_> Nah I am usually not interested in them matching empty 18:21 <+bridge_> It means I am missing data so I don’t have a match yet 18:22 <+bridge_> Then I guess ⁨`Optional1.has_value() && Optional2.has_value() && Optional1.value() == Optopnal2.value()`⁩ and put that in a helper function 18:22 <+bridge_> Ye 19:19 <+bridge_> Can I get ⁨`needs-discussion`⁩ and maybe ⁨`fix-changes-physics`⁩ (if we want it as a warning label) added to that ^ 19:20 <+ChillerDragon> @avolicious ono 152.89.254.27:8322 crashed but thb it has gotten better 19:26 <+bridge_> you are only changing client code - where do you change physics? This is not what the label is meant to be for, yes technically you changed server code making the new config variable type available, (which might be pointless), but this still doesn't justify the physics label 19:27 <+bridge_> Can you also add an explanation what a "debounce" is? I can only guess what it means 19:31 <+bridge_> Not a physics change, but it is addressing a bug with hammering not happening when it should. If people see stuff like firing happening when it shouldn't, or offset a tick or something, this would be something to look at. Just wasn't sure how liberally we put that on, idc if it is. 19:32 <+bridge_> https://en.wikipedia.org/wiki/Switch#Contact_bounce 19:32 <+bridge_> I don't think we should be fixing a hardware/driver issue in the game 19:34 <+bridge_> What this is addressing is fire commands having different effects based on whether they are for the player or for the dummy. always was triggering it by hand in the linked issue. 19:34 <+bridge_> If your device firmware isn't handling debouncing correctly you need to fix that first 19:35 <+bridge_> Oh right this isn't actually denounce is it 19:35 <+bridge_> Oh right this isn't actually debounce is it 19:36 <+bridge_> I mean, I can. . . it took me 2s to do that to test in the original issue. That doesn't help anyone else or people who don't know why tf their dummy didn't hammer. I think this is fixing clearly bad client behavior. 20:09 <+bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1467235453378756742/image.png?ex=697fa500&is=697e5380&hm=ba9e2fc6349cccbdf135b5b4080e32469870f1e4fd3b66f45b9a1fb7336445da& 20:09 <+bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1467235453865427026/image.png?ex=697fa500&is=697e5380&hm=3c9238e848d240f799817f29447a212ed9ad2a92f899283e89244526c1e8e254& 20:09 <+bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1467235454251438325/image.png?ex=697fa500&is=697e5380&hm=e20fee4db82e226a659ea9b51c770cd83ce12173077afc45ebf0fd9f40f37a2f& 20:09 <+bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1467235454586847314/image.png?ex=697fa500&is=697e5380&hm=792ce846e2c9972e2fee6cbdbbc1394bd3f7e1a509568a7cdd4af759478dd016& 20:10 <+bridge_> @Discord Mod 20:20 <+bridge_> @chillerdragon why are the ddnet zcatch server not ddnet-insta servers btw and still on 0.6.5? 22:43 <+bridge_> aloha, what do the flags in rcon mean? when you enter ⁨`status`⁩ 22:43 <+bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1467274124177965136/image.png?ex=697fc903&is=697e7783&hm=ff7af03a9c4c72926a21dcab56a85c1cb4114c4fccce595213f550d7765030ab& 22:51 <+bridge_> Those are the player flags, a bitwise combination of 22:51 <+bridge_> ⁨```cpp 22:51 <+bridge_> enum 22:51 <+bridge_> { 22:51 <+bridge_> PLAYERFLAG_PLAYING = 1<<0, 22:51 <+bridge_> PLAYERFLAG_IN_MENU = 1<<1, 22:51 <+bridge_> PLAYERFLAG_CHATTING = 1<<2, 22:51 <+bridge_> PLAYERFLAG_SCOREBOARD = 1<<3, 22:51 <+bridge_> PLAYERFLAG_AIM = 1<<4, 22:51 <+bridge_> PLAYERFLAG_SPEC_CAM = 1<<5, 22:51 <+bridge_> PLAYERFLAG_INPUT_ABSOLUTE = 1<<6, 22:51 <+bridge_> PLAYERFLAG_INPUT_MANUAL = 1<<7, 22:51 <+bridge_> }; 22:51 <+bridge_> ```⁩ 22:51 <+bridge_> ⁨`129`⁩ should mean playing+input_manual 22:52 <+bridge_> ah okay, thank you 23:16 <+bridge_> Incredible PR 👍 nice 23:20 <+bridge_> I think I should make a small map preview to showcase the envelope trigger tiles to other maintainers, like a 5 second map