b

한빛미디어 / 게임 매니악스 퍼즐 게임 알고리즘 본문

life/book

한빛미디어 / 게임 매니악스 퍼즐 게임 알고리즘

dev.bistro 2014. 1. 25. 20:44

회사에서의 룰이나, 개인적으로 진행하고 있는 일과도 전혀 관게 없는 것이, '게임'이다 하지만. 하루에 1-2시간. 일주일에 10시간은 꼬박꼬박 게임을 즐기고 있다. 국민학생때, 즐기던 갤러그 때문에 프로그래밍을 시작한것은 어이없기도 한 사실이다.  실제로 '매우 조잡'한 알카로이드를 GWbasic으로 만든 기억도 아직 남아있다. 이 정도면 게임에 대해 좀 더 알아주는게 예의가 아니겠는가?

지난번에 읽은 책  만들면서 배우는 AndEngine 게임 프로그래밍: 하루에 하나씩 완성하는 안드로이드 게임 프로그래밍 ( http://www.hanbit.co.kr/book/look.html?isbn=978-89-6848-058-4 ) 처럼 이 책 역시 그러한 개인적 관심에 의해서 읽게 되었다. 


(다른 책은 읽어 보지 못했다) 이 책은 주제에 따라 여러책으로 출간되었다.  내가 읽어본 책은 제목처럼 '퍼즐 게임'에서 사용하는 상황과 알고리즘에 대해서 설명해주고 있다. 

게임을 만드는 방법을 소개해주는 책이 아니다. 게임에서 게임이 필요한 알고리즘에 대해서 어떻게 풀어나가지는지에 집중하고 있다.  '상황의 소개' -> '처리할 방법의 소개' -> '알고리즘의 설명' -> '코드의 구현' 으로 각 사례를 보여준다.

목차 : http://www.hanbit.co.kr/book/look.html?isbn=978-89-6848-070-6#binfo3 에서 보는것처럼, 시작은 아주 심플한 캐릭터의 이동으로 시작한다. 그 이후 이 캐릭터가 만날 수 있는 상황(막다른길, 아래로 떨어지기, 다른 장애물에 부딪쳤을때 )를 점진적으로 해결해 나가는 방법을 보여준다. 

이렇게 1장이 끝나면, 2장에서는 물건의 낙하 3장에서는 연결처럼 계속 퍼즐 게임에서 처리해야할 상황, 처리하는 방법, 진화를 보여주고 있다.  쉽게 이해 할 수 있게 말이다. 예제코드 역시 어렵지 않아서 C++를 사용한지 7년이 넘은 나 조차가 무리없이 코드를 이해할 수 있었다.


이러한 상황을 해결해 나가는 이 순서는 개인적으로도 많은 도움이 되었다. 생각치도 못한 이슈를 제안해주기도 했고, 생각치도 못한 방법으로 해결을 해나가기도 했다. 내가 얼마나 잘하는지도 중요하지만, 얼마나 더 좋은 방법이 있는가, 남들은 어떻게 하는가를 아는것도 중요한데, 마치 한명의 개발자가 일해 나가는 방법을 뒤에서 지켜보는 것 같아서 만족스러웠다. 




단, 아쉬운점이 있다면 실제로 실무에서도 해당 알고리즘을 그대로 이용하는가? 에 대해선 조금 아쉬움이 남는다. 
예를 들면 96페이지에서 나오는 '테트리스의 낙하지점을 미리 표시해주는'기능의 경우, 떨어질 좌표를 계산해서 그곳에 회색으로 표시해준다. 라고 설명을 해준다. '기본적인 알고리즘을 이해'하는데에는 매우 훌륭하지만, 실제로 예제에서 보여주는 코드는 효율적이지는 않다. 실무에서도 이렇게 쓸거 같지는 않다. 책의 각 말미에 '현업에서는 이 알고리즘을 실제로 이렇게 쓴다' 라는 한장정도의 텍스트가 추가로 있었으면 매우 좋지 않을까 생각되었다.

그럼에도 불구하고
,  게임 알고리즘에 대해 환상?을 가지고 있던 내게 많은 도움이 되었다. 이 책에 당장 나에겐 조금의 도움도 되지 않는다. 하지만 이 책에서 상황에 맞는 다양한 알고리즘을 적용하는 방법은 내 업무에서도 많은 도움이 될것임은 확신한다. 

이후 시리즈 중 하나인 슈팅 게임 알고리즘을 한 번 더 보고 싶다. 물체의 동시처리, 충돌점의 처리등. 평소에 궁금한 것들을 해결해 주는 방법을 나에게 알려줄 것 같아서이다.






Comments