게임 개발이란 굉장히 소모적인 작업이다. 일단 게임 어플리케이션을 만들어야 하고, 또 그 위에 컨텐츠까지 생산해내야 하기 때문이다.
일반적인 응용 어플리케이션 개발은 프로그램을 만들어서 사용자들이 컨텐츠를 생산해내는데 도움을 주는 것이 목적인 반면, 게임과 같은 엔터테인먼트 관련 개발은 프로그램은 물론 컨텐츠 생산까지 개발자가 다 하고 사용자는 오로지 그것들을 소비하기만 하기 때문이다.1
게임을 만드는 일에서 프로그래머가 해야 하는 일은 크게 두가지로 분류할 수 있다.
우선 첫번째로 외부 고객, 즉 유저들을 상대로 하는 부분들을 제작하는 일이다. 보통 바깥에서 보면 개발의 전부라고 생각할 수 있는 부분이다. 예를 들면 프로그램의 UI 작성, 내부 로직 작성 등이다.
그리고 앞서 이야기했던 게임 제작의 특성상 두번째 일이 추가된다. 즉, 내부의 고객(기획파트와 그 외 파트들)을 상대로 하는 부분들을 만드는 일이다. 예를 들면 새 캐릭터를 추가하는 캐릭터 에디터, 맵을 만드는 맵 에디터, 퀘스트를 작성하는 퀘스트 에디터, 몬스터를 추가하는 몹 에디터 등이 있을 것이다.
이러한 내부 고객용 프로그램의 경우 비 프로그래머가 사용하는 프로그램이긴 하지만, 굉장히 특정한 소수의 사람들만 사용하기 때문에 불특정 다수가 사용하는 게임처럼 자동 업데이트를 공들여 만드는 것은 약간 비효율적이다. 하지만 그렇다고 매 변경시마다 바이너리를 수동으로 배포하는 방식은 문제가 많다.
- 소스 변경시 개발자가 빌드해서 새 바이너리를 만든다.
- 이 바이너리를 사용자들이 접근할 수 있는 공간에 업로드 한다.
- 바이너리가 변경되었음을 사용자들에게 알린다.
- 사용자들은 새 바이너리가 릴리즈 된 것을 확인하고 다시 다운로드를 한다.
보다시피 이런 일련의 과정은 자동화가 되어 있지 않아서 위 과정 중 한 군데에서만 문제가 발생해도 제대로 작동하지 않는다. 그리고 바이너리의 버전 관리가 되지 않으므로 문제가 발생하면 원인을 파악하기 어렵다.
원활하고 신속한 게임 개발을 위해서는 내부툴들의 자동 업데이트 기능이 필수적이다. 하지만 앞서 이야기했듯이 이 자동 업데이트 기능은 게임 어플리케이션의 그것과는 달리 특정 소수의 인원만 사용하므로 게임 패처처럼 잘 만들 필요는 없다.
따라서 이 포스트의 초점은 쓸만한 자동 업데이트 기능을 간단하게 구현하는 것에 있다.
- 그래서 현실 세계에서는 UCC 나 MOD 같은 개념들이 등장하고 있다. [↩]



Recent Comments