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

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

UE5 Blueprint

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

๊ฐœ์š”

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

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

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

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


๋ณธ๋ก 

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

"์—ฅ, ์ €ํฌ ์ง€๊ธˆ ์บ๋ฆญํ„ฐ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ž˜ ๋‚˜์˜ค์ž–์•„์š”"

ํ˜„์žฌ Third Person Character๋ฅผ ๋ณด๋ฉด ๋‹ฌ๋ฆฌ๊ธฐ, ์ ํ”„ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์ด๋ฏธ ๋™๊ธฐํ™” ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Š” Character ํด๋ž˜์Šค๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” Character Movement Component๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ธฐ๋ณธ ์ˆ˜์น˜๋“ค์ด
์–ธ๋ฆฌ์–ผ ์ž์ฒด์ ์œผ๋กœ ๋ณต์ œ(Replication)์ด ๋˜๋„๋ก ์ฒ˜๋ฆฌ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

ABP๋Š” Character Movement Component์˜ ๊ฐ’์„ ๊ฐ์ง€ํ•˜์—ฌ ์•Œ๋งž์€ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ ์šฉํ•˜๋ฉฐ,
์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ์ž๋™์œผ๋กœ ๋™๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๊ฐ€ ์ด์„ ๋“ค๊ณ , ์˜๊ณ , ์ถค์„ ์ถ”๋Š” ๋‹ค๋ฅธ ์• ๋‹ˆ๋ฉ”์ด์…˜์€ Character Movement Component์˜ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์ฃ .
๊ทธ๋ž˜์„œ ๊ทธ ์™ธ์˜ ๋™์ž‘์€ ๋ณต์ œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ  ํฌ๋Ÿผ


์—Ž๋“œ๋ฆฌ๊ธฐ(Prone) ์‚ฌ์ „ ์ž‘์—…

ํ”Œ๋ ˆ์ด์–ด

Zํ‚ค๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์บ๋ฆญํ„ฐ๊ฐ€ ์—Ž๋“œ๋ฆฌ๋„๋ก ๋งŒ๋“ค์–ด ์™”์Šต๋‹ˆ๋‹ค.
์• ๋‹ˆ๋ฉ”์ด์…˜์€ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์Šคํƒ€ํ„ฐํŒฉ์˜ Prone์„ ๋ฆฌํƒ€๊ฒŸํ•ด์„œ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

Zํ‚ค ์ž…๋ ฅ ์‹œ IsProne์ด ๋ณ€๊ฒฝ๋˜๊ณ , ์ƒํƒœ ์ „ํ™˜ Montage๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

ABP

Event Graph์—์„œ IsProne์˜ ๋ณ€๊ฒฝ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ์ฒ˜๋ฆฌํ•˜๊ณ ,

Anim Graph์—์„œ Blend Pose by Bool์„ ์‚ฌ์šฉํ•ด IsProne์— ๋”ฐ๋ผ ์ถœ๋ ฅ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋ฐ”๊ฟ”์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

์‹คํ–‰ ๊ฒฐ๊ณผ

๊ฐ๊ฐ์˜ Client์—์„œ๋Š” ์ž˜ ์‹คํ–‰๋˜์ง€๋งŒ ๋”ฐ๋กœ ๋†€๊ณ  ์žˆ์ฃ .


๋™๊ธฐํ™”

์ด์ œ ๋™๊ธฐํ™”๋ฅผ ์ง„ํ–‰ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์šฐ์„  ๋ณต์ œ๋œ ๋ณ€์ˆ˜๋Š” Run On Server๋ฅผ ํ†ตํ•˜์—ฌ ๋ฐ˜๋“œ์‹œ ์„œ๋ฒ„์—์„œ ์‹คํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์„ ๊ฐ Client๋“ค์—๊ฒŒ ์ „ํŒŒํ•˜๋Š” ๋ฐฉ๋ฒ•์ด 2๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. Multicast RPC ํ˜ธ์ถœ
  2. RepNotify ์‚ฌ์šฉ

๊ฐ๊ฐ ์ง์ ‘ ์‚ฌ์šฉํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Multicast RPC ํ˜ธ์ถœ

์•ž์„  ์˜ˆ์ œ๋“ค์—์„œ ์‚ฌ์šฉํ•˜๋˜ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
Run On Server ํ˜ธ์ถœ ํ›„ Multicast๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‹คํ–‰ํ•˜์—ฌ ๋™์ž‘์„ ํ™•์ธํ•ด๋ณด๋ฉด ์ •์ƒ์ ์œผ๋กœ ๋˜๋Š”๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

RepNotify ์‚ฌ์šฉ

RepNotify๋Š” ํ•ด๋‹น ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ์‹œ ๋™์‹œ์— ์ƒ์„ฑ๋œ OnRep ํ•จ์ˆ˜๊ฐ€ ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

Details ํŒจ๋„์—์„œ IsProne ๋ณ€์ˆ˜๋ฅผ RepNotify๋กœ ์„ค์ •ํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์ž๋™์œผ๋กœ OnRep_๋ณ€์ˆ˜๋ช… ํ•จ์ˆ˜๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
IsProne ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ๋•Œ ๋งˆ๋‹ค ํ•ด๋‹น ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

ํ•จ์ˆ˜์•ˆ์—์„œ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์‹คํ–‰ํ•˜๋„๋ก ๋กœ์ง์„ ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ, ๋ณ€์ˆ˜์˜ ์ˆ˜์ •์€ ์„œ๋ฒ„์—์„œ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•œ๋‹ค๋Š” ์ ์„ ๊ธฐ์–ตํ•ด์ฃผ์„ธ์š”.
๊ทธ๋ฆฌ๊ณ  Run On Server๋ฅผ ์‚ฌ์šฉํ•ด IsProne ๋ณ€์ˆ˜๊ฐ’์„ ์ˆ˜์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์‹คํ–‰ํ•˜๋ฉด ์ž˜ ๋™์ž‘๋ฉ๋‹ˆ๋‹ค.
์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋Š๊ธฐ๋Š” ๊ฒƒ์€ Montage ์‹คํ–‰ ์‹œ ๋”œ๋ ˆ์ด ๋•Œ๋ฌธ์ด๋‹ˆ ๋„˜์–ด ๊ฐ€์ฃผ์„ธ์š”.


๋‘ ๋ฐฉ์‹์˜ ์ฐจ์ด

Multicast์™€ RepNotify๊ฐ€ ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€ ์ €๋„ ์ž˜ ๋ชฐ๋ผ์„œ ํฌ๋Ÿผ์— ์งˆ๋ฌธ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ  ํฌ๋Ÿผ

Multicast๋ฅผ ์‚ฌ์šฉํ•  ์‹œ ๋‚˜์ค‘์— ์ ‘์†ํ•˜๋Š” Client๋Š” Multicast RPC๋ฅผ ๋ฐ›์ง€ ๋ชปํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์— ์—Ž๋“œ๋ ค ์žˆ์–ด์•ผํ•  ์บ๋ฆญํ„ฐ๊ฐ€ ์„œ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
RepNotify๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Replicate๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด ์—”์ง„์ด ์ž์ฒด์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ ์ƒˆ๋กœ ์ ‘์†ํ•œ ์œ ์ €์—๊ฒŒ๋„ ์ฆ‰์‹œ ๋ณต์ œํ•˜๊ฒŒ ๋œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ Multicast ๋ณด๋‹ค RepNotify ๋ฅผ ๋ณด๋‹ค ์„ ํ˜ธํ•˜๊ณ  ๊ถŒ์žฅํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•ด์„œ๋Š” 3๊ฐ€์ง€ ์ด์œ ๋ฅผ ๋‹ต๋ณ€๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

  1. Multicast ๋Š” ๋ˆ„๋ฝ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ Client ์—์„œ ๊ฐ’์ด ๋™์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  2. Replication์€ ์„œ๋ฒ„์— ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜์—ฌ Client ์˜ ๋ถ€์ •ํ–‰์œ„๋ฅผ ๋ง‰๋Š”๋‹ค.
  3. ๋„คํŠธ์›Œํฌ์—์„œ ์ข€ ๋” ํšจ์œจ์ ์ด๋‹ค.

๊ทธ๋ž˜์„œ ์ž„์‹œ๋กœ ์„ธ์…˜์„ ์ƒ์„ฑํ•˜์—ฌ ์ ‘์†ํ•œ ํ›„ ๋™์ž‘์„ ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Multicast ๋ฐฉ์‹ ํ›„์ ‘์†

์ดํ›„์— ๋“ค์–ด์˜จ ํ”Œ๋ ˆ์ด์–ด๋“ค์€ ์‚ฌ์ „์— ์ ‘์†๋˜์–ด ์žˆ๋Š” ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์—Ž๋“œ๋ฆฌ์ง€ ์•Š๊ณ , ์„œ์žˆ๋Š” ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.

RepNotify ๋ฐฉ์‹ ํ›„์ ‘์†

์ดํ›„์— ๋“ค์–ด์˜จ ํ”Œ๋ ˆ์ด์–ด๋„ ์‚ฌ์ „์— ์ ‘์†ํ•œ ํ”Œ๋ ˆ์ด์–ด์˜ ์—Ž๋“œ๋ฆฐ ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๋งˆ๋ฌด๋ฆฌ

์—ฌ๊ธฐ๊นŒ์ง€ ์• ๋‹ˆ๋ฉ”์ด์…˜์˜ ๋™๊ธฐํ™”์™€ Multicast์™€ RepNotify์˜ ์ฐจ์ด๋ฅผ ์•Œ์•„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์ž‘์„ฑํ•˜๋‹ค๋ณด๋‹ˆ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋™๊ธฐํ™”๋ณด๋‹ค Replication์˜ ๋™์ž‘์— ๋” ์ค‘์ ์„ ๋‘๊ณ  ์“ด ๊ฒƒ ๊ฐ™์ง€๋งŒ...

์•„๋ฌดํŠผ ์• ๋‹ˆ๋ฉ”์ด์…˜์˜ ์‹คํ–‰์€ ๊ฐ Client ์—๊ฒŒ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋ผ๊ณ  ์ „ํŒŒ๋ฅผ ํ•˜๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.

ํ”Œ๋ ˆ์ด์–ด์˜ ๋‹ฌ๋ฆฌ๊ธฐ, Pitch ๊ฐ’์— ๋”ฐ๋ฅธ Aim Offset ๋ชจ๋‘ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋‹ˆ ํ•ด๋ณด์‹œ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

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