diff --git a/MERGE_INSTRUCTIONS.md b/MERGE_INSTRUCTIONS.md index 916a1a0..fdc2e8a 100644 --- a/MERGE_INSTRUCTIONS.md +++ b/MERGE_INSTRUCTIONS.md @@ -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(); ObjectSaveEventListener = MakeShared(); - // 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 diff --git a/README.md b/README.md index 4b15add..cbc7bb4 100644 --- a/README.md +++ b/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) 프로젝트의 일부입니다.