Read in 2022’ 시리즈

[리뷰] 소문난 명강의 : 레트로의 유니티 게임 프로그래밍 에센스(개정판)

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

필자는 게임 프로그래밍에 관심이 많다. 나를 개발이라는 세계로 인도한 것이 게임이라는 사실 때문일까. 근래에 VR을 사용해 보면서 이 분야에 관심이 좀 더 생긴 것 같기도 하다. 이전에도 몇 권의 유니티 책을 본 적이 있었다. 다들 쉽고 재밌게 설명하지만 완독후엔 늘 막막함과 함께 약간의 아쉬움이 남았다.

처음 이 책을 받았을 때 놀랐던 사실은 이 책의 분량이 2권으로 구성된 1073 페이지에 육박한다는 사실이었다. 방대한 분량이라 목차를 살펴봤다. 흥미롭게도 수학과 네트워크에 대해서도 다루고 있었다. 대부분 관련 항목은 별도의 책으로 분리하는 등 입문책에는 잘 찾아볼 수 없었던 것이었다.



대상 독자

이 책은 유니티는 물론 프로그래밍에 대한 지식이 전혀 없는 입문자와 비전공자, 아티스트를 대상으로 한다고 책에서는 설명한다. 필자는 약간의(?) 전공 지식을 가진 상태로 책을 읽었으며 책의 구성은 매우 만족스러웠다. 구성과 관련된 내용은 아래에서 자세히 다루도록 하겠다.


책에서 구현하는 결과물

책을 읽으며 따라 만들어 본 게임의 결과물이다. 각 결과물을 WebGL로 배포해 보았다. 궁금하신 분들은 웹에서 직접 플레이해 볼 수 있다.

  • Chapter 3 : Dodge #

  • Chapter 5 : Uni Run (소리 주의) #

  • Chapter 6 : Zombie (소리 주의) #


느낀점

1부 : 유니티 준비하기

우선 이 책에서 가장 좋았던 부분은 원리 중심의 설명을 많이 한다는 점이다. 다른 책에서는 '이런 상황에서는 이 기능을 쓰면 된다'라고 설명하여 사용할 수 있는 상황이 한정적이라면 이 책에서는 상황이 아니라 원리에 초점을 맞춤으로써 문제가 발생하면 스스로 퍼즐을 맞춰나갈 수 있다.

필자는 특히 유니티의 원리를 설명하는 1부-3장에서 많은 영감을 얻었다. 지금까지는 유니티를 배우며 '코드가 동작한다'는 것에 감탄할 뿐이었지만 이제는 '이 코드가 이래서 동작하는구나'라는 것을 깨달을 수 있었다.

2부 : C# 프로그래밍

C#의 문법을 소개하는 이 파트에서는 정말 입문자에게 초점이 맞춰져 있음을 느낄 수 있었다. 혹여 독자중에 문법을 이해하기 어려운 부분을 발견하더라도 걱정마시라. 프로젝트 구현시 코드가 있는 부분은 저자가 코드를 자세하게 설명하기 때문에 큰 압박감을 가지지 않아도 될 것 같다.

3부 : 탄막 슈팅 게임 - 닷지

이 파트에서는 프로젝트를 구현한다. 난이도는 크게 어렵지 않은 수준으로 초반에 흥미를 돋구기에 적합한 프로젝트다. 이 파트를 통해 사용자에게 입력받는 방법, 동적으로 오브젝트를 생성하는 방법, UI를 구현하는 방법, 게임 메니저 통해 게임의 규칙을 구현하는 방법을 익힐 수 있다.

이 파트에서 인상적인 부분은 사용자에게 입력받는 부분을 전통적인 방식으로 구현한 뒤 입력 매니저를 통해서 구현하는 방식으로 개선하는 등 여러가지 방법을 소개하는 것이다.

4부 : 공간

개인적으로 책의 구성에 감탄했던 파트다. 이 파트에서는 벡터 수학을 다룬다. 게임을 하나 만들면서 흥미를 키운 다음 수학시간으로 넘어가다니! 사실 필자는 수포자라 수학의 수자만 들어도 식은땀을 흘린다. 이 파트 역시 수학이라는 글자는 공포였다.

다만 책에서는 완전 수학에 포커스가 맞춰진게 아니라 백터라는 개념이 무엇이고, 백터의 연산이 무엇을 의미하는지, 이해가 어려울 수 있는 부분은 예시를 통해서 이해를 도와준다. 게임에서 주로 사용되는 수학적인 부분을 다루다보니 오히려 흥미롭게 읽었다.

5부 : 2D 러너 게임 - 유니런

이 파트에서도 프로젝트를 구현한다. 이 파트는 3부, 4부에서 다뤘던 내용을 바탕으로, 2D에서 애니메이션을 구현하는 방법, 배경과 맵을 무한히 반복하는 방법, 소리를 출력하는 방법, 싱글톤 (프로그래밍 디자인) 패턴에 대해서 추가적으로 익힐 수 있다. 3부와 마찬가지로 난이도는 크게 높지 않은 편.

6부 : 탑다운 슈터 게임 - 좀비 서바이버

2권의 시작. 1권과 달리 2권에서 저자는 우리를 더 이상 입문자로 취급하지 않는듯 보인다. 전개도 상당히 빠르고 다소 다양한 주제와 문법을 다룬다. 하지만 그만큼 프로젝트의 품질이 상당히 높으면서도 친절한 설명은 여전하다. 다루는게 워낙 많아서 새로 배우는걸 나열할 필요가 있을까 싶다. 인상적인 것을 꼽으라면 네비게이션을 이용한 AI 구현과 포스트 프로세싱을 이용해 게임의 색감 및 분위기를 조절하는 것을 선택하겠다.

7부 : 네트워크 협동 게임 - 좀비 서바이버 멀티플레이어

필자는 네트워크 게임에 대해서 궁금하긴 했었지만 공부해 본 적이 한 번도 없다. 소켓 통신을 하겠지? 서버는 어떻게 구성할까? 중간에 연결이 끊어졌을 때 어떻게 처리할까? 연결이 불안정한 사용자의 움직임을 어떻게 처리할까? 이 파트에서 그러한 궁금증이 해결되길 기대했다.

이 파트에서는 게임 네트워크의 원리와 구조에 대해서 소개한다. 읽으면서 내가 가졌던 궁금증들도 어느정도 해소가 됐었고 내가 정말 단편적인 사고를 했었다는 것을 깨달을 수 있었다. 😅

이후에는 포톤을 활용해서 네트워크 작업을 진행하는데 대부분 유니티 게임들은 네트워크 통신에 포톤을 사용하는 건지 궁금해졌다. 포톤에서 대부분의 작업을 해주는 것 같아 편리해 보이지만 네트워크 통신을 깊이 이해하기에 어려움이 있는 것 같다.

이 글이 도움이 되었나요?
0 minutes ago
작성된 댓글이 없습니다. 첫 댓글을 달아보세요!
    댓글을 작성하려면 로그인이 필요합니다.