58 lines
4.1 KiB
Markdown
58 lines
4.1 KiB
Markdown
|
|
## 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
|
||
|
|
|
||
|
|
- [UE Wingman testing mindset](feedback_wingman_testing.md) — flag tool friction during game work sessions
|
||
|
|
- [Use mv for file renames](feedback_rename_with_mv.md) — mv + targeted edits, don't rewrite from memory
|