Step 1: the Salty project, two modules, tests and the gym
Salty.uproject (UE 5.8) from the Third Person template with class redirects, the SaltyCore and Salty modules, the three build targets, USaltyAssetManager calling InitGlobalData, Config/Tags with the 23 root namespaces, Scripts/run-tests.sh, build.sh and Authoring/create_gym.py, L_Gym, Git LFS attributes and the placeholder test. Template variants kept as reference (D-41). The four Fab packs stay out of the repository for now (~10 GB). The editor serves the engine MCP plugin on 127.0.0.1:8000 through DefaultEditorPerProjectUserSettings.ini. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
0e61a77346
commit
4f2c55cd2a
@@ -1,9 +1,8 @@
|
||||
# Unreal prototype
|
||||
|
||||
An Unreal Engine 5 project, C++ first, that builds and proves three things in order: a movement controller,
|
||||
fighting, and crafting. The engine version and the project name are open decisions (OD-01, OD-02 in
|
||||
[`Docs/Decisions.md`](Docs/Decisions.md)); pin both here in step 1. Until the `.uproject` exists, `<Project>`
|
||||
in the docs stands for its name.
|
||||
fighting, and crafting. **Engine: Unreal Engine 5.8, launcher build at `D:\UE_5.8` (D-39). Project: `Salty`
|
||||
(D-40).** Where an older doc says `<Project>`, read `Salty`.
|
||||
|
||||
## Before you start
|
||||
|
||||
@@ -22,28 +21,33 @@ are in [`Docs/Ideas.md`](Docs/Ideas.md); do not build one inside a step about so
|
||||
|
||||
## Where the project actually is
|
||||
|
||||
Nothing is built. The repository holds the documentation set and a stock `.gitignore`. Step 1 (the project, two
|
||||
modules, tests, a dedicated server in the editor) is next and waits on OD-01 and OD-02. Update this section when a
|
||||
step closes: what exists, what the next step is.
|
||||
Step 1 is built (see `Docs/Worklog.md`): `Salty.uproject` at the root, the `SaltyCore` and `Salty` modules, the
|
||||
placeholder test, the tag namespaces, LFS, the scripts and `L_Gym`. It was created from the engine's Third Person
|
||||
template; the plain template classes are `ATemplate*` and are the placeholder body until step 3. The template's
|
||||
`Variant_*` folders under `Source/Salty/` and `Content/` are reference only (D-41): do not add code there, do not
|
||||
depend on them. Four Fab asset packs sit in `Content/` (`HouseForge_01`, `Medieval_Weapons`, `Elite_RockyMeadows`,
|
||||
`RPGEnvironmentVFX`); none is referenced yet, and a pack is used only when a step's spec names the asset.
|
||||
|
||||
Next: step 2, the telemetry seam. Update this section when a step closes: what exists, what the next step is.
|
||||
|
||||
## Layout
|
||||
|
||||
Planned; created by step 1. The `.uproject` sits at the repository root, which is what the `.gitignore` assumes.
|
||||
The `.uproject` sits at the repository root, which is what the `.gitignore` assumes.
|
||||
|
||||
| Path | What it is |
|
||||
| --- | --- |
|
||||
| `<Project>.uproject`, `Source/<Project>.Target.cs`, `<Project>Editor.Target.cs`, `<Project>Server.Target.cs` | The project and its three build targets |
|
||||
| `Source/<Project>Core/` | Rules, data types, tags, the telemetry contract. Knows no `AActor`. Tests in `Tests/` |
|
||||
| `Source/<Project>/` | Gameplay: `Core/`, `Stats/`, `Movement/`, `Interaction/`, `Combat/`, `Crafting/`, `UI/`, one folder per feature |
|
||||
| `Salty.uproject`, `Source/Salty.Target.cs`, `SaltyEditor.Target.cs`, `SaltyServer.Target.cs` | The project and its three build targets. The server target needs a source-built engine (OD-04) |
|
||||
| `Source/SaltyCore/` | Rules, data types, tags, the telemetry contract. Knows no `AActor`. Tests in `Tests/` |
|
||||
| `Source/Salty/` | Gameplay: `Core/`, `Stats/`, `Movement/`, `Interaction/`, `Combat/`, `Crafting/`, `UI/`, one folder per feature. `Variant_*` is template reference (D-41) |
|
||||
| `Content/<Feature>/` | Assets per feature: `Definitions/` for data assets, Blueprints, meshes, montages |
|
||||
| `Content/Maps/L_Gym` | The movement test level. Never leaves the project |
|
||||
| `Content/Maps/L_Gym` | The movement test level, authored by `Scripts/Authoring/create_gym.py`. Never leaves the project |
|
||||
| `Content/Tests/` | Functional test maps |
|
||||
| `Config/Tags/<Feature>.ini` | Gameplay tag source of truth, one file per top-level namespace |
|
||||
| `Scripts/` | `run-tests.sh`, `build.sh`, and `Authoring/` for editor Python scripts. Run by hand; there is no CI |
|
||||
| `Scripts/` | `run-tests.sh`, `build.sh`, and `Authoring/` for editor Python scripts. Run by hand; there is no CI. `UE_ROOT` overrides the engine path |
|
||||
| `Docs/` | The documentation set. Update it when you change how something works |
|
||||
| `Docs/Worklog.md` | One terse line per step closed or wall hit |
|
||||
|
||||
Module dependency is one way: `<Project>` depends on `<Project>Core`, never the reverse. If the core module seems
|
||||
Module dependency is one way: `Salty` depends on `SaltyCore`, never the reverse. If the core module seems
|
||||
to need an actor, the thing it needs is data.
|
||||
|
||||
## Conventions
|
||||
@@ -83,12 +87,12 @@ to need an actor, the thing it needs is data.
|
||||
|
||||
## Commands
|
||||
|
||||
Created in step 1; the shapes are fixed now so the docs can refer to them.
|
||||
|
||||
```bash
|
||||
Scripts/run-tests.sh # headless: UnrealEditor-Cmd <Project>.uproject -ExecCmds="Automation RunTests <Project>; Quit" -unattended -nopause -NullRHI
|
||||
Scripts/run-tests.sh Core # a filter: <Project>.Core.*
|
||||
Scripts/run-tests.sh # headless: UnrealEditor-Cmd Salty.uproject -ExecCmds="Automation RunTests Salty; Quit" -unattended -nopause -NullRHI
|
||||
Scripts/run-tests.sh Core # a filter: Salty.Core.*
|
||||
Scripts/build.sh Win64 Development # UAT BuildCookRun for the game target; add -server for the server target once the engine is a source build
|
||||
D:/UE_5.8/Engine/Build/BatchFiles/Build.bat SaltyEditor Win64 Development -Project="<abs>\Salty.uproject" -WaitMutex # compile the editor from a shell
|
||||
UnrealEditor-Cmd.exe Salty.uproject -run=pythonscript -script=Scripts/Authoring/create_gym.py # rerun an authoring script
|
||||
```
|
||||
|
||||
There is no CI, deliberately, and there will not be until there is a reason. Run the tests yourself before saying
|
||||
|
||||
Reference in New Issue
Block a user