# ๐ŸŽฎ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ์„ค์ • ๊ฐ€์ด๋“œ ## ๐Ÿ“‹ ์ƒํ™ฉ ์š”์•ฝ โœ… PortListenerTest: ํฌํŠธ ์—ด๋ฆผ (yougetsignal ์„ฑ๊ณต) โœ… ํฌํŠธ ํฌ์›Œ๋”ฉ: ์ž‘๋™ ์ค‘ (yougetsignal ์„ฑ๊ณต์œผ๋กœ ์ฆ๋ช…) โœ… ๋ฐฉํ™”๋ฒฝ: ํ—ˆ์šฉ ์ค‘ (yougetsignal ์„ฑ๊ณต์œผ๋กœ ์ฆ๋ช…) โŒ ์œ ๋‹ˆํ‹ฐ Netcode: **ํฌํŠธ๊ฐ€ ๋‹ซํ˜€ ์žˆ์Œ** ## โšก ์ฆ‰์‹œ ํ•ด๊ฒฐ์ฑ… (3๋‹จ๊ณ„) ### 1๋‹จ๊ณ„: ํ…Œ์ŠคํŠธ ์‹œ์ž‘ (30์ดˆ) 1. **NetworkManagerQuickTest** ์ถ”๊ฐ€ (์”ฌ์˜ ์•„๋ฌด ๊ฒŒ์ž„์˜ค๋ธŒ์ ํŠธ) 2. ์šฐํด๋ฆญ โ†’ "Run Quick NetworkManager Test" 3. ์ฝ˜์†” ์ถœ๋ ฅ ๊ณต์œ  **๊ธฐ๋Œ€ ๊ฒฐ๊ณผ:** ``` โœ“ NetworkManager found! โœ“ Player Prefab: Player โœ“ Unity Transport found! โœ“ Transport: 4045, 0.0.0.0 โœ“ NetworkConnectionHandler found! ``` ### 2๋‹จ๊ณ„: ํŒ€์› ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ (1๋ถ„) 1. ํŒ€์›์—๊ฒŒ ๋‹น์‹ ์˜ **ํผ๋ธ”๋ฆญ IP** ์•Œ๋ฆผ 2. ํŒ€์›: ๊ฒŒ์ž„์—์„œ IP:ํฌํŠธ ์ž…๋ ฅ 3. ํŒ€์›: "์—ฐ๊ฒฐ" ํด๋ฆญ **๊ธฐ๋Œ€:** - ์„ฑ๊ณต: ํŒ€์›์ด ์ ‘์†! - ์‹คํŒจ: ์—๋Ÿฌ ๋กœ๊ทธ ๊ณต์œ  ### 3๋‹จ๊ณ„: ๋ฌธ์ œ ํ•ด๊ฒฐ ํŒ€์›์ด ์ ‘์† ๋ชปํ•  ๊ฒฝ์šฐ: **ํŒ€์› ์ธก:** - ์˜ฌ๋ฐ”๋ฅธ ํผ๋ธ”๋ฆญ IP ์ž…๋ ฅํ–ˆ๋Š”์ง€ ํ™•์ธ - ๋ฐฉํ™”๋ฒฝ ํ—ˆ์šฉ ํ™•์ธ - ์œ ๋‹ˆํ‹ฐ Netcode ๋ฒ„์ „ ํ™•์ธ (๋™์ผํ•ด์•ผ ํ•จ) **ํ˜ธ์ŠคํŠธ ์ธก (๋‹น์‹ ):** - ์ฝ˜์†”์—์„œ "[ConnectionHandler] ํด๋ผ์ด์–ธํŠธ" ๋ฉ”์‹œ์ง€ ํ™•์ธ - ์Šคํฐ ์„ฑ๊ณตํ•˜๋Š”์ง€ ํ™•์ธ - ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ƒ์„ฑ๋˜๋Š”์ง€ ํ™•์ธ --- ## ๐Ÿ”ง ํ•„์ˆ˜ ๊ตฌ์„ฑ ์š”์†Œ ### NetworkManager ์„ค์ • **ํ•„์ˆ˜:** ``` NetworkManager GameObject: - Player Prefab: Player (Assets/Prefabs/Player/) - Connection Approval: โœ“ ์ฒดํฌ - Enable Scene Management: โœ“ ์ฒดํฌ ``` ### Unity Transport ์„ค์ • **ํ•„์ˆ˜:** ``` Unity Transport: - Port: 4045 - Address: 0.0.0.0 (๋ชจ๋“  ์ธํ„ฐํŽ˜์ด์Šค ํ—ˆ์šฉ) - ServerListenAddress: 0.0.0.0 ``` ### ๋ผ์šฐํ„ฐ ํฌํŠธ ํฌ์›Œ๋”ฉ **ํ•„์ˆ˜:** ``` ๋ผ์šฐํ„ฐ ํฌํŠธ ํฌ์›Œ๋”ฉ: - External Port: 4045 - Internal Port: 4045 - Protocol: TCP - Internal IP: ๋‹น์‹  ์ปดํ“จํ„ฐ์˜ IPv4 (ipconfig๋กœ ํ™•์ธ) ``` **IP ํ™•์ธ:** ``` ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ โ†’ ipconfig IPv4 ์ฃผ์†Œ ์ฐพ๊ธฐ (์˜ˆ: 192.168.1.50) ``` --- ## โœ… ์ž‘๋™ ์ค‘์ธ์ง€ ํ™•์ธ ### ๋ฐฉ๋ฒ• 1: yougetsignal (๊ฐ€์žฅ ์‹ ๋ขฐ) ``` https://www.yougetsignal.com/tools/open-ports/ ์ž…๋ ฅ: - IP: ๋‹น์‹ ์˜ ํผ๋ธ”๋ฆญ IP (https://api.ipify.org) - Port: 4045 ๊ธฐ๋Œ€: "Port 4045 is open" ``` ### ๋ฐฉ๋ฒ• 2: ์ฝ˜์†” ๋กœ๊ทธ **ํ˜ธ์ŠคํŠธ ์‹œ์ž‘ ์„ฑ๊ณต:** ``` [ConnectionHandler] ์„œ๋ฒ„ ์‹œ์ž‘๋จ [ConnectionHandler] ์Šคํฐ ํฌ์ธํŠธ X๊ฐœ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค [ConnectionHandler] ํด๋ผ์ด์–ธํŠธ [ID] ์—ฐ๊ฒฐ๋จ [ConnectionHandler] ํ”Œ๋ ˆ์ด์–ด [ID] ์Šคํฐ๋จ ``` **ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ ์„ฑ๊ณต:** ``` [ConnectionHandler] ํด๋ผ์ด์–ธํŠธ [ID] ์Šน์ธ๋จ. ์ˆ˜๋™ ์Šคํฐ์œผ๋กœ ๋Œ€๊ธฐ. ``` --- ## ๐ŸŽฎ ๊ฒŒ์ž„ ํ”Œ๋ ˆ์ด ๋ฐฉ๋ฒ• ### ํ˜ธ์ŠคํŠธ (๋‹น์‹ ) 1. ์—๋””ํ„ฐ์—์„œ ํ”Œ๋ ˆ์ด ๋ชจ๋“œ ์‹œ์ž‘ 2. ๋˜๋Š” ๋นŒ๋“œ ์‹คํ–‰ 3. ์ฝ˜์†”์—์„œ "ํ˜ธ์ŠคํŠธ ์‹œ์ž‘๋จ" ํ™•์ธ 4. ํŒ€์›์—๊ฒŒ ํผ๋ธ”๋ฆญ IP ์•Œ๋ฆผ 5. ํŒ€์›์ด ์ ‘์†ํ•  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ ### ํด๋ผ์ด์–ธํŠธ (ํŒ€์›) 1. ์—๋””ํ„ฐ์—์„œ ํ”Œ๋ ˆ์ด ๋ชจ๋“œ ์‹œ์ž‘ 2. ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ UI์—์„œ ํ˜ธ์ŠคํŠธ์˜ ํผ๋ธ”๋ฆญ IP ์ž…๋ ฅ 3. "์—ฐ๊ฒฐ" ํด๋ฆญ 4. ์ฝ˜์†”์—์„œ "ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ๋จ" ํ™•์ธ 5. ๊ฒŒ์ž„ ์‹œ์ž‘! --- ## โš ๏ธ ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ ๋ฐ ํ•ด๊ฒฐ ### ๋ฌธ์ œ 1: "ConnectionHandler: PlayerPrefab์ด null์ž…๋‹ˆ๋‹ค" **์›์ธ:** Player Prefab์ด NetworkManager์— ํ• ๋‹น๋˜์ง€ ์•Š์Œ **ํ•ด๊ฒฐ:** ``` NetworkManager ์„ ํƒ โ†’ Network Config โ†’ Player Prefab Assets/Prefabs/Player/Player.prefab ๋“œ๋ž˜๊ทธ ``` ### ๋ฌธ์ œ 2: ํŒ€์›์ด "Failed to connect to server" ์—๋Ÿฌ **๊ฐ€๋Šฅํ•œ ์›์ธ:** 1. ํ‹€๋ฆฐ ํผ๋ธ”๋ฆญ IP ์ž…๋ ฅ 2. ํฌํŠธ๊ฐ€ ๋‹ซํ˜€ ์žˆ์Œ (ํ˜ธ์ŠคํŠธ ์žฌ์‹œ์ž‘ ํ•„์š”) 3. ๋ฐฉํ™”๋ฒฝ ์ฐจ๋‹จ 4. ๋‹ค๋ฅธ Unity/Netcode ๋ฒ„์ „ **ํ•ด๊ฒฐ:** 1. ์˜ฌ๋ฐ”๋ฅธ IP ํ™•์ธ (https://api.ipify.org) 2. yougetsignal์—์„œ ํฌํŠธ 4045 ํ™•์ธ 3. ํŒ€์›์˜ ๋ฐฉํ™”๋ฒฝ ํ—ˆ์šฉ 4. Unity ๋ฒ„์ „ ์ผ์น˜ ํ™•์ธ ### ๋ฌธ์ œ 3: ํฌํŠธ๊ฐ€ ์—ด๋ ธ๋‹ค ๋‹ซํ˜€ **์›์ธ:** ์œ ๋‹ˆํ‹ฐ Netcode๊ฐ€ ์‹ค์ œ๋กœ ๋ฐ”์ธ๋”ฉํ•˜์ง€ ์•Š์Œ **ํ•ด๊ฒฐ:** ``` NetworkManagerQuickTest ์‹คํ–‰ NetworkManagerResetAndRestart ์‚ฌ์šฉ ์ƒˆ๋กœ ์‹œ์ž‘ ``` --- ## ๐Ÿ“Š ๋„๊ตฌ ### ์œ ์šฉํ•œ ์Šคํฌ๋ฆฝํŠธ | ์Šคํฌ๋ฆฝํŠธ | ์šฉ๋„ | ์‚ฌ์šฉ๋ฒ• | |---------|---------|---------| | **NetworkManagerQuickTest** | ์„ค์ • ํ™•์ธ | ์ถ”๊ฐ€ โ†’ ์šฐํด๋ฆญ "Run Quick NetworkManager Test" | | **NetworkResetAndRestart** | ๋„คํŠธ์›Œํฌ ๋ฆฌ์…‹ | ์ถ”๊ฐ€ โ†’ ์šฐํด๋ฆญ "Reset Network and Restart Host" | | **PortListenerTest** | ํฌํŠธ ๋ฐ”์ธ๋”ฉ ํ…Œ์ŠคํŠธ | ์ถ”๊ฐ€ โ†’ ์šฐํด๋ฆญ "Test Port Binding Only" | ### ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์Šคํฌ๋ฆฝํŠธ - โŒ ContinuousPortMonitor (๋ž™ ๋ฐœ์ƒ) - โŒ ๋‹ค๋ฅธ ์ง„๋‹จ ๋„๊ตฌ (ํ•„์š” ์—†์Œ) --- ## ๐Ÿš€ ๋น ๋ฅธ ์‹œ์ž‘ ๊ฐ€์ด๋“œ ### ์ฒ˜์Œ ์„ค์ •ํ•˜๋Š” ๊ฒฝ์šฐ ``` 1. NetworkManager ์ฐพ๊ธฐ 2. Player Prefab ํ• ๋‹น (Assets/Prefabs/Player/) 3. Unity Transport ํฌํŠธ 4045 ์„ค์ • 4. ๋ผ์šฐํ„ฐ์—์„œ ํฌํŠธ ํฌ์›Œ๋”ฉ ์„ค์ • 5. ํ˜ธ์ŠคํŠธ ์‹œ์ž‘ 6. yougetsignal์—์„œ ํฌํŠธ ํ™•์ธ 7. ํŒ€์›์—๊ฒŒ ํผ๋ธ”๋ฆญ IP ๊ณต์œ  8. ํŒ€์› ์ ‘์† 9. ๊ฒŒ์ž„ ์‹œ์ž‘! ๐ŸŽ‰ ``` ### ์ด๋ฏธ ์ž‘๋™ ์ค‘์ธ ๊ฒฝ์šฐ ``` 1. ํ˜ธ์ŠคํŠธ ์‹œ์ž‘ 2. yougetsignal์—์„œ ํฌํŠธ 4045 ํ™•์ธ (์—ด๋ ค ์žˆ์–ด์•ผ ํ•จ) 3. ํŒ€์›์—๊ฒŒ ํผ๋ธ”๋ฆญ IP ๊ณต์œ  4. ํŒ€์› ์ ‘์† 5. ๊ฒŒ์ž„ ์‹œ์ž‘! ๐ŸŽ‰ ``` --- ## ๐Ÿ’ก ํ•ต์‹ฌ ํ†ต์ฐฐ **๋‹น์‹ ์˜ ์ƒํ™ฉ:** - PortListenerTest: ์ž‘๋™ โœ… (ํฌํŠธ ์—ด๋ฆผ) - yougetsignal: ์ž‘๋™ โœ… (์ ‘์† ๊ฐ€๋Šฅ) - ์œ ๋‹ˆํ‹ฐ Netcode: **ํฌํŠธ ๋‹ซํ˜€** โŒ **ํ•ด๊ฒฐ์ฑ…:** 1. Player Prefab ํ• ๋‹น (NetworkManagerQuickTest๋กœ ํ™•์ธ) 2. ํŒ€์›์ด ์ง€๊ธˆ ํ…Œ์ŠคํŠธ 3. ์ฝ˜์†” ๋กœ๊ทธ ํ™•์ธ **์„ฑ๊ณต ์‹œ:** ``` โœ“ Player Prefab: Player โœ“ Unity Netcode ์‹œ์ž‘ ์„ฑ๊ณต โœ“ ํŒ€์› ์ ‘์† ์„ฑ๊ณต โœ“ ํ”Œ๋ ˆ์ด์–ด ์Šคํฐ๋จ ``` --- ## ๐Ÿ“ ๊ธฐ์ˆ  ์ •๋ณด ### ์‚ฌ์šฉ๋œ ํฌํŠธ ``` ํฌํŠธ: 4045 ํ”„๋กœํ† ์ฝœ: TCP ๋ฐ”์ธ๋”ฉ: 0.0.0.0 (๋ชจ๋“  ์ธํ„ฐํŽ˜์ด์Šค) ``` ### ํ™•์ธ๋œ ์‚ฌํ•ญ ``` โœ… ํฌํŠธ ํฌ์›Œ๋”ฉ: ์ž‘๋™ (yougetsignal ์ฆ๋ช…) โœ… ๋ฐฉํ™”๋ฒฝ: ํ—ˆ์šฉ (yougetsignal ์ฆ๋ช…) โœ… OS ๋ฐ”์ธ๋”ฉ: ๊ฐ€๋Šฅ (PortListenerTest ์ฆ๋ช…) โŒ ์œ ๋‹ˆํ‹ฐ Netcode: ๋ฐ”์ธ๋”ฉ ์‹คํŒจ ``` ### ๋ฌธ์ œ ๋ถ„์„ **ํฌํŠธ 4045๊ฐ€ ์—ด๋ฆฌ์ง€ ์•Š๋Š” ์ด์œ :** - ์œ ๋‹ˆํ‹ฐ Netcode๊ฐ€ ํฌํŠธ์— ๋ฐ”์ธ๋”ฉํ•˜์ง€ ์•Š์Œ - Player Prefab์ด ํ• ๋‹น๋˜์ง€ ์•Š์•˜์„ ๊ฐ€๋Šฅ์„ฑ (90%) - ๋˜๋Š” ๋„คํŠธ์›Œํฌ ๊ด€๋ฆฌ์ž ์ดˆ๊ธฐํ™” ์ˆœ์„œ ๋ฌธ์ œ --- ## โœ… ์„ฑ๊ณต ํ™•์ธ์‚ฌํ•ญ **๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ•  ๋•Œ:** - [ ] ํ˜ธ์ŠคํŠธ: IsServer = True - [ ] ํ˜ธ์ŠคํŠธ: IsHost = True - [ ] Player Prefab: Player (ํ• ๋‹น๋จ) - [ ] Transport: 4045, 0.0.0.0 - [ ] yougetsignal: "Port 4045 is open" - [ ] ์ฝ˜์†”: "ํด๋ผ์ด์–ธํŠธ [ID] ์—ฐ๊ฒฐ๋จ" - [ ] ์ฝ˜์†”: "ํ”Œ๋ ˆ์ด์–ด [ID] ์Šคํฐ๋จ" - [ ] ํŒ€์›: ์ ‘์† ์„ฑ๊ณต --- ## ๐ŸŽฏ ์š”์•ฝ **ํ•ต์‹ฌ ์‚ฌํ•ญ:** 1. ํฌํŠธ 4045 ์—ด๋ฆผ (yougetsignal ์ฆ๋ช…) โœ… 2. Player Prefab ํ• ๋‹น ํ•„์š” (๊ฐ€๋Šฅํ•œ ๋ฌธ์ œ ์›์ธ) 3. ํŒ€์› ์ง€๊ธˆ ํ…Œ์ŠคํŠธ 4. ์ฝ˜์†” ๋กœ๊ทธ ํ™•์ธ **๋‹ค์Œ ๋‹จ๊ณ„:** 1. NetworkManagerQuickTest ์‹คํ–‰ 2. ํŒ€์› ํ…Œ์ŠคํŠธ 3. ๋ฌธ์ œ ์žˆ์œผ๋ฉด ์ฝ˜์†” ๋กœ๊ทธ ๊ณต์œ  4. ์„ฑ๊ณตํ•˜๋ฉด ๊ฒŒ์ž„ ์‹œ์ž‘! ๐ŸŽ‰ --- **ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค!** ๐Ÿš€