Initial commit
This commit is contained in:
152
skills/references/unreal-guide.md
Normal file
152
skills/references/unreal-guide.md
Normal file
@@ -0,0 +1,152 @@
|
||||
# Unreal Engine Project Version Management
|
||||
|
||||
## Overview
|
||||
|
||||
Unreal Engine projects use `.uproject` JSON file for project configuration and versioning.
|
||||
|
||||
## File Structure
|
||||
|
||||
```
|
||||
MyUnrealProject/
|
||||
├── MyGame.uproject # Project file with version
|
||||
├── Config/
|
||||
│ └── DefaultGame.ini # Game config
|
||||
├── Source/
|
||||
│ └── ...
|
||||
└── Content/
|
||||
└── ...
|
||||
```
|
||||
|
||||
## .uproject File
|
||||
|
||||
The project file is a JSON file containing project metadata:
|
||||
|
||||
```json
|
||||
{
|
||||
"FileVersion": 3,
|
||||
"EngineAssociation": "5.3",
|
||||
"Category": "",
|
||||
"Description": "",
|
||||
"Version": "1.2.3",
|
||||
"Modules": [
|
||||
{
|
||||
"Name": "MyGame",
|
||||
"Type": "Runtime",
|
||||
"LoadingPhase": "Default"
|
||||
}
|
||||
],
|
||||
"Plugins": [
|
||||
...
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
**Version Fields:**
|
||||
- `Version` (custom): Semantic version of your project
|
||||
- `EngineAssociation`: Unreal Engine version (e.g., "5.3", "5.4")
|
||||
|
||||
## Version Update Workflow
|
||||
|
||||
### Manual Update
|
||||
|
||||
1. Edit `.uproject` file:
|
||||
```json
|
||||
{
|
||||
"Version": "1.3.0"
|
||||
}
|
||||
```
|
||||
|
||||
2. Commit:
|
||||
```bash
|
||||
git add MyGame.uproject
|
||||
git commit -m "chore: bump version to 1.3.0"
|
||||
```
|
||||
|
||||
### Automatic Update (with auto-release-manager)
|
||||
|
||||
```
|
||||
1. Detect .uproject file
|
||||
2. Update Version field → 1.3.0
|
||||
3. Git commit
|
||||
4. Create tag v1.3.0
|
||||
5. Push to remote
|
||||
```
|
||||
|
||||
## DefaultGame.ini
|
||||
|
||||
Optional: You can also store version in `Config/DefaultGame.ini`:
|
||||
|
||||
```ini
|
||||
[/Script/EngineSettings.GeneralProjectSettings]
|
||||
ProjectID=...
|
||||
ProjectName=MyGame
|
||||
ProjectVersion=1.2.3
|
||||
CompanyName=MyCompany
|
||||
```
|
||||
|
||||
This is useful for in-game version display.
|
||||
|
||||
## Build Versioning
|
||||
|
||||
For packaging builds, you may want to configure:
|
||||
|
||||
**Config/DefaultGame.ini:**
|
||||
```ini
|
||||
[/Script/UnrealEd.ProjectPackagingSettings]
|
||||
BuildConfiguration=PPBC_Shipping
|
||||
ProjectVersion=1.2.3
|
||||
```
|
||||
|
||||
## Example: Full Update
|
||||
|
||||
When updating version from 1.2.3 to 1.3.0:
|
||||
|
||||
**Files to update:**
|
||||
1. `MyGame.uproject` → `Version: "1.3.0"`
|
||||
2. `Config/DefaultGame.ini` → `ProjectVersion=1.3.0` (if used)
|
||||
|
||||
**auto-release-manager handles:**
|
||||
- Detecting .uproject file
|
||||
- Updating Version field
|
||||
- Git commit + tag
|
||||
- Push to remote
|
||||
|
||||
## Common Issues
|
||||
|
||||
### Q: Is Version field required in .uproject?
|
||||
|
||||
A: No, it's optional. But recommended for version tracking.
|
||||
|
||||
### Q: What about EngineAssociation?
|
||||
|
||||
A: EngineAssociation is the UE version (e.g., "5.3"). Don't confuse it with your project version.
|
||||
|
||||
### Q: Can I use multiple version fields?
|
||||
|
||||
A: Yes! You can maintain:
|
||||
- `.uproject` → Version (project version)
|
||||
- `DefaultGame.ini` → ProjectVersion (in-game display)
|
||||
- `version.json` → Custom metadata
|
||||
|
||||
Just ensure they stay synced.
|
||||
|
||||
## Recommended Approach
|
||||
|
||||
**Best Practice:**
|
||||
1. Use `.uproject` → Version as primary
|
||||
2. Optionally sync to `DefaultGame.ini` for in-game display
|
||||
3. Use auto-release-manager to keep everything consistent
|
||||
|
||||
**Example:**
|
||||
```json
|
||||
// MyGame.uproject
|
||||
{
|
||||
"Version": "1.3.0"
|
||||
}
|
||||
```
|
||||
|
||||
```ini
|
||||
; Config/DefaultGame.ini
|
||||
[/Script/EngineSettings.GeneralProjectSettings]
|
||||
ProjectVersion=1.3.0
|
||||
```
|
||||
Reference in New Issue
Block a user