게임 매니악스 퍼즐 게임 알고리즘

작가정보
저자 마츠우라 켄이치로는 동경대 공학계 연구과 전자공학전공 석사과정 수료 후, 연구소 근무를 거쳐 현재는 취미와 생업을 겸하여 프리랜서 프로그래머, 작가, 강사로 활동 중이다. 관심분야와 작업범위는 프로그래밍을 중심으로 컴퓨터 전반에 걸쳐 있으나 가장 흥미를 느끼는 분야는 프로그래밍 언어 만들기와 게임 만들기다.
저자 츠카사 유키는 동경대 이학계 연구과 정보과학전공 석사과정 수료. 학부생 때부터 작가와 프로그래머 일을 계속 하고 있으며 집필, 번역 이외에 소프트웨어 수주/설계/개발도 하고 있다.
번역 김병국
역자 김병국은 강원대학교 컴퓨터공학과를 졸업하고 (주)팬택 등을 거치며 약 12년간 전자통신 분야에서 PDA, 스마트폰 등 모바일 단말기 개발을 담당하였다. 현재는 다양한 개발 경험을 토대로 반도체 메모리 개발 회사에서 테크니컬 마케팅 업무를 담당하고 있다.
목차
- CHAPTER 0 서장
__0.1 퍼즐 게임의 기본 구성
__0.2 퍼즐 게임을 만들려면
__0.3 예제 프로그램 소개
_____0.3.1 예제 프로그램의 실행 방법
_____0.3.2 예제 프로그램 빌드 방법
__0.4 정리
CHAPTER 1 움직이기
__1.1 미로 걷기
_____1.1.1 셀 관리
_____1.1.2 캐릭터 이동시키기
_____1.1.3 클래스 구성
__1.2 물체 밀기
__1.3 미끄러지는 물체 밀기
__1.4 중력에 의해 떨어지는 물체 밀기
_____1.4.1 물체를 세밀하게 움직이기
__1.5 자율적으로 움직이는 캐릭터
_____1.5.1 보행 캐릭터
_____1.5.2 굴착 캐릭터
__1.6 뒤따라오는 커서
_____1.6.1 볼을 바꿔 넣기
__1.7 정리
CHAPTER 2 떨어뜨리기
__2.1 블록 떨어뜨리기
_____2.1.1 낙하속도 변화시키기
_____2.1.2 블록의 접촉판정
_____2.1.3 셀 좌표의 갱신
__2.2 블록을 좌우로 이동하기
__2.3 블록 회전시키기
__2.4 블록 한 단을 채워서 없애기
__2.5 다음 블록 표시하기
__2.6 낙하 예상위치 표시하기
__2.7 보석 떨어뜨리기
__2.8 보석의 순서 바꾸기
__2.9 가로, 세로, 대각선으로 연결하기
_____2.9.1 보석을 연속해서 없애기
_____2.10 볼 떨어뜨리기
_____2.11 장애물을 피해 볼을 회전시키기
_____2.11.1 아래에 장애물이 있는 경우의 처리
__2.12 착지한 볼을 2개로 분리하기
__2.13 볼을 연속해서 없애기
__2.14 상대방에게 공격 볼 떨어뜨리기
_____2.14.1 공격 볼의 수
_____2.14.2 공격 볼 떨어뜨리기
__2.15 한 번에 없어지지 않는 볼
__2.16 3차원 블록 떨어뜨리기
_____2.16.1 블록 이동시키기
__2.17 3차원 블록 회전시키기
__2.18 3차원 블록 한 단을 채워서 없애기
__2.19 정리
CHAPTER 3 연결하기
__3.1 선로 연결하기
__3.2 선로를 따라 진행하는 캐릭터
_____3.2.1 선로 위를 부드럽게 움직이기
__3.3 캐릭터의 진로를 예측하여 표시하기
__3.4 파이프 연결하기
_____3.4.1 파이프 배치하기
_____3.4.2 액체의 진로를 예상하기
__3.5 결합하여 형태 만들기
_____3.5.1 물체를 결합하기
_____3.5.2 물체의 이동과 분리
__3.6 선으로 둘러싸기
_____3.6.1 새로운 선 그리기
__3.7 둘러싼 영역을 칠하기
__3.8 둘러싼 영역을 피해 움직이는 적
__3.9 한 붓 그리기로 아이템 회수하기
_____3.9.1 스테이지 작성의 핵심
_____3.10 단어 만들기
_____3.10.1 단어가 만들어졌는지의 판정
__3.11 정리
CHAPTER 4 블록
__4.1 블록을 사각형으로 만들어 없애기
_____4.1.1 사각형의 형태로 채워졌는지 확인하기
__4.2 블록을 변화시키기
__4.3 블록을 부딪쳐 깨뜨리기
_____4.3.1 충격을 퍼뜨리기
__4.4 스테이지 회전시키기
__4.5 먹이 블록 없애기
__4.6 블록으로 둘러싸 없애기
__4.7 연결된 블록 없애기
__4.8 블록을 끌어당겨 발사하기
__4.9 블록을 밀어 떨어뜨려서 모으기
__4.10 떨어지는 블록을 받아서 쌓기
__4.11 바닥에 표시하여 블록 없애기
__4.12 정리
CHAPTER 5 특수 공격
__5.1 궤도를 따라 나아가는 볼
_____5.1.1 궤도를 표현하기
_____5.1.2 볼의 위치 확인하기
__5.2 새로운 볼을 궤도상에 추가하기
__5.3 볼을 임의의 방향으로 발사하기
__5.4 볼을 궤도에 쏘아올리기
_____5.4.1 추가위치를 결정하기
__5.5 궤도상에 이어진 볼 없애기
_____5.5.1 볼을 서서히 없애기
__5.6 매달린 볼
_____5.6.1 볼의 좌표
__5.7 발사한 볼을 튕기기 5.8 발사한 볼을 매달기
__5.9 매달린 같은 종류의 볼 없애기
__5.10 볼의 궤도를 예측하여 표시하기
__5.11 볼을 획득하여 모으기
_____5.11.1 볼을 획득하기
_____5.11.2 볼을 되돌리기
__5.12 볼을 바꿔 넣기
_____5.13 볼을 뱀처럼 움직이기
_____5.14 스프링으로 볼 발사하기
_____5.15 구르는 볼
_____5.16 정리
CHAPTER 6 기타
__6.1 아이템의 위치를 기억하기
__6.2 지도를 통해 아이템 찾기
__6.3 물체를 지정된 장소로 운반하기
__6.4 발판을 만들어 나아가기
__6.5 주사위를 이어서 없애기
__6.6 건물 짓기
__6.7 정리
부록
Appendix A 데모 프로그램 일람
Appendix B 인용 게임 일람
책 속으로
지은이 서문
이 책은 퍼즐 게임의 구조를 해설한 책이다. 물체를 운반하는 게임이나 낙하물체 퍼즐 게임 등 다양한 액션 퍼즐 게임도 다루고 있어 게임 프로그래밍 입문서로서도 사용할 수 있다. 그러나 일반적인 입문서와는 성격이 조금 다르며 다음 경우에 이 책을 추천한다.
● 퍼즐 게임이 어떤 구조로 움직이는지 알고, 게임을 조금 더 즐겁게 즐기고 싶다.
● 퍼즐 게임을 직접 만들어 보고 싶다.
● 과제로 퍼즐 게임을 만들어야 하는데 어디서부터 시작해야 할지 잘 모르겠다.
● 블록이나 볼을 낙하시키거나 쌓고, 지우는 등 다양한 움직임의 구현 방법을 알고 싶다.
● 퍼즐 게임의 기술 카탈로그를 찾고 있다.
● 퍼즐 게임에 대해 열변을 토하기 위한 토대가 될 책이 필요하다.
● 오래 전에 만들며 놀았던 퍼즐 게임을 생각하면서 추억에 잠기고 싶다.
● 어쨌든 퍼즐 게임이 좋다.
이 책은 일반적인 입문서와 다르기 때문에 어디서부터든 읽어도 좋으며, 관심 있는 부분만 골라서 읽어도 괜찮다. 그림을 중심으로 설명하고 있으므로 우선은 그림만이라도 만화를 읽는 편안한 기분으로 읽어 주기 바란다. 또한 각 기법을 간단히 정리한 프로그램도 많이 담고 있기 때문에 퍼즐 게임 제작에도 도움이 될 것이다.
게임 플레이어에게, 또 게임 디자이너에게도 이 책이 퍼즐 게임의 세계를 더욱더 깊게 즐기기 위한 가이드북이 된다면 기쁘겠다.
지은이_ 마츠우라 켄이치로 / 츠카사 유키
옮긴이 서문
이 책에 관심이 있는 사람이라면 누구나 적어도 한번쯤 “내 손으로 게임을 만들어보고 싶다”는 생각을 가져 보았을 것이다. 특히나 첫 도전이라면 슈팅 게임, 액션 게임, 시뮬레이션 게임보다는 조금 덜 복잡한 퍼즐 게임에 손이 갈 것이다. 그렇다면 이 책을 고른 당신은 매우 탁월한 선택을 한 것이다.
이 책에서는 지금까지 대중에 소개되었던 대부분의 퍼즐 게임 구현을 위한 알고리즘을 그림과 함께 쉽게 설명하고 있다. 따라서 독자는 퍼즐 게임에 사용되는 다양한 알고리즘에 대해 충분히 이해할 수 있을 것이다.
이 책을 통해 퍼즐 게임에 적용되는 다양한 알고리즘을 이해하고, 이 알고리즘을 활용해 자신만의 아기자기한 퍼즐 게임을 만들어 볼 수 있다. 또 다양한 알고리즘을 조합하여 새로운 종류의 퍼즐 게임을 만들어 보는 것도 재미있을 것이다. 충분히 도움이 되는 내용들이 책에 수록되어 있으니, 두려워하지 말고 시작해 보기 바란다.
사람들은 과거에 즐겨 부르던 노래나 즐겨 하던 게임 또는 인상 깊게 읽었던 책의 글귀 등을 우연히 접하게 될 때 당시의 추억을 새삼 기억해내곤 한다. 나 또한 이 책의 번역을 진행하면서 예제로 제시된 다양한 게임들을 살펴보며 옛 추억을 떠올릴 수 있었고, 마치 과거로 시간 여행을 다녀오는 듯한 느낌마저 받을 수 있었다.
옮긴이_김병국
출판사 서평
퍼즐 게임을 구성 요소별로 다루는 퍼즐 게임 알고리즘 해설서
-. 원하는 게임 요소대로 골라서 찾아 볼 수 있는 퍼즐 게임 분석서
이 책은 떨어뜨리기(Drop), 볼(Ball), 블록 등 퍼즐 게임을 구성하는 요소별로 나뉘어 구성되어 있다. 따라서 독자는 원하는 요소를 골라서 찾아보고 조합하여 퍼즐 게임의 원리와 기본을 깨우치고 새로운 퍼즐 게임을 만드는 데 응용할 수 있다.
-. 표, 그림 등 풍부한 시각적 요소로 퍼즐 게임 알고리즘에 쉽게 접근한다.
게임 원리를 이해하기 하기 쉬운 그림 중심으로 이루어져 있어서 그림을 살펴보는 것만으로도 쉽게 퍼즐 게임
프로그래밍에 접근할 수 있다.
어떤 독자를 위한 책인가?
-. 게임 개발 분야를 희망하는 컴퓨터 공학 전공자/게임 관련 학과 학생
-. 퍼즐 모바일 게임을 개발하여 앱 마켓에 출시해보고 싶은 사람
기본정보
ISBN | 9788968480706 | ||
---|---|---|---|
발행(출시)일자 | 2013년 12월 23일 | ||
쪽수 | 484쪽 | ||
크기 |
183 * 235
* 30
mm
/ 868 g
|
||
총권수 | 1권 | ||
원서(번역서)명/저자명 | パズルゲ-ムアルゴリズムマニアックス/松浦健一郞 |
Klover 리뷰 (3)
구매 후 리뷰 작성 시, e교환권 200원 적립
문장수집 (0)
e교환권은 적립 일로부터 180일 동안 사용 가능합니다. 리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 한 상품에 최초 1회만 제공됩니다.
주문취소/반품/절판/품절 시 리워드 대상에서 제외됩니다.
판매가 5,000원 미만 상품의 경우 리워드 지급 대상에서 제외됩니다. (2024년 9월 30일부터 적용)
구매 후 리뷰 작성 시, e교환권 100원 적립
-
반품/교환방법
* 오픈마켓, 해외배송 주문, 기프트 주문시 [1:1 상담>반품/교환/환불] 또는 고객센터 (1544-1900) -
반품/교환가능 기간
상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내 -
반품/교환비용
-
반품/교환 불가 사유
(단지 확인을 위한 포장 훼손은 제외)
2) 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
예) 화장품, 식품, 가전제품(악세서리 포함) 등
3) 복제가 가능한 상품 등의 포장을 훼손한 경우
예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집
4) 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우 ((1)해외주문도서)
5) 디지털 컨텐츠인 ebook, 오디오북 등을 1회이상 ‘다운로드’를 받았거나 '바로보기'로 열람한 경우
6) 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
7) 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에 해당되는 경우
8) 세트상품 일부만 반품 불가 (필요시 세트상품 반품 후 낱권 재구매)
9) 기타 반품 불가 품목 - 잡지, 테이프, 대학입시자료, 사진집, 방통대 교재, 교과서, 만화, 미디어전품목, 악보집, 정부간행물, 지도, 각종 수험서, 적성검사자료, 성경, 사전, 법령집, 지류, 필기구류, 시즌상품, 개봉한 상품 등 -
상품 품절
-
소비자 피해보상 환불 지연에 따른 배상
2) 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의 소비자 보호에 관한 법률에 따라 처리함
상품 설명에 반품/교환 관련한 안내가 있는 경우 그 내용을 우선으로 합니다. (업체 사정에 따라 달라질 수 있습니다.)
기분 좋은 발견
이 분야의 베스트
이 분야의 신간
-
움직이는 그림 만들기 with Unity10% 19,800 원
-
현업 기획자 마이즈가 알려주는 게임 시나리오 스쿨10% 23,400 원
-
유니티 게임 제작 입문10% 23,400 원
-
언리얼 엔진5으로 개발하는 멀티플레이어 게임10% 36,000 원
-
레트로의 유니티 6 게임 프로그래밍 에센스10% 59,400 원
게임 매니악스 퍼즐 게임 알고리즘 애니팡, 퍼즐앤드래곤, 겨울왕국 게임을 해보면서 애니팡 만의 귀여우면서도 이제는 머리까지 쓰고 전략적으로 해야 하는 애니팡2까지 나오게 되고 많은 이들의 사랑을 받으면서 게임을 모두가 즐기고 있다. 퍼즐게임들을 해보면서 게임의 스테이지 들을 깨려면 어떻게 해야 효율적으로 이번 단계를 높은 점수로 깰 수 있을지 생각하게 된다.
처음 단락에서 말을 했을 때 퍼즐 게임으로 애니팡, 퍼즐앤드래곤, 겨울왕국 게임을 해보니 겨울왕국은 영화의 스토리와 비슷하게 도움을 주는 캐릭터 들이 준비가 되어있고 화려한 이펙트들과 아이템 방식의 게임을 보면서 퍼즐게임 중에 애니팡과 같은 게임을 만들어 보려는 형이 생각이 났다.
애니팡의 다양한 효과까지는 아니더라도 애니팡처럼 3개 이상 같은 종류의 동물을 맞추게 되면 점수를 얻으며 작동하는 것 까지 아는 개발자의 도움을 받아 애니팡 소스의 핵심 소스는 주었기에 기능구현까지 만들 수 있었다고 하였다.
퍼즐게임 하면 테트리스나 팡 종류의 게임이 지금은 생각이 나지만 책을 통해서 퍼즐게임의 종류에는 땅따먹기와 같은 선을 그으면서 만드는 게임도 있었고 팩맨과 같은 캐릭터가 있고 적도 있으며 조건을 만족 시 다음 단계로 넘어가는 형태의 게임도 있었다.
또한 물체를 미는 게임도 있어서 그림을 그리면서 공을 떨어트리는 게임도 있었다. 이러한 게임들도 퍼즐게임이 속한다는 것을 알 수가 있었다. 애니팡을 분석해 보았을 때 3개 이상 같은 동물을 한 줄로 맞추게 되면 점수를 얻고 또한 콤보를 많이 하면 할수록 더 높은 점수를 받을 수 있다는 것을 게임을 해본 사람들은 많이 알 것이다.
그 이후 아이템도 많아져서 더 쉽게 높은 점수를 받을 수 있게 해주므로 다음버전인 애니팡2가 나와도 두 게임 사이에 연관성을 두어서 두 게임의 액티브 유저가 계속 나올 수 있도록 구성을 짜게 되었다. 애니팡2 하트가 필요할 때 사천성이나 애니팡을 하게 되면 추가로 애니팡2 하트를 받을 수 있도록 하였고 카카오톡을 통한 하트를 친구들 끼리 보내고 받을 수 있는 시스템으로 구성되어 있다.
알고리즘이라는 것이 게임알고리즘을 보면 게임의 구성들을 생각하고 무엇이 들어가면 되겠다는 생각을 하므로 이 기능을 구현하기까지의 하나의 문제를 두며 해결 하는 것이 프로그래밍을 하는 것이란 생각이 든다. 책을 읽으면서 퍼즐앤드래곤 게임도 에디터 선정게임으로 많은 이들이 이용하며 퍼즐을 통한 스테이지를 넘어가는 시스템인데 속성을 두게 되어서 속성별로 강한 타입이 있고 약한 타입 중립이 있으며 키우기 어려운 속성의 캐릭터도 있었다.
이외에 강한 캐릭터를 두어서 레어를 얻을 수도 있고 얻기 힘든 캐릭터도 나오는 시스템도 가지고 있다. 애니팡2는 난이도가 높아질수록 아이템을 쓰고 싶은 생각이 많아지고 단계별로도 게임을 하기가 어려웠지만 다른 사람과의 랭킹을 보면서 시간이 날 때 생각이 나면 해보면서 단계를 향상시키게도 된다.
겨울왕국의 게임은 하트를 친구끼리 주는 것은 없지만 매일 아이템을 주고 화려한 이펙트효과와 퍼즐이 터지는 로직은 퍼즐간의 비슷한 부분이지만 각자의 서비스마다 특장을 가지고 있었다. 제가 오랫동안 즐겨온 게임들을 생각해보면서 퍼즐을 구성하는 요소들을 잘 분석하고 책을 통하여 원하는 요소를 골라서 찾아보고 조합하어 퍼즐게임의 원리와 기본을 깨우치고 새로운 퍼즐게임을 만드는 데나 앞으로 나올 비슷한 유형의 게임을 만드는 테 큰 도움이 되어줄 것 같은 책이다.
몇 년전부터 새롭게 열린 스마트폰의 세상에서 게임은 또 다른 시대를 맞이합니다.
이전부터 게임은 많은 사람들이 찾는 흥미를 위한 요소이기는 했지만,
아무래도 나이어린 학생들이나 PC로 게임을 즐기는 일부 젊은 층을 대상으로 하는
것이 대부분이었습니다. 하지만, 스마트폰의 보급으로 애니팡과 같은 게임의 경우
남녀노소를 가리지 않고, 수많은 사람들이 한꺼번에 집중하는 일종의 국민게임과
같은 효과를 누리기도 했습니다. 이런 와중에 게임에 대한 사회적인 이슈도 있고,
게임에 대한 다양한 이야기가 오가면서, 애니팡과 같은 게임을 만들수 있다는
이 책의 제목은 게임만들기에 흥미있는 여러분들의 관심을 끌기 좋은 내용입니다.
이 책은 한빛미디어에서 나온 <게임 매니악스> 시리즈 중 한 권입니다.
만일 이전에 나온 <게임 매니악스 슈팅 게임 알고리즘>을 이미 보신 분이라면
이 책의 구성방식에 대해서는 익숙할 수 있고,
이 책의 내용에 대해서도 대략 예상하실 수 있습니다.
이 책은 <게임 매니악스 퍼즐 게임 알고리즘>은 제목 그대로
퍼즐 게임을 구현할 수 있는 다양한 알고리즘을 소개하고
그 내용을 독자들에게 이해시키는 것이 목적인 도서이기 때문입니다.
이 책은 일반적인 게임서적과는 조금 다릅니다.
일반적인 '게임 개발 프로그래밍'과 같은 스타일의 서적을 생각하신다면
목적에 맞지 않아서 약간 당황하실 수도 있습니다.
이 책의 기본적인 대상 독자는 최소한의 프로그래밍 경험이 있는
프로그래머입니다. 게임 프로그래밍의 경험은 없어도 상관없지만,
프로그래밍에 대한 기본적인 이해가 있는 것이 이 책을 보는데 도움이 됩니다.
또한 이 책의 제목 그대로 소스코드 보다는 알고리즘에 촛점을 맞추고 있습니다.
퍼즐 게임의 다양한 상황에 따라 필요한 알고리즘이 무엇인지 알려주고
그 알고리즘을 어떻게 이해할 수 있는지에 대한 것이 이 책의 기본적인 목적이므로
그런 알고리즘을 이해하는 것이 목적인 분들에게 가장 좋은 참고서가 될 수 있습니다.
주의할 점은 이 책은 기본적인 수준의 참고용 소스코드만 제공할 뿐,
높은 수준의 게임 전체를 제공하는 것은 아니라는 점입니다.
설명해준 알고리즘이 돌아가는 데모수준의 소스코드이므로
게임제작에 도전하시는 분들은, 이 책을 참고도 다른 참고서를 이용해 학습하셔야 합니다.
게임 제작에 관심과 열정이 있는 분들이라면,
퍼즐게임을 구현하지 않더라도 한 번쯤 읽어보기 좋은 내용인 것 같습니다.
또한 퍼즐게임에 대한 관심이 있으신 분들이라면
꼭 한 번 읽어보시기 바랍니다.