Skip to content

fix(unreal): define attribute accessors and refresh Nanite limits - #1054

Open
raiden-02 wants to merge 1 commit into
msitarzewski:mainfrom
raiden-02:fix/unreal-systems-engineer-examples
Open

raiden-02 wants to merge 1 commit into
msitarzewski:mainfrom
raiden-02:fix/unreal-systems-engineer-examples

Conversation

@raiden-02

Copy link
Copy Markdown

What does this PR do?

Two fixes in game-development/unreal-engine/unreal-systems-engineer.md. The agent's persona and structure are unchanged.

  • The attribute set example doesn't compile. It uses a macro called ATTRIBUTE_ACCESSORS, but the engine never defines it. AttributeSet.h only shows it inside a comment, and each project is expected to define it. The example now defines the macro. It also includes AbilitySystemComponent.h, because the code the macro generates needs it.
  • The Nanite rule is out of date. It said Nanite doesn't work with skeletal or spline meshes. In UE 5.8 both are supported, and the settings r.Nanite.AllowSkinnedMeshes and r.Nanite.AllowSplineMeshes are on by default (see NaniteResources.cpp). The rule now tells readers to check what their engine version supports.

Agent Information (if adding/modifying an agent)

  • Agent Name: Unreal Systems Engineer
  • Category: Game Development (game-development/unreal-engine/)
  • Specialty: UE5 C++/Blueprint architecture, GAS, Nanite and Lumen

How I tested it (UE 5.8, Windows)

I copied the attribute set example exactly as written, both from main and from this branch, into an empty UE 5.8 project and built it. The only extra code was placeholder versions of the functions the example mentions but never defines.

Version Result
On main fails to build at ATTRIBUTE_ACCESSORS(UMyAttributeSet, Health) (errors C4430 and C2061) because the macro doesn't exist
With this PR builds with no warnings
With this PR, minus the new AbilitySystemComponent.h include fails: use of undefined type 'UAbilitySystemComponent' (C2027). So the include is needed.

I also ran the fixed attribute set on a real dedicated server with a client connected. It registered correctly on both sides, and when the server set Health to 42, the client also saw 42.

The Nanite change is text only, so there was nothing to run. I checked it against the engine source.

The repo's own checks also pass:

  • scripts/lint-agents.sh
  • scripts/test-convert-outputs.sh --drift=advisory: 32 of 32 checks, 282 agents across 15 tools

All the builds and runs above were done on my machine.

Checklist

  • Follows the agent template structure from CONTRIBUTING.md (unchanged)
  • Includes YAML frontmatter with name, description, color (unchanged)
  • Has concrete code/template examples (for new agents): not applicable, this edits an existing agent
  • Tested in real scenarios: attribute set built in UE 5.8 and run on a dedicated server with a client (see above)
  • Proofread and formatted correctly

@raiden-02
raiden-02 marked this pull request as ready for review October 5, 2026 23:56

@meisamrezapuran02-collab meisamrezapuran02-collab left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for all

TheRealVitja pushed a commit to TheRealVitja/agency-agents that referenced this pull request Oct 6, 2026
…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
@msitarzewski

Copy link
Copy Markdown
Owner

Thank you, @raiden-02. Both fixes check out where we could verify them, and the version-neutral Nanite wording is better than a hard version claim.

  • Nanite. Both settings are real and version-dependent. `r.Nanite.AllowSkinnedMeshes` arrived with UE 5.5 Nanite skinning (forum thread), and `r.Nanite.AllowSplineMeshes` with UE 5.3's initial spline-mesh support (5.3 rendering notes). See also Epic's Nanite page.
  • `ATTRIBUTE_ACCESSORS`. Epic's own Gameplay Attributes guide (UE 5.8) uses only the individual `GAMEPLAYATTRIBUTE_*` macros and never defines `ATTRIBUTE_ACCESSORS`, which supports your point that each project defines it. The `AbilitySystemComponent.h` include is right too, because the generated setter calls into the ASC.

One thing we couldn't confirm: the parenthetical saying recent engine versions ship `ATTRIBUTE_ACCESSORS_BASIC`. It isn't on Epic's attributes page, and we found no public reference. Could you point to the engine version and the `AttributeSet.h` line where it's defined? If it's easier, dropping the parenthetical works too, since the fix stands without it. Then we'll merge this together with #1053.

@raiden-02

Copy link
Copy Markdown
Author

Thank you, @raiden-02. Both fixes check out where we could verify them, and the version-neutral Nanite wording is better than a hard version claim.

  • Nanite. Both settings are real and version-dependent. r.Nanite.AllowSkinnedMeshes arrived with UE 5.5 Nanite skinning (forum thread), and r.Nanite.AllowSplineMeshes with UE 5.3's initial spline-mesh support (5.3 rendering notes). See also Epic's Nanite page.
  • ATTRIBUTE_ACCESSORS. Epic's own Gameplay Attributes guide (UE 5.8) uses only the individual GAMEPLAYATTRIBUTE_* macros and never defines ATTRIBUTE_ACCESSORS, which supports your point that each project defines it. The AbilitySystemComponent.h include is right too, because the generated setter calls into the ASC.

One thing we couldn't confirm: the parenthetical saying recent engine versions ship ATTRIBUTE_ACCESSORS_BASIC. It isn't on Epic's attributes page, and we found no public reference. Could you point to the engine version and the AttributeSet.h line where it's defined? If it's easier, dropping the parenthetical works too, since the fix stands without it. Then we'll merge this together with #1053.

Thanks! It's in Engine/Plugins/Runtime/GameplayAbilities/Source/GameplayAbilities/Public/AttributeSet.h at line 465 in UE 5.8.3:

#define ATTRIBUTE_ACCESSORS_BASIC(ClassName, PropertyName) \

The comment just above it says it's there so you don't have to copy ATTRIBUTE_ACCESSORS from the comment.

I only checked 5.8, so I can't say which version first added it. If you'd like the wording to be exact, I'm happy to change "Recent engine versions" to "UE 5.8", or drop the parenthetical. Either way is fine with me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants