ํฐ ๋„์›€์ด ๋ ์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค๋ฉด ๋ ๊ฑฐ๋ผ ์ƒ๊ฐํ•จ..ย 

์ผ๋‹จ ์œ ๋ฌผ์˜ ์š”๊ตฌ์‚ฌํ•ญ์€


- ์บ๋ฆญํ„ฐ์˜ ๋Šฅ๋ ฅ์„ ์ƒ์‹œ/์กฐ๊ฑด๋ถ€ ๊ฐ•ํ™”ํ•œ๋‹ค.


์ธ๋ฐย ์ด๊ฒƒ์„ ์ข€๋” ํ™•์žฅํ•˜์—ฌ [ํŠน์ˆ˜ ๋Šฅ๋ ฅ]์ด๋ผ๊ณ  ๊ฐœ์ •ํ•ด๋ณด๋ฉด


- ๋ถˆํŠน์ • ๋‹ค์ˆ˜์˜ ์˜ค๋ธŒ์ ํŠธ์—๊ฒŒ ์ข…์†๋  ์ˆ˜ ์žˆ๋‹ค.ย 


๋ผ๋Š” ์š”๊ตฌ์‚ฌํ•ญ์ด ๋ถ™์–ด. ์ฆ‰,

[ํŠน์ˆ˜ ๋Šฅ๋ ฅ]์ด [์บ๋ฆญํ„ฐ]์—๊ฒŒ ๋ถ™์œผ๋ฉด ํŒจ์‹œ๋ธŒ ์Šคํ‚ฌ์ด

[ํŠน์ˆ˜ ๋Šฅ๋ ฅ]์„ ๊ฐ€์ง„ [์บ๋ฆญํ„ฐ]๊ฐ€ ์ฐฉ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•„์ดํ…œ์ด ์กด์žฌํ•œ๋‹ค๋ฉด [์œ ๋ฌผ]์ด ๋˜๊ฒ ์ง€.


๋˜ํ•œ [ํŠน์ˆ˜ ๋Šฅ๋ ฅ]์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๊ณ ๋ คํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์š”๊ตฌ์‚ฌํ•ญ์ด ํ•„์š”ํ•  ์ˆ˜๋„ ์žˆ์–ด.

- ์•„์ดํ…œ๊ณผ ํšจ๊ณผ๋Š” ์„œ๋กœ ๋…๋ฆฝ์ ์œผ๋กœ ์กฐํ•ฉ๋œ๋‹ค. ( ๋˜‘๊ฐ™์€ ๋ฌด๊ธฐ [๋กฑ์†Œ๋“œ]์— [๊ณต๊ฒฉ์‹œ ํ™”์ƒ] [ํŠน์ •ํ™•๋ฅ ๋กœ ์•„๋จธ๋ธŒ๋ ˆ์ดํฌ] ๊ฐ™์€ ๋ถˆํŠน์ • ๋‹ค์ˆ˜์˜ ํšจ๊ณผ๊ฐ€ ๋ถ™์„ ์ˆ˜ ์žˆ๊ฒ ์ง€. )

- ํšจ๊ณผ์˜ ์„ฑ๋Šฅ์€ ๋ณ€์ˆ˜๋กœ ๋ณด์กด๋œ๋‹ค. ( [๊ณต๊ฒฉ์‹œ ํ™”์ƒ]์ผ ๊ฒฝ์šฐ ํ™”์ƒ ๋„ํŠธ๋ฐ๋ฏธ์ง€๊ฐ€ 10์ธ [ํŠน์ˆ˜ ๋Šฅ๋ ฅ]๋„, 20์ธ [ํŠน์ˆ˜ ๋Šฅ๋ ฅ]๋„ ์žˆ์„ ๊ฒƒ์ž„. )

- ํšจ๊ณผ๊ฐ€ ๋ฐœ๋™๋˜๊ธฐ ์œ„ํ•œ ์กฐ๊ฑด๊ณผ ํšจ๊ณผ๋Š” ์„œ๋กœ ๋…๋ฆฝ์ ์ด๋‹ค. ( ๊ณต๊ฒฉ ์‹œ [ํ™”์ƒ] ์„ ๋‚จ๊ธธ์ˆ˜๋„, [์•„๋จธ๋ธŒ๋ ˆ์ดํฌ]๋ฅผ ๋‚จ๊ธธ ์ˆ˜๋„ ์žˆ๊ฒ ์ง€. )



์ด ๋‹ค์Œ ์š”๊ตฌ์‚ฌํ•ญ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ณผ์ •์€


๊ฒŒ์ž„์— ์˜ํ–ฅ์„ ๋ผ์น˜๋Š” [ํ™”์ƒ]์ด๋‚˜ [์•„๋จธ๋ธŒ๋ ˆ์ดํฌ]๊ฐ™์€ ์ •์˜๋œ ๊ทœ์น™์€ ์ผ์ข…์˜ ํ•จ์ˆ˜๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ์–ด.

ํ•„์š”ํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ์™€ ๋Œ€์ƒ๋งŒ ์ •ํ•ด์ง„๋‹ค๋ฉด ์ˆ˜ํ–‰ํ•ด์•ผ๋˜๋Š” ๋‚ด์šฉ์€ ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด์•ผ.


ํ•˜์ง€๋งŒ ํšจ๊ณผ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ [์กฐ๊ฑด]์€ ๋ณ€์ˆ˜๊ฐ€ ํ•„์š”ํ•ด. ์™œ๋ƒํ•˜๋ฉด ์กฐ๊ฑด์€ ๋น„๊ต ๋Œ€์ƒ์„ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด์•ผ.

๋‚ด๊ฐ€ ์ฐฉ์šฉํ•œ ์œ ๋ฌผ์˜ ํšจ๊ณผ์ธ [๊ณต๊ฒฉ ์‹œ 20%ํ™•๋ฅ ๋กœ ์ ์—๊ฒŒ 204 ๋ฐ๋ฏธ์ง€์˜ ํ™”์ƒ] ์ด๋ž€ ํšจ๊ณผ๋ฅผย 

์ ๊ตฐ์ธ ์Šฌ๋ผ์ž„ A๊ฐ€ ๊ณต๊ฒฉํ•˜์˜€์„ ๋•Œ ๋ฐœ์ƒ์‹œํ‚ค๋ฉด ์•ˆ๋˜์ž–์Œ?


๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด๋Š” [์กฐ๊ฑด]์— ๋ฌด๊ฒŒ๋ฅผ ๋‘ฌ์•ผํ•จ.


๊ทธ๋Ÿฌ๋ฉด ๊ตฌํ˜„ํ•ด์•ผ ๋  ๋‚ด์šฉ์€

- GameEngine์ด ์‚ฌ์ „์— ์ •์˜๋œ [๊ฐ์ฒด๋ฅผ ๋ณ€ํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ]์„ ๋ฉ”์†Œ๋“œ๋กœ ๋ณด์œ ํ•˜๊ณ  ์žˆ๋‹ค. ( ๊ณ„์† ํ™•์žฅ๋  ๊ธฐ๋Šฅ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ต์Šคํ…์…˜์œผ๋กœ ์ถ”๊ฐ€ํ•œ๋‹ค. )

- GameEngine์€ ๊ฒŒ์ž„์˜ ๊ทœ์น™ ์ด๋ฒคํŠธย ์ŠคํŠธ๋ฆผ์„ ๊ทœ์น™ ์ด๋ฒคํŠธย ํƒ€์ž…๋งˆ๋‹ค ๋ณด์œ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ , ํŠน์ • ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ์˜ต์ €๋ฒ„์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.

- ์˜ต์ €๋ฒ„๋Š” ์ด๋ฒคํŠธ ๋ฉ”์„ธ์ง€๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ ์˜ฌ๋ฐ”๋ฅธ ์กฐ๊ฑด์ธ์ง€ ํ™•์ธํ•˜๊ณ , ์˜ฌ๋ฐ”๋ฅด๋‹ค ํŒ๋‹จ๋˜๋ฉด [ํŠน์ˆ˜ ๋Šฅ๋ ฅ]์„ย ์‹คํ–‰ํ•œ๋‹ค.

- GameEngine์€ ๊ฒŒ์ž„์„ ๋™์ž‘์‹œํ‚ค๋ฉฐ, ๊ฒŒ์ž„์—์„œ ํŠน์ • ๊ทœ์น™ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ŠคํŠธ๋ฆผ์— ์ด๋ฒคํŠธ๋ฅผ ํ†ต์ง€ํ•œ๋‹ค.

- [ํŠน์ˆ˜ ๋Šฅ๋ ฅ]์„ ๊ฐ€์ง„ ์•„์ดํ…œ๋“ค์€ [ํŠน์ˆ˜ ๋Šฅ๋ ฅ]์„ ๋™์ž‘์‹œํ‚ค๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์˜ต์ €๋ฒ„์™€ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง„ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ, ์ด๋ฅผย GameEngine์˜ ์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆผ์— ์˜ต์ €๋ฒ„๋ฅผ ๋“ฑ๋กํ•œ๋‹ค.ย 


์™€ ๊ฐ™์ด ๊ตฌํ˜„๋  ์ˆ˜ ์žˆ์Œ. ์—ฌ๊ธฐ์„œย 

์œ ๋ฌผ์ด๋˜, ํŒจ์‹œ๋ธŒ๋˜, ์ด์ œ ๋„ˆ๊ฐ€ ๋งŒ๋“ค ์กฐ๊ฑด๋ถ€ ํšจ๊ณผ ๊ธฐ๋Šฅ์„ ๋ถ€์—ฌํ•˜๋Š” ์•„์ดํ…œ๋“ค์€ ์ด Event-Observable-Observer-Another Eventย ์‚ฌ์ดํด์— ์•Œ๋งž๋Š” ์ •๋ณด๋งŒ ์ฅ๊ณ  ์žˆ์œผ๋ฉด ๋จ.


์•„์ดํ…œ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•๋„ ๋˜ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ

์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์œผ๋ก  ๊ฐœ๋ฐœ์ž๊ฐ€ ์ •์˜ํ•œ ์•„์ดํ…œ ์ •๋ณด ํ…Œ์ด๋ธ”์ด ์กด์žฌํ•˜๊ณ , ์‹ค์ œ ์œ ์ €๊ฐ€ ๊ฒŒ์ž„์„ ํ”Œ๋ ˆ์ดํ•˜๋ฉด์„œ ์ƒ์„ฑ๋˜๋Š” ์•„์ดํ…œ ์ธ์Šคํ„ด์Šค ํ…Œ์ด๋ธ”์ด ์กด์žฌํ•ด์„œ

์ธ์Šคํ„ด์Šค๊ฐ€ ์•„์ดํ…œ ์ •๋ณด id๋ฅผ ํ†ตํ•ด ํ…Œ์ด๋ธ”์— ์ฐธ์กฐํ•ด์˜ค๋Š” ๋ฐฉ์‹์œผ๋กœ ๋งŒ๋“ ๋‹ค ์น˜๋ฉด




์ด๋Ÿฐ์‹์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒ ์ง€? ( ์ƒ๊ฐ์—†์ด ์จ์„œ ํ‹€๋ฆด ์ˆ˜ ์žˆ์Œ. ์˜ต์ €๋ฒ„์™€ ๋ณ€์ˆ˜๋ฅผ ํฌํ•จํ•œ ์˜ค๋ธŒ์ ํŠธ๋ฅผ Property ๋ผ๊ณ  ์ ์–ด๋†“์Œ )


์ด ์‹œ์Šคํ…œ์—์„œ ๋งŒ๋“ค์–ด์งˆ ์œ ๋ฌผ์˜

์ถ”์ƒํ™”๋œ ์˜ˆ๋ฅผ ๋“ค๋ฉด

ย ๋กฑ ์†Œ๋“œ๋Š”

ย ๊ธฐ๋ณธ์ ์œผ๋กœ "๊ณต๊ฒฉ๋ ฅ์ด 10~20 ์ƒ์Šนํ•œ๋‹ค." ๋ผ๋Š” ํšจ๊ณผ๊ฐ€ ์žˆ๊ณ .ย 

ย ๋‹ค์Œ ์กฐ๊ฑด

ย 1. ๊ณต๊ฒฉ๋ ฅ์ด +20 ์ƒ์Šนํ•œ๋‹ค.ย 

ย 2. ์ฐฉ์šฉ์ž์˜ ๋ฏผ์ฒฉ์„ฑ์ด 20์ด์ƒ์ด๋ฉด ๊ณต๊ฒฉ๋ ฅ์ด +15 ๋” ์ƒ์Šนํ•œ๋‹ค.ย 

ย 3. ๊ณต๊ฒฉ ์‹œ 20% ํ™•๋ฅ ๋กœ ์ ์—๊ฒŒ 15์ดˆ๊ฐ„ 1์ดˆ ๊ฐ„๊ฒฉ์œผ๋กœ 24์˜ ํ™”์ƒ ๋ฐ๋ฏธ์ง€๋ฅผ ์ž…ํžŒ๋‹ค.

ย ์ค‘ 1๊ฐœ์˜ ํšจ๊ณผ๊ฐ€ ๋ถ™๋Š”๋‹ค๊ณ  ์นœ๋‹ค๋ฉด


์šฐ์„  ์—”์ง„์—๋Š”

void CharacterAttackUp(int power)

void CharacterAppliedBurn(float rate, int damage, float duration)

๊ณผ ๊ฐ™์€ ์ต์Šคํ…์…˜ ๋ฃฐ์ด ์žˆ์–ด์•ผ ํ•  ๊ฒƒ์ด๊ณ 


์ด๋ฒคํŠธ(Observable)๋Š”

"์บ๋ฆญํ„ฐ ๋Šฅ๋ ฅ์น˜ ๊ฐฑ์‹ " (ํ„ด์ œ๋ผ๋ฉด ํ„ด๋งˆ๋‹ค, ์•ก์…˜๊ฒŒ์ž„์ด๋ผ๋ฉด ํŠน์ • duration๋งˆ๋‹ค ํ†ต์ง€)

"์‹œ๊ฐ„ ํ๋ฆ„" (์—”์ง„์ด ์—…๋ฐ์ดํŠธ ๊ฐ„๊ฒฉ์˜ DeltaTime๋งˆ๋‹ค ํ†ต์ง€)

์ด๋ฒคํŠธ๊ฐ€ ํ•„์š”ํ•  ๊ฒƒ์ด๊ณ 


์กฐ๊ฑด(Observer)์€

OnConditionalStatusUpdate : Observer<"์บ๋ฆญํ„ฐ ๋Šฅ๋ ฅ์น˜ ๊ฐฑ์‹ "> // ์บ๋ฆญํ„ฐ id์™€ ์กฐ๊ฑด ๋Šฅ๋ ฅ์น˜ ํ…Œ์ด๋ธ”์„ย ์ €์žฅํ•ด๋‘๊ณ , ํ˜„์žฌ ๊ทธ ์บ๋ฆญํ„ฐ์˜ ๋Šฅ๋ ฅ์น˜๊ฐ€ ํŠน์ • ๊ฐ’ ์ด์ƒ์ผ ๊ฒฝ์šฐ true

OnElapsedDuration : Observer<"์‹œ๊ฐ„ ํ๋ฆ„"> // ์‹œ๊ฐ„ ํ๋ฆ„์„ ๋ˆ„์ ํ•˜์—ฌ ํŠน์ • ์ฃผ๊ธฐ์— ๋„๋‹ฌ์‹œ trueย 

์„ ๋งŒ๋“ค์–ด์•ผ ๋ ๊ฑฐ์•ผ.


๊ทธ๋ฆฌ๊ณ  ๊ฒŒ์ž„ ๋‚ด์—์„œ

-> ์ƒˆ๋กœ์šด ๋กฑ์†Œ๋“œ๊ฐ€ ์ƒ๊ธฐ๊ฒŒ ๋˜๋ฉด ๋กฑ์†Œ๋“œ ๋ ˆ์ฝ”๋“œ ์•„์ด๋””๋ฅผ ๊ฐ€์ง„ ์•„์ดํ…œ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑ. ์ด ๋กฑ์†Œ๋“œ์—์„  ์ฐฉ์šฉ์‹œ ๋ฐœํœ˜๋˜๋Š” ํšจ๊ณผ์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ณด์œ .

-> ๋กฑ์†Œ๋“œ๋ฅผ ์ฐฉ์šฉํ•œ๋‹ค๋ฉด ๋กฑ์†Œ๋“œ ๋ ˆ์ฝ”๋“œ ์•„์ด๋””์™€ ๋ฐœํœ˜ ํšจ๊ณผ์˜ ์ธ๋ฑ์Šค๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ๋ ˆ์ฝ”๋“œ๋กœ๋ถ€ํ„ฐ Property๋ฅผ ์ƒ์„ฑ

-> GameEngine์˜ Observable ์ŠคํŠธ๋ฆผ์— ๊ตฌ๋….ย ย 

-> ๊ตฌ๋…๋œ Property๋“ค์€ Dispose Observer๊ฐ€ true๊ฐ€ ๋˜๊ธฐ ์ „๊นŒ์ง€ ์—”์ง„ ๋‚ด๋ถ€์—์„œ ์บ๋ฆญํ„ฐ์˜ ์Šคํ…Œ์ดํ„ฐ์Šค๋ฅผ ๊ณ„์† ์—…๋ฐ์ดํŠธ.


์ด๋Ÿฐ ํ˜•์‹์œผ๋กœ ๋งŒ๋“ค๋ฉด ๋จ.