Files
jbashrc/claude/integration-memory/MEMORY.md
2026-04-03 16:59:26 -04:00

4.1 KiB

User Preferences

  • Use build.py c++ for lightweight C++ rebuilds, build.py all for full rebuilds.
  • Does a lot of refactoring in early development stages. Be ready for frequent renames, restructuring, and changes of mind without pushback.
  • VS Code is the IDE. Use code --goto <filename>:<line> to open files/locations in the IDE instead of showing code snippets at the prompt.
  • When asked to "show me" code, open it in VS Code rather than pasting it in the terminal.
  • The Unreal Engine source for this project lives at /home/jyelon/integration.UE (sibling to the project dir), not ~/UnrealEngine. Always use this copy when working on the integration project.
  • Many of Unreal's basic data types (FString, TArray, TSet, TMap, etc.) are in integration.UE/Engine/Source/Runtime/Core/Public/Containers/.
  • Editor log files are at integration/User/jyelon/Saved/Logs/.

Critical: Minimize Diff Noise

  • The user reviews all changes via git diff in VS Code. Every unnecessary diff line costs review time.
  • Preserve all existing comments. Comments describe the logic, not the syntax — they survive refactors. Only remove a comment if the code it described was genuinely deleted.
  • Don't rename variables, reorder code, or reformat lines unless directly required by the task. If a variable name works, leave it. If a comment is in the right place, don't move it.
  • Don't make gratuitous changes. If it doesn't need to change, don't touch it.

Coding Style Preferences

  • NO STATIC FUNCTIONS in Unreal code. Use class methods or namespace-scoped functions instead. This is a hard rule — the user has corrected this multiple times.
  • Prefer in-class member initializers (int x_ = 0; in the header) over explicit initialization in constructor bodies. When touching constructors, migrate toward this style.
  • Inline empty constructors/destructors in the header when possible.
  • Avoid ternary operator unless very concise (e.g., x ? 1 : 0). For longer expressions, use early-return if instead.
  • When asked for a small change, do exactly that. If it turns out to require broader refactoring, STOP and explain the situation instead of silently rewriting the module.

Tools

  • tools/clangd-query.py — Query clangd for C++ symbols. Uses a background daemon for fast responses after first invocation (~10s cold, milliseconds warm). Commands:
    • python3 tools/clangd-query.py symbol <name> — Find symbols by name across the whole project.
    • python3 tools/clangd-query.py definition <file> <line> <col> — Go to definition (1-based line/col).
    • python3 tools/clangd-query.py references <file> <line> <col> — Find all references (1-based line/col).
    • python3 tools/clangd-query.py diagnostics <file> — Get errors/warnings for a file.
    • python3 tools/clangd-query.py stop — Stop the daemon.
    • Prefer this over grep when looking for C++ class/function definitions or references.

Asset Naming Conventions

Folder Class Prefix Example
/Game/StaticMeshes UStaticMesh SM_ SM_Rock
/Game/SkeletalMeshes USkeletalMesh SKM_ SKM_Character
/Game/AnimSequences UAnimSequence SEQ_ SEQ_Walk
/Game/Tangibles UBlueprint (Actor) TAN_ TAN_Tree
/Game/Widgets UWidgetBlueprint WB_ WB_Hotkeys
  • Blueprints in /Game/Luprex/ use the lx prefix (e.g., lxPlayerController) and are loaded directly, not through the asset lookup system.
  • See Source/Integration/AssetLookup.cpp for the indexing logic.

MCP / Blueprint Editing

  • BlueprintMCP plugin is in Plugins/BlueprintMCP/ (C++ plugin, editor-only). Listens on TCP port 9847.
  • Python MCP bridge is tools/mcp-bridge.py (stdio transport, forwards to TCP port 9847).
  • Blueprint text exports go to Saved/BlueprintExports/<PackageName>/ — includes both custom graph exports and Unreal's copy-format ASCII dump.

Feedback