Team
ProjectDH
Members
๋ฐํํธ ์ค์ธ๋ ์ ์์ง ์ง์น๋
Stack
Unity, C#
Develop
2024.06 ~ 2024.08
itch.io
itch.io
๊ฒ์ ๊ฐ์
๊ฒ์ ์๊ฐ
์ฃผ์ ์ฌ์ฉ ๊ธฐ์
๊ฐ๋ฐ ์งํ
๊ฐ๋ฐ ๊ฒฐ๊ณผ
ํ๋ก์ ํธ ๊ฐ์
ํธ๋ฌ๋ธ ์ํ
Genre
3D ๋ํ์ค ๊ฒ์
Description
๋ค์ํ ์ ๋์ ์ํํ๊ณ ์กฐํฉํ์ฌ ๊ฐ๊ธฐ ๋ค๋ฅธ ํน์ฑ์ ๊ฐ์ง ๋ณด์ค๋ค์ ๋ฌผ๋ฆฌ์น๋ ๊ฒ์์
๋๋ค โ๏ธ
- ์ ๋๊ณผ Enemy์ ์ํ๋ฅผ ์ ๊ธฐ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํจ
- ์๋์ ๊ฐ์ ๊ตฌ์กฐ๋ก ์ฌ์ฉ
- ์ ๋ ํน์ ์ ์ ํ ์คํธ ํ๊ฑฐ๋ ๊ฐ๋ฐ ํธ์์ฑ์ ์ํ ์ปค์คํ ํด ๊ฐ๋ฐ
- ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ๊ณผ ์ ์ฐํ ๋ฆฌ์์ค ๊ด๋ฆฌ๋ฅผ ์ํด ์ฌ์ฉ
1. IResourceLocation์ผ๋ก ์ด๋๋ ์๋ธ ๊ทธ๋ฃน์ ์ ์ฅ๋ ๋ฆฌ์์ค๋ค์ ๊ฒฝ๋ก๋ฅผ ์ ์ฅ
public Dictionary<int, IList<IResourceLocation>> LocationDict { get; private set; }
2. ๊ฐ๊ฐ์ ๋ฆฌ์์ค ์ด๋ฆ์ผ๋ก ์ ์๋ Enum ํ์
์์๋๋ก IResourceLocation ๋ฆฌ์คํธ ์ฌ ์ ๋ ฌ
3. IResourceLocation ์ ๋ณด๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์ด๋๋ ์๋ธ์ ์ ์ฅ๋ ๋ฆฌ์์ค๋ฅผ ๋ก๋
- Batch ์ต์ ํ๋ฅผ ์ํด Static Batching, Sprite Atlas, Terrain To Mesh ์ฌ์ฉ
- ๋ค์ํ ๊ฒ์ ์ํฉ์ ๋ฐ๋ฅธ UI ๊ด๋ฆฌ
- ๋ฆฌ์์ค ๊ด๋ฆฌ ์ต์ ํ
- ์ ์ฐํ ํ์ฅ์ฑ
UIManager
- UI์ ์์ฑ, ๊ด๋ฆฌ, ์ ๊ฑฐ๋ฅผ ๋ด๋นํ๋ ์ค์ฌ ์ญํ
- Singleton ํจํด์ ์ฌ์ฉํ์ฌ ๊ฒ์ ์ ์ฒด์์ ์ ์ผํ๊ฒ ์กด์ฌํ๋ UI ๋งค๋์ ์ธ์คํด์ค๋ฅผ ์ ๊ณตํจ์ผ๋ก์จ UI์ ์ค์ ์ง์ค์ ๊ด๋ฆฌ๋ฅผ ๊ตฌํ
ShowPopupUI<T> ๋ฉ์๋
- ํน์ UI ํ์ ์ ๋น๋๊ธฐ๋ก ์์ฑ
- ResourceManager๋ฅผ ํตํด ํด๋น UI ํ์ ์ ๊ฒ์ ์ค๋ธ์ ํธ๋ฅผ ๋ถ๋ฌ์ค๊ณ , ์ด๋ฅผ UIManager์ Root ์ค๋ธ์ ํธ ํ์์ ๋ฐฐ์น
- ์ ๋ค๋ฆญ ํ์ ์ ์ฌ์ฉํ์ฌ ๋ค์ํ ํ์ UI๋ฅผ ์ ์ฐํ๊ฒ ์์ฑ **
SetCanvas ๋ฉ์๋
- ๋์ ์ผ๋ก ์์ฑ๋ UI ์ค๋ธ์ ํธ๊ฐ Canvas๋ฅผ ํฌํจํ๋๋ก ์ค์ ํ๋ ์ญํ
- Canvas์ renderMode๋ฅผ
ScreenSpaceOverlay
๋ก ์ค์ ํ์ฌ UI๊ฐ ํ๋ฉด์ ํญ์ ์ค๋ฒ๋ ์ด ๋๋๋ก ํ๋ฉฐ, ํ์ํ ๊ฒฝ์ฐ ์ ๋ ฌ ์์๋ฅผ ์ง์ ํ์ฌ UI๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๋ ๋๋ง๋๋๋ก ํจ
UI_Base ํด๋์ค
- UI ์ปดํฌ๋ํธ๋ฅผ ๊ด๋ฆฌํ๋ ๊ธฐ๋ณธ ํด๋์ค
- ๋ค์ํ UI ์์๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด, UI ์์๋ฅผ Dictionary์ ์ ์ฅํ๊ณ , ํ์ํ ๋ ํ์ ๊ณผ ์ธ๋ฑ์ค๋ฅผ ํตํด ํด๋น UI ์์๋ฅผ ๊ฐ์ ธ์ด
- UI ์์์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ถ๊ฐํ๋ ๊ธฐ๋ฅ ํฌํจ
UI_EventHandler ํด๋์ค
- UI์ ํด๋ฆญ ๋ฐ ๋๋๊ทธ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ํด๋์ค
- ์ด ํด๋์ค๋ Unity์ ์ด๋ฒคํธ ์์คํ ๊ณผ ํตํฉ๋์ด, ๋ค์ํ UI ์ํธ์์ฉ์ ๊ด๋ฆฌ
- Goolgle Spread Sheet๋ฅผ ์ฌ์ฉํ์ ๋, Collection, ์ปค์คํ ํด๋์ค๋ฅผ ์ ์ฅํ ์ ์์ด, ํจ์จ์ ์ด๊ณ ์ง๊ด์ ์ธ ๋ฐ์ดํฐ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ฏ๋ก ํ์ ์ ์ฉ์ดํ์ฌ ์ฌ์ฉ
- ๊ฒ์์ ํ์ํ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ๊ธ ์คํ๋ ๋์ํธ๋ก ๊ด๋ฆฌํ๋ฉฐ, ๋ฐ์ดํฐ์ ์ถ๊ฐ ๋ฐ ์ญ์ ์๋ ์ ์ฐํ๊ฒ ๋์ํ ์ ์๋๋ก ํ์ฅ ๊ฐ๋ฅํ ์ค๊ณ๋ฅผ ์ค์ ์ผ๋ก ๊ฐ๋ฐ
- Unity Google Sheet๋ฅผ ์ฌ์ฉํ์ฌ ์ํธ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ JSON ํ์ผ๋ก ๋ณํํ๊ณ , ์ด๋ฅผ ๋ก์ปฌ์์ ๋ถ๋ฌ์ ์ฌ์ฉํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ
- User Test ์์ ์ค์ ํ๋ ์ด ํ๊ฒฝ์ ์ด๋ฒคํธ๋ฅผ ์ ์ก ๋ฐ์ ์ ์ ๋ฐ์ดํฐ๋ฅผ ํ๋ณด, ๊ฐ์ ๋ฐฉํฅ์ ์๋ฆฝํ๊ธฐ ์ํด ์ฌ์ฉ
โฌ๏ธ ์ ์ ๋ค์ ์ดํ ์์ Data
SQL ํ์๊ธฐ๋ก ๊ฒ์ ์ข
๋ฃ ์ ์ด๋ ์คํ
์ด์ง๊น์ง ํด๋ฆฌ์ด ํ๋์ง์ ๋ํ RawData ๋ถ์
- ๊ฒ์ ์ค๊ฐ์ ์ดํํ๋ ์ ์ ๋ค์ด ๋ง๋ค๋ ์ ์ ๋ฐ์ดํฐ ํ๋ณด
- ์ค๊ฐ์ ๋น ์ ธ๋๊ฐ๊ฑฐ๋ ๋๊น์ง ํด๋ฆฌ์ด ํ๊ฑฐ๋ ํ๋ ์ ์ ์คํ์ผ ํ์
์ ์ ํ ์คํธ: 8์ 8์ผ ~ 8์ 11์ผ (4์ผ๊ฐ)
Map์ด ๊ฐ๋ ์ฐผ์ ๋ ์ํ๋ฒํผ ๋ง๊ธฐ
SkillUI ๊ฐ์์ฑ ๊ฐ์
๋ฐฐ์ UI ๊ฐ์
๋ณด์ค ๋ฑ์ฅ Indicator
๐ฟ ์ด๋๋ ์๋ธ ์ ๋ ฌ ๋ฌธ์
- ์ด๋๋ ์๋ธ์ ๋ฑ๋ก๋ ๋ฆฌ์์ค๋ฅผ ๋ก๋ฉํ ๋, ๋ก๋ ์์๊ฐ ๋ง์ง ์์ ์ํ๋ ๋ฆฌ์์ค๊ฐ ๋ก๋๋์ง ์๋ ๋ฌธ์ ๋ฐ์
- ์ด๋๋ ์๋ธ ๊ทธ๋ฃน์ ๋ฆฌ์์ค๋ฅผ ์ถ๊ฐํ ๋, ๋ฑ๋ก๋ ๋ฆฌ์์ค๋ค์ ์์๋ฅผ ๋ณ๊ฒฝํด์ฃผ๋ ๊ธฐ๋ฅ์ ์ง์ํ์ง ์์.
- IResourceLocation ๋ฆฌ์คํธ๋ฅผ ์ ์ฅํ ํ, Enum์ ์ ์๋ ์ด๋ฆ ์์์ ๋ง๊ฒ ์ ๋ ฌ์์ผ์ฃผ๋ ๋ฐฉ๋ฒ์ผ๋ก ํด๊ฒฐ
๐ฟ ์ ๋ ์ธ๋ค์ผ ์คํ๋ผ์ดํธ ๋ฐฐ์นญ
- ์ ๋ ์ธ๋ค์ผ ์คํ๋ผ์ดํธ๊ฐ ์ ๋๋ก ๋ฐฐ์น๋์ง ์์, ๋ฏธ์ ์ฐฝ์ ์ด ๋ ๋ฐฐ์น๊ฐ ์ฝ 40 ์ ๋ ์ฆ๊ฐํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์
- ์ ๋ ์ธ๋ค์ผ ์คํ๋ผ์ดํธ๊ฐ ๊ฐ๊ฐ ๋ ๋ฆฝ๋ Texture2D๋ก ์ฌ์ฉ๋์๊ธฐ ๋๋ฌธ์ ๋ฐฐ์นญ์ด ์ด๋ฃจ์ด์ง์ง ์์
โ ํด๊ฒฐ ๋ฐฉ๋ฒ
- ์ธ๋ค์ผ๋ค์ Sprite Atlas์ ์ ์ฅํ ํ, ์ด๋๋ ์๋ธ์์ ๋ก๋ํ๋ ๋ฐฉ์์ผ๋ก ๋ฐฐ์นญ ๋ฌธ์ ๋ฅผ ํด๊ฒฐ
- ์ถ๊ฐ์ ์ผ๋ก, Canvas ๋ฐฐ์น๊ฐ ๋๋ค๊ณ ํ๋จํ์ฌ UI์ ์ฌ์ฉ๋๋ ์คํ๋ผ์ดํธ๋ค๋ Sprite Atlas์ ์ ์ฅํ ํ ์ฌ์ฉ
๐ฟ ๋ฐํ์ ์ค Static ๋ฐฐ์นญ ์ ์ฉ์๋๋ ๋ฌธ์
- ์ธ์คํํฐ ์ฐฝ์์ Static ๋ฐฐ์นญ์ ์ ์ฉํ๋ ค ํ์ง๋ง, ํด๋น ํ๋ก์ ํธ์์๋ ๋ฐํ์์ ์ด๋๋ ์๋ธ์ ์ฌ์ฉํด ๋งต์ ๋ก๋ํ๊ธฐ ๋๋ฌธ์ Static ๋ฐฐ์นญ์ด ์ ์ฉ๋์ง ์์
- ๊ฒ์์ ์์ํ ๋, ์ ๋ํฐ๊ฐ ์๋์ผ๋ก Static ๋ฐฐ์นญ์ ์ ์ฉ์์ผ์ฃผ์ง๋ง ๋ฐํ์ ์ค์๋ ์ ์ฉ ์์ผ์ฃผ์ง ์์
โ ํด๊ฒฐ ๋ฐฉ๋ฒ
- CombineMeshes๋ฅผ ์ด์ฉํ์ฌ ๊ฐ์ Material์ ๊ฐ์ง Mesh๋ค์ ๋ฌถ์ด ๋ ๋๋งํ๋ ๋ฐฉ์์ผ๋ก ๋ฌธ์ ํด๊ฒฐ
- ์ถ๊ฐ์ ์ผ๋ก Terrian์ ๋ฐํ์ ์ค ๋ณํํ ํ์๊ฐ ์๋ค๊ณ ํ๋จํ์ฌ Mesh๋ก ๋ณํํ์ฌ Batch ์ต์ ํ ์งํ
๐ฟ ๊ฐ๋ฐ ๋ด์ญ Test ๋ฌธ์
- ๊ฐ๋ฐ์ด ์งํ๋จ์ ๋ฐ๋ผ ์ํ๋ Unit, Enemy๋ฅผ ์ ์ํ๊ณ Testํ๊ธฐ ์ด๋ ค์ ๋ค.
Unit
- ๋๋ค์ผ๋ก ์ํ๋๊ณ ์์ ์ ๋์ ๋ฝ์ ํ ์คํธ ํ๊ธฐ ์ํด์๋ ์ํ๋ ์ ๋์ ๋ฝ์ ์กฐํฉํ ๋๊น์ง ๊ฒ์์ ์งํํด์ผํ๋ ๋ถํธํจ์ด ์๋ค.
Boss
- ์คํ ์ด์ง๊ฐ ์งํ๋จ์ ๋ฐ๋ผ ํน์ ์คํ ์ด์ง์์๋ง ๋์ค๊ธฐ ๋๋ฌธ์, ๋ง์ง๋ง ์คํ ์ด์ง์ ๋ณด์ค๋ฅผ ์ ๊ฒํ๊ธฐ ์ํด์ ๋ง์ง๋ง ์คํ ์ด์ง๊น์ง ๊ฒ์์ ํ๋ ์ด ํ๋ฉด์ ํ ์คํธ ํด์ผ๋ง ํ๋ค.
โ ํด๊ฒฐ ๋ฐฉ๋ฒ
Unit ์ํ Tool ์ ์
- ์ํ๋ ์ ๋์ ๋ฒํผ์ผ๋ก ์ํํ ์ ์๋ Tool์ ์ ์
Boss ์ํ Inspector Tool ์ ์
- ์ํ๋ ์ธํ ์ผ๋ก ๋ณด์ค๋ฅผ ์ํํ ์ ์๋ Tool์ ์ ์
- boss ์ํ์ด ๋ ๋ฆฝ์ ์ด์ง ์๊ณ , Stage์ ๋ฐ๋ผ ๋ณ๊ฒฝ๋์ด์ผ ํ๋ ๋ค์ํ ์์๋ค์ด ๋ฌถ์ฌ ์์ด editorWindow๊ฐ ์๋ editorInspector๋ฅผ ํ์ฉํ์ฌ GameStart ์์ ์ด๋ค boss๋ฅผ ์ํํ ์ง ์ ํํ ์ ์๋๋ก ํ๋ค
๐ฟ ๊ฒ์ ๋ฐฐ์์ด ์ฃผ์ฌ์จ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ ํ์
- PC๋ก ํ๋ ์ดํ ๋, ๋ชจ๋ํฐ์ ์ฃผ์ฌ์จ์ ๋ฐ๋ผ ๊ฒ์ ๋ฐฐ์์ด ๋ฌ๋ผ์ง๋ ํ์์ด ๋ฐ์ํ๋ค.
- vSync
CPU ์์ ๊ณผ GPU ์์ ๊ฐ์ ๋๊ธฐํ๋ฅผ ์์ผ์ฃผ๋ ์ต์
๊ฐ ํ์ฑํ๋์ด ์์ด ๋ฐ์ํ ๋ฌธ์ ์๋ค.
โ ํด๊ฒฐ ๋ฐฉ๋ฒ
QualitySettings.vSyncCount = 0;
- ์์ ์ฝ๋์ vSync๋ฅผ ๋นํ์ฑํํ๋ ์ฝ๋๋ฅผ ์์ฑํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
๐ฟ ๋ชฌ์คํฐ Hp๋ฐ ์ต์ ํ
- ๋ชฌ์คํฐ๊ฐ ์์ฑ๋ ๋๋ง๋ค ๋๋ก์ฐ ์ฝ์ด ์ฆ๊ฐํ๋ ํ์์ด ๋ฐ์ํ๋ค.
- ์์ฑ๋๋ ๋ชฌ์คํฐ๊ฐ ๊ฐ๊ฐ ์์ ์ World Space Canvas๋ฅผ๊ฐ์ง๊ณ ์์ด ๋ชฌ์คํฐ๊ฐ ๊ฐ์ง ์บ๋ฒ์ค์ ๊ฐ์์ ๋ฐ๋ผ ๋๋ก์ฐ ์ฝ์ด ๋ฐ์ํ๋ ๊ฒ์ผ๋ก ํ์ธ๋์๋ค.
โ ํด๊ฒฐ ๋ฐฉ๋ฒ
- HP๋ฐ ์ด๋ฏธ์ง๋ฅผ ์ค๋ธ์ ํธ ํ๋ง์ ์ฌ์ฉํ์ฌ ๋ฏธ๋ฆฌ ์์ฑํด๋๊ณ Enemy๊ฐ ์คํฐ๋ ๋ ๊ฐ๊ฐ์ Enemy์ ์๋ก์ด Hp๋ฐ๋ฅผ ํ ๋นํด์ฃผ์๋ค.
- ๊ทธ ๊ฒฐ๊ณผ, ๋ชจ๋ Hp๋ฐ๊ฐ ํ๋์ ์บ๋ฒ์ค์ ๊ทธ๋ ค์ง๊ณ , ๋๋ก์ฐ ์ฝ์ด 1๊ฐ๋ก ์ค์ด๋ค์๋ค.
๐ฟ ์ฌ์ด๋ ์ฌ๋ผ์ด๋ ๋ฐ ๊ฐ ์ค์ ์ค๋ฅ
- ์ฌ๋ผ์ด๋ ๋ฐ์ value๊ฐ 0์ผ ๋, ์๋ํ ๋๋ก ์๋ฆฌ๊ฐ ์ค์ ๋์ง ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค
- ์ค๋์ค ๋ฏน์์ ๋ฐ์๋ฒจ ๋ฒ์๋ -80dB์์ 0dB๋ก ์ค์ ๋์ด ์๋ค.
- ๋ฐ๋ผ์ ์ฌ๋ผ์ด๋ ๋ฐ์ value(0~1์ฌ์ด ๊ฐ)๋ฅผ ๋ฐ์๋ฒจ ๊ฐ์ผ๋ก ๋ณํํ๊ธฐ ์ํด
Log10(volume) * 20
๊ณต์์ ์ฌ์ฉํ๋ค. - ํ์ง๋ง ์ฌ๋ผ์ด๋ ๋ฐ์ value๊ฐ 0์ผ ๋, Log10(0)์ ์ ์๋์ง ์์ ์๋ํ ๋๋ก ๊ฐ์ด ์ค์ ๋์ง ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒ์ด๋ค.
โ ํด๊ฒฐ ๋ฐฉ๋ฒ
// volume์ 0.0001~1 ๊ฐ์ด ๋ค์ด์ค๋๋ก ๋ฐฉ์ด์ฝ๋ ์์ฑ
if (volume < 0.0001f)
volume = 0.0001f;
- ์ฌ๋ผ์ด๋ ๋ฐ์ value๋ฅผ 0์ผ๋ก ์ค์ ํ์ฌ ๋ฐ์๋ฒจ์ -80dB๋ก ์ค์ ํ๋ ค๋ฉด volume ๊ฐ์ ์ต์ 0.0001f๋ก ์ค์ ํด์ผ ํ๋ฏ, ์์ ๊ฐ์ ๋ฐฉ์ด์ฝ๋๋ฅผ ์์ฑํ์ฌ ํด๊ฒฐํ๋ค.