Imported from dnwls1133/BaseProject_SE (
AGENTS.md). Install upstream withnpx skills add dnwls1133/BaseProject_SE. Copyright stays with the author.
Codex κ²μ κ°λ° μ§μΉ¨
μ΄ λ¬Έμλ μ΄ μ μ₯μμμ μμ νλ Codexμ κΈ°λ³Έ μ§μΉ¨μ΄λ€. μ¬μ©μμ μ΅μ λͺ μμ μμ²μ μ°μ νκ³ , μλ κΈ°λ³Έ νμ μμλ‘ λ³κ²½νμ§ μλλ€.
νλ‘μ νΈ λͺ©ν
- C++Β·OpenGL κΈ°λ°μ μ€μκ° λ λλ§ κ²μμ μ μνλ€.
- μ₯λ₯΄λ μ€ν μλ RPGμ΄λ©°, μκ° ννμ μΏΌν°λ·° 2.5Dμ΄λ€.
- μμΈλ₯ λ€ν¬ ννμ§, μμΈνκ³ ν¬λ§μ΄ ν¬λ°ν λΆμκΈ°, μ‘체 λ³μ΄μ μ½μ€λ―Ή νΈλ¬λ₯Ό μ€μ¬μΌλ‘ νλ€.
- ν΅μ¬ μ£Όμ λ κ°μΌμ²΄μ μμ‘΄ν΄ μμ‘΄νλ μλ‘μ΄ μΈλ₯μ μΈκ°μ±μ μ μμ΄λ€.
- μΈκ³κ΄κ³Ό λ©μΈ νμ€νΈ κΈ°λ³Έ νμ κ²μ κ°λ° κΈ°λ³Έ κΈ°νμ μ°Έμ‘°νλ€. κ΄λ ¨ κΈ°ν·ꡬν μ μ νμν λΆλΆμ μ½λλ€.
μ¬μ©μμμ μμ λ°©μ
- νκ΅μ΄λ‘ λ΅νλ€. μ§λ¬Έμλ μ΄μ μ μ리, νμ¬ νλ‘μ νΈμμ μ μ©, μμΌλ‘μ κΆμ₯ λ¨κ³λ₯Ό μΆ©λΆν μ€λͺ νλ€. λΆνμνκ² κ°μ λ΄μ©μ λ°λ³΅νμ§ μλλ€.
- μμ μ μλ λ³κ²½ μμΉ β λ³κ²½Β·μΆκ°ν λ΄μ© β λͺ©μ κ³Ό μμ λμμ λ³΄κ³ νλ€. νμΌΒ·ν¨μΒ·ν΄λμ€ λ¨μλ‘ κ΅¬μ²΄μ μΌλ‘ μ€λͺ νλ, μ¬μ©μκ° μμ²νκΈ° μ μλ ꡬν μ½λ μ 체λ₯Ό λμ΄νμ§ μλλ€.
- λ¨μν βμ΄λμ ꡬννλ€βλΌκ³ νμ§ λ§κ³ , μλ₯Ό λ€μ΄ βSimpleGame.cppμ μ λ ₯ μ½λ°±μμ ν€ μνλ₯Ό μ λ¬νκ³ Gameμ μ λ°μ΄νΈμμ μ΄λμ κ³μ°νλ€βλΌκ³ μ€λͺ νλ€.
- μ€λͺ μμ²μ μ½λ μμ μμ²μΌλ‘ κ°μ£Όνμ§ μλλ€. μμ μ΄ μμ²λλ©΄ μ λ³΄κ³ ν μΉμΈλ λ²μμμ μ§ννλ€. λ§€λ² μΆκ° νμΈμ μꡬνμ§ μλλ€.
- μλ£ ν μ€μ λ³κ²½μ¬νκ³Ό μ¬μ©μκ° μ§μ νμΈν νλͺ©μ λ³΄κ³ νλ€.
- κΈ°λ³Έμ μΌλ‘ λΉλ, μ€ν, ν μ€νΈ λ° μ€ν κ²°κ³Ό νμΈμ μννμ§ μλλ€. μ¬μ©μκ° μ§μ λ΄λΉνλ€. μ¬μ©μκ° μμ²νκ±°λ νΉλ³ν κ²μ¦ νμμ±μ΄ μλ κ²½μ°μλ§ λ€λ£¨κ³ , μμΈκ° νμνλ©΄ λ¨Όμ μ΄μ λ₯Ό μ€λͺ νλ€. λ¬Έλ§₯ νμ μ μν μμ€Β·μ€μ μ½κΈ°λ κ°λ₯νλ€.
- ν ν° μ μ½μ κ³ λ €ν΄ κ΄λ ¨ νμΌλΆν° μ’κ² νμνλ€. λΆνμν μ 체 νμΒ·λκ·λͺ¨ 리ν©ν°λ§Β·λ°λ³΅ κ²μ¦μ νΌνλ€. νμν μ€λͺ μ μΆ©μ€ν¨μ μ μ§νλ€.
- κΈ°μ‘΄ μ¬μ©μ λ³κ²½, IDE νμΌ, λΉλ κ²°κ³Όλ¬Όμ μμλ‘ μ 리νκ±°λ λλλ¦¬μ§ μλλ€. 컀λ°Β·νΈμλ μμ²λ°μμ λ μννλ€.
νμ¬ μ½λ κΈ°λ°κ³Ό ꡬν λ°©ν₯
- Visual Studio μ루μ : SimpleGame.sln, C++ λꡬ μ§ν© v143, GLEWΒ·freeglut μ¬μ©.
- SimpleGame.cpp: μ°½κ³Ό μ λ ₯. Game.h/.cpp: μ§νΒ·UI. VillageArt.cpp: λ§μκ³Ό μΈλ¬Ό. Renderer.h/.cpp λ° RendererShaders.h: λνΒ·μ¬μ§Β·νμ²λ¦¬Β·νκ΅μ΄ κΈκΌ΄. μ΄μ SolidRect μ °μ΄λ νμΌμ νμ¬ λ λλ¬μμ μ¬μ©νμ§ μλλ€.
- νμ¬ νν λ¦¬μΌ μ½λκ° κ΅¬νλμ΄ μμΌλ©° μμΈ νν©μ docs/PROTOTYPE_IMPLEMENTATION.mdλ₯Ό λ°λ₯Έλ€. μλ λ³ΈνΈ νμ₯ λ°©ν₯ μ€ λ―Έκ΅¬ν κΈ°λ₯κΉμ§ μλ£λμλ€κ³ κ°μ νμ§ μλλ€.
- μ λ ₯, μκ° κΈ°λ° κ²μ μν μ λ°μ΄νΈ, λ λλ§μ λΆλ¦¬νλ€. Gameμ΄ μ 체 νλ¦μ μ°κ²°νκ³ Player, World, Cameraκ° μ± μμ λλλ€.
- μλ μ’νμ νλ©΄ μ’νλ₯Ό λΆλ¦¬νλ€. μΉ΄λ©λΌ μΆμ , μλ€ κ°λ¦Ό, λμ΄μ μΆ©λμ κ³ λ €νλ€.
- λμ μλλ μ²ν¬ λ¨μ κ΄λ¦¬μ νλ©΄ λ° λ λλ§ μ μΈλ₯Ό λ¨κ³μ μΌλ‘ λμ νλ€. μ²μλΆν° 볡μ‘ν μ€νΈλ¦¬λ° μμ€ν μ λ§λ€μ§ μλλ€.
- νμΌλ§΅Β·μ€λΈμ νΈ μ μμ λ°°μΉΒ·μ€νλΌμ΄νΈ λ©νλ°μ΄ν°λ JSON λ±μ μΈλΆ λ°μ΄ν°λ‘ κ΄λ¦¬νλ λ°©ν₯μ κΈ°λ³ΈμΌλ‘ νλ€. μ€μ μ΄λ―Έμ§ ν½μ μ λ³λ μ΄λ―Έμ§ νμΌμ λλ€.
- λ°μ΄ν° νλ¦μ μ μ β νμΌ μ μ₯ β λ‘λ©Β·μ ν¨μ± κ²μ¬ β μλ κ΅¬μ± β λ λλ§μΌλ‘ μ€κ³νλ€. 리μμ€ μ€λ³΅ λ‘λ©μ νΌνκ³ , μλ³Έ μ½ν μΈ μ νλ μ΄ μ€ λ³κ²½λ μΈμ΄λΈ μνλ₯Ό ꡬλΆνλ€.
- μ°μ μμ μΈλΆ λ§΅μ νμ, μμ νλ μ΄μ΄ μ΄λ, μΉ΄λ©λΌλ₯Ό ꡬνν λ€ μ²ν¬Β·μΆ©λΒ·NPCΒ·μ ν¬Β·μμ΄ν Β·μ μ₯μΌλ‘ νμ₯νλ€.
- 2D μ€νλΌμ΄νΈ κΈ°λ°μΈμ§ μ€μ 3D λͺ¨λΈ κΈ°λ°μΈμ§, ꡬ체μ μΈ λ°μ΄ν° μ€ν€λ§μ λΌμ΄λΈλ¬λ¦¬, μ ν¬ κ·μΉμ μμ§ λ―Έμ μ΄λ€. 2D κΈ°λ°μ κΈ°μ‘΄ μ μμ΄λ©° νμ μΌλ‘ μ·¨κΈνμ§ μλλ€.
κΈ°μ‘΄ λΆμμμ λ°κ²¬ν μ¬ν
μλλ μ΄μ μμ€ λΆμ κ²°κ³Όλ€. μμ μ νμ¬ μ½λλ₯Ό λ€μ μ½κ³ μ μ© μ¬λΆλ₯Ό νλ¨νλ€. μλ μμ μ§μλ μλλ€.
- CompileShadersμ GLuint λ°ννμ μ€ν¨κ° -1μ μ¬μ©νμ¬ μ΄κΈ°ν μ±κ³΅ κ²μ¬μ μλͺ» ν΅κ³Όν κ°λ₯μ±.
- ./Shaders μλ κ²½λ‘μ λ°λ₯Έ μ€ν μμ λλ ν°λ¦¬ μμ‘΄.
- gitignore νμΌμ μ ν μ μ΄ μκ³ IDE μΊμμ λΉλ μ°μΆλ¬Όμ΄ Gitμ μΆμ λμ΄ μμ.
- μ°½ ν¬κΈ° λ³κ²½ μ²λ¦¬, μκ° κΈ°λ° μ λ°μ΄νΈ, OpenGL μμ ν΄μ 보μ νμ.
κΈ°ν λ³κ²½ μμΉ
- νμ λ λͺ©νΒ·μΈκ³κ΄κ³Ό μ μ μμ€μ μΈλΆ μ€μ μ ꡬλΆνλ€.
- μΈκ³κ΄μ μ€μ¬μ λ¨μν κ°μΌ μ κ±° λλ λͺ λ°±ν μ μ λκ²°λ‘ μΆμνμ§ μλλ€.
- μ μ μμ κΈ°μ‘΄ νκ³Όμ κ΄κ³λ₯Ό μ€λͺ νλ€. μ¬μ©μ κ²°μ μΌλ‘ κΈ°νμ΄ λ³κ²½λλ©΄ κ΄λ ¨ λ¬Έμλ μΌκ΄λκ² κ°±μ νλ€.
μ΅μ νν λ¦¬μΌ μꡬμ¬ν
- μμμ νκ΄΄λ λ§μ. μμ‘΄ μΈλ¬Όμ μ£ΌμΈκ³΅κ³Ό μ£½κΈ° μ§μ κ°μΌμ ν λͺ μ΄λ©° μμ²΄κ° λ°°μΉλλ€.
- WASD μ΄λ, 2.5D μΏΌν°λ·°, μ μ ν μνΈμμ©ν€μ μμ νμ€νΈ, 5λΆ μ΄λ΄ μλλ μ§νμ λͺ©νλ‘ νλ€.
- μ€μ κ²μ νλ©΄μμ μΈκ³κ΄ λΆμκΈ°λ₯Ό ννν΄μΌ νλ€. μ€κ³λ§μΌλ‘ λ λλ§ μλ£λ₯Ό μ£Όμ₯νμ§ μλλ€.
- 첫 λ 벨μ μ΅μ λ²μμ ꡬν κ³νμ docs/TUTORIAL_LEVEL.mdλ₯Ό λ°λ₯Έλ€. μ΄μ μΉλ£μ μμμλ³΄λ€ μ°μ νλ€.
νλ‘ν νμ΄ν μμ² ν΄μ
- μ¬μ©μκ° νλ‘ν νμ΄νμ μμ²νλ©΄ μ€κ³ λ¬Έμ μμ±λΏ μλλΌ μ€μ κ²μ μ½λμ νμν λ°μ΄ν°λ₯Ό ꡬννλ€. μ€κ³λ§ μμ±νκ³ μ’ λ£νμ§ μλλ€.
- νμ¬ μ²« νλ‘ν νμ μ μΈλΆ μμ μλ 2D λν κΈ°λ° μΏΌν°λ·°λ‘ ꡬννλ€. λ³ΈνΈ μ 체 μμ λ°©μ νμ μ μλ―Ένμ§ μλλ€.
μκ° κ°μ νμ νμ¬ κ΅¬μ‘°
- UIμ λμ¬λ νκ΅μ΄λ₯Ό κΈ°λ³ΈμΌλ‘ νλ€. λμ¬λ SimpleGame/Data/dialogue.ko.txtμ μΈλΆννλ€.
- νμ¬ μ½λ μν : Game.cppλ κ²μ μ§νΒ·νκ΅μ΄ UI, VillageArt.cppλ νκ²½Β·μΊλ¦ν° νν, Renderer.cppμ RendererShaders.hλ λ λλ§Β·νμ²λ¦¬Β·νκΈ κΈκΌ΄μ λ΄λΉνλ€.
- νν λ¦¬μΌ λ§΅μ 52Γ40μΌλ‘ νμ₯νλ€. νμ μ§ν 5λΆ μ΄λ΄ λͺ©νμ μμ‘΄ μΈλ¬Ό λ λͺ 쑰건μ μ μ§νλ€.
- MSAAΒ·FXAAΒ·λΈλ£ΈΒ·μ¬μ§ ννκ³Ό λΆμ ν 2D μ λλ©μ΄μ μ΄ μ½λμ μΆκ°λμλ€. μΈλΆ μ€νλΌμ΄νΈλ 3D λͺ¨λΈμ΄ μλ€κ³ κ°μ νμ§ μλλ€.
- ꡬνμ μ€ν κ²μ¦μ μ¬μ©μκ° λ΄λΉνλ€. μμΈ νν©μ docs/PROTOTYPE_IMPLEMENTATION.mdλ₯Ό λ°λ₯Έλ€.