diff --git a/Assets/Data/ScriptableObjects.meta b/Assets/Data/ScriptableObjects.meta
new file mode 100644
index 0000000..db7d00b
--- /dev/null
+++ b/Assets/Data/ScriptableObjects.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 09a09218bc5a7c643949d093eefa9e1d
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Data/ScriptableObjects/MonsterMaster.meta b/Assets/Data/ScriptableObjects/MonsterMaster.meta
new file mode 100644
index 0000000..0dd4c8d
--- /dev/null
+++ b/Assets/Data/ScriptableObjects/MonsterMaster.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 25ab0c46cf6af334daf6817ed418e178
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Data/ScriptableObjects/WaveMaster.meta b/Assets/Data/ScriptableObjects/WaveMaster.meta
new file mode 100644
index 0000000..8b9043c
--- /dev/null
+++ b/Assets/Data/ScriptableObjects/WaveMaster.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 47db706e7f90d914f8b05b88b626b406
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Data/Scripts/DataClasses/MonsterMasterData.cs b/Assets/Data/Scripts/DataClasses/MonsterMasterData.cs
new file mode 100644
index 0000000..52733dd
--- /dev/null
+++ b/Assets/Data/Scripts/DataClasses/MonsterMasterData.cs
@@ -0,0 +1,30 @@
+// 이 파일은 자동 생성되었습니다. 직접 수정하지 마세요!
+// 생성 스크립트: DataTools/generate_csharp_classes.py
+
+using UnityEngine;
+
+namespace DigAndDefend.Data
+{
+ [CreateAssetMenu(fileName = "MonsterMasterData", menuName = "DigAndDefend/MonsterMaster Data")]
+ public class MonsterMasterData : ScriptableObject
+ {
+ [Header("기본 정보")]
+ /// 몬스터 고유 ID
+ public int monsterId;
+ /// 메모
+ public string memo;
+ /// 이동속도
+ public float moveSpeed;
+ /// 체력
+ public int maxHp;
+ /// 사정거리
+ public int atkRange;
+ /// 데미지
+ public int atkDamage;
+ /// 공격 주기
+ public float atkIntervalSec;
+ /// 프리팹/리소스 경로
+ public string prefabPath;
+
+ }
+}
\ No newline at end of file
diff --git a/Assets/Data/Scripts/DataClasses/MonsterMasterData.cs.meta b/Assets/Data/Scripts/DataClasses/MonsterMasterData.cs.meta
new file mode 100644
index 0000000..22a979d
--- /dev/null
+++ b/Assets/Data/Scripts/DataClasses/MonsterMasterData.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: eb34e2098ca7d654a81d495ad6e6f21b
\ No newline at end of file
diff --git a/Assets/Data/Scripts/DataClasses/WaveMasterData.cs b/Assets/Data/Scripts/DataClasses/WaveMasterData.cs
new file mode 100644
index 0000000..0b84609
--- /dev/null
+++ b/Assets/Data/Scripts/DataClasses/WaveMasterData.cs
@@ -0,0 +1,26 @@
+// 이 파일은 자동 생성되었습니다. 직접 수정하지 마세요!
+// 생성 스크립트: DataTools/generate_csharp_classes.py
+
+using UnityEngine;
+
+namespace DigAndDefend.Data
+{
+ [CreateAssetMenu(fileName = "WaveMasterData", menuName = "DigAndDefend/WaveMaster Data")]
+ public class WaveMasterData : ScriptableObject
+ {
+ [Header("기본 정보")]
+ /// 웨이브 고유 ID
+ public int waveId;
+ /// 사람이 읽는 고정 키 (예: WAVE_001)
+ public string waveKey;
+ /// 기획/개발 메모(비출력)
+ public string memo;
+ /// 웨이브 주기(초). 기본 90
+ public int durationSec;
+ /// 해당 웨이브에서 소환할 몬스터 ID 목록
+ public string monsterIdList;
+ /// 해당 웨이브에서 소환할 몬스터 ID 별 소환 개수
+ public string monsterCountList;
+
+ }
+}
\ No newline at end of file
diff --git a/Assets/Data/Scripts/DataClasses/WaveMasterData.cs.meta b/Assets/Data/Scripts/DataClasses/WaveMasterData.cs.meta
new file mode 100644
index 0000000..5bbbaeb
--- /dev/null
+++ b/Assets/Data/Scripts/DataClasses/WaveMasterData.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: b0f6af2548b6a6049b54c1d50e7a6c53
\ No newline at end of file
diff --git a/DataTools/sync_from_notion.py b/DataTools/sync_from_notion.py
index fbe2e2a..311ef83 100644
--- a/DataTools/sync_from_notion.py
+++ b/DataTools/sync_from_notion.py
@@ -13,7 +13,7 @@ NOTION_API_KEY = "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"
notion = Client(auth=NOTION_API_KEY) if NOTION_API_KEY else None
# ⭐ 부모 페이지 ID만 설정 (1회)
-SCHEMA_PARENT_PAGE_ID = "2f194d45b1a380948073ca3883f7347e"
+SCHEMA_PARENT_PAGE_ID = "2f494d45b1a3818fa9fceb4f9e17d905"
SCRIPT_DIR = Path(__file__).parent
GAMEDATA_DIR = SCRIPT_DIR.parent / "GameData"
diff --git a/GameData/.MonsterMaster_schema.json b/GameData/.MonsterMaster_schema.json
new file mode 100644
index 0000000..5d6e1af
--- /dev/null
+++ b/GameData/.MonsterMaster_schema.json
@@ -0,0 +1,50 @@
+[
+ {
+ "name": "monster_id",
+ "type": "int",
+ "condition": null,
+ "description": "몬스터 고유 ID"
+ },
+ {
+ "name": "memo",
+ "type": "string",
+ "condition": null,
+ "description": "메모"
+ },
+ {
+ "name": "move_speed",
+ "type": "float",
+ "condition": null,
+ "description": "이동속도"
+ },
+ {
+ "name": "max_hp",
+ "type": "int",
+ "condition": null,
+ "description": "체력"
+ },
+ {
+ "name": "atk_range",
+ "type": "int",
+ "condition": null,
+ "description": "사정거리"
+ },
+ {
+ "name": "atk_damage",
+ "type": "int",
+ "condition": null,
+ "description": "데미지"
+ },
+ {
+ "name": "atk_interval_sec",
+ "type": "float",
+ "condition": null,
+ "description": "공격 주기"
+ },
+ {
+ "name": "prefab_path",
+ "type": "string",
+ "condition": null,
+ "description": "프리팹/리소스 경로"
+ }
+]
\ No newline at end of file
diff --git a/GameData/.WaveMaster_schema.json b/GameData/.WaveMaster_schema.json
new file mode 100644
index 0000000..bb3441c
--- /dev/null
+++ b/GameData/.WaveMaster_schema.json
@@ -0,0 +1,38 @@
+[
+ {
+ "name": "wave_id",
+ "type": "int",
+ "condition": null,
+ "description": "웨이브 고유 ID"
+ },
+ {
+ "name": "wave_key",
+ "type": "string",
+ "condition": null,
+ "description": "사람이 읽는 고정 키 (예: WAVE_001)"
+ },
+ {
+ "name": "memo",
+ "type": "string",
+ "condition": null,
+ "description": "기획/개발 메모(비출력)"
+ },
+ {
+ "name": "duration_sec",
+ "type": "int",
+ "condition": null,
+ "description": "웨이브 주기(초). 기본 90"
+ },
+ {
+ "name": "monster_id_list",
+ "type": "string",
+ "condition": null,
+ "description": "해당 웨이브에서 소환할 몬스터 ID 목록"
+ },
+ {
+ "name": "monster_count_list",
+ "type": "string",
+ "condition": null,
+ "description": "해당 웨이브에서 소환할 몬스터 ID 별 소환 개수"
+ }
+]
\ No newline at end of file
diff --git a/GameData/MonsterMaster.csv b/GameData/MonsterMaster.csv
new file mode 100644
index 0000000..1c0c604
--- /dev/null
+++ b/GameData/MonsterMaster.csv
@@ -0,0 +1,6 @@
+monster_id,memo,move_speed,max_hp,atk_range,atk_damage,atk_interval_sec,prefab_path
+101,Grunt(기본),2.6,30,1,3,1.2,Assets/Prefabs/EnemyTest
+102,Fast(빠름/약함),3.4,18,1,2,1,Assets/Prefabs/MonsterTest
+103,Tank(느림/단단),2,70,1,4,1.5,Assets/Prefabs/Core
+104,Ranged(원거리/약함),2.4,22,5,2,1.4,Assets/Prefabs/Resource
+105,Elite(소수 정예),2.8,120,1,7,1.3,Assets/Prefabs/ResourcePickup
diff --git a/GameData/WaveMaster.csv b/GameData/WaveMaster.csv
new file mode 100644
index 0000000..36568bf
--- /dev/null
+++ b/GameData/WaveMaster.csv
@@ -0,0 +1,6 @@
+wave_id,wave_key,memo,duration_sec,monster_id_list,monster_count_list
+1,WAVE_001,,90,101,10
+2,WAVE_002,,90,102,20
+3,WAVE_003,,90,103,5
+4,WAVE_004,,90,104,3
+5,WAVE_005,,90,105,2