알라딘

검색
헤더배너
상품평점 help

분류

이름:옥찬호

최근작
2019년 7월 <C++ 최적화>

2D 게임 프로그래밍

바야흐로 게임 엔진의 시대다. 유니티(Unity) 엔진을 선두로 언리얼(Unreal) 엔진, 코코스 2D(Cocos 2D)부터 시작해 코드 작성이 필요하지 않은 게임샐러드(GameSalad)까지, 세상에는 수많은 게임 엔진이 있다. 불과 일이십 년 전 네이티브(Native)로 게임을 만들던 시절에 비하면 눈부신 발전을 했다고 볼 수 있다. 그 당시에 코드를 작성하지 않고 게임을 만들 수 있다고 생각이나 했을까? 물론 게임 엔진은 편리하고, 빠른 게임 개발을 할 수 있게 도와준다. 한 번의 클릭으로 육면체나 구를 만들 수 있으며, 물리나 사운드를 추가할 수도 있다. 하지만 게임 엔진을 사용해 게임을 만드는 것이 정말 좋기만 한 것일까? 게임 엔진을 통해 캐릭터에 대한 애니메이션 동작을 추가하는 방법은 알지만, 내부적으로 애니메이션 동작이 어떻게 실행되는지 아는 사람은 많지 않다. 물론 애니메이션 동작의 실행 원리를 반드시 알 필요는 없다. 원리를 모른다고 해서 게임을 만들지 못하는 것은 아니기 때문이다. 하지만 "아는 만큼 보인다."라는 말이 있다. 애니메이션 동작의 실행 원리를 아는 사람이 게임 엔진을 더 빨리 이해하며, 문제가 생겼을 경우 더 빨리 해결할 수 있다. 그리고 다른 게임 엔진을 사용해야 되는 경우 더 빨리 적응할 수 있다. 이 책은 여러분이 '아는 만큼 볼 수' 있게 2D 게임 제작에 필요한 부분을 C++와 DirectX를 통해 배운다. 또한 간단하게나마 게임 엔진을 제작하며 각 부분을 만들고 통합하는 방법도 배운다. 초반부에는 C++를 빠르게 복습하며, 기본적인 윈도우 프로그래밍과 DirectX에 대해 다룬다. 그 뒤에는 게임 엔진의 뼈대를 구축하는 과정에서 스프라이트 및 애니메이션, 게임 물리, 사운드, 텍스트 등을 배우게 된다. 후반부에는 타일 기반의 게임 제작 방법을 배우며, 프로젝트 관리 방법과 함께 그동안에 제작한 각 부분을 합쳐 게임을 완성한다. 마지막으로 네트워크 프로그래밍을 간략하게 배우며 책을 마친다. 이 책은 기본적으로 프로그래밍에 대한 지식을 요구한다. 물론 1장에서 C++를 빠르게 복습하는 시간을 갖기는 하지만, C++ 프로그래밍에 대한 기본적인 지식이 없다면 책을 읽는 데 어려움을 겪을 수 있다. 따라서 C++ 프로그래밍을 먼저 공부한 뒤, 또는 C++프로그래밍을 공부하면서 이 책을 보기 바란다. 나는 언제나 기본에 충실해야 된다고 생각한다. 혹시 여러분이 게임 개발자를 꿈꾸는 학생이라면 이 책을 반드시 읽기를 바란다. 이 책을 통해 자신의 기본기를 다시 다져보는 시간이 됐으면 좋겠다. 마지막으로, 게임 개발자 인터뷰에서 송재경 XL게임스 대표가 말했던 이야기 중 일부를 인용한다. "게임을 개발할 때 가장 중요하게 여기는 가치는 무엇입니까? 최근 개발되는 게임 중 적지 않은 게임들이 기본에 충실하기보다는 독특함만을 추구하는 것 같습니다. 그런데 독특함은 의외로 기본에 충실할 때 만들어낼 수 있습니다. '리니지'를 개발할 때와 지금의 상황은 많이 달라졌지만, 게임의 변하지 않는 핵심은 재미를 선사해야 한다는 것입니다. 재미있는 게임은 당연히 게이머들에게 좋은 반응을 얻습니다. 따라서 기본에 충실히 하는 것이야말로 아무리 강조해도 지나치지 않고, 저 역시 게임을 개발할 때 가장 중요하게 여기고 있습니다."

유니티 Shader와 Effect 제작

얼마 전 있었던 게임 개발자 컨퍼런스(GDC, Game Developers Conference) 2014에서 유니티5가 최초로 공개됐다. 유니티5에서 선보이는 새로운 기능 중에서 가장 눈에 띄는 건 물리 기반 셰이딩(shading)이라고 할 수 있다. 사실 게임을 플레이하는 사용자들이 재미를 느끼는 요인 중 하나는 AAA급의 실물 같은 그래픽이다. 이런 점에 비춰볼 때, 게임을 만들 때 그래픽 요소는 가장 중요한 항목 중 하나라고 할 수 있다. 시중에 나와 있는 유니티 게임 개발 서적들을 보면, 간단한 게임 예제가 많이 들어있다. 유니티를 처음 다루는 사람들은 책에 포함된 게임들을 만들어보면서 유니티의 사용법을 익히고 게임을 만드는 방법을 배울 수 있기 때문에 이런 책들은 초보자들에게 매우 좋은 책이라고 할 수 있다. 사실 유니티에서 셰이더를 만들지 않더라도 게임을 만들 수 있다. 그렇다면 셰이더를 배우는 이유는 무엇일까? 예를 들어, 게임에서 물이 흔들리는 장면을 만들어야 된다고 상상해보자. 실제로 물이 흔들리는 애니메이션을 직접 만들면, 만드는 데 시간도 오래 걸리고 애니메이션을 보여주는 데 들어가는 리소스가 많다. 이때 만약 셰이더에 관한 지식이 있으면 움직이지 않는 물 텍스처를 쓰면서 셰이더를 이용해 흔들리는 것 같은 이펙트를 줄 수 있다. 이처럼 적은 리소스로 동일한 결과를 보여줄 수도 있다. 이 책은 유니티를 처음 다루는 사용자를 위한 책은 아니다. 이 책의 내용을 살펴보기 위해서는 기본적인 유니티 사용법을 알고 있어야 한다. 그렇지만 아주 깊은 내용까지 알아야 할 필요는 없기에, 대략적으로 게임 오브젝트, 머티리얼, 셰이더 등이 무엇인지만 알고 있으며 간단한 스크립트를 작성할 수 있는 지식이 있다면 이 책을 보는 데 큰 무리가 없다. 이 책은 본격적으로 유니티의 셰이더와 이펙트를 다루는 책이다. 유니티에서 처음 셰이더를 사용하는 개발자를 위해 기본적인 라이팅을 시작으로 고품질의 3D 모바일 게임에서 볼 수 있는 멋진 화면 효과, 노멀 매핑, 이미지 기반의 라이팅, 그리고 셰이더 내부에서 모델의 애니메이션을 동작하게 만드는 방법을 다루는 예제도 볼 수 있다. 시중에 유니티 셰이더를 다루는 책이 없기에, 이 책이 처음 셰이더를 사용하려는 독자에게 매우 유용할 것이라고 확신한다.

가나다별 l l l l l l l l l l l l l l 기타
국내문학상수상자
국내어린이문학상수상자
해외문학상수상자
해외어린이문학상수상자