00:01 < bridge> teach me your ways of github 09:33 < bridge> @tsfreddie u make games for meta quest right 09:33 < bridge> not directly, but yes 09:34 < bridge> you know what my gf gifted me for my birthday today? 09:34 < bridge> quest 3 09:34 < bridge> ye xd 09:34 < bridge> don't play our game please 09:34 < bridge> xd 09:34 < bridge> im playing alyx 09:34 < bridge> im playing half life alyx 09:39 < bridge> Freddie made half life?! 09:39 < bridge> im 1 year older today 09:40 < bridge> closer to 30 09:52 < bridge> good game 09:52 < bridge> let me spoil it for you || gman is bad lmao || 10:15 < bridge> nice. i still gotta play it. my sister bought it for me last Christmas but i just have a vive and it’s not set up 10:15 < bridge> ig 2 christmases ago 10:15 < bridge> fuck 10:31 < bridge> happy birthday btw 10:37 < bridge> nothing to be proud of xddd 10:37 < bridge> 10:37 < bridge> but hapπ birthday, may kids best 10:41 < bridge> im 24 now 10:42 < bridge> don't lie 10:42 < bridge> u 40 10:43 < bridge> 29/05/2000 10:43 < bridge> don't do that to me 10:43 < bridge> u arent so young 10:43 < bridge> 😬 10:54 < bridge> eww 11:26 < bridge> is there a web map editor somewhere? 11:27 < bridge> map viewer only :v 11:27 < bridge> good enuf I guess, where is it 11:28 < bridge> https://ddnet.org/releases/ click on one of the maps 11:28 < bridge> https://ddnet.org/releases/ click on one of the maps (picture) 11:28 < bridge> happy bday 🎂 🥳 , you are now 1 year closer to your expiration date 😈 11:28 < bridge> edge crashed, nice 11:28 < bridge> happy birthday, beers on me :owo: 🍻 11:28 < bridge> :kek: 11:28 < bridge> oof :kek: 11:30 < bridge> i mean this exists but idk more https://github.com/k2d222/twwe 11:30 < bridge> I am currently checking @patiga s Top 5 maps which have extremly many quads, for duplicates which might be removed. Here are my findings: 11:30 < bridge> 11:30 < bridge> Mud: 0 duplicates 11:30 < bridge> 11:30 < bridge> Gummy: 1 duplicates 11:30 < bridge> 11:30 < bridge> Atomic: 0 duplicates 11:30 < bridge> 11:30 < bridge> Victory 2: 11:30 < bridge> ``` 11:30 < bridge> Most in single layer: 8812 11:30 < bridge> Total quads: 9997 11:30 < bridge> Total duplicates: 4665 11:30 < bridge> ``` 11:30 < bridge> - Most seem to be duplicated lights in order to make the light effect stronger, so this is by design, questionable design 11:30 < bridge> - Effect layer: seems to be an actual bug 11:30 < bridge> 11:30 < bridge> run_world_war_zero: 0 duplicates 11:30 < bridge> 11:30 < bridge> It might make sense to add duplicate detection as a check for map submission 11:30 < bridge> omg whoever maintains it still is a legend 11:31 < bridge> dragging groups ain't a thing, all property values need to be manually assigned on the right... 11:31 < bridge> Other than that, it's a fully functional editor 11:33 < bridge> Oh, now I see chillerdragon is a contributer 11:34 < bridge> ... wait wtf, is this actually an online interactive editor? meaning other users can edit it in real time?? 11:34 < bridge> yes 11:35 < bridge> :pepeW: holy fuck, why don't we have that in the client 11:35 < bridge> yet another tool building on patigas bindings 😄 11:37 < bridge> Yeeeh but usually is broken xD 11:37 < bridge> the ui design is kind of similar to TeeUniverse 11:37 < bridge> was it the inspiration? 😄 11:37 < bridge> what exactly breaks if i may ask? 😄 11:38 < bridge> would be pretty useless 11:38 < bridge> bloat 11:38 < bridge> No nono, not at all, group mapping 11:39 < bridge> asked experienced mappers about it and they said they probably won't use it, simpler to just share the map file 11:39 < bridge> huh? 11:39 < bridge> For the 3 people that use it. 11:39 < bridge> Way too much work 11:39 < bridge> ^ 11:39 < bridge> with that mindset where no risk = no work ain't applied here, it's a loser mentality 11:40 < bridge> you say it would be cool to have it but would you even use it 11:40 < bridge> Implement it then lmao 11:40 < bridge> no, it's a realistic mentality 11:40 < bridge> @cellegenrih if it makes you happy to know 11:40 < bridge> dd-pg, which will be ddnet compatible map wise 11:40 < bridge> has network support 11:40 < bridge> tho not as cool as the web thing.. one person hosts, the others can join 11:40 < bridge> Imagine the possibility of mappers coming together, build maps, review maps and even playtest maps using Trashmap implementation or something 11:40 < bridge> as I said, close to nobody will use it 11:40 < bridge> source? 11:41 < bridge> are you a mapper? 11:41 < bridge> multiple mappers 11:41 < bridge> i am yes 11:41 < bridge> Like the connection of the IP, or the server was misconfigured dont let mapping at the same, but should be fixed now 11:41 < bridge> would you want to explore that idea? 11:41 < bridge> i already thought of it and wanted to implement it 11:41 < bridge> not like, having this exact thing I said, but just the idea of having it? 11:41 < bridge> yes 11:41 < bridge> Well, there is motivation 11:42 < bridge> yeah but it won't happen 11:42 < bridge> ah only config stuff ok.. i thought getting out of sync or smth 11:43 < bridge> Hmmmm yeh, goes pretty fine 11:43 < bridge> I'm kinda sad, that since many people have their own roles in developing this game, nobody would rather take on the quest of making something new, unless you are a veteran like Chillerdragon who experiments stuff like that 11:43 < bridge> that's what you think 11:44 < bridge> Can prove you wrong x2 11:44 < bridge> So, still I don't have the authority to say what the devs can or cannot do, but this idea of having contributal interaction inside the editor may be possible and since there is a live example (https://github.com/k2d222/twwe/issues) where the foundation of the idea is there, it's not that difficult to do. 11:44 < bridge> What exactly is not so difficult about this? 11:44 < bridge> it's not that difficult to do™ 11:45 < bridge> Visuals can be done, the system is there, so the only thing's missing is API between that server and the client 11:45 < bridge> what 11:45 < bridge> it is difficult due to synchronization, on a webserver, like twwe all events are synchronized to the server, if you'd do the same thing in the editor, you would need to synchronize between two clients 11:46 < bridge> talking about a client integration^ 11:46 < bridge> the client only need info, so it's not client specific. syncing info needs to be done in the server 11:46 < bridge> plus twwe uses javascript language which has less restrictions than c++ and is easier to work with regarding sockets and live editing 11:47 < bridge> as said i already have network support 11:47 < bridge> rust version 11:47 < bridge> Is it public yet? XD 11:47 < bridge> a version from last month is 11:47 < bridge> So the only problem with this idea would be sync issue? xd 11:48 < bridge> thats the only problem you throw into my head 11:48 < bridge> sync issues, and somebody actually needs to implement it, lastly the code needs to be maintained 11:49 < bridge> i can only say the biggest challenge is to not do out of bounds stuff: 11:49 < bridge> https://github.com/Jupeyy/dd-pg/blob/d5009f76e5909be7b8e4be7bda16af1e2118c58b/game/editor/src/action_logic.rs#L524-L1796 11:49 < bridge> this website ain't maintained, so if someone would implement it, they would contribute to it. 11:49 < bridge> u have to reject actions if they are "outdated" bcs the clients got out of sync 11:49 < bridge> ideally the solution will not use that "website" 11:49 < bridge> So again, sync issues. Syncing can be done in different ways. Priority order or server response system can be done 11:50 < bridge> but also this is simply a huge effort for a thing that almost nobody will use since a big chunk of mappers are solo mappers 11:50 < bridge> I suggest master slave, one hosts the map, others can edit 11:50 < bridge> Yes, if new info comes in which contradict the current info sent, it needs to signal it to all other clients 11:50 < bridge> it doesn't make sense to implement something unless users want it, in this case: mappers 11:51 < bridge> huge effort. You literally have to make an API which handles map actions 11:51 < bridge> you really don't understand 11:51 < bridge> port forwarding just for mapping together? idk 11:51 < bridge> have the client recieve the data, have the API make it understandable, read actions, apply actions 11:52 < bridge> if it's so simply why don't you go ahead and implement it 11:52 < bridge> if it's so simple why don't you go ahead and implement it 11:52 < bridge> same from client: Send the actions through the API, API sends it to the server, server calculates actions, back the step 1 11:52 < bridge> wait, can't filesyncing be done between users with other software? patigas twmap-edit tool can convert maps into directory structures, and then you can sync them instead of the map/client, this could be done in a client patch 11:52 < bridge> Lame response 11:52 < bridge> no 11:52 < bridge> a lot of mappers host a local server anyway, I do at least 11:52 < bridge> @cellegenrih it's not completely trivial 11:53 < bridge> Yes, literally anyone in this team can implement it, I am the one who lays down the foundation of the idea and the implementation of the system 11:53 < bridge> I know cuz you devs are amazing 11:53 < bridge> I cant think of anyone who cannot code it off. 11:53 < bridge> as i said: 11:53 < bridge> - u need to make sure to not do out of bounds stuff (so lot of hardening vs no network) 11:53 < bridge> - u need to handle all actions through action events (e.g. undo/redo managers) no other way 11:53 < bridge> did you write that? 🙂 11:54 < bridge> the project 11:54 < bridge> Yes, I don't think I sent off malicious intent from it :justatest: 11:55 < bridge> All in all, I only think about the developers pushing this idea away, because they officialize their opinions as a fact? 11:55 < bridge> Like would you not rather make a poll about this idea to the community? 11:55 < bridge> Having an idea is fine, but having a use for that idea is better 11:55 < bridge> yeah 11:55 < bridge> You know, cuz since it's a community driven game 11:55 < bridge> sorry, I mean: did you implement this project? 11:55 < bridge> You know, cuz since it's a community driven game, would make sense 11:56 < bridge> as I said, I asked a few experienced mappers about it and said it would be useless 11:56 < bridge> I have a prototype map editor project in Godot, where handling Object is similar to handling Quads and Tiles, yet cannot read data from tw maps 11:56 < bridge> I have my own experience regarding handling data 11:56 < bridge> now we could make a poll in mapping channel to gather more opinion 11:56 < bridge> now we could make a poll in mapping channel to gather more opinions 11:57 < bridge> And I think, if I could ever read map data inside my own editor, I could make an interface for online contribution 11:57 < bridge> I wouldn't do a poll unless someone wants to implement it 11:57 < bridge> why can't you read data from tw maps? There are python bindings for doing this, also the map file format is fully documented 11:58 < bridge> I would 11:59 < bridge> @cellegenrih smth like that doesn't belong in the client 11:59 < bridge> too much bloat 11:59 < bridge> but yeah 11:59 < bridge> rather make an external tool that can sync multiple mappers + a live server all at once 11:59 < bridge> because otherwise people will be disappointed 11:59 < bridge> I mean, the website version is there I give it that 11:59 < bridge> it's amazing really 11:59 < bridge> I find the word "bloat" too vague 11:59 < bridge> i havent seen the source code of the web version, but is it really robust? 11:59 < bridge> unnecessary maintenance for little reward 11:59 < bridge> thanks 11:59 < bridge> I think cooperative map editors are cool. especially when they're live on the server 11:59 < bridge> https://github.com/k2d222/twwe/issues 11:59 < bridge> I'd guess that there's demand for this, even if mappers don't know it yet 11:59 < bridge> that's not my question 11:59 < bridge> eh 11:59 < bridge> getting out of sync is a matter of timing 11:59 < bridge> or matter of restricting more actions 11:59 < bridge> the thing needs to have some sort of synchronization model is what @jupeyy_keks is saying 12:00 < bridge> i also think in-game map editing is better explored through something like #7666 12:00 < bridge> https://github.com/ddnet/ddnet/issues/7666 12:00 < bridge> I think it's okay as long as you don't have collisions 12:00 < bridge> and a way of reconciling different colliding steps 12:00 < bridge> e.g. by dropping htem 12:00 < bridge> If the client would not be compromised to other developers (aka using it as intended), you can restrict any further actions, till the current action is sent to the server and verifies it 12:00 < bridge> yes, that's what i spent a lot of time for, and this is also the part i'd consider not trivial 12:00 < bridge> https://github.com/Jupeyy/dd-pg/blob/d5009f76e5909be7b8e4be7bda16af1e2118c58b/game/editor/src/action_logic.rs#L524-L1796 12:00 < bridge> search for `anyhow::ensure!` 12:01 < bridge> it's used extremly often 12:02 < bridge> additionally `?` operator 12:02 < bridge> basically it must be panic free 12:02 < bridge> and in cpp it's really easy to oversee such stuff IMO 12:02 < bridge> even if you have a collision, just deciding for one in live editing might be enough, since it's a mapping process, if it's wrong it can be fixed anyway 12:03 < bridge> yes, but that's the problem 12:03 < bridge> u have to reject the action 12:03 < bridge> "just deciding for one" is already a hard problem 12:03 < bridge> because you'll have to revert actions that are not yet synced with the server 12:03 < bridge> I think now I get it 12:04 < bridge> that's where we are back to the history, if you reject an action, all following actions should be rejected as well 12:04 < bridge> ofc, this requries to have a history with all actions 12:04 < bridge> if two ppl apply a tile brush it's ofc basically impossible to decide.. but if a third client also makes the layer smaller in size at the same time, it's very important to not crash 😄 12:04 < bridge> or just have a "wait for response" indicator to the client whenever their action is being handled 12:05 < bridge> that's where we are back to the history, if you reject an action, all following actions should be rejected as well (from a single client) 12:05 < bridge> priority should be given to the first action, then detecting the compromised action, give a "waiting for response" indicator 12:05 < bridge> that's introducing edit latency, likely too long 12:05 < bridge> Have a cooldown on how many actions you can do 12:06 < bridge> you'll have to do this with every action, because you can't know that the other party also just started an action 12:06 < bridge> with in-app purchases for more actions? 12:06 < bridge> 😬 12:06 < bridge> not sure why limiting the number of actions helps with the synchronization 12:07 < bridge> nono, like each action is under a certain coodown 12:07 < bridge> so if u draw a tile brush 12:07 < bridge> so no spamming 12:07 < bridge> how do u imagine it? 12:07 < bridge> if its not instant it sucks already 12:07 < bridge> try: 12:07 < bridge> stuff 12:07 < bridge> except: 12:07 < bridge> pass 12:07 < bridge> 12:07 < bridge> 😁 12:07 < bridge> so u can probably better accept a collision but make sure to not go out of bounds somehow 12:07 < bridge> If I draw with a tile brush, the moment my mouse is unpressed, the action occours 12:07 < bridge> hodling on collisions might be a good approach, because colissions shouldn't be too likely when mapping with multiple people 12:07 < bridge> It also needs a transparent tile indicator, that you intend to edit there 12:07 < bridge> holding on collisions might be a good approach, because colissions shouldn't be too likely when mapping with multiple people 12:08 < bridge> wait for server response, then if it's not compromised, you have successfully painted it. 12:08 < bridge> if it's indeed compromised, you have to edit your action 12:08 < bridge> if it's indeed compromised, you have to edit your action, then resend it 12:08 < bridge> The action should not disappear, unless the user chooses it to, or the server accepted it 12:08 < bridge> I'd revert it for that client to the uncompromised state, he might need to redo some stuff, but this should only be the last seconds 12:08 < bridge> @ryozuki Happy Birthday little one 12:09 < bridge> We do have that Undo / redo action inside the client no? 12:09 < bridge> similar to that I guess. 12:09 < bridge> now that's even more complicated. not only does the server need to send a rejection, but the client somehow needs to hold potential future changes as well, trying to merge them 12:09 < bridge> this is super hard xD 12:10 < bridge> exactly 12:10 < bridge> Yes, cuz each compromise will need to check all the possibilities on what to do, I know that 12:10 < bridge> It wasn't the factor however 12:10 < bridge> realistically we can assume collisions are not _too_ likely. but additing a merge logic is really insane 12:10 < bridge> so the easiest realistic thing is to accept that one player might overwrite the other persons action 12:11 < bridge> if they are currently editing the exact same thing for whatever reason 12:12 < bridge> agreed 12:35 < bridge> Presses automap, all clients desync xD 12:48 < bridge> imagine godot 12:48 < bridge> stayline 12:50 < bridge> how did valve get almost 1k concurrent player during a closed alpha test 12:50 < bridge> :justatest: 13:01 < bridge> who are they asking to play tests 13:04 < bridge> prob other companies, or maybe Valve is just that fucking massive lol 13:44 < bridge> https://cdn.discordapp.com/attachments/293493549758939136/1245341931727228948/image.png?ex=6658668d&is=6657150d&hm=fca2cf64552fcd9f69e6fdc516b41c74029f85ce4e792069581c3deb0d8173d7& 13:44 < bridge> https://www.youtube.com/watch?v=ASTqqvQo0dM 14:40 < bridge> I think it's about time we implement some more spam detection, doesn't have to be extremely smart 14:41 < bridge> I was playing tutorial a couple days ago, someone joined, spammed a couple swastikas, left. Absolutely no way for a moderator to moderate that, it has to be automated 14:42 < bridge> maybe filtering special characters could be a good start 14:44 < bridge> what are "special characters" here? 14:46 < bridge> @learath2 spam detection would probably benefit from connecting all the game servers 😛 15:05 < bridge> I was thinking something like a "cost" based approach. Each player would have some amount of credits. Each character would have a cost associated with it and you'd only have a certain amount of credits available, credits would be regenerated at some rate (up to a maximum). Repeated uses of any given character would have increased cost (Perhaps exponentially increasing in case of anything that belongs to unicode `S`, `P` or `M` category). Some char 15:06 < bridge> Something that is on the edge of dumb and smart, yet cheap enough to calculate with not much memory or performance overhead 15:07 < bridge> I see, an effective, yet weird cost punish system 15:08 < bridge> For starters, we can give each symbol a unique value based off of index value or something, 15:09 < bridge> sounds complicated enough that lazy spammers might get caught 15:09 < bridge> then, read each symbol. for each symbol in the sent message, if the previous symbol was different, add those values together. otherwise, multiply those values 15:09 < bridge> if someone is spamming the same symbols, they get insane amounts, resulting in a spam detection 15:10 < bridge> It's only effective against messages that only contain one symbol 15:32 < bridge> And flexible enough that we can make it more annoying by messing around with the parameters 15:33 < bridge> But I feel at the very least https://discord.com/channels/252358080522747904/745926398140612678/1245351615100096644 shouldn't be the experience people get 15:58 < bridge> is it possible to put in multiple strings in the "exclude" filter from the server browser? 15:58 < bridge> like "novice; solo" 15:58 < bridge> like "novice; solo" (this doesnt work) 15:59 < bridge> and also the "search" filter for that matter i guess 15:59 < bridge> remove the space 15:59 < bridge> then it works 16:00 < bridge> oh thx 16:00 < bridge> maybe this should be displayed as a tooltip 16:00 < bridge> u can create an issue to trim the search strings i guess 16:01 < bridge> i dunno when u ever want a space in front or end 16:02 < bridge> idk i thought its normal to have space after ; since that's how you bind multiple things 16:03 < bridge> yeah technically u could argue the space must be gone, but for user friendliness i guess trimming makes sense here 16:03 < bridge> you are not the first to add a space here ^^ 16:03 < bridge> well should i create an issue? 16:03 < bridge> i'd do it 16:03 < bridge> so yes 16:03 < bridge> do it xd 16:03 < bridge> 👍 16:08 < bridge> fun-fact `crc32("gnu") == crc32("codding")` 😄 16:17 < bridge> crc32 the old one 0x04C11DB7 poly 16:38 < bridge> For crc32c I found `crc32c("cuke") == crc32c("nativeness")` and that's all in this dictionary for 176k english words 16:39 < bridge> what are you doing? ^^ 16:39 < bridge> what abt every time you add a semicolon it just creates a lil box around the previous word 16:40 < bridge> or confetti 16:40 < bridge> :justatest: 16:46 < bridge> I've also learned some weird things I've never heard of before, like w-shingling and Jaccard coefficient 19:05 < bridge> who added me to codecov newsletter xddd 19:09 < bridge> @tsfreddie gogo! new project UwU 19:09 < bridge> @tsfreddie gogo! new project UwU :owo: 19:17 < bridge> yeah, I also got it, looks like everyone gets it regardless of mail settings because it's a legal notice 19:20 < bridge> but i didnt even add my email anywhere xD 19:35 < bridge> I didn't get one I think 20:13 < bridge> What are quads and how should I translate them? 20:52 < bridge> ye 21:08 < bridge> Can I expect anyone here to be at GPN22 this weekend? 21:52 < bridge> Other Slavic translations use "quads" too. Oh well. 22:45 < bridge> didn't get such a mail