Abstract
๋ชจ๋ ๊ด๋ฆฌ๋ "์ ์ญ ์์คํ
์ค๋ฌด ๊ฐ๋ฅผ ์ด๋ค ์์๋ก ๋ง๋ค๊ณ , ๋๋ฆฌ๊ณ , ๋๋๊ฐ"์ ๋ํ ๋ต์
๋๋ค. ํ๋ ์์ํฌ๋ ์ด๊ฒ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ํ๋์ ์ฐ์ ์์ ์ซ์ ํ๋๋ก ํ๋๋ค. ๊ฒ์ ์ฝ๋๊ฐ ์ง์ ๋ง์ง ์ผ์ ์์ง๋ง, ๋ชจ๋์ด ๊ฐฑ์ ๋๋ ์์๋ฅผ ์์์ผ "์ด๋ฒคํธ๊ฐ ์ ๋ค์ ํ๋ ์์ ์ค๋๊ฐ" ๊ฐ์ ๋์์ด ์ดํด๋ฉ๋๋ค.
์ค์ ๊ฐฑ์ ์์ (์ด ์๋์
์ ์ฝ๋ ๊ธฐ์ค)
๋งค ํ๋ ์ GameFrameworkEntry.Update() ๋ ์ฐ์ ์์๊ฐ ๋์ ๊ฒ๋ถํฐ ์ฐจ๋ก๋ก ๋ถ๋ฆ
๋๋ค.
์์ | ๋ชจ๋ | Priority | ์ด ์์์ธ ์ด์ |
1 | Event | 7 | ์ง๋ ํ๋ ์์ ์์ธ ์ด๋ฒคํธ๋ฅผ ๊ฐ์ฅ ๋จผ์ ๋ฐฐ๋ฌํ๋ค. ๋ค์ ๋ชจ๋๋ค์ด ์ต์ ์ํ๋ก ์์ง์ธ๋ค |
2 | ObjectPool | 6 | ๋ง๋ฃ๋ ์ธ์คํด์ค๋ฅผ ์ ๋ฆฌํด ๋๋ค |
3 | Download | 5 | |
4 | FileSystem | 4 | |
5 | Scene | 2 | |
6 | Fsm | 1 | ์ํ ์ ์ด๋ฅผ ์ํฐํฐ ๊ฐฑ์ ๋ณด๋ค ๋จผ์ ์ฒ๋ฆฌํ๋ค |
7 | Entity, UI, Sound, DataTable, Config, Localization, Setting, DataNode, Network, WebRequest | 0 | ๊ฐ์ ์ฐ์ ์์๋ผ๋ฆฌ๋ ๋จผ์ ๋ง๋ค์ด์ง ์์ |
8 | Debugger | -1 | ๋ค๋ฅธ ๋ชจ๋์ด ๋ค ๋ ๋ค์ ์ํ๋ฅผ ๋ณธ๋ค |
9 | Procedure | -2 | ๊ฒ์ ํ๋ฆ ํ๋จ์ ๋งจ ๋ง์ง๋ง โ ์ด ํ๋ ์์ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ๋ ๋ณธ ๋ค ๊ฒฐ์ ํ๋ค |
์ข
๋ฃ๋ ์ ํํ ์ด ์ญ์์
๋๋ค.
์ด ์์๊ฐ ๊ฒ์ ์ฝ๋์ ๋ฏธ์น๋ ์ํฅ
โข
Fire ํ ์ด๋ฒคํธ๋ ๋ค์ ํ๋ ์ ๋งจ ์์์ ๋ฐฐ๋ฌ๋ฉ๋๋ค. ์ํฐํฐ์ OnUpdate ์์์ Fire ํ๋ฉด, Event ๋ชจ๋์ ์ด๋ฒ ํ๋ ์์ ์ด๋ฏธ ๋์์ผ๋ฏ๋ก ๋ค์ ํ๋ ์ 1๋ฒ ์์์์ ์ฒ๋ฆฌ๋ฉ๋๋ค. ์ฆ์ ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ฉด FireNow ๋ฅผ ์๋๋ค.
โข
FSM ์ํ์ OnUpdate ๊ฐ ์ํฐํฐ์ OnUpdate ๋ณด๋ค ๋จผ์ ๋ถ๋ฆฝ๋๋ค. ToyboxNightmare ์ ์ ์ FSM ์ํ(EnemyChaseState ๋ฑ)์์ ์ด๋์ ๊ฒฐ์ ํ๊ณ ์ํฐํฐ ์ชฝ์์ ๋๋จธ์ง๋ฅผ ์ฒ๋ฆฌํ๋๋ฐ, ๊ฐ์ ํ๋ ์ ์์์ "์ํ ํ๋จ โ ์ํฐํฐ ๊ฐฑ์ " ์์๊ฐ ๋ณด์ฅ๋๋ ๊ฒ์ Priority 1 > 0 ์ด๊ธฐ ๋๋ฌธ์
๋๋ค.
โข
Procedure ๋ ๋ง์ง๋ง์ ๋๋๋ค. ProcedureMain.OnUpdate ์์ "ํ๋ ์ด์ด๊ฐ ์ฃฝ์๋"๋ฅผ ํ์ธํ ๋๋ ์ด๋ฒ ํ๋ ์์ ์ ํฌ ๊ฒฐ๊ณผ๊ฐ ๋ชจ๋ ๋ฐ์๋ ๋ค์
๋๋ค.
๋ชจ๋์ ์ธ์ ๋ง๋ค์ด์ง๋
GetModule<IEntityManager>() ๊ฐ ์ฒ์ ๋ถ๋ฆฌ๋ ์๊ฐ ๋ฆฌํ๋ ์
์ผ๋ก GameFramework.Entity.EntityManager ๋ฅผ ์ฐพ์ ์์ฑํฉ๋๋ค. ์ค์ ๋ก๋ Unity ์ชฝ ๊ฐ ~Component ์ Awake ๊ฐ ์๊ธฐ ๋ชจ๋์ ์์ฒญํ๋ฏ๋ก, GameFramework.prefab ์ ๋ถ์ด ์๋ ์ปดํฌ๋ํธ์ ๋ชจ๋๋ง ๋ง๋ค์ด์ง๋๋ค. ํ๋ฆฌํน์์ Network ์ค๋ธ์ ํธ๋ฅผ ์ง์ฐ๋ฉด ๋คํธ์ํฌ ๋ชจ๋์ ์์ฑ์กฐ์ฐจ ๋์ง ์์ต๋๋ค.
๋ณธ๋ฌธ์ ์ฝ์ ๋ ์ฃผ์ํ ์
โข
๊ฒ์ ์ฝ๋๋ ์ ๋ชจ๋์ ๋ง๋ค ์ ์์ต๋๋ค. GameFrameworkModule ์ internal abstract ์ด๊ณ , GetModule<T>() ๋ GameFramework. ๋ก ์์ํ๋ ๋ค์์คํ์ด์ค์ ์ธํฐํ์ด์ค๋ง ๋ฐ์ต๋๋ค. ํ์ฅ์ Unity ์ชฝ GameFrameworkComponent ๋ก ํฉ๋๋ค(
GameEntry์ ์ปดํฌ๋ํธ ๊ด๋ฆฌ).
โข
๊ฒ์ ์ฝ๋์์ GameFrameworkEntry.GetModule<T>() ๋ฅผ ์ง์ ๋ถ๋ฅผ ์ผ๋ ์์ต๋๋ค. GameEntry.GetComponent<EntityComponent>() ์ฒ๋ผ Unity ์ปดํฌ๋ํธ๋ฅผ ํตํฉ๋๋ค. ๋ณธ๋ฌธ์ "๋ฒ ์คํธ ํ๋ํฐ์ค"๋ ํ๋ ์์ํฌ ๋ด๋ถ ์ฝ๋๋ฅผ ์ธ ๋์ ์ด์ผ๊ธฐ์
๋๋ค.
โข
๋ณธ๋ฌธ ๋์ ๋ชจ๋ ์์ฝ ํ์๋ EventManager, ProcedureManager, SceneManager, FileSystemManager, DebuggerManager ๊ฐ ๋น ์ ธ ์์ต๋๋ค. ์ ์์ ํ๊ฐ ์ ์ฒด ๋ชฉ๋ก์
๋๋ค.
โข
ํ์ ResourceManager(์์ Priority 3)๋ ์ด ์๋์
์์ ๋ชจ๋๋ก ์์ฑ๋์ง ์์ต๋๋ค. Addressables ๊ตฌํ์ฒด๊ฐ ResourceComponent ์์์ ์ผ๋ฐ ๊ฐ์ฒด๋ก ๋ง๋ค์ด์ ธ ๋ค๋ฅธ ๋ชจ๋์ ์ฃผ์
๋ฉ๋๋ค.
๋ชจ๋ ๊ด๋ฆฌ (Module Management)
๊ด๋ จ ์์ค ํ์ผ (Relevant source files)
โข GameFramework/Base/GameFrameworkEntry.cs
๋ชฉ์ ๊ณผ ๋ฒ์ (Purpose and Scope)
์ด ๋ฌธ์๋ GameFramework์์ ๋ชจ๋ ์ฃผ์ ์๋ธ์์คํ
์ ์กฐ์งํยท์ด๊ธฐํยท์
๋ฐ์ดํธยท์ข
๋ฃํ๋ ๊ธฐ๋ฐ์ธ ๋ชจ๋ ๊ด๋ฆฌ ์์คํ
์ ์ค๋ช
ํฉ๋๋ค. ๋ชจ๋ ๊ด๋ฆฌ ์์คํ
์ ์์คํ
์๋ช
์ฃผ๊ธฐ๋ฅผ ์ผ๊ด๋๊ฒ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๊ณ , ํ๋ ์์ํฌ ๋ฅ๋ ฅ์ ์ํ ๋ช
ํํ ์ํคํ
์ฒ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
๋ชจ๋ ์์คํ
๊ณผ ํจ๊ป ๋์ํ๋ ๊ฐ์ฒด ์ฐธ์กฐ ํ๋ง์ ๋ํ ์ ๋ณด๋ Reference Pool์ ์ฐธ์กฐํ์ธ์.
๊ฐ์ (Overview)
๋ชจ๋ ๊ด๋ฆฌ ์์คํ
์ ๋ ๊ฐ์ง ํต์ฌ ๊ตฌ์ฑ์์ GameFrameworkEntry์ GameFrameworkModule์ ์ค์ฌ์ผ๋ก ํฉ๋๋ค. ์ด ์์คํ
์ ๋ชจ๋ ํ๋ ์์ํฌ ์๋ธ์์คํ
์ ์๋ ์์ฑ, ์ฐ์ ์์ ๊ธฐ๋ฐ ์
๋ฐ์ดํธ, ์ง์ ์๋ ์ข
๋ฃ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ฉด์, ์์คํ
๊ฐ์ ์ฝํ ๊ฒฐํฉ(loose coupling) ์ ์ ์งํฉ๋๋ค.
์ถ์ฒ(Sources):
GameFramework/Base/GameFrameworkEntry.cs 16โ132
๋ชจ๋ ์ํคํ ์ฒ (Module Architecture)
์ด ๋ชจ๋ ์์คํ
์ ๋จ์ํ์ง๋ง ํจ๊ณผ์ ์ธ ์ํคํ
์ฒ ํจํด์ ๊ตฌํํฉ๋๋ค:
โข
๋ชจ๋ ํ๋ ์์ํฌ ๊ธฐ๋ฅ์ ํนํ ๋ชจ๋์ ์บก์ํ๋ฉ๋๋ค.
โข
๊ฐ ๋ชจ๋์ ์ถ์ ๊ธฐ๋ณธ ํด๋์ค GameFrameworkModule์ ์์ํฉ๋๋ค.
โข
๋ชจ๋์ ์ ์ ํด๋์ค GameFrameworkEntry๋ฅผ ํตํด ์๋์ผ๋ก ์์ฑยท๊ด๋ฆฌ๋ฉ๋๋ค.
โข
๊ฒ์ ์ฝ๋๋ ์ธํฐํ์ด์ค๋ฅผ ํตํด ๋ชจ๋๊ณผ ์ํธ์์ฉํ์ฌ ์ฝํ ๊ฒฐํฉ์ ์ด์งํฉ๋๋ค.
์ถ์ฒ(Sources):
GameFramework/Base/GameFrameworkEntry.cs 16โ132
๋ชจ๋ ์กฐํ ์์คํ (Module Retrieval System)
๋ชจ๋ ์กฐํ ์์คํ
์ ๊ฒ์ ์ฝ๋๊ฐ GetModule<T>() ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ด๋ค ๋ชจ๋์ด๋ ์ ๊ทผํ ์ ์๊ฒ ํด์ค๋๋ค. ์์ฒญ๋ ๋ชจ๋์ด ์กด์ฌํ์ง ์์ผ๋ฉด ์๋์ผ๋ก ์์ฑ๋์ด, ๋ชจ๋์ ํ์ํ ๋๋ง ์ด๊ธฐํ๋ฉ๋๋ค.
๋ชจ๋ ์กฐํ์ ํต์ฌ ํน์ฑ:
โข
๋ชจ๋์ ์ธํฐํ์ด์ค(์: IResourceManager) ๋ก ์กฐํํด์ผ ํฉ๋๋ค.
โข
๊ตฌ์ฒด ๊ตฌํ ํด๋์ค๋ ํ๋ ์์ํฌ๊ฐ ์๋์ผ๋ก ๊ฒฐ์ ํฉ๋๋ค.
โข
๋ชจ๋ ์ธ์คํด์ค๋ ์ง์ฐ ์์ฑ(์ต์ด ์์ฒญ ์) ๋ฉ๋๋ค.
โข
๋ชจ๋์ ์ฝํ ๊ฒฐํฉ์ ์ํด ์ธํฐํ์ด์ค ํ์
์ผ๋ก ๋ฐํ๋ฉ๋๋ค.
์ถ์ฒ(Sources):
GameFramework/Base/GameFrameworkEntry.cs 55โ76, 84โ95
๋ชจ๋ ์์ฑ ๊ณผ์ (Module Creation Process)
๋ชจ๋์ด ์ฒ์ ์์ฒญ๋๋ฉด ํ๋ ์์ํฌ๋ ๋ค์์ ์ํํฉ๋๋ค:
1.
๋ฆฌํ๋ ์
์ผ๋ก ๋ชจ๋ ์ธ์คํด์ค๋ฅผ ์์ฑํฉ๋๋ค.
2.
๋ชจ๋์ ์ฐ์ ์์์ ๋ฐ๋ผ ๋ชจ๋ ๋ชฉ๋ก์์ ์ฝ์
์์น๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
3.
๋ชจ๋์ ์ ์ ํ ์์น์ ์ฝ์
ํฉ๋๋ค.
4.
์์ฑ๋ ๋ชจ๋์ ํธ์ถ์์๊ฒ ๋ฐํํฉ๋๋ค.
์ด๋ฅผ ํตํด ๋ชจ๋์ ์์ฒญ ์์ ์ ์์ฑ๋๊ณ , ์
๋ฐ์ดํธ๋ฅผ ์ํด ์ฌ๋ฐ๋ฅธ ์์๋ก ์ ๋ ฌ๋ฉ๋๋ค.
์ถ์ฒ(Sources):
GameFramework/Base/GameFrameworkEntry.cs 102โ131
๋ชจ๋ ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ (Module Lifecycle Management)
๋ชจ๋ ์ ๋ฐ์ดํธ ์์ (Module Update Sequence)
๋ชจ๋ ์์คํ
์ GameFrameworkEntry.Update() ๋ฅผ ํตํด ์ค์์ง์ค์ ์
๋ฐ์ดํธ ์ฒ๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด ๋ฉ์๋๋:
โข
๋ชจ๋ ๋ชจ๋์ ์ฐ์ ์์ ์์๋ก ์ํํ๊ณ ,
โข
๊ฐ ๋ชจ๋์ Update()๋ฅผ ํธ์ถํ๋ฉด์ ๊ฒฝ๊ณผ ์๊ฐ ๊ฐ์ ์ ๋ฌํ๋ฉฐ,
โข
๋ชจ๋์ด ํ์ํ ์ฃผ๊ธฐ์ ์์
์ ์ํํ ์ ์๊ฒ ํฉ๋๋ค.
์ฆ, ์ฐ์ ์์๊ฐ ๋์ ๋ชจ๋์ด ๋ฎ์ ๋ชจ๋๋ณด๋ค ๋จผ์ ํญ์ ์
๋ฐ์ดํธ๋ฉ๋๋ค.
์ถ์ฒ(Sources):
GameFramework/Base/GameFrameworkEntry.cs 25โ31
๋ชจ๋ ์ข ๋ฃ ์์ (Module Shutdown Sequence)
์ ํ๋ฆฌ์ผ์ด์
์ข
๋ฃ ์ ํ๋ ์์ํฌ๋ GameFrameworkEntry.Shutdown() ์ ํตํด ์ฒด๊ณ์ ์ธ ์ ๋ฆฌ๋ฅผ ๋ณด์ฅํฉ๋๋ค:
โข
๋ชจ๋ ๋ชจ๋์ ์ฐ์ ์์์ ์ญ์(๋ง์ง๋ง๋ถํฐ ์ฒ์) ์ผ๋ก ์ํํ๊ณ ,
โข
๊ฐ ๋ชจ๋์ Shutdown()์ ํธ์ถํฉ๋๋ค.
โข
๋ชจ๋ ์ข
๋ฃ๊ฐ ์๋ฃ๋๋ฉด ๋ชจ๋ ๋ชฉ๋ก์ ๋น์ฐ๊ณ ,
โข
(์: ๋ ํผ๋ฐ์ค ํ ์ ๋ฆฌ ๋ฑ) ์ถ๊ฐ ์ ๋ฆฌ ์์
์ ์ํํฉ๋๋ค.
์ด๋ก์จ ๋ฎ์ ์ฐ์ ์์ ๋ชจ๋์ด ๊ทธ์ ์์กดํ ์ ์๋ ๋์ ์ฐ์ ์์ ๋ชจ๋๋ณด๋ค ๋จผ์ ์ข
๋ฃ๋ฉ๋๋ค.
์ถ์ฒ(Sources):
GameFramework/Base/GameFrameworkEntry.cs 36โ47
๋ชจ๋ ์ฐ์ ์์ (Module Prioritization)
๋ชจ๋์ ์ฐ์ ์์๋ก ์ ๋ ฌ๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ณด๊ด๋๋ฉฐ, ์ฐ์ ์์๊ฐ ๋์ ๋ชจ๋์ด ๋ชฉ๋ก์ ์์ชฝ์ ์์นํฉ๋๋ค. ์ด ์ ๋ ฌ์ ๋ค์์ ์ํฅ์ ์ค๋๋ค:
โข
์
๋ฐ์ดํธ ์์: ๋์ ์ฐ์ ์์ ๋ชจ๋์ด ๋จผ์ ์
๋ฐ์ดํธ
โข
์ข
๋ฃ ์์: ๋ฎ์ ์ฐ์ ์์ ๋ชจ๋์ด ๋จผ์ ์ข
๋ฃ
์ ๋ชจ๋์ด ์์ฑ๋๋ฉด, ๊ทธ ๋ชจ๋์ Priority ์์ฑ์ ๋ฐ๋ผ ์ฌ๋ฐ๋ฅธ ์์น์ ์ฝ์
๋ฉ๋๋ค.
์ถ์ฒ(Sources):
GameFramework/Base/GameFrameworkEntry.cs 110โ128
๊ตฌํ ์ธ๋ถ์ฌํญ (Implementation Details)
๋ชจ๋ ๊ด๋ฆฌ ์์คํ
์ ๋ค์ ์๋ฃ๊ตฌ์กฐ์ ํจํด์ ์ฌ์ฉํฉ๋๋ค:
โข
GameFrameworkLinkedList: ๋ชจ๋ ์ธ์คํด์ค๋ฅผ ์ฐ์ ์์ ์์๋ก ์ ์ฅํ๊ธฐ ์ํ ํน์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
โข
๋ชจ๋ ์ธํฐํ์ด์ค ๋ค์ด๋ฐ ๊ท์น: ์ธํฐํ์ด์ค๋ "I[ModuleName]", ๊ตฌํ ํด๋์ค๋ "[ModuleName]"
โฆ
์: IResourceManager โ ResourceManager
โข
๋ฆฌํ๋ ์
๊ธฐ๋ฐ ์ธ์คํด์คํ: ์์ฒญ๋ ์ธํฐํ์ด์ค ํ์
์์ ๊ตฌํ ํด๋์ค ์ด๋ฆ์ ์ ๋ํด ์๋ ์์ฑ
์์:
// Interface name: IResourceManager
// Derived module name: ResourceManager
string moduleName = Utility.Text.Format("{0}.{1}", interfaceType.Namespace, interfaceType.Name.Substring(1));
Type moduleType = Type.GetType(moduleName);
C#
๋ณต์ฌ
์ถ์ฒ(Sources):
GameFramework/Base/GameFrameworkEntry.cs 18, 68โ75
๋ชจ๋ ์ฌ์ฉ ๋ฒ ์คํธ ํ๋ํฐ์ค (Best Practices for Module Usage)
โข
ํญ์ GameFrameworkEntry.GetModule<T>() ๋ฅผ ์ฌ์ฉํด ์ธํฐํ์ด์ค๋ก ๋ชจ๋์ ์ ๊ทผํ์ธ์.
โข
์ฌ ์ฌ์ด์์ ๋ชจ๋ ์ธ์คํด์ค๋ฅผ ์บ์ฑํ์ง ๋ง์ธ์(์ํ ๋ฌธ์ ๋ฐฉ์ง).
โข
์ฐ์ ์์๋ฅผ ์ ํ ๋ ๋ชจ๋ ๊ฐ ์์กด์ฑ์ ๊ณ ๋ คํ์ธ์.
โข
๋ชจ๋์ ์์ ์์ ์ด ์๋๋ผ, ์ต์ด ์์ฒญ ์ ์ธ์คํด์คํ๋๋ค๋ ์ ์ ๊ธฐ์ตํ์ธ์.
๋ชจ๋ ์์ฝ (Module Summary)
Module | Interface | Purpose |
ResourceManager | IResourceManager | ๊ฒ์ ์์
์ ๋ก๋/์ธ๋ก๋/์
๋ฐ์ดํธ ์ฒ๋ฆฌ |
EntityManager | IEntityManager | ๊ฒ์ ์ํฐํฐ์ ๊ทธ ์๋ช
์ฃผ๊ธฐ ๊ด๋ฆฌ |
UIManager | IUIManager | UI ํผ, ๊ทธ๋ฃน, ๋ ์ด์ด ์ ์ด |
SoundManager | ISoundManager | ์ค๋์ค ์ฌ์ ๋ฐ ์ค์ ๊ด๋ฆฌ |
ConfigManager | IConfigManager | ๊ฒ์ ์ค์ ๋ฐ์ดํฐ ๊ด๋ฆฌ |
DataTableManager | IDataTableManager | ๊ตฌ์กฐํ๋ ๊ฒ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ |
LocalizationManager | ILocalizationManager | ์ธ์ด๋ณ ๋ฆฌ์์ค ์ ๊ณต |
NetworkManager | INetworkManager | ๋คํธ์ํฌ ํต์ ๊ด๋ฆฌ |
DownloadManager | IDownloadManager | ํ์ผ ๋ค์ด๋ก๋ ์ฒ๋ฆฌ |
WebRequestManager | IWebRequestManager | ์น ์์ฒญ ๊ด๋ฆฌ |
ObjectPoolManager | IObjectPoolManager | ์ฑ๋ฅ์ ์ํ ์ค๋ธ์ ํธ ํ ์ ๊ณต |
FsmManager | IFsmManager | ์ ํ ์ํ ๊ธฐ๊ณ(FSM) ๊ด๋ฆฌ |
SettingManager | ISettingManager | ์ง์ ์ฌ์ฉ์ ์ค์ ๊ด๋ฆฌ |
DataNodeManager | IDataNodeManager | ๊ณ์ธต์ ๋ฐ์ดํฐ ๊ตฌ์กฐ ๊ด๋ฆฌ |
์ถ์ฒ(Sources):
GameFramework/Base/GameFrameworkEntry.cs 16โ132










