์ƒ์†๊ณผ ์ปดํฌ์ง€์…˜. ๋ฌด์—‡์„ ์„ ํƒํ• ์ง€ ์–ด๋–ป๊ฒŒ ํŒ๋‹จํ•ด์•ผ ํ•˜๋Š”๊ฐ€?

OO์—์„œ ์žฌ์‚ฌ์šฉ์„ฑ์„ ์ค‘์š”์‹œํ•˜๋Š” ์ด์œ 

Donโ€™t reinvent the wheel!

  • ๋ฐ”ํ€ด๋Š” ์ด๋ฏธ ๋™์ž‘๊ณผ ์ƒํƒœ๊ฐ€ ๋ช…ํ™•ํ•œ ๋ฌผ์ฒด
    • ์„ค๊ณ„, ๊ตฌํ˜„, ํ…Œ์ŠคํŒ…๊นŒ์ง€ ๋ชจ๋‘ ๋งˆ์นœ ๋ฌผ์ฒด
  • ์ด๊ฑธ ๊ฐ€์ง€๊ณ  ๋‹ค๋ฅธ ์œ ์šฉํ•œ ๋ฌผ์ฒด๋ฅผ ๋งŒ๋“ค์ž.
    • ์‹œ๊ฐ„ ๋‚ญ๋น„ํ•˜์ง€ ๋ง์ž
    • ์ž๋™์ฐจ, ์ž์ „๊ฑฐ

ํด๋ž˜์Šค๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€ ์ 

์„ค๊ณ„์™€ ์ฝ”๋”ฉ์— ๋“œ๋Š” ์‹œ๊ฐ„์„ ์ ˆ์•ฝ

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

ํ…Œ์ŠคํŠธ์— ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ์ ˆ์•ฝ

  • ์ด๋ฏธ ํ…Œ์ŠคํŠธ๊นŒ์ง€ ๋๋‚ธ ํด๋ž˜์Šค๋ฅผ ๋‹ค์‹œ ํ…Œ์ŠคํŠธํ•  ํ•„์š”๊ฐ€ ์—†์Œ
  • ์ƒ์†์‹œ ๋ถ€๋ชจ ํด๋ž˜์Šค๋Š” ์ด๋ฏธ ํ…Œ์ŠคํŠธ๊ฐ€ ๋๋‚œ ์ƒํ™ฉ
  • ๋ถ€๋ชจ ํด๋ž˜์Šค๋Š” ํ…Œ์ŠคํŠธ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๊ณ  ์ฃผ์žฅ๋„ ํ•˜๋Š” ํŽธ
  • ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ๊ฐ€ ๋นˆ๋ฒˆ
    • ์ƒˆ๋กœ์šด ๋ฐฉ๋ฒ•์œผ๋กœ ๋ถ€๋ชจ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Œ
    • ๋ถ€๋ชจ ํด๋ž˜์Šค๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜๋„ ์žˆ์Œ

๊ด€๋ฆฌ ๋น„์šฉ์„ ์ ˆ์•ฝ

  • ์ฝ”๋“œ ์ค‘๋ณต์ด ์—†์Œ
    • ํ•œ ๊ณณ๋งŒ ๊ณ ์น˜๊ณ  ๋‹ค๋ฅธ ๊ณณ์„ ์‹ค์ˆ˜๋กœ ์•ˆ ๊ณ ์น  ๊ฐ€๋Šฅ์„ฑ์ด ์—†์Œ
  • ๊ด€๋ จ๋œ ์ฝ”๋“œ๊ฐ€ ๋ชจ๋‘ ํ•œ ํŒŒ์ผ์— ์žˆ์Œ
    • ํ•ด๋‹น ํŒŒ์ผ์„ ์—ด๋ฉด ๋ชจ๋“  ๋กœ์ง ๋ฐ ๋ฐ์ดํ„ฐ ํŒŒ์•… ๊ฐ€๋Šฅ
    • ๋‹ค๋งŒ, ์žฌ์‚ฌ์šฉ์„ฑ์„ ์œ„ํ•ด ํด๋ž˜์Šค๋ฅผ ์ž˜๊ฒŒ ๋‚˜๋ˆ„๋‹ค๋ณด๋ฉด ํŒŒ์ผ ์ˆ˜๊ฐ€ ๋งŽ์•„์ง

OO ๋ชจ๋ธ๋ง์€ ๋งŽ์€ ์—ฐ์Šต์ด ํ•„์š”

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

์ƒ์† vs ์ปดํฌ์ง€์…˜

  • ๋‘˜ ๋‹ค ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋ชฉ์ 
  • ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ณ ๋ฅธ ์›์น™์ด ํ•„์š”

์„ฑ๋Šฅ์  ์ธก๋ฉด

  • ๋ฉ”๋ชจ๋ฆฌ ๋ฌธ์ œ: ์ƒ์†์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ณด๋‹ค ์ข‹๋‹ค.
  • ๊ฐœ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉด, ๋ฉ”๋ชจ๋ฆฌ์— ํ•˜๋‚˜์˜ ๋ฉ์–ด๋ฆฌ๋กœ ๋“ค์–ด๊ฐ€๊ฒŒ ๋จ
  • ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ ๋ฉ”๋ชจ๋ฆฌ์— ๋“ค์–ด๊ฐ€๋Š” ๋ฐฉ์‹์ด ๋ณ€ํ•˜๊ฒŒ ๋œ๋‹ค.
  • Rectangle์˜ ๊ฒฝ์šฐ ๊ฐ€๋กœ ์„ธ๋กœ๋ฅผ ํ‘œํ˜„ํ•˜๊ณ , Box๋Š” ๊นŠ์ด๊นŒ์ง€ ํ‘œํ˜„ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ง ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž.

// Inheritance
Box box = new Box(10, 20, 30);
 
// Composition
Rectangle rectangle = new Rectangle(10, 20);
Box box = new Box(rectangle, 30);
  • ์ƒ์†๊ฐ™์€ ๊ฒฝ์šฐ ์ƒˆ๋กœ์šด ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“ค๋ฉด(new), ๋‚ด๋ถ€์—์„œ ๋‹ค๋ฅธ ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ํ•œ ๋ฉ์–ด๋ฆฌ๋กœ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ํ•œ๋‹ค.
  • ๊ทธ์™€ ๋ฐ˜๋Œ€๋กœ ์ปดํฌ์ง€์…˜์€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์—ฌ๋Ÿฌ ๋ฉ์–ด๋ฆฌ๋กœ ์ƒ์„ฑ์ด ๋  ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹ค๋ฅธ ๊ฐœ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋„˜๊ฒจ์ฃผ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ฐธ์กฐํ•œ ์ฃผ์†Œ๋งŒ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ฒฐ๊ตญ์€ ๋‹ค๋ฅธ ๊ณณ์— ๋ฉ”๋ชจ๋ฆฌ ๋ฉ์–ด๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.
  • ์ฆ‰, ์—ฌ๊ธฐ์„œ ์•Œ ์ˆ˜ ์žˆ๋Š” ์ ์€ ์ƒ์†๊ณผ ์ปดํฌ์ง€์…˜์—์„œ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ์ด๋Š” ์‹คํ–‰ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค.
  • ๊ทธ๋ ‡๊ธฐ์— ์„ฑ๋Šฅ์„ ์ฃผ์š”์‹œ ํ•˜๋Š” ์ž‘์—…์˜ ๊ฒฝ์šฐ์—๋Š” ๊ณ ๋ คํ•ด์•ผํ•˜๋Š” ๋Œ€์ƒ์œผ๋กœ ๋ณ€๋ชจํ•œ๋‹ค.

์ฒซ๋ฒˆ์งธ ๋ณ‘๋ชฉ์  (์บ์‹œ ์ตœ์ ํ™”)

CPU์™€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด์˜ ๋ฐ์ดํ„ฐ ์ „์†ก

  • ๋ฉ”๋ชจ๋ฆฌ โ†’ ๋ฒ„์Šค(CPU์ชฝ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ด๋™ํ•ด์ฃผ๋Š” ๋…€์„) โ†’ CPU
  • ์—ฌ๊ธฐ์„œ CPU ์ฒ˜๋ฆฌ ์†๋„, ๋ฐ์ดํ„ฐ ์ด๋™ ์†๋„๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ๋˜์–ด ๋ณ‘๋ชฉ์ด ์ƒ๊ธด๋‹ค.
  • ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ ์ž ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์žˆ๋Š” ๊ฒƒ.
  • ๋งจ๋‚  ๊ณ„์‚ฐํ•˜๊ณ  ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ๋ฉ”๋ชจ๋ฆฌํ•œํ…Œ ์š”์ฒญ, ๋ฒ„์Šคํƒ€๊ณ  ์ด๋™, ์—ฐ์‚ฐ ์ด๋ ‡๊ฒŒ ํ•˜๋‹ค๋ณด๋ฉด ๋„ˆ๋ฌด ์˜ค๋ž˜๊ฑธ๋ฆฌ๋‹ˆ,
  • ์–ด์ฐจํ”ผ 4kb ๊ณ„์‚ฐ์œ„ํ•ด ์ฝ์–ด์˜ฌ ๊ฑฐ๋ฉด ํ•œ๋ฒˆ์— ์ฝ์–ด์˜ค๊ณ , ์บ์‹œ์ชฝ์— ์ €์žฅํ•ด๋‘๋Š”๊ฒŒ ๋” ๋น ๋ฅด๋‹ค๋Š” ๊ฒƒ
  • ์ด๋Ÿฐ ๊ฑธ CPU ์ตœ์ ํ™”๋ผ๊ณ  ํ•œ๋‹ค. ์š”์ฆ˜์€ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ณ„์† ์ฆ๊ฐ€ํ•˜๋Š” ์ถ”์„ธ. CPU ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋งŽ์ด ์ค€๋‹ค๋Š” ๋ฐ˜์ฆ์ด๊ฒ ์ง€?
  • ์ด๋Ÿฌํ•œ ์ ์—์„œ ์ƒ์† ๋ชจ๋ธ๋กœ ๋งŒ๋“  ๊ฐœ์ฒด๋Š” ํ•œ๋ฒˆ์— ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ์— ๋“ค์–ด๊ฐˆ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.
  • ์ปดํฌ์ง€์…˜ ๋ชจ๋ธ๋กœ ๋งŒ๋“  ๊ฐœ์ฒด์˜ ๊ฒฝ์šฐ ๊ฐœ์ฒด ๋‚ด ๋ถ€ํ’ˆ ์ˆ˜๋งŒํผ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋กœ๋”ฉํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.

๋‘๋ฒˆ์งธ ๋ณ‘๋ชฉ์  (๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น/ํ•ด์ œ)

  • ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น(new)๊ณผ ํ•ด์ œ(delete, release)
  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ๋”ฐ๋ผ ๋‘˜ ์ค‘ ํŠนํžˆ ๋Š๋ฆฐ ๊ฒƒ์ด โ€œ๋ฐ˜๋“œ์‹œโ€ ์žˆ๋‹ค. (์ด๋ถ€๋ถ„ ํ™•์ธ ํ•„์š”)
  • ์ƒ์†์€ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๊ณผ ํ•ด์ฒด๊ฐ€ ๋”ฑ ํ•œ๋ฒˆ์”ฉ ์ƒ๊ธด๋‹ค.
  • ์ปดํฌ์ง€์…˜์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐ”๊นฅ์ชฝ ๋งŒ๋“ค๋•Œ ํ•œ๋ฒˆ, ๋ถ€ํ’ˆ ์ˆ˜๋งŒํผ์”ฉ ์ถ”๊ฐ€๋กœ ํ•„์š”ํ•˜๋‹ค.

๋‹คํ˜•์„ฑ

  • ๋‹คํ˜•์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ํ•˜์œ„ ๊ฐœ์ฒด์— ๋™์‹œ์— ๋ช…๋ น์„ ๋‚ด๋ฆฌ๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ: ์ƒ์† ์‚ฌ์šฉ

์œ ์ง€๋ณด์ˆ˜

  • ๊ด€๋ฆฌ์˜ ํšจ์œจ์„ฑ์„ ์œ„ํ•ด ํŠน์ • ๋ฐฉ์‹์œผ๋กœ ๊ฐ€๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

์ƒ์†์ด ๋‚˜์€ ๊ฒฝ์šฐ

  • ์ปดํฌ์ง€์…˜์œผ๋กœ ๊ฐ€๊ฒŒ ๋˜์—ˆ์„ ๋•Œ, ์˜คํžˆ๋ ค ์ฝ”๋“œ๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ
  • ๊ฒฐ๊ตญ ์กฐ๋ฆฝํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ์ฒด์—์„œ ๋ถ€ํ’ˆ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์„œ ๊ฐ’์„ ๊ฐ€์ ธ์™€์•ผ ํ•œ๋‹ค๋ฉด, ํ•„์š”์—†๋Š” signature๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.
  • ๋ฆด๋ ˆ์ด ํ•จ์ˆ˜ (ํ•˜์œ„์—์„œ ๊ฐ’๋งŒ ๊ฐ€์ ธ์™€์„œ ๋„˜๊ฒจ์ฃผ๋Š”)๊ฐ€ ์ƒ๊ธฐ๊ฒŒ ๋œ๋‹ค.

์ปดํฌ์ง€์…˜์ด ๋‚˜์€ ๊ฒฝ์šฐ

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

๊ทธ์™ธ ์ผ๋ฐ˜์ ์ธ ์ƒํ™ฉ

  • ์ƒ์‹์ ์œผ๋กœ ์ƒ๊ฐํ•  ๊ฒƒ
  • ์ด ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋Š” ์ดํ•ด๊ด€๊ณ„์ž๋“ค ๊ฐ„์˜ ๊ณตํ†ต๋œ ํ•ฉ์˜๋ฅผ ์ƒ๊ฐํ•˜์ž.
  • has-a: ์ปดํฌ์ง€์…˜ - ๊ฐœ๋…์ด ๋ถ„๋ฆฌ๋˜๋Š” ๊ฒƒ์ด ๋งž๋‹ค๋ฉด
  • is-a: ์ƒ์† - ๊ฐœ๋…์ด ํฌํ•จ๋˜๋Š” ๊ฒƒ์ด ๋งž๋‹ค๋ฉด

Entity Component System(ECS)

  • ์ปดํฌ์ง€์…˜์„ ์„ ํ˜ธํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ์˜ˆ
  • ์ฝ”๋“œ ๋ณ€๊ฒฝ ์—†์ด ์ž์œ ๋กญ๊ฒŒ ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ 
  • ์•„ํ‚คํ…์ณ ํŒจํ„ด ์ค‘ ํ•˜๋‚˜๋‹ค.
  • ๊ฒŒ์ž„ ์—…๊ฒŒ์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค. (Unity3D)
  • ๊ฒŒ์ž„์—์„œ ๊ฐœ์ฒด ์„ค๊ณ„๋ฅผ ํ•˜๋ ค๋ฉด ๊นŠ์€ ์ƒ์†์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.
    • GameObject โ† PhysicsObject โ† Character โ† Playerโ€ฆ
  • ๊ทธ๋Ÿฐ๋ฐ ๊ทธ๋Ÿฌ๋‹ค ๋ณด๋‹ˆ ๊ธฐํš์—์„œ ๋ณ€๊ฒฝ์ด ๋“ค์–ด์™”์„ ๋•Œ, ์ด๋ฅผ ๋ฐ”๊พธ๋Š”๊ฒŒ ์ƒ๋‹นํžˆ ๊ท€์ฐฎ์€ ์ž‘์—…์ด ๋  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฐœ๋ฐœ์ž: ์™œ ๊ธฐํš์—์„œ ์ดˆ์ฐฝ๊ธฐ์— ํ™•์ธ์„ ์•ˆํ•˜์ง€?
  • ๊ธฐํš์ž: ์•ˆํ•ด๋ณด๊ณ  ์–ด๋–ป๊ฒŒ ํŒ๋‹จ?
  • ์—…๋ฌด ํšจ์œจ์„ฑ์ด ๋งค์šฐ ๋–จ์–ด์ง.

๋ฌธ์ œ: ์žฌ์ปดํŒŒ์ผ ์—†์ด ๊ธฐํš์ž๊ฐ€ ์›ํ•˜๋Š” ๋Œ€๋กœ ๊ฐœ์ฒด๋ฅผ ์กฐ๋ฆฝํ•  ์ˆ˜ ์—†์„๊นŒ?

  • Entitiy Component System
  • GameObject๋Š” Component๋ฅผ List๋กœ ๋“ค๊ณ  ์žˆ๋‹ค.
  • ๊ฐ๊ฐ์€ update()ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ overrideํ•˜์—ฌ ์ƒํ™ฉ์— ๋งž๊ฒŒ ๊ตฌํ˜„ํ•œ๋‹ค.
  • ์—ฌ๊ธฐ์„œ ์ƒ๊ฐํ•ด์•ผ ํ•  ๊ฒƒ์€, NPC, Player, Effect์™€ ๊ฐ™์€ ํด๋ž˜์Šค๊ฐ€ ์‚ฌ๋ผ์กŒ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
    • ๋ณด๋‹ค ์ผ๋ฐ˜ํ™”๋œ ๊ฐœ๋…์œผ๋กœ ์ž๋ฆฌ์žก์•„๋‘๊ณ  ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ์Œ
    • ์ด Component๋ฅผ ์กฐ๋ฆฝํ•œ ๊ฒฐ๊ณผ๋กœ, NPC, Player์™€ ๊ฐ™์€ ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ

Reference