[UE5] ๐Ÿ–ง ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด Replication (6)

Singery00ยท2024๋…„ 8์›” 7์ผ
0

UE5 Blueprint

๋ชฉ๋ก ๋ณด๊ธฐ
27/29
post-thumbnail

๊ฐœ์š”

๐Ÿ–ง Unreal์˜ Replication ๊ฐœ๋…์„ ์•Œ์•„๋ณด๊ณ  ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž.

์ˆ˜๋งŽ์€ ๊ฒŒ์ž„ ์žฅ๋ฅด๊ฐ€ ์žˆ์ง€๋งŒ ๊ทธ ์ค‘์—์„œ๋Š” ํ˜ผ์ž์„œ๋Š” ํ”Œ๋ ˆ์ดํ•  ์ˆ˜ ์—†๊ฑฐ๋‚˜, ์—ฌ๋Ÿฟ์ด์„œ ํ•˜๋ฉด ๋” ์žฌ๋ฏธ์žˆ๋Š” ์žฅ๋ฅด๊ฐ€ ์žˆ๋‹ค.
์ด๋•Œ, ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ๋ชจ์—ฌ ํ•จ๊ป˜ ํ”Œ๋ ˆ์ดํ•˜๋Š” ๊ฒƒ์„ ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด๋ผ๊ณ  ํ•œ๋‹ค.

์ด๋ฒˆ ์‹œ๋ฆฌ์ฆˆ์—์„œ๋Š” ์ค‘์š”ํ•œ ๊ฐœ๋…์ธ Replication์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ณ 
๋ธ”๋ฃจํ”„๋ฆฐํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์–ธ๋ฆฌ์–ผ ์—”์ง„์—์„œ ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด ๊ฒŒ์ž„ ์˜ˆ์ œ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ œ์ž‘ํ•ด๋ณด์ž.

Replication ๊ฐœ๋…
Replication ์‹œ๋ฆฌ์ฆˆ
Replication ๊ฐ„๋‹จ ์˜ˆ์ œ
Session ๊ธฐ๋ฐ˜ ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด ์˜ˆ์ œ


๋ณธ๋ก 

์ด๋ฒˆ ํฌ์ŠคํŒ…์—๋Š” Actor Spawn์— ๋Œ€ํ•ด์„œ ์•Œ์•„ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด ๊ธฐ๋ฐ˜์˜ ๊ฒŒ์ž„ ์ œ์ž‘์€ ๋™๊ธฐํ™”๊ฐ€ ์ค‘์š”ํ•˜๊ณ ,
๊ฒฐ๊ตญ ๋ชจ๋“  ๋กœ์ง์ด ์„œ๋ฒ„๋ฅผ ํ†ตํ•  ์ˆ˜ ๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค.

์†Œํ™˜์•กํ„ฐ์˜ Replication ์ƒํƒœ์™€ RPCํ˜ธ์ถœ์— ๋”ฐ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ๋‘ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


BP_Ball ์ œ์ž‘

๊ฐ„๋‹จํ•˜๊ฒŒ Sphere๋ฅผ ๊ฐ€์ง„ ์†Œํ™˜์šฉ ๋ธ”๋ฃจํ”„๋ฆฐํŠธ๋ฅผ ํ•˜๋‚˜ ์ œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

Replication ์„ค์ •์€ Net Load On Client๋ฅผ ์ œ์™ธํ•˜๊ณค ์•„๋ฌด๊ฒƒ๋„ ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


Spawn Actor

None RPC

BP_Ball ์€ Replicate๋˜์ง€ ์•Š์•˜๊ณ , RPC๋„ ํ˜ธ์ถœํ•˜์ง€ ์•Š๊ณ  ์†Œํ™˜ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

SpawnBall์ด๋ผ๋Š” ์ด๋ฒคํŠธ๋ฅผ ๋งŒ๋“ค์–ด์„œ

์šฐํด๋ฆญ ์‹œ ์†Œํ™˜๋˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์‹คํ–‰ํ•ด๋ณด๋ฉด ๊ฐ Client ์ธก์—์„œ๋งŒ ์†Œํ™˜๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ์ด์ƒํ•œ ์  ํ•˜๋‚˜๋Š” BP_Ball์— ๊ฐ€๋กœ ๋ง‰ํžˆ์ง€ ์•Š๊ณ  ๊ทธ๋ƒฅ ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒ๋‹ˆ๋‹ค.

์ด์ „์— ์ถฉ๋Œ(Collision)์€ Server(Host)๊ฐ€ ๊ด€์žฅํ•œ๋‹ค.๋ผ๊ณ  ๋ง์”€๋“œ๋ ธ์Šต๋‹ˆ๋‹ค.

์œ„ ์˜ˆ์ œ์—์„œ ์•กํ„ฐ๊ฐ€ ์†Œํ™˜๋œ ๊ฒƒ์€ Server๊ฐ€ ์•„๋‹ˆ๋ผ Client์ž…๋‹ˆ๋‹ค.
์ฆ‰ Server๋Š” BP_Ball์ด ์†Œํ™˜๋œ ์ ์ด ์—†์œผ๋‹ˆ Collision ๋˜ํ•œ ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ด๋™ํ•˜๋”๋ผ๋„
์•„๋ฌด๊ฒƒ๋„ ์—†๋‹ค๊ณ  ํŒ๋‹จํ•˜๊ณ  ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

BP_Door๋•Œ์™€ ๊ฐ™์€ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.

Run On Server

์ด๋ฒˆ์—๋Š” Run On Server RPC๋ฅผ ํ†ตํ•ด์„œ ์†Œํ™˜ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

SpawnBall_Server ๋ฅผ ๋งŒ๋“ค์–ด์„œ Run On Server ์„ค์ • ํ›„ ์—ฐ๊ฒฐํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์‹คํ–‰ํ•˜์—ฌ ์†Œํ™˜ํ•ด๋ณด๋ฉด?

์•„๋ฌด๊ฒƒ๋„ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ทธ๋ ‡์ง€๋งŒ ํ”Œ๋ ˆ์ด์–ด๋Š” ๋ฌด์–ธ๊ฐ€์— ๊ฐ€๋กœ ๋ง‰ํ˜€ ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์œ„์™€๋Š” ์ •๋ฐ˜๋Œ€์˜ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.
Server์—๋Š” ๋ถ„๋ช…ํžˆ ์†Œํ™˜๋˜์—ˆ์œผ๋‚˜ Client๋“ค์—๊ฒŒ ๋ณต์ œ๋˜์ง€ ์•Š์•„ ๋™๊ธฐํ™”๊ฐ€ ์ผ์–ด๋‚˜์ง€ ์•Š์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

BP_Ball Replicate

์ด์ œ ๋™๊ธฐํ™”๋ฅผ ์œ„ํ•œ ์ฒซ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ๋Š” ๊ทธ๋Œ€๋กœ ๋‘๊ณ , BP_Ball์˜ Replication ์˜ต์…˜๋งŒ ์ฒดํฌํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์‹คํ–‰ํ•˜๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ์ •์ƒ์ ์ธ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค.

์ถ”๊ฐ€์ ์œผ๋กœ ์ด์ „์— ํฌ์ŠคํŒ…์—์„œ ์ง„ํ–‰ํ–ˆ๋˜ ํ›„์ ‘์†์— ๋”ฐ๋ฅธ ์ƒํ™ฉ์„ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์•กํ„ฐ๊ฐ€ Replicate ๋˜์–ด ์—”์ง„ ์ž์ฒด์—์„œ ๋™๊ธฐํ™”๊ฐ€ ์ง„ํ–‰๋˜์–ด ํ›„์ ‘์†์„ ํ•ด๋„ ์†Œํ™˜๋œ ์•กํ„ฐ๊ฐ€ ๋‚จ์•„ ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Multicast

BP_Ball์˜ Replication ์˜ต์…˜์„ ํ•ด์ œํ•˜๊ณ  Multicast RPC๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋™๊ธฐํ™”ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

SpawnBall_Multi๋ฅผ ๋งŒ๋“ค์–ด์„œ SpawnBall์„ ์—ฐ๊ฒฐํ•˜๊ณ ,
SpawnBall_Multi๋Š” SpawnBall_Server์— ์—ฐ๊ฒฐํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

์‹คํ–‰ํ•ด์ฃผ๋ฉด ๋™๊ธฐํ™”๊ฐ€ ์—ญ์‹œ ์ž˜ ๋ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ›„์ ‘์† ์‹œ์—๋Š” ๋™๊ธฐํ™”๊ฐ€ ๋˜์ง€ ์•Š์•„ ์†Œํ™˜๋œ ์•กํ„ฐ๊ฐ€ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ „๋ถ€ ๋‹ค ํ•˜๋ฉด?

Multicast RPC๋ฅผ ํ˜ธ์ถœํ•˜๋˜, BP_Ball์˜ Replication ์˜ต์…˜๋„ ์ผœ์ ธ ์žˆ์œผ๋ฉด์š”?

๊ทธ๋Ÿผ Multicast RPC๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ํ›„์ ‘์† ํ”Œ๋ ˆ์ด์–ด๋„ BP_Ball ์ž์ฒด๊ฐ€ Replicate๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—,
์ž˜ ๋ณด์ด๊ณ , ๊ฐ€๋กœ ๋ง‰ํžˆ๋Š” ๊ฒƒ๊นŒ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ฐ Client ์—๊ฒŒ ์ „ํŒŒ๊ฐ€ 2๋ฒˆ ๋˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์•กํ„ฐ๊ฐ€ 2๋ฒˆ ์†Œํ™˜์ด ๋ฉ๋‹ˆ๋‹ค.

๋ฌผ๋ฆฌ ๊ฐ์ฒด์ผ ๊ฒฝ์šฐ

์†Œํ™˜๋˜๋Š” ์•กํ„ฐ๊ฐ€ Simulate Physics์ธ ๊ฒฝ์šฐ๋Š” ์–ด๋–จ๊นŒ์š”?

๋˜‘๊ฐ™์Šต๋‹ˆ๋‹ค.

์œ ์ผํ•˜๊ฒŒ ๋‹ค๋ฅธ ์ ์ด๋ผ๋ฉด Replicate Movement๊ฐ€ ์ผœ์ ธ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.


๋งˆ๋ฌด๋ฆฌ

๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด ํ™˜๊ฒฝ์—์„œ์˜Spawn Actor์˜ ํ•ต์‹ฌ์€

์•กํ„ฐ์˜ ์†Œํ™˜์€ Server(Host)์—์„œ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•˜๊ณ , ์†Œํ™˜๋œ ์•กํ„ฐ์— ๋Œ€ํ•ด ๋™๊ธฐํ™”๋ฅผ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋ฒˆ ํฌ์ŠคํŒ…์€ ์—ฌ๊ธฐ์„œ ๋งˆ์น˜๊ณ , ๋‹ค์Œ ํฌ์ŠคํŒ…์—๋Š” ์†Œํ™˜๋œ ์•กํ„ฐ๋ฅผ `Destroy ํ•˜๋Š” ๋ฒ•์„ ์•Œ์•„ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

profile
๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์–ด๋ณด์ž

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