메인 콘텐츠로 건너뛰기

인디 게임 코딩: 최고의 구조 만들기

요약

대부분의 인디 게임은 스파게티 코드다

실제로 출시된 게임들의 내부 코드는 복잡한 스파게티처럼 엉켜 있는 경우가 많아요. 비록 코드가 "안 예쁘다" 해도, 작동만 하면 큰 문제가 아닙니다. 하지만 나중에 유지보수나 확장, 디버깅할 때는 힘들 수 있으니, 조금만 신경 써보면 많은 시간을 아낄 수 있습니다.

재사용 가능한 코드 모듈 만들기는 필수

예를 들어 오브젝트를 소환하는 시스템(object spawner)이 있다면, 매번 새로 만들지 말고 어느 곳에든 끼워 쓸 수 있게 만들어야 해요. 이렇게 하면 플레이어 이동, 적 AI, 웨이브 소환 등 각각을 '독립적인 시스템'으로 관리하게 되고 필요에 따라 쉽게 대체하거나 재활용할 수 있습니다.

"글루 코드"로 시스템 연결하기

각 시스템은 최대한 독립적이어야 해요. 서로 직접 참조하거나 강하게 연결하면 나중에 분리하기 힘듭니다. 시스템끼리 연결할 때는,

  • 유니티 이벤트, 노코드 엔진 기능, 노출 필드를 쓰거나

  • 단순하게 연결만 담당하는 작은 스크립트(글루 코드)를 만들어서 관리합니다.

글루 코드는 재활용 목적이 아니라, 프로젝트마다 그때그때 필요한 연결만 담당하도록 설계하는 것이 좋습니다.

레고 블록처럼 모듈 쌓기

작은, 잘 분리된 모듈들을 계속 쌓아서 자신만의 "코드 레고" 상자를 만들어두세요. 한 프로젝트에서 만든 모듈을 다음 게임에서도 쉽게 꺼내 쓸 수 있어 제작 속도가 점점 빨라집니다. 이 구조에서는 대략 70%는 재사용 가능한 코드, 30%는 글루 코드나 관리 스크립트가 됩니다.

데이터와 코드, 철저히 분리하기

게임 내 숫자, 밸런스 값, 번역 등 '데이터'는 최대한 코드와 따로 보관하세요. 어느 한 곳에 정리해두면, 나중에 번역 추가나 밸런스 변경도 쉽고, 다른 사람이 콘텐츠를 추가할 때도 매우 편리합니다. 데이터는 스프레드시트(엑셀 등), 데이터베이스, 혹은 게임 엔진의 Scriptable Object 등 다양한 방식으로 관리할 수 있습니다.

데이터는 한 곳에 몰아서 관리하라

밸런스 값이 군데군데 흩어져 있으면 유지보수나 게임 디자인이 힘들어집니다. 관련된 데이터는 꼭 한 파일 혹은 한 테이블에 모아서 두세요. 이러면 게임 디자이너나 개발자가 수치를 빠르게 수정하거나 새로운 요소를 쉽게 추가할 수 있습니다.

시간(Execution Order) 관리는 반드시 필요

모든 게임 시스템은 '언제' 실행될지(업데이트 시점 등) 명확히 정의해야 해요. 작은 프로젝트는 상관없지만, 규모가 커질수록 실행 순서(Execution Order)를 직접 제어하는 스크립트를 두는 게 코드를 깔끔하게 유지하는 데 도움이 됩니다.

게임플레이와 아트(뷰)는 반드시 분리하라

게임의 시뮬레이션(플레이 로직)과 비주얼(렌더링)은 따로 분리하세요. 시뮬레이션은 모든 게임 규칙과 상태만 신경쓰고, 뷰는 그 결과를 읽어서 화면에 보여줄 뿐입니다. 각자 자신의 데이터, 글루 코드, 관리 시스템을 따로 둔다면 유지보수가 훨씬 쉬워집니다.

만능 매니저 대신 여러 소매니저 활용

모든 걸 총괄하는 하나의 거대한 "게임 매니저"를 만들기보단, 적 매니저/빌딩 매니저/날짜 관리 등 작고 역할이 확실한 관리 모듈들을 활용하세요. 이러면 복잡성이 줄고, 문제가 생겼을 때 어디서 고쳐야 할지 찾기가 쉬워집니다.

자신만의 구조를 찾으며 계속 실험하자

해답이 하나만 있는 건 아닙니다. 위의 가이드라인을 참고해서 자신과 프로젝트에 맞는 방식을 꾸준히 실험하고 개선하세요. 결국 "잘 작동하면 그게 정답!"이며, 조직력과 확장성을 유지하면 됩니다. 게임이 커질수록 조직화가 중요해집니다!

출처 :