00:21 <+bridge_> Should have made Turkish the global language, we have no gendered grammar at all 00:42 <+bridge_> Hey is this the spot to request a rename for my account? 00:42 <+bridge_> #โœ‰-create-a-ticket Rename 00:42 <+bridge_> must have 3k points among other requirements, list is in the channel 01:01 <+bridge_> https://media.discordapp.net/attachments/1069667540151844884/1104070676719083622/E3A60D56-D2D2-455B-9C2C-C5A036C5DCAF.gif 01:01 <+bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1465496921232642149/dlc.rpf?ex=697951dd&is=6978005d&hm=ae2fdf8be749a0c66a0fa9cce1bae8a90032bb35b0bbd0022d2ed1c212c9ee1f& 01:01 <+bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1465497016825155725/dlc.rpf?ex=697951f4&is=69780074&hm=98b649a25d01e2a0dc0248c6c88a3fa77bca5c2f2948345b3adc2fd7b838cbb1& 01:02 <+bridge_> https://tenor.com/view/alice-in-wonderland-curtsy-gif-10714016786536042726 01:03 <+bridge_> https://cdn.discordapp.com/attachments/1355143911265538098/1396222272649302058/image.gif 01:03 <+bridge_> https://cdn.discordapp.com/attachments/1351295179998625873/1398689711811334174/a72826b45ffaea84ba31a2743417b5df.gif 01:03 <+bridge_> https://media.discordapp.net/attachments/879122843160440903/923982054314635364/image0.gif 01:03 <+bridge_> https://cdn.discordapp.com/attachments/660629930845143050/1371825779901599895/IMG_9207.gif 01:04 <+bridge_> https://media.discordapp.net/attachments/1183101985491255475/1197230234068598885/8175dc9eb380419d.gif 03:38 <+bridge_> ts guy is not ready for code tutorial, he is ready to sail a ship 03:38 <+bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1465536438773878867/image.png?ex=697976ab&is=6978252b&hm=c93b10d2b3ce1bdb77873a3da22c0b7618e6204b961e9e3f012a0529ddd219b6& 04:02 <+bridge_> that was not fun 04:02 <+bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1465542506140799119/image.png?ex=69797c51&is=69782ad1&hm=1b6e9386b7be648b8a01182069b12da4a4f51817b8b4cfc710614120647fc121& 04:03 <+bridge_> uses whole range of svg box, math is hard 06:55 <+bridge_> XD D 07:23 <+bridge_> I think we can remove most of those pronouns as they could be removed. 07:25 <+bridge_> For example, 07:25 <+bridge_> ``` 07:25 <+bridge_> // The player has only one ground jump, so their feet are always dark 07:25 <+bridge_> ``` 07:25 <+bridge_> could be 07:25 <+bridge_> ``` 07:25 <+bridge_> // The player has only one ground jump, so the feet are always dark 07:25 <+bridge_> ``` 07:31 <+bridge_> Anyway, 'they' is often considered as plural around the world, so I think it would better use plurals instead. 07:32 <+bridge_> -# I agree that pronouns are trash. 07:54 <+bridge_> Yes I noticed that too! 07:55 <+bridge_> I donโ€™t think itโ€™s fun .\_. 07:56 <+bridge_> irc uses mattermost and matrix changes every 2 weeks ask zwelf 07:56 <+bridge_> matterbridge\* 08:23 <+bridge_> and @kebs I can explain, there are multiple types of draggers, they can have different speeds and they can be hook-through-walls 08:24 <+bridge_> multiple speeds are done by making the head tick faster so the head rotates faster 08:24 <+bridge_> and the hook-through-walls draggers rotate counter-clock-wise by making the headtick go negative 08:25 <+bridge_> @kebscs 09:17 <+bridge_> this is an interseting thing 09:18 <+bridge_> i like the old green but i guess an icon is better (colorblind) 09:41 <+bridge_> ok time for bed 09:41 <+bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1465627730836979712/image.png?ex=6979cbb1&is=69787a31&hm=f75ebd62e768c7576cff2aed12ff53cb070ddb20aacede6120a6db6eb21c50dc& 09:42 <+bridge_> gotta do line guides tomorrow 09:47 <+bridge_> ey 10:01 <+bridge_> i guess for now this is more readable without any guides 10:01 <+bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1465632712445530235/image.png?ex=6979d054&is=69787ed4&hm=29f4086294a21f2190c3aceef8309084a748c8dba730538666bbed830d6e9dc3& 10:08 <+bridge_> need scale 10:08 <+bridge_> of points 10:18 <+bridge_> I think this is unreadable without a comment in the code ๐Ÿ™ˆ 11:19 <+bridge_> none at all? ๐Ÿ˜ฎ 11:19 <+bridge_> not even pronouns? 11:20 <+bridge_> As in personal pronouns? Nope, we have 1st person, 2nd person and 3rd person, singular and plural 11:20 <+bridge_> interesting 11:20 <+bridge_> He and She both map to `O` in Turkish 11:23 <+bridge_> We also donโ€™t have articles really. Sometimes the number 1 gets used as a sort of pseudo indefinite article 11:23 <+bridge_> I got envelope sounds working correctly ๐Ÿฅณ 11:23 <+bridge_> the protocol or the tiles? ๐Ÿ™‚ 11:24 <+bridge_> the protocol is already there - I just need to test it, which is actually the last step before I am finished ๐Ÿ˜„ 11:25 <+bridge_> should I add a console command to trigger envelopes? Otherwise this is currently unused in ddnet 11:25 <+bridge_> should I add a server console command to trigger envelopes? Otherwise this is currently unused in ddnet 11:27 <+bridge_> not sure how we best go about testing it 11:27 <+bridge_> maybe add a command for testing, but we should probably remove it eventually 11:28 <+bridge_> I can also only make it available in a debug build 11:28 <+bridge_> (I know we hate this branching code) 11:28 <+bridge_> it's okay, as long as we plan to remove it again, you can add it for testing 11:34 <+bridge_> using a netobject makes it totally not trivial 11:53 <+bridge_> I know this is probably not how I should send a netobject, but how do I set the message id? 11:53 <+bridge_> 11:53 <+bridge_> ``` 11:53 <+bridge_> void CGameContext::ConTriggerEnvelope(IConsole::IResult *pResult, void *pUserData) 11:53 <+bridge_> { 11:53 <+bridge_> CGameContext *pSelf = (CGameContext *)pUserData; 11:53 <+bridge_> if(pResult->NumArguments() != 2) 11:53 <+bridge_> return; 11:53 <+bridge_> dbg_msg("dbg", "envelope object send"); 11:54 <+bridge_> CNetObj_EnvelopeTrigger *pTriggerMessage = pSelf->Server()->SnapNewItem(pResult->GetInteger(1)); 11:54 <+bridge_> pTriggerMessage->m_StartTick = pSelf->Server()->Tick(); 11:54 <+bridge_> pTriggerMessage->m_Type = pResult->GetInteger(0); 11:54 <+bridge_> } 11:54 <+bridge_> ``` 11:54 <+bridge_> 11:54 <+bridge_> shouldn't the snap item number do the trick? 11:54 <+bridge_> I know that it should undo itself after 1 tick, but I don't receive this at all at the client side 11:56 <+bridge_> no this is correct hmm 12:07 <+bridge_> putting this into the gamecontroller snap makes it working :3 12:12 <+bridge_> <01000111g> it might be cool for tournament "loading screens" though 12:13 <+bridge_> totally possible rn, already working - you could even add a loading sound 12:13 <+bridge_> totally possible rn, already working - you could even add a loading sound which stops when finished 12:21 <+bridge_> hmm `2026-01-27 12:21:34 I console: Command 'env_trigger' cannot be executed from a map. 12:22 <+bridge_> 2026-01-27 12:21:34 I console: Command 'env_trigger' cannot be executed from a map.` 12:22 <+bridge_> 12:22 <+bridge_> I think there is a console flag missing maybe? 12:22 <+bridge_> I think I made the first command that only needs `CFGFLAG_GAME` 12:23 <+bridge_> if you do this the server crashes 12:24 <+bridge_> no, the server crashes because I set the callback to nullptr and this is not checked ๐Ÿ™ 12:26 <+bridge_> nullptr and nullptr.sg are great maps 12:34 <+bridge_> https://github.com/ddnet/ddnet-rs-rfc/issues/2 blehh 12:34 <+bridge_> thoughts on this? 12:35 <+bridge_> (this is an idea for ddnet-rs though, not ddnet) 12:36 <+bridge_> I also believe ddnet should have music at some point. I could imagine it like the game "Human fall flat" does it. I guess it is similar to minecraft, but to me the vibe feels more appropriate 12:37 <+bridge_> I will take a peep at how HFF does it 12:37 <+bridge_> I used to play it but it was so long ago I didn't even remember it has music x))) 12:54 <+bridge_> ``` 12:54 <+bridge_> 2026-01-27T11:52:00.4974735Z File "/home/runner/work/ddnet/ddnet/scripts/export_settings_commands_table.py", line 38, in parse_arguments 12:54 <+bridge_> 2026-01-27T11:52:00.4975838Z raise RuntimeError(f"Failed to parse {name} arguments: {arguments_line}") from e 12:54 <+bridge_> 2026-01-27T11:52:00.4977589Z RuntimeError: Failed to parse command arguments: "env_trigger", "i[zone] s[trigger_type] i[env]", CFGFLAG_GAME, [](IConsole::IResult *, void *) {}, this, "Client side only: Set a trigger type for an env in a trigger zone" 12:54 <+bridge_> ``` 12:54 <+bridge_> 12:54 <+bridge_> ja gg, the argument parser crashes on valid C++ code, I'll need to add an empty command 13:58 <+bridge_> You probably figured out by now but NetObjects aren't things you just randomly send whenever, it needs to happen during snap 13:58 <+bridge_> So your command would set some state and when snapping that state would be checked to add the netobject 14:19 <+bridge_> yes I figured it out and updated the description in the PR 14:19 <+bridge_> I honestly thought I can do this whenever and the snap would just do it's thing 14:24 <+bridge_> Did it error out btw? Maybe we should assert it if it doesn't, you should never do snapnewitem if a snap isn't happening. (Probably should even be reworked so it's an explicit object that you need to be passed, like a `CSnapHandle` so you can't even call `SnapNewItem` without it) 14:25 <+bridge_> it did silently do nothing 14:26 <+bridge_> Definitely should assert it, I'll keep it in mind 14:38 <+bridge_> hoi, do you know why chiller marked you for review on the envelope trigger tiles or do you want to be informed for every possible new tile? 14:39 <+bridge_> marked for review due to code owners file. @patiga wanted to be informed about map file changes 14:39 <+bridge_> yes - but not in this case. I didn't change mapio, chiller requested a review explicitly 15:48 <+bridge_> https://youtu.be/3kddz-ZHRDY?si=LzOEOyzgVKFHcMWQ 20:58 <+bridge_> https://github.com/ddnet/ddnet/pull/11682 20:58 <+bridge_> any review? ๐Ÿ™‚ 21:28 <+bridge_> is the weak rocket bounce used in any maps? 21:28 <+bridge_> is the weak rocket jump used in any maps? 21:28 <+bridge_> dont think so right? 21:39 <+bridge_> its same height as just jumping 21:50 <+bridge_> I'm thinking about Rank stars 21:51 <+bridge_> so for this graph https://discord.com/channels/252358080522747904/293493549758939136/1465632712567160833 i may want to display a line where Brutal 1* started, maybe where Moderate 5* started if the graph is low enoough 21:51 <+bridge_> so for this graph https://discord.com/channels/252358080522747904/293493549758939136/1465632712567160833 i may want to display a line where Brutal 1* started, maybe where Moderate 5* started if the graph is low enough 21:51 <+bridge_> I think this would be better than some 1600 1650 1700 etc scale 21:52 <+bridge_> since it's less human readable 21:58 <+bridge_> @kebscs did you profile the new event prediction system? 21:58 <+bridge_> it looks sorta slow 22:01 <+bridge_> not really 22:01 <+bridge_> is fps significantly lower or whats slow 22:02 <+bridge_> it just looks scary 22:03 <+bridge_> CreatePredictedEvent could scale very poorly 22:04 <+bridge_> yea idk what else to do here 22:04 <+bridge_> it shouldnt have many sounds anyway, so its not big problem 22:04 <+bridge_> idk 22:05 <+bridge_> most if not all predicted sounds are usually main+dummy 22:05 <+bridge_> you must be careful tho 22:05 <+bridge_> the client already lags from prediction quite noticably at like 1000ping 22:05 <+bridge_> the client already lags from prediction quite noticeably at like 1000ping 22:06 <+bridge_> what was wrong with the old trick? 22:07 <+bridge_> it seemed fine 22:09 <+bridge_> what trick? 22:09 <+bridge_> the one that the old predicted events used 22:09 <+bridge_> ``m_aLastNewPredictedTick[Dummy]`` 22:10 <+bridge_> so the jump sound? 22:10 <+bridge_> these 22:10 <+bridge_> ```cpp 22:10 <+bridge_> if(g_Config.m_ClPredict && !m_SuppressEvents) 22:10 <+bridge_> if(Events & COREEVENT_AIR_JUMP) 22:10 <+bridge_> m_Effects.AirJump(Pos, 1.0f, 1.0f); 22:10 <+bridge_> if(g_Config.m_SndGame && !m_SuppressEvents) 22:10 <+bridge_> { 22:10 <+bridge_> if(Events & COREEVENT_GROUND_JUMP) 22:10 <+bridge_> m_Sounds.PlayAndRecord(CSounds::CHN_WORLD, SOUND_PLAYER_JUMP, 1.0f, Pos); 22:10 <+bridge_> if(Events & COREEVENT_HOOK_ATTACH_GROUND) 22:10 <+bridge_> m_Sounds.PlayAndRecord(CSounds::CHN_WORLD, SOUND_HOOK_ATTACH_GROUND, 1.0f, Pos); 22:10 <+bridge_> if(Events & COREEVENT_HOOK_HIT_NOHOOK) 22:10 <+bridge_> m_Sounds.PlayAndRecord(CSounds::CHN_WORLD, SOUND_HOOK_NOATTACH, 1.0f, Pos); 22:10 <+bridge_> if(Events & COREEVENT_HOOK_ATTACH_PLAYER) 22:10 <+bridge_> { 22:10 <+bridge_> m_PredictedWorld.CreatePredictedSound(Pos, SOUND_HOOK_ATTACH_PLAYER, pLocalChar->GetCid()); 22:10 <+bridge_> } 22:10 <+bridge_> } 22:10 <+bridge_> ``` 22:11 <+bridge_> they arent predicted they just spawn on client-side from gamecore 22:11 <+bridge_> wdym 22:11 <+bridge_> that doesn't change how the deduplication logic works tho 22:12 <+bridge_> i dont get what you mean, the COREEVENT, were spawned on client-side, not predicted or sent from server 22:13 <+bridge_> hook attach was the only one that was sent from server, because it relies on other players so it wasnt spawned client-sidde 22:13 <+bridge_> hook attach was the only one that was sent from server, because it relies on other players so it wasnt spawned client-side 22:14 <+bridge_> so if it worked like these coreevents, i would need to mute all sounds from the server, and that is not possible as not everything is predicted 22:18 <+bridge_> i dont remember exactly, the pr was open for 2 months, but ive had problems with these coreevents 22:19 <+bridge_> the reason that double jump and hook attach don't trigger multiple times is because it checks 22:19 <+bridge_> 22:19 <+bridge_> ``Tick > m_aLastNewPredictedTick[Dummy]`` 22:19 <+bridge_> and then sets 22:19 <+bridge_> ``m_aLastNewPredictedTick[Dummy] = Tick;`` 22:19 <+bridge_> 22:19 <+bridge_> Why can't you do this for all the predicted events? 22:19 <+bridge_> instead of the complex duplication checker 22:19 <+bridge_> would it not work? 22:20 <+bridge_> havet tried that 22:20 <+bridge_> I don't really see any reason it wouldnt 22:21 <+bridge_> I don't really see any reason it wouldnt work 22:21 <+bridge_> also infinitely faster 22:21 <+bridge_> and simpler 22:22 <+bridge_> so same logic, but HandlePredictedEvents in `Tick > m_aLastNewPredictedTick`? 22:22 <+bridge_> I haven't read your code enough to know where to put it 22:23 <+bridge_> but if you apply the same idea I think it should work 22:23 <+bridge_> btw how do you prevent events that the server sends from causing duplicate sounds? 22:24 <+bridge_> comparing position and tick 22:25 <+bridge_> if theres a missmatch or smth itll be a duplicate 22:25 <+bridge_> `CheckPredictedEventHandled` 22:25 <+bridge_> hmm 22:26 <+bridge_> did the server not even send sounds for the previous predicted events? 22:26 <+bridge_> previously predicted events are coreevents? 22:27 <+bridge_> the logical distinction between core and gameworld isn't really important 22:27 <+bridge_> if you mean `COREEVENT_AIR_JUMP` then the server doesnt send it 22:27 <+bridge_> idk why air jump needed the extra m_aLastNewPredictedTick 22:28 <+bridge_> because otherwise you would cause an air jump every time OnPredict() runs 22:28 <+bridge_> thats why its broken in demo 22:28 <+bridge_> right 22:28 <+bridge_> yes but why attach ground didnt need it 22:28 <+bridge_> what about hook sounds? 22:28 <+bridge_> did the server send those 22:28 <+bridge_> those work in demos? 22:29 <+bridge_> no, all coreevents are clientsided in gamecore.cpp 22:30 <+bridge_> yes 22:30 <+bridge_> but 22:30 <+bridge_> they need prediction to even function? 22:31 <+bridge_> does OnPredict run with cl_predict 0? 22:31 <+bridge_> idk 22:31 <+bridge_> this is some jank 22:31 <+bridge_> https://cdn.discordapp.com/attachments/293493549758939136/1465821616398405874/image.png?ex=697a8042&is=69792ec2&hm=bb098a1acc58be84aa5e6af4b1e03fbefd182662da6418b6ae479ad9f40d80df& 22:31 <+bridge_> for other players air jumpo 22:31 <+bridge_> for other players air jump 22:32 <+bridge_> I mean for hook sounds 22:32 <+bridge_> like if you recorded a demo with cl_predict 0 you need OnPredict() to run for them to exist in the demo 22:32 <+bridge_> which implies it always runs 22:33 <+bridge_> doesnt seem like the sounds are tied to cl_predict 22:33 <+bridge_> I know 22:33 <+bridge_> this confuses me 22:34 <+bridge_> we run OnPredict() even in spectate? 22:35 <+bridge_> https://github.com/ddnet/ddnet/issues/1282 22:35 <+bridge_> this is so easy to fix 22:36 <+bridge_> idk 22:44 <+bridge_> why do we check for ``m_SuppressEvents`` in OnPredict 22:44 <+bridge_> I guess it's fine but it's never used 22:46 <+bridge_> you could easily fix air jumps in demos if you just make this work for the local player during demo playback 22:46 <+bridge_> it won't conflict with prediction 22:50 <+bridge_> idk i dont want to touch prediction atm 22:51 <+bridge_> at most i could fix your tele prediction bcs i understand whats going on there 22:53 <+bridge_> I might have found the most deranged response to an issue ever 22:53 <+bridge_> https://github.com/ddnet/ddnet/issues/10262 22:53 <+bridge_> This is how terminals work. DDNet is a terminal. 22:54 <+bridge_> All users are smart! They will never paste anything into chat. 22:54 <+bridge_> CMClient is patching this forcibly 22:56 <+bridge_> someone even points out this is how 0.6.5 does it and literally every other game ive seen XD 22:56 <+bridge_> I find it annoying that the console auto sends 22:56 <+bridge_> It should not read control codes as "sends" 22:56 <+bridge_> that is dangerous probably 22:57 <+bridge_> very often I will copy an IP, and then type "connect ctrl+v" and it will join the server as soon as I paste because there was a new line at the end of the ip 22:57 <+bridge_> which is not at all what I wanted because I wanted to edit the port 22:57 <+bridge_> xDDDDDDDD 22:57 <+bridge_> trailing whitespace should be stripped anyway 22:58 <+bridge_> when do you ever need it? in chat it's removed 22:58 <+bridge_> there are no multiline fields in ddnet that im aware of? 22:59 <+bridge_> there's another issue that needs resolving 22:59 <+bridge_> @learath2 when you have time maybe we can chat again ๐Ÿ™‚ 23:00 <+bridge_> Never mind the fact that this can quickly get you close to muted by the server 23:01 <+bridge_> could you put everything into the github pr, so we could help you resolve them? 23:01 <+bridge_> rn seems like pr is abandoned when draft and no updates 23:08 <+bridge_> I could see someone hiding a disconnect/shutdown bomb in a long list of F2 commands shutting a server down 23:08 <+bridge_> anyone stupid enough to paste into F2 directly though probably shouldn't have pressed F2 23:08 <+bridge_> @kebscs in a perfect world we would be able to play sound events halfway through their playback, but idk if thats possible. Either way I would probably do this. 23:08 <+bridge_> 23:08 <+bridge_> Record all snap sounds from the server as normal but *dont* play them when prevented events are active, then all sounds will come from new tick gated prediction. So we will lose some sound effects when mispredicts happen but thats already how it works for hook and core events, plus the ones we lose would be out of sync anyway 23:09 <+bridge_> @kebscs in a perfect world we would be able to play sound events halfway through their playback, but idk if thats possible. Either way I would probably do this. 23:09 <+bridge_> 23:09 <+bridge_> Record all snap sounds from the server as normal but *dont* play them when predicted events are active, then all sounds will come from new tick gated prediction. So we will lose some sound effects when mispredicts happen but thats already how it works for hook and core events, plus the ones we lose would be out of sync anyway 23:10 <+bridge_> my solution works too 23:10 <+bridge_> hide full range ban+shutdown :troll: 23:11 <+bridge_> detecting if sound is already playing is probably more expensive to what i do now 23:11 <+bridge_> Im not sure its actually better 23:11 <+bridge_> When did I say we had to do this? 23:11 <+bridge_> "we would be able to play sound events halfway through their playback" 23:12 <+bridge_> xD 23:12 <+bridge_> Thats what fighting games with rollback netcode do but Im assuming we dont have that capability so we just play them on new tick instead 23:12 <+bridge_> Ideally the entire sound playback state at any given time is reset whenever we do a full prediction run 23:13 <+bridge_> i would say most games play sounds based on whats happening on client side visuals 23:13 <+bridge_> rather than with events from server 23:13 <+bridge_> Not true 23:13 <+bridge_> Overwatch does it as ddnet did prior to your pr 23:13 <+bridge_> They intentionally play bullet hit effects out of sync when ping is over a certain threshold to prevent mispredicted effects 23:14 <+bridge_> how did they solve it 23:14 <+bridge_> so its not laggy 23:14 <+bridge_> It is laggy 23:14 <+bridge_> me > overwatch 23:14 <+bridge_> ๐Ÿ˜‚ 23:14 <+bridge_> When your ping is <80 they use yout system, when its over 80 they use olf system 23:14 <+bridge_> They do both 23:14 <+bridge_> When your ping is <80 they use yout system, when its over 80 they use old system 23:15 <+bridge_> When your ping is <80 they use your system, when its over 80 they use old system 23:15 <+bridge_> Because if you hit someone and then it mispredicts the play posts a clip online and says "billion dollar game studio cant figure out working netcode" 23:16 <+bridge_> Because if you hit someone and then it mispredicts the player posts a clip online and says "billion dollar game studio cant figure out working netcode" 23:16 <+bridge_> true tho 23:16 <+bridge_> if i thought of the solution in my free time without looking up anything 23:16 <+bridge_> and they use same way 23:17 <+bridge_> Theres a finite number of solutions, lots of games converge to the same thing 23:20 <+bridge_> @totar 23:20 <+bridge_> i would love the tele predict pr be merged :) 23:20 <+bridge_> I dont want to rush it 23:20 <+bridge_> Unless you can get them to drop backcompat 23:22 <+bridge_> but were not rushing, youre stalling if you have problems and not share them 23:23 <+bridge_> and old clients dont predict anyway so theres no backcompat 23:23 <+bridge_> Im not obligated to share my thoughts with you instantly upon having them 23:23 <+bridge_> i have not said that 23:24 <+bridge_> There will be back compat when we realize that the implementation that got merged is broken and needs fixing 23:24 <+bridge_> yes thats why there are reviews, so not everything is on your shoulders 23:24 <+bridge_> The reviewers have demonstrated that they are unable to spot the issues I found 23:25 <+bridge_> So its on my shoulders 23:26 <+bridge_> idk if the projectile tele out is a problem if its mixed with clientid and current tick too 23:27 <+bridge_> just adding direction and its fine 23:29 <+bridge_> Its really not hard to make a setup that causes issues 23:29 <+bridge_> Just look up into a looping teleporter and toy can get collisions between two projectiles easily 23:29 <+bridge_> If done wrong 23:30 <+bridge_> Just look up into a looping teleporter and you can get collisions between two projectiles easily 23:31 <+bridge_> to me its not a problem that should delay it for months, if its broken in only very specific, unlikely scenario 23:32 <+bridge_> and not really backcompat issue bcs this isnt a netmsg, smth like that could be changed later 23:37 <+bridge_> and its not "broken" if im thinking correctly, just not fully random 23:43 <+bridge_> you absolutely cannot easily "change later" because if you change the seeding then you need the client to support connecting to servers that use either version of the physics 23:44 <+bridge_> ddnet updates the servers, idk if any server owner will sit specifically on this broken version 23:44 <+bridge_> not fully random *is* broken. if you go on the map "Avoid" with the first version of the tele PR it's completely broken 23:45 <+bridge_> over time the bullets will randomly teleport on top of each other and then they never get seperated again which completely changes the map 23:45 <+bridge_> i see 23:45 <+bridge_> what about current version of pr? 23:46 <+bridge_> it's fixed for that specific case but I want it to be indistinguishable from the previous behavior from a player and mapper perspective 23:49 <+bridge_> was anything wrong with the "real" start tick? 23:49 <+bridge_> no 23:50 <+bridge_> the new issue is that we sometimes have player projectiles without the player 23:50 <+bridge_> which breaks things 23:52 <+bridge_> i have never noticed that 23:52 <+bridge_> just sometimes id is -1 on spawn