인디 게임 코딩: 최고의 구조 만들기
대부분의 인디 게임은 스파게티 코드다
실제로 출시된 게임들의 내부 코드는 복잡한 스파게티처럼 엉켜 있는 경우가 많아요. 비록 코드가 "안 예쁘다" 해도, 작동만 하면 큰 문제가 아닙니다. 하지만 나중에 유지보수나 확장, 디버깅할 때는 힘들 수 있으니, 조금만 신경 써보면 많은 시간을 아낄 수 있습니다.
재사용 가능한 코드 모듈 만들기는 필수
예를 들어 오브젝트를 소환하는 시스템(object spawner)이 있다면, 매번 새로 만들지 말고 어느 곳에든 끼워 쓸 수 있게 만들어야 해요. 이렇게 하면 플레이어 이동, 적 AI, 웨이브 소환 등 각각을 '독립적인 시스템'으로 관리하게 되고 필요에 따라 쉽게 대체하거나 재활용할 수 있습니다.
"글루 코드"로 시스템 연결하기
각 시스템은 최대한 독립적이어야 해요. 서로 직접 참조하거나 강하게 연결하면 나중에 분리하기 힘듭니다. 시스템끼리 연결할 때는,
유니티 이벤트, 노코드 엔진 기능, 노출 필드를 쓰거나
단순하게 연결만 담당하는 작은 스크립트(글루 코드)를 만들어서 관리합니다.
글루 코드는 재활용 목적이 아니라, 프로젝트마다 그때그때 필요한 연결만 담당하도록 설계하는 것이 좋습니다.
레고 블록처럼 모듈 쌓기
작은, 잘 분리된 모듈들을 계속 쌓아서 자신만의 "코드 레고" 상자를 만들어두세요. 한 프로젝트에서 만든 모듈을 다음 게임에서도 쉽게 꺼내 쓸 수 있어 제작 속도가 점점 빨라집니다. 이 구조에서는 대략 70%는 재사용 가능한 코드, 30%는 글루 코드나 관리 스크립트가 됩니다.
데이터와 코드, 철저히 분리하기
게임 내 숫자, 밸런스 값, 번역 등 '데이터'는 최대한 코드와 따로 보관하세요. 어느 한 곳에 정리해두면, 나중에 번역 추가나 밸런스 변경도 쉽고, 다른 사람이 콘텐츠를 추가할 때도 매우 편리합니다. 데이터는 스프레드시트(엑셀 등), 데이터베이스, 혹은 게임 엔진의 Scriptable Object 등 다양한 방식으로 관리할 수 있습니다.
데이터는 한 곳에 몰아서 관리하라
밸런스 값이 군데군데 흩어져 있으면 유지보수나 게임 디자인이 힘들어집니다. 관련된 데이터는 꼭 한 파일 혹은 한 테이블에 모아서 두세요. 이러면 게임 디자이너나 개발자가 수치를 빠르게 수정하거나 새로운 요소를 쉽게 추가할 수 있습니다.
시간(Execution Order) 관리는 반드시 필요
모든 게임 시스템은 '언제' 실행될지(업데이트 시점 등) 명확히 정의해야 해요. 작은 프로젝트는 상관없지만, 규모가 커질수록 실행 순서(Execution Order)를 직접 제어하는 스크립트를 두는 게 코드를 깔끔하게 유지하는 데 도움이 됩니다.
게임플레이와 아트(뷰)는 반드시 분리하라
게임의 시뮬레이션(플레이 로직)과 비주얼(렌더링)은 따로 분리하세요. 시뮬레이션은 모든 게임 규칙과 상태만 신경쓰고, 뷰는 그 결과를 읽어서 화면에 보여줄 뿐입니다. 각자 자신의 데이터, 글루 코드, 관리 시스템을 따로 둔다면 유지보수가 훨씬 쉬워집니다.
만능 매니저 대신 여러 소매니저 활용
모든 걸 총괄하는 하나의 거대한 "게임 매니저"를 만들기보단, 적 매니저/빌딩 매니저/날짜 관리 등 작고 역할이 확실한 관리 모듈들을 활용하세요. 이러면 복잡성이 줄고, 문제가 생겼을 때 어디서 고쳐야 할지 찾기가 쉬워집니다.
자신만의 구조를 찾으며 계속 실험하자
해답이 하나만 있는 건 아닙니다. 위의 가이드라인을 참고해서 자신과 프로젝트에 맞는 방식을 꾸준히 실험하고 개선하세요. 결국 "잘 작동하면 그게 정답!"이며, 조직력과 확장성을 유지하면 됩니다. 게임이 커질수록 조직화가 중요해집니다!
출처 :
