← SEARCHABLE ARCHIVE
Game Development · 2026-07-02

게임 개발은 무엇부터 시작할까?

입력, 상태 갱신, 렌더링으로 게임 루프 이해하기

INTERACTIVE READING MODE →

본 블로그 작성 글들은, 강의를 목표로 하고 제작되었습니다. 또한 작성된 글의 정보도 틀렸을 수 있으니, 주의해주세요.

게임 개발은 그래픽을 그리는 일만 의미하지 않는다. 플레이어의 입력을 받고, 게임의 상태를 바꾸고, 그 결과를 화면과 소리로 전달하는 전체 과정을 만드는 일이다.

게임은 상태를 반복해서 갱신한다

캐릭터의 위치, 체력, 점수, 현재 스테이지는 모두 게임의 상태다. 게임은 실행되는 동안 이 상태를 계속 갱신한다.

입력을 읽는다.
게임 상태를 갱신한다.
현재 상태를 화면에 그린다.
이 과정을 다시 반복한다.

이 반복 구조를 게임 루프라고 부른다. 엔진을 사용하면 루프 자체는 엔진이 관리하지만, 개발자는 각 단계에서 어떤 일이 일어날지 작성한다.

while (isRunning)
{
    ProcessInput();
    UpdateGame(deltaTime);
    RenderGame();
}

프레임 속도와 시간은 다르다

컴퓨터마다 1초 동안 실행할 수 있는 프레임 수가 다르다. 캐릭터를 프레임마다 1만큼 움직이면 30 FPS와 144 FPS에서 속도가 달라진다.

그래서 이동량에 이전 프레임부터 흐른 시간인 deltaTime을 곱한다.

position += direction * speed * deltaTime;

이렇게 하면 프레임 수가 달라도 초당 이동 속도를 비슷하게 유지할 수 있다. 물리 계산처럼 일정한 간격이 중요한 시스템은 고정된 시간 간격으로 따로 갱신하기도 한다.

규칙과 표현을 분리한다

플레이어가 공격했을 때 피해량을 계산하는 일은 게임 규칙에 가깝다. 칼을 휘두르는 애니메이션과 효과음을 재생하는 일은 표현에 가깝다.

둘을 한 코드에 모두 넣으면 새로운 무기나 네트워크 기능을 추가할 때 수정 범위가 커진다. 데이터, 규칙, 화면 표현을 나누면 같은 규칙을 다른 그래픽이나 UI에서도 사용할 수 있다.

처음부터 거대한 게임을 만들 필요는 없다. 입력 하나, 움직이는 오브젝트 하나, 명확한 성공 조건 하나를 가진 작은 루프를 완성하는 것이 게임 개발의 가장 좋은 시작이다.