알라딘

헤더배너
상품평점 help

분류

이름:김홍중

최근작
2021년 5월 <C# 동시성 프로그래밍 2/e>

게임 프로그래밍 알고리즘

PC, 콘솔을 제외한 iOS, 안드로이드 등의 모바일 플랫폼에서만도 하루에 10여 개의 새로운 게임이 등장하는 요즘, 게임 개발은 그리 특별하게 느껴지는 일이 아닐지도 모른다. 하지만 하나의 게임을 만들려면 수많은 알고리즘과 기법이 필요한 게 사실이다. 3D 캐릭터를 단순히 화면에 표시하는 데만도 크게 모델링, 렌더링을 필두로 하는 다양한 알고리즘과 기법이 쓰인다. 사운드, 입력 처리 등 게임을 이루는 모든 분야가 마찬가지다. 따라서 수년 전만 해도 게임 개발은 상당히 전문적인 개발 분야로 여겨졌다. 하지만 요즘은 게임 개발에 필요한 대부분의 알고리즘과 기법을 알아서 처리해주는 훌륭한 게임 개발 툴이 등장한 덕분에 게임 내부에서 일어나는 일에 관해 잘 알지 못하더라도 비교적 간단하게 게임을 만들 수 있다. 개발 툴의 GUI를 사용해서 적당히 구성 요소를 배치하고 약간의 스크립트만 작성하면 게임이 만들어진다. 단순히 게임을 만들어내는 것만이 목적이라면, 적절한 게임 개발 툴을 선택하고 활용법을 익히는 쪽이 가장 빠르고 확실한 길이다. 목적이 그뿐이라면 이 책이 딱히 유용하지 않을 수 있다. 하지만 자신이 만들고 있는 게임이 '어떻게' 동작하는지 궁금하다면 이 책에서 큰 도움을 받을 것이다. USC의 비디오 게임 프로그래밍 과정 강사인 저자는 이 책의 '들어가며'에서 대학 수준의 게임 프로그래밍 강의에 쓸 수 있는 보조교재를 만들고 싶었다고 밝히고 있다. 그리고 자신의 의도를 충분히 살려서 2D, 3D 그래픽, 선형 대수학, 물리학, 사운드, 입력, 인공지능, 사용자 인터페이스, 네트워크 등 폭넓은 주제에 걸쳐 다양한 알고리즘과 기법을 소개한다. 물론 여기서 소개하는 알고리즘이나 기법 중에는 최신 게임에 쓰이지 않는 것도 있다. 하지만 적어도 처음에 느낀 궁금증을 해소해주거나 궁금증 해소에 관한 단서를 제공할 수 있는 튼튼한 '기초'라는 점만큼은 분명하다. 그리고 이 페이지를 읽고 있는 독자라면, 기초의 중요성은 부연하지 않아도 잘 알고 있으리라 믿는다.

유니티 2D 게임 개발

제9의 예술로 인정받은 만화에 이어 제10의 예술 자리를 놓고 논의가 일고 있는 게임은 예술이기 전에 이미 전 세계적으로 151조, 국내만 해도 14조가 넘는 시장을 거느리고 있는 거대 산업이다(2018년 기준). 시장의 규모만큼이나 다양한 수요를 바탕으로 매년 AAA 게임은 물론, 인디 게임도 끊임없이 성공 신화를 써 내려가고 있다. 자본, 인력의 규모와 상관없이 성공의 길이 열려 있다는 뜻이다. 이 책은 AAA 게임 개발자가 아닌 인디 게임 수준의 작은 게임을 개발하려 하는 초보 개발자를 대상으로 유니티와 C#으로 게임을 만드는 방법을 소개한다. 단순히 소개에 그치지 않고 실제로 예제를 통해 간단한 탑다운 방식의 2D RPG를 만드는 과정을 함께 보여준다. 책을 읽으면서 예제를 잘 따라 하다 보면 2D 게임 개발에 필요한 지식을 얻는 동시에 어느새 유니티에 익숙해져 있을 거다. 그 정도만 해도 이 책의 역할은 충분하다고 본다. 도구에 익숙해야 창의성을 발휘할 수 있다. 유니티라는 멋진 도구를 통해 창의성을 한껏 발휘할 기회를 손에 쥐기 바란다.

유니티 5.x와 함께하는 C# 첫걸음

한동안 모바일 게임 엔진의 절대 강자로 군림했던 유니티는 최근 막강한 성능을 앞세운 언리얼 등 경쟁자의 거센 공세로 조금씩 설 자리를 잃고 있다. 하지만 입지가 조금 줄었을 뿐 아직 굳건하게 강자의 자리를 지키고 있다. 특히 소규모 개발팀 또는 독립 개발자에게 유니티는 여전히 괜찮은 선택이다. 게임 엔진으로 유니티를 선택했다면 유니티의 사용법도 익히고, 스크립트 작성에 필요한 프로그래밍 언어도 배워야 하며, 게임에 필요한 리소스도 마련해야 한다. 프로그래밍 언어는 게임을 만들 때 필요한 수많은 지식 중 일부일 뿐이지만, 절대 소홀히 할 수 없는 중요한 부분이다. 이 책은 유니티로 게임을 만들 때 사용할 수 있는 C#, 자바스크립트, 부(Boo) 세 개의 프로그래밍 언어 중 가장 강력한 언어인 C#의 기초를 소개하는 책이다. 단순히 설명만 늘어놓지 않고 유니티 5.x를 사용해 간단한 게임을 만들어 보면서 C#의 개념을 하나하나 소개하는 방식으로 구성되어 있다. 이 책의 내용이 C#의 전부라고는 할 수 없지만, 유니티에서 C#으로 게임을 개발할 때 필요한 기본 개념은 부족함 없이 소개하고 있다. 게임을 개발하는 여정은 생각보다 길고 외롭다. C# 프로그래밍 언어는 길 위에 놓인 하나의 장애물일 뿐이다. 앞으로 극복해야 할 장애물이 더 많겠지만, 꾸준히 헤쳐나가다 보면 자신만의 종착점에 도착할 수 있으리라 믿는다. 그리고 그 종착점이 많은 사람을 행복하게 하는 게임이면 좋겠다. Bon voyage!

유니티3D 게임 스크립트

2009년 즈음 마주한 유니티3D의 첫인상은 솔직히 썩 좋지 않았다. 유니티가 원래 게임 엔진으로 만들어진 툴도 아니었고, 유니티로 개발했다고 광고하던 게임이 하나같이 조악했던 탓도 있었겠지만, 단순히 낮은 품질의 3D 게임을 빨리 찍어낼 수 있는 툴 정도라고 생각했기 때문이다. 하지만 섣부른 판단으로 한쪽 눈을 감고 있던 사이에 점점 게임 엔진의 기능을 갖추며 성능을 개선해온 유니티는 어느새 모바일 게임 개발에 가장 널리 쓰이는 개발 툴의 자리를 차지했다. 쉽게 배우고 빠르게 개발할 수 있으며 다양한 플랫폼을 지원한다는 장점과 더불어 전 세계의 개발자와 리소스를 공유할 수 있는 에셋 스토어 역시 빼놓을 수 없는 유니티만의 장점이다. 아직 다소 빈약한 2D 지원과 대규모 게임을 개발하기에는 부족한 기능 등 넘어야 할 산이 있긴 하지만, 유니티는 한동안 모바일 게임 개발 툴 왕좌의 자리를 내주지 않을 것이라고 생각한다. 이 책은 유니티3D로 게임을 개발하는 과정 중에서도 순수하게 프로그래밍의 영역에 해당하는 C# 스크립트 작성 방법을 소개한다. 책이 안내하는 대로 사용자의 입력 처리, GUI, 아이템, 인벤토리, 인공지능, 통계, 세이브, 소리, 설정 등의 다양한 기능을 스크립트로 만들고 또 테스트하다 보면 자신의 게임에 꼭 필요한 스크립트 작성 방법을 찾게 될 것이다. 스크립트 작성이 게임 개발의 전부는 아니므로 게임을 완성하려면 아직 가야 할 길이 많이 남아있겠지만, 언젠가 모바일 앱 마켓이라는 망망대해 어디선가 여러분을 만나게 되길 기대한다.

플러터 앱 개발 첫걸음

모바일 플랫폼의 발전과 함께 크로스 플랫폼 모바일 앱 개발 프레임워크의 수요는 꾸준히 증가해왔다. 실제로 폰갭, 센차, 코로나, 모노, 자마린, 어플로즈, 아쿠아, 타브리스, 앱센드 등 수많은 프레임워크가 시장에 선을 보였다. 생산성을 장점으로 내세워 한때 큰 유행처럼 번지기도 했지만, 모두 성능이라는 단 하나의 문제를 극복하지 못하고 네이티브 개발을 대체하기는커녕 하나둘씩 사라져갔다. 하지만 최근 리액트 네이티브가 큰 성공을 거두면서 다시 크로스 플랫폼 앱 개발이 큰 주목을 받고 있고, 때마침 구글도 플러터라는 개발 프레임워크를 내놓았다. 플러터를 사용하려면 다트라는 프로그래밍 언어를 새로 익혀야 한다는 약간의 부담이 따른다. 하지만 기기 자체의 네이티브 컨트롤을 사용하지 않고 독자적인 엔진을 통해 UI를 렌더링하는 등 구글이 고심해서 내놓은 혁신적인 기술이 들어 있는 플러터는 충분히 매력적인 개발 프레임워크다. 그리고 무엇보다도 플러터는 구글의 전폭적인 지원과 개발 커뮤니티의 활발한 참여를 통해 급격하게 성장하고 있다. 카메라, 가속도계 등 주변 기기 지원은 아직 부족한 면이 있고 서드파티 라이브러리도 부족한 편이지만, 급성장 중인 생태계라 금방 답을 찾을 수 있으리라 믿는다. 앞으로 크로스 플랫폼 앱 개발을 계획 중이라면 플러터가 하나의 선택지일 수 있다는 점을 잊지 말기 바란다. 그리고 플러터로 앱을 개발하는 방법과 개발에 필요한 기본 지식을 제공하는 이 책이 플러터 개발의 첫걸음을 내딛는 데 도움이 되길 바란다.

C# 동시성 프로그래밍 2/e

'동시성'이라는 용어만 들으면 고개를 갸웃할지도 모르겠지만 비동기 프로그래밍, 병렬 처리, 멀티스레딩이 모두 동시성의 일종이다. 이런 기술을 들어보거나 사용해 본 적이 있겠지만 대부분 사용하기 쉽지만은 않았을 것이다. 물론 개발자마다 차이는 있겠지만 자신의 경험을 바탕으로 동시성이 어렵다고 생각하는 개발자가 많고 실제로도 그렇다. 동시성의 다양한 개념을 제대로 이해하기도 쉽지 않고 실제 코드로 작성하기도 쉽지 않다. 하지만 이미 이런 동시성을 활용하고 있는 서비스와 애플리케이션은 셀 수 없이 많고, 동시성을 사용하지 않고 만들 수 있는 애플리케이션은 거의 없을 정도다. 동시성은 계속 피하거나 미룰 수 없는 주제다. 앞으로도 개발자로 살아가고 싶다면 한 번쯤은 마음을 다잡고 정면으로 맞부딪쳐야 한다. 이 책은 최신 닷넷 프레임워크와 C# 언어가 제공하는 동시성 기술과 동시성과 관련이 있는 다양한 기술을 폭넓게 소개하고 있다. 가장 큰 특징은 저자가 강조하듯이 스레드, 뮤텍스 같은 하위 레벨 개념에 관한 설명을 과감하게 생략하고, async/await, TPL 데이터 흐름, PLINQ 등 닷넷 프레임워크와 C# 언어가 제공하는 최상위 레벨의 개념을 설명한다는 점이다. 대부분 동시성을 다루는 책은 하위 레벨 개념을 설명하는 데 많은 지면을 할애하고 있지만, 이 책은 곧바로 실제 애플리케이션에 적용할 수 있는 상위 레벨의 개념만 잘 정리해서 간단하고 효율적인 예제와 함께 소개하고 있다. 물론 아무리 상위 레벨 개념만 소개한다 해도 책 한 권에 동시성에 관한 모든 내용을 자세하게 담을 수는 없다. 따라서 동시성에 관해 더 깊이 알고 싶다면 마이크로소프트 문서를 비롯한 많은 참고 자료를 찾아봐야 할 수밖에 없다. 하지만 그런 과정을 통해 동시성에 더 가까이 다가갈 수 있으리라 믿는다. 책은 얇지만, 끝까지 함께하는 여정은 절대 짧지 않을 수 있다. 부디 행운을 빈다.

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