Unity 검색

인디 스튜디오가 안정적인 빌드를 유지하기 위한 AAA 베스트 프랙티스

최근 업데이트: 2018년 11월

이 페이지의 내용: 안정적이고 유연한 빌드 파이프라인을 유지하여 시간과 비용을 절약하는 방법에 대한 검증된 베스트 프랙티스입니다. 버전 관리, 변경 내역 목록 활용, 클린 치트 기능, 버그 추적 등의 내용을 다룹니다.

일반적인 AAA 스튜디오는 대규모 팀을 통해 큰 타이틀을 출시하는 수년간의 경험을 통해 제작을 관리하고 안정적인 빌드를 유지하는 방법을 터득합니다. MetalPop Games의 사샤 군드라흐(Sascha Gundlach)는 인디 게임 개발자가 제작 과정에 AAA 방식을 도입할 수 있는 방법을 소개합니다.

클린 빌드에서는 변경 및 추가 또는 기능 유지 및 디버깅이 수월합니다. 전반적으로 게임을 더욱 신속하고 효율적으로 개발할 수 있습니다.

클린 빌드의 이점
  • 버그를 줄인 안정적인 게임 출시
  • 감소된 버그와 깔끔한 코드베이스(Codebase)를 통한 제작 시간 감소
  • 빌드가 손상될 가능성 감소
  • 더욱 쉽게 데모 버전 및 특별 빌드 구축

모든 AAA 빌드 방식이 인디 개발팀에게 적합한 것은 아닙니다. 하지만 무료이거나 합리적인 가격으로 모든 규모의 팀이 버그가 없고 안정적인 빌드를 유지할 수 있는 여러 방법이 있습니다.

1인 운영자인 경우에도 다음 팁을 활용하면 더 개선되고 안정적인 게임 빌드를 유지하는 데 도움이 됩니다.

버그가 없고 안정적인 빌드를 유지하기 위한 베스트 프랙티스와 팁을 살펴보겠습니다.

버전 관리 사용

무료 VCS(버전 관리 시스템)를 활용할 수 있는 오늘날에도 일부 팀들은 협업하기 위해 공유 폴더 및 Dropbox를 사용하는 경우가 있습니다. 버전 관리 없이 개발을 진행하는 것은 마치 안전벨트를 매지 않고 운전하는 것과도 같습니다. 안전벨트를 매는 것이 불편하고 자유가 제한되는 것처럼 느껴질 수도 있지만, 전속력으로 장애물에 부딪힐 경우 목숨을 건질 수 있습니다.

특히 소규모 팀의 경우, 작업 내용을 잃는다는 것은 큰 손실입니다. Dropbox 계정 해킹이나 고장난 하드디스크로 인해 몇 일 또는 몇 주간 진행한 작업 내용을 잃어서는 안 됩니다.

이를 해결하기 위한 여러 무료 솔루션이 있습니다. Perforce는 소규모 인디 개발팀에 무료 라이센스를 제공하고, Git 또는 SVN 역시 무료로 사용할 수 있습니다. 또한 Unity에 Unity 팀즈가 내장되어 있다면 일이 더욱 수월해집니다.

게임 프로젝트 관리를 위한 VCS 사용은 필수적입니다.

변경 내역 목록 활용

안전성과 더불어 VCS가 제공하는 또 하나의 이점은 변경 내역에 대한 개요를 확인할 수 있는 변경 내역 목록(Changelist)입니다.

변경 내역 목록

모든 변경 내역을 표시하는 Perforce 폴더 이력

대부분의 시스템은 변경 사항에 대한 세부 내용 입력을 강요하지 않지만, 변경 사항을 명확하게 기록할 것을 권장드립니다.

뿐만 아니라, 변경 사항에 대한 접두사(prefix)를 사용하면 패치노트(patchnote) 및 비슷한 문서를 쉽게 작성할 수 있습니다. 다음은 변경 사항을 간편하게 분류하기 위해 권장되는 접두사의 모음입니다.

  • !B 버그 해결
  • !V 시각적인 변동 및 개선 사항
  • !G 게임플레이 변동 사항
  • !X 패치노트에서 무시해도 될 변경 사항

VCS에 변경 사항을 입력하고 여기에 선행 접두사를 지정하면 추후에 각 기록에 대해 스크립트를 실행하여 깔끔한 패치노트 문서로 분류할 수 있습니다.

VCS로의 깔끔한 입력의 예시는 다음과 같습니다.

"!V 폭발 파티클 효과 키움"

"!B 무기를 집을 때 발생하는 크래시 수정"

"!G 메디 키트를 통한 체력 회복량 증가"

모든 입력 사항을 정돈되고 명료하게 유지하면, 필요에 따라 패치노트 문서를 취합하기가 매우 수월해집니다.

패치노트에 기재되어 있는 내용을 식별하기 위해 수동으로 최근 변경 사항을 탐색하는 작업은 많은 시간이 소비되며 지루한 일입니다.

빌드 청결: 안정적인 빌드 유지

팀원 전체가 빌드 청결의 기본 사항을 숙지하는 것은 매우 중요합니다.

완벽한 클린 빌드를 유지하기 위한 5가지 베스트 프랙티스는 다음과 같습니다.

1. 빌드를 손상시키는 코드 금지

손상된 내용은 허용하지 마세요. 작업 중인 기능이 완성되지 않았지만 체크인해야 할 경우, 이를 비활성화하거나 변경 사항을 따로 보관하여 나머지 내용을 손상시키지 않도록 하세요. 작동되지 않는 코드를 입력하여 손상된 빌드로 인해 팀 전체의 작업이 중단되어서는 안 됩니다.

2. 하드코드된 키보드 단축키 금지

특정 치트 및 디버깅 기능을 위한 커스텀 단축키를 추가하는 것은 매우 편리할 수 있습니다. "F12 키를 돈 치트 키로 설정해도 괜찮을 거야. 아무도 눌러보지 않겠지?"

하지만 이런 기능을 키로 하드코딩하면 잊어버리기 쉽기 때문에 매우 위험합니다. 실수로 출시가 될 수도 있고, 테스터가 실수로 기능을 활성화하여 이에 대한 버그 리포트가 쌓일 수 있습니다.

3. 잘못된 코드 및 누락된 코드 표시하기

간혹 해킹이 필요한 경우가 있습니다. 아무리 피하고 싶더라도, 일정 시점이 되면 코드에 일시적인 핵(Hack)이 있어야 합니다.

핵 또는 차선책(Workaround)을 추가할 때, 이를 코드에 반드시 찾기 쉬운 키워드로 표시하세요. 핵을 //HACK으로 표시하거나 누락된 코드를 //TODO로 표시하세요. 이렇게 하면 나중에 코드에서 해당 태그만 찾아 쉽게 변경할 수 있습니다.

코드

(핵 및 누락 코드를 깔끔하게 표시한 UI 게임 코드)

4. 로그 스팸(Log Spam)

코드에 내용을 로깅하는 것은 유용하며 문제 추적에 도움을 줄 수 있습니다. 하지만 주기적으로 로그 스팸을 정리하는 것이 중요합니다.

콘솔에 로그가 가득 차 있어 중요한 경고 및 오류가 파묻힌다면 상황 파악을 하는 것이 어려워집니다. 기능에 대한 작업을 진행하고 있지 않다면 콘솔은 최대한 깔끔하고 비어 있는 상태로 유지하여 중요한 메시지가 표시될 경우 바로 확인할 수 있어야 합니다.

5. 파일명 및 명명 규칙

빌드의 크기는 시간이 지나면서 수백 개 또는 수천 개의 파일로 규모가 커집니다. 그렇기 때문에 명료한 명명 규칙을 따르는 것이 매우 중요합니다.

새 프로젝트를 시작할 때 시간을 들여서 이해하기 편한 명명 규칙을 정하고 이를 반드시 준수하세요.

빌드에 'texturetestFinal01.png''backup22.fbx'와 같은 내용이 있을 경우 빌드가 매우 지저분해집니다.

정기적으로 검사를 진행하고 프로젝트 내의 지저분한 파일명을 정리하세요.

이를 위한 다음과 같은 몇 가지 팁이 있습니다.

  • 구체적인 이름 사용

    'atkBtn.cs' 대신 'AttackButtonBehavior.cs' 사용

  • 낙타 표기법(camelCase) 또는 파스칼 표기법(PascalCase) 사용

    'notsocleanfilename.cs'는 'MyCleanFilename.cs'보다 가독성이 떨어짐

  • 밑줄(Underscore)을 이용해 파일명을 명확하게 하기

    'WoodenHouse_Blue', 'WoodenHouse_Green'

클린 치트(Clean Cheat) 기능

게임을 개발할 때는 수시로 디버깅과 치트를 수행해야 합니다. 다른 레벨로 넘어가거나, 돈을 추가하거나, 무적 상태가 되거나, 추가적인 적을 생성하는 등 여러 치트가 필요할 수 있습니다.

이런 치트는 필요할 때 추가하고 사용이 끝나면 비활성화할 수 있지만, 이와 같은 치트 기능을 끄고 켤 수 있는 안정적인 방법을 사용하는 것이 좋습니다.

소규모 프로젝트라도 시간을 투자하여 모든 개발자가 쉽게 끄고 켤 수 있으며 일반적인 모든 치트 및 디버그 옵션에 대한 액세스를 제공하는 편리한 디버그/치트 메뉴를 구축하는 것이 좋습니다.

치트 기능

현재 개발 중인 게임인 Galactic Colonies의 치트 메뉴

이를 통해 실수로 치트를 게임과 함께 출시할 위험성을 최소화할 수 있습니다. 뿐만 아니라 '치트 코드'를 한 곳에 모아놓으면 모든 기능이 안정적으로 작동하고 확장에 용이합니다.

이러한 접근 방식의 또 하나의 이점은 개발 치트(Dev-cheat) 과정이 더욱 빨라지며 일상적인 제작 과정에서 많은 시간을 절감할 수 있습니다. 스크립트에서 값을 하드코딩하는 것보다 편리한 디버그 창에서 버튼을 누르는 것이 훨씬 더 빠릅니다.

버그

게임에는 버그가 발생합니다. 모든 게임에는 버그가 있으며 어느 게임도 예외가 아닙니다. 중요한 것은 버그를 어떻게 처리하느냐입니다.

버그를 효율적으로 처리하는 워크플로는 꽤 간단합니다. QA 부서에서 버그를 찾아 이를 버그 추적 시스템에 입력합니다. 그 후 해당 문제를 개발자에게 배정하면 개발자가 문제를 해결하고 해결된 상태로 표시합니다. 최종적으로 QA 팀에서 문제를 확인한 후 완료된 것으로 표시합니다. 이처럼 매우 간단한 3단계 과정입니다.

QA 전담 부서가 없나요? 개발자가 테스터의 역할까지 맡고 있나요?

걱정하지 마세요. 버그를 관리하는 데 많은 것이 필요하지 않습니다.

버그 추적

먼저 버그를 추적하세요. 1인 팀이라도 적절한 버그 추적을 설정하는 것은 매우 쉽습니다.

버그 추적 소프트웨어(다양한 무료 및 조건부 무료 소프트웨어가 있습니다)를 선택하여 설치하세요. 이것이 부담이 된다면 엑셀 또는 책상 위의 수첩을 활용해도 됩니다. 중요한 것은 하나의 중심적인 위치에 문제를 수집하고 추적하는 것입니다.

추적

Trello 보드로도 쉽게 버그 추적이 가능

통제된 환경 유지

문제를 추적하기 위한 시스템이 구축되었다면 나머지는 규정 준수가 중요합니다. 버그가 많은 빌드는 제작 속도를 낮추고 더 많은 새로운 문제를 일으킬 수 있습니다.

다음과 같이 버그를 관리하기 위한 몇 가지 팁이 있습니다.

금요일은 버그 해결의 날

금요일을 버그 해결의 날로 지정하는 것은 버그가 없는 빌드를 유지하기 위한 좋은 방법입니다. 개념은 간단합니다. 한 주의 끝, 즉 금요일마다 새로운 기능에 대한 작업을 하는 대신 모두가 버그 목록에 기록된 항목에 대한 작업만 진행할 수 있습니다. 이러한 접근 방법을 통해 버그가 없는 안정적인 빌드로 한 주를 시작할 수 있습니다.

버그를 오래 미루지 않기

버그 관리가 되지 않는다면 잠시 새로운 기능에 대한 작업을 멈추고 상황이 정리될 때까지 빌드를 안정화하는 데 중점을 두는 것이 좋습니다.

문제의 원인 찾기

계속해서 같은 버그가 다시 발생한다면 이에 대한 원인을 파악해야 합니다. 레벨 빌드 파이프라인의 특정 부분이 레벨이 매번 손상되는 것의 원인인가요? 또는 .xml 파일로부터 게임플레이 값을 파싱하는 방식에서 반복적으로 오류가 발생합니까?

만약 지속적으로 문제를 일으키는 시스템을 찾아낸다면, 이로 인한 문제를 계속 해결하기보다 해당 시스템을 다시 빌드하는 것이 좋습니다.

안정성 유지

이 모든 베스트 프랙티스와 팁을 염두에 둘 경우, 나머지 부분은 규정 준수와 빌드 상태에 관심을 갖는 정도에 달려 있습니다.

위의 권장 사항을 취사 선택하여 인디 제작 환경에 적용하세요.

안정적인 빌드 상태를 유지하기 위해 조금 더 시간을 투자하는 것은 항상 중요하며 이를 통해 더 안정적이고 개선된 빌드를 얻게 됩니다.

리소스 더 보기
확인

유니티에서는 웹 사이트의 모든 기능을 최대로 이용할 수 있도록 쿠키를 사용합니다. 자세한 정보는 쿠키 정책 페이지를 참조하세요.