[Unity3D] EscapeFROM

al_potatoยท2022๋…„ 3์›” 14์ผ
0

Unity

๋ชฉ๋ก ๋ณด๊ธฐ
1/2
post-thumbnail

Unity 3D๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งŒ๋“  ๊ฒŒ์ž„ [EscapeFROM]

๐Ÿ•ฏEscpae FROM ๐Ÿ”ฆ
๊ด‘์‹ ๋„๋“ค์—๊ฒŒ๐ŸงŸโ€โ™‚๏ธ ์žกํžŒ ์ฃผ์ธ๊ณต.

์ปจํ…Œ์ด๋„ˆ ๋ฐ•์Šค์— ๊ฐ‡ํžˆ๊ฒŒ ๋œ๋‹คโ›“

์ œํ•œ๋œ ์‹œ๊ฐ„โฑ ์•ˆ์— ์•ˆ์ „ํ•˜๊ฒŒ ํƒˆ์ถœํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ๐Ÿ‘ฃ

์ปจํ…Œ์ด๋„ˆ ๋ฐ•์Šค์—์„œ ํžŒํŠธ๐Ÿ”‘๋ฅผ ์ฐพ๊ณ  ํƒˆ์ถœํ•˜์žโ—๏ธ




1. ์ œ์ž‘๊ธฐ๊ฐ„

  • EscapeFROM : 2020.11.05 ~ 2020.12.01
  • EscapeFROM_Extended : 2021.01 ~ 2022.04

2. ์‚ฌ์šฉํ•œ ํˆด

  • Unity3D 2019.4.4f1 (์ฐจํ›„ 2020.3.29f1๋กœ ๋ณ€๊ฒฝ)
  • Visual studio

3. ์ฐธ์—ฌ์ธ์›

  • 2๋ช… (ํ”„๋กœ๊ทธ๋ž˜๋จธ)

4. ๊ฒŒ์ž„์„ ๋งŒ๋“ค๊ฒŒ ๋œ ๋™๊ธฐ

  • ๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐ ๊ทธ๋ž˜ํ”ฝ์Šค ์ˆ˜์—… ํ”„๋กœ์ ํŠธ๋กœ ๋งŒ๋“ค๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.
    Unity, Unreal Engine, OpenGL ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์—ฌ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ณผ์ œ์˜€๋Š”๋ฐ ๋‚˜๋ž‘ ๋™๊ธฐ๋Š” Unity๋ฅผ ์„ ํƒํ•˜์—ฌ ๊ฒŒ์ž„์„ ๋งŒ๋“ค๊ธฐ๋กœ ํ–ˆ๋‹ค.
  • ํ‰์†Œ์— ๋ฐ”์ด์˜คํ•˜์ž๋“œ, ๋ผ์ŠคํŠธ ์˜ค๋ธŒ ์–ด์Šค ๊ฐ™์€ ์„œ๋ฐ”์ด๋ฒŒ ํ˜ธ๋Ÿฌ ๊ฒŒ์ž„์„ ์ข‹์•„ํ•ด์„œ ๊ทธ๋Ÿฐ๋ฅ˜์˜ ๊ฒŒ์ž„์„ ๋งŒ๋“ค์–ด ๋ณด๊ณ ์‹ถ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ–ˆ์—ˆ๋‹ค. ์ด๋ฒˆ ๊ณผ์ œ์—์„œ ๊ทธ๋Ÿฐ ๊ฒŒ์ž„์„ ๋งŒ๋“ค์–ด๋ณด๋ฉด ์–ด๋–จ๊นŒํ•˜์—ฌ EscapeFROM์„ ์ œ์ž‘ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

5. ๊ฒŒ์ž„์„ ๋งŒ๋“ค๋ฉด์„œ ์–ด๋ ค์› ๋˜ ์ 

  • EscapeFROM์€ ์ฒ˜์Œ์œผ๋กœ ์ œ์ž‘ํ•ด๋ณธ 3D๊ฒŒ์ž„์ด๊ธฐ๋„ ํ•˜์˜€๊ณ , ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๊ตฌ์ƒํ•˜์—ฌ ๊ฒŒ์ž„์„ ๋งŒ๋“ค์–ด๋ณธ ๊ฒƒ์ด ์ฒ˜์Œ์ด๋ผ์„œ ์šฐ์—ฌ๊ณก์ ˆ์ด ๋งŽ์•˜๋‹ค.
  • ๊ฒŒ์ž„์„ ์ œ์ž‘ํ•˜๋ฉด์„œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ชฝ์—์„œ ๊ธฐ์กด 2D์—์„œ ์ผ๋˜ ๋ฐฉ์‹์ธ Bool ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์กฐ์ ˆํ•˜์˜€๋Š”๋ฐ, 3D์—์„œ๋Š” trigger๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข€ ๋” ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•˜์—ฌ ์ด ๋ถ€๋ถ„์ด ์•„์‰ฌ์› ๋‹ค. Animation ์—ฐ๊ฒฐ์„ ์ข€ ๋” ๊ณต๋ถ€ํ•˜๊ณ  ๋‚˜์ค‘์— trigger๋กœ ๋ฐ”๊พธ๋Š” ํŽธ์ด ์ข‹์„์ง€ ๊ณ ๋ ค์ค‘์ด๋‹ค.

6. ๊ฒŒ์ž„์„ ๋งŒ๋“ค๋ฉด์„œ ์ฆ๊ฑฐ์› ๋˜ ์ 

  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ชฝ์—์„œ ์ฆ๊ฑฐ์› ๋˜ ์ ์€ ์ง์ ‘ ๊ตฌํ˜„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ƒ๊ฐํ•œ๋Œ€๋กœ ๋™์ž‘ํ•  ๋•Œ๊ฐ€ ์ œ์ผ ์ฆ๊ฑฐ์› ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์ฐจ์šฉํ•œ ์Šคํฌ๋ฆฝํŠธ๋“ค์„ ์šฐ๋ฆฌ๊ฐ€ ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ˆ˜์ •ํ•  ๋•Œ ์ฐจ์šฉํ•œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์™„์ „ํ•˜๊ฒŒ ์ดํ•ดํ•˜๊ณ  ๊ทธ ํ‹€์— ๋งž๊ฒŒ ์ˆ˜์ •ํ•˜๋Š” ๋ถ€๋ถ„์ด ์–ด๋ ต๊ธฐ๋„ ํ–ˆ์ง€๋งŒ ์ด๊ฒƒ์ €๊ฒƒ ์‹œ๋„ํ•ด๋ณด๋ฉด์„œ ๋งž๊ฒŒ ๊ตฌํ˜„ํ•ด๋‚ผ๋•Œ ์พŒ๊ฐ์„ ๋Š๋ผ๊ธฐ๋„ ํ–ˆ๋‹ค.
  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์•„๋‹Œ ๋ถ€๋ถ„์—์„œ ์ฆ๊ฑฐ์› ๋˜ ์ ์€ ๊ฒŒ์ž„ ๋‚ด์—์„œ ๊ด‘์‹ ๋„์˜ ์šฐ๋‘๋จธ๋ฆฌ๊ฐ€ ์—ฐ์„ค์„ ํ•˜๋Š” ๋ถ€๋ถ„์„ ํ•™๊ต ๋™๊ธฐ์˜ ์นœ๊ตฌ๋ถ„์ด ๋…น์Œํ•˜๊ณ  ๋ชฉ์†Œ๋ฆฌ๋ฅผ ๋ณ€์กฐํ•˜์—ฌ ๋ณด๋‚ด์ฃผ์…”์„œ ๊ทธ ๋ถ€๋ถ„์„ ๊ฒŒ์ž„์— ๋„ฃ๋Š” ๊ฒƒ๋„ ์žฌ๋ฐŒ์—ˆ๊ณ , ๊ฒŒ์ž„ ๋ถ„์œ„๊ธฐ์— ๋งž๋Š” ์—์…‹๋“ค์„ ์ฐพ์•„๋ณด๊ณ  ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ๋„ ์žฌ๋ฏธ์žˆ์—ˆ๋‹ค.

7. ๊ฒŒ์ž„์„ ๋งŒ๋“ค๋ฉด์„œ ์‹คํŒจํ•œ ๋ถ€๋ถ„

  • ์ฒ˜์Œ์— ๋งŒ๋“ค์—ˆ๋˜ EscapeFROM์—๋Š” ์ŠˆํŒ…์„ ๋„ฃ์ง€ ์•Š๊ณ  ๋ฐฉํƒˆ์ถœ ์ปจ์…‰ํŠธ์™€ ์ข€๋น„๋ฅผ ๋„๋ผ๋กœ ์ฃฝ์ด๋Š” ๋“ฑ์˜ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์˜€๋Š”๋ฐ, EscapeFROM_Extended์—์„œ๋Š” ์ข€ ๋” ์žฌ๋ฏธ๋ฅผ ๊ฐ€๋ฏธํ•ด ๋ณด๊ณ ์ž ์ŠˆํŒ…์„ ์ถ”๊ฐ€ํ•˜์˜€๋‹ค. FPS ์ชฝ์€ ์ฒ˜์Œ ๋งŒ๋“ค์–ด๋ด์„œ ์œ ํŠœ๋ธŒ๋‚˜ ๊ตฌ๊ธ€์„ ๋งŽ์ด ๊ฒ€์ƒ‰ํ•ด์„œ ์ฐธ๊ณ ๋ฅผ ํ•˜์—ฌ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ ์ƒ๊ฐ๋งŒํผ ์ •๋ฐ€ํ•œ ์ŠˆํŒ…์€ ๋‚˜์˜ค์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™๋‹ค. ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ถ€๋ถ„์—์„œ ์ด์„ ์˜๋Š” ์ž์„ธ, ์žฅ์ „ํ•˜๋Š” ์ž์„ธ๊ฐ€ ๋งˆ์Œ์— ๋“œ๋Š” ์—์…‹์ด ์—†์—ˆ๋˜ ๊ฒƒ๋„ ๋ฌธ์ œ์˜€๋‹ค. ๋งˆ์šฐ์Šค๋ฅผ ๊พน ๋ˆ„๋ฅด๊ฒŒ ํ•˜๋ฉด ์ด์ด ๊ณ„์† ๋‚˜๊ฐˆ์ง€ ์•„๋‹ˆ๋ฉด ๋‹จ๋ฐœ๋กœ ๋‚˜๊ฐ€๊ฒŒ ํ• ์ง€๋„ ๊ณ ๋ฏผ์ด์—ˆ๋‹ค. ๊ณ„์† ์ˆ˜์ •์„ ํ•ด๋ดค์ง€๋งŒ ์•„์ง ์–ด์ •์ฉกํ•˜๊ฒŒ ์ด์„ ์ด์„œ ๊ทธ ๋ถ€๋ถ„์ด ์ข€ ์•„์‰ฝ๊ณ  ๋‹ค์Œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ŠˆํŒ…๊ฒŒ์ž„์œผ๋กœ ํ•ด์„œ FPS์ชฝ ๊ฒŒ์ž„๋„ ์ž˜ ๋งŒ๋“ค์–ด๋ณด๊ณ  ์‹ถ๋‹ค.

  • ์ „์ฒดํ™”๋ฉด์„ ํ•˜๋ฉด ์บ๋ฆญํ„ฐ์˜ run speed๋‚˜ walk speed๊ฐ€ ๋Š๋ ค์ง€๋ฉด์„œ ์ฒœ์ฒœํžˆ ์›€์ง์ด๊ฒŒ ๋˜๋Š”๋ฐ ์œ ๋‹ˆํ‹ฐ ๋ฒ„๊ทธ์ธ์ง€ ์ฐฝ๋ชจ๋“œ๋ฅผ ํ•˜๋ฉด ๊ดœ์ฐฎ๋‹ค... ์™œ๊ทธ๋Ÿฐ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค..

8. ์ฐจ์šฉํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜

1) Object Pool

  • ๊ฒŒ์ž„์— ํ•„์š”ํ•œ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•ด์„œ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ๊บผ๋‚ด์“ฐ๊ณ  ์‚ฌ์šฉ์ด ๋๋‚˜๋ฉด ์˜ค๋ธŒ์ ํŠธ ํ’€์— ๋Œ๋ ค์ฃผ๋Š” ๊ฒƒ
  • ๊ฒŒ์ž„์— ํ•„์š”ํ•œ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•ด๋†“๊ณ , ๋ชจ์ž๋ผ๋ฉด ์ถ”๊ฐ€๋กœ ์ƒ์„ฑํ•˜์—ฌ ์“ฐ๊ณ  ๊ฒŒ์ž„์ด ๋๋‚˜๋ฉด ํŒŒ๊ดดํ•˜๋Š” ๋ฐฉ์‹
  • ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ object pool์—์„œ๋Š” ์“ฐ๊ณ  ๋ฐ”๋กœ destroy ํ•˜์ง€ ์•Š๊ณ  active false ํ•ด์ฃผ์—ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ํ•„์š”ํ•  ๋•Œ active๊ฐ€ false๋œ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ฐพ๊ณ  ๊ทธ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋‹ค์‹œ active true ํ•ด์ฃผ์—ˆ๋‹ค.
  • ํ•™์›์—์„œ ๋ฐฐ์› ๋˜ ๊ฐ•์‚ฌ๋‹˜์˜ object pool์„ ์ฐจ์šฉํ•˜์—ฌ ์ž‘์—…ํ–ˆ๋‹ค.
    (https://github.com/akpil/Unity-1908/blob/master/Shooting/Assets/Scripts/Pool/OBJPool.cs)

2) Monster FSM

  • ๊ธฐ์กด์— switch ๋ฌธ๊ณผ coroutine์„ ์‚ฌ์šฉํ•˜์—ฌ์„œ ์ž‘์—…ํ–ˆ์—ˆ๋Š”๋ฐ ์ข€๋น„๊ฐ€ ๋‘ ์ข…๋ฅ˜๊ฐ€ ๋˜๋ฉด์„œ ํ†ตํ•ฉ๋œ base enemy ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ํŒ๋‹จ๋˜์–ด FSM์„ ๋ณ€๊ฒฝํ•˜์˜€๋‹ค.
  • Enemy base, Enemy Melee, Enemy ์ˆœ์œผ๋กœ ์ƒ์†๋ฐ›๋Š”๋‹ค.
  • ์œ ํŠœ๋ธŒ๋ฅผ ์ฐธ์กฐํ•ด์„œ ์ž‘์—…ํ–ˆ๋‹ค.
    (https://www.youtube.com/watch?v=mHYroWpIIP0&t=118s)

=> ์ž‘๋…„ ์ธํ„ด ๋ฉด์ ‘ ๋•Œ FSM์˜ ๋‹จ์ ์— ๋Œ€ํ•ด์„œ ๋ฌผ์–ด๋ณด์‹œ๊ณ  ์ตœ๊ทผ FSM์ด ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋ฐ”๋€Œ๊ณ  ์žˆ๋Š”๊ฑธ ์•„๋Š”์ง€ ์—ฌ์ญค๋ณด์…จ๋Š”๋ฐ ๋Œ€๋‹ต์„ ๋ชปํ–ˆ์Œ ใ… ใ… ... ๊ทธ๋•Œ ๋ฐ”๋€Œ๊ณ  ์žˆ๋Š”๊ฒŒ ๋ญ”์ง€ ์—ฌ์ญค๋ดค์–ด์•ผํ•˜๋Š”๋ฐ,,, behavior tree์ธ๊ฐ€,,

3) Mouse Rotation

  • 1์ธ์นญ ์‹œ์ ์—์„œ ๋งˆ์šฐ์Šค์— ์˜ํ•ด ์นด๋ฉ”๋ผ๋ฅผ ํšŒ์ „์‹œํ‚ค๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ฐจ์šฉํ•ด์„œ ์ž‘์—…ํ•˜์˜€๋‹ค.
    (https://wergia.tistory.com/230)

4) Inventory & Crafting

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