이 책을 저술한 베니타 퍼레이라는 흔치 않은 여성 게임 프로그래머이다. 내가 13여 년간 게임 업계에서 일하는 동안 여성 프로그래머를 단 두 명만 보았을 정도로 유독 게임 분야에서 일하는 여성 프로그래머는 흔하지 않다. 일반화하기에는 무리가 있겠지만, 함께 일해본 경험으로, 여성 프로그래머들의 경우엔 공통적으로 디테일을 놓치지 않는 꼼꼼한 작업 스타일이 인상적이었다.
우연인지는 모르겠으나, 여성 프로그래머가 집필한 이 책의 내용 설명에서도 비슷한 느낌을 받을 수 있었다. 대충 설명하고 넘어갈 수도 있는 부분들을 그냥 흘려 보내지 않고 매번 자세히 짚어 설명한 지은이의 꼼꼼함 덕분에, 독자들이 각 단계를 따라오는 중간에 흐름을 놓쳐 당황하는 일은 많지 않을 것이다. 여담이지만, 나는 책을 번역할 때 원서에 나오는 외국인 이름의 한글 표기를 가능하면 본인이 발음하는 그대로 옮기려고 고민하는데, 지은이에게 연락이 가능할 때는 지은이가 해당 원어를 어떻게 발음하는지 직접 물어보기도 한다. 이 책을 옮기면서도 지은이에게 트위터를 통해 이름을 어떻게 발음하는지 조언을 구했더니 한국어판 도서 출간에 기뻐하면서 친절하게도 자신의 이름 발음을 녹음한 영상을 전달해왔다. 바로 책에서 느낄 수 있었던 그런 친절함이 그대로 묻어나온 것이다.
모바일을 비롯한 멀티플랫폼 환경이 대세가 된 오늘날, 유니티 엔진은 이미 업계의 표준이 되었다고 할 수 있을 정도로 널리 사용되고 있다. 유니티 엔진은 프로그래머는 물론이고 게임 디자이너(기획자)나 아티스트에게 그저 그들이 담당하는 작업물을 산출하기 위한 도구를 넘어서 본질적으로 '게임'에 접근하도록 가능성을 활짝 열어주고 있다.
이 책은 유니티 엔진을 처음 접해보는 초급자뿐 아니라, 게임 프로그래밍이 처음인 입문자, 그리고 프로그래밍을 전공하지 않은 다른 직군 종사자에게, 유니티 엔진을 이용한 게임 개발에 꼭 필요한 기본적인 게임 프로그래밍 지식을 함께 알려주는 책이다.
유니티의 모든 기능을 샅샅이 소개하는 레퍼런스가 아닌, 2D 예제 게임들을 함께 만들며 유니티 엔진을 이용한 게임 개발 방법을 익히는 입문서다. 마음을 편히 가지고 책에서 소개하는 기본 설명과 다섯 개의 예제들을 순서대로 따라가다 보면 유니티를 이용한 게임 개발의 전반적인 흐름을 충분히 익힐 수 있을 것이다. 이 책을 끝까지 보고 나면 좀 더 어려운 유니티 개발 책의 내용을 비교적 쉽게연결해 볼 수 있게 될 것이다.
게임을 즐기는 많은 이들은 창조적이고 상상력이 풍부하며 기존의 게임보다 더 나은 자신만의 게임을 만들고 싶어한다. 단지 재미를 위해서든, 순수한 열정이든, 직업적인 이유든 간에 가장 대규모이고, 보상도 크며, 돈이 되는 업계 중 하나가 게임업계이다.
이런 이유로 게임 개발은 골드러시와 비슷한 점이 많다. 우리는 모두 꿈을 가지고 있지만, 오랜 시간 동안, 제대로 된 방법을 모르거나 잘못된 길로 가는 경우가 많다.
이 책의 목표는 게임 개발의 전체 그림을 보여주고, 소화하기 쉽게 작은 구성요소로 쪼개어 순서대로 차근차근 설명하여 초보자의 입문을 돕는 데 있다. 이미 유니티에 숙련된 이들은 유니티의 새로운 2D 기능들을 빠르고 쉽게 배울 수 있다.
게임을 만들 때, 항상 새로운 것을 배우고 새로운 것들을 발견하게 된다. 모든 사람들은 각자가 원하는 수많은 게임 구조와 다양한 시나리오를 만들길 원하기 때문에 책 한 권만으로 그 모든 것을 알려줄 수는 없다. 하지만 이 책에서는 다양한 장르의 게임을 통해 기초가 되는 모든 내용을 다룸으로써, 여러분이 책을 다 읽고 나면 원하는 어떤 게임이든 만들 수 있게 될 것이다.
유니티는 이제 더 이상 설명이 필요 없을 정도로 널리 사용되는 게임 엔진이자 개발 도구다. 비단 프로그래머뿐 아니라 게임 디자이너와 아티스트에게도 비교적 진입 장벽이 낮은 편이고, 유니티의 기능을 활용하기 위한 책과 참고 자료들이 수없이 많아 가장 대중적인 게임 엔진으로서의 이점도 누릴 수 있다.
유니티와 관련해 개인적으로 한 가지 아쉬운 점이 있다면 초급자를 위한 유니티 입문서와 튜토리얼 등은 손쉽게 찾아볼 수 있는 반면, 초급자가 중·고급자로 넘어가기 위해 필요한 지식을 전달하는 책과 자료는 상대적으로 찾아보기 어렵다는 것이다. 초급자를 위한 내용들을 습득한 이후 바로 고급자에게 특화된 내용을 다룬 저술이나 논문 등을 따라가기란 다소 벅찬데, 그 내용상의 간극을 독자 스스로가 자료를 찾아가며 채워야 하는 것이 지금까지의 현실이었다.
이 책은 유니티에서 C#을 이용해 스크립트를 작성할 때 필요한 중·고급 기술들에 대해 집중적으로 탐구해보는 중급자용 안내서다. 유니티 활용을 다루는 초급서와 C# 및 닷넷(.NET)에 대한 초급서를 살펴봤다면, 이 책에서 다루는 실용적인 예제들을 통해 유니티에서 C#을 좀 더 적극적으로 활용하는 아이디어를 얻어볼 것을 권한다.
내가 처음 유니티 엔진을 사용한 지도 수년이 지났지만 유니티를 처음 접했을 때의 충격은 아직도 잊을 수 없다.
사실 유니티 이전에도 멀티플랫폼을 지원하는 수많은 게임 엔진들이 편리한 기능과 독자적인 장점을 앞세워 여러 게임에 채택되어 사용되어 왔다. 콘솔과 온라인 게임이 게임시장의 대부분을 차지하던 때에 각 엔진들은 경쟁적으로 아티스트와 프로그래머의 작업을 쉽게 연동할 수 있도록 통합성을 강화하는 방향으로 발전해왔다. 유니티 또한 이러한 경향에 맞게 통합 게임엔진으로 만들어졌다.
그런데 2007년 아이폰 출시와 다음 해 앱스토어의 등장으로 게임시장은 급물살을 타기 시작하여 모바일 게임의 비중이 기하급수적으로 커지며 기존의 게임개발자와 회사들에게 이 플랫폼들을 추가로 지원해야 할 필요성이 빠르게 대두하였다. 여러 게임 엔진들도 이런 시류에 대응하여, 네이티브 코드 구현을 플랫폼별로 포팅하는 과정을 거치거나 스크립트 언어를 사용하여 게임 구현의 플랫폼 의존성을 제거하는 크게 두 가지 방향으로 대응하기 시작했다.
내가 유니티를 처음 접했을 때 놀랐던 부분은 기존 게임엔진들이 잘 선택하지 않던 과감한 개발 패러다임을 선택한 엔진이었기 떄문이다. .NET의 공개된 스펙을 멀티플랫폼으로 구현한 mono를 이용하여 손쉽게 멀티플랫폼 환경에 대응하면서도 CLR(Common Language Runtime)을 통해 다양한 개발언어의 장점을 취할 수 있게 했다. 스크립트 언어를 게임 구현에 사용하는 다른 게임엔진과 비슷한 개발 패러다임으로 볼 수 있지만, 이러한 엔진들에 비해 .NET의 MSIL(Microsoft Intermediate Language) 형태로 컴파일되어, 다른 스크립트 언어가 인터프리트 환경이나 JIT(Just-In-Time) 컴파일 환경에 비해 월등한 성능을 갖출 수 있었다. .NET 환경에서 선호도가 높은 C#의 언어 특성을 모두 누릴 수 있는 것도 장점이다.
유니티는 이런 장점들을 적극적으로 활용하여 단순히 멀티플랫폼 대응에만 그치지 않고 게임 개발 패러다임을 진일보시킨 엔진이다. 과거에 많이 사용되어 온 게임엔진들의 경우에 다소 고전적인 방법론을 기본으로 게임의 순차적인 흐름을 먼저 구현하고 OOP(Object Oriented Programming) 요소들을 첨가하는 경우가 많았다. 유니티의 패러다임은 최신의 비게임 플랫폼들의 그것과 유사하게 컴포넌트와 이벤트, 데이터 주도적인 방법들을 적극적으로 활용하는 완성도 높은 개발환경을 제공하고 있다. 제공되는 개발 환경을 통해 게임 구현뿐 아니라 유니티 자체의 개발 툴까지 쉽게 확장할 수 있도록 허용하는 강력함을 갖추고 있다. 게임엔진에서 흔히 보지 못했던 이런 패기(?) 넘치는 시도를 처음 접했을 때, 옮긴이는 지금의 주류 개발 패러다임의 시초가 되었던 Delphi를 처음 접했을 때의 충격을 다시 한 번 느꼈다.
사실 초기의 유니티의 모습은 기존 상용 게임엔진들에 비해 아티스트를 위한 툴의 기능이 다양하게 제공되지 못했던 터라 유니티의 강력한 확장성을 이용하는 수많은 유니티용 써드파티 아트 툴이 만들어지고 또한 사용되어 왔고, 이런 부분들을 유니티 자체에 추가하려는 행보가 계속되었다. 2D 개발을 위한 도구의 경우에도 마찬가지인데, 최근 유니티의 기본 기능으로 2D 게임을 위한 다수의 도구가 추가되었고 조만간 UI 도구도 통합될 예정에 있다. 이 책은 이러한 유니티의 수많은 특징 중에서도 새로이 통합된 2D 게임 도구를 활용하는 것에 초점을 맞추어 하나의 게임을 완성하도록 안내하는 지침서이다. 이 책을 통해 기존의 유니티 개발자들은 낯선 유니티의 2D 도구를 활용하는 방법을, 새로운 유니티 개발자들은 유니티의 강력함을 체험해보는 기회를 갖게 될 것이다.
이 책의 저자는 인디개발자 특유의 자유로운 사고방식과 유머러스한 화법으로 내용을 이끌어간다. 마치 인디게임 개발팀에 참여해서 함께 게임을 만드는 듯한 느낌이 들 수도 있다. 개발 일지를 읽는 느낌으로, 혹은 게임 개발 회의에 참여하는 느낌으로 이 책을 따라 멋진 2D 게임을 하나 완성해보자!