κ²μ 루ν ν¨ν΄(Game Loop Pattern)
λ¨Όμ μμ½νμλ©΄ κ²μ 루ν ν¨ν΄μ΄λ κ²μ μ§νμ μ μ μ λ ₯, νλ‘μΈμ μλμ λ컀νλ§ νλ κ²μ΄λ€.
λ μ½κ² λ§νμλ©΄ μ λ ₯μ΄ μμ΄λ νλ‘μΈμκ° μ λμκ°λ€λ λ§μ΄λ€.
μ΄ ν¨ν΄μ νΉμνμ¬ κ²μ λΆμΌ μΈμμλ μ°Ύμ보기λ νλ€μ§λ§ μ€μ λ‘ λ§μ΄ μ°μ΄κ³ μλ€. (μ λν° λ± κ²μ μμ§)
μμ νλ‘κ·Έλλ¨Έλ μ½λλ₯Ό λͺ¨λ μ§κ³ λμμΌ νλ‘κ·Έλ¨μ λ릴 μ μμλ€. μ¦, μ€κ°μ νμΈνλ κ²μ κ±°μ λΆκ°λ₯νλ€. μ΄λ° νλ‘κ·Έλ¨μ λ°°μΉ λͺ¨λ νλ‘κ·Έλ¨μ΄λΌκ³ νλλ°, λͺ¨λ μμ μ΄ λλκ³ λλ©΄ νλ‘κ·Έλ¨μ΄ λ©μΆλ€. μ¬κΈ°μ λμ€λ λ¬Έμ μ μ λλ²κΉ νλ λ°λ μ€λ κ±Έλ € μμ°μ±μ΄ λ¨μ΄μ§κ² λλ€λ μ μ΄λ€.
κ·Έλμ μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ λνν νλ‘κ·Έλ¨μ΄ λμλ€. νλ μ΄μ΄μ μ λ ₯μ κΈ°λ€λ Έλ€κ° μλ΅νλ©΄ λ€μ μ§νλλ λ°©μμ΄λ€. μ΄λ¬ν λ°©μμ μ¬μ ν μ¬λ¬ λΆμΌμμ μ°μ΄κ³ μλ€. λ¨μ μΌλ‘ μλ νλ‘μΈμλ§ λ΄λ μ¬μ©μ μ λ ₯μ 무ν λκΈ°νλ€.
while (true)
{
Event* event = waitForEvent();
dispatchEvent(event);
}
λλΆλΆμ λ€λ₯Έ μννΈμ¨μ΄μλ λ¬λ¦¬ κ²μμ μ μ μ λ ₯μ΄ μμ΄λ κ³μ λμκ°μΌ νλ€. μλ₯Ό λ€μ΄ λͺ¬μ€ν°κ° λμ€λ νλμ κ°λ§ν μμ΄λ λͺ¬μ€ν°λ νλ μ΄μ΄λ₯Ό κ³μ λλ €μ μΈμ κ° μ¬λ§νκ² λ§λ λ€. κ²μ 루νμ ν΅μ¬μ 루νμμ μ¬μ©μ μ λ ₯μ μ²λ¦¬νμ§λ§ λ§λ₯ κΈ°λ€λ¦¬κ³ μμ§ μλλ€λ μ μ΄λ€. μ¦, νμ λμκ°λ©° Inputμ μμλ‘ λ°μΌλ©΄μλ Updateλ₯Ό μμλ‘ λ°μΌλ©΄μ νλ μλ§λ€ λ λλ§μ νλ€.
κ·Έλ λ€λ©΄ κ²μ μλμμ μκ°κ³Ό νμ€ μκ°μ λΆλͺ λ€λ₯Έλ° μ΄λ»κ² μ²λ¦¬ν΄μΌ ν κΉ?
루νκ° μ λ ₯μ κΈ°λ€λ¦¬μ§ μλλ€λ©΄ 루νκ° λλλ° μΌλ§λ 걸리λμ§κ° μ€μνλ€. λ§μ½ 루νκ° κΈΈλ€λ©΄ μ¬μ©μ μ λ ₯μ΄ λ€μ΄μλ λ°μ§ μμ κ²μ²λΌ μ²λ¦¬λλ κ²½μ°κ° μκΈΈ κ²μ΄λ€. μ΄ μκ°μ FPSλΌκ³ νλ©° μΌμ΄λΉ νλ μμΌλ‘ κ³μ°νλ€. FPSκ° λμμλ‘ λΆλλ½κ³ λΉ λ₯Έ νλ©΄μ 보μ¬μ€λ€.
μ¬κΈ°μ νλ μ λ μ΄νΈμ κ°μ κ²°μ νλ κ²λ μ€μνλ€.
- ν νλ μ μμμ μΌλ§λ λ§μ μμ μ μννλκ°? 물리 κ³μ°μ΄ 볡μ‘νκ³ μ€λΈμ νΈκ° λ§μμλ‘ CPU, GPUκ° μμ ν κ²λ€μ΄ λ§μμ§λ€.
- μ½λκ° μ€νλλ νλ«νΌμ μλλ? νλμ¨μ΄ μλκ° λΉ λ₯΄λ€λ©΄ κ°μ μκ°μ λ λ§μ μμ μ΄ κ°λ₯νλ€.
μ΄μΈμλ νλ μ λ μ΄νΈλ₯Ό κ²°μ νλ μμΈμ λ무 λ§λ€. κ·Έλμ νλ μμ κ³ μ μΌλ‘ μ¬μ©νλ κ²½μ°κ° λ§λ€. μλνλ©΄ λͺ¨λ νλμ¨μ΄κ° λκ°μ μλλ₯Ό 보μ₯νμ§ μμΌλ―λ‘ κ²μ 루νμμλ μΌμ ν μλμμ μ€νλ μ μλλ‘ λ³΄μ₯ν΄μΌ νκΈ° λλ¬Έμ΄λ€.
κ³ μ νλ μμ μ€μ νλλΌλ κ²μμ΄ μ μλλλλ‘ νλ €λ©΄, νλ μμ λ°λΌ μ€μ μκ°μ λ°λΌκ°λλ‘ ν΄μΌ νλ€. μ¦, νλ μ μ΄νλ‘ μ€μ μκ°μ΄ μΌλ§λ μ§λ¬λμ§μ λ°λΌ μκ° κ°κ²©μ μ‘°μ ν΄μΌ νλ€. κ·Έλ¬λ μ΄λ¬ν λ°©μμ μλ²½νμ§ μλ€. λ³΄ν΅ κ²μμμλ λΆλ μμμ (float)μ μ°κΈ° λλ¬Έμ λ°μ¬λ¦Ό μ€μ°¨κ° μκΈ°κΈ° λ§λ ¨μ΄λ€. μ»΄ν¨ν° μλμ λ°λΌ λ°μ¬λ¦Ό μ€μ°¨κ° 컀μ§λ©΄ μ€λΈμ νΈμ μμΉκ° μ»΄ν¨ν°λ§λ€ λ€λ₯΄κ² λ³΄μΌ κ²μ΄λ€. μ΄μΈμλ νλ©΄μ λΉμΆλ λ λλ§ λΉλ λκΈ°ν, λ©ν° μ€λ λ© λ± μμ²λ μ΅μ νλ₯Ό κ±°λν΄μ κ²μ 루νλ₯Ό μμ±ν΄μΌ νλ€.
κ·Έλμ λλΆλΆμ μ§μ ꡬννμ§ μκ³ μ΄λ―Έ ꡬνλ μμ§μ μ΄λ€...