[TIL] 250821

๊น€์„ธํฌยท2025๋…„ 8์›” 21์ผ

โœ๏ธToday I Learned

๐Ÿ“… 2025-08-21

  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ํฐ ์ˆ˜ ์ฐพ๊ธฐ
  • ์„œ๋ฒ„์˜ ์ข…๋ฅ˜์™€ Dedicated Server
  • NetMode, NetConnetion, NetRole

์„œ๋ฒ„์˜ ์ข…๋ฅ˜์™€ Dedicated Server

์„œ๋ฒ„์˜ ์ข…๋ฅ˜

  1. P2P (Peer to Peer)
    ๊ฐ๊ฐ์˜ ์ปดํ“จํ„ฐ๊ฐ€ ํด๋ผ์ด์–ธํŠธ์ด์ž ์„œ๋ฒ„์ธ ๊ตฌ์กฐ
    ์˜ˆ์‹œ) ๋‹คํฌ์†Œ์šธ, ํ† ๋ ŒํŠธ
  2. Listen Server
    ํด๋ผ์ด์–ธํŠธ์ด์ž ์„œ๋ฒ„์ธ ํ˜ธ์ŠคํŠธ๊ฐ€ ์žˆ๊ณ  ๋‚˜๋จธ์ง€ ๊ฒŒ์ŠคํŠธ๋Š” ๋ชจ๋‘ ํด๋ผ์ด์–ธํŠธ ์—ญํ• ๋งŒ ๋งก๋Š” ํ˜•ํƒœ. ์ผ์ข…์˜ P2P
    ์˜ˆ์‹œ) ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ, ์–ด๋ชฝ์–ด์Šค
  3. Dedicated Server
    ์„œ๋ฒ„๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์ปดํ“จํ„ฐ๊ฐ€ ๋”ฐ๋กœ ์žˆ๋Š” ์„œ๋ฒ„ - ํด๋ผ์ด์–ธํŠธ ๊ตฌ์กฐ
    ์˜ˆ์‹œ) ๋ฐฐํ‹€๊ทธ๋ผ์šด๋“œ

Dedicated Server ์‹คํ–‰ ํ๋ฆ„๋„

  1. PIE๋ฅผ ํ–ˆ๊ฑฐ๋‚˜ Server.exe๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์‹์œผ๋กœ ์„œ๋ฒ„ ํ”„๋กœ์„ธ์Šค ์‹คํ–‰
    ์‹คํ–‰ํ•  ๋•Œ Listen ๋ช…๋ น์–ด๋กœ ๋ ˆ๋ฒจ์„ ์—ด๋ฉด ์†Œ์ผ“์ด ์ƒ์„ฑ๋˜๋ฉฐ ๋‹ค๋ฅธ PC๊ฐ€ ์ ‘์† ๊ฐ€๋Šฅํ•˜๊ฒŒ๋” ํ•œ๋‹ค.
    Listen ๋ช…๋ น์–ด๊ฐ€ ์—†์œผ๋ฉด ์‹ฑ๊ธ€ํ”Œ๋ ˆ์ด์ด๋‹ค.
  2. GameMode, GameState ์•กํ„ฐ ์ƒ์„ฑ
    GameMode ์•กํ„ฐ๋Š” ์„œ๋ฒ„์—๋งŒ ์กด์žฌํ•œ๋‹ค. (์„œ๋ฒ„์™€ ๊ฒŒ์ž„๋ชจ๋“œ๋ฅผ ๋™์ผ์‹œ)
  3. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์˜ IP์ฃผ์†Œ์™€ ํฌํŠธ๋ฒˆํ˜ธ๋กœ ์ ‘์† ์‹œ๋„
    ์„œ๋ฒ„๋Š” ์ ‘์† ์‹œ๋„ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ ˆ๋ฒจ ์ •๋ณด๋ฅผ ๋„˜๊ธด๋‹ค.
    ํด๋ผ์ด์–ธํŠธ๋„ ํ•ด๋‹น ๋ ˆ๋ฒจ์„ ์—ด๊ณ  ์„ฑ๊ณตํ•˜๋ฉด ๋ฐ๋”” ์„œ๋ฒ„์—๊ฒŒ ์•Œ๋ฆฐ๋‹ค.
  4. ํด๋ผ์ด์–ธํŠธ ์ „์šฉ ์•กํ„ฐ ์ƒ์„ฑ ํ›„ ๋ณต์ œ
    ๋ ˆ๋ฒจ ์—ฌ๋Š”๋ฐ ์„ฑ๊ณตํ•œ ํด๋ผ์ด์–ธํŠธ ์ „์šฉ PlayerState, PlayerController, PlayerCharacter๋ฅผ ์„œ๋ฒ„์—์„œ ์ƒ์„ฑํ•˜๊ณ  GameState์™€ ํ•จ๊ป˜ ํด๋ผ์ด์–ธํŠธ์— ๋ณต์ œํ•œ๋‹ค.
  5. ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ ์ ‘์†์‹œ
    ๋ ˆ๋ฒจ ์ •๋ณด๋ฅผ ๋„˜๊ธฐ๊ณ  ๋ ˆ๋ฒจ์„ ์—ฌ๋Š”๋ฐ ์„ฑ๊ณตํ•˜๋ฉด ๋ฐ๋”” ์„œ๋ฒ„์—๊ฒŒ ์•Œ๋ฆฐ๋‹ค.
  6. ํ•ด๋‹น ํด๋ผ์ด์–ธํŠธ ์ „์šฉ ์•กํ„ฐ ์ƒ์„ฑ ํ›„ ๋ณต์ œ
    ๋‘๋ฒˆ์งธ ํด๋ผ์ด์–ธํŠธ ์ „์šฉ PlayerState, PlayerController, PlayerCharacter๋ฅผ ์„œ๋ฒ„์—์„œ ์ƒ์„ฑํ•˜๊ณ  GameState์™€ ํ•จ๊ป˜ ๋‘๋ฒˆ์งธ ํด๋ผ์ด์–ธํŠธ์— ๋ณต์ œํ•œ๋‹ค.
    ์ด๋•Œ ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ๋“ค์˜ PlayerState, PlayerCharacter๊ฐ€ ์„œ๋กœ์—๊ฒŒ ๋ณต์ œ๋˜๋ฉด์„œ ์„œ๋กœ ๋ณด์ด๊ฒŒ ๋œ๋‹ค.

์„œ๋ฒ„-ํด๋ผ์ด์–ธํŠธ ๊ตฌ์กฐ์˜ ํŠน์ง•

ํด๋ผ์ด์–ธํŠธ ๊ฐ„์˜ ํ†ต์‹ ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
์˜ค์ง ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด์˜ ํ†ต์‹ ๋งŒ ๊ฐ€๋Šฅ -> RPC๋‚˜ ํ”„๋กœํผํ‹ฐ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์˜ํ–ฅ์„ ์ค€๋‹ค.


NetMode, NetConnetion, NetRole

NetMode

ํ•ด๋‹น ๊ฒŒ์ž„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋Š”์ง€
์‹ฑ๊ธ€ํ”Œ๋ ˆ์ด: NM_StandAlone
์„œ๋ฒ„: NM_Listen, NM_DedicatedServer
ํด๋ผ์ด์–ธํŠธ: NM_Client

NetConnection

์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด์˜ ์—ฐ๊ฒฐ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ƒ์„ฑ๋˜๋Š” ๊ฐ์ฒด
UNetDriver๊ฐ€ UNetConnection์„ ์†Œ์œ ํ•˜๊ณ  ๊ด€๋ฆฌํ•œ๋‹ค.
์„œ๋ฒ„: ํด๋ผ์ด์–ธํŠธ ์ˆ˜ ๋งŒํผ ClientConnection
ํด๋ผ์ด์–ธํŠธ: ํ•˜๋‚˜์˜ ServerConnection
ClientConnection ์€ ํ•˜๋‚˜์˜ PlayerController๋ฅผ ์†Œ์œ ํ•œ๋‹ค.
PlayerController๊ฐ€ Owner์ธ ์•กํ„ฐ๋“ค์€ ํ•ด๋‹น ClientConnection ์ด ์†Œ์œ ํ•˜๊ฒŒ ๋˜๊ณ  ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค.

NetRole

  1. None: ์Šคํฐ๋งŒ ๋˜๊ณ  ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋˜์ง€ ์•Š์€ ์•กํ„ฐ
  2. Authority: ์„œ๋ฒ„์—์„œ ์Šคํฐ๋œ ์•กํ„ฐ. ๊ฒŒ์ž„์— ์ค‘๋Œ€ํ•œ ์˜ํ–ฅ์„ ๋ผ์น  ์ˆ˜ ์žˆ๋Š” ๋กœ์ง ์ž‘์„ฑ ๊ฐ€๋Šฅ
  3. Autonomous Proxy: ClientConnection ์— ์†Œ์œ ๋˜์–ด ์„œ๋ฒ„์™€ ์†ก์ˆ˜์‹  ๋ฐ ๋™๊ธฐํ™” ๊ฐ€๋Šฅํ•œ ์•กํ„ฐ
  4. Simulated Proxy: ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ˆ˜์‹  ๋ฐ ๋™๊ธฐํ™”๋งŒ ๊ฐ€๋Šฅํ•œ ์•กํ„ฐ. ClientConnection์˜ ์†Œ์œ ๊ด€๊ณ„์— ์žˆ์ง€ ์•Š๋‹ค.

๐Ÿ’ก ๋А๋‚€ ์  (What I Felt)

์‹ค์ œ๋กœ ๊ฒŒ์ž„์— ์ ์šฉํ•ด๋ณด๋ฉด ์–ผ๋งˆ๋‚˜ ๋จธ๋ฆฌ ์•„ํ”Œ์ง€ ๋ฌด์„ญ๋‹ค.


์ถœ์ฒ˜: ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉ ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„

0๊ฐœ์˜ ๋Œ“๊ธ€