Imported from thruthesky/godot (
SKILL.md). Install upstream withnpx skills add thruthesky/godot. Copyright stays with the author.
Godot โ 3D ๊ฒ์ ๊ฐ๋ฐยทํ์ต ์คํฌ
๐งญ ์์ด๋ณด๋ ์ฌ๊ธฐ๋ถํฐ โ ์ด ํ์ผ์ ๊ธธ๋ค. ์ง๊ธ ์ฝ์ ๊ฒ์ ์ ๋ฟ์ด๋ค
| ์์ | ๋ฌด์ | ์ด๋ |
|---|---|---|
| 0 | Godot ์ ๋ฐ๊ณ ์ฒซ ํ๋ก์ ํธ๋ฅผ ๋ง๋ ๋ค (๐ ๋ ๋๋ฌ Mobile) ยท ๊ณต์ ๋ฌธ์ ์ฝ๋ ๋ฒ | references/getting-started.md |
| 1 | ๊ฐ๋ โ ๋ ธ๋ยท์ฌยท์ธ์คํด์ฑยท์คํฌ๋ฆฝํธยท์๊ทธ๋ยท์๋ํฐ | basics/00-study-list.md โ 01-world ยท 02-scene ยท 03-instancing ยท 04-script ยท 05-signal ยท 06-editor-screen ยท 07-editor-input ยท 08-video ยท 09-controller ยท 10-animation (์์ธ: basics.md) |
| 2 | ์ โ ๋น ํ๋ก์ ํธ์์ ์บ๋ฆญํฐ๊ฐ ์์ง์ด๊ธฐ๊น์ง (๋งจ ์ "๋น ๋ฅธ ๊ธธ" 8๊ฐ ์กฐ์) | references/example.md |
- ์ฉ์ด๊ฐ ์ ๋ณด์ด๋ฉด dictionary.md ยท ์ฝ๋๋ฅผ ์ฐ๊ธฐ ์์ํ๋ฉด gdscript.md + LSP ยท ์คํ์ด ์ด์ํ๋ฉด debugging.md
- ๐ ๊ณต์ ํํ ๋ฆฌ์ผ์ ํ์ ์ถ๊ฐยท์๊ทผ ์นด๋ฉ๋ผยท๊ฑฐ๋ฆฌ ์ค์ ๋ฐ๋ฅด์ง ์๋๋ค โ ์ด ํ๋ก์ ํธ๋ ๊ด์ 0๊ฐยท์ง๊ต โ45ยฐ ๊ณ ์ ยท
size์ค์ด๋ค(example.md ยง0-B) - ์๋์ ์ ๋ ๊ท์นยท์ ์ฌ์ ์ค์ธกยท
/godot init์ ๊ฒ์์ ๋ง๋ค ๋ ์งํจ๋ค. ์ฒ์ ๋ฐฐ์ฐ๋ ๋์์ ์ ์ ์ผ๋ก ์ถฉ๋ถํ๋ค.
๋ค๋ฃจ์ง ์๋ ๊ฒ โ ๋ฌผ์ด๋ณด๋ฉด ๊ณต์ ๋ฌธ์๋ก ์๋ดํ๋ค
| ๋ฒ์ ๋ฐ | ์ด์ | ๊ณต์ |
|---|---|---|
2D ๊ฒ์(Node2DยทTileMapLayerยท2D ๋ฌผ๋ฆฌ) |
๋ผ๋ฆฌ์ 3D ๋ 3D. 2D ๋ UI(Control)๋ฟ โ hud-menu.md |
https://docs.godotengine.org/en/stable/tutorials/2d/index.html |
| C#/.NET ยท GDExtension ์ ์ | GDScript ๋ง ์ด๋ค(gdscript.md ๋ฒ์) | https://docs.godotengine.org/en/stable/tutorials/scripting/c_sharp/index.html |
| XR | ๋์ ์๋. ์ ์ํ์ง ์๋๋ค | https://docs.godotengine.org/en/stable/tutorials/xr/index.html |
| Web ๋ด๋ณด๋ด๊ธฐ | AndroidยทiOSยทSteam ๋ง | https://docs.godotengine.org/en/stable/tutorials/export/exporting_for_web.html |
| Godot ๊ณ ์์ค ๋ฉํฐํ๋ ์ด์ด๋ก ์๋ฒ ํต์ | ์๋ฒ๊ฐ Godot ์ด ์๋๋ค โ networking-lowlevel.md | โ |
์ต์ Godot ๊ธฐ์ค์ผ๋ก 3D ๊ฒ์์ ๊ฐ๋ฐํ๊ธฐ ์ํ ์ ์ฒด ๊ฐ๋ฐ ์ ๋ณด์ ๊ฒ์ฆ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ค.
์ด ์คํฌ์ ๋ ๊ฐ์ง ์ฑ๊ฒฉ
์ด ์คํฌ์ ๊ฐ๋ฐ ๊ท๋ฒ์ด์ ํ์ต ์๋ฃ๋ค. ๋ ๋ค์ด๋ฉฐ, ์ด๋ ํ์ชฝ์ด ์๋๋ค.
| ์ฑ๊ฒฉ | ๋ป |
|---|---|
| ๊ฐ๋ฐ ๊ท๋ฒ | ๋ผ๋ฆฌ์ 3D ์ฝ๋๋ ์ฌ๊ธฐ ์ ํ ๋ฐฉ์์ ๋ฐ๋ฅธ๋ค. "์ ๋ ๊ท์น" ์ ์ ์์ธ ์์ด ์งํจ๋ค |
| ํ์ต ์๋ฃ | ์ฌ์ฉ์๋ Godot ์ ๋ฐฐ์ฐ๋ฉด์ ๊ฒ์์ ๋ง๋ค๊ณ ์๋ค. ์์ง ์ฌ์ฉ๋ฒยท๊ธฐ๋ณธ ๊ฐ๋ ๋ ์ด ์คํฌ์ด ์ค๋ช ํ๋ค |
๊ทธ๋์ ๋ตํ ๋ ์งํฌ ๊ฒ
๊ฒฐ๊ณผ๋ง ์ฃผ์ง ๋ง๊ณ ์ ๊ทธ๋ฐ์ง๋ฅผ ํจ๊ป ์ค๋ช ํ๋ค. ์ฌ์ฉ์๋ ์ฝ๋๋ฅผ ๋ฐ๋ ๊ฒ์ด ์๋๋ผ Godot ์ ์ดํดํ๋ ค ํ๊ณ ์๋ค.
| ํ์ง ์๋๋ค | ํ๋ค |
|---|---|
| "์ด ์ฝ๋๋ฅผ ์ฐ์ธ์" ํ๊ณ ๋ | ๊ทธ ๋ ธ๋๊ฐ ๋ฌด์์ด๊ณ , ์ ๊ทธ ๋ ธ๋์ธ์ง, ๋์์ ๋ฌด์์ธ์ง ํ ์ค์ด๋ผ๋ ๋ถ์ธ๋ค |
| ์๋ํฐ ์กฐ์์ ๋ง๋ก๋ง | ์ด๋ ๋ ์์ ยท ์ด๋ค ๋ฒํผยท๋จ์ถํค๋ก ํ๋์ง ๊ฒฝ๋ก๋ฅผ ์ค๋ค |
| ์ฉ์ด๋ฅผ ์ค๋ช ์์ด ์ฌ์ฉ | ์ฒ์ ๋์ค๋ ์ฉ์ด๋ ๋ป์ ๋ฐํ๊ฑฐ๋ dictionary.md ๋ก ๋ณด๋ธ๋ค |
| ๊ฐ์ ์ถ์ธกํด์ ๋จ์ธ | ์์ง์์ ํ์ธํ๊ณ , ํ์ธํ๋ค๋ ์ฌ์ค๊ณผ ๊ฐ์ ํจ๊ป ๋ณด์ธ๋ค |
| ์คํฌ ๋ฌธ์์ ์์ด์ "๋ชจ๋ฅธ๋ค"ยท"๋ค๋ฃจ์ง ์๋๋ค" | ๐ ๋ฐ์์ ์ฐพ์ ํ์ธํ๊ณ ๋ตํ๋ค โ ๊ณต์ ๋ฌธ์ยท์์ง ์์คยท์น ๊ฒ์ยทํค๋๋ฆฌ์ค ์คํ (โ ์๋ ์ด ์คํฌ ๋ฌธ์๋ง ๋ณด๊ณ ๋ตํ์ง ์๋๋ค) |
๐ ์์ค ์ฝ๋๋ฅผ ์์ฒญ๋ฐ์ผ๋ฉด โ ์ฃผ์์ ๋จ ์ ์ฒด ํ์ผ๋ก ์ค๋ค
์ฌ์ฉ์๊ฐ "์์ค ์ฝ๋๋ฅผ ๋ณด์ฌ ๋ฌ๋ผ" ยท "์ค๋ช ์ ๋ฌ์ ๋ฌ๋ผ" ๊ณ ํ๋ฉด ์กฐ๊ฐ์ด ์๋๋ผ ํ์ผ ์ ์ฒด๋ฅผ, ๊ทธ ์๋ฆฌ์์ ์ฝ๊ณ ์ดํดํ ์ ์๋ ์ฃผ์๊ณผ ํจ๊ป ์ค๋ค.
ํ์ค ํ์์ example.md ยง7 ์ "๐ ์ฃผ์ ์์ ํ" ์ด๋ค. ์๋ก ์ฝ๋๋ฅผ ์ค๋ช ํ ๋๋ ๊ทธ ํ์์ ๋ฐ๋ฅธ๋ค.
| ๋ฐ๋์ ๋ด์ ๊ฒ | ์ |
|---|---|
| ํ์ผ ๋จธ๋ฆฌ ๋ธ๋ก | ์ด ์คํฌ๋ฆฝํธ๊ฐ ๋ถ๋ ์๋ฆฌ, ๊ธฐ๋ํ๋ ์ฌ ๊ตฌ์กฐ, ์ขํ ๊ท์ฝ |
| ํจ์๋ง๋ค | ๋๊ฐ ๋ถ๋ฅด๋๊ฐ(๋ด๊ฐ? ์์ง์ด?) ยท ์ธ์ ๋ถ๋ฅด๋๊ฐ ยท ์ด๋ฆ์ ํ๋ฆฌ๋ฉด ์ด๋ป๊ฒ ๋๋๊ฐ |
| ์คยท๋ธ๋ก๋ง๋ค | ๋ฌด์์ ํ๋๊ฐ โ ์ ๊ทธ๋ ๊ฒ ํ๋๊ฐ โ ๋ฐ๊พธ๋ฉด ์ด๋ป๊ฒ ๋๋๊ฐ |
| ํจ์ ํ์ | ๐ ๋ก ํ์ํ๊ณ ํ๋ ธ์ ๋ ๋์ค๋ ์ค์ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ ๋๋ค |
| ์ด๋ฆ์ ์ถ์ฒ | ์์ง์ด ์ ํ ์ด๋ฆ์ธ์ง, ๋ด๊ฐ ์ง์ ์ด๋ฆ์ธ์ง (๋ฐ๊ฟ๋ ๋๋์ง) |
| ๐ ์ ์ธ ์์ด ์ฐ๋ ์ด๋ฆ | extends ๋ก ๋ฌผ๋ ค๋ฐ์ ๊ทธ๋ฅ ์ฐ๋ ๊ฒ(velocityยทis_on_floor()ยทglobal_position โฆ)์ ์ฒ์ ๋์ค๋ ์๋ฆฌ์์ ์ ์ฒดยทํ์
ยท๋จ์ยท์ด๋ฆ์ ๋ฐ๊ฟ ์ ์๋์ง๊น์ง ๋ฐํ๋ค |
์ฃผ์์ ์คํ์ ์ํฅ์ด ์์ผ๋ฏ๋ก ๊ทธ๋๋ก ๋ณต์ฌํด ์จ๋ ๋๋ค๋ ๊ฒ์ ํจ๊ป ์๋ฆฐ๋ค.
๐ ๋ค ์ด ๋ค ๋ฐ๋์ ์ ๊ฒํ๋ค โ ํ์ผ ์์
varยทfunc๋ก ์ ์ธ๋์ง ์์๋๋ฐ ์ค๋ช ์์ด ๋ฑ์ฅํ๋ ์ด๋ฆ์ด ์๋์ง ํ๋๋ค. ๋ ์๋ ๊ทธ ์ด๋ฆ์ด ์ด๋์ ์๋์ง ์ ๋ฐฉ๋ฒ์ด ์๊ณ , "์ ์ด๊ฑด ์ค๋ช ์ด ์๋" ๋ก ๋งํ๋ค. ์ค์ ๋กvelocity๋ฅผ ๋น ๋จ๋ ค ์ง์ ๋ฐ์๋ค.
์ค๋ช ์ด ๋ฌธ์์ ์์ผ๋ฉด ๋จผ์ ๋ฌธ์์ ์ฑ์ฐ๊ณ ๋์ ๋ตํ๋ค. ๋ต๋ณ๋ง ํ๊ณ ๋๋ด๋ฉด ๊ฐ์ ์ง๋ฌธ์ด ๋ฐ๋ณต๋๊ณ , ๋ฌธ์์ ๋ต์ด ๊ฐ๋ผ์ง๋ค.
Godot ์ ์ฒ์ ์ ํ๋ ์ง๋ฌธ์ด๋ฉด basics.md ๋ฅผ ๋จผ์ ์ฝ๋๋ค.
๊ทธ ๋ฌธ์๋ ์์ธ์ด๊ณ , ๋ณธ๋ฌธ์ references/basics/ ์๋ 11๊ฐ ํํธ์ ์๋ค.
๋
ธ๋ยท์ฌยท์ธ์คํด์ฑยท๋ฆฌ์์คยท์๋ช
์ฃผ๊ธฐยท์๋ํฐ ํ๋ฉด ๊ตฌ์ฑ์ด ๊ฑฐ๊ธฐ ์๋ค.
์ ๋ด์ฉ์ ์ด๋ ๋ฌธ์์ ๋ฃ์ ๊ฒ์ธ๊ฐ
๊ธฐ๋ณธ์ basics/ ์ ํด๋น ํํธ๋ก ๋ชจ์๋ค(์์ธ์ basics.md). ๋ฌธ์๊ฐ ๋์ด๋ ์๋ก "๊ธฐ๋ณธ ๊ฐ๋
์
์ฐพ์ผ๋ ค๋ฉด ์ด๋๋ฅผ ๋ด์ผ ํ๋๊ฐ"๊ฐ ํ๋ ค์ง๋ฏ๋ก, ์๋ ๊ธฐ์ค์ผ๋ก ๊ฐ๋ผ ๋๋๋ค.
| ์ฑ๊ฒฉ | ๋ฃ์ ๊ณณ |
|---|---|
| ๊ธฐ๋ณธ ๊ฐ๋ ยท๊ธฐ๋ณธ ๋ฌธ๋ฒยท๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ โ Godot ์ ๋ฐฐ์ฐ๋ ์ฌ๋์ด ์์์ผ ํ ๊ฒ | basics/ ์ ํด๋น ํํธ (00 ๊ณต๋ถ ๋ชฉ๋ก ยท 01 ์ธ๊ณ๊ด ยท 02 ์ฌ ยท 03 ์ธ์คํด์ฑ ยท 04 ์คํฌ๋ฆฝํธ ยท 05 ์๊ทธ๋ ยท 06 ์๋ํฐ ํ๋ฉด ยท 07 ์๋ํฐ ์กฐ์ ยท 08 ๊ฐ์ข ยท 09 ์ปจํธ๋กค๋ฌ ยท 10 ์ ๋๋ฉ์ด์ ) โ ์์ธ basics.md ์ ์ค ์ยท์์ฝ๋ ํจ๊ป ๊ฐฑ์ ํ๋ค |
| ์ ์ฌ์(3GB RAM) 60fps ์ค์ธกยท๋ ธํ์ฐ โ ๋ฒ ์ดํนยท๋ณ๋ชฉ ์ง๋จยท๋ณธ ์ยทํฌ๋์ ํํผ | lowend-3gb-60fps.md |
| ์ ์ฌ์์์ LODยท์ปฌ๋งยทํด์๋ ์ค์ผ์ผ๋งยทVRS ๋ฅผ ์ธ์ง ๋ง์ง โ ์์ง ๊ธฐ๋ฅ๋ณ ํ์ | lowend-culling-lod.md |
| ์ฉ์ด์ ๋ป ํ ๊ฐ์ง | dictionary.md |
| ํน์ ์์ญ์ ํ ํฌ๋ยท์ฌํยท์ค์ ํจํด | ๊ทธ ์์ญ ๋ฌธ์ (physics-3d, rendering-3d, animation-3d โฆ) |
| ๋ฌธ๋ฒ์ ์ ์ ๋ชฉ๋กยท์์ธ ๋ ํผ๋ฐ์ค | gdscript.md |
ํ๋จ์ด ์ ๋งคํ๋ฉด ์ด๋ ๊ฒ ๊ฐ๋ฅธ๋ค โ "Godot ์ ์ฒ์ ๋ฐฐ์ฐ๋ ์ฌ๋์ด ์ด๊ฑธ ๋ชฐ๋ผ์ ๋งํ๋๊ฐ?"
๊ทธ๋ ๋ค๋ฉด basics/ ์ ํด๋น ํํธ๋ค. "์ด๋ฏธ ์๋ ์ฌ๋์ด ๋ ์ํ๋ ค๊ณ ์ฐพ๋ ๊ฒ์ธ๊ฐ?" ๊ทธ๋ ๋ค๋ฉด ์์ญ ๋ฌธ์๋ค.
๊ฐ์ ์ฃผ์ ๋ฅผ ์์ชฝ์ ์ธ ๋๋ basics/ ํํธ์ ๊ฐ๋
์, ์์ญ ๋ฌธ์์ ์ค์ ์ ๋๊ณ ์๋ก ๋งํฌํ๋ค.
์ธ์คํด์ฑ์ด ๊ทธ ์๋ค โ ๊ฐ๋
๊ณผ 4๋จ๊ณ๋ basics/03-instancing.md, ์คํฌ๋ยทํ๋ง ๊ฐ์ ํจํด์
nodes-scenes.md ยง4 ์ ์๋ค.
ํน์ ํจ์น ๋ฒ์ ์ ๋ฌถ์ธ ๋ฌธ์๊ฐ ์๋๋ค. ์ ๊ธฐ๋ฅ์ ๋์
๋ฒ์ ์ ํ๊ธฐํด
((4.5+), (4.6 ์ ๊ท), (4.7 ์ ๊ท)) ์ธ ์ ์๋์ง ๋ฐ๋ก ํ๋จํ๊ฒ ํ๋ค.
๋ฒ์ ๋ณ ์ ๊ธฐ๋ฅ๊ณผ ์
๊ทธ๋ ์ด๋ ์ ์ฐจ๋ references/whats-new.md์ ๋ชจ์ ๋๋ค.
๊ฒ์ฆ ๊ธฐ์ค: ๋ฌธ์์ APIยท๊ธฐ๋ณธ๊ฐยท์ค์ ํค๋ ์์ง์์ ์ง์ ์ถ์ถยท์คํํด ํ์ธํ ๊ฒ์ด๋ฉฐ, ํ์ฌ ํ์ธ ๊ธฐ์ค ๋ฒ์ ์
godot --version๊ธฐ์ค 4.7.2.stable์ด๋ค. ์์ง์ ์ฌ๋ ธ๋ค๋ฉด ๊ฐ์ด ๋ฌ๋ผ์ง ์ ์์ผ๋ฏ๋ก, ์์ฌ์ค๋ฌ์ฐ๋ฉด ๊ทธ ์๋ฆฌ์์ ๋ค์ ํ์ธํ๋ค.godot --version # ํ์ฌ ์์ง ๋ฒ์ godot --headless --doctool /tmp/gddoc # ํด๋์ค ์ ์ XML ์ ์ฒด ์ถ์ถ
/godot init ๊ณผ ./install.sh โ ์ ์ฐจ๋ references/godot-init.md
์ฌ์ฉ์๊ฐ /godot init ์ด๋ผ๊ณ ์ง์ํ๋ฉด ์ธ ๊ฐ์ง๋ฅผ ํ๋ค โ โ ์ด ์คํฌ์ commands/godot-example.md ๋ฅผ ๋์
ํ๋ก์ ํธ์ .claude/commands/ ๋ก ๋ณต์ฌํ๋ค(๊ทธ ๋ค๋ก๋ /godot-example ์ฒ๋ผ ์งง๊ฒ ๋ถ๋ฅธ๋ค). โก ํ๋ก์ ํธ ๋ฃจํธ์
install.sh โ .claude/skills/godot/scripts/install.sh ๋ฅผ ๊ฐ๋ฆฌํค๋ ์๋๊ฒฝ๋ก ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๊ฑด๋ค โ ๋ณต์ฌ๊ฐ
์๋๋ค. โข scripts/triangles.sh โ ../.claude/skills/godot/scripts/triangles.sh ๋งํฌ๋ฅผ ๊ฑด๋ค(๐ scripts/ ์์
์์ผ๋ฏ๋ก .. ์ด ํ๋ ๋ ๋ถ๋๋ค). ๋ณต์ฌํ๋ฉด ์คํฌ์ ๊ณ ์ณ๋ ์ฌ๋ณธ์ ์๋ ๊ทธ๋๋ก ๋จ์ง๋ง, ๋งํฌ๋ ๋ชจ๋ ํ๋ก์ ํธ์ ์ฆ์ ๋ฐ์๋๋ค.
๐ ๊ฐ์ ์ด๋ฆ์ ํ์ผ์ด ์ด๋ฏธ ์์ผ๋ฉด ๋ฎ์ด์ฐ์ง ์๊ณ ์ฐจ์ด๋ฅผ ๋ณด์ฌ์ฃผ๋ฉฐ, ln -sf ๋ฅผ ์ฐ์ง ์๊ณ (์ง์ง install.sh ๋ฅผ
๋ง์์ด ์ง์ด๋ค), ์๋ณธ ์กด์ฌ๋ฅผ ๋จผ์ ํ์ธํ๊ณ , ๋ง๋ ๋ค ./install.sh --list ๋ก ๊ฒ์ฆํ๋ค. ์ธ์๋ก ๊ฒฝ๋ก๊ฐ ์ค๋ฉด
(/godot init ~/apps/ex2) ๊ทธ ํ๋ก์ ํธ์, ์์ผ๋ฉด ํ์ฌ ํ๋ก์ ํธ์ ์ค์นํ๋ค. ํ์ ์๋ ํ์ผ์ ์ค์นํ์ง ์๋๋ค.
์ค์น ๋ช
๋ น ์ ๋ฌธยท์งํฌ ๊ฒ 8๊ฐ์งยทWindows ๋์ยทproject.godot ํ์ ๊ท์น์ ์ ๋ฌธ์์ ์๋ค.
๐ ์ด ์คํฌ ๋ฌธ์๋ง ๋ณด๊ณ ๋ตํ์ง ์๋๋ค โ ๋ฐ์์ ์ฐพ์ ํ์ธํ๋ค
์ด ์คํฌ์ ์ถ๋ฐ์ ์ด์ง ์ธํ๋ฆฌ๊ฐ ์๋๋ค. ์ฌ๊ธฐ์ ์ ํ ๊ฒ์ ์ด ํ๋ก์ ํธ๊ฐ ๋ด๋ฆฐ ๊ฒฐ์ ๊ณผ ์ค์ธก ๊ธฐ๋ก์ด์ง Godot ์ ์ ๋ถ๊ฐ ์๋๋ค. ์คํฌ์ ์๋ค๊ณ ํด์ "์๋ค"ยท"๋ชจ๋ฅธ๋ค"ยท"์ ๋๋ค"๊ณ ๋ตํ์ง ์๋๋ค.
๊ทผ๊ฑฐ์ ์ฐ์ ์์ โ ์์ชฝ์ด ํญ์ ์ด๊ธด๋ค
| ์์ | ๊ทผ๊ฑฐ | ๋ฌด์์ ๋ฌผ์ ๋ |
|---|---|---|
| 1 | ์์ง์์ ์ง์ ํ์ธ (doctool ยท ํค๋๋ฆฌ์ค ์คํ ยท ์์ค) | ๊ฐยท๊ธฐ๋ณธ๊ฐยท์ค์ ๋์ |
| 2 | ์ด ์คํฌ์ references | ์ด ํ๋ก์ ํธ์ ๊ท๋ฒยท๊ฒฐ์ ยท์ด๋ฏธ ์ฐ ์ค์ธก |
| 3 | ๊ณต์ ๋ฌธ์ ยท ์์ง ์์ค์ฝ๋ | ์คํฌ์ ์๋ APIยท์๊ทธ๋์ฒยท์๋ํฐ ๋์ |
| 4 | ์น ๊ฒ์ | ์ต์ ์ด์ยท๋ฒ์ ๋ณ ๋ณ๊ฒฝยท์๋ํํฐ ์ ๋์จยท๋จ๋ค์ด ๊ฒช์ ํจ์ |
| โ | ๊ธฐ์ต(์ฌ์ ํ์ต ์ง์) | ๐ ์ถ๋ฐ์ ์ผ ๋ฟ ๊ทผ๊ฑฐ๊ฐ ์๋๋ค. ์ด๋๋ฅผ ํ์ธํ ์ง ์ ํ๋ ๋ฐ๋ง ์ด๋ค |
์ถฉ๋ํ๋ฉด 1๋ฒ์ด ์ด๊ธด๋ค. ์ด ์คํฌ ๋ฌธ์๊ฐ ์์ง ์ค์ธก๊ณผ ๋ค๋ฅด๋ฉด ๋ฌธ์๊ฐ ํ๋ฆฐ ๊ฒ์ด๋ฏ๋ก ๊ณ ์น๋ค. ๊ธฐ์ต์ด ๋ฌธ์์ ๋ค๋ฅด๋ฉด ๋ ๋ค ์์ฌํ๊ณ ์์ง์์ ํ์ธํ๋ค.
์ฌ์ ํ์ต ์ง์์ ์ด๋ป๊ฒ ์ฐ๋
๋ต์ผ๋ก ์ฐ์ง ๋ง๊ณ ๊ฐ์ค๋ก ์ด๋ค.
| ๐ ์ด๋ ๊ฒ ํ์ง ์๋๋ค | โ ์ด๋ ๊ฒ ํ๋ค |
|---|---|
| "์ ๊ธฐ์ต์ผ๋ก๋ ๊ธฐ๋ณธ๊ฐ์ด 1.0 ์ ๋๋ค" | doctool ๋ก ๋ฝ์ "ํ์ธํ๋๋ 0.7853982 ์์ต๋๋ค" |
| "์๋ง ์ด ๋ฉ์๋๊ฐ ์์ ๊ฒ๋๋ค" | ํด๋์ค XML ์ grep ํด ์๊ทธ๋์ฒ๋ฅผ ๊ทธ๋๋ก ์ธ์ฉ |
| ์คํฌ์ ์์ด์ "๋ค๋ฃจ์ง ์์ต๋๋ค" | ๊ณต์ ๋ฌธ์ยท์์ค๋ฅผ ์ฐพ์๋ณด๊ณ ๋ตํ๋ค |
Godot ์ ๋ฒ์ ๋ง๋ค API ๊ฐ ๋ฐ๋๋ค. ๊ธฐ์ต์ ์ด๋ ๋ฒ์ ๊ฒ์ธ์ง ์ ์ ์์ผ๋ฏ๋ก ๊ทธ ์์ฒด๋ก๋ ๊ทผ๊ฑฐ๊ฐ ๋์ง ๋ชปํ๋ค.
์ค์ ๋ก ์ฐ๋ ํ์ธ ์๋จ
# โ ํด๋์ค ์ ์ ์ ์ฒด ์ถ์ถ โ ๊ธฐ๋ณธ๊ฐยท์๊ทธ๋์ฒยทenum ๊ฐ์ 1์ฐจ ์ถ์ฒ
godot --headless --doctool /tmp/gddoc
grep -oE '<member name="floor_max_angle"[^>]*default="[^"]*"' /tmp/gddoc/doc/classes/CharacterBody3D.xml
# โก ์์ง ์์ค์์ ํ์ธ โ ์๋ํฐ ๋์ยท๋จ์ถํคยท๋ด๋ถ ๊ท์น์ ๋ฌธ์์ ์๋ค
curl -sfL -o /tmp/x.cpp https://raw.githubusercontent.com/godotengine/godot/4.7/<๊ฒฝ๋ก>
grep -n 'ED_SHORTCUT("spatial_editor/snap"' /tmp/x.cpp
# โข ํค๋๋ฆฌ์ค๋ก ์ค์ ์คํ โ "์ ๋ง ๊ทธ๋ฐ๊ฐ"๋ฅผ ์ฌ๋ ๊ฐ์ฅ ํ์คํ ๋ฐฉ๋ฒ
godot --headless --path <์คํฌ๋์นํจ๋ ํ๋ก์ ํธ> --script res://check.gd
# โฃ ๋ฌธ๋ฒ๋ง ๊ฒ์ฌ โ ์คํํ์ง ์๊ณ ํ์ฑ ๊ฒฐ๊ณผ๋ง
godot --headless --path . --check-only --script res://x.gd
# โค ์๋ํฐ๊ฐ ๋ ์์ผ๋ฉด LSP
python3 .claude/skills/godot/scripts/gdscript_lsp.py hover res://a.gd 42 10
์น์ ์ด๋ ๊ฒ ์ด๋ค โ ๊ณต์ ๋ฌธ์(docs.godotengine.org/en/4.7/), ํด๋์ค ๋ ํผ๋ฐ์ค,
GitHub ์ด์ยทPR, Asset Store. ๋ค๋ง ์น์์ ๋ณธ ๊ฒ๋ ๊ทธ๋๋ก ์ฎ๊ธฐ์ง ์๊ณ
์์ง์์ ๋ค์ ํ์ธํ๋ค. ๋ธ๋ก๊ทธยท๊ฐ์ข๋ ๋๊ฐ ์ ๋ฒ์ ๊ธฐ์ค์ด๋ค.
๊ฒ์ฆ์ฉ ์ฝ๋๋ ์ฌ์ฉ์ ํ๋ก์ ํธ์ ๋ง๋ค์ง ์๋๋ค
ํ์ธํ๋ ค๊ณ ๋ง๋ ์์ ์ฌยท์คํฌ๋ฆฝํธ๋ ์คํฌ๋์นํจ๋์ ๋๊ณ , ๋๋๋ฉด ์ง์ด๋ค. ์ฌ์ฉ์์ ํ๋ก์ ํธ๋ฅผ ์คํ์ฅ์ผ๋ก ์ฐ์ง ์๋๋ค.
์์๋ธ ๊ฒ์ ๋ฌธ์์ ๋จ๊ธด๋ค
๋ฐ์์ ์ฐพ์ ํ์ธํ ๊ฐยท๋์ยทํจ์ ์ ๊ทธ ์๋ฆฌ์์ ๋ตํ๊ณ ๋๋ด์ง ๋ง๊ณ ํด๋น reference ์ ์ ๋๋ค. ๊ทธ๋ฌ์ง ์์ผ๋ฉด ๊ฐ์ ๊ฒ์ ๋งค๋ฒ ๋ค์ ์ฐพ๊ฒ ๋๊ณ , ๋ต๊ณผ ๋ฌธ์๊ฐ ๊ฐ๋ผ์ง๋ค.
"์์ง์์ ํ์ธํ๋ค"๋ ์ฌ์ค๊ณผ ํ์ธํ ๊ฐ์ ํจ๊ป ์ ๋๋ค. ๋์ค์ ๋ฒ์ ์ด ์ฌ๋ผ ๊ฐ์ด ๋ฌ๋ผ์ก์ ๋ ๋ฌด์์ ๋ค์ ์ฌ์ผ ํ๋์ง ์ ์ ์๋ค.
๐ ๊ฒ์ ๊ท์น์ game ์คํฌ์ SSOT ๊ฐ ์ต์ข
๊ถ์๋ค
์ด ์คํฌ์ ์์ง ์ฌ์ฉ๋ฒ์ ๋ด๋๋ค. "๋ผ๋ฆฌ์์ด ์ด๋ค ๊ท์น์ผ๋ก ๋ง๋ค์ด์ง๋๊ฐ" ๋
game ์คํฌ์ SSOT.md ์ ์๊ณ ๊ทธ์ชฝ์ด ์ต์ข
๊ถ์๋ค.
| ์ด ์คํฌ์์ ๋ค๋ฃจ๋ ๊ฒ | SSOT ๊ฐ ์ ํ๋ ๊ฒ |
|---|---|
Camera3D ์ fovยทํฌ์ยทSpringArm3D ์ฌ์ฉ๋ฒ |
์นด๋ฉ๋ผ ๊ฐ๋๋ ํ์ 3์ถ ์ ๋ถ ๊ณ ์ (ํผ์น โ45ยฐยทyaw 0ยฐยทroll 0ยฐ), ์ค๋ง 0.5~2๋ฐฐ |
LightmapGI ๊ตฝ๋ ๋ฐฉ๋ฒยท์ค์ |
๋์ ์กฐ๋ช ์ ์กด์ฌํ์ง ์๋๋ค โ ๋ฎ/๋ฐคยท๋ ์จยท๋์ ๊ทธ๋ฆผ์ ์ ๋ฉด ๊ธ์ง |
glTF ์ํฌํธ ์ต์
(root_scaleยท์ถ ๋ณํ)์ด ๋ฌด์์ ํ๋๊ฐ |
๐ ๋ณด์ ์ฉ๋๋ก๋ ์ฐ์ง ์๋๋ค. .glb ๊ฐ ์ ๋ณธ์ด๊ณ , ๊ฐ์ด ํ๋ ธ์ผ๋ฉด Blender ๋ก ๋์๊ฐ๋ค |
| ๋๋ก์ฐ์ฝ์ ์ค์ด๋ ๊ธฐ๋ฒ | ์์ฐ์ 300 (ํ ์ค์ฒ 200MB ยท ๋ฉ๋ชจ๋ฆฌ 1,120MB) |
visibility_rangeยทMultiMesh API |
๊ฑฐ๋ฆฌ 3๊ตฌ๊ฐ ๋ฐฐ๋ถ(AOI 82๊ฐ โ 8/20/54) |
์์ง์ด ํ ์ ์๋ ๊ฒ๊ณผ ์ด ๊ฒ์์ด ํ๊ธฐ๋ก ํ ๊ฒ์ ๋ค๋ฅด๋ค. ์: Godot ์ ์ค์๊ฐ ๊ทธ๋ฆผ์๋ฅผ ์ง์ํ์ง๋ง ๋ผ๋ฆฌ์ 3D ๋ ์ฐ์ง ์๋๋ค. ๊ธฐ๋ฅ์ ์ ์ํ๊ธฐ ์ ์ SSOT ๋ฅผ ํ์ธํ๋ค.
ํ์ฌ ํ๋ก์ ํธ ์ปจํ ์คํธ
project.godot์ ๊ณ ์ ๋ ๊ฐ์ด๋ฉฐ, ๋ชจ๋ ์ฝ๋๋ ์ด ์ ์ ์์์ ์์ฑํ๋ค.
| ํญ๋ชฉ | ๊ฐ | ๊ฐ๋ฐ์ ์๋ฏธ |
|---|---|---|
config/name |
Laryen 3D |
ํ๋ก์ ํธ ์ด๋ฆ |
config/features |
4.7, Mobile |
Godot 4.7 API, Mobile ๋ ๋๋ฌ |
renderer/rendering_method |
mobile |
SDFGIยทVoxelGIยทSSRยทSSAOยทSSILยท๋ณผ๋ฅ๋ฉํธ๋ฆญ ํฌ๊ทธยทTAA ์ฌ์ฉ ๋ถ๊ฐ |
3d/physics_engine |
Jolt Physics |
Godot Physics ์ ์ฉ ์กฐ์ธํธ ์์ฑ ์ฌ์ฉ ๋ถ๊ฐ |
rendering_device/driver.windows |
d3d12 |
Windows๋ Direct3D 12, ๊ทธ ์ธ๋ Vulkan/Metal |
window/stretch/mode |
canvas_items |
UI ์ค์ผ์ผ๋ง ๋ฐฉ์ |
๐ ์ต์ ์ง์ ์ฌ์ โ 3GB RAM Android (Galaxy A12 ๊ธ) ์์ 60fps
๋ชจ๋ฐ์ผ 3D MMORPG ์ ์ต์ ์ง์ RAM ์ 3GB ๋ค.
"์์ฆ ํฐ์ 8GB ๋๊น" ๋ก ๊ธฐ์ค์ ์ฌ๋ฆฌ์ง ์๋๋ค. MMORPG ๋ ์๋ช ์ด ๊ธธ๊ณ , ๊ทธ ๊ธฐ๊ฐ ๋ด๋ด ๊ตฌํ ๊ธฐ๊ธฐ๊ฐ ์ ์ํ๋ค. ๊ธฐ์ค์ ์ฌ๋ฆฌ๋ ์๊ฐ ์ค์ฌ์ฉ์์ ์๋น์๊ฐ ์๋ ค ๋๊ฐ๋ค. FPS ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ทธ๋ํฝ ํ์ง๋ณด๋ค ์ฐ์ ํ๋ค.
๐ ์ ์ฌ์ 60fps ์์ ์ ์์ํ๊ธฐ ์ ์ ๋ฐ๋์ ์ฝ๋๋ค โ references/lowend-3gb-60fps.md
ํ๋ก์์ ๋ด ์์ฑ โ ๋น๋ ํ์ ๋ฒ ์ดํน ํ์ดํ๋ผ์ธ, ๋ณ๋ชฉ์ ์คํ์ผ๋ก ๊ฐ๋ ค๋ด๋ ์ ์ฐจ, ์กฐ๋ช ์ ์ ์ ์ปฌ๋ฌ์ ๊ตฝ๋ ๋ฒ, ์คํจ๋ ์บ๋ฆญํฐ 30๋ช ์ด์์ 60fps ๋ก ๋๋ฆฌ๋ ๋ฒ, ์ ์ฌ์ ๊ธฐ๊ธฐ์ ํฌ๋์ ํํผ๊น์ง A12 ์ค์ธก ๊ธฐ๋ก์ผ๋ก ์ ๋ฆฌ๋์ด ์๋ค.
๊ธฐ์ค ๊ธฐ๊ธฐยท์ค์ธก๊ฐยท๊ท๋ฒ์ references/performance-mobile.md ยง0 ์๋ ์๊ณ , ์ฑ๋ฅ ํ๋จ์ ํ๊ธฐ ์ ์ ๋ฐ๋์ ๊ทธ ์ ์ ๋จผ์ ์ฝ๋๋ค.
| ์ค์ธก ์์ฝ (SM-A125N ยท PowerVR GE8320 ยท Mobile ๋ ๋๋ฌ) | |
|---|---|
| ๐ ์กฐ๋ช ์ ์ฐ์ง ์๋๋ค โ ์ค์๊ฐ๋, ๋ผ์ดํธ๋งต๋ | ๋ผ์ดํธ๋งต 1.0fps / ์ค์๊ฐ 22.3fps / ์กฐ๋ช
์์ 60fps. โ ๏ธ ์์ง์ด ๋ชป ํ๋ ๊ฒ์ด ์๋๋ค โ Mobile ๋ ๋๋ฌ๋ LightmapGI ๋ ๋๋ง์ ์ง์ํ๋ค(๊ณต์ Overview of renderers). A12 ์์ ๋๋ฌด ๋๋ ค ์ฐ๋ฆฌ๊ฐ ์ฐ์ง ์๊ธฐ๋ก ํ ๊ฒ์ด๋ค |
๋ฐ๋ณต ๋ฐฐ์น๋ ๋ฌด์กฐ๊ฑด MultiMeshInstance3D |
Mobile ๋ ๋๋ฌ์ ์๋ ์ธ์คํด์ฑ์ด ์๋ค (์ค๊ธฐ๊ธฐ DC 300 vs 1) |
| ๐ ๋ฉ๋ชจ๋ฆฌ๋ ์์ฐ์ด๋ค | ๋ฐ๋ณต๋ฌผ์ ๋ณํฉํ๋ฉด ์ ์ ์ด ๋ณต์ ๋์ด ๋ฉ๋ชจ๋ฆฌ 400๋ฐฐ. ๋๋ฌด 1,000๊ทธ๋ฃจ = MultiMesh 81KB vs ๋ณํฉ 33MB โ lowend-3gb-60fps.md ยง5.3 |
| ํด๋ฆฌ๊ณค์ ์๋ผ์ง ์์๋ ๋๋ค | ์งํ ์ผ๊ฐํ 20๋ง๊น์ง ์ค์ง ๋ฌดํด |
| ์ง์ง ๋ณ๋ชฉ์ ํฝ์ ๋น ์ ฐ์ด๋ฉ | ์ผ๊ฐํ 2๊ฐ์ง๋ฆฌ ๋ฉด ํ๋๊ฐ 60โ22fps |
| ์คํจ๋ ์บ๋ฆญํฐ๋ ๋ณธ ์๊ฐ ๊ณง ํ๋ ์ | 30๋ช ๊ธฐ์ค ๋ณธ 25 โ 40.3fps / ๋ณธ 16 โ 60.0fps |
| ๋ณ๋ชฉ์ ํ๋๊ฐ ์๋๋ค โ ์์๋๋ก ๋๋ฌ๋๋ค | ๋ฉ๋ชจ๋ฆฌ โ ๋๋ก์ฐ์ฝ โ ์ ์ โ VRAM โ ์ค์ผ๋ ํค โ ๋ก๋ฉ |
| ๐ ์บ๋ฆญํฐ ์ผ๊ฐํ์ ํฝ์ ๋ก ์ ํ๋ค | ์ง๊ต ๊ณ ์ ์ด๋ผ ์ผ๊ตด์ด ํ๋ฉด์์ ์ต๋ 38ร36 px(์ค์ธก). ๋จธ๋ฆฌ ์ผ๊ฐํ 2,304๊ฐ๋ฅผ ๋์ผ๋ฉด ํ๋ฉด์ด ํ ํฝ์ ๋ ์ ๋ฌ๋ผ์ง๋ค โ NPC 5,000 ยท ํ๋ ์ด์ด 15,000 ์ด ์ํ์ด๊ณ 2๋ง์ ํ๋ฉด์ ๋ํ๋์ง ์๋๋ค. "2๋ง ์ดํ๋ฉด ์ผ๊ตด์ด ๋ญ๊ฐ์ง๋ค"๋ ์๊ทผ ํด๋ก์ฆ์ ๊ฒ์์ ์ด์ผ๊ธฐ๋ค โ ยง7.5 |
| ๐ ์ผ๊ตด์ด ๋ญ๊ฐ์ง๋ฉด ์ด๋์ด ์๋๋ผ ๋ฐฐ๋ถ์ ๋ณธ๋ค | male.glb ๋ 4,798 ์ค 95%๊ฐ ๊ฒ ํ ์๋ฃจ, ๋ชธํต 234 ยท ์ผ๊ตด 0๊ฐ์๋ค(2026-09-02). ์ด๋์ ์ฌ๋ ค๋ ๋น์จ์ด ๊ฐ์ผ๋ฉด ๊ทธ๋๋ก๋ค |
| ๋๋ก์ฐ์ฝ ํ๊ณ๋ 650~900 | ๋ณํฉ ์ 1,291 โ ๋ณํฉ ํ 6. DC 83 ์ ๋ฌธ์ ๊ฐ ์๋์๋ค |
| ๐ VRS ๋ A12 ์์ ์ผ๋ ์๋ฌด ์ผ๋ ์ ์ผ์ด๋๋ค | Snapdragon 888+ / Dimensity 9000+ / Mali-G615+ ๋ง ์ง์. ๊ฒฝ๊ณ ์์ด ๋ฌด์๋๋ค โ lowend-culling-lod.md ยง7 |
| ๐ FSR ์ Mobile ๋ ๋๋ฌ์์ ๋ชป ์ด๋ค | ํด์๋ ์ค์ผ์ผ๋ง์ Bilinear ๋ง. 2D UI ๋ ์ ์ํ๋ค โ lowend-culling-lod.md ยง6 |
| ํ๋ก์์ ๋ด์ ๋น๋ ํ์์ ๊ตฝ๋๋ค | ๋ฐฐ์น 6,227๊ฐ๋ฅผ 3.4์ด์ bake โ ๋ฐํ์ ์์ฑ ์ฝ๋ 0์ค ยท DC 9~23 |
| ๋ฆฌ์์ค๋ฅผ ํ๊บผ๋ฒ์ ๋ก๋ํ๋ฉด ๋๋ผ์ด๋ฒ๊ฐ ์ฃฝ๋๋ค | SIGSEGV in WorkerThread โ ํ๋ ์์ ๋๋ ์ฝ์ผ๋ฉด 5/5 ์ฑ๊ณต |
Mobile ๋ ๋๋ฌ ์ ์ ๋ก ๋ฐ๋์ ์งํฌ ๊ฒ
- ๐ ๊ฐ์ ๋ชจ์์ด ๋๋ ๋ฐ๋ณต๋๋ ๊ฒ(๋๋ฌดยทํยท๋ฐ์)์
MultiMeshInstance3D๋ก ๋ฌถ๋๋ค. ๋ณํฉํ๋ฉด ์ ์ ์ด ๊ฐ์๋งํผ ๋ณต์ ๋์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ 400๋ฐฐ ์ด๋ค. ๋ณํฉ์ ๊ผญ์ง์ ๋จ์๋ก ๋ฐ๊ธฐ๊ฐ ๋ฌ๋ผ์ผ ํ ๋๋ง ์ง๋ถํ๋ ๋๊ฐ๋ค (โ lowend-3gb-60fps.md ยง5.3). - ๐ ๊ด์ ๋
ธ๋๋ฅผ ์ฌ์ ๋์ง ์๋๋ค. ์กฐ๋ช
์ ๋น๋ ํ์์ ์ ์ ์ปฌ๋ฌ๋ก ๊ตฝ๊ณ
๋ฐํ์ ๋จธํฐ๋ฆฌ์ผ์
SHADING_MODE_UNSHADED+vertex_color_use_as_albedo๋ฅผ ์ด๋ค.LightmapGI๋ ์ ์ฌ์์์ ์คํ๋ ค ๊ฐ์ฅ ๋๋ฆฌ๋ค (โ performance-mobile.md ยง8). SDFGI/VoxelGI๋ Mobile ๋ ๋๋ฌ์ ์๋ค. ์ ์ํ์ง ์๋๋ค.- ์ํฐ์์ผ๋ฆฌ์ด์ฑ์
MSAA 3D๋๋FXAA/SMAA๋ฅผ ์ด๋ค.TAA/FSR2๋ ์๋ค. - ํ์ฒ๋ฆฌ๋
Glow,Adjustments, ๊ธฐ๋ณธFog๊น์ง๋ง ๊ฐ๋ฅํ๋ค. SubsurfaceScattering์ Forward+ ์ ์ฉ์ด๋ฏ๋ก ๋จธํฐ๋ฆฌ์ผ์์ ์ฐ์ง ์๋๋ค.- AO๋ ํ๋ฉด๊ณต๊ฐ ๋์ ์ ์ ์ปฌ๋ฌ์ ๊ตฌ์ด AO ๋๋ ๋ฒ ์ดํน๋ AO ํ ์ค์ฒ๋ฅผ ์ด๋ค.
- โ
Decal์ Mobile ์์ ๋์ํ๊ณ , ๊ด์ 0๊ฐยทUNSHADED์์๋ ๊ทธ๋๋ก ๋์จ๋ค(์ค์ธก). ์ง๋ฉด ์ผ๋ฃฉยทํ์๊ตญยท๊ฒฝ๊ณ ํ์์ ์ธ ์ ์๋ค. ๋จ Compatibility ์์๋ ์กฐ์ฉํ ๋ฌด์๋๊ณ , ๊ฒน์น ์๋ก ํ๋๊ทธ๋จผํธ ๋น์ฉ์ด ์์ด๋ฏ๋กdistance_fade์ ๊ฐ์ ์ํ์ ๋๋ค (โ rendering-3d.md ยง11). - ๐
CompositorEffect๋ Mobile ์์๋ ๋์ํ์ง๋ง ๊ธฐ๋ณธ์ ์ผ๋ก ์ฐ์ง ์๋๋ค. ์ ์ฒด ํ๋ฉด ์ปดํจํธ ํจ์ค๊ฐ ํ์ผ๋ GPU ์ ๋์ญํญ์ ํฌ๊ฒ ๋จน๋๋ค. ์๋ณด์ ์EnvironmentAdjustments, ์ธ๊ณฝ์ ์next_pass๋ก ํผ๋ค (โ rendering-3d.md ยง11-2).
๋ ๋๋ฌ๋ณ ์ง์/๋ฏธ์ง์ ์ ์ฒด ํ๋ references/rendering-3d.md์ ์๋ค. ๋ ์ฉ์ด์ ๋ปยท์ ๋ยทํ๋จ ๊ธฐ์ค์ references/dictionary.md ์ ์๋ค.
์์ ํ๋ฆ โ ์ด ์์๋ฅผ ์งํจ๋ค
1. ์์ ์
- ๋ฒ์ ํ์ธ:
godot --version์ผ๋ก ํ์ฌ ์์ง ๋ฒ์ ์ ๋ณธ๋ค. ์ฐ๋ ค๋ ๊ธฐ๋ฅ์ ๋์ ๋ฒ์ ์ด ๊ทธ๋ณด๋ค ๋์ผ๋ฉด ์ ๋๋ค. ๋ฒ์ ๋ณ ์ ๊ธฐ๋ฅ๊ณผ ์ ๊ทธ๋ ์ด๋ ์ ํ์ธํ ๊ฒ์ references/whats-new.md์ ์ ๋ฆฌ๋์ด ์๋ค. - ๊ด๋ จ reference๋ฅผ ๋จผ์ ์ฝ๋๋ค. ์๋ ๋ชฉ๋ก์์ ํด๋น ์์ญ ๋ฌธ์๋ฅผ ์ฝ๊ณ , Mobile ๋ ๋๋ฌ / Jolt ์ ์ฝ์ ๋ง๋ ๋ฐฉ๋ฒ์ ๊ณ ๋ฅธ๋ค.
.tscn/.tres๋ฅผ ์ง์ ํธ์งํ๊ธฐ ์ ์ references/project-config.md์ ํฌ๋งท ๊ท์น์ ์ฝ๋๋ค.load_steps๋ ๋ฆฌ์์ค ID๋ฅผ ์๋ชป ์ฐ๋ฉด ์ฌ์ด ๊นจ์ง๋ค.
2. ๊ตฌํ ์ค
- ์ฌ ๊ตฌ์กฐ๋ฅผ ๋จผ์ ์ ํ๋ค โ ์ฌ์ฌ์ฉ ๋จ์๋ง๋ค
.tscn์ผ๋ก ๋ถ๋ฆฌํ๊ณ ๋ฃจํธ ๋ ธ๋ ํ์ ์ ์ ์คํ ๊ณ ๋ฅธ๋ค. - ์คํฌ๋ฆฝํธ๋ ์ฌ ์์ ๋๋ค โ
scenes/player/player.tscn+scenes/player/player.gd. ์๋ "ํ์ผ ๋ฐฐ์น ๊ท๋ฒ" ์ฐธ๊ณ . - ์คํฌ๋ฆฝํธ๋ ์ ์ ํ์
์ผ๋ก ์์ฑํ๋ค. ๋
ธ๋ ์ฐธ์กฐ๋
@onready+ ๊ณ ์ ์ด๋ฆ(%)์ ์ด๋ค. - ๋ฌผ๋ฆฌยท์ด๋์
_physics_process, ์๊ฐยท์ ๋ ฅ ํด๋ง์_process์ ๋๋ค. - ๋ ธ๋ ๊ฐ ๊ฒฐํฉ์ ์ง์ ์ฐธ์กฐ ๋์ ์๊ทธ๋๋ก ํผ๋ค.
ํ์ผ ๋ฐฐ์น ๊ท๋ฒ โ ์คํฌ๋ฆฝํธ๋ ์ฌ ์์
์ฌ์ ๋ถ๋ ์คํฌ๋ฆฝํธ๋ ๊ทธ ์ฌ๊ณผ ๊ฐ์ ํด๋์ ๋๋ค โ scenes/player/player.tscn + scenes/player/player.gd.
ํ์
๋ณ scripts/ ํด๋๋ Unity ๊ด์ต์ด๊ณ , Godot ์์๋ Attach Script ์ ๊ธฐ๋ณธ ๊ฒฝ๋ก๊ฐ ํ์ฌ ์ฌ ํด๋์ด๋ฉฐ
์คํฌ๋ฆฝํธ๊ฐ extendsยท$Child ๋ก ์ฌ์ 1:1 ๋ก ๋ฌถ์ด๊ณ , ํด๋๋ฅผ ๋๋๋ฉด ํ์ผ๋ช
์ด ์ถฉ๋ํด ๊ด๋ฆฌ๊ฐ ์ด๋ ค์์ง๋ค.
์์ธ โ ์ฌ์ ๋ถ์ง ์๋ ์ฝ๋๋ ๋ชจ์ ๋๋ค: ์คํ ๋ก๋ ์ฑ๊ธํด(GameStateยทAudioManager) โ autoload/,
class_name ๊ณต์ฉ ํด๋์ค(์ํ ๋จธ์ ๋ฒ ์ด์คยท์ํ ์ ํธ)์ ์ปค์คํ
Resource ์ ์(ItemDataยทSkillData) โ scripts/.
scripts/ ๋ฅผ ์์ ๋ ๊ฒ ์๋๋ผ ์ฉ๋๋ฅผ ๋ฐ๊พธ๋ ๊ฒ์ด๋ค. ๊ทผ๊ฑฐ 3๊ฐ์งยท์์ธ ํยท๊ถ์ฅ ํด๋ ํธ๋ฆฌ(res:// ์๋ scenes/ยท
autoload/ยทscripts/)๋ references/nodes-scenes.md ยง11 ์ ๊ทธ๋๋ก ์๋ค.
3. GDScript๋ฅผ ์์ฑยท์์ ํ ์งํ โ ํ์
LSP๋ก ์ง๋จํ๋ค. ์ด ๋จ๊ณ๋ฅผ ๊ฑด๋๋ฐ์ง ์๋๋ค.
python3 .claude/skills/godot/scripts/gdscript_lsp.py diagnose res://์์ ํํ์ผ.gd
# ์ฌ๋ฌ ํ์ผ์ ๊ฑด๋๋ ธ์ผ๋ฉด git ๋ณ๊ฒฝ๋ถ ์ ์ฒด
python3 .claude/skills/godot/scripts/gdscript_lsp.py diagnose --changed
์ค๋ฅ๊ฐ ํ๋๋ผ๋ ๋จ์ ์์ผ๋ฉด ์์ ์ด ๋๋ ๊ฒ์ด ์๋๋ค. "์ฝ๋๋ฅผ ์์ฑํ๋ค"๊ณ ๋ณด๊ณ ํ๊ธฐ ์ ์ ์ด ๋ช ๋ น์ด ์ค๋ฅ 0๊ฐ๋ฅผ ๋ฐํํด์ผ ํ๋ค.
์ข
๋ฃ ์ฝ๋: 0=์ค๋ฅ ์์, 1=์ค๋ฅ ์์, 2=LSP ์ฐ๊ฒฐ ์คํจ.
Godot ์๋ํฐ๊ฐ ์คํ ์ค์ด์ด์ผ ๋์ํ๋ค. ์์ธํ ์ฌ์ฉ๋ฒยท๊ฒฝ๊ณ ์ข ๋ฅยท๋ฌธ์ ํด๊ฒฐ์ references/lsp.md๋ฅผ ์ฝ๋๋ค.
4. ๊ธฐ์กด ์ฝ๋๋ฅผ ์์ ํ ๋
- ํด๋น ๊ธฐ๋ฅ์ reference์ ๊ธฐ๋ก๋ ํต์ฌ ๋ก์ง๊ณผ ์์ค์ฝ๋๋ฅผ ๋จผ์ ํ์ธํ๋ค.
- ๋ฌธ์์ ๊ธฐ๋ก๋ ํจํด์ ์ ์งํ ์ฑ ์ต์ ๋ฒ์๋ก ์์ ํ๋ค. ๊ธฐ์กด ๋ก์ง์ ์์๋ก ์ฌ์์ฑํ์ง ์๋๋ค.
- ๋ก์ง์ด ์ค์ ๋ก ๋ฐ๋์๋ค๋ฉด reference ๋ฌธ์๋ ํจ๊ป ๊ฐฑ์ ํ๋ค.
5. ๋ฌธ์ ๋ฅผ ์ง๋จํ ๋
์ฑ๋์ ์์๋๋ก ์ฌ๋ผ๊ฐ๋ค. ์์ชฝ์ด ์ธ๊ณ ๋น ๋ฅด๋ค.
| ์๊ณ ์ถ์ ๊ฒ | ๋ฐฉ๋ฒ |
|---|---|
| ๋ฌธ๋ฒยทํ์ ์ค๋ฅ, ๊ฒฝ๊ณ | gdscript_lsp.py diagnose |
| ํ์ผ ๊ตฌ์กฐ (ํด๋์คยทํจ์ ๋ชฉ๋ก) | gdscript_lsp.py symbols โ ํ์ผ ์ ์ฒด๋ฅผ ์ฝ์ง ์๊ณ ํ์
|
| ๋ณ์์ ํ์ , ์ฌ๋ณผ ์ ์ | gdscript_lsp.py hover / definition |
| ์ฌ ๊ตฌ์กฐ, ํ๋ก์ ํธ ์ค์ | .tscn / project.godot ์ง์ ์ฝ๊ธฐ |
| ๋ฐํ์ ์ค๋ฅ, ์ค์ ๋ ธ๋ ๊ฐ, ํ๋ฉด | MCP ๋๊ตฌ (references/ai-tooling.md) |
| ํน์ ์์ ์ ์ง์ญ ๋ณ์ | DAP ๋ธ๋ ์ดํฌํฌ์ธํธ |
| ์ฑ๋ฅ ๋ณ๋ชฉ ยท fps ํ๋ฝ | ๐ references/perf-tuning-playbook.md โ ์ง๋จ 5๋จ๊ณ๋ฅผ ์์๋๋ก |
LSP๋ก ์ก์ ์ ์๋ ๋ฌธ์ ๋ฅผ ๊ฒ์ ์คํ์ผ๋ก ์ฐพ์ง ์๋๋ค. ์ฝ๋๋ง ์ฝ๊ณ ๋ฐํ์ ๋์์ ๋จ์ ํ์ง ์๋๋ค โ ๊ฐ์ ํ์ธํด์ผ ํ๋ฉด MCP๋ก ๊ด์ฐฐํ๋ค. ์์ธ ํ์ ์ ์ ์ต์ ํํ์ง ์๋๋ค.
์ ๋ ๊ท์น
Godot์์ ์ค์ ๋ก ๋ฒ๊ทธ๋ฅผ ๋ง๋ค์ด๋ด๋ ์ง์ ์ด๋ค. ์์ธ ์์ด ์งํจ๋ค.
| ๊ท์น | ์ด์ |
|---|---|
๐๐ ์ํฌํธํ ์์
(.glbยท.fbx)์ Godot ์์ ๋ณด์ ํ์ง ์๋๋ค |
๋ชจ๋ธ์ ํฌ๊ธฐยท์์ธยท์ถ ๋ฐฉํฅยท์์ ยท๋ณธ ๊ตฌ์กฐ๊ฐ ํ๋ ธ์ผ๋ฉด ํ์ผ ์์ฒด๊ฐ ํ๋ฆฐ ๊ฒ์ด๋ค. Godot ์ ํ์ผ์ ์ ํ ๊ฒ์ ๊ทธ๋๋ก ๋ฏฟ๊ณ ์ด๋ค. .import ์ root_scaleยท๋
ธ๋ scale/rotation/positionยท_ready() ๋ณด์ ยทEditorScenePostImport ๋ณด์ ยท์ญ์ค์ผ์ผ ๋ํผ ์ ๋ถ ๊ธ์ง โ ์ ๋ถ ๊ฐ๋ฅํ์ง๋ง ์ ๋ถ ๋ถ์ฑ๋ค. DCC(Blender)๋ก ๋์๊ฐ ๊ณ ์น ๋ค ์ฌ์ต์คํฌํธํ๋ค. ๋ณด์ ์ ์ฐ๋ ๊ณณ๋ง๋ค ๋ฐ๋ณต๋๊ณ ์ฝ๋ฆฌ์ ยท๋ณธ ๊ธธ์ดยท์ ๋ ์ด๋๋ยท๋ถ์ฐฉ์ ยท์ํฌ์คํฐ ๊ตฝ๊ธฐ๊ฐ ๊ทธ ๊ฐ์ ์ ์ ๋ก ์์ฌ ๋๋๋ฆด ์ ์๊ฒ ๋๋ค |
๋ฌผ๋ฆฌ ๊ด๋ จ ์ฝ๋๋ _physics_process(delta)์๋ง ์ด๋ค |
๋ฌผ๋ฆฌ ์๋ฒ๋ ๊ณ ์ ํฑ(๊ธฐ๋ณธ 60Hz)์ผ๋ก ๋๋ค. _process์์ ๋ฐ๋๋ฅผ ์์ง์ด๋ฉด ์งํฐยทํฐ๋๋ง์ด ์๊ธด๋ค |
3D ํ์ ์ rotation(์ค์ผ๋ฌ) ๋์ Transform3D/Basis/Quaternion์ผ๋ก ๋ค๋ฃฌ๋ค |
์ค์ผ๋ฌ๋ ์ง๋ฒ๋ฝยทํ์ ์์ ์์กดยท๋ณด๊ฐ ์๊ณก์ ์ผ์ผํจ๋ค |
์ ๋ฐฉ ๋ฒกํฐ๋ -transform.basis.z๋ค |
Godot 3D๋ -Z๊ฐ forward, +Y๊ฐ up, +X๊ฐ right |
:=๋ ์ฐ๋ณ ํ์
์ด ํ์คํ ๋๋ง ์ด๋ค |
Object.get(), ๋์
๋๋ฆฌ ๊ฐ, ๋น []/{}, ๋ถํ์คํ ๋
ธ๋ ๊ฒฝ๋ก์์ ์ถ๋ก ํ๋ฉด Variant๊ฐ ๋์ด ์ดํ ๋ชจ๋ ์ ๊ทผ์ด unsafe๊ฐ ๋๋ค |
nameยทpositionยทrotationยทscaleยทvisibleยทseed๋ฅผ ๋ณ์๋ช
์ผ๋ก ์ฐ์ง ์๋๋ค |
์์ง ๋ฉค๋ฒ๋ฅผ ๊ฐ๋ ค ์์ธก ๋ถ๊ฐ๋ฅํ ๋์์ ๋ง๋ ๋ค |
@export์ @onready๋ฅผ ํจ๊ป ์ฐ์ง ์๋๋ค |
์ธ์คํํฐ ๊ฐ์ด _init() ์์ ์ ์ ๋ขฐํ ์ ์๋ค |
ํ์ ๋
ธ๋๋ @onready var n := $Path as Type ๋์ ๋ช
์์ ํ์
์ ์ด๋ค |
as๋ ์คํจ ์ ์กฐ์ฉํ null์ด ๋๋ค |
await ๋ค์ is_instance_valid(self)์ is_inside_tree()๋ฅผ ํ์ธํ๋ค |
๋๊ธฐ ์ค ๋ ธ๋๊ฐ ์ ๊ฑฐ๋ ์ ์๋ค |
๋ฌผ๋ฆฌยท์ ์ด ์ฝ๋ฐฑ์์ ์ฌ ํธ๋ฆฌยท์ฝ๋ฆฌ์ ์
ฐ์ดํยทmonitoring ๋ณ๊ฒฝ์ call_deferred๋ก ๋ฏธ๋ฃฌ๋ค |
๋ฌผ๋ฆฌ ์ฟผ๋ฆฌ ์ค ์ํ ๋ณ๊ฒฝ์ ์ค๋ฅ๋ฅผ ๋ธ๋ค |
free() ๋์ queue_free()๋ฅผ ์ด๋ค |
ํ๋ ์ ์ค๊ฐ free()๋ ์ํ ์ค์ธ ํธ๋ฆฌ๋ฅผ ๊นจ๋จ๋ฆฐ๋ค |
| ์ฌ ์ฒซ ํ๋ ์์ NavigationServer ๊ฒฐ๊ณผ๋ฅผ ์ฝ์ง ์๋๋ค | ์ฒซ ๋ฌผ๋ฆฌ ํ๋ ์ ์ ๊น์ง ๋งต์ด ๋๊ธฐํ๋์ง ์๋๋ค. await get_tree().physics_frame ํ์ |
๋์ ํ์ ํ transform = transform.orthonormalized() |
๋ถ๋์์์ ์ค์ฐจ๋ก basis๊ฐ ์ฐ๊ทธ๋ฌ์ง๋ค |
| ๋ฆฌ์์ค๋ฅผ ์ธ์คํด์ค ๊ฐ ๊ณต์ ํ ๋ ์ฃผ์ํ๋ค | ๋จธํฐ๋ฆฌ์ผยทAnimationTree ๋ฑ์ ๊ธฐ๋ณธ ๊ณต์ . ๊ฐ๋ณํ๋ duplicate() ๋๋ Local to Scene |
| ์ฌ์ ๋ถ๋ ์คํฌ๋ฆฝํธ๋ ์ฌ๊ณผ ๊ฐ์ ํด๋์ ๋๋ค | ์์ง์ Attach Script ๊ธฐ๋ณธ ๊ฒฝ๋ก๊ฐ ๊ทธ ๊ตฌ์กฐ๋ฅผ ์ ์ ํ๋ค. ์ฌ๊ณผ 1:1๋ก ๋ฌถ์ธ ์ฝ๋๋ฅผ ๋ถ๋ฆฌํ๋ฉด ์ด๋ยท์ญ์ ๋๋ง๋ค ๋ ํด๋๋ฅผ ์์ผ๋ก ๋๊ธฐํํด์ผ ํ๊ณ ํ์ผ๋ช ์ด ์ถฉ๋ํ๋ค |
์ฐธ์กฐ ๋ฌธ์
์์ธ ์๊ฐ๋ references/catalog.md ์ ์๋ค(์์ ์ ์ด ์๋ฆฌ์ ์๋ ์ฝ 800์ค์ ๊ทธ๋๋ก ์ฎ๊ฒผ๋ค). ์ฌ๊ธฐ๋ ์ด๋๋ก ๊ฐ์ง ๊ณ ๋ฅด๋ ํ๋ค.
| ๋ฌธ์ | ๋ฌด์ | ์ธ์ |
|---|---|---|
| perf-tuning-playbook.md | ๐ ํ๋ ์์ด ๋จ์ด์ก์ ๋ ๋ฌด์์ ์ด๋ค ์์๋ก โ ์ง๋จ 5๋จ๊ณยท์ธก์ ์ฅ๋นยท์์ธ๋ณ ์ฒ๋ฐฉยทํจ์ 14 โ ์ฑ๋ฅ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ์ฌ๊ธฐ๋ถํฐ | ์ค์ธก 20fps โ 60fps ยท ๋ก๋ฉ 49.5โ15์ด |
| lowend-3gb-60fps.md | ๐ 3GB RAM ํฐ์์ 60fps โ ์ ์ฌ์ ์์ ์ ํ๋ | ์์ธ |
| lowend-culling-lod.md | ์ ์ฌ์์์ "๊ทธ๋ฆฌ๋ ์"์ ์ค์ด๋ 6๊ฐ์ง ์์ง ๊ธฐ๋ฅ | ์์ธ |
| basics.md | Godot ๊ธฐ๋ณธ ์์ธ โ
์ฒ์ ๋ฐฐ์ธ ๋ ๋จผ์ ยท ๋ณธ๋ฌธ์ basics/ 11ํํธ ยท ๊ธฐ๋ณธ์ ๊ฑฐ๊ธฐ ๋ชจ์๋ค |
์์ธ |
| example.md | ์์ : ๋น ํ๋ก์ ํธ์์ ์บ๋ฆญํฐ๊ฐ ์์ง์ด๊ธฐ๊น์ง โ ์์ผ๋ก ํ ๋ฒ ๋ง๋ค์ด ๋ณธ๋ค | ์์ธ |
| lsp.md | Godot LSP ์ ์ ๊ฒ์ฆ โ ์ฝ๋ ์์ฑ ์ ํ์ | ์์ธ |
| gdscript.md | GDScript 2.0 ์ธ์ด ์ ์ฒด | ์์ธ |
| nodes-scenes.md | ๋ ธ๋ยท์ฌยทSceneTree ์ํคํ ์ฒ | ์์ธ |
| 3d-core.md | Node3DยทTransform3Dยท์นด๋ฉ๋ผ | ์์ธ |
| mesh-geometry.md | ๋ฉ์์ ๊ตฌ์กฐ โ ์ ์ ยท๋ชจ์๋ฆฌยท์ผ๊ฐํยท๋ฉด | ์์ธ |
| multimesh-3d.md | MultiMeshInstance3D โ ๋๋ ๋ฐฐ์น์ ๐ ์ฝ๋ฆฌ์ ์ด ๋ณต์ ๋์ง ์๋ ๋ฌธ์ | ๋๋ฌดยท๋ฐ์ยทํ์ ์๋ฐฑ~์์ฒ ๊ฐ ๋์ ๋ |
| protonscatter.md | ProtonScatter ์ ๋์จ โ ์์ ๋ฐฐ์น + ์ฝ๋ฆฌ์ ์ ์ป๋ 10๋จ๊ณ | ๋๋ฌดยท๋ฐ์๋ฅผ ํฉ๋ฟ๋ฆฌ๋ฉฐ ์ถฉ๋๋ ํ์ํ ๋ |
| physics-3d.md | Jolt Physics์ 3D ๋ฌผ๋ฆฌ | ์์ธ |
| rendering-3d.md | ๋ ๋๋ฌยท๋จธํฐ๋ฆฌ์ผยท์กฐ๋ช ยทํ๊ฒฝ | ์์ธ |
| animation-3d.md | ์ ๋๋ฉ์ด์ ์์คํ | ์์ธ |
| navigation-3d.md | ๊ธธ์ฐพ๊ธฐ์ ์ AI | ์์ธ |
| input-ui.md | ์ ๋ ฅ ์ฒ๋ฆฌ์ Control UI | ์์ธ |
| hud-menu.md | HUDยท๋ฉ๋ดยท๋ฒํผ ๋ง๋ค๊ธฐ (ํ๋ฉด UI ์กฐ๋ฆฝ) | ์์ธ |
| i18n.md | ๋ค๊ตญ์ด โ ๋ฒ์ญยท์ธ์ด ์ ํยทํฐํธ ํด๋ฐฑยทRTL | ์์ธ |
| resources-assets.md | ๋ฆฌ์์ค์ ์์ ์ํฌํธ | ์์ธ |
| audio.md | 3D ์ค๋์ค | ์์ธ |
| shaders-3d.md | ์ ฐ์ด๋ | ์์ธ |
| performance-mobile.md | ์ต์ ํ์ ๋ด๋ณด๋ด๊ธฐ โ ยง0 ๋จผ์ | ์์ธ |
| headless-workflow.md | ์๋ํฐ ์์ด ์์ ํ๊ธฐ โ ๊ธฐ๋ณธ ์์ ๋ฐฉ์ | ์์ธ |
| export-build.md | ๋น๋์ ๋ด๋ณด๋ด๊ธฐ (ํ๋ซํผ ๊ณตํต) | ์์ธ |
| export-build-android.md | Android ๋น๋ | ์์ธ |
| export-build-ios.md | iOS ๋น๋ | ์์ธ |
| export-build-desktop.md | macOSยทWindowsยทLinux | ์์ธ |
| multiplayer.md | ๋ฉํฐํ๋ ์ด์ด | ์์ธ |
| project-config.md | ์ค์ ํ์ผ ํฌ๋งท๊ณผ CLI | ์์ธ |
| ai-tooling.md | LSPยทMCPยทCodex ์ฐ๋ | ์์ธ |
| editor-plugin.md | @tool๊ณผ EditorPlugin ๊ฐ๋ฐ | ์์ธ |
| editor-compass.md | ๋์๋จ๋ถ ๋ณด์กฐ์ โ ๋ณต์ฌํด ๋ฐ๋ก ์ฐ๋ ์ ๋์จ(addons/editor_compass/) ยท ์ซ์ 0 ํ ๊ธ ยท ๐ ์๋ํฐ ๋จ์ถํค๊ฐ _input ์ด์ด์ผ ํ๋ ์ด์ (_shortcut_inputยท_forward_3d_gui_input ์ 3D ๋ทฐํฌํธ ํด๋ฆญ ํ ์ ์จ๋ค) ยท ์ฌ์ ์ ์ฅ ์ ๋๊ฒ ํ๋ owner ๊ท์น ยท ๋๋ ๋ฐฉ๋ฒ ์
(0 ยท Project > Tools ๋ฉ๋ด ยท ํ๋ฌ๊ทธ์ธ ์ฒดํฌ ํด์ )๊ณผ ๋ ๋ ๊ทธ๋ฃน ์ ์ฒด๋ฅผ ๋ผ์ด์ผ ํ๋ ์ด์ |
3D ์ฌ์์ ๋ฐฉํฅยท์์ ์ ๋ชจ๋ฅด๊ฒ ์ ๋ ยท ์๋ํฐ ๋จ์ถํค๊ฐ ์ ๋จน์ ๋ |
| whats-new.md | ์ต์ ๋ฒ์ ์ ๊ธฐ๋ฅ๊ณผ ๋ง์ด๊ทธ๋ ์ด์ | ์์ธ |
| asset-store.md | Asset Store์ ์ ๋์จ | ์์ธ |
| level-design.md | ๋งต ๋ง๋ค๊ธฐ | ์์ธ |
| openworld-3d.md | ์คํ์๋ ๋ง๋ค๊ธฐ โ ๋์ ์ผ์ธ ๋งต | ์์ธ |
| dictionary.md | ์ฉ์ด์ง | ์์ธ |
| getting-started.md | โ 0๋จ๊ณ โ ๋ด๋ ค๋ฐ๊ธฐยทํ๋ก์ ํธ ๋งค๋์ ยทNew Project(Mobile)ยทํต์ฌ ๊ฐ๋ 4ยท๊ณต์ ๋ฌธ์ยทAPI ์ฝ๋ ๋ฒ | Godot ์ ์ฒ์ ์ค์นํ๊ฑฐ๋ ๊ณต์ ๋ฌธ์ยทํด๋์ค ๋ ํผ๋ฐ์ค๋ฅผ ์ฝ๋ ๋ฒ์ ๋ฌผ์ ๋ |
| networking-lowlevel.md | ๐ ์ธ๋ถ ์๋ฒ(Zone UDPยทNakama)์ ๋ถ๋ ์์ง API โ PacketPeerUDPยทStreamPeerBuffer ์๋์ยทHTTPRequestยทWebSocketPeerยทTLS | ์๋ฒ ํต์ ์ฝ๋๋ฅผ ์ธ ๋. ํ๋กํ ์ฝ ๊ฐ์ game ์คํฌ |
| best-practices.md | ๊ณต์ Best practices 12ํธ + GDScript ์คํ์ผ ๊ฐ์ด๋(๋ช ๋ช ยท์ฝ๋ ์์) + ๊ณต์๊ณผ ์ด ์คํฌ์ด ๋ค๋ฅธ ๊ณณ | "์ ์ด๋ ๊ฒ ํ๋ผ๊ณ ํ๋"ยท์ฌ vs ์คํฌ๋ฆฝํธยท์คํ ๋ก๋ ๋จ์ฉยท๋ช ๋ช ๊ท์น |
| debugging.md | ์คํ ๋ค ๋ฌธ์ โ OutputยทDebuggerยทRemote ์ฌ ํธ๋ฆฌยท์ค๋ฅ ์ฝ๊ธฐยทํ๋กํ์ผ๋ฌยทObjectDBยท์๊ฒฉ ๋๋ฒ๊ทธยทAndroid ์ฌ๋ณผํยทTroubleshootingยท๋ด๋น ๋๋ฒ๊ทธ | ์ค๋ฅ ๋ฉ์์งยท์ ๋ณด์ยท๋๋ฆผยทํฐ์์๋ง ์ฃฝ์ |
| keywords.md | ์์ description ์ ํธ๋ฆฌ๊ฑฐ ํค์๋ ์ ๋(9,319์) โ ๊ฒ์ ์์ธ |
์ด๋ค ์ง๋ฌธ์ด ์ด๋ ๋ฌธ์๋ก ๊ฐ์ผ ํ๋์ง ์ฐพ์ ๋ |
| godot-init.md | /godot init ์ค์น ์ ์ฐจ ์ ๋ฌธ + install.sh ์ต์
ยท์ฅ์น ๋ชฉ๋ก ๊ธฐ์ค (SKILL.md ์์ ์ด๋) |
/godot init ์ง์๋ฅผ ๋ฐ์์ ๋ ยท ์ค๊ธฐ๊ธฐ ๋น๋ยท์ค์น |
๋ฒ๋ค ์คํฌ๋ฆฝํธ
scripts/gdscript_lsp.py
Godot LSP ํด๋ผ์ด์ธํธ. Python ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ง ์ฌ์ฉํ๋ฏ๋ก ์ค์น๊ฐ ํ์ ์๋ค.
python3 .claude/skills/godot/scripts/gdscript_lsp.py ping # ์ฐ๊ฒฐ ํ์ธ
python3 .claude/skills/godot/scripts/gdscript_lsp.py diagnose res://a.gd # ์ง๋จ
python3 .claude/skills/godot/scripts/gdscript_lsp.py diagnose --changed # git ๋ณ๊ฒฝ๋ถ ์ ์ฒด
python3 .claude/skills/godot/scripts/gdscript_lsp.py --json diagnose --changed # JSON ์ถ๋ ฅ
python3 .claude/skills/godot/scripts/gdscript_lsp.py symbols res://a.gd # ํ์ผ ๊ตฌ์กฐ
python3 .claude/skills/godot/scripts/gdscript_lsp.py hover res://a.gd 42 10 # ํ์
์ ๋ณด
python3 .claude/skills/godot/scripts/gdscript_lsp.py definition res://a.gd 42 10
python3 .claude/skills/godot/scripts/gdscript_lsp.py complete res://a.gd 42 10
Godot ์๋ํฐ๊ฐ ์คํ ์ค์ด์ด์ผ ํ๋ค. ์์ธ ์ฌ์ฉ๋ฒ์ references/lsp.md.
scripts/install.sh โ ์์ธ๋ references/godot-init.md ยง2
๋น๋ยท์ค์นยท์คํ ์คํฌ๋ฆฝํธ. ๊ทธ๋ฅ ์คํํ๋ฉด ์ง๊ธ ์ธ ์ ์๋ ์ฅ์น(macOSยทiOSยทAndroid)๋ฅผ ๋ฒํธ๋ก ๋ณด์ฌ์ฃผ๊ณ ,
๋ฒํธยท๊ธฐ๊ธฐ IDยทmacos ๋ฅผ ๊ณ ๋ฅด๋ฉด ๊ทธ ํ๋ซํผ์ผ๋ก ๋น๋ยท์ค์นยท์คํ๊น์ง ํ๋ค. preset ์ด๋ฆยทํจํค์ง IDยท์ฐ์ถ๋ฌผ ๊ฒฝ๋ก๋
export_presets.cfg ์์ ์ง์ ์ฝ์ผ๋ฏ๋ก ํ๋ก์ ํธ๋ง๋ค ๊ณ ์น ๊ฒ์ด ์๋ค. --listยท--consoleยท--skip-buildยท--releaseยท
--no-launchยท--path ์ต์
, ์ฅ์น๊ฐ ๋ชฉ๋ก์ ์ค๋ฅด๋ ๊ธฐ์ค(iOS ๋ devicectl ์ด available ๋ก ํ์ ํ ๊ฒ๋ง, Android ๋
adb devices ์ device ์ํ๋ง), stdin ์ด ํฐ๋ฏธ๋์ด ์๋ ๋ ๋ฌป์ง ์๊ณ ๋ชฉ๋ก๋ง ์ฐ๋ ๋์, macOS .zip ํ๊ธฐ์
com.apple.quarantine ์ ๊ฑฐ๋ ์ ๋ฌธ์์ ์๋ค. ์๋ํฐ Remote Deploy ์ ๊ฒฐ๊ณผ๊ฐ ๊ฐ์ผ๋ฏ๋ก ์๋ํฐ๋ฅผ ๋์ฐ์ง ์๋
์์
์์๋ ์ด ์คํฌ๋ฆฝํธ๋ฅผ ์ด๋ค โ references/headless-workflow.md ยง3.
scripts/triangles.sh โ ์ผ๊ฐํยท๋๋ก์ฐ์ฝ ์ธ๊ธฐ
์ฌ์ ์ผ๊ฐํ์ด ๋ช ๊ฐ์ธ์ง ์ผ๋ค. ์์ง์๋ "์ฌ ์ ์ฒด ์ผ๊ฐํ" API ๊ฐ ์์ด ๋
ธ๋๋ฅผ ์ํํด์ผ ํ๋๋ฐ,
๊ทธ ์ํ๋ฅผ ๋์ ํ๋ค. /godot init ์ด ํ๋ก์ ํธ์ scripts/triangles.sh ๋ก ๋งํฌ๋ฅผ ๊ฑธ์ด ์ค๋ค.
scripts/triangles.sh # main_scene ์ด๋
scripts/triangles.sh scenes/main/main.tscn # ์ฌ ํ๋ โ ๋ฌด๊ฑฐ์ด ๋
ธ๋ ์์ยท์ข
๋ฅ๋ณ ์ง๊ณ
scripts/triangles.sh --all --budget 150000 # ์ ์ฌ. ์ด๊ณผ๊ฐ ์์ผ๋ฉด ์ข
๋ฃ ์ฝ๋ 1 (CI)
scripts/triangles.sh --frame # ์ค์ ๋ก ๋์ "๊ทธ๋ฆฐ" ์ผ๊ฐํ (VISIBLEยทSHADOWยทCANVAS ๋ถ๋ฆฌ)
scripts/triangles.sh --glb assets # Godot ์์ด .glb ๋ฅผ ํ์ด์ฌ์ผ๋ก ์ง์ ์ฝ๋๋ค
๐ ๊ธฐ๋ณธ ๋ชจ๋์ --frame ์ ๋ค๋ฅธ ๊ฒ์ ์ผ๋ค โ ์ ์๋ ์ฌ์ ์กด์ฌํ๋ ์ด๋(์ปฌ๋ง ๋ฌด๊ด, ์์ฐ์ฉ),
ํ์๋ ๊ทธ ํ๋ ์์ ๊ทธ๋ฆฐ ์(์ปฌ๋งยทLODยท๊ทธ๋ฆผ์ ๋ฐ์, ๋ณ๋ชฉ์ฉ). ๋ฐํ์์ add_child() ๋ก ๋ง๋๋
๋ฉ์๋ ๊ธฐ๋ณธ ๋ชจ๋๊ฐ ๋ชป ์ธ๋ฏ๋ก ๊ทธ๋ฐ ์ฌ์ --frame ์ผ๋ก ์ฐ๋ค.
MultiMeshยทGridMapยทCSGยทํํฐํดยทSprite3DยทLabel3D ๋ ์ธ๋ ๋ฒ์ด ๊ฐ๊ฐ ๋ค๋ฅด๋ค โ
references/mesh-geometry.md ยง15
scripts/build_autotest_release.sh โ ์ค๊ธฐ๊ธฐ ์ฑ๋ฅ ์ธก์ ์ฉ ๋ฆด๋ฆฌ์ฆ ๋น๋
๋ฆด๋ฆฌ์ฆ APK ๋ -s res://tests/โฆ.gd ๊ฐ์ CLI ์คํฌ๋ฆฝํธ๋ฅผ ๋ฌด์ํ๋ค. ๊ทธ๋์ ์ฑ๋ฅยท๋ก๋ฉ์ ์ค๊ธฐ๊ธฐ์์
์๋์ผ๋ก ์ฌ๋ ค๋ฉด ๊ฒ์ฆ ํ
์ ์ ํ ์ฝ๋์ ๋ฃ๊ณ ๊ธฐ๋ฅ ํ๊ทธ๋ก ์ผ์ผ ํ๋ค. ์ด ์คํฌ๋ฆฝํธ๊ฐ ๊ทธ ๋น๋๋ฅผ ๋ง๋ ๋ค.
bash .claude/skills/godot/scripts/build_autotest_release.sh # ์๋ ๋ก๊ทธ์ธ + ์ฑ๋ฅ ๋ก๊ทธ
bash .claude/skills/godot/scripts/build_autotest_release.sh --sweep # + ์กฐ๊ฑด์ ์ํํ๋ฉฐ A/B ์ธก์
bash .claude/skills/godot/scripts/build_autotest_release.sh --groundfix # ์ฒซ ํ๋ ์ ์ ์ ๋ฐ๋ฅ๋ง ์์ (๋ก๋ฉ A/B)
bash .claude/skills/godot/scripts/build_autotest_release.sh --fullfix # ์ฒซ ํ๋ ์ ์ ์ ์ ๋ถ ์์ (๋ก๋ฉ A/B)
export_presets.cfg ์ custom_features ๋ฅผ ์ ๊น ๋ฐ๊ฟ ๋ด๋ณด๋ด๊ณ ๋ฐ๋์ ์๋ณตํ๋ฉฐ ์๋ณต์ ๊ฒ์ฆํ๋ค
(๐ ์๋ณต์ ์คํจํ๋ฉด ์คํ ์ด ๋น๋์ ์๋ ๋ก๊ทธ์ธ์ด ๋ค์ด๊ฐ๋ค). ์ฐ๋ ๋ฒ์
perf-tuning-playbook.md ยง3.
scripts/png_pixel.py โ ์คํฌ๋ฆฐ์ท์ ํฝ์ ์ ์ฌ๊ธฐ
๋จธํฐ๋ฆฌ์ผ์ UNSHADED ๋ก ๋ฐ๊พธ๋ฉด ์กฐ๋ช
์ด ๊ณฑํด์ง์ง ์์ ์์ด ๋ณํ๋ค. ์์ ์ ํ๋ฉด์ ์ค์ ํฝ์
์์
์ฌ์ ๊ทธ ๊ฐ์ albedo_color ์ ๋ฃ์ด์ผ ์ธ๊ด์ด ๊ทธ๋๋ก๋ค(๋๋์ค์ ๋ฐ๋์ ์ด๊ธ๋๋ค).
python3 .claude/skills/godot/scripts/png_pixel.py before.png 360 1000
# (360,1000) RGB (80, 92, 110) #505C6E โ Godot Color(0.313725, 0.360784, 0.431373)
python3 .claude/skills/godot/scripts/png_pixel.py after.png # ์ขํ ์๋ต ์ 9๊ณณ ์๋ ์ํ๋ง
ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ง ์ด๋ค(Pillow ๋ถํ์). ๊ทผ๊ฑฐ๋ perf-tuning-playbook.md ยง4.4.
ํ๋ก์ ํธ ๋ด ํ์ต ๋ฌธ์
docs/godot/ ์๋ ์ฌ๋์ด ์ฝ๋ ์
๋ฌธ ๋ฌธ์๊ฐ ๋ฐ๋ก ์๋ค(์๋ํฐ ์์ด ์์
.md, ๊ธฐ๋ณธ ๊ฐ๋
.md,
GDScript.md ๋ฑ). ์ด ์คํฌ์ด ๋ผ๋ฆฌ์ 3D ๊ธฐ์ค ๊ท๋ฒ์ด๊ณ ๊ทธ์ชฝ์ ์ผ๋ฐ ํ์ต์ฉ์ด๋ฏ๋ก,
๋ ๊ณณ์ด ์ด๊ธ๋๋ฉด ์ด ์คํฌ์ด ๋ง๋ค.
์๋ํฐ ์์ด ์์
.md ยง13 ์ ์๋ํฐ ์์ด 4๊ฐ ํ๋ซํผ์ ํ
์คํธ ๋น๋ยท์ค์นยท๋ฆด๋ฆฌ์ฆ๊น์ง ๊ฐ์ ธ๊ฐ๋
์ ๊ณผ์ ์ ์์ (./app)๋ก ๋ค๋ฃฌ๋ค. ํ
ํ๋ฆฟ ํ์ ํ์ผ ํ์ ์ ์ด ์คํฌ
(export-build.md ยง2)๊ณผ ๊ฐ์ ์ค์ธก ๊ฒฐ๊ณผ๋ก ๋ง์ถฐ์ ธ ์๋ค.
๊ณต์ ์ฐธ์กฐ
- ๊ณต์ ๋ฌธ์(stable = ํ์ฌ 4.7 ๋ธ๋์น): https://docs.godotengine.org/en/stable/ โ ๋ฒ์ ๊ณ ์ ์ด ํ์ํ๋ฉด https://docs.godotengine.org/en/4.7/
- ํด๋์ค ๋ ํผ๋ฐ์ค: https://docs.godotengine.org/en/4.7/classes/
- ์์ง ์์ค: https://github.com/godotengine/godot
- ๋ฆด๋ฆฌ์ค: https://github.com/godotengine/godot-builds/releases
- Asset Store: https://store.godotengine.org/
ํด๋์ค์ ์ ํํ ์๊ทธ๋์ฒ๊ฐ ํ์ํ๋ฉด ์ถ์ธกํ์ง ๋ง๊ณ hover๋ก ํ์ธํ๊ฑฐ๋
https://docs.godotengine.org/en/4.7/classes/class_<์๋ฌธ์ํด๋์ค๋ช
>.html์ ์กฐํํ๋ค.
์ด ํด๋์ ๋๋จธ์ง ํ์ผ๋ค
index.htmlยทdoc.htmlยทisometric.htmlยทnode-structure.htmlยทsite/ยท.nojekyllโ ์ฌ๋์ด ๋ธ๋ผ์ฐ์ ๋ก ๋ณด๋ ๋ฌธ์ ์ฌ์ดํธ(GitHub Pages ์ฉ)๋ค. ์คํฌ ๋์์๋ ๊ด์ฌํ์ง ์์ผ๋ฉฐ ์์ด์ ํธ๋SKILL.mdยทreferences/๋ฅผ ์ฝ๋๋ค..claude-plugin/plugin.json+commands/godot-example.mdโ ์ด ํด๋๊ฐ ์คํฌ์ด๋ฉด์ ํ๋ฌ๊ทธ์ธ์ผ๋ก๋ ๋ฑ๋ก๋์ด ์ธ์ ์คํฌ ๋ชฉ๋ก์godot-example๊ณผgodot:godot-example์ด ๋ ๋ค ๋ณด์ธ๋ค. ์ ๋ณธ์commands/godot-example.mdํ๋์ด๊ณ ๋์ ๊ฐ์ ํ์ผ์ด๋ค. ๊ตฌ์กฐ๋ ์ฌ๋์ด ์ ํ๋ค.- ์ด ์คํฌ์ git ์๋ธ๋ชจ๋(
github.com/thruthesky/godot)์ด๋ค โ ๋ฌธ์๋ฅผ ๊ณ ์น๋ฉด ์๋ธ๋ชจ๋ ์์์ ์ปค๋ฐํ๊ณ , ๋ถ๋ชจ ์ ์ฅ์์ ํฌ์ธํฐ๋ ํจ๊ป ๊ฐฑ์ ํ๋ค.