Memo - sunbang123/study_report GitHub Wiki

Photon

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

์ „์šฉ ์„œ๋ฒ„(Dedicated Server) ๋ฆฌ์Šจ ์„œ๋ฒ„(Listen Server) P2P(Peer-to-Peer)

๋„คํŠธ์›Œํฌ ๊ตฌํ˜„

  • remote ์ „๋‹ฌ
  • Photon View ์ปดํฌ๋„ŒํŠธ : Player ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ์‹๋ณ„๋˜๊ฒŒ ํ•จ. ๋กœ์ปฌ-๋ฆฌ๋ชจํŠธ ๋™๊ธฐํ™”
    • Photon Transform View: ๋กœ์ปฌ Player ์œ„์น˜์™€ ํšŒ์ „์„ ๋ฆฌ๋ชจํŠธ Player์˜ transform ์ปดํฌ๋„ŒํŠธ์— ๋™๊ธฐํ™”. Photon View ์—†์ด๋Š” ๋™์ž‘ ๋ถˆ๊ฐ€๋Šฅ
    • Photon Animator View: ์œ„์™€ ๊ฐ™์ด ์• ๋‹ˆ๋ฉ”์ดํ„ฐ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋™๊ธฐํ™”. Photon View ์—†์ด๋Š” ๋™์ž‘ ๋ถˆ๊ฐ€๋Šฅ
    • Camera Setup : ์ž์‹ ์˜ ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ๋กœ์ปฌ ์˜ค๋ธŒ์ ํŠธ๋ฉด ์‹œ๋„ค๋จธ์‹  ์นด๋ฉ”๋ผ๊ฐ€ ์ž์‹ ์„ ์ถ”์ ํ•˜๊ฒŒ ํ•จ.
  • ๋กœ์ปฌ ๊ถŒํ•œ ๊ฒ€์‚ฌ
    • photonView.IsMine : ํ˜„์žฌ ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ๋กœ์ปฌ ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ์ธ ๊ฒฝ์šฐ true

RPC

  • ํ˜ธ์ŠคํŠธ์— ์ฒ˜๋ฆฌ๋ฅผ ์œ„์ž„ํ•˜๊ณ  ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋„คํŠธ์›Œํฌ๋ฅผ ๋„˜์–ด ํด๋ผ์ด์–ธํŠธ์— ์ „ํŒŒํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ฒŒ ํ•จ.
  1. ์‚ฌ์šฉ์ž B๊ฐ€ ๋ฐœ์‚ฌ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฆ„
  2. ํด๋ผ์ด์–ธํŠธ B -> ํ˜ธ์ŠคํŠธ A๋กœ RPC(b.shot()) ์ „๋‹ฌ
  3. ํ˜ธ์ŠคํŠธ A์—์„œ b.Shot() ์‹คํ–‰
  • ์ง๋ ฌํ™” ์—ญ์ง๋ ฌํ™”

Resources ํด๋”

  • ์—์…‹์˜ ์‚ฌ์šฉ ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด ํ•ญ์ƒ ๋ฉ”๋ชจ๋ฆฌ์— ํ•ด๋‹น ์—์…‹์„ ๋กœ๋“œํ•จ. ์‹ค์‹œ๊ฐ„์œผ๋กœ ์—์…‹์„ ๊ฐ€์ ธ์™€ ์”€. ๋ฉ”๋ชจ๋ฆฌ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๊ฒƒ์„ ๊ถŒ์žฅ.

Zombie

  • ๋ ˆ์ด์บ์ŠคํŠธ: ๋ณด์ด์ง€ ์•Š๋Š” ๊ด‘์„ ์„ ์˜๊ณ  ๋‹ค๋ฅธ ์ฝœ๋ผ์ด๋”์™€ ์ถฉ๋Œํ•˜๋Š”์ง€ ๊ฒ€์‚ฌ. ์ถฉ๋Œ ์ •๋ณด(์˜ค๋ธŒ์ ํŠธ, ์œ„์น˜, ํ‘œ๋ฉด ๋ฐฉํ–ฅ)๋ฅผ ์ƒ์„ฑ
  • ํŒŒํ‹ฐํด: ํŠน์ˆ˜ ์‹œ๊ฐ ํšจ๊ณผ๋ฅผ ๋งŒ๋“œ๋Š” ์‹œ์Šคํ…œ ์ปดํฌ๋„ŒํŠธ
  • FK: ์ „์ง„ ์šด๋™ํ•™. ๋ถ€๋ชจ ์กฐ์ธํŠธ(์ƒ์œ„ ๊ด€์ ˆ)๊ฐ€ ์›€์ง์ด๋ฉด์„œ ์ž์‹ ์กฐ์ธํŠธ(ํ•˜์œ„ ๊ด€์ ˆ)๋„ ์›€์ง์ž„.
  • IK: ์—ญ ์šด๋™ํ•™. ์ž์‹ ์กฐ์ธํŠธ์˜ ์œ„์น˜๋ฅผ ๋จผ์ € ๊ฒฐ์ •ํ•˜๊ณ  ๋ถ€๋ชจ ์กฐ์ธํŠธ๊ฐ€ ๊ฑฐ๊ธฐ์— ๋งž์ถฐ ๋ณ€ํ˜•๋จ.
  • while ๋ฌดํ•œ ๋ฃจํ”„๋ฌธ์€ ์ฝ”๋ฃจํ‹ด ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์ง€์ •ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ ๋Š” ๊ฒƒ์ด ๊ณผ๋ถ€ํ™”๋ฅผ ์ค„์—ฌ์คŒ.
    • yield return new WaitForSeconds(0.25f);
  • base : ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•œ ๋ฉ”์„œ๋“œ ์‹คํ–‰
  • navMesh: ๊ฒŒ์ž„ ์›”๋“œ์—์„œ navMeshAgent๊ฐ€ ๊ฑธ์–ด๋‹ค๋‹ ํ‘œ๋ฉด. ์ •์  ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ๊ตฌ์›Œ์„œ ์ƒ์„ฑํ•จ.
  • ์• ๋‹ˆ๋ฉ”์ดํ„ฐ
  • GetComponents : ์ปดํฌ๋„ŒํŠธ๋ฅผ 2๊ฐœ ์ด์ƒ ๋ถˆ๋Ÿฌ์˜ด. ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•จ
  • ์‹œ๊ฐ„์˜ ํ๋ฆ„ ๊ธฐ์ค€
  • null ๊ฒ€์‚ฌ
  • ๋ ˆ์ด์–ด๋งˆ์Šคํฌ ์ฝ”๋“œ
  • ์Šคํฌ๋ฆฝํ„ฐ๋ธ” ์˜ค๋ธŒ์ ํŠธ

Unity Manager Scripts

GameManager

  • ๊ฒŒ์ž„์˜ ํ•ต์‹ฌ ๋กœ์ง, ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ์˜ ์ƒ์„ฑ ๋ฐ ์†Œ๋ฉธ, ๊ฒŒ์ž„ ์ƒํƒœ์˜ ๊ด€๋ฆฌ, UI ์—…๋ฐ์ดํŠธ, ์ ์ˆ˜ ๋ฐ ๋ ˆ๋ฒจ ๊ด€๋ฆฌ, ํ”Œ๋ ˆ์ด์–ด ์ž…๋ ฅ ์ฒ˜๋ฆฌ ๋“ฑ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ.
  • ์‹ฑ๊ธ€ํ†ค(Singleton) ํŒจํ„ด์œผ๋กœ ๊ตฌํ˜„๋œ ๋‹จ์ผ ์ธ์Šคํ„ด์Šค

UIManager

  • HUD Canvas: ๊ฒŒ์ž„์˜ ํ™”๋ฉด ์ƒ๋‹จ์— ํ‘œ์‹œ๋˜๋Š” ํ—ค๋“œ์—… ๋””์Šคํ”Œ๋ ˆ์ด(HUD) ์š”์†Œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋นˆ ์˜ค๋ธŒ์ ํŠธ. ํ”Œ๋ ˆ์ด์–ด์˜ ์ƒํƒœ, ์ ์ˆ˜, ์•„์ดํ…œ, ์ƒ๋ช… ๋“ฑ๊ณผ ๊ฐ™์€ ๊ฒŒ์ž„ ์ •๋ณด๋ฅผ ํ‘œ์‹œ

Unity C#

์ž๋™๊ตฌํ˜„ ํ”„๋กœํผํ‹ฐ C#

public float move { get; private set; }
  • ์œ„ ์ฝ”๋“œ๋Š” ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ๊ฐ„๋žตํ™” ํ•œ๊ฒƒ
public float move {
 get { return m_move; }
 private set { m_move = value; }
}

private float m_move;

์†์„ฑ

  • ํ•จ์ˆ˜ ์œ„์— ์ ๋Š” ๋Œ€๊ด„ํ˜ธ๋Š” ์ฃผ๋กœ ํŠน์ •ํ•œ ์†์„ฑ(Attribute)์„ ๋‚˜ํƒ€๋ƒ„.
  • ์†์„ฑ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ด๋ฆ„์œผ๋กœ ๋“ค์–ด๊ฐ.
  • [SerializeField] : ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ€ Inspector ์ฐฝ์—์„œ ํŽธ์ง‘ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•ด์ฃผ๋Š” ์†์„ฑ
  • [Header("Custom Section")] : Inspector ์ฐฝ์—์„œ ๋ณ€์ˆ˜๋“ค์„ ๊ทธ๋ฃนํ™”ํ•˜๊ณ  ์ œ๋ชฉ์„ ์ง€์ •
  • [Range(1, 10)] : ํ•ด๋‹น ๋ณ€์ˆ˜(myFloat)๊ฐ€ ํŠน์ • ๋ฒ”์œ„ ์•ˆ์˜ ๊ฐ’์œผ๋กœ ์„ค์ •๋  ์ˆ˜ ์žˆ๋„๋ก ํ•จ

blender

https://github.com/sunbang123/sunha_report/assets/93497158/b0a886ff-0d66-4c4f-ae49-99e80f22c3b7

  • ๋ฐ์€ ์ฃผํ™ฉ์ƒ‰(๋ชธํ†ต)์ด ๋ฉ”์ธ. shift + LClick์œผ๋กœ ์„ ํƒ
  • ctrl + L : link/transferdata = ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ๊ฒฐํ•˜๊ฑฐ๋‚˜, ๋ณต์‚ฌํ•จ.
  • copy modifier์„ ๋ˆ„๋ฅด๋ฉด modifier๊ฐ€ ๋ณต์‚ฌ๋จ.
  • mirror object๋Š” ๊ฑฐ์šธ ๋ฐ˜์‚ฌ ๊ธฐ์ค€์ด ๋  ์˜ค๋ธŒ์ ํŠธ๋ฅผ ํ‘œ์‹œ

https://github.com/sunbang123/sunha_report/assets/93497158/ac404c3a-0ee3-43ca-8217-12e7bf7baf27

  • ctrl + A -> scale : ๋ชจ๋“  scale์„ 1:1๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค! ์—๋Ÿฌ๊ฐ€ ์•ˆ๋‚˜๊ฒŒ ํ•จ.
  • set origin -> origin to 3D cursor: origin(์ฃผํ™ฉ์ ) ์œ„์น˜๋ฅผ 3D์ปค์„œ ์› ์•ˆ์— ๋‘ 
  • Shift๋กœ ๋ฌผ์ฒด๋ฅผ ์„ ํƒํ•œ ๋’ค ctrl + p set parent to object๋ฅผ ํ•˜๋ฉด ๋งˆ์ง€๋ง‰์— ์„ ํƒํ•œ ๋ฌผ์ฒด๋ฅผ ๋ถ€๋ชจ๋กœ ๋‹ค๋ฅธ ๋ฌผ์ฒด๋“ค์ด ์—ฐ๊ฒฐ๋จ