문서를 한국어로 변경
모든 MD 문서(README.md, MERGE_INSTRUCTIONS.md)를 한국어로 번역 - 기능 설명, 설치 방법, 사용 가이드 한국어화 - 기술 세부사항 및 문제 해결 섹션 한국어화 - 병합 가이드 및 롤백 방법 한국어화
This commit is contained in:
@ -1,19 +1,19 @@
|
||||
# Merge Instructions for Existing Files
|
||||
# 기존 파일 병합 가이드
|
||||
|
||||
This document describes the changes that need to be merged into existing WorldStalkerEditor module files.
|
||||
이 문서는 기존 WorldStalkerEditor 모듈 파일에 병합해야 하는 변경사항을 설명합니다.
|
||||
|
||||
## Overview
|
||||
## 개요
|
||||
|
||||
The Asset Export to JSON feature requires minimal modifications to existing files:
|
||||
- **WorldStalkerEditor.h**: Add two private method declarations
|
||||
- **WorldStalkerEditor.cpp**: Add include directive and implement menu registration
|
||||
Asset Export to JSON 기능은 기존 파일에 대한 최소한의 수정만 필요합니다:
|
||||
- **WorldStalkerEditor.h**: private 메서드 선언 2개 추가
|
||||
- **WorldStalkerEditor.cpp**: include 지시문 추가 및 메뉴 등록 구현
|
||||
|
||||
## File: WorldStalkerEditor.h
|
||||
## 파일: WorldStalkerEditor.h
|
||||
|
||||
### Location of Changes
|
||||
Line 18-20 (after existing private member variables)
|
||||
### 변경 위치
|
||||
18-20줄 (기존 private 멤버 변수 다음)
|
||||
|
||||
### Changes to Add
|
||||
### 추가할 변경사항
|
||||
|
||||
```cpp
|
||||
private:
|
||||
@ -21,7 +21,7 @@ private:
|
||||
void AddToolbarMenuEntry(class FMenuBuilder& MenuBuilder);
|
||||
```
|
||||
|
||||
### Complete Modified Section
|
||||
### 완전한 수정 섹션
|
||||
|
||||
```cpp
|
||||
class FWorldStalkerEditorModule : public IModuleInterface
|
||||
@ -31,7 +31,7 @@ public:
|
||||
virtual void ShutdownModule() override;
|
||||
|
||||
private:
|
||||
// ADD THESE TWO LINES:
|
||||
// 이 두 줄을 추가하세요:
|
||||
void RegisterMenuExtensions();
|
||||
void AddToolbarMenuEntry(class FMenuBuilder& MenuBuilder);
|
||||
|
||||
@ -41,83 +41,83 @@ private:
|
||||
};
|
||||
```
|
||||
|
||||
**Note**: The `AddToolbarMenuEntry` method is kept for backward compatibility but is not actively used.
|
||||
**참고**: `AddToolbarMenuEntry` 메서드는 하위 호환성을 위해 유지되지만 실제로는 사용되지 않습니다.
|
||||
|
||||
---
|
||||
|
||||
## File: WorldStalkerEditor.cpp
|
||||
## 파일: WorldStalkerEditor.cpp
|
||||
|
||||
### Change 1: Add Include Directive
|
||||
### 변경 1: Include 지시문 추가
|
||||
|
||||
**Location**: Line 4 (after existing includes)
|
||||
**위치**: 4줄 (기존 include 다음)
|
||||
|
||||
**Add this line**:
|
||||
**이 줄을 추가**:
|
||||
```cpp
|
||||
#include "Utility/AssetExporterToJSON.h"
|
||||
```
|
||||
|
||||
**Complete Include Section**:
|
||||
**완전한 Include 섹션**:
|
||||
```cpp
|
||||
#include "WorldStalkerEditor.h"
|
||||
#include "DataTable/DataTableNoticeListener.h"
|
||||
#include "Asset/ObjectSaveEventListener.h"
|
||||
#include "Utility/AssetExporterToJSON.h" // ADD THIS LINE
|
||||
#include "Utility/AssetExporterToJSON.h" // 이 줄을 추가하세요
|
||||
#include "ToolMenus.h"
|
||||
```
|
||||
|
||||
### Change 2: Register Menu Extensions in StartupModule
|
||||
### 변경 2: StartupModule에서 메뉴 확장 등록
|
||||
|
||||
**Location**: Inside `StartupModule()` method (after existing initialization)
|
||||
**위치**: `StartupModule()` 메서드 내부 (기존 초기화 다음)
|
||||
|
||||
**Add these lines**:
|
||||
**이 줄들을 추가**:
|
||||
```cpp
|
||||
// Register editor menu extensions
|
||||
UToolMenus::RegisterStartupCallback(FSimpleMulticastDelegate::FDelegate::CreateRaw(this, &FWorldStalkerEditorModule::RegisterMenuExtensions));
|
||||
```
|
||||
|
||||
**Complete StartupModule Method**:
|
||||
**완전한 StartupModule 메서드**:
|
||||
```cpp
|
||||
void FWorldStalkerEditorModule::StartupModule()
|
||||
{
|
||||
DataTableListener = MakeShared<FDataTableNoticeListener>();
|
||||
ObjectSaveEventListener = MakeShared<FObjectSaveEventListener>();
|
||||
|
||||
// ADD THESE TWO LINES:
|
||||
// 이 두 줄을 추가하세요:
|
||||
// Register editor menu extensions
|
||||
UToolMenus::RegisterStartupCallback(FSimpleMulticastDelegate::FDelegate::CreateRaw(this, &FWorldStalkerEditorModule::RegisterMenuExtensions));
|
||||
}
|
||||
```
|
||||
|
||||
### Change 3: Cleanup in ShutdownModule
|
||||
### 변경 3: ShutdownModule에서 정리
|
||||
|
||||
**Location**: Inside `ShutdownModule()` method (after existing cleanup)
|
||||
**위치**: `ShutdownModule()` 메서드 내부 (기존 정리 코드 다음)
|
||||
|
||||
**Add these lines**:
|
||||
**이 줄들을 추가**:
|
||||
```cpp
|
||||
// Unregister all tool menus
|
||||
UToolMenus::UnRegisterStartupCallback(this);
|
||||
UToolMenus::UnregisterOwner(this);
|
||||
```
|
||||
|
||||
**Complete ShutdownModule Method**:
|
||||
**완전한 ShutdownModule 메서드**:
|
||||
```cpp
|
||||
void FWorldStalkerEditorModule::ShutdownModule()
|
||||
{
|
||||
DataTableListener.Reset();
|
||||
ObjectSaveEventListener.Reset();
|
||||
|
||||
// ADD THESE TWO LINES:
|
||||
// 이 두 줄을 추가하세요:
|
||||
// Unregister all tool menus
|
||||
UToolMenus::UnRegisterStartupCallback(this);
|
||||
UToolMenus::UnregisterOwner(this);
|
||||
}
|
||||
```
|
||||
|
||||
### Change 4: Add New Method Implementations
|
||||
### 변경 4: 새 메서드 구현 추가
|
||||
|
||||
**Location**: After `ShutdownModule()` method (before `#undef LOCTEXT_NAMESPACE`)
|
||||
**위치**: `ShutdownModule()` 메서드 다음 (`#undef LOCTEXT_NAMESPACE` 전)
|
||||
|
||||
**Add these two complete methods**:
|
||||
**이 두 메서드 전체를 추가**:
|
||||
|
||||
```cpp
|
||||
void FWorldStalkerEditorModule::RegisterMenuExtensions()
|
||||
@ -148,9 +148,9 @@ void FWorldStalkerEditorModule::AddToolbarMenuEntry(FMenuBuilder& MenuBuilder)
|
||||
|
||||
---
|
||||
|
||||
## Build Configuration
|
||||
## 빌드 설정
|
||||
|
||||
Ensure `WorldStalkerEditor.Build.cs` includes these dependencies:
|
||||
`WorldStalkerEditor.Build.cs`에 다음 의존성이 포함되어 있는지 확인하세요:
|
||||
|
||||
```csharp
|
||||
PublicDependencyModuleNames.AddRange(new string[] {
|
||||
@ -169,63 +169,63 @@ PrivateDependencyModuleNames.AddRange(new string[] {
|
||||
});
|
||||
```
|
||||
|
||||
**Note**: Most of these dependencies likely already exist in your module. Only add the ones that are missing.
|
||||
**참고**: 이러한 의존성의 대부분은 이미 모듈에 존재할 가능성이 높습니다. 누락된 것만 추가하세요.
|
||||
|
||||
---
|
||||
|
||||
## Summary of Changes
|
||||
## 변경사항 요약
|
||||
|
||||
### WorldStalkerEditor.h
|
||||
- **Lines Added**: 2 method declarations
|
||||
- **Purpose**: Declare menu registration methods
|
||||
- **추가된 줄**: 메서드 선언 2개
|
||||
- **목적**: 메뉴 등록 메서드 선언
|
||||
|
||||
### WorldStalkerEditor.cpp
|
||||
- **Lines Added**:
|
||||
- 1 include directive
|
||||
- 2 lines in StartupModule()
|
||||
- 2 lines in ShutdownModule()
|
||||
- 2 complete method implementations (~24 lines)
|
||||
- **Total**: ~29 lines added
|
||||
- **Purpose**: Implement Tools menu integration
|
||||
- **추가된 줄**:
|
||||
- include 지시문 1줄
|
||||
- StartupModule()에 2줄
|
||||
- ShutdownModule()에 2줄
|
||||
- 메서드 구현 2개 전체 (~24줄)
|
||||
- **총**: ~29줄 추가
|
||||
- **목적**: Tools 메뉴 통합 구현
|
||||
|
||||
---
|
||||
|
||||
## Testing After Merge
|
||||
## 병합 후 테스트
|
||||
|
||||
1. Rebuild the WorldStalkerEditor module
|
||||
2. Launch Unreal Editor
|
||||
3. Navigate to `Tools → WorldStalker → Export Assets to JSON`
|
||||
4. Configure settings in `Edit → Project Settings → Plugins → Asset Export to JSON`
|
||||
5. Run export and verify JSON files are created in `Content/Exports/`
|
||||
1. WorldStalkerEditor 모듈 리빌드
|
||||
2. 언리얼 에디터 실행
|
||||
3. `툴 → WorldStalker → Export Assets to JSON` 메뉴로 이동
|
||||
4. `편집 → 프로젝트 설정 → 플러그인 → Asset Export to JSON`에서 설정 구성
|
||||
5. 익스포트 실행 후 `Content/Exports/`에 JSON 파일이 생성되었는지 확인
|
||||
|
||||
---
|
||||
|
||||
## Rollback Instructions
|
||||
## 롤백 방법
|
||||
|
||||
If you need to remove this feature:
|
||||
이 기능을 제거해야 하는 경우:
|
||||
|
||||
1. Delete the four new files:
|
||||
1. 새로 추가된 4개 파일 삭제:
|
||||
- `AssetExportSettings.h`
|
||||
- `AssetExportSettings.cpp`
|
||||
- `AssetExporterToJSON.h`
|
||||
- `AssetExporterToJSON.cpp`
|
||||
|
||||
2. Remove changes from `WorldStalkerEditor.h`:
|
||||
- Delete the two method declarations
|
||||
2. `WorldStalkerEditor.h`에서 변경사항 제거:
|
||||
- 두 개의 메서드 선언 삭제
|
||||
|
||||
3. Remove changes from `WorldStalkerEditor.cpp`:
|
||||
- Remove the `#include "Utility/AssetExporterToJSON.h"` line
|
||||
- Remove UToolMenus registration from StartupModule()
|
||||
- Remove UToolMenus cleanup from ShutdownModule()
|
||||
- Delete the two method implementations
|
||||
3. `WorldStalkerEditor.cpp`에서 변경사항 제거:
|
||||
- `#include "Utility/AssetExporterToJSON.h"` 줄 제거
|
||||
- StartupModule()에서 UToolMenus 등록 제거
|
||||
- ShutdownModule()에서 UToolMenus 정리 제거
|
||||
- 두 개의 메서드 구현 삭제
|
||||
|
||||
4. Rebuild the module
|
||||
4. 모듈 리빌드
|
||||
|
||||
---
|
||||
|
||||
## Contact
|
||||
## 연락처
|
||||
|
||||
For questions about merging these changes:
|
||||
- Author: jinilkim@actionsquare.com
|
||||
- Project: WorldStalker (DungeonStalkers)
|
||||
- Module: WorldStalkerEditor
|
||||
변경사항 병합에 대한 질문:
|
||||
- 작성자: jinilkim@oneunivrs.com
|
||||
- 프로젝트: WorldStalker (DungeonStalkers)
|
||||
- 모듈: WorldStalkerEditor
|
||||
|
||||
298
README.md
298
README.md
@ -1,64 +1,64 @@
|
||||
# Asset Export to JSON - Unreal Engine Editor Extension
|
||||
# Asset Export to JSON - 언리얼 엔진 에디터 확장 기능
|
||||
|
||||
## Overview
|
||||
## 개요
|
||||
|
||||
This editor extension provides a comprehensive asset export system that converts Unreal Engine assets to JSON format for LLM-based combat balance analysis. The feature extracts detailed data from various asset types to create text-based documentation that can be analyzed by AI systems.
|
||||
본 에디터 확장 기능은 언리얼 엔진 에셋을 JSON 형식으로 변환하여 LLM 기반 전투 밸런스 분석을 수행할 수 있는 포괄적인 에셋 익스포트 시스템을 제공합니다. 다양한 에셋 타입에서 상세한 데이터를 추출하여 AI 시스템이 분석할 수 있는 텍스트 기반 문서를 생성합니다.
|
||||
|
||||
**Purpose**: Enable comprehensive combat balance analysis by providing structured, text-based representations of game assets suitable for Large Language Model (LLM) processing.
|
||||
**목적**: 대규모 언어 모델(LLM) 처리에 적합한 구조화된 텍스트 기반 게임 에셋 표현을 제공하여 포괄적인 전투 밸런스 분석을 가능하게 합니다.
|
||||
|
||||
**Supported Asset Types**:
|
||||
- **DataTable** - Complete row and column data
|
||||
- **Blueprint** - Variables, functions, components, event graphs with node connections
|
||||
- **AnimMontage** - Sections, notifies, custom properties, slot animations
|
||||
- **CurveTable** - Key-value curve data (RichCurves and SimpleCurves)
|
||||
**지원 에셋 타입**:
|
||||
- **DataTable** - 완전한 행/열 데이터
|
||||
- **Blueprint** - 변수, 함수, 컴포넌트, 노드 연결을 포함한 이벤트 그래프
|
||||
- **AnimMontage** - 섹션, 노티파이, 커스텀 프로퍼티, 슬롯 애니메이션
|
||||
- **CurveTable** - 키-값 커브 데이터 (RichCurves 및 SimpleCurves)
|
||||
|
||||
## Features
|
||||
## 주요 기능
|
||||
|
||||
### Configuration-Based Export
|
||||
- **Project Settings Integration**: Configure export paths in `Edit → Project Settings → Plugins → Asset Export to JSON`
|
||||
- **Persistent Configuration**: Settings saved to `Config/DefaultEditor.ini` for team sharing via SVN/Git
|
||||
- **Multi-Folder Support**: Export from multiple folder paths with single click
|
||||
- **Asset Type Filtering**: Enable/disable specific asset types via settings
|
||||
### 설정 기반 익스포트
|
||||
- **프로젝트 설정 통합**: `편집 → 프로젝트 설정 → 플러그인 → Asset Export to JSON`에서 익스포트 경로 설정
|
||||
- **영구 설정**: 설정이 `Config/DefaultEditor.ini`에 저장되어 SVN/Git을 통한 팀 공유 가능
|
||||
- **다중 폴더 지원**: 한 번의 클릭으로 여러 폴더 경로에서 익스포트
|
||||
- **에셋 타입 필터링**: 설정을 통해 특정 에셋 타입 활성화/비활성화
|
||||
|
||||
### Comprehensive Data Extraction
|
||||
### 포괄적인 데이터 추출
|
||||
|
||||
#### Blueprint Export
|
||||
- Variables with types and default values
|
||||
- Functions with inputs/outputs
|
||||
- Component hierarchy
|
||||
- **Event Graphs**: Complete node graph with:
|
||||
- Node types, titles, positions, comments
|
||||
- Pin types, directions, default values
|
||||
- Connection graph between pins
|
||||
- Node-specific properties
|
||||
#### Blueprint 익스포트
|
||||
- 타입과 기본값을 포함한 변수
|
||||
- 입력/출력을 포함한 함수
|
||||
- 컴포넌트 계층 구조
|
||||
- **이벤트 그래프**: 다음을 포함한 완전한 노드 그래프
|
||||
- 노드 타입, 제목, 위치, 코멘트
|
||||
- 핀 타입, 방향, 기본값
|
||||
- 핀 간 연결 그래프
|
||||
- 노드별 프로퍼티
|
||||
|
||||
#### AnimMontage Export
|
||||
- Sections with start/end times
|
||||
- Slot animation tracks with segments
|
||||
- **Notify Events**: Complete notify data including:
|
||||
- Notify type and trigger times
|
||||
- Custom properties from notify classes
|
||||
- Blend in/out settings
|
||||
- Track indices and sync markers
|
||||
#### AnimMontage 익스포트
|
||||
- 시작/종료 시간을 포함한 섹션
|
||||
- 세그먼트를 포함한 슬롯 애니메이션 트랙
|
||||
- **노티파이 이벤트**: 다음을 포함한 완전한 노티파이 데이터
|
||||
- 노티파이 타입 및 트리거 시간
|
||||
- 노티파이 클래스의 커스텀 프로퍼티
|
||||
- 블렌드 인/아웃 설정
|
||||
- 트랙 인덱스 및 싱크 마커
|
||||
|
||||
#### CurveTable Export
|
||||
- Support for both RichCurves and SimpleCurves
|
||||
- Key data with time, value, tangent information
|
||||
- Curve interpolation modes
|
||||
#### CurveTable 익스포트
|
||||
- RichCurves와 SimpleCurves 모두 지원
|
||||
- 시간, 값, 탄젠트 정보를 포함한 키 데이터
|
||||
- 커브 보간 모드
|
||||
|
||||
### Output Management
|
||||
- **Timestamped Exports**: Optional timestamped subfolders for export history
|
||||
- **Type-Separated Files**: Separate JSON files per asset type (DataTable.json, Blueprint.json, etc.)
|
||||
- **Pretty-Printed JSON**: Human-readable formatting with indentation
|
||||
- **Duplicate Detection**: Prevents duplicate exports when folders overlap
|
||||
### 출력 관리
|
||||
- **타임스탬프 익스포트**: 익스포트 히스토리 보관을 위한 선택적 타임스탬프 하위 폴더
|
||||
- **타입별 파일 분리**: 에셋 타입별 개별 JSON 파일 (DataTable.json, Blueprint.json 등)
|
||||
- **보기 좋은 JSON 형식**: 들여쓰기가 적용된 사람이 읽기 쉬운 형식
|
||||
- **중복 검출**: 폴더가 겹칠 때 중복 익스포트 방지
|
||||
|
||||
## Installation
|
||||
## 설치 방법
|
||||
|
||||
### 1. File Structure
|
||||
### 1. 파일 구조
|
||||
|
||||
Copy the following files to your project:
|
||||
다음 파일들을 프로젝트에 복사하세요:
|
||||
|
||||
**New Files** (copy to `Source/WorldStalkerEditor/Utility/`):
|
||||
**새 파일** (`Source/WorldStalkerEditor/Utility/`에 복사):
|
||||
```
|
||||
AssetExportSettings.h
|
||||
AssetExportSettings.cpp
|
||||
@ -66,13 +66,13 @@ AssetExporterToJSON.h
|
||||
AssetExporterToJSON.cpp
|
||||
```
|
||||
|
||||
**Modified Files** (merge changes manually):
|
||||
- `WorldStalkerEditor.h` - See MERGE_INSTRUCTIONS.md
|
||||
- `WorldStalkerEditor.cpp` - See MERGE_INSTRUCTIONS.md
|
||||
**수정된 파일** (수동으로 변경사항 병합):
|
||||
- `WorldStalkerEditor.h` - MERGE_INSTRUCTIONS.md 참조
|
||||
- `WorldStalkerEditor.cpp` - MERGE_INSTRUCTIONS.md 참조
|
||||
|
||||
### 2. Build Configuration
|
||||
### 2. 빌드 설정
|
||||
|
||||
Add to your `WorldStalkerEditor.Build.cs`:
|
||||
`WorldStalkerEditor.Build.cs`에 다음을 추가하세요:
|
||||
|
||||
```csharp
|
||||
PublicDependencyModuleNames.AddRange(new string[] {
|
||||
@ -91,35 +91,35 @@ PrivateDependencyModuleNames.AddRange(new string[] {
|
||||
});
|
||||
```
|
||||
|
||||
### 3. Rebuild Project
|
||||
### 3. 프로젝트 리빌드
|
||||
|
||||
```batch
|
||||
# Generate Visual Studio project files
|
||||
# Visual Studio 프로젝트 파일 생성
|
||||
GenerateVSProjectFile.bat
|
||||
|
||||
# Build the editor module
|
||||
# Or rebuild from Visual Studio
|
||||
# 에디터 모듈 빌드
|
||||
# 또는 Visual Studio에서 리빌드
|
||||
```
|
||||
|
||||
## Configuration
|
||||
## 설정 방법
|
||||
|
||||
### Step 1: Open Project Settings
|
||||
### 1단계: 프로젝트 설정 열기
|
||||
|
||||
Navigate to: `Edit → Project Settings → Plugins → Asset Export to JSON`
|
||||
다음으로 이동: `편집 → 프로젝트 설정 → 플러그인 → Asset Export to JSON`
|
||||
|
||||
### Step 2: Configure Export Paths
|
||||
### 2단계: 익스포트 경로 설정
|
||||
|
||||
**Export Folder Paths** (Array):
|
||||
- Add folder paths relative to `/Game/` content directory
|
||||
- Example paths:
|
||||
**Export Folder Paths** (배열):
|
||||
- `/Game/` 콘텐츠 디렉토리 기준 상대 경로로 폴더 경로 추가
|
||||
- 예시 경로:
|
||||
- `Blueprints/Enemy`
|
||||
- `Blueprints/Characters`
|
||||
- `Blueprints/Abilities`
|
||||
- `DataTables`
|
||||
- Use the `+` button to add new paths
|
||||
- Use the `-` button to remove paths
|
||||
- `+` 버튼으로 새 경로 추가
|
||||
- `-` 버튼으로 경로 제거
|
||||
|
||||
**Default Paths** (automatically configured):
|
||||
**기본 경로** (자동 설정됨):
|
||||
```
|
||||
Blueprints/Enemy
|
||||
Blueprints/Characters
|
||||
@ -127,37 +127,37 @@ Blueprints/Abilities
|
||||
DataTables
|
||||
```
|
||||
|
||||
### Step 3: Configure Output Settings
|
||||
### 3단계: 출력 설정 구성
|
||||
|
||||
**Output Directory**:
|
||||
- Default: `Exports` (relative to Content folder)
|
||||
- Set custom path if desired
|
||||
**Output Directory** (출력 디렉토리):
|
||||
- 기본값: `Exports` (Content 폴더 기준 상대 경로)
|
||||
- 원하는 경우 커스텀 경로 설정
|
||||
|
||||
**Create Timestamped Folder**:
|
||||
- Enabled: Creates subfolder like `Export_2025_01_15_143022`
|
||||
- Disabled: Overwrites files in output directory
|
||||
**Create Timestamped Folder** (타임스탬프 폴더 생성):
|
||||
- 활성화: `Export_2025_01_15_143022`와 같은 하위 폴더 생성
|
||||
- 비활성화: 출력 디렉토리의 파일을 덮어씀
|
||||
|
||||
### Step 4: Select Asset Types
|
||||
### 4단계: 에셋 타입 선택
|
||||
|
||||
Enable or disable export for specific asset types:
|
||||
- ☑ Export DataTables
|
||||
- ☑ Export Blueprints
|
||||
- ☑ Export AnimMontages
|
||||
- ☑ Export CurveTables
|
||||
특정 에셋 타입에 대한 익스포트 활성화 또는 비활성화:
|
||||
- ☑ Export DataTables (데이터테이블 익스포트)
|
||||
- ☑ Export Blueprints (블루프린트 익스포트)
|
||||
- ☑ Export AnimMontages (애님 몽타주 익스포트)
|
||||
- ☑ Export CurveTables (커브테이블 익스포트)
|
||||
|
||||
## Usage
|
||||
## 사용 방법
|
||||
|
||||
### Quick Export
|
||||
### 빠른 익스포트
|
||||
|
||||
1. Open Unreal Editor
|
||||
2. Navigate to: `Tools → WorldStalker → Export Assets to JSON`
|
||||
3. Wait for export to complete (notification dialog will appear)
|
||||
1. 언리얼 에디터 열기
|
||||
2. 다음으로 이동: `툴 → WorldStalker → Export Assets to JSON`
|
||||
3. 익스포트 완료 대기 (알림 대화상자가 표시됨)
|
||||
|
||||
### Export Output
|
||||
### 익스포트 출력
|
||||
|
||||
Files are saved to: `Content/Exports/` (or configured output directory)
|
||||
파일이 저장되는 위치: `Content/Exports/` (또는 설정된 출력 디렉토리)
|
||||
|
||||
**Output Structure** (with timestamped folder):
|
||||
**출력 구조** (타임스탬프 폴더 사용 시):
|
||||
```
|
||||
Content/
|
||||
└── Exports/
|
||||
@ -168,7 +168,7 @@ Content/
|
||||
└── CurveTable.json
|
||||
```
|
||||
|
||||
### Output Format Examples
|
||||
### 출력 형식 예시
|
||||
|
||||
#### DataTable.json
|
||||
```json
|
||||
@ -258,91 +258,91 @@ Content/
|
||||
]
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
## 문제 해결
|
||||
|
||||
### No Output Files Generated
|
||||
### 출력 파일이 생성되지 않음
|
||||
|
||||
**Problem**: Export completes but no JSON files are created
|
||||
**Solution**: Check that export paths contain assets of the enabled types
|
||||
**문제**: 익스포트가 완료되었지만 JSON 파일이 생성되지 않음
|
||||
**해결**: 익스포트 경로에 활성화된 타입의 에셋이 포함되어 있는지 확인
|
||||
|
||||
### Duplicate Assets in Output
|
||||
### 출력에 중복 에셋
|
||||
|
||||
**Problem**: Same asset appears multiple times in JSON
|
||||
**Solution**: This is now prevented by duplicate detection - check for overlapping folder paths in settings
|
||||
**문제**: 동일한 에셋이 JSON에 여러 번 나타남
|
||||
**해결**: 이제 중복 검출로 방지됨 - 설정에서 겹치는 폴더 경로 확인
|
||||
|
||||
### Build Errors After Integration
|
||||
### 통합 후 빌드 오류
|
||||
|
||||
**Problem**: Compilation errors about missing headers
|
||||
**Solution**: Ensure all dependencies are added to `.Build.cs` file (see Installation section)
|
||||
**문제**: 누락된 헤더에 대한 컴파일 오류
|
||||
**해결**: 모든 의존성이 `.Build.cs` 파일에 추가되었는지 확인 (설치 섹션 참조)
|
||||
|
||||
### Export Hangs on Large Projects
|
||||
### 대형 프로젝트에서 익스포트 중단
|
||||
|
||||
**Problem**: Export takes very long time
|
||||
**Solution**: Reduce number of export paths or disable asset types not needed
|
||||
**문제**: 익스포트가 매우 오래 걸림
|
||||
**해결**: 익스포트 경로 수를 줄이거나 필요하지 않은 에셋 타입 비활성화
|
||||
|
||||
### Settings Not Persisting
|
||||
### 설정이 유지되지 않음
|
||||
|
||||
**Problem**: Configuration resets after editor restart
|
||||
**Solution**: Check that `Config/DefaultEditor.ini` is writable and not locked
|
||||
**문제**: 에디터 재시작 후 설정 초기화
|
||||
**해결**: `Config/DefaultEditor.ini`가 쓰기 가능하고 잠겨있지 않은지 확인
|
||||
|
||||
## Technical Details
|
||||
## 기술 세부사항
|
||||
|
||||
### Unreal Engine Version
|
||||
- **Tested on**: Unreal Engine 5.5.4 (Custom Build)
|
||||
- **API Compatibility**: Uses UE 5.5+ CurveTable API (GetRichCurveRowMap/GetSimpleCurveRowMap)
|
||||
### 언리얼 엔진 버전
|
||||
- **테스트 환경**: 언리얼 엔진 5.5.4 (커스텀 빌드)
|
||||
- **API 호환성**: UE 5.5+ CurveTable API 사용 (GetRichCurveRowMap/GetSimpleCurveRowMap)
|
||||
|
||||
### Module Dependencies
|
||||
- **AssetRegistry** - Asset discovery and filtering
|
||||
- **Json/JsonUtilities** - JSON serialization
|
||||
- **UnrealEd** - Editor integration
|
||||
- **ToolMenus** - Menu extension system
|
||||
- **DeveloperSettings** - Project settings integration
|
||||
### 모듈 의존성
|
||||
- **AssetRegistry** - 에셋 검색 및 필터링
|
||||
- **Json/JsonUtilities** - JSON 직렬화
|
||||
- **UnrealEd** - 에디터 통합
|
||||
- **ToolMenus** - 메뉴 확장 시스템
|
||||
- **DeveloperSettings** - 프로젝트 설정 통합
|
||||
|
||||
### Performance Characteristics
|
||||
- **Recursive Search**: Searches all subfolders of configured paths
|
||||
- **Memory Usage**: Loads assets one at a time to minimize memory footprint
|
||||
- **Export Speed**: ~10-50 assets per second depending on asset complexity
|
||||
### 성능 특성
|
||||
- **재귀 검색**: 설정된 경로의 모든 하위 폴더 검색
|
||||
- **메모리 사용량**: 메모리 사용량을 최소화하기 위해 에셋을 하나씩 로드
|
||||
- **익스포트 속도**: 에셋 복잡도에 따라 초당 약 10-50개 에셋
|
||||
|
||||
### Blueprint Event Graph Extraction
|
||||
The system traverses the Blueprint graph structure to extract:
|
||||
- All nodes from `UbergraphPages` (event graphs)
|
||||
- Node metadata (class, title, position, comments)
|
||||
- Pin information (type, direction, default values)
|
||||
- Connection graph between pins (LinkedTo relationships)
|
||||
- Property values from graph nodes
|
||||
### Blueprint 이벤트 그래프 추출
|
||||
시스템은 Blueprint 그래프 구조를 순회하여 다음을 추출합니다:
|
||||
- `UbergraphPages`의 모든 노드 (이벤트 그래프)
|
||||
- 노드 메타데이터 (클래스, 제목, 위치, 코멘트)
|
||||
- 핀 정보 (타입, 방향, 기본값)
|
||||
- 핀 간 연결 그래프 (LinkedTo 관계)
|
||||
- 그래프 노드의 프로퍼티 값
|
||||
|
||||
### AnimMontage Custom Property Extraction
|
||||
Custom properties are extracted from Notify objects by:
|
||||
1. Iterating through all `AnimNotifyEvent` entries
|
||||
2. Reflecting on Notify object class properties
|
||||
3. Filtering for editable properties (`CPF_Edit` flag)
|
||||
4. Serializing property values to JSON
|
||||
### AnimMontage 커스텀 프로퍼티 추출
|
||||
커스텀 프로퍼티는 다음 방식으로 Notify 객체에서 추출됩니다:
|
||||
1. 모든 `AnimNotifyEvent` 항목 반복
|
||||
2. Notify 객체 클래스 프로퍼티 리플렉션
|
||||
3. 편집 가능한 프로퍼티 필터링 (`CPF_Edit` 플래그)
|
||||
4. 프로퍼티 값을 JSON으로 직렬화
|
||||
|
||||
## Known Limitations
|
||||
## 알려진 제한사항
|
||||
|
||||
1. **Blueprint Visual Script Logic**: Exports node graph structure but not visual script bytecode execution flow
|
||||
2. **Binary Assets**: Cannot export binary data (meshes, textures, audio)
|
||||
3. **Complex Property Types**: Some complex UObject properties may export as object references only
|
||||
4. **Large Blueprints**: Very large blueprints with thousands of nodes may take significant time to export
|
||||
1. **Blueprint 비주얼 스크립트 로직**: 노드 그래프 구조는 익스포트하지만 비주얼 스크립트 바이트코드 실행 흐름은 익스포트하지 않음
|
||||
2. **바이너리 에셋**: 바이너리 데이터 (메시, 텍스처, 오디오)는 익스포트할 수 없음
|
||||
3. **복잡한 프로퍼티 타입**: 일부 복잡한 UObject 프로퍼티는 객체 참조로만 익스포트될 수 있음
|
||||
4. **대형 Blueprint**: 수천 개의 노드가 있는 매우 큰 블루프린트는 익스포트에 상당한 시간이 걸릴 수 있음
|
||||
|
||||
## Development History
|
||||
## 개발 히스토리
|
||||
|
||||
**Initial Release**: INI-based configuration system with comprehensive asset extraction
|
||||
**초기 릴리스**: 포괄적인 에셋 추출 기능을 갖춘 INI 기반 설정 시스템
|
||||
|
||||
**Key Design Decisions**:
|
||||
- INI-based configuration chosen over checkbox UI for repeated use convenience
|
||||
- UDeveloperSettings integration for team collaboration via version control
|
||||
- Duplicate detection prevents redundant exports from overlapping folder paths
|
||||
- Pretty-printed JSON for human readability and LLM processing
|
||||
**주요 설계 결정**:
|
||||
- 반복 사용의 편의성을 위해 체크박스 UI 대신 INI 기반 설정 선택
|
||||
- 버전 관리를 통한 팀 협업을 위한 UDeveloperSettings 통합
|
||||
- 겹치는 폴더 경로로부터 중복 익스포트 방지를 위한 중복 검출
|
||||
- 사람의 가독성과 LLM 처리를 위한 보기 좋은 JSON 형식
|
||||
|
||||
## Support
|
||||
## 지원
|
||||
|
||||
For issues, questions, or feature requests:
|
||||
1. Check this README and MERGE_INSTRUCTIONS.md
|
||||
2. Review Output Log in Unreal Editor for error messages
|
||||
3. Contact: jinilkim@actionsquare.com
|
||||
이슈, 질문 또는 기능 요청:
|
||||
1. 본 README 및 MERGE_INSTRUCTIONS.md 확인
|
||||
2. 언리얼 에디터의 출력 로그에서 오류 메시지 검토
|
||||
3. 연락처: jinilkim@oneunivrs.com
|
||||
|
||||
## License
|
||||
## 라이선스
|
||||
|
||||
Copyright Epic Games, Inc. All Rights Reserved.
|
||||
Part of the WorldStalker (DungeonStalkers) project.
|
||||
WorldStalker (DungeonStalkers) 프로젝트의 일부입니다.
|
||||
|
||||
Reference in New Issue
Block a user