Repository navigation
Conversation
…nts) Curated sync of the open upstream pull requests as of 2026-10-06: - Script and CI fixes: msitarzewski#1055, msitarzewski#1030, msitarzewski#865, msitarzewski#860, msitarzewski#967, msitarzewski#870, msitarzewski#869, msitarzewski#889, msitarzewski#1056, msitarzewski#755, msitarzewski#868, msitarzewski#771, msitarzewski#867; ported msitarzewski#523, msitarzewski#512 and the permissions part of msitarzewski#790. - Existing-agent fixes: msitarzewski#1033-msitarzewski#1052, msitarzewski#1053, msitarzewski#1054, msitarzewski#1023, msitarzewski#756-msitarzewski#759, msitarzewski#799, msitarzewski#805, msitarzewski#715, msitarzewski#752, msitarzewski#784, msitarzewski#793, msitarzewski#858, msitarzewski#812, msitarzewski#789, msitarzewski#1007. - New agents: msitarzewski#702, msitarzewski#707, msitarzewski#731, msitarzewski#732, msitarzewski#764, msitarzewski#848, msitarzewski#859, msitarzewski#862, msitarzewski#863, msitarzewski#886, msitarzewski#908, msitarzewski#982-msitarzewski#985, msitarzewski#1031, msitarzewski#1032. - Docs: msitarzewski#577, msitarzewski#743, msitarzewski#762, msitarzewski#785, msitarzewski#786, msitarzewski#815, msitarzewski#816. Fixes found while integrating: Bash 3.2 guard for the msitarzewski#755 worker argv, Windsurf re-conversion over a stale .windsurfrules, locale-independent check-divisions.sh, agency- prefix handling in the outputs eval, and the India Business Navigator's YAML and headings. Resolves upstream issues msitarzewski#229, msitarzewski#763, msitarzewski#821 and msitarzewski#1027. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NwgfpJ9tGbUh5g84u5VSgv
|
Thank you, @raiden-02. This is a careful fix, and the `_Validate` explanation is exactly right. Returning `false` disconnects the player, so lag-sensitive checks belong in `_Implementation`. Moving the ASC onto the PlayerState, with owner and avatar split, plus the `;` ini comments, the `^` continuations and `-noclient`, all match standard practice. We verify technical claims before merging. Two claims here we couldn't confirm from public sources, since the engine source isn't public:
Could you point us to where you confirmed these, e.g. the engine version plus the header or `.cpp` file (an `UE_DEPRECATED(5.5, …)` line, or the `FAutoConsoleCommand` registration), or a release note? A file path and version is plenty. Once those are confirmed, we'll merge this together with #1054. |
Thanks for checking these. Both come from the UE 5.8.3 engine source that ships with the launcher install (Build.version: 5.8.3, CL 58210709).
Anyone with a launcher install can open these files directly. |
What does this PR do?
Some code examples in
game-development/unreal-engine/unreal-multiplayer-architect.mdeither kick honest players off the server or don't compile. This PR fixes them. The agent's persona and structure are unchanged.The
_Validateexample kicks honest players. If_Validatereturnsfalse, the server disconnects the player. The example returnedfalsewhen the target was too far away or no longer existed. With lag, an honest player can send exactly that request, because the target moved or died before the request arrived. Those checks now run in_Implementation, which just ignores the request._Validatenow only rejects requests that are impossible. I also added a one-line rule that explains this.The GAS (Gameplay Ability System) example doesn't compile. It had two errors:
BlueprintReadOnlyon a private member, which Unreal's header tool rejects.GetOrSpawnAttributes, which doesn't exist.It also created the ability system component on the Character but told it the PlayerState was its owner. The component now lives on the PlayerState, which matches how this agent already initializes it in
PossessedByandOnRep_PlayerState.The update frequency example uses an API deprecated in UE 5.5. It set
NetUpdateFrequencydirectly. It now callsSetNetUpdateFrequency()andSetMinNetUpdateFrequency(), which is what the agent's own rules already say to do.The
RunUAT.batcommand lost all its arguments. The command was split over several lines without^at the end of each line, soRunUATonly receivedBuildCookRun. It now has^on each line and its ownbatcode block. I added-noclientso a server-only build doesn't also build, cook and stage the game client. I also changed the comment marker in the ini example to the one Unreal's ini parser actually recognizes.Two names don't exist in the engine.
FNetworkPredictionStateBaseis nowTNetworkPredictionStateTypes<InputCmd, SyncState, AuxState>, and the console commandnet.RepGraph.PrintAllNodesis nowNet.RepGraph.PrintGraph.Agent Information (if adding/modifying an agent)
game-development/unreal-engine/)How I tested it (UE 5.8, Windows)
I copied the code examples exactly as written, both from
mainand from this branch, into an empty UE 5.8 project and built them. The only extra code was placeholder versions of functions the examples mention but never define, such asPerformInteractionandOnRep_Health.mainBlueprintReadOnly should not be used on private members. With that worked around, it fails again:'GetOrSpawnAttributes': is not a member of 'UAbilitySystemComponent'I also ran a real dedicated server with a client connected to it. The client called
ServerRequestInteractthree times: with a target 100 units away, then 1000 units away, then withnullptr.main: the first request worked. On the second, the server loggedReceivedRPC: RPC_GetLastFailedReason: ServerRequestInteract_Validateand closed the connection. The client reportedConnectionLost.Healthto 42, the client also saw 42.For
RunUAT.bat, I ran both versions throughcmd.exewith a fakeRunUAT.batthat prints whatever it receives. Onmainit received onlyBuildCookRun. With this PR it receives every flag.The repo's own checks also pass:
scripts/lint-agents.shscripts/test-convert-outputs.sh --drift=advisory: 32 of 32 checks, 282 agents across 15 toolsI used AI to help prepare this. All the builds and runs above were done on my machine.
Checklist
name,description,color(unchanged)