별도의 비용 없이 완전한 3D 게임을 만들 수 있는 엔진, 거기에 커뮤니티의 놀라운 지원까지 더해진 엔진은 유니티밖에 없을 것이다. 이 책은 유니티를 통해 별도 비용을 들이지 않고 전문적 수준의 게임을 만드는 방법을 설명한다.
『Unity 3 Game Development Hotshot 한국어판』은 흥미롭지만 간단하지 않은 8가지 게임 프로젝트를 다룬다. 이를 통해 유저에게 수준 높은 게임 경험을 제공하기 위해 필요한 유니티의 다양한 기능을 설명하고, 상세하고 친절한 단계별 해설, 도표, 그림으로 독자의 학습을 돕는다.
모든 프로젝트는 유니티의 특정 기술을 최대한 활용하도록 설계됐다. RPG(롤플레잉게임)에 사용될 주인공을 만들고, 업그레이드 아이템과 방어구와 무기로 캐릭터를 커스터마이징 할 수 있는 RPG 메뉴를 제작한다. 뿐만 아니라 캐릭터 셰이딩(shading), 모델링, 리깅(rigging), 애니메이션 과정을 모두 거치면서, 단순한 스프라이트 캐릭터를 넘어 파이널 판타지(Final Fantasy) 속의 캐릭터 같은 모습으로 발전시켜 나간다.
대부분의 FPS 게임에서 가장 강력한 무기라고 할 수 있는 로켓 론처(rocket launcher)도 제작하고 화염과 연기 파티클 효과를 추가한다. 한편 인공지능(AI)으로 제어되는 몬스터를 만들어서 앞서 만든 캐릭터가 로켓 론처로 공격할 수 있는 대상을 제공한다. 또한 상호작용할 수 있는 게임 월드를 구현해서 로켓이 표적을 빗나갈 경우에 주변 환경에 영향을 미치게 만든다. 그 다음에는 화장실에 다녀올 경우처럼 불가피하게 게임을 중간에 멈춰야 할 경우에 대비하기 위해서 저장과 불러오기 기능을 구현한다. 마지막으로는 플레이 결과를 모두에게 알릴 수 있도록, 점수를 온라인에 올리는 방법을 살펴본다.---저자 서문 중에서
게임 개발 과정에서 특정 문제를 다룰 때, 개발자는 효과(effectiveness)와 효율(efficiency)을 함께 고려해야 한다. 여기서 효과란 게임 디자인이 정한 범주 안에서 게임 시스템과 플레이어의 상호작용이 야기하는 다양한 문제에 얼마나 포괄적이고, 체계적으로 대비하느냐에 관한 것이다. 이에 비해 효율은 그러한 문제를 얼마나 적은 비용으로 간단하게 해결하느냐에 관한 것이다. 예를 들어, 게임에서 캐릭터가 점프하는 기능을 효율적으로 구현하는 것은 비교적 어렵지 않다. 그러나 체공 시간 조절, 이중 점프, 점프 상태에서의 이동, 상승과 체공과 하강에 따른 애니메이션 적용, 하강과 추락의 구분 등의 상황을 포괄하는 효과적인 점프의 구현은 어려운 문제다. 특히 효과적이면서도 동시에 효율적인 해결 방법을 찾는 것은 더욱 어렵다. 게임 개발은 일련의 문제에 대해 효과와 효율을 함께 충족시킬 수 있는 해결 방법을 찾는 과정이라고 할 수 있다.
유니티의 인기를 반영하듯 최근 해외에서 다양한 유니티 입문서가 속속 출간되고 있다. 대다수 책은 쉽고 친절한 설명을 통해 초보자가 유니티에 편하게 적응하게 하고, 빠른 시간 안에 가시적 결과를 만들어 유니티와 게임 개발에 대한 흥미와 관심을 고취한다는 점에서 분명히 의의가 있다. 그러나 입문서로서의 역할에 충실하기 위해, 개발상의 문제를 단순화하고, 효율적 측면을 중심으로 문제에 접근한다. 그 결과, 실무에서 접하는 복합적 문제에 대한 효과적 해결 방법은 입문서 이후의 과정으로 남게 된다. 상대적으로 오랜 역사를 가진 개발 도구의 경우에는 입문서와 실제 개발을 좀 더 매끄럽게 연결해 주는 중급 이상의 개발서가 존재한다. 그러나 유니티의 경우에는 안타깝게도 효과와 효율이 균형을 이루는 중급 이상의 개발서를 찾기 힘들었다. 따라서 개발서를 통해 유니티를 학습하는 독자는 입문서의 종착점과 실제 개발의 출발점 사이에 넓은 간격을 스스로 메워야 했다.
『Unity 3 Game Development Hotshot 한국어판』은 중급 수준 이상의 독자를 위한 유니티 개발서다. 앞에서 언급한 입문서에서 다루는 내용과 실제 개발 과정에서 일어나는 문제 간의 간격을 메워주는 책이라고 할 수 있다. 이 책은 입문서에서는 다루기 어렵지만, 개발에서 자주 접하게 되는 다양한 주제를 수준 높은 맞춤 프로젝트를 예로 들어가며 설명한다. 또한 문제를 단순화해서 쉽고 간단한 해법을 제시하기보다는, 체계적인 접근과 다양한 유니티 기능의 활용을 통해 복잡한 문제에 대한 효과적인 해결 방법을 소개한다. 이 과정에서 독자는 유니티 에디터와 스크립팅의 심도 있는 기능과 활용 방안을 자연스럽게 익힌다.
이 책은 입문서처럼 모든 부분을 하나하나 설명하지는 않는다. 또한 일부에서는 외부 자료를 직접 인용하면서 다소 매끄럽지 못한 연결을 보이기도 한다. 그러나 중급 수준의 독자라면 스스로 관련된 정보를 확인하면서 행간의 의미를 파악하는 과정이 더 큰 실익을 가져오리라 확신한다. 특히 중급 이상의 개발서가 부족했던 상황을 감안하면, 유니티를 공부하는 독자에게 매우 유익한 경험이 될 것이라 믿는다. 이 책의 번역이 독자 제현의 유니티 활용과 게임 개발에 작은 도움이 될 수 있기를 희망한다.
---옮긴이의 글 중에서