Skip to content

NonnaKwon/OptimizationDoc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

6 Commits
ย 
ย 
ย 
ย 

Repository files navigation

๋ชจ๋ฐ”์ผ ๊ฒŒ์ž„ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ฐฉ๋ฒ• ๋ณด๊ณ ์„œ

๐Ÿ”Ž ๋ชฉ์ฐจ

Profiling
Memory
Adaptive Performance
Programming and code architecture
Project configuration
Assets
Graphics and GPU optimization
User interface(UI)
Audio
Animation
Physics




Profiling

ํ”„๋กœํŒŒ์ผ๋Ÿฌ : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ ์ •๋ณด๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ํˆด์ด๋‹ค.

1. ๋งน๋ชฉ์ ์œผ๋กœ ํ•˜์ง€ ๋ง ๊ฒƒ.

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


2. ์ถœ์‹œ ์ง์ „์— ํ”„๋กœํŒŒ์ผ๋งํ•˜๋ฉด ์ผ์ด ํฌ๊ฒŒ๋œ๋‹ค.

๋งˆ์ง€๋ง‰ ๋‹ค ๋˜์–ด์„œ ๋นŒ๋“œํ•  ๋•Œ๊ฐ€ ๋˜์—ˆ์„ ๋•Œ ํ”„๋กœํŒŒ์ผ๋งํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด ๋ชจ๋“  ๊ฐœ๋ฐœ์„ ๋งˆ์น˜๊ณ  ํ”„๋กœํŒŒ์ผ๋ง์„ ํ•ด๋ดค๋Š”๋ฐ ์‰์ด๋”์—์„œ ์„ฑ๋Šฅ ์ด์Šˆ๊ฐ€ ๋‚ฌ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.
์ด๋ฏธ ๊ฑฐ์˜ ๋‹ค ํ•œ ํ”„๋กœ์ ํŠธ์— ๋ฆฌ์†Œ์Šค๋“ค์„ ๊ฐˆ์•„์—Ž์–ด์•ผํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•œ๋‹ค. ์ผ์ •์ด ๋‹ค ๋ฏธ๋ค„์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.


์ˆ˜์‹œ๋กœ ํ”„๋กœํŒŒ์ผ๋ง์„ ํ•ด์•ผํ•œ๋‹ค.
๊ทธ๋ž˜์•ผ ์ถœ์‹œ ๋ง‰ํŒ์— ๊ฐ€์„œ ๋ถˆ์ƒ์‚ฌ๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š๋Š”๋‹ค.


3. ํ”„๋กœํŒŒ์ผ๋งํ• ๋•Œ ํƒ€๊ฒŸ ๋””๋ฐ”์ด์Šค์—์„œ ๋Œ๋ ค์•ผํ•œ๋‹ค.

PC์„ฑ๋Šฅ, ํœด๋Œ€ํฐ์˜ ์„ฑ๋Šฅ์ด ๋‹ค๋ฅด๊ธฐ๋•Œ๋ฌธ์— ๊ฐ ๋””๋ฐ”์ด์Šค์—์„œ์˜ ๋ณ‘๋ชฉ์ง€์ ์ด ๋‹ฌ๋ผ์ง„๋‹ค.
์—๋””ํ„ฐ์—์„œ ์ธก์ •ํ•œ ์„ฑ๋Šฅ์€ ๋Ÿฌํ”„ํ•œ ์šฉ๋„๋กœ ๋ณผ ์ˆ˜๋Š” ์žˆ์ง€๋งŒ, ์‹ค์ œ ๊ธฐ๊ธฐ์—์„œ์˜ ์ƒํ™ฉ์€ ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•„์•ผํ•œ๋‹ค.

์—ฌ๋Ÿฌ ๋””๋ฐ”์ด์Šค์—์„œ ๋Œ์•„๊ฐ€์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์ € ๋””๋ฐ”์ด์Šค๋ฅผ ์ •ํ•˜์—ฌ ๋Œ์•„๊ฐ€๋Š”์ง€ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ผ.

iOS๋Š” Xcode / ์•ˆ๋“œ๋กœ์ด๋“œ๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค์—์„œ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœํŒŒ์ผ๋Ÿฌ๋ฅผ ์ถ”์ฒœํ•œ๋‹ค.


4. ์ธก์ • ๋‹จ์œ„

์„ฑ๋Šฅ ์ธก์ •์„ ํ•  ๋•Œ ๋ณดํ†ต FPS๋กœ ๋งŽ์ด ๋”ฐ์ง„๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ FPS ์ธก์ •์น˜๋Š”, ๋Ÿฌํ”„ํ•˜๊ฒŒ ๋ณผ์ˆ˜์žˆ๋Š” ํƒ์ง€์ˆ˜์น˜๊ธด ํ•œ๋ฐ, ๋ณ‘๋ชฉ์„ ํƒ์ง€ํ•˜๊ณ  ๋ณ‘๋ชฉ์„ ์ˆ˜์ •ํ•˜๊ณ  ๋ณ‘๋ชฉ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์„ ์„ธ์šฐ๊ธฐ์—๋Š” ์ข‹์€ ์ˆ˜์น˜๋Š” ์•„๋‹ˆ๋‹ค.
ํ”„๋กœํŒŒ์ผ๋Ÿฌ๋ฅผ ๋ณด๋ฉด ms ๋กœ ๋งŽ์ด ๋‚˜์™€์žˆ๋‹ค. ์„ฑ๋Šฅ ์ธก์ฒญ์‹œ์— ms๋กœ ์„ฑ๋Šฅ ์ธก์ •์„ ํ•˜๋Š”๊ฒƒ์ด ์ข‹๋‹ค.

FPS = 1000/ms (1์ดˆ์— ๋ช‡ํ”„๋ ˆ์ž„์„ ๊ทธ๋ฆฌ๋ƒ)
ms = 1000/FPS (1ํ”„๋ ˆ์ž„์„ ๊ทธ๋ฆฌ๋Š”๋ฐ, ์–ผ๋งˆ๋งŒํผ์˜ ์‹œ๊ฐ„์ด ํ•„์š”ํ•˜๋‚˜?)

์˜ˆ๋ฅผ๋“ค์–ด์„œ
30ms๊ฐ€ ์ธก์ •๋˜์—ˆ๊ณ 
๋ Œ๋”๋ง์— 5ms / ์—…๋ฐ์ดํŠธ 5ms / ๋ฌผ๋ฆฌ์ฒ˜๋ฆฌ 20ms ๋กœ ์ธก์ •๋˜์—ˆ์œผ๋ฉด. ํ•˜๋ฉด ๋”ฑ ๋ดค์„ ๋•Œ ๋ฌผ๋ฆฌ์—ฐ์‚ฐ๋ถ€๋ถ„์—์„œ ์ตœ์ ํ™”ํ•˜๋Š”๊ฒƒ์ด ์ข‹๊ฒ ๋‹ค๋ผ๊ณ  ํŒ๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.


5. CPU/GPU ๋ณ‘๋ชฉ ๊ตฌ๋ถ„ํ•˜์—ฌ ๋ด๋ผ

์ธก์ •์„ ํ•  ๋•Œ CPU ๋ฐ”์šด๋”๋ฆฌ์˜ ๋ฌธ์ œ์ธ์ง€, GPU ๋ฐ”์šด๋”๋ฆฌ์ธ์ง€ ์ฒดํฌ๋ฅผ ํ•ด์•ผํ•œ๋‹ค.
CPU GPU ๋ณ‘๋ ฌ์ ์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ ๋•Œ๋ฌธ์—, CPU ์ตœ์ ํ™”ํ•ด๋„ GPU ์„ฑ๋Šฅ ๋ณ€ํ™”๊ฐ€ ์—†๋‹ค. ๊ทธ๋ž˜์„œ CPU ๋ณ‘๋ชฉ์ธ์ง€ GPU ๋ณ‘๋ชฉ์ธ์ง€ ๋ด์•ผํ•œ๋‹ค.


6. Device ์˜จ๋„

PC์—์„œ๋Š” ๋””์Šคํฌ ๋Œ€๋นตํฐ๊ฑฐ ์›ฝ~ ํ•˜๋ฉฐ ๋Œ์•„๊ฐ„๋‹ค.
๊ทผ๋ฐ ๋ชจ๋ฐ”์ผ์€ ์ฟจ๋Ÿฌ๊ฐ€ ์—†๋‹ค. ๋ƒ‰๊ฐํŒ์ •๋„๋กœ ์•„์ฃผ ์ž‘์€๊ฒŒ ์žˆ์„๋ฟ์ด๋‹ค. ๋ฐœ์—ด์— ์ทจ์•ฝํ• ์ˆ˜๋ฐ–์— ์—†๋‹ค.

ํฐ์ด ๋œจ๊ฑฐ์›Œ์ง€๋ฉด ํ”„๋กœ์„ธ์„œ๋Š” ์„ฑ๋Šฅ์„ ๋‚ฎ์ถฐ๋ฒ„๋ฆฐ๋‹ค.(์—ด์„ ๋‚ฎ์ถ”๊ณ  ๊ธฐ๊ธฐ๋ฅผ ๋ณดํ˜ธํ•˜๊ธฐ์œ„ํ•ด) -> ์Šค๋กœํ‹€๋ง



Memory

๋ฉ”๋ชจ๋ฆฌ ์ ์ธ ์ธก๋ฉด์—์„œ ๋ชจ๋ฐ”์ผ์ด PC ๋ณด๋‹ค ์ทจ์•ฝํ•˜๋‹ค.

PC์—๋Š” CPU, RAM, Storege๊ฐ€ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค. 
RAM ์ด 8G ์งœ๋ฆฌ๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ณ , ๊ฒŒ์ž„ 16๊ธฐ๊ฐ€์งœ๋ฆฌ๋ฅผ ๋Œ๋ ธ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ์•ˆ๋Œ์•„๊ฐˆ ๊ฒƒ ๊ฐ™์ง€๋งŒ ๋Œ์•„๊ฐ„๋‹ค. ์™œ๋ƒ๋ฉด Storege์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™œ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์›ฌ๋งŒํ•ด์„œ ํ”„๋กœ๊ทธ๋žจ์ด ์ฃฝ์ง€ ์•Š๋Š”๋‹ค.

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

๊ฐ€๋น„์ง€์ปฌ๋ ‰ํ„ฐ๋ฅผ ์—ผ๋‘ํ•  ๊ฒƒ.

C#์€ ๊ฐ€๋น„์ง€์ปฌ๋ ‰ํ„ฐ๋กœ ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.
C++์€ delete๋กœ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ๋ฅผ ์ง์ ‘ ํ•ด์ค˜์•ผํ•˜๋Š” ๊ฒƒ๊ณผ ๋‹ค๋ฅด๋‹ค.
๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋Š” ์ œ๋„ˆ๋ ˆ์ด์…˜ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ ์ญ‰ ๋Œ์•„๊ฐ€๋ฉฐ ref ์นด์šดํŠธ๋ฅผ ๋Œ๋ฆฌ๋ฉด์„œ ์นด์šดํŠธ๊ฐ€ 0์ธ ์š”์†Œ๋ฅผ ๋‚ ๋ ค๋ฒ„๋ฆฐ๋‹ค.
์ฃผ๊ธฐ์ ์œผ๋กœ ์ด๋ ‡๊ฒŒ ๋Œ์•„๊ฐ€๋‹ˆ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์ด ์žˆ์„ ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.

๋˜ํ•œ ๋ฉ”๋ชจ๋ฆฌ์˜ ํ• ๋‹น๊ณผ ํ•ด์ œ๊ฐ€ ๋ฐ˜๋ณต๋˜๋‹ค๋ณด๋ฉด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ด๋นจ๋น ์ง„ ๋ชจ์–‘์ด ๋œ๋‹ค.(๋ฉ”๋ชจ๋ฆฌ ๋‹จํŽธํ™”๋ฌธ์ œ)
๊ฐ€๋น„์ง€์ปฌ๋ ‰ํ„ฐ๋Š” ์ด๋นจ๋น ์ง„ ๋ถ€๋ถ„์„ ์žฌ๋ฐฐ์น˜ํ•ด์„œ ๋นˆ์นธ๋“ค์„ ์—†์• ๋ฒ„๋ฆฐ๋‹ค. (๋ฉ”๋ชจ๋ฆฌ ์••์ถ•๊ธฐ๋ฒ•)
์ด ๋˜ํ•œ ์—ฐ์‚ฐ์ด ๋งŽ๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ C#์„ ์‚ฌ์šฉํ•˜๋ฉฐ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ์‹ ๋‚˜๊ฒŒ ํ•˜๋ฉด ์•ˆ๋œ๋‹ค.
๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ์ผ์–ด๋‚˜๋ฉด ์ผ์–ด๋‚ ์ˆ˜๋ก GC์˜ ๋ถ€๋‹ด์ด ๋งŽ์•„์ง€๋ฏ€๋กœ ํ• ๋‹น์„ ์ตœ๋Œ€ํ•œ ์ค„์—ฌ์•ผํ•œ๋‹ค.


string ์‚ฌ์šฉ์„ ์ตœ์†Œํ™”

์˜ˆ๋ฅผ ๋“ค์–ด์„œ Json, XML ํŒŒ์‹ฑํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๊ฒŒ๋˜๋ฉด ๋ฌธ์ž์—ด ๋งŽ์ด์จ์„œ ๊ณ„์† GC์˜ ํƒ€๊ฒŸ์ด ๋œ๋‹ค.
์ด ๋Œ€์•ˆ์œผ๋กœ ์‚ฌ์ „ ๋นŒ๋“œ๋‹จ๊ณ„๋‚˜ ์‚ฌ์ „ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์„œ ์Šคํฌ๋ฆฝํ„ฐ๋ธ” ์˜ค๋ธŒ์ ํŠธ๋‚˜ ์—์…‹ ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.

๋˜ ๋‹ค๋ฅธ ์˜ˆ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž.

m_Animator.SerBool("Jump",true);

์• ๋‹ˆ๋ฉ”์ดํ„ฐ jump๋ฅผ false๋กœ ํ•œ๋‹ค. ์ด ๋ถ€๋ถ„์—์„œ string ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋„˜๊ฒจ์ฃผ๊ธฐ๋•Œ๋ฌธ์— ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ ๋Œ€์ƒ์ด๋‹ค
๊ทผ๋ฐ ๋งŒ์•ฝ ์ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ update๋ฌธ์— ์จ๋ฒ„๋ฆฌ๋ฉด ์„ฑ๋Šฅ์ €ํ•˜๊ฐ€ ๋งค์šฐ ๋งŽ์ด๋  ๊ฒƒ์ด๋‹ค.
์ด ๊ฒฝ์šฐ์—๋Š” id๋ฅผ ๋“ค๊ณ ์™€์„œ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜์ž.

์ฝ”๋ฃจํ‹ด ๊ฐ™์€ ๊ฒฝ์šฐ์—๋„. yeild return new.. ์ด๋ ‡๊ฒŒ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์„œ, ๊ฐ€๋น„์ง€์ปฌ๋ ‰ํ„ฐ ์ž‘๋™๋œ๋‹ค. ๊ทธ๋ž˜์„œ ์บ์‹ฑ์„ ํ•ด์„œ ์“ด๋‹ค๋ฉด ๊ฐ€๋น„์ง€๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์„๊ฒƒ์ด๋‹ค.




Adaptive Performance

์•ˆ๋“œ๋กœ์ด๋“œํฐ๊ฐ™์€ ๊ฒฝ์šฐ ์“ธ ์ˆ˜ ์žˆ๋‹ค.
๊ฐ€๋ณ€์ ์ธ ํผํฌ๋จผ์Šค ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋‹ค.

(1) ๋ช…์‹œ์ ์œผ๋กœ ํœด๋Œ€ํฐ ๋œจ๊ฑฐ์šด์ง€ ์•Œ์ˆ˜์žˆ๊ณ 
(2) ์Šค๋กœํ‹€๋ง์ด ๋น ์ง€๋Š” ์ƒํ™ฉ์ธ์ง€, ์ง์ „์ธ์ง€, ์•„๋‹Œ ์ƒํ™ฉ์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ ํผํฌ๋จผ์Šค๋ฅผ ์ปจํŠธ๋กค ํ•  ์ˆ˜ ์žˆ๋‹ค.




Programming and code architecture

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ฝ”๋”ฉํ• ๋•Œ ์‹ ๊ฒฝ์จ์•ผํ•˜๋Š” ๋ถ€๋ถ„์ด๋‹ค.

1. ์œ ๋‹ˆํ‹ฐ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ํ™•์‹คํžˆ ์•Œ ๊ฒƒ.

์ˆœ์„œ๋ฅผ ์•Œ๊ณ  ์žˆ์–ด์•ผ ์„ฑ๋Šฅ์„ ์ข€ ๋” ์‹ ๊ฒฝ์“ฐ๋ฉด์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

2. ๋นˆ ํ•จ์ˆ˜๋ฅผ ์“ฐ์ง€ ๋ง์ž.

MonoBehavior ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ƒ์†๋ฐ›์•„ ์ผ์„ ๋•Œ, Updateํ•จ์ˆ˜๊ฐ€ ์ฝ”๋“œ๋ธ”๋Ÿญ์ด ๋น„์–ด์žˆ์–ด๋„ ์„ ์–ธ๋งŒ ๋˜๋ฉด ์„ฑ๋Šฅ์„ ๋จน๊ณ ์žˆ๋‹ค.

void Update()
{

}

๋นˆ ํ•จ์ˆ˜๋Š” ์ œ๊ฑฐํ•˜๋Š”๊ฒŒ ์ข‹๋‹ค. ์—๋””ํ„ฐ์—์„œ๋งŒ ๋Œ์•„๊ฐ€๋Š” ๋กœ์ง์ด ์žˆ์œผ๋ฉด,

#if UNITY_EDITOR
void Update()
{
  
}
#endif

์ด๋ ‡๊ฒŒ define์œผ๋กœ ๋ง‰์•„๋ฒ„๋ ค์•ผํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•ด์•ผ ์ตœ์ข… ๋ฆด๋ฆฌ์ฆˆ๋•Œ๋Š” ํฌํ•จ์ด ์•ˆ๋œ๋‹ค.


3. Debug.Log์˜ ํ•จ์ •

Debug.Log๋ฅผ ๋ฆด๋ฆฌ์ฆˆ๋ชจ๋“œ๋กœ ๋ฐฐํฌ๋ฅผํ•˜๋ฉด ํ˜ธ์ถœ์•ˆ๋˜๋Š”์ค„ ๋งŽ์ด๋“ค ์•Œ๊ณ ์žˆ๋Š”๋ฐ, ์•„๋‹ˆ๋‹ค. ๋นŒ๋“œํŒŒ์ผ์— ๋‹ค ๋“ค์–ด๊ฐ„๋‹ค.

4. Get/Add Component ์ฃผ์˜์ 

์ปดํฌ๋„ŒํŠธ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ถ™์˜€๋‹ค ๋–ผ์—ˆ๋‹ค ํ•˜๋Š”๊ฒƒ์ด ์„ฑ๋Šฅ์„ ๋งŽ์ด๋จน๋Š”๋‹ค. AddComponent ๋™์ ์œผ๋กœ ํ•˜๋ฉด ์•ˆ์ข‹๋‹ค.
๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ ์ปดํฌ๋„ŒํŠธ๋ฅผ GetComponent๋กœ ์–ป์–ด์™”๊ณ  ์ž์ฃผ์“ฐ์ธ๋‹ค๋ฉด ์บ์‹ฑํ•ด๋†“๊ณ  ์“ฐ๋Š”๊ฒŒ ์ข‹๋‹ค. ๋งค ํ”„๋ ˆ์ž„๋งˆ๋‹ค GetComponent ํ•˜๋ฉด ์„ฑ๋Šฅ์„ ๋จน๋Š”๋‹ค.

private Renderer myRenderer;
void Start()
{
  myRenderer = GetComponent<Renderer>();
}

void Update()
{
  Func(myRenderer);
}

5. ๋ฉ”๋ชจ๋ฆฌํ’€

๋ชจ๋‘๊ฐ€ ์•Œ๊ณ ์žˆ๋“ฏ์ด ์˜ค๋ธŒ์ ํŠธ ํ’€๋ง์„ ํ•ด์•ผํ•œ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด ์ŠˆํŒ…๊ฒŒ์ž„ ๊ฐ™์€ ๊ฒฝ์šฐ ์ด์•Œ์„ ๋งค๋ฒˆ new ํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๊ณ , ํ•œ๊บผ๋ฒˆ์— ๋งŒ๋“ค์–ด๋†“๊ณ  ์žฌํ™œ์šฉํ•ด์„œ ์จ์•ผํ•œ๋‹ค.

์ฃผ์˜์  : activePool ๊ป๋ฐ๊ธฐ root์— ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ณ , ๋˜ DisabledPool ๋น„ํ™œ์„ฑํ™”๋œ ์˜ค๋ธŒ์ ํŠธ๋“ค ์˜ฎ๊ธฐ๊ณ  ์ด๋Ÿฐ์‹์œผ๋กœ root๋ฅผ ์™”๋‹ค๊ฐ”๋‹คํ•˜๋ฉด ์ด์˜๊ฒŒ ํ•˜์ด์–ด๋ผ์ดํ‚ค ์ฐฝ์ด ์ •๋ ฌ๋˜๊ธดํ•˜๊ฒ ์ง€๋งŒ setParent ๋ผ๋Š”๊ฒƒ์„ ํ†ตํ•ด์„œ ์—ฌ๊ธฐ์ €๊ธฐ ๋ฆฌํŽ˜์–ด๋ŸฐํŒ…๋œ๋‹ค. ์ฆ‰, ์„ฑ๋Šฅ์„ ๋จน๋Š”๋‹ค.
์›ฌ๋งŒํ•˜๋ฉด ์•ˆํ•˜๋Š”๊ฒŒ ๋‚ซ๋‹ค.


6. ์Šคํฌ๋ฆฝํ„ฐ๋ธ” ์˜ค๋ธŒ์ ํŠธ

์ ๊ทน๊ถŒ์žฅํ•œ๋‹ค.
๊ณตํ†ต์ ์ธ ์†์„ฑ์„์„ ๋ฌถ์–ด ์“ด๋‹ค.

์ƒ์† ๊ตฌ์กฐ๋กœํ•˜๋ฉด ์ฝ”๋”ฉํ• ๋–„๋Š” ๊ตฌ์กฐ์ ์œผ๋กœ ์˜ˆ์˜๊ฒ ์ง€๋งŒ, ์„ฑ๋Šฅ์ ์œผ๋กœ ์•ˆ์ข‹์„์ˆ˜์žˆ๋‹ค. ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๋งŽ์„์ˆ˜๋ก ์ง๋ ฌํ™”๊ฐ€ ์ผ์ผ์ด ๋‹ค ๋œ๋‹ค. -> ์„ฑ๋Šฅ์ด์Šˆ
์Šคํฌ๋ฆฝํ„ฐ๋ธ” ์˜ค๋ธŒ์ ํŠธ๋Š” ์—์…‹์ด๊ณ , ์ง๋ ฌํ™”๊ฐ€ ์ด๋ฏธ ๋˜์–ด์žˆ๋Š” ์•„์ด์ด๊ธฐ๋•Œ๋ฌธ์— ๊ทธ๊ฑธ ๊ฐ€์ ธ๋‹ค์“ฐ๋ฉด, ์„ฑ๋Šฅ์ ์œผ๋กœ ์ด๋“์ด๋‹ค.



Project configuration

1. ํ”„๋กœ์ ํŠธ ์„ค์ •์ฐฝ

๋„๊ฑฐ๋‚˜ ์ค„์—ฌ๋ผ. -> ๋‚ด๊ฐ€ ์•ˆ์“ฐ๋Š”๊ฒƒ๊ฐ™์œผ๋ฉด ๋„๊ฑฐ๋‚˜ ์ค„์ด๋ฉด ๋œ๋‹ค.

ํ”Œ๋ ˆ์ด์–ด ํ€„๋ฆฌํ‹ฐ์„ธํŒ…, Auto Graphics API(OpenGL ๋ฒ„์ „๋ณ„๋กœ์ผœ์ ธ์žˆ์Œ) ์ด๋Ÿฐ๊ฑฐ๋„ ์•ˆ์“ฐ๋Š”๊ฑด ๊บผ๋ฒ„๋ ค๋ผ.
๋ฌผ๋ฆฌ์ชฝ๋„ ํ•„์š”์—†๋Š”๊ฑด ๊บผ์•ผํ•œ๋‹ค.

์œ ๋‹ˆํ‹ฐ ๊ณต๊ฐ„๊ณผ ๋ฌผ๋ฆฌ๊ณต๊ฐ„์ด ๋”ฐ๋กœ์žˆ์–ด์„œ, ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ์™€ ๋ฌผ๋ฆฌ๊ณต๊ฐ„์ด๋ž‘ ๋™๊ธฐํ™”๋ฅผ ์‹œ์ผœ์ฃผ๋Š” ๊ณผ์ •์ด ์žˆ๋‹ค.
๋ณดํ†ต์€ ๊ทธ ๋™๊ธฐํ™”์‹œ์ผœ์ฃผ๋Š”๊ฒŒ FixedUpdate์—์„œ ๋ณดํ†ต ์ง„ํ–‰์„ ํ•œ๋‹ค.

Auto Simulation, Auto SyncTransforms ์ด๊ฒŒ ๊ฐ•์ œ๋กœ ๋™๊ธฐ๋ฅผ ํ•ด์ฃผ๋Š”๊ฑฐ์—ฌ์„œ, ๋ฌผ๋ฆฌ๊ฐ€ ์ค‘์š”ํ•˜์ง€ ์•Š๋Š” ๊ฒŒ์ž„์ด๋ฉด ๊บผ์ฃผ๋Š”๊ฒŒ ์ข‹๋‹ค.


2. ํƒ€๊ฒŸ ํ”„๋ ˆ์ž„๋ ˆ์ดํŠธ

๋ฐœ์—ด์ด ์‹ฌํ•ด์ ธ๋„ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง„๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.
์•ก์…˜๊ฒŒ์ž„์ด๋ฉด ํƒ€์ผ“ ํ”„๋ ˆ์ž„ 40-50 ์ด๋Ÿฐ๊ฑฐ
ํผ์ฆ๊ฒŒ์ž„์ด๋ฉด ํƒ€๊ฒŸ ํ”„๋ ˆ์ž„ 30

ํ”„๋ ˆ์ž„ ๋ ˆ์ดํŠธ๋ฅผ ์กฐ์ ˆํ•˜์—ฌ ๋ฐœ์—ด๊ณผ ํšจ์œจ์„ฑ ํผํฌ๋จผ์Šค๋ฅผ ์ข‹๊ฒŒํ•ด๋ผ.

image

3. ํ•˜์ด์–ด๋ผ์ดํ‚ค๊ฐ€ ์ ์  ์ปค์ง€๋Š”๊ฑฐ ๋ฉˆ์ถฐ๋ผ

์”ฌ ์•ˆ์— ๋ง‰
image
์ด๋Ÿฐ์‹์œผ๋กœ ๊ตฌ์กฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜๋ฉด A ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์›€์ง์ด๋ฉด ์•„๋ž˜ ๊น”๋ ค์žˆ๋Š” ์• ๋“ค๋„ transform ์žฌ์—ฐ์‚ฐ์ด ๋˜์–ด์•ผํ•œ๋‹ค.
๊ทธ๋Ÿผ ํ•œ๋ฒˆ A ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์›€์ง์˜€์„ ๋ฟ์ธ๋ฐ ๋”ธ๋ ค์žˆ๋Š” ํŠธ๋žœ์Šคํผ ์—ฐ์‚ฐ์ด ์—„์ฒญ ๋งŽ์•„์ง€๋Š” ๊ฒƒ์ด๋‹ค.
๊ทธ๋ž˜์„œ ํ•˜์ด์–ด๋ผ์ดํ‚ค๋ฅผ ๋ณต์žกํ•˜๊ฒŒ ํ•˜๋ฉด ํ• ์ˆ˜๋ก ์„ฑ๋Šฅ์ด์Šˆ๊ฐ€ ์ƒ๊ธด๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

ํ•˜์ด์–ด๋ผ์ดํ‚ค๊ฐ€ ๋‹จ์ˆœํ•˜๋ฉด ๋‹จ์ˆœํ• ์ˆ˜๋ก ํšจ์œจ์ ์œผ๋กœ ๋Œ๋ฆด ์ˆ˜ ์žˆ๋‹ค.


4. Transform ํ•œ๋ฒˆ๋งŒ

๋งŒ์•ฝ ํ•œ ์บ๋ฆญํ„ฐ ์•ˆ์— move.cs, Jump.cs, Dash.cs, Dodge.cs ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.
์ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊นŒ๋ดค๋”๋‹ˆ ๋ชจ๋‘ ํŠธ๋žœ์Šคํผ์„ ๊ฑด๋“ค์ด๊ณ  ์žˆ๋‹ค๊ณ  ํ•˜๋ฉด, ํ•œ ํ”Œ๋ ˆ์ด์–ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ํŠธ๋žœ์Šคํผ ์—ฐ์‚ฐ์ด ์—„์ฒญ ๋งŽ์ด ๋งค๋ฒˆ ์ผ์–ด๋‚˜๊ฒŒ ๋˜๋Š”๊ฒƒ์ด๋‹ค.

๋˜ํ•œ ์ฝ”๋“œ ์ž‘์„ฑํ• ๋•Œ

transform.position- = ...
transform.rotation- = ...

์ด๋Ÿฌ๋ฉด ํ•œ์ค„ํ•œ์ค„ ๋‹ค ์žฌ์—ฐ์‚ฐ์ผ์–ด๋‚œ๋‹ค. (๋‘๋ฒˆ ์ผ์–ด๋‚œ๋‹ค.)

image
ํ•œ๋ฒˆ์— ์ฒ˜๋ฆฌ๋˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ž˜ ํ™œ์šฉํ•˜์ž.



Assets

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

1. Texture ์„ธํŒ…

Texture ์„ค์ •์„ ํ”Œ๋žซํผ๋ณ„๋กœ ์˜ค๋ฒ„๋ผ์ด๋“œ๋ฅผํ• ์ˆ˜์žˆ๋‹ค. (์„ธํŒ…์„ ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค)

image

*) ํ…์Šค์ณ ์‚ฌ์ด๋“œ๋Š” 2์˜ n์Šน์œผ๋กœ ํ•ด์•ผํ•œ๋‹ค. (POT)


image


์ด๊ฑด ์›ฌ๋งŒํ•˜๋ฉด ๋„๋Š”๊ฒŒ ์ข‹๋‹ค.
๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„๋•Œ, SSD, HDD ๊ฐ€ ์žˆ์œผ๋ฉด RAM์— ์˜ฌ๋ฆฌ๊ณ , VRAM(๋น„๋””์˜ค ๋ฉ”๋ชจ๋ฆฌ,GPU๋ฉ”๋ชจ๋ฆฌ)์— ์˜ฌ๋ฆฌ๊ฒŒ ๋œ๋‹ค.
GPU๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฐ๊ฒƒ์€ CPU ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋‚ ๋ ค๋ฒ„๋ฆฐ๋‹ค.
ํ•˜์ง€๋งŒ ์ด Read/Write Enable์„ ์ฒดํฌํ•˜๋ฉด CPU ๋ฉ”๋ชจ๋ฆฌ์— ์—†์• ์ง€์•Š๊ณ  ๊ทธ๋Œ€๋กœ ๋‚จ์•„์žˆ๊ฒŒ ํ•œ๋‹ค.
๊ฒฐ๋ก ์ ์œผ๋กœ๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋‘๋ฒˆ ์˜ฌ๋ผ๊ฐ€์žˆ๊ธฐ๋•Œ๋ฌธ์— ์•ต๊ฐ„ํ•˜๋ฉด ๋„๋Š”๊ฒŒ ์ข‹๋‹ค.

image


MipMap์€ 512 ํ…์Šค์ณ๊ฐ€ ์žˆ์œผ๋ฉด, 245, 129... ๋ณต์‚ฌ๋ณธ๋“ค์„ ๋งŒ๋“œ๋Š”๊ฒƒ์„ ๋งํ•œ๋‹ค.
๊ทธ๋Ÿผ ๋ฉ”๋ชจ๋ฆฌ์˜์—ญ์ด 33% ๋ปฅํŠ€๊ธฐ๊ฐ€ ๋œ๋‹ค.

ํ•˜์ง€๋งŒ 3D ๊ฒŒ์ž„์—์„œ๋Š” ๋ฉ€๋ฆฌ์žˆ๋Š” ์˜ค๋ธŒ์ ํŠธ ๊ฐ€๊นŒํžˆ ์žˆ๋Š” ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ๋งŽ์€ ์—ฐ์‚ฐ์—†์ด ์ฒ˜๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋Ÿฐํƒ€์ž„ ํšจ์œจ, ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์ ์ธ ์ธก๋ฉด์—์„œ ํ•„์š”ํ•˜๋‹ค.
๊ทธ๋Ÿฐ๋ฐ, 2D๊ฒŒ์ž„์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊บผ์•ผํ•œ๋‹ค!! ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

2. Mesh ์„ธํŒ…

๋งค์‹œ๋„ ์ž„ํฌํŠธ ์„ธํŒ…ํ• ๋•Œ ํŒŒ๋ผ๋ฏธํ„ฐ ๋งŽ๋‹ค.
Compress the mesh -> ์••์ถ•ํ•˜๋Š” ๊ฒƒ. ๋ฐ์ดํ„ฐ ์ •๋ฐ€๋„๋ฅผ ๋–จ์–ด๋œจ๋ฆฌ๋Š”๊ฑฐ๊ธดํ•˜๋‹ค. ๋นก์„ธ๊ฒŒํ•˜๋˜, ์‹œ๊ฐ์  ํ’ˆ์งˆ์ฐจ์ด๋ฅผ ๋ณด๋ฉด์„œ ํ•ด์•ผํ•ด์•ผํ•œ๋‹ค.
Disable Read/Write ๋ฉ”์‹œ๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ž‘ํ•˜๋Š”๊ฒŒ ์—†์œผ๋ฉด, ๊ธฐ๋Šฅ ๋„๋Š”๊ฒƒ์ด ์ข‹๋‹ค. ํ…์Šค์ณ๋ž‘ ๋˜‘๊ฐ™์€ ๊ด€์ ์ด๋‹ค.

์•ˆ์“ฐ๋Š”๊ฒƒ๊ฐ™๋‹ค ํ•˜๋ฉด ๊บผ์•ผํ•œ๋‹ค.
์Šคํ‚ค๋‹ ์—ฐ์‚ฐ์ด ์—†์œผ๋ฉด rig๋ฅผ ๋„๋ฉด ๋œ๋‹ค. ๋ธ”๋žœ๋“œ ์‰์ž…(์บ๋ฆญํ„ฐ ํ‘œ์ • ๋“ฑ)์•ˆ์‚ฌ์šฉํ•˜๋Š” ๋งค์‹œ๋ฉด ๊บผ๋ฒ„๋ฆฐ๋‹ค. (๋ฐฐ๊ฒฝ๊ฑด๋ฌผ, ๋ฏธ์‚ฌ์ผ ์˜ค๋ธŒ์ ํŠธ๋ฉด ๋„๋ฉด๋œ๋‹ค.)

Tangent -> ๋…ธ๋ฉ€๋งต์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ํƒ„์  ํŠธ ๋„๋ฉด๋œ๋‹ค.

๋งค๋ฒˆ ์ด๋ ‡๊ฒŒ ๊ป๋‹ค ์ผฐ๋‹ค ํ• ์ˆ˜๋Š” ์—†์œผ๋‹ˆ(์‹ค์ˆ˜ํ• ์ˆ˜๋„) AssetPostprocessor ๋ผ๋Š”๊ฒŒ ์žˆ๋‹ค. ์ด๊ฑธ์“ฐ๋ฉด ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.



Graphics and GPU optimization


์ตœ์‹ ๋ฒ„์ „๋ถ€ํ„ฐ๋Š” URP๊ฐ€ ๊ธฐ๋ณธ์ด๋‹ค. ๊ธฐ์กด ํŒŒ์ดํ”„๋ผ์ธ๋ณด๋‹ค๋Š” URP๊ฐ€ ์„ฑ๋Šฅ์ด ์ข‹๋‹ค.

1. Batch your draw call

URP์—์„œ๋Š” ๋“œ๋กœ์šฐ์ฝœ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ฐฐ์นญ์€ ๋“œ๋กœ์šฐ์ฝœ์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ฒ•์ด๋‹ค.

  • ์Šคํƒœํ‹ฑ ๋ฐฐ์นญ : ์˜ˆ๋ฅผ ๋“ค์–ด ์›€์ง์ด์ง€ ์•Š๋Š” ๋ฐฐ๊ฒฝ ์˜ค๋ธŒ์ ํŠธ๋“ค์€ ์Šคํƒœํ‹ฑ๋ฐฐ์นญ์œผ๋กœ ์ฒ˜๋ฆฌ

2. ํ”„๋ ˆ์ž„ ๋””๋ฒ„๊ฑฐ๋ฅผ ์‚ฌ์šฉํ•ด๋ผ.

ํ”„๋ ˆ์ž„ ๋””๋ฒ„๊ฑฐ : ๋“œ๋กœ์šฐ์ฝœ์„ ๋””๋ฒ„๊น… ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.


3. ๋™์  ๋ผ์ดํŠธ๋ฅผ ๋งŽ์ด์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์„ ํ”ผํ•ด๋ผ

๋™์  ๋ผ์ดํŠธ๋Š” ์„ฑ๋Šฅ์˜ํ–ฅ์„ ๋งŽ์ด ๋ผ์นœ๋‹ค๋Š”๊ฒƒ์„ ์—ผ๋‘ํ•˜์ž.
์Šคํƒœํ‹ฑ ๋ผ์ดํŠธ, ๋ผ์ดํŠธ๋งต,๋ผ์ดํŠธํ”„๋กœ๋ธŒ๋ฅผ ๊ถŒ์žฅํ•œ๋‹ค.

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

๋ผ์ดํŠธํ”„๋ฃจ๋ธŒ -> ๋™์ ์ธ ์˜ค๋ธŒ์ ํŠธ์— ๋ผ์ดํŠธ๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
์–ด๋–ค ๊ณต๊ฐ„์— ๋ผ์ดํŠธ ๊ฒฐ๊ณผ๋ฌผ์„ ์ €์žฅํ•ด๋†“๊ณ  ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์ง€๋‚˜๊ฐ€๋ฉด ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ๋ผ์ดํŠธํ”„๋ฃจ๋ธŒ์˜ ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค. ์„ฌ์„ธํ•œ ํ‘œํ˜„์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒ ์ง€๋งŒ, ๋น›์˜ ๋ณ€ํ™”๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

4. ๊ทธ๋ฆผ์ž๋Š” ๊บผ๋ผ.

์›ฌ๋งŒํ•ด์„œ ๋„๋Š”๊ฒŒ์ข‹๋‹ค ๋“œ๋กœ์šฐ์ฝœ๊ณผ GPU ์„ฑ๋Šฅ์„ ๋งŽ์ด ๋จน๋Š”๋‹ค.


5. LOD ์“ฐ๋ฉด ์ข‹๋‹ค

LOD : ๊ฐ€๊นŒํžˆ ์žˆ๋Š”๊ฒƒ์€ ์ž์„ธํžˆ, ๋ฉ€๋ฆฌ์žˆ๋Š” ๊ฒƒ์€ ๋ญ‰๊ทธ๋Ÿฌ์ ธ ํ‘œํ˜„ํ•˜๋Š” ๊ธฐ๋ฒ•

6. ์˜ค๋ธŒ์ ํŠธ ์ปฌ๋ง

์˜คํด๋ฃจ์ ผ ์ปฌ๋ง : ์•ˆ๋ณด์ด๋Š” ์˜ค๋ธŒ์ ํŠธ๋Š” ๊ทธ๋ฆฌ์ง€ ์•Š๋Š” ๊ฒƒ์ด๋‹ค. (๋žœ๋”๋ง์„ ๊ฑฐ์น˜์ง€ ์•Š๋Š”๊ฒƒ)

๋ฌธ์ œ๋Š”, ๊ด‘ํ™œํ•œ ์•ผ์™ธ์—์„œ๋Š” ์ด๋Ÿฐ ๊ฒฝ์šฐ๋Š” ๋งŽ์ง€ ์•Š๋‹ค. ๊ทธ๋Ÿผ, ๋น„ํšจ์œจ์ ์ผ์ˆ˜๋„์žˆ๋‹ค. ๊ฐ€๋ ค์ง„๊ฑด์—†๋Š”๋ฐ ๊ดœํžˆ ์—ฐ์‚ฐํ•œ๋‹ค๊ณ  ์•ˆ์ข‹์„์ˆ˜๋„์žˆ์œผ๋‹ˆ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ž˜ ์“ฐ์ž.


7. ์นด๋ฉ”๋ผ ์‚ฌ์šฉ ์ œํ•œ์„ ๋‘์ž.

์‹ค์ œ ์นด๋ฉ”๋ผ๊ฐ€ ์ปฌ๋ง์—ฐ์‚ฐ์„ ํ•˜๋Š”๋ฐ, ์นด๋ฉ”๋ผ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ๋‘๋ฉด ์ปด๋ง์—ฐ์‚ฐ์ด ์ค‘๋ณต์œผ๋กœ ์ผ์–ด๋‚œ๋‹ค.(์‹œ๋„ค๋จธ์‹  ์นด๋ฉ”๋ผ๋Š” ํ•ด๋‹นํ•˜์ง€ ์•Š๋Š”๋‹ค.)

8. Renderer.material ์กฐ์‹ฌํ•˜์ž.

์ด๊ฑธ ํ˜ธ์ถœํ•˜๋Š” ์ˆœ๊ฐ„ ๋ณต์‚ฌ๋ณธ์ด ๋งŒ๋“ค์–ด์ง„๋‹ค.
๋น„ํ–‰๊ธฐ๊ฐ€ 2๊ฐœ๊ฐ€ ์žˆ๊ณ  ๊ฐ™์€ mat์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.
๊ทผ๋ฐ ๋งŒ์•ฝ ๋น„ํ–‰๊ธฐ 1์—์„œ Render.mat-์„ ํ˜ธ์ถœํ•˜๋ฉด ๋ณต์‚ฌ๊ฐ€ ์ผ์–ด๋‚˜๊ณ  ๋‘ ๋น„ํ–‰๊ธฐ๊ฐ€ ๊ฐ™์€ amt๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฒŒ๋œ๋‹ค. ์ฆ‰ ๋ฐฐ์นญ์ด ๊นจ์ ธ๋ฒ„๋ฆฐ๋‹ค.

๋งŒ์•ฝ ๋ณต์‚ฌ๋ณธ ์•ˆ๋งŒ๋“ค์–ด์ง€๊ฒŒ ํ•˜๊ณ ์‹ถ์œผ๋ฉด Renderer.sharedMaterial ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด๋œ๋‹ค.


9. ๋ฆฌํ”Œ๋ ‰์…˜ ํ”„๋ฃจ๋ธŒ๋Š” ์ตœ์†Œํ™”ํ•˜์ž.

๋ผ์ดํŠธ ํ”„๋ฃจ๋ธŒ๋Š” ๋น„์šฉ์ด ์‹ธ๋‹ค ์–˜๋Š” ์ˆซ์ž๋งŒ ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ˆซ์ž 9๊ฐœ๋งŒ ์ €์žฅ๋˜์–ด์„œ ๊ฐ€๋ณ๋‹ค.
ํ•˜์ง€๋งŒ ๋ฆฌํ”Œ๋ ‰์…˜ ํ”„๋ฃจ๋ธŒ๋Š” 6๋ฉด์˜ ํ…์Šค์ณ๊ฐ€ ์ €์žฅ๋œ๋‹ค.
์ปจ์…‰์€ ๋น„์Šทํ•˜์ง€๋งŒ ์ €์žฅ๋˜๋Š” ๊ฒฐ๊ณผ๋ฌผ์ด ๋‹ค๋ฅด๊ธฐ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ ์ฐจ์ด๊ฐ€ ๋งŽ์ด๋‚œ๋‹ค.



User interface

1. ์บ”๋ฒ„์Šค๋ฅผ ์‹ ๊ฒฝ ์“ฐ์ž

๋“œ๋กœ์šฐ์ฝœ ๋ฐฐ์นญ์€ ์บ”๋ฒ„์Šค ๋‹จ์œ„๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.
์บ”๋ฒ„์Šค ์•ˆ์—์„œ ํ•˜๋‚˜์˜ ๋ฒ„ํŠผ์ด ๋ณ€ํ•˜๊ฒŒ๋˜๋ฉด, ์บ”๋ฒ„์Šค ์•ˆ์— ์žˆ๋Š” ๋‹ค๋ฅธ์• ๋“ค๋„ ํด๋ฆฌ๊ณค์„ ๊ตฌ์„ฑํ•˜๊ธฐ์œ„ํ•ด์„œ ๋‹ค ๋ฐ”๊ฟ”์ค˜์•ผ ํ•œ๋‹ค.
๊ทธ๋ž˜์„œ ์บ”๋ฒ„์Šค ์•ˆ์— ๋™์ ์ธ ์•„์ด๋“ค ์ •์ ์ธ ์•„์ด๋“ค ์„ž์œผ๋ฉด ๋น„ํšจ์œจ์ ์ด๊ณ , ๋™์ ์ธ ๋ถ€๋ถ„ ๋ชจ์•„๋†“์€ ์บ”๋ฒ„์Šค/์ •์ ์ธ ๋ถ€๋ถ„ ๋ชจ์•„๋†“์€ ์บ”๋ฒ„์Šค ๋‚˜๋ˆ ์•ผ ์„ฑ๋Šฅ์ ์ธ ๋ถ€๋ถ„์—์„œ ์ข‹๋‹ค.
์—ฌ๋Ÿฌ๊ฐœ์˜ ์บ”๋ฒ„์Šค๋ฅผ ๋‚˜๋ˆ„๋Š”๊ฒŒ ํšจ์œจ์ ์ด๋‹ค.


2. ๋ณด์ด์ง€ ์•Š๋Š” UI ์š”์†Œ๋Š” ๊บผ๋ผ

๋ณด์ด์ง€์•Š๋Š” UI ์š”์†Œ๋Š” ๊บผ์ฃผ๋Š”๊ฒŒ ์ข‹๋‹ค.
์บ”๋ฒ„์Šค ์˜์—ญ ๋ฐ–์— ๋ฒ„ํŠผ์ด ์žˆ๋‹ค๊ฐ€ ํ™”๋ฉด์•ˆ์œผ๋กœ ๋“ค์–ด๊ฐ”๋‹ค ๋‚˜์™”๋‹ค ํ•˜๋Š”๊ฑฐ๋ฉด ์บ”๋ฒ„์Šค ๋ฐ–์— ์žˆ์–ด๋„ ์—ฐ์‚ฐ์ด ๋˜์–ด์„œ ์•ˆ์“ฐ๋ฉด ๊บผ์ค˜์•ผ์ข‹๋‹ค.


3. ์ธํ„ฐ๋ ‰์…˜์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š” ์š”์†Œ์˜ ๋ ˆ์ด์บ์ŠคํŠธ๋Š” ๋„์ž

์ธํ„ฐ๋ ‰์…˜์ด ์•ˆ์ผ์–ด๋‚˜๋Š” ์š”์†Œ๋“ค์˜ ๋ ˆ์ด์บ์ŠคํŠธ๋Š” ๊บผ์ค˜๋ผ.

์บ”๋ฒ„์Šค์—์„œ ๋งŽ์€ ์š”์†Œ๊ฐ€ ์žˆ๋Š” ์ƒํƒœ์—์„œ ํ•˜๋‚˜์˜ ๋ฒ„ํŠผ๋งŒ ๋ ˆ์ด๋ฅผ ์“ฐ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ์บ”๋ฒ„์Šค ๋ ˆ์ด๋ฅผ ๊บผ์ฃผ๊ณ  ๋ฒ„ํŠผ์—๋งŒ ๋ฐ์ด์บ์Šคํ„ฐ๋ฅผ ๋ถ™์—ฌ์ค˜์•ผ ์„ฑ๋Šฅ์ ์œผ๋กœ ํšจ์œจ์ ์ด๋‹ค.

๋ ˆ์ด์บ์ŠคํŠธ ํƒ€๊ฐฏ๋„ ์•ˆ์“ฐ๋ฉด ๊บผ์ค˜์•ผํ•œ๋‹ค.

4. ๋ ˆ์ด์•„์›ƒ ๊ทธ๋ฃน๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ํ”ผํ•˜๋Š”๊ฒŒ์ข‹๋‹ค.

์–˜๋Š” ๋™์ ์œผ๋กœ ์—ฐ์‚ฐํ•˜๊ณ ์žˆ์–ด์„œ ์•ˆ์“ฐ๋Š”๊ฒŒ ์ข‹๋‹ค.



Audio

1. ๋ชจ๋ฐ”์ผ์€ ์›ฌ๋งŒํ•˜๋ฉด mono๋กœ ์„ธํŒ…ํ•ด๋ผ.

์ŠคํŠธ๋ ˆ์˜ค๋ฅผ ๊ดœํžˆ ๋‘ฌ์„œ ๋ฉ”๋ชจ๋ฆฌ ๋ปฅํŠ€๊ธฐ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

2. ๋ฌด์Šจ ํฌ๋งท์ด์–ด๋„ ์ƒ๊ด€์—†๋Š”๋ฐ, Wav ํฌ๋งท ๊ถŒ์žฅํ•œ๋‹ค.

์›๋ณธ์ด ๋ญ๋“  ์ƒ๊ด€์—†์ด ์••์ถ• ๋‹ค์‹œํ•˜๊ธฐ๋•Œ๋ฌธ์— ๊ทธ๋ƒฅ wav ํŒŒ์ผ ์“ฐ๋Š”๊ฒŒ ์ œ์ผ ์†์‹ค์ด ์ ์„ํ…Œ๋‹ˆ๊นŒ ์ด๊ฑฐ ์“ฐ๋Š”๊ฒŒ ์ข‹๋‹ค

3. ์••์ถ• ํฌ๋งท ์„ค์ •

Compression FOrmat(์••์ถ•ํฌ๋งท) ์€ ๋””ํดํŠธ๋กœ Vorbis๋ฅผ ์“ฐ๋ฉด ๋œ๋‹ค.
์งง์€์‚ฌ์šด๋“œ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ADPCM ์“ฐ๋ฉด๋œ๋‹ค.

4. ๋กœ๋“œํƒ€์ž… ์„ค์ •

๋กœ๋“œํƒ€์ž…
Decom- Load : ์••์ถ•์„ ๋‹ค ํ’€์–ด์„œ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฐ๋‹ค. (๋น„ํšจ์œจ์ ) ์ž‘์€์‚ฌ์šด๋“œ๋งŒ ์ ์šฉ ํ•˜์ž.
Compre -Me : ์••์ถ•ํ•œ ์ƒํƒœ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์˜ฌ๋ฆฐ๋‹ค. ์ค‘๊ฐ„ํฌ๊ธฐ์˜ ์‚ฌ์šด๋“œ๋ฅผ ์–˜๋กœ ์ ์šฉํ•˜์ž
Streaming : ๋ฐฐ๊ฒฝ์Œ(์šฉ๋Ÿ‰์ด ํฐ ์•„์ด๋“ค)์„ Streaming์œผ๋กœ ํ•˜๋ฉด๋œ๋‹ค.

5. ๋ณผ๋ฅจ 0์ธ ์š”์†Œ๋Š” ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋‚ ๋ ค๋ผ

๋ณผ๋ฅจ 0 ์ด์–ด๋„ ์—ฐ์‚ฐ์ฒ˜๋ฆฌ๋œ๋‹ค. ๊ทธ๋ƒฅ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋‚ ๋ ค๋ฒ„๋ฆฌ์ž



Animation

์ œ๋„ค๋ฆญ์ด๋ƒ, ํœด๋จธ๋…ธ์ด๋“œ๋ƒ

ํœด๋จธ๋…ธ์ด๋“œ๋Š” ์ œ๋„ค๋ฆญ๋ณด๋‹ค 30%~50% ๋” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์ ์œผ๋กœ๋Š” ์ œ๋„ค๋ฆญ์ด ์ข‹๊ธดํ•˜๋‹ค.



Physics

1. Prebake Collision Meshes ์ฒดํฌํ•˜๋Š”๊ฒŒ ์ข‹๋‹ค.

์ถฉ๋Œ์ฒ˜๋ฆฌํ•˜๊ธฐ์œ„ํ•œ ๋‚ด์šฉ๋“ค์„ ๋ฐ”๋‹ฅ์ด๋‚˜ ๋ฒฝ์— ๋กœ๋”ฉํƒ€์ž„์— ๋ฏธ๋ฆฌ ๊ตฌ์›Œ๋†“๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ํšจ์œจ์ ์ด๋‹ค.

2. Collision Matric ์ถฉ๋Œ์ฒ˜๋ฆฌ ์‚ฌ์šฉํ•ด์„œ ํ–‰๋ ฌ ์ฒดํฌํ•˜๋Š”๊ฒƒ์ด ์ข‹๋‹ค.

image


-> ์—ฐ์‚ฐ๋น„์šฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

3. ์ฝœ๋ผ์ด๋”๋Š” ๊ธฐ๋ณธ๋„ํ˜• ์ฝœ๋ผ์ด๋”๋ฅผ ์“ฐ๋Š”๊ฒŒ ์ข‹๋‹ค.

๋งค์‹œ์ฝœ๋ผ์ด๋”๋Š” ์ตœ์ ํ™”ํ• ์ˆ˜์žˆ๋Š” ์—ฌ์ง€๋“ค์ด ์‚ฌ๋ผ์ง„๋‹ค.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published