요즘은 게임을 만들려면 게임엔진을 활용하는 것이 일반적이다. 그중에서도 양대산맥은 유니티와 언리얼이다. 특히 유니티는 유연한 라이선스 모델과 풍부한 리소스 덕분에 캐주얼 게임이나 인디게임 등에서 많이 채택하여 사용되고 있다.  하지만 유니티가 워낙 많은 기능을 제공하다 보니 초반에 유니티를 배워볼까 하는 사람들에게는 어떤 책을 선택할까도 또 하나의 고민거리가 되곤 한다. 지인을 통해 추천받았던 유니티 도서들 중 하나가 Retr0님의 유니티 에센스 책이었는데, 이번에 개정판이 나와서 한번 살펴보면서 그동안의 지식을 업데이트해보았다. 참고로 나는 게임 개발자는 아니다.

전과수준으로 두꺼운 유니티.. 에센스면 정수만 뽑은건데.. 

첫 느낌...두껍다.

1070쪽의 두꺼운 분량이다. 두께가 주는 첫인상을 무시할 수는 없다. "아... 이 정도를 봐야 유니티의 개념을 익힐 수 있단 말이지"하는 생각이 절로 든다. 다행히 500쪽 정도로 2권이 분철되어 있어서 그래도 가볍게 들고 다니면서 볼 수 있었다. 분철된 도서는 처음이었는데, 사용경험이 생각보다 괜찮았다. 앞으로도 두꺼운 책은 분철된 형태로 구매하게 될 것 같다. 회사 다니면서 이 책의 내용을 전부 해보면서 읽었는데 대략 2주 정도 소요되었다.

 

4가지 게임 만들기

이 책의 흐름은 4개의 게임을 만들어보면서 유니티를 익히는 것이다.  4개의 게임을 잘 선택했다고 본다. 첫 번째로 만드는 <닷지>를 통해 유니티 인터페이스와 기본적인 에셋을 추가하고 스크립트를 적용하면서 MonoBehaviour,에 대한 개념을 익힌다. Unity의 좌표 시스템을 통해  캐릭터를 움직이고, Collider를 적용하면서 캐릭터의 충돌 감지 개념을 익힌다. 이 모든 것을 컴포넌트 기반으로 쌓아 올려서 게임을 만들 수 있구나 하는 생각을 하면서 게임을 따라 만들어 보았다.

두 번째로 만드는 게임은 <유니런>이라는 2차원 플랫폼 게임이다. 닷지를 통해 기본적인 내용을 익힌 상태에서 애니메이션 클립과 유한 상태 머신을 이용하는 방법을 배울 수 있는 좋은 예제였다. 여기까지가 1권의 내용이다.

2권에서는 좀비 서바이버라는 탑다운 슈팅 게임(마치 플레이어를 내려보는 관점에서 슈팅 게임)을 만들고 이를 네트워크 게임 플레이가 가능하도록 확장하는 내용으로 이루어져 있다.  유니티가 제공하는 인공지능 컴포넌트를 이용하여 좀비가 돌아다니면서 플레이어를 쫓아다니는 기능을 만든다거나, C# 인터페이스를 통해 코드의 재사용성을 높이기 위한 방법, 3D 모델에 레이어 개념을 적용하여 효과적인 애니메이션 효과를 얻는 방법, 포톤 엔진을 이용하여 다중 플레이어 게임을 만드는 방법(로비 기반)까지 설명하고 있다. 

예제를 통해 유니티 기초부터 활용까지 훑어볼 수 있게 설명했다는 점에서 저자가 고민을 많이 했다고 느껴졌다. 기능을 펼쳐놓고 이것저것의 기능을 설명하는 것이 아니라 백지상태에서 조금씩 기능을 추가로 사용하면서 익혔는데, 그 과정에서 4개의 게임이 만들어지도록 함으로써 흥미가 떨어지지 않고 끝까지 편하게 읽을 수 있었다.

 

친절한 설명

이 책의 독자가 누구일까? 나는 프로그래밍이 완전히 익숙하지 않은 유니티 게임 개발자가 되고 싶은 사람들을 위한 첫 책을 찾는 사람이라 생각한다. 책이 두꺼운 이유는 저자가 너무너무 상세하게 각 개발 과정을 설명하고 있다. 예를 들어 코드 설명도 초기 구조 설명 -> 각 부분별로 기능을 추가하면서 수정되는 내용 설명 -> 최종 완성된 전체 코드를 설명한다. 즉 깃헙으로 제공되는 기본 코드 골격에 이런 기능을 추가할 것이야 하면서 설명하고, 각 기능을 붙이면서 코드 한줄한줄 의도와 동작 방식을 설명한다. 그리고 그렇게 부분 부분 수정한 다음 완성된 전체 코드는 이런 모습이야 라고 보여줌으로써 초보자들의 실수를 막아준다. 예제대로 하다 보면 실수로(?) 뭔가를 빼먹었을 경우 여러 단계에서 쉽게 확인하여 수정할 수 있었다.

유니티를 사용하여 게임을 만드는 것 이외에도 C#의 기본적인 언어 특성을 설명하는데 꽤 많은 공을 들인 책이다. 하지만 언어 자체를 집중적으로 다루었다기보다는 게임 제작에 필요한 수준으로 설명하고 있다. 어느 정도 개발경험이 있는 독자라면 이런 부분은 다른 프로그래밍 서적과 유사하기 때문에 쉽게 진도를 나갈 수 있다. 예컨대 변수, 함수, 메서드, 제어문, 배열, 상속, 인터페이스, 풀링, 싱글톤, 람다식 등을 소개한 부분은 금방 넘길 수 있을 것이다. 초심자의 경우 개념을 익히는 수준에서 잘 설명되어 있다.

나의 경우 1권을 통해 유니티 개념을 살펴보고 2개의 예제 게임을 직접 만들어 보는데 3일,  2권을 통해 네트워킹까지 해보는데 4일 정도 소요되었다. 주로 주말에 집중해서 읽고 실제로 해보면 금방 저자가 전달하고자 하는 의도를 이해할 수 있었다.

 

나의 실수

책 읽으면서 한 가지 실수한 것이 있는데, 소스코드가 깃헙으로 공유되고 있다는 사실을 알고 있었다. 그런데 개정판 리포지토리가 이전 버전과 다른 것을 몰랐다. 저자분의 리포지토리를 구글링을 통해  방문했을 때 이전 버전이 맨 처음 노출되어서 이를 클론 하여 실습을 진행하였다. 그랬더니 가끔씩 책 내용에는 Asset 폴더에 있다는데 아무리 찾아봐도 없는 경우가 발생했다. 예컨대 Zombie 스크립트도 없어서 직접 작성하였다. 그 과정에서 ZombieData라는 객체를 사용하는 코드가 있는데 (750쪽) 이와 관련된 코드가 깃헙에 제공되는 코드가 없어서 결국 책 색인 부분에서 찾아서 774쪽에 나온 ZombieData 스크립트의 완성 버전을 입력하여 원하는 기능을 완성하였다.  오타를 발견한 줄 알고 출판사에 알려줘야지 하고 메모해 두었는데, 개정판 리포지토리가 따로 있는 것을 알고 방문했더니 떡하니 있는 게 아닌가.. 

저자분이 이전판 리포지토리에서 개정판 리포지토리를 안내하도록 README.md 파일을 수정해주면 나와 같은 실수를 겪는 독자가 없을 것이다.

 

 

요약

이 책을 한번 읽었다고 해서 자신이 원하는 게임을 쓱쓱 만들 수는 없을 것이다. 하지만 기본 개념들을 익히고, 자신이 원하는 게임을 만들고자 할 때 어떤 부분을 좀 더 봐야 하겠구나라는 방향타를 얻기에는 정말 좋은 책인 것 같다.

 

이 책을 다음 세 문장으로 소개하고 싶다.

  • 유니티에 대한 친절한 설명. 입문자용으로 매우 적합. 너무너무 친절한(기존 개발자에게는 지루할 정도의) 설명
  • c#이나 다른 언어에 익숙하다면 코드 부분은 정말 손쉽게 넘어간다.
  • 게임을 만들면서 개념을 익힐 수 있도록 잘 설계된 책.

 

 

 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

반응형

한빛미디어 박태웅의장이 적은 책인데, 생각해볼 화두를 많이 던진다. 특히 GDP로 대변되는 성장 지표가 선진국 사회에 진입한 대한민국의 향후 지표로도 유효한가에 대한 질문, 선진국은 정의를 하는 국가여야 한다는 주장 등은 곱씹어 볼만한 내용들이다. 2008년 나도 엔터프라이즈 2.0이라는 제목으로 디지털 타임즈에 기고했었는데(물론 데스크에서는 오히려 다른 내용을 주로 삼아 흔적만 마지막 문단에 남았었는데..), '무엇'과 '왜', 그 다음 '어떻게'의 순으로 주제를 접근해야 한다고 글을 적었는데, 박태웅 의장이랑 비슷한 생각이어서 더 공감이 되었다.

이 책에서 마지막 인류 역사의 발전에서 계몽주의가 미친 영향을 설명한 부분이 있는데, 순환적 세계관이 수평의 발전적 세계관으로 바뀐 부분은 수운 선생의 말씀이 연관되어 떠올랐다. 

 

다음은 내가 읽으면서  줄쳤던 부분의 일부이다.

 

  • 미친속도로 선진국을 베낀 최고의 후발추격국은 수십년간 '어떻게'를 외쳐온 끝에 '왜'와 '무엇'을 묻는 법을 잃어버렸다. 학교에선 여전히 표준화, 규격화, 양산의 주입식 암기 교육으로 산업사회를 대비하는데, 세상은 이른바 4차산업 혁명기로 접어들고 있는 중이다.
  • 선진국이 된다는 것은 '정의'를 내린다는 것이다. 해답보다 질문이 더 중요하다는 것을 깨달을 때 우리는 선진국이 될 수 있다.
  • 아인슈타인은 이렇게 말했다. '나에게 세상을 구할 수 있는 단 한시간이 주어진다면 55분은 문제를 정의하는 것에 사용하고, 나머지 5분은 그 문제를 푸는 데 쓸 것이다."
  • (정부가) 숫자로된 자료들을 구조화된 형태로, 즉 분석가능한 데이터로 공개해야지만 수많은 전문가들이 데이터를 다각도로 분석하고, 통찰이 빛나는 논문을 생산할 수 있고, 다양한 개선 방안들도 내놓을 수 있다.
  • 조직 전반의 데이터, 기술, 장비 뿐 아니라 프로세스와 관행까지 죄다 디지털로 바꿔야 한다. -> 디지털 전환. CIO, CDO가 풀어야 한다.
  • 무턱대고 '어떻게 할까'를 고민하기 전에 '무엇'과 '왜'를 물어야 한다.
  • 한 사회의 골격은 그 사회의 인센티브 시스템, 즉 상벌체계에 따라 결정된다.
  • 예전 조직이 군대처럼 엄격한 계층 구조로 이뤄졌다면, 현대의 조직은 작은 팀이 높은 자유도를 가지고 활발하게 협업을 하는 쪽을 지향한다. 기술의 발전이 너무 빨라 앞날을 정확히 예측하는게 어려워질수록 조직의 자유도가 중요해진ㄷ. 자유로워진 조직원의 수만큼 미래를 더듬어 찾을 촉수가 늘어나기 때문이다.
  • 말과 행동이 다를 때는 언제나 행동 쪽이 진실을 가리킨다. 물은 땅이 패인 모양대로 흐른다. 물을 붙잡고 설득하고 교화를 하고  친하게 지내자고 한들 물이 산꼭대기로 흐를리 없다. 물이 오게 하려면 원하는 곳으로 물길을 파면 된다. 
  • '우연한 만남과 임의적인 협업'
  • 경로의존성이란 시간이 흐르고 상황이 바뀌어 이제는 더이상 적절하지 않게 된 과거의 제도, 법률, 관습, 문화가 지속적으로 살아남아 영향을 미치는 것을 말한다. 경로의존은 내지 않아도 될 엄청난 비용을 내게 만든다. 이게 무서운 점은 우리가 수시로 확인하지 않으면 무심결에 저지르게 된다는 것이다. 
  • 정치는 한사회의 자원을 어떻게 배분할지를 결정하는 일이다. 그러므로 정치가의 일은 자원을 어디에 어떻게 쓸지에 관한 공론을 이끌어내는 것이다.
  • AI transformation과 Digital Transformation은 함께 진행되어야 한다. 
  • 세상의 문제의 대부분은 정의되지 않은채로 던져진다. 문제를 판별하고 정의해내는 능력, 혼자서 해결책을 찾는 능력을 길러주는게 참된 교육이다.
  • 인류의 역사가 본래부터 발전했던 것은 아니다. 계몽주의는 둥글게 순환하던 시간을 과거에서 미래로 일직선으로 곧게 펼쳤다.이전보다 더 나아졌다고 말할 수 있으려면 판단기준이 있어야 하고, 모든사람들이 동의하려면 그 기준은 객관적이고 보편타당해야 한다. 계몽주의는 인간의 이성을 근거로 삼았다. 모든 인간은 합리적이고 명확한 이성을 가지고 있다. 신이 처음으로 권좌에서 내려왔다.

 

 

반응형

+ Recent posts