SlideShare una empresa de Scribd logo
1 de 425
게 임 기 획

포 트 폴 리 오

애니팡 퍼즐시스템 역기
획

2013. 08. 21 배상욱 (hzael@naver.com)
시작하기 전에
게 임 기 획

지 원

포 트 폴 리 오
왜 했는가?

•기획을 경험해보기 위해서

3
왜 애니팡인가?

•경험이 없어 쉬우면서도 유명한 게임을 선택

4
왜 퍼즐시스템인가?

•익숙하면서도 가장 중요한 요소이기 때문에

5
허접한 VBA는 무엇인가?

•역기획 내용을 그대로 구현해 보고자 하였습니
다.

6
하고 싶은 이야기는?

7

•애니팡 퍼즐 시스템 파악

•그것의 역기획(PPT)
•역기획의 구현 (VBA)
•분석 및 새로운 시스템 도입 가능성(PPT, VBA)
애니팡 알고리즘
게 임 기 획

지 원

포 트 폴 리 오
애니팡 알고리즘

실행

게임시간

9

필드생성

<0

블럭생성

종료

이동/선택
애니팡 알고리즘
이동/선택

10

없음

검사

지울게 있음

블럭지움

빈칸채움
애니팡 알고리즘

11

빈칸채움

검사

지울게 있음

블럭지움

없음

이동/선택

있음

검사

움직일게 없음

블럭생성
간단히 하자면

블록 이동

3줄 검사

12

지움

채움
흔한 시행착오
게 임 기 획

지 원

포 트 폴 리 오
애니팡은 쉬운 게임이다?

MATCH-3 게임들,
다양한 만큼 익숙하다

14
애니팡의 규칙

15

애니팡의 주요 규칙 3개
•3개의 블럭을 한줄로 맞추면 터진다
•시간 제한은 1분이다
•블럭을 터뜨리고 3초 이내에
다른 블럭을 터뜨리면 콤보가 이어진다
애니팡의 규칙

16

이러면 터진
다

그러므로
정의는

“같은 캐릭터 블록 3개를 가로나 세로 일렬로 맞추면,
블록이 삭제된다.”
애니팡의 규칙

17

이 경우에는?
3개가 터지면 하나가 남는
다
그러므로 3개 이상으로 변
경
그러므로
정의는

“같은 캐릭터 블록 3개 이상을 가로나 세로 일렬로 맞추
면,
블록이 삭제된다.”
애니팡의 규칙

18

그럼 이런 경우에는?
다음과 같이
정의하면 될까?
“같은 캐릭터 블록 3개 이상을 가로나 세로 일렬로 맞추
면,

그러므로
정의는

블록이 삭제된다.
가로와 세로가 각 3개 이상이 결합된 모양의 블럭은
하나의 묶음으로 인식되어 같이 삭제된다.”

라고 하면 될까?
답은

19

한 묶음으로 삭제되지 않는다
정의가 잘못 되었기 때문이다
- 이미 가로 블럭이 삭제된 후

그러므로
정의는

“같은 캐릭터 블록 3개 이상을 가로나 세로 일렬로 맞추
면,
블록이 삭제된다.
가로와 세로가 각 3개 이상이 결합된 모양의 블럭은
하나의 묶음으로 인식되어 같이 삭제된다.”
애니팡의 규칙

20

모두 삭제하기 위해서는,

적어도 다음과 같이 정의해야 한다

“같은 캐릭터 블록 3개 이상을 가로나 세로 일렬로 맞추
면,

그러므로
정의는

그 블록은 ‘삭제대상’으로 메모리에 저장된다.
삭제대상의 각 블록은 (삭제대상이 가로일 경우) 위 아
래 세로 검사를 하여 블록이 3개 이상인지 확인하여, 그
값이 참일 경우 해당 블록들을 삭제대상 메모리에 추가
한다.
이 과정을 거쳐

•수백 번의 수정을 하였고,

•VBA로 그 실행가능 여부를 확인하였습니다

21
퍼즐 시스템
게 임 기 획

지 원

포 트 폴 리 오
실행

게임시간

필드생성

<0

블럭생성

종료

이동/선택
필드 생성

24

•이동시킬 블록이 필요,
•이동할 필드와 필드를 한정지어 주는 벽이 필요
•필드의 위치는 좌표로 표시한다

OBJECT

좌표, 벽, 필드, 블록
좌표
7x7

25

• 9x9칸의 형태
- 7x7개의 블록을 수용

• 좌표하나는 셀을 의미
- 좌표 하나당 하나의 셀을 할당한다

좌 표 ( y, x ) 는 좌 표 범 위 내 의 임 의 의 좌 표 를 의 미 한 다 .

정의

임의의 좌표가 상, 하, 좌, 우로

이동 시 각각 y-1, y+1, x-1, x+1로 값을 변경한다.
벽
7x7

26

• 9x9칸의 형태
- 7x7개의 블록을 둘러 싼 셀들을 벽으로 한다
- 블록, 빈공간과 다른 값을 갖는다

• 고정되어 있고, 지워지지 않는다
- 파이어팡, 앵그리팡 등에 의해 지워지지 않는다
- 블록은 벽안에서만 존재한다
- 벽은 이동하지 않고 고정되어 있다
(1,1)부터 (1,9) 까지, (9,1)부터 (9,9) 까지,

정의

(2,1)부터 (8,1) 까지, (2,9)부터 (8,9)까지의

범위를 벽으로 하며, 범위 내 셀 값은 “wall”로 한다.
필드

27

• 벽으로 둘러싸인 공간

• 필드 7x7, 49개의 블록으로 채워진다
- 빈공간이 생기면 바로 채워진다

정의

(2,2)부터 (8,8) 까지의 범위를 필드로 하며, 범위 내
셀 값은 “none”로 한다. 블록으로 필드가 채워질 경우
필드의 chr 값은 해당 블록의 값을 갖는다.
블록

28

• 기본 블록 7개
- 원숭이, 병아리, 강아지, 토끼, 쥐, 돼지, 고양이 총 7개

• 파이어팡
- 폭탄 컨셉

• 랜덤팡
- 블록 5개를 한 번에 지우면 생성

다

- 랜덤팡을 선택하면 기본 블록 중 1종의 블록을 모두 삭제한

• 앵그리팡
- 블록 4개를 한 번에 지우면 생성
- 앵그리팡이 지워질 때 앵그리팡을 중심으로 3x3칸이 추가
삭제

정의

기본 블록 7개, 특수블록 9개(파이어팡1개, 랜덤팡 1개, 앵그리팡 7개) 총 16개의 블록이
존 재 한 다 . 기 본 블 록 의 셀 값 은 원숭이, 병아리, 강아지, 토끼, 쥐, 돼지, 고양이 순 서 대 로 ” c h r 1 ” , “ c h r 2 ” ,
“chr3”, “chr4”, “chr5”, “chr6”, “chr7” 값을 갖는다.

- 기본블록마다 각1개씩 총 7개 존재

하나의 셀에 하나의 chr값만을 갖는다.
(특수 블록은 특수 블록 파트에서 따로 다룬다.)
그 외의 OBJECT들

• 시간 – 시작 후 60초가 지나면 게임 종료

• 콤보 – 콤보 파트에서 다룸
• 점수 – 점수 파트에서 다룸
• 라스트팡 – 라스트팡 파트에서 다룸
• 피버모드 – 피버모드 파트에서 다룸

29
실행

게임시간

필드생성

<0

블록생성

종료

이동/선택
블록 생성

• 이 때까지의 설정을 바탕으로 블록 생
성

31
블록 생성

32

.

.

.

8

9

.

.

2

3

4

5

49

6

7

.

1

48

셀에 적힌 순서대로 랜덤한 chr 값을 넣는
다.
진행하다보면

3개 짜리가 생긴
다

33
3개짜리가 안생기려면?

34

7

즉, (y,x)에

(y,x)

제외

2

생성될 블록의 왼쪽과 아래쪽 2칸의 셀값을 검
사
두개의 셀값이 같다면
블록 생성

35

• 필드에 블 록 을 채 운 다 .
• 순서
(8,2)부터 (8,8)까지채우고 (7,2)로 이동하여 (7,8)까
지 채우는 방식으로 x축을 모두 채우면 y-1로 이동하여
최종적으로 (2,8)까지 채운다.

• 블록의 선택
블록에 chrA값을 입력한다.

정의

chrA A=random(1,7)
단 , ( y, x ) 에 블 록 을 채 워 넣 을 경 우 ( y + 1 , x ) , ( y + 2 , x )
의 chr값을 검사하여 연속하는 두 값이 같을 경우, 이
셀 에 한 해 그 c h r 값 을 제 외 한 다 . ( y, x - 1 ) , ( y, x - 2 ) 에 도
똑같이 적용하며, 둘 다 참일 경우 중복으로 적용가능하
다.
(셀의 chr값이 none 이면 빈칸, chrA이면 기본 블록이
생성된다.)
실행

게임시간

필드생성

<0

블록생성

종료

이동/선택
블록 선택

• 블록을 선택하면 블록을 움직일 수 있다

37
블록을 선택하면

• 일반 블록은 이동할 수 있게 된다
• 특수 블록은 고유한 기능이 있다
• 일반 블록이 이동하여 지울게 없을 경우
다시 원상복귀

38
블록 선택/이동 정의

39

• 기본 블록을 선택하여 이동시킨다.
• ( y, x ) 의 블 록 을 선 택 하 면 해 당 블 록 의 모 습 이 변 하 여
다른 블록들과 구분할 수 있으며, 이동가능한 상태가 된
다. (단, 특수 블록은 예외. 특수블록 파트에서 다룸.)

정의

• (y-1,x), (y+1,x), (y,x-1), (y,x+1) 중 하나를 선택할 수 있으며,
하나를 선택하면 그 셀의 chr값과 (y,x)의 chr값이 뒤바뀐다.
• 이동 후 3개가 연달아 배열되었는지를 검사하여 검사 값이 거짓
이면 블록이 이동하기 전으로 되돌아간다. 되돌아가기 까지 1초 정
도의 시간이 걸리기 때문에 콤보를 잇는데 큰 방해 요소가 된다.
검사

이동/선택

없음

지울게 있음

블록지움

빈칸채움
지울게 있는지 확인하는 단계
• “팡체크”로 명명
• 시행착오에서 다루었던 내용

“같은 캐릭터 블록 3개 이상을 가로나 세로 일렬로 맞추
면,

그 블록은 ‘삭제대상’으로 메모리에 저장된다.
삭제대상의 각 블록은 (삭제대상이 가로일 경우) 위 아
래 세로 검사를 하여 블록이 3개 이상인지 확인하여, 그
값이 참일 경우 해당 블록들을 삭제대상 메모리에 추가
한다.

이 검사가 종료되면 삭제대상의 범위를 삭제한다.”

• 더 확실한 방법이 있다.

41
모든 경우의 수를 검사하는 방법

42

빨간색 블록을 왼쪽으로 이동하였
다
빨간색 블록이 터질 수 있는 패턴
은
‘ㅓ’범위 내에서만 가능하다
블록이 3개 이상 뭉쳐 있는 형태는 이 단계에 존재 불
가
ㅓ 범위 내의 존재가능한 모든 패턴

43

블록 이동 시
터질 수 있는
모든 패턴
총 12개
이 패턴을 적용하여…

44

실험해 보자

지워지긴하는데…

아래의 3개 짜리는?
왜 생길까?

45

빨간색 블록을 왼쪽으로 이동시키
면
검은색 블록은 오른쪽으로 이동
블록 이동 시
두 블록을 모두 신경써야한다
그러므로

46

빨간색 블록의 경우와 마찬가지로
총 12개의 패턴
합쳐서 총 24개의 패턴

1회 이동 시 24개의 패턴을 검사한다
팡체크

47

상, 하, 좌, 우 한 방향당 24개씩
96개의 패턴이 존재
한 방향으로 이동 시

해당 방향 검사만 실행
팡체크

48

• 이동 시킨 블록을 중심으로 터질 블록이 있는지 확인한다.
• 종류

상, 하, 좌, 우 한 방향 당 2개씩 총 8개의 팡체크가 있다. 하나의 팡
체크는 12개의 패턴이 있다. “왼쪽팡체크1”, ”왼쪽팡체크2” ,

정의

“오른쪽팡체크1”, “오른쪽팡체크2”, “위쪽팡체크1”, “위쪽팡체크2”,
“아래쪽팡체크1”, “아래쪽팡체크2”.
• 이동/선택 단계에서 블록을 이동시킨 방향에 따라 팡체크의 방향
도 정해진다.
예) 왼쪽이동 -> 왼쪽팡체크1 -> 왼쪽팡체크2 -> 지움단계
왼쪽팡체크1

49

(y-2,x-1)

(y-1,x-1)

(y,x-3)

(y,x-2)

(y,x-1)

(y,x)

(y+1,x-1)

(y+2,x-1)

• 블록을 왼쪽으로 이동시키면 (y,x)의 chr값을 inttemp1 메모리에
저장하고 (y,x-1)의 chr값을 inttemp2 메모리에 저장한다.

정의

• 주황색의 범위 내 모든 블록의 chr값을 검사한다.
• 위의 12개의 패턴 모양 대로 inttemp2와 패턴 범위 내 블록들의
Chr값을 비교하여 값이 모두 참이면 그 블록을 „삭제대상‟으로 한
다. (블록수가 많은 순서대로 검사)
왼쪽팡체크2

50

(y-2,x-1) (y-2,x)
(y-1,x-1) (y-1,x)
(y,x-3)

(y,x-2)

(y,x-1)

(y,x)

(y,x+2) (y,x+3)

(y+1,x-1) (y+1,x)
(y+2,x-1) (y+2,x)

• 왼쪽팡체크1이 끝난 다음 실행한다.
• 회색의 범위 내 모든 블록의 chr값을 검사한다.

정의

• 위의 12개의 패턴 모양 대로 inttemp1과 패턴 범위 내 블록들의
Chr값을 비교하여 값이 모두 참이면 그 블록을 „삭제대상‟으로 추가한다.(단, 12
개의패턴 모양은 180˚ 회전한 모양)
• 삭제대상이 있으면 “지움”단계로 들어간다. 삭제대상이 없으면
이동/선택단계로 돌아가고, 이동한 블록을 다시 돌려 놓는다.
그 외 팡체크

51

(y-1,x)
(y,x-1) (y,x) (y,x+1)
(y+1,x)

• 왼쪽팡체크와 같은 순서를 따른다
• inttemp2의 값은 상, 하, 좌, 우 에 따라 (y-1,x), (y+1,x), (y,x-1),
(y,x+1)의 chr값이다.

정의

• 12개의 패턴 모양 은 위쪽팡체크 시 시계방향으로 90 ˚ 회전, 아래
쪽팡체크 시 시계반대방향으로 90 ˚ 회전, 오른쪽팡체크 시

180˚ 회전한 모양으로 한다. (팡체크2 는 그 모양을 다시 180˚회전)
• 삭제대상이 있으면 “지움”단계로 들어간다. 삭제대상이 없으면
이동/선택단계로 돌아가고, 이동한 블록을 다시 돌려 놓는다.
검사

이동/선택

없음

지울게 있음

블록지움

빈칸채움
블록지움

53

삭제 시 애니메이션 있음

지워진 블록이 다시 채워
지기 까지 일정 시간 소
요
약 1초

게임에서 딜레이 역할
블록지움

정의

54

• “삭제대상”내 셀의 chr값과 sp값을 “none”으로 변경하며 0.5초 동
안 삭제될 때 나타나는 애니메이션이 나온다. (블록채움시간 0.5초)
끝?

55

• 너무 짧아서… 콤보 추가
콤보

56

블록이 지워지면

콤보가 생성된다
이런 상황에서도?

57

블록을 터트린 후
블록이 새로 차면서
3칸이 맞춰졌다.

콤보가 추가될까?
콤보가 아니라 체인

58

Combo 대신 Chain 추가
체인도 늘어날 수록
점수가 증가하지만

자동으로 맞춰지는 블록
은
매우 드물다
그럼 콤보는 언제 생성될까?
• 직접 블록을 움직여 터트릴 때 1추가
• 파이어팡을 터트릴 때 1추가
• 랜덤팡을 터트릴 때 1추가
• 단, 콤보가 추가된 후 새로운 콤보 추
가 없이 3초가 지나면 콤보는 0이 된다
• 또한, 피버모드가 실행될 때 마다 콤보
가능 시간(최초 3초)은 0.5초 줄어든다

59
콤보에 영향을 미치는 요인?

• 파이어팡, 랜덤팡을 사용 시 시간이 멈춘다
- 애니팡을 해본 사람이라면 폭탄, 랜덤팡의 중요성을 알것이다

• 2초

60
콤보

61

• 일정 조건을 만족하면 콤보가 생성되고 콤보가 높을 수록 더 높은
점수를 얻는다.
• 콤보생성조건
직접움직인 블록이 터지거나, 랜덤팡, 파이어팡을 사용하면
“combocount” 메모리의 값을 1 추가한다. (최초 combocount =0)
combocount가 1이상이면 콤보가 활성화 되고 combotime이 3으로
설정되어 1초에 1씩 줄어든다.

정의

• 콤보가능시간
combocount가 1이상일 때 추가없이 combotime이 0이 되면,
combocount는 0으로 초기화되고 combotime은 비활성화된다. 피
버모드를 활성화시킬 때마다 combotime의 최대값은 0.5초씩 줄어
든다. Combotime의 최대값이 1.5초가 되면 더이상 줄어들지 않는
다.
• 콤보시간연장
파이어팡이나 랜덤팡을 사용하면 애니메이션이 끝날 때까지(2초)
combotime의 값은 고정되어 변하지 않는다.
검사

이동/선택

없음

지울게 있음

블록지움

빈칸채움
빈칸채움

63

블록지움 후
빈칸을 검사하여
메꾼다
어떻게?

64

• 위에서 아래로
중력에 이끌리듯

빈칸 위의 블록들을 내린
다
맨 위칸에 새로운 블록 생

65
빈칸채움 완료

• 간단하다

66
그러나

67

???
월간 수학동아 2012년 11월호 49페이지 애니팡기획자 인터뷰
정리하면,

68

• 빈칸을 채우기 전에 움직여서 터트릴 수 있는
블록의 여부를 검사
• 없다면, 터트릴 수 있는 블록을 생성
빈칸채움

이 상태로 터질게 있는지 검사할 수 있을까?

69
터질게 있는지 검사위해 ( = 팡 가능검사)

이 상태로 만들어야 한다

70
그러므로

71

• 빈칸 검사부터 실시
필드 중 빈칸 검사
.

72

.

.

48

49

6

7

none

8

9

.

.

.

1

2

3

4

5

순서대로 셀의 chr값을 검사
그 값이 “none”이면 다음 과정으로
블록을 아래로 내린다

73

(2,x)
(3,x)

(y-1,x)
(y,x)

(y,x)

(y-1,x)부터 (2,x)까지 복사
(y,x)부터 (3,x)까지로 붙여넣
기
블록이 정리 되었는지 확인
(2,x)
(3,x)

위에는 블록이 없어야 한다
(y,x)부터 맨위까지 검사하여
블록이 없어야 종료

(y,x)

(3,x)

블록이 있다면 다음 과정으로

아래는 빈칸이 없어야 한다
(y,x)부터 맨 앞래까지 검사하여

(y,x)

빈칸이 없으면 (y,x)를 한칸 위로
빈칸이 있으면 복사/붙여넣기

(8,x)

74
블록이 정리 되었는지 확인

• 위 과정을 2회 실행

75
블록이 정리 되었는지 확인
(2,x)

범위 중 블록이 있다
다음과정으로
(y,x)

(2,x)

범위중 빈칸이 없다
(y,x)를 한칸 위로
(y,x)

76
블록이 정리 되었는지 확인
(2,x)

(y,x)

마찬가지로
(2,x)

(y,x)

(y,x)를 한칸 위로

77
블록이 정리 되었는지 확인
(2,x)

(y,x)

(2,x)

(y,x)

78
블록 정리 완료

79

(2,x)

범위 중 블록이 없다
(y,x)

완료
블록 생성 준비 완료

“팡가능검사” 후
블록을 생성한다

80
팡가능 검사

• 터질게 있는지 검사

81
터질 수 있는 모양

1 2 3

1
2
3

82

1 2 3

1
2
3

1 2 3

1
2
3

주황색을 움직이면 터트릴 수 있는 모양
4개 짜리는?

83

1
2
3
4

필요 없다

1
2
3

이걸로 검사 가
능
팡가능 갯수 검사

84

2개
팡가능 갯수 검사

85

0개
지울 수 있는 블록이 없으므로

(y,x)

86

지울 수 있는 블록 생
성
어떻게?

87

1 2 3

1
2
3

1 2 3

1
2
3

1 2 3

1
2
3

여기에 경우의 수 모두 대
입
팡가능 블록 패턴
(y,
x)

(y,
x)

(y,
x)

(y,
x)

88

(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)
(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)
(y,
x)

가로 총 24개

(y,
x)

(y,
x)
(y,
x)

(y,
x)
(y,
x)
팡가능 블록 패턴

• 세로도 총 24개
- 그림은 생략

89
검사 방법

• 각 패턴 모양 대로 검사하여
• 주황색 두개의 chr값이 같을 경우,
•(y,x)에 해당 chr값을 입력한다

90
예를 들어

91

(y,
x)

위의 패턴대로
셀의 chr값 검사

두 셀의 chr값은 모두 7
그러므로 (y,x)에
Chr7을 입력한다
그 결과로

92

팡가능 블록 생성
두번째 빈칸 채움

93

팡가능 블록이 있으므
로
두번째 빈칸 채움

94

랜덤으로 블록 생
성
세번째도 마찬가지
빈칸 채움 완료

95
빈칸채움

96

• 블록지움이 끝나고 “필드”의 빈칸을 검사하여 채운다.
• 검사 방법
1. 블록생성 순서대로 셀 값이 “none”인지를 검사한다.
2. 그 결과가 참이라면, (y-1,x)부터 (2,x)까지의 chr값을 복사하여
(y,x)부터 (3,x)까지 붙여넣기 한다.

2-1. 끝까지 검사하여 모두 셀 값이 “none”이 아니라면 “필드검사”를 실
행한다.

정의

3. (y,x)부터 (2,x)까지를 선택하여 해당 범위의 셀 값들을 검사하여 빈칸이 아닌게 있
으면 4.를 실행한다.
3-1. 모두 빈칸이라면 5.를 실행한다.
4. (y,x)부터 (8,x)까지를 선택하여 해당 범위의 셀 값들을 검사하여 빈칸이 있으면 1.
부터 다시 반복한다.
4-1. 빈칸이 없으면 y = y-1로 하고 1.부터 다시 반복한다.
5. “팡가능검사”를 실행한다.
6. 팡가능검사 결과 값이 0이면 “팡가능블록”을 생성하고, 0이 아니면 해당 셀에
chrA값을 입력한다.
chrA

A=random(1,7)
팡가능검사

97

• 빈칸에 블록을 생성하기 전 “필드”를 검사하여 „이동하여 3개가
연달아 배열될 수 있는 블록‟이 있는지를 확인한다.
• 블록생성 순서대로 임의의 좌표 (y,x)를 이동시키며, 각 셀 마다

정의

48개의 패턴 모양으로 해당하는 셀 값들을 검사한다. 패턴의 두 주
황색 셀과 검은색 셀, 3가지 셀의 chr값이 모두 같을 경우
mvablecount = mvablecount +1 로 한다. (최초0)
• (y,x)가 (2,8)이 되면 검사를 종료한다.
팡가능블록생성

98

• 움직여서 터트릴 수 있는 블록이 없는 경우 움직여서 터트릴 수
있는 블록을 생성한다.
• 움직여서 터트릴 수 있는 블록 은 “팡가능블록”으로 정의한다.
• 빈칸채움에서 블록을 생성해야할 빈칸 (y,x)가 정해지면,

정의

팡가능 검사를 하여 팡가능블록을 생성할지 랜덤블록을 생성할지
를 정한다.

• 방법
팡가능 블록 생성시 빈칸(y,x)에 48개의 패턴을 적용하여 각 패턴마
다 두 주황색의 값이 동일한지를 검사한다. 값이 동일하다면 빈칸
(y,x)에 해당 chr값을 입력하고 생성을 종료한다.
(24개 모두 동일한 값이 없다면, 랜덤한 블록을 생성한다.)
내친김에

• 팡 불가 블록을 생성해보자

99
왜?

100

• 애니팡을 하면서 항상 느끼는 점

터트릴게 항상 모자라
다
혹시

101

• 팡가능 블록 수가 제한되어 있나?
그래서

102

• 실험해 보았다
애니팡의 팡가능 블록 개수

• 총 50회 실시
- 5회 터트린 후 개수

103
역기획 VBA

104

• 총 50회 실시
- 5회 터트린 후 개수
팡가능 블록 수 비교

• 애니팡 평균 4.6 개
• 역기획 평균 4.4 개
• 비슷하다

105
팡가능 갯수 비교

• 그런데 왜 애니팡이 훨씬 어렵지?

106
난이도 비교 분석

107

블록 사이의 검은색 배경은
또 하나의 색으로 인식되어
기억할 수 있는 블록 수를 줄
임
사실 두개의 색 남색,검은색

캐릭터는 여러가지 색으로
구성되어 있어
블록의 인지 방해
그 외에 색깔 톤 등 여러 요인 작용
어쨋든

108

• 팡불가 블록을 생성하자
- 난이도 조절용
원리는

109

팡가능 블록 생성과 같
다
차이점은

110

(y,
x)
차이점은

111

(y,
x)
차이점은

112

(y,
x)
차이점은

113

(y,
x)
차이점은

• chr값을 제외 시키는 것

114
팡불가블록생성

115

• 움직여서 터트릴 수 있는 블록이 너무 많은 경우 움직여서 터트릴
수 없는 블록을 생성한다.
• 움직여서 터트릴 수 없는 블록 은 “팡불가블록”으로 정의한다.

• 빈칸채움에서 블록을 생성해야할 빈칸 (y,x)가 정해지면,

정의

팡가능 검사를 하여 팡가능블록 혹은 팡불가블록을 생성할지 랜덤
블록을 생성할지를 정한다.
• 방법
팡가능 블록 생성시 빈칸(y,x)에 48개의 패턴을 적용하여 각 패턴마
다 두 주황색의 값이 동일한지를 검사한다. 값이 동일하다면 빈칸
(y,x)에 입력할 chr값(1~7) 중 해당 chr값을 제외한다. 24개의 패턴
을 모두 적용하면 남은 chr값 중 하나를 랜덤으로 (y,x)에 입력하고
생성을 종료한다.
빈칸채움
검사

지울게 있음

블럭지움

없음

이동/선택

있음

검사

움직일게 없음

블럭생성
빈칸 채움이 끝난 필드

117
그런데…

118

이건 언제 생겼지?
빈칸채움 완료 후

• 3개짜리가 있을 수 있다
- 3개 이상도 가능

• 바로 Chain

119
그러므로

120

• 필드 검사 필요
= 필드체크
필드검사에 들어가기 전

• 겪은 시행 착오들

121
시행착오

122

지워야할 블록 모양
들
시행착오 직선검사

123

ok

ok

ok

ok

ok

ok
ok

ok

ok

남는 부분이 있다

o
k

o
k
시행착오 가로세로검사
ok

ok

ok

ok

ok
o
k ok
o
k

124

o ok
k

o ok
k

o
k

ok

겹치는 부분이 있다
폭탄 생성 및 점수계산에서 불리

o
k
그래서,

125

• 선택한 방법
필드체크 방법 결정

3칸이 검색되면
상하좌우를 검사하여
한칸씩 추가하면 어떨까?

126
우선은,

127

.

.

.

8

9

.

.

2

3

4

5

49

6

7

.

(y,x)

48

순서대로 세 칸씩 검
사
가로 3칸 검사

128

.

.

.

48

49

6

7

(y,x)
8

9

.

.

.

1

2

3

4

5

3개 모두 같은 색이
면
다음은,

129

.

.

.

48

49

6

7

(y,x)
8

9

.

.

.

1

2

3

4

5

세로검사
합쳐진 모양부터 제거하기 위
이 외에도

130

(y,x)

(y,x)

(y,x)

(y,x)

(y,x)

(y,x)

(y,x)

(y,x)

(y,x)

이런 모양들을 검
사
검사결과가 참이면
.

131

.

.

48

49

6

7

(y,x)
8

9

.

.

.

1

2

3

4

5
좌표 저장

132

.

.

.

48

49

6

7

(y,x)
8

9

.

.

.

1

2

3

4

5

(y,x)좌표를
rngcrs1메모리에 저장
검사가 종료되면,
.

crs2

133

.

.

crs3 (y,x)

crs1
8

9

.

.

.

1

2

3

4

5

6

7

가로 세로가 겹쳐진 형태
의
다음 단계는

134

crs1

상하좌우 검사
Rngcrs1부터
위쪽 검사

(y-1,x)
(y,x)

135

rngcrs1의 좌표를 (y,x)로 설정
(y-1,x)와 (y,x)의 chr값을 비교
같으면 rngcrs1의 범위에
(y-1,x)를 추가한다
위쪽 검사

(y-2,x)

(y,x)

136

다음은
(y-2,x)의 값이 같으면 추가
위쪽 검사

137

(y-3,x)

(y,x)

값이 다르면 검사 종료
다음은 좌측 검사
왼쪽 검사

(y,x-1) (y,x)

138

값이 다르면 검사 종료
다음은 아래쪽 검사
아래쪽 검사

(y,x)
(y+1,x)

139

값이 다르면 검사 종료
다음은 오른쪽 검사
오른쪽 검사

140

범위추가
(y,x) (y,x+1)
오른쪽 검사

141

범위추가
(y,x)

(y,x+2)
오른쪽 검사

142

값이 다르면
(y,x)

(y,x+2)

검사 종료
상하좌우검사가 끝나면,

(y,x)

추가된
Rngcrs1의 범위
딱맞는다

143
삭제

144

(y,x)
같은 방법으로

(y,x)

145

가로 모양 지움

세로 모양 지움
(y,x)
삭제

146

(y,x)

(y,x)
결과

147

체인 삭제 후 빈칸이 생
김
빈칸을 채우려면

• 다시 “빈칸채움”으로

148
빈칸채움

필드
체크

지울게 있음

블럭지움
그리고,

150

• 다시 필드체크
빈칸채움

필드
체크
지울게 없음

지울게 있음

블럭지움
지울게 없을 때까지

• 반복

152
빈칸채움

필드
체크
지울게 없음

지울게 있음

블럭지움
지울게 없다

• 필드체크 종료

154
필드체크

155

• 빈칸채움 후 필드를 검사하여 터트릴 블록이 있는지 검사한다.

• 검사방법
1. 블록생성 순서대로 임의의 좌표 (y,x)를 이동시키며 각 셀 마다 위의 9개 패턴
모양대로 셀의 chr값을 검사한다.
1-1. 주황색 범위의 chr값이 모두 동일하면 rngcrsA메모리에 (y,x)의 좌표를 저장한
다.(rngcrsA의 최초 값 “nothing”, A = 1 ~ 20)
1-2. 임의의 좌표(y,x)가 (2,6)이 되면 (y,x)의 이동을 종료한다
1-3. 저장된 rngcrsA값 각각에 대해 1-4.~ 1-5.의 과정을 수행한다. (최초,rngcrs1)

정의

1-4. rngcrsA의 값이 nothing이라면 A = A + 1
1-4. rngcrsA의 값이 nothing이 아니라면 그 위치의 좌표를 (y,x)로 할당한다.
1-5. (y,x)를 중심으로 “상하좌우검사”를 실시한다.
2. 블록생성 순서대로 임의의 좌표 (y,x)를 이동시키며 각 셀 마다 (y,x), (y,x+1),

(y,x+2) 셀의 chr값을 검사한다.
2-1. 1-1부터 1-5의 과정을 수행하되 주황색의 범위를 (y,x), (y,x+1), (y,x+2)로 한다.
3. 블록생성 순서대로 임의의 좌표 (y,x)를 이동시키며 각 셀 마다 (y,x), (y-1,x),
(y-2,x) 셀의 chr값을 검사한다.
3-1. 1-1부터 1-5의 과정을 수행하되 주황색의 범위를 (y,x), (y-1,x), (y-2,x) 로 한다.
4. Loopvalue의 값이 true라면, “빈칸채움”을 실행하고 그 값을 false로 바꾼다.
5. Loopvalue의 값이 false라면, “팡가능검사”를 실행한다.
상하좌우검사

156

• 터트릴 블록의 상하좌우를 검사하여 터트릴 범위를 추가/확정한
다.
• 검사방법

1. “위쪽검사” 실행

정의

2. “왼쪽검사” 실행
3. “아래쪽검사” 실행
4. “오른쪽검사” 실행

5. rngcrsA의 값을 “삭제대상”으로 한다.
6. “블록지움” 실행한다. “Loopvalue”의 값을 true로 한다.
7. 해당 rngcrsA 값을 초기화한다.
위쪽검사

157

• 터트릴 블록의 위쪽을 검사하여 터트릴 범위를 추가/확정한다.
• 검사방법

1. (y,x)의 chr값을 crstemp1 메모리에 저장한다.

정의

2. (y-a,x)의 chr값을 crstemp2 메모리에 저장한다. (y-2 >= a > 0,
최초 a=1)
3. crstemp1과 crstemp2를 비교하여 그 값이 참이면, (y-a,x)를
rngcrsA의 범위에 추가한다.
4. crstemp1과 crstemp2를 비교하여 그 값이 참이면, a=a+1, 1. 부
터 다시 진행한다. (a>y-2이면, 검사를 종료한다.)
5. 거짓이면 검사를 종료한다.
왼쪽검사

158

• 터트릴 블록의 왼쪽을 검사하여 터트릴 범위를 추가/확정한다.
• 검사방법

1. (y,x)의 chr값을 crstemp1 메모리에 저장한다.

정의

2. (y,x-a)의 chr값을 crstemp2 메모리에 저장한다. (x-2 >= a > 0,
최초 a=1)
3. crstemp1과 crstemp2를 비교하여 그 값이 참이면, (y,x-a)를
rngcrsA의 범위에 추가한다.
4. crstemp1과 crstemp2를 비교하여 그 값이 참이면, a=a+1, 1. 부
터 다시 진행한다. (a>x-2이면, 검사를 종료한다.)
5. 거짓이면 검사를 종료한다.
아래쪽검사

159

• 터트릴 블록의 아래쪽을 검사하여 터트릴 범위를 추가/확정한다.
• 검사방법

1. (y,x)의 chr값을 crstemp1 메모리에 저장한다.

정의

2. (y+a,x)의 chr값을 crstemp2 메모리에 저장한다. (8-y>= a > 0,
최초 a=1)
3. crstemp1과 crstemp2를 비교하여 그 값이 참이면, (y+a,x)를
rngcrsA의 범위에 추가한다.
4. crstemp1과 crstemp2를 비교하여 그 값이 참이면, a=a+1, 1. 부
터 다시 진행한다. (a>8-y이면, 검사를 종료한다.)
5. 거짓이면 검사를 종료한다.
오른쪽검사

160

• 터트릴 블록의 오른쪽을 검사하여 터트릴 범위를 추가/확정한다.
• 검사방법

1. (y,x)의 chr값을 crstemp1 메모리에 저장한다.

정의

2. (y,x+a)의 chr값을 crstemp2 메모리에 저장한다. (8-x>= a > 0,
최초 a=1)
3. crstemp1과 crstemp2를 비교하여 그 값이 참이면, (y,x+a)를
rngcrsA의 범위에 추가한다.
4. crstemp1과 crstemp2를 비교하여 그 값이 참이면, a=a+1, 1. 부
터 다시 진행한다. (a>8-x이면, 검사를 종료한다.)
5. 거짓이면 검사를 종료한다.
빈칸채움
필드
체크

지울게 있음

블럭지움

없음

이동/선택

있음

팡가능
검사

움직일게 없음

블럭생성
팡가능 검사는

• 이미 다룬 내용에 추가

162
팡가능검사

163

• 빈칸에 블록을 생성하기 전 “필드”를 검사하여 „이동하여 3개가 연달아 배열될
수 있는 블록‟이 있는지를 확인한다.
• 블록생성 순서대로 임의의 좌표 (y,x)를 이동시키며, 각 셀 마다
48개의 패턴 모양으로 해당하는 셀 값들을 검사한다. 패턴의 두 주황색 셀과 검
은색 셀, 3가지 셀의 chr값이 모두 같을 경우 mvablecount = mvablecount +1 로
한다. (최초0)

정의

• (y,x)가 (2,8)이 되면 검사를 종료한다.
• 검사 결과 mvablecouont 값이 0이고, bombcount 값이 0이고,

randomcount 값도 0이면, 터트릴 수 있는 블록이 없으므로
“블록생성”을 실행한다.(bombcount,randomcount는 파이어팡,
랜덤팡의 갯수)
• 검사 결과 위의 세 값 중 하나라도 0이 아닌게 있다면,

“이동/선택”을 실행한다.
빈칸채움
필드
체크

지울게 있음

블럭지움

없음

이동/선택

있음

팡가능
검사

움직일게 없음

블럭생성
빈칸채움
필드
체크

지울게 있음

블럭지움

없음

이동/선택

있음

팡가능
검사

움직일게 없음

블럭생성
처음부터,

166

• 반복
언제까지?

167

• 0초까지
실행

게임시간

필드생성

<0

블럭생성

종료

이동/선택
애니팡 알고리즘

• 종료

169
특수팡 및 기타 파트

• 시작

170
파이어팡

랜덤팡

앵그리팡

피버모드

라스트팡

점수
파이어팡 일명폭탄

172
선택하면 터진다

173
언제 생길까?

174

노란 색 게이지가 꽉차면

하나 추가
그럼 노란 게이지는?

175

블록을 터트릴 때마다 찬다
블록 60개 = 폭탄 1개
그럼…

• 블록이 터지는 갯수를 알아야 한다

176
어떻게?

177

• 블록이 터지면…
공통적으로,

178

빈 칸이 생긴다
다시 채워지기 전에,

• 빈 칸을 개수

179
파이어팡
생성

빈칸채움
검사

지울게 있음

블럭지움

없음

이동/선택

있음

검사

움직일게 없음

블럭생성
검사

이동/선택

없음

지울게 있음

블록지움

빈칸채움

파이어팡
생성
빈칸을 개수하여,

182

누적이 60이 넘으
면
빈칸을 개수하여,

183

폭탄을 생성하고

누적 카운트를 0으로
그런데…

184

• 폭탄 생성 위치는?
높은 행, 낮은 열 순

높은 행

낮은 열

185
폭탄 생성 완료

186
파이어팡 생성

187

• 파이어팡을 생성한다.
• 생성방법
1. 모든 “블록지움”과 “빈칸채움” 단계의 사이에 “파이어팡생성”

단계를 실행한다.

정의

2. 필드의 (8,2)부터 (2,8)까지 모든 셀의 chr값을 검사한다. 각 셀마
다 그 값이 “none”이면, dltcount = dltcount + 1으로 한다.
(최초, dltcount = 0)
3. dltcount의 값이 60이상이면, 블록생성 순서대로 셀의 chr값을
검사하여 그 값이 “none”이면, 해당 셀의 sp 값을 “bomb”로 하고,
dltcount값은 0으로 초기화한다.
4. dltcount의 값이 60이상이면, bombcount = bombcount + 1로 한
다. (최초, bombcount = 0)
이제 쓰는 일만 남았다

188
언제 사용할 수 있나?

• 블록을 이동시키는 대신 사용

189
실행

게임시간

필드생성

<0

블럭생성

종료

이동/선택
파이어팡 사용 시,

• 어떻게 터질까?

191
폭탄을 사용하면,

192

폭탄이 있던 열
모두 터짐
맨 아래 행

모두 터짐
정리하면,

• “이동/선택” 페이즈에서 사용
• 폭탄이 있던 열과 맨 아래 행 터짐

193
파이어팡 사용

194

• 파이어팡을 사용한다.
• 사용방법
이동/선택 단계에서 파이어팡을 선택하면 파이어팡이 사용된다.

정의

• 터지는 범위
선택한 파이어팡의 좌표 (y,x). (2,x)부터 (7,x)까지, (8,2)부터 (8,8)
까지를 “삭제대상”으로 하여 삭제한다.
• bombcount
bombcount = bombcount – 1 로한다. bombcount의 값이 0이하로
내려가면 그 값은 0으로 한다.
끝?

195

• 이면 좋겠지만…
역기획 과정 중,

• 가장 힘들고 복잡했던 부분
• 특수팡 파트

196
특수 팡의 관계

197

파이어팡의 범위에
랜덤팡이나
앵그리팡이 있다면

터질까?
특수 팡의 관계

198

파이어팡의 범위에

파이어팡이 있다면
터질까?
특수 팡의 관계

199

앵그리팡을 터트리
면
파이어팡이 터질까?
특수 팡의 관계

200

랜덤팡을 터트려서
토끼가 걸리면
앵그리팡은?
특수 팡의 관계

• 모두 실험해 보았다

201
특수 팡의 관계

202

팡종류

파이어팡

랜덤팡

앵그리팡

블록선택

O

O

X

블록이동

X

X

O

파이어팡

X

O

O

랜덤팡

X

X

XX

앵그리팡

X

X

O

피버팡

X

X

O

필드배열

X

X

O

O : 터진다.
다.

X : 영향을 주지 않는다.

XX : 터지지만 일반블록으로 취급한
특수 팡의 관계

203

팡종류

파이어팡

랜덤팡

앵그리팡

블록선택

O

O

X

블록이동

X

X

O

파이어팡

X

O

O

랜덤팡

X

X

XX

앵그리팡

X

X

O

피버팡

X

X

O

필드배열

X

X

O

O : 터진다.
다.

X : 영향을 주지 않는다.

XX : 터지지만 일반블록으로 취급한

파이어팡은
터치로만
터트릴 수 있다
특수 팡의 관계

204

팡종류

파이어팡

랜덤팡

앵그리팡

블록선택

O

O

X

블록이동

X

X

O

파이어팡

X

O

O

랜덤팡

X

X

XX

앵그리팡

X

X

O

피버팡

X

X

O

필드배열

X

X

O

O : 터진다.
다.

X : 영향을 주지 않는다.

XX : 터지지만 일반블록으로 취급한

랜덤팡은
터치와 파이어
팡
특수 팡의 관계

205

팡종류

파이어팡

랜덤팡

앵그리팡

블록선택

O

O

X

블록이동

X

X

O

파이어팡

X

O

O

랜덤팡

X

X

XX

터치 제외

앵그리팡

X

X

O

단, 랜덤팡으로 터지면

피버팡

X

X

O

일반블록 취급

필드배열

X

X

O

O : 터진다.
다.

X : 영향을 주지 않는다.

XX : 터지지만 일반블록으로 취급한

앵그리팡은
그런데,

206

• 이게 무슨 의미일까?
파이어팡이 터지면,

207

팡종류

파이어팡

랜덤팡

앵그리팡

블록선택

O

O

X

블록이동

X

X

O

파이어팡

X

O

O

랜덤팡

X

X

XX

앵그리팡

X

X

O

피버팡

X

X

O

필드배열

X

X

O

O : 터진다.
다.

X : 영향을 주지 않는다.

XX : 터지지만 일반블록으로 취급한

파이어팡의 범위 내
랜덤팡과 앵그리팡
의
유무를 검사
파이어팡이 터지면,

208

팡종류

파이어팡

랜덤팡

앵그리팡

블록선택

O

O

X

블록이동

X

X

O

파이어팡

X

O

O

랜덤팡

X

X

XX

앵그리팡

X

X

O

피버팡

X

X

O

필드배열

X

X

O

O : 터진다.
다.

X : 영향을 주지 않는다.

XX : 터지지만 일반블록으로 취급한

있으면,
터트린다.
예를 들어,

209

파이어팡을 사용했
다
파이어팡의 삭제범위

210

그 안에
랜덤팡과 앵그리팡이 있
다
첫째로,

211

랜덤팡이 사용된
다
병아리가 선택
둘째로,

212

앵그리팡이 사용된
다
3x3칸 선택
마지막으로,

213

삭제
파이어팡 사용 완료

214

빈칸채움으로
그러므로,

215

• 파이어팡의 정의는
파이어팡 사용

216

• 파이어팡을 사용한다.
• 사용방법
이동/선택 단계에서 파이어팡을 선택하면 파이어팡이 사용된다.

• 터지는 범위

정의

선택한 파이어팡의 좌표 (y,x). (2,x)부터 (7,x)까지, (8,2)부터 (8,8)
까지를 “삭제대상”으로 한다. 삭제대상 전체를 검사하여, 셀의 sp값
이 “R”이면 “랜덤팡의 범위”를 삭제대상에 추가한다. Sp값이 “A”이
면 “앵그리팡의 범위”를 삭제대상에 추가한다. 검사가 끝나면, 삭제
대상을 삭제한다.
• bombcount
bombcount = bombcount – 1 로한다. bombcount의 값이 0이하로
내려가면 그 값은 0으로 한다.
같은 방식으로,

217

팡종류

파이어팡

랜덤팡

앵그리팡

블록선택

O

O

X

블록이동

X

X

O

파이어팡

X

O

O

랜덤팡

X

X

XX

앵그리팡

X

X

O

피버팡

X

X

O

필드배열

X

X

O

블록을 이동시켜 터질 때

O : 터진다.
다.

X : 영향을 주지 않는다.

XX : 터지지만 일반블록으로 취급한

앵그리팡이 터질 때,

피버팡이 터질 때,
필드생성으로 터질 때
앵그리팡을 검사한다
자세한 건,

218

• 앵그리팡에서…
파이어팡

랜덤팡

앵그리팡

피버모드

라스트팡

점수
랜덤팡

219
생성 조건

221

• 같은 블록 5개 배열
생성 조건 1

222

블록이동으로
생성 조건

223

• 혹은
생성 조건 2

224

빈칸채움으로
생성 조건 2

225

생성
그러면,

226

• 랜덤팡 생성 위치는?
생성 조건 1

227

블록이동으로
생성 조건 1

228

이동한 블록의 좌표
(y,x)
생성 조건 2

229

자동생성은
첫번째,

230

아래
두번째,

231

왼쪽
파이어팡
생성

빈칸채움

검사

랜덤팡
생성
지울게 있음

블럭지움

없음

이동/선택

있음

검사

움직일게 없음

블럭생성
검사

이동/선택

없음

지울게 있음

블록지움

파이어팡
생성

빈칸채움

랜덤팡
생성
랜덤팡 생성

234

• 랜덤팡을 생성한다.
• 생성방법
블록이동이나 빈칸채움으로 5개 이상의 같은 블록이 한 번에 터지
는 경우 랜덤팡을 생성한다.

• 생성위치

정의

1. 모든 “블록지움”과 “빈칸채움” 단계의 사이에 “랜덤팡생성”
단계를 실행한다.
2. 블록이동으로 생성될 경우, 선택하여 움직인 블록의 최종 위치
(y,x)에 랜덤팡이 생성된다.
3. 빈칸채움으로 생성될 경우, 블록생성 순으로 빈칸을 검사하여
높은 행에, 같은 행이라면 낮은 열에 랜덤팡을 생성한다.
4. 랜덤팡을 생성한다는 것은 셀의 sp값을 R로 하고, 해당 캐릭터
블록이 위치를 차지하는 것을 의미한다.

5. 랜덤팡이 생성되면, randomcount = randomcount + 1로 한다.
(최초, randomcount = 0)
이어서,

235

• 랜덤팡 사용
랜덤팡을 사용하면,

236

7종의 기본 캐릭터
중
랜덤으로
한 개의 캐릭터 결정
모두 삭제

237
랜덤팡 사용 시,

238

팡종류

파이어팡

랜덤팡

앵그리팡

블록선택

O

O

X

블록이동

X

X

O

파이어팡

X

O

O

랜덤팡

X

X

XX

앵그리팡

X

X

O

피버팡

X

X

O

필드배열

X

X

O

O : 터진다.
다.

X : 영향을 주지 않는다.

XX : 터지지만 일반블록으로 취급한

고려 대상 없
음
랜덤팡 사용

239

• 랜덤팡을 사용한다.
• 사용방법
이동/선택 단계에서 랜덤팡을 선택하면 랜덤팡이 사용된다.

• 터지는 범위

정의

1. randomtemp메모리에 chr값 chrR을 저장한다. R = random(1,7)
로 한다.
2. 필드 전체를 검사하여 셀 값이 randomtemp와 같을 경우 해당
셀을 삭제대상으로 추가한다. (최초, 랜덤팡의 셀이 삭제대상)
3. 삭제대상을 삭제한다.
• randomcount
randomcount = randomcount – 1 로한다. randomcount의 값이 0
이하로 내려가면 그 값은 0으로 한다.
파이어팡

랜덤팡

앵그리팡

피버모드

라스트팡

점수
앵그리팡의 생성 조건

• 랜덤팡과 같다

241
파이어팡
생성

빈칸채움

검사

랜덤팡
생성

앵그리팡
생성

지울게 있음

블럭지움

없음

이동/선택

있음

검사

움직일게 없음

블럭생성
검사

이동/선택

없음

지울게 있음

블록지움

파이어팡
생성

빈칸채움

랜덤팡
생성

앵그리팡
생성
다만,

244

• 4개의 블록이 터지면 앵그리팡
앵그리팡 생성

245

• 앵그리팡을 생성한다.
• 생성방법
블록이동이나 빈칸채움으로 4개 이상의 같은 블록이 한 번에 터지
는 경우 앵그리팡을 생성한다.

정의

• 생성위치
1. 모든 “블록지움”과 “빈칸채움” 단계의 사이에 “앵그리팡생성”
단계를 실행한다.
2. 블록이동으로 생성될 경우, 선택하여 움직인 블록의 최종 위치
(y,x)에 앵그리팡이 생성된다.
3. 빈칸채움으로 생성될 경우, 블록생성 순으로 빈칸을 검사하여
높은 행에, 같은 행이라면 낮은 열에 앵그리팡을 생성한다.
4. 랜덤팡을 생성한다는 것은 셀의 sp값을 A로 하고, 해당 캐릭터
블록이 위치를 차지하는 것을 의미한다.
그런데,

246

• 4개나 5개가 터지는 걸 어떻게 알 수 있을까?
블록 이동으로 터트릴 때

• 팡체크 패턴으로 알 수 있다

247
팡체크

248

4개

5개 이상
팡체크 시 해당 패턴이 실행되면,

• 랜덤팡 혹은 앵그리팡 생성 실행

249
그 외 팡체크

250

(y-1,x)
(y,x-1) (y,x) (y,x+1)
(y+1,x)

• 왼쪽팡체크와 같은 순서를 따른다

• inttemp2의 값은 상, 하, 좌, 우 에 따라 (y-1,x), (y+1,x), (y,x-1),
(y,x+1)의 chr값이다.

정의

• 12개의 패턴 모양 은 위쪽팡체크 시 시계방향으로 90 ˚ 회전, 아래쪽팡체크 시
시계반대방향으로 90 ˚ 회전, 오른쪽팡체크 시
180˚ 회전한 모양으로 한다. (팡체크2 는 그 모양을 다시 180˚회전)

• 삭제대상이 있으면 “지움”단계로 들어간다. 삭제대상이 없으면
이동/선택단계로 돌아가고, 이동한 블록을 다시 돌려 놓는다.
• 빨간 테두리의 패턴이 실행되면, 4개는 angryvalue = true, 5개는
randomvalue = true로 한다. (두 값 모두 최초, false)
앵그리팡 생성

251

• 앵그리팡을 생성한다.
• 생성방법
angryvalue = true이면, 다음의 위치에 앵그리팡을 생성하고,
angryvalue 를 false로 한다. angryvalue = false이면, 앵그리팡을
생성하지 않는다.

정의

• 생성위치
1. 모든 “블록지움”과 “빈칸채움” 단계의 사이에 “앵그리팡생성”
단계를 실행한다.

2. 블록이동으로 생성될 경우, 선택하여 움직인 블록의 최종 위치
(y,x)에 앵그리팡이 생성된다.
3. 빈칸채움으로 생성될 경우, 블록생성 순으로 빈칸을 검사하여
높은 행에, 같은 행이라면 낮은 열에 앵그리팡을 생성한다.
4. 랜덤팡을 생성한다는 것은 셀의 sp값을 A로 하고, 해당 캐릭터
블록이 위치를 차지하는 것을 의미한다.
랜덤팡 생성

252

• 랜덤팡을 생성한다.
• 생성방법
randomvalue = true이면, 다음의 위치에 랜덤팡을 생성하고,
randomvalue 를 false로 한다. randomvalue = false이면, 랜덤팡을 생
성하지 않는다.
• 생성위치

정의

1. 모든 “블록지움”과 “빈칸채움” 단계의 사이에 “랜덤팡생성”
단계를 실행한다.
2. 블록이동으로 생성될 경우, 선택하여 움직인 블록의 최종 위치 (y,x)
에 랜덤팡이 생성된다.
3. 빈칸채움으로 생성될 경우, 블록생성 순으로 빈칸을 검사하여 높은
행에, 같은 행이라면 낮은 열에 랜덤팡을 생성한다.
4. 랜덤팡을 생성한다는 것은 셀의 sp값을 R로 하고, 해당 캐릭터 블록
이 위치를 차지하는 것을 의미한다.

5. 랜덤팡이 생성되면, randomcount = randomcount + 1로 한다. (최초,
randomcount = 0)
자동 생성 시에는?

• 블록을 개수

253
상하좌우검사가 끝나면,

선택된 범위 내
(y,x)

셀의 수를 검사

254
상하좌우검사

255

• 터트릴 블록의 상하좌우를 검사하여 터트릴 범위를 추가/확정한
다.
• 검사방법
1. “위쪽검사” 실행

2. “왼쪽검사” 실행

정의

3. “아래쪽검사” 실행
4. “오른쪽검사” 실행
5. rngcrsA의 범위 내 셀을 검사하여 그 수가 4개 라면, angryvalue
= true로 하고, 5개 이상이라면, randomvalue = true로 한다.
6. rngcrsA의 값을 “삭제대상”으로 한다.
7. “블록지움” 실행한다. “Loopvalue”의 값을 true로 한다.
8. 해당 rngcrsA 값을 초기화한다.
다시 돌아가서

• 앵그리팡 사용

256
앵그리팡은

257

딱히 사용 방법 없음

앵그리팡인데 웃고 있다.
앵그리팡에서 스마일팡으로 컨셉을 바꾸었지만, 선데이
토즈에서 공식적으로 명칭을 바꾸지 않았다.
앵그리팡을 포함하여 터트리면,

258

앵그리팡을 중심으로
3x3칸 추가 터트림
엄밀히 말하면,

259

“삭제대상”에
3x3의 범위 추가
앵그리팡을 고려해야 하는 블록 지움들
팡종류

파이어팡

랜덤팡

앵그리팡

블록선택

O

O

X

블록이동

X

X

O

파이어팡

X

O

O

랜덤팡

X

X

XX

앵그리팡

X

X

O

피버팡

X

X

O

필드배열

X

X

O

260

O : 터진다.
다.

X : 영향을 주지 않는다.

XX : 터지지만 일반블록으로 취급한

랜덤팡을 제외하고

모두 앵그리팡을 고려
정리하면, 앵그리팡은

• 사용할 수 없고, 지워지면 3x3추가 터트림

261
즉,

262

• 범위추가만 존재
앵그리팡 사용

263

• 블록이 지워 질 때 앵그리팡의 삭제 범위를 추가한다.
• 사용방법
블록이 지워 질 때 “삭제대상”의 범위를 검사하여 셀의 sp값이

A이면 아래의 앵그리팡의 “범위”를 추가한다.

정의

• 터지는 범위
1. 셀의 sp값이 A인 셀의 좌표(y,x)를 중심으로 (y-1,x-1), (y-1,x),

(y-1,x+1), (y,x-1), (y,x+1), (y+1,x-1), (y+1,x), (y+1,x+1)을 “삭제대
상”에 추가한다.
2. 1.에서 갱신된 삭제대상의 범위를 다시 검사하여 셀의 sp값이 A
이면 1.부터 반복한다. 갱신된 삭제대상의 모든 셀의 sp값을 검사
하여 A가 없을 때까지 반복한다.
파이어팡을 터트려 보자

264
팡팡팡

265

삭제
랜덤팡, 앵그리팡 추가 삭제

잘 돌아간다

266
그러나

267

• 문제점
앵그리팡을 터트리자

268
앵그리팡을 터트리자

269

여기있던 파이어팡
이??
파이어팡은

270

팡종류

파이어팡

랜덤팡

앵그리팡

블록선택

O

O

X

블록이동

X

X

O

파이어팡

X

O

O

랜덤팡

X

X

XX

앵그리팡

X

X

O

피버팡

X

X

O

필드배열

X

X

O

O : 터진다.
다.

X : 영향을 주지 않는다.

XX : 터지지만 일반블록으로 취급한

앵그리팡에 의해

지워지지 않는다
그러므로

271

“삭제대상”에서
파이어팡 제외
덤으로

272

팡종류

파이어팡

랜덤팡

앵그리팡

블록선택

O

O

X

블록이동

X

X

O

파이어팡

X

O

O

랜덤팡

X

X

XX

앵그리팡

X

X

O

피버팡

X

X

O

필드배열

X

X

O

O : 터진다.
다.

X : 영향을 주지 않는다.

XX : 터지지만 일반블록으로 취급한

랜덤팡도 제외
이제…

273

• 잘 되겠지?
팡팡팡

274

삭제
어라?

275

랜덤팡이
안지워진다
왜?

276

• “삭제대상”에서 제외 되었기 때
문
“삭제대상”에서 제외하는 것이 아니라,

277

애초에 “삭제대상”으로
추가하지 않아야 한다
앵그리팡의 범위 추가 시

278

범위 내 셀의 sp값을 검사

파이어팡, 랜덤팡 대상 제외
설정된 범위를

279

“삭제대상”으로 추가
이 내용을

280

• 모든 특수 팡에 적용
앵그리팡은

281

팡종류

파이어팡

랜덤팡

앵그리팡

블록선택

O

O

X

블록이동

X

X

O

파이어팡

X

O

O

랜덤팡

X

X

XX

앵그리팡

X

X

O

피버팡

X

X

O

필드배열

X

X

O

O : 터진다.
다.

X : 영향을 주지 않는다.

XX : 터지지만 일반블록으로 취급한

파이어팡 제외
랜덤팡 제외
파이어팡은

282

팡종류

파이어팡

랜덤팡

앵그리팡

블록선택

O

O

X

블록이동

X

X

O

파이어팡

X

O

O

랜덤팡

X

X

XX

앵그리팡

X

X

O

피버팡

X

X

O

필드배열

X

X

O

O : 터진다.
다.

X : 영향을 주지 않는다.

XX : 터지지만 일반블록으로 취급한

파이어팡만 제
외
피버모드는

283

팡종류

파이어팡

랜덤팡

앵그리팡

블록선택

O

O

X

블록이동

X

X

O

파이어팡

X

O

O

랜덤팡

X

X

XX

앵그리팡

X

X

O

피버팡

X

X

O

필드배열

X

X

O

O : 터진다.
다.

X : 영향을 주지 않는다.

XX : 터지지만 일반블록으로 취급한

파이어팡 제외
랜덤팡 제외
그러므로

284

• 내용을 수정하면
앵그리팡 사용

285

• 블록이 지워 질 때 앵그리팡의 삭제 범위를 추가한다.
• 사용방법
블록이 지워 질 때 “삭제대상”의 범위를 검사하여 셀의 sp값이
A이면 아래의 앵그리팡의 “범위”를 추가한다.

정의

• 터지는 범위
1. 셀의 sp값이 A인 셀의 좌표(y,x)를 중심으로 (y-1,x-1), (y-1,x),
(y-1,x+1), (y,x-1), (y,x+1), (y+1,x-1), (y+1,x), (y+1,x+1)의 sp값을
검사하여 값이 존재하지 않을 경우에만 해당 셀을 “삭제대상”에 추
가한다.
2. 1.에서 갱신된 삭제대상의 범위를 다시 검사하여 셀의 sp값이 A
이면 1.부터 반복한다. 갱신된 삭제대상의 모든 셀의 sp값을 검사
하여 A가 없을 때까지 반복한다.
파이어팡 사용

286

• 파이어팡을 사용한다.
• 사용방법
이동/선택 단계에서 파이어팡을 선택하면 파이어팡이 사용된다.

• 터지는 범위

정의

선택한 파이어팡의 좌표는 (y,x). (2,x)부터 (7,x)까지, (8,2)부터 (8,8)
까지의 범위중 각 셀의 sp값을 검사하여 그 값이 “bomb”가 아니면
해당 셀을 “삭제대상”으로 한다. 삭제대상 전체를 검사하여, 셀의
sp값이 “R”이면 “랜덤팡의 범위”를 삭제대상에 추가한다. Sp값이
“A”이면 “앵그리팡의 범위”를 삭제대상에 추가한다. 검사가 끝나면,
삭제대상을 삭제한다.
• bombcount
bombcount = bombcount – 1 로한다. bombcount의 값이 0이하로
내려가면 그 값은 0으로 한다.
피버모드는

287

• 나중에…
특수 팡의 마지막 내용

• sp값?

288
Chr값이 아니라

• sp값인 이유?

289
만약 앵그리팡의 chr값이 A라면,

290
만약 앵그리팡의 chr값이 A라면,

291

3개의 토끼가 배열
그러나 터지지 않음
chr4
chr4
A

값이 다르기 때문
그렇기 때문에 앵그리팡은

• 기본 블록의 역할을 하면서도
• 기본 블록과 구분할 수 있는 값 필요

292
그것이 바로

293

• sp값
이것으로

294

• 특수팡 파트 완료
파이어팡

랜덤팡

앵그리팡

피버모드

라스트팡

점수
피버모드

296

피버모드에선

더 많이 터진다
피버모드의 원리

• 블록이 하나 터지면,
• 상하좌우의 블록이 같이 터진다

297
3개가 터지면,

298

주황색이 추가 범위
단, 이동시킨 블록이 터질때만 적용
피버모드 발동 조건

• 피버모드가 아닌 상태에서
• 연속으로 5콤보 달성

299
즉,

300

• 피버모드의 생성 단계는

• 콤보를 카운트 하는
검사

이동/선택

없음

지울게 있음

블록지움

빈칸채움
블록을 지운 후

• 콤보를 카운트 할 때

302
또한,

303

• 콤보와 개별적으로
• 피버카운트 개수
- 피버모드가 아닌 상태에서의 콤보 수
콤보

304
• 일정 조건을 만족하면 콤보가 생성되고 콤보가 높을 수록 더 높은 점수를 얻는다.
• 콤보생성조건
직접움직인 블록이 터지거나, 랜덤팡, 파이어팡을 사용하면 “combocount” 메모리의 값을 1
추가한다. (최초 combocount =0) combocount가 1이상이면 콤보가 활성화 되고
combotime이 3으로 설정되어 1초에 1씩 줄어든다.
• fevercount
1. combocount가 1추가 될 때 마다, fevercount = fevercount + 1로 한다.

정의

(최초, fevercount = 0)
2. fevercount가 5가 되면 fevervalue = true 로 하고 fevercount = 0으로 한다. fevervalue가
true인 동안 fevercount는 0으로 값이 고정된다.
• 콤보가능시간
Combocount가 1이상일 때 추가없이 combotime이 0이 되면, combocount는 0으로 초기화
되고 combotime은 비활성화된다. 피버모드를 활성화시킬 때마다 combotime의 최대값은
0.5초씩 줄어든다. Combotime의 최대값이 1.5초가 되면 더이상 줄어들지 않는다.
• 콤보시간연장

파이어팡이나 랜덤팡을 사용하면 애니메이션이 끝날 때까지(2초) combotime의 값은 고정
되어 변하지 않는다.
블록지움

305

• fevervalue = false 일 때
“삭제대상”내 셀의 chr값과 sp값을 “none”으로 변경하며 0.5초 동
안 삭제될 때 나타나는 애니메이션이 나온다. (블록채움시간 0.5초)

• fevervalue = true 일 때

정의

1. “삭제대상”의 범위 내 임의의 셀(y,x)에 대하여 (y,x)를 중심으로
(y-1,x), (y,x-1), (y,x+1), (y+1,x) 각 네 개의 셀의 sp값을 검사하여
값이 존재하지 않을 경우에만 해당 셀을 “삭제대상”에 추가한다.
2. “삭제대상”내 셀의 chr값과 sp값을 “none”으로 변경하며 0.5초
동안 삭제될 때 나타나는 애니메이션이 나온다. (블록채움시간 0.5
초)
피버모드

306

• fevervalue가 true이면 피버모드가 활성화된 것으로 한다.
• fevertime
피버모드는 4초 동안 유지된다.

정의

1. 피버모드가 활성화되면, fevertime = 4로 되고, 1초마다
fevertime = fevertime – 1 로 한다.
2. 1.을 반복하여 fevertime = 0이 되면 피버모드는 불활성화되며,
fevervalue = false로 한다.
• 피버모드가 활성화된 동안에는 반짝이는 이펙트를 추가한다.
파이어팡

랜덤팡

앵그리팡

피버모드

라스트팡

점수
라스트팡

• 유일하게 게임이 끝나고 실행

308
실행

게임시간

필드생성

<0

블럭생성

종료

이동/선택

라스트팡
게임이 끝나면, 조작은 불가능 하지만…

310

남아 있는
폭탄,
앵그리팡,
랜덤팡이 터진다.
덤으로 빈칸이 채워지며 터지
는 체인도 있다.
게임은 끝났지만,

• 마지막 콤보가 적용되어 점수 계산

311
그외

312

• 특이사항 없음
라스트팡

313

• 라스트팡

게임 종료 후, 남아있는 파이어팡, 랜덤팡, 앵그리팡을 사용한다.

정의

• 방법
블록생성 순서대로 임의의 셀(y,x)을 검사하여, 해당 셀의 sp값이
“A” 혹은 “R” 혹은 “bomb”라면, 각각 “앵그리팡사용”, “랜덤팡사용”,
“파이어팡사용”을 실행하고, “삭제대상”을 삭제한다.
파이어팡

랜덤팡

앵그리팡

피버모드

라스트팡

점수
애니팡의 주요 시스템

315

게임의 목적이자 보
상
무엇이든

316

• 터지면 점수를 얻는다
3칸이 터지면

317

250점
폭탄이 터지면

318

5250점
콤보에 따라

319

• 점수가 다름
3칸이 터지면

320

20콤보 이상
4000점
폭탄이 터지면

321

20콤보 이상
35250점
이 외에

322

• 정식으로 공개된 자료 없음
- 거의 없음
또한, 실제모니터링 결과

• 애니팡 점수 계산에도 버그발견
- 상당히 많다

323
결국

324

• 똑같이는 구현하지 못했다
그래서

325

• 알려진 데이터를 기반으로
• 임의로 점수 테이블을 만들었다
점수 테이블

326

유형
3개

1

2

3

4

5

6

7

8

9

10

250

450

550

650

750

850

950

1050

1200

1400

4개
5개

500

900

1000

1300

1500

1700

1900

2100

2400

2800

1000

1800

2000

2600

3000

3400

3800

4200

4800

5600

6개
7개

1000

1800

2000

2600

3000

3400

3800

4200

4800

5600

5000

9000

10000

13000

15000

17000

19000

21000

24000

28000

폭탄

5250

6850

7650

8450

9250

10050

10850

11650

12450

13250

랜덤

4000

5000

5500

6000

6500

7000

7500

8000

8500

9000

앵그리팡

1000

1000

1000

1000

1000

1000

1000

1000

1000

1000

피버팡

1550

1700

1900

2100

2300

2550

2900

2950

3100

3500

필드체인

4500

5000

5000

5000

5000

5000

5000

5000

5000

5000

유형
3개

11

12

13

14

15

16

17

18

19

20

20+

1650

1800

2000

2200

2400

2600

2800

3150

3500

4000

4000

4개
5개

3300

3600

4000

4400

4800

5200

5600

6300

7000

8000

8000

6600

7200

8000

8800

9600

10400

11200

12600

14000

16000

16000

6개
7개

6600

7200

8000

8800

9600

10400

11200

12600

14000

16000

16000

33000

36000

40000

44000

48000

52000

56000

63000

70000

80000

80000

폭탄

14450

15650

16850

18850

20850

22850

25650

28450

31250

35250

35250

랜덤

10000

11000

12000

14000

16000

18000

21000

24000

27000

31000

31000

앵그리팡

1000

1000

1000

1000

1000

1000

1000

1000

1000

1000

1000

피버팡

3700

3800

4150

4500

5000

6000

6800

7500

7800

9200

9200

필드체인

5000

5000

5000

5000

5000

5000

5000

5000

5000

5000

5000
주황색은 확실한 데이터

327

유형
3개

1

2

3

4

5

6

7

8

9

10

250

450

550

650

750

850

950

1050

1200

1400

4개
5개

500

900

1000

1300

1500

1700

1900

2100

2400

2800

1000

1800

2000

2600

3000

3400

3800

4200

4800

5600

6개
7개

1000

1800

2000

2600

3000

3400

3800

4200

4800

5600

5000

9000

10000

13000

15000

17000

19000

21000

24000

28000

폭탄

5250

6850

7650

8450

9250

10050

10850

11650

12450

13250

랜덤

4000

5000

5500

6000

6500

7000

7500

8000

8500

9000

앵그리팡

1000

1000

1000

1000

1000

1000

1000

1000

1000

1000

피버팡

1550

1700

1900

2100

2300

2550

2900

2950

3100

3500

필드체인

4500

5000

5000

5000

5000

5000

5000

5000

5000

5000

유형
3개

11

12

13

14

15

16

17

18

19

20

20+

1650

1800

2000

2200

2400

2600

2800

3150

3500

4000

4000

4개
5개

3300

3600

4000

4400

4800

5200

5600

6300

7000

8000

8000

6600

7200

8000

8800

9600

10400

11200

12600

14000

16000

16000

6개
7개

6600

7200

8000

8800

9600

10400

11200

12600

14000

16000

16000

33000

36000

40000

44000

48000

52000

56000

63000

70000

80000

80000

폭탄

14450

15650

16850

18850

20850

22850

25650

28450

31250

35250

35250

랜덤

10000

11000

12000

14000

16000

18000

21000

24000

27000

31000

31000

앵그리팡

1000

1000

1000

1000

1000

1000

1000

1000

1000

1000

1000

피버팡

3700

3800

4150

4500

5000

6000

6800

7500

7800

9200

9200

필드체인

5000

5000

5000

5000

5000

5000

5000

5000

5000

5000

5000
이 점수를

328

• 어떻게 적용할까?
검사단계와 지움단계 사이

• “삭제대상” 생성 시 실행

329
검사

이동/선택

없음

지울게 있음

점수

블록지움

빈칸채움
빈칸채움
검사

지울게 있음

블럭지움
점수

없음

이동/선택

있음

검사

움직일게 없음

블럭생성
왼쪽팡체크2

332

(y-2,x-1) (y-2,x)
(y-1,x-1) (y-1,x)
(y,x-3)

(y,x-2)

(y,x-1)

(y,x)

(y,x+2) (y,x+3)

(y+1,x-1) (y+1,x)
(y+2,x-1) (y+2,x)

• 왼쪽팡체크1이 끝난 다음 실행한다.
• 회색의 범위 내 모든 블록의 chr값을 검사한다.
• 위의 12개의 패턴 모양 대로 inttemp1과 패턴 범위 내 블록들의

정의

Chr값을 비교하여 값이 모두 참이면 그 블록을 „삭제대상‟으로 추가한다.(단, 12개의패턴 모양은
180˚ 회전한 모양)
• 삭제대상으로 추가한 패턴 모양의 블록 수가 7개 이면, comboscore_7line, 6개는
comboscore_6line, 5개는 comboscore_5line, 4개는 comboscore_4line, 3개는 comboscore_3line
을 실행시킨다.
• 삭제대상이 있으면 “지움”단계로 들어간다. 삭제대상이 없으면
이동/선택단계로 돌아가고, 이동한 블록을 다시 돌려 놓는다.
그 외 팡체크

333

(y-1,x)
(y,x-1) (y,x) (y,x+1)
(y+1,x)

• 왼쪽팡체크와 같은 순서를 따른다

• inttemp2의 값은 상, 하, 좌, 우 에 따라 (y-1,x), (y+1,x), (y,x-1),
(y,x+1)의 chr값이다.

정의

• 12개의 패턴 모양 은 위쪽팡체크 시 시계방향으로 90 ˚ 회전, 아래쪽팡체크 시 시계반대방향으
로 90 ˚ 회전, 오른쪽팡체크 시
180˚ 회전한 모양으로 한다. (팡체크2 는 그 모양을 다시 180˚회전)
• 삭제대상으로 추가한 패턴 모양의 블록 수가 7개 이면, comboscore_7line, 6개는
comboscore_6line, 5개는 comboscore_5line, 4개는 comboscore_4line, 3개는 comboscore_3line
을 실행시킨다.
• 삭제대상이 있으면 “지움”단계로 들어간다. 삭제대상이 없으면
이동/선택단계로 돌아가고, 이동한 블록을 다시 돌려 놓는다.
상하좌우검사

334

• 터트릴 블록의 상하좌우를 검사하여 터트릴 범위를 추가/확정한
다.
• 검사방법
1. “위쪽검사” 실행

2. “왼쪽검사” 실행
3. “아래쪽검사” 실행

정의

4. “오른쪽검사” 실행
5. rngcrsA의 범위 내 셀을 검사하여 그 수가 4개 라면, angryvalue
= true로 하고, 5개 이상이라면, randomvalue = true로 한다.
6. rngcrsA의 값을 “삭제대상”으로 한다.
7. fldchain = fldchain + 1로 한다. (최초, fldchain = 0)
8. comboscore_fld를 실행시킨다.
9. “블록지움” 실행한다. “Loopvalue”의 값을 true로 한다.

10. 해당 rngcrsA 값을 초기화한다.
앵그리팡 사용

335

• 블록이 지워 질 때 앵그리팡의 삭제 범위를 추가한다.
• 사용방법
블록이 지워 질 때 “삭제대상”의 범위를 검사하여 셀의 sp값이
A이면 아래의 앵그리팡의 “범위”를 추가한다.

정의

• 터지는 범위
1. 셀의 sp값이 A인 셀의 좌표(y,x)를 중심으로 (y-1,x-1), (y-1,x),
(y-1,x+1), (y,x-1), (y,x+1), (y+1,x-1), (y+1,x), (y+1,x+1)의 sp값을
검사하여 값이 존재하지 않을 경우에만 해당 셀을 “삭제대상”에 추
가한다. Comboscore_angry를 실행한다.
2. 1.에서 갱신된 삭제대상의 범위를 다시 검사하여 셀의 sp값이 A
이면 1.부터 반복한다. 갱신된 삭제대상의 모든 셀의 sp값을 검사
하여 A가 없을 때까지 반복한다.
블록지움

336

• fevervalue = false 일 때
“삭제대상”내 셀의 chr값과 sp값을 “none”으로 변경하며 0.5초 동
안 삭제될 때 나타나는 애니메이션이 나온다. (블록채움시간 0.5초)
• fevervalue = true 일 때

정의

1. “삭제대상”의 범위 내 임의의 셀(y,x)에 대하여 (y,x)를 중심으로
(y-1,x), (y,x-1), (y,x+1), (y+1,x) 각 네 개의 셀의 sp값을 검사하여
값이 존재하지 않을 경우에만 해당 셀을 “삭제대상”에 추가한다.
Comboscore_fever를 실행한다.
2. “삭제대상”내 셀의 chr값과 sp값을 “none”으로 변경하며 0.5초
동안 삭제될 때 나타나는 애니메이션이 나온다. (블록채움시간 0.5
초)
폭탄,랜덤팡은

337

• 사용할 때
실행

게임시간

필드생성

<0

블록생성

종료

이동/선택
블록 선택/이동 정의

339

• 기본 블록을 선택하여 이동시킨다.
• ( y, x ) 의 블 록 을 선 택 하 면 해 당 블 록 의 모 습 이 변 하 여
다른 블록들과 구분할 수 있으며, 이동가능한 상태가 된다. (단,
특수 블록은 예외. 특수블록 파트에서 다룸.)
• (y-1,x), (y+1,x), (y,x-1), (y,x+1) 중 하나를 선택할 수 있으며,

정의

하나를 선택하면 그 셀의 chr값과 (y,x)의 chr값이 뒤바뀐다.
• 이동 후 3개가 연달아 배열되었는지를 검사하여 검사 값이 거짓이면 블록이
이동하기 전으로 되돌아간다. 되돌아가기 까지 1초 정도의 시간이 걸리기 때문
에 콤보를 잇는데 큰 방해 요소가 된다.
•랜덤팡, 파이어팡
선택한 블록의 sp값이 “R”이면 “랜덤팡사용”을 실행시키고,
comboscore_random을 실행시킨다. “bomb”이면 “파이어팡사용”을 실행시키고,
comboscore_bomb를 실행시킨다.
점수

340
• 블록이 터지면 점수를 추가한다.

• comboscore_3line
점수테이블의 유형 “3개” 행 combocount 열에 따라 점수를 추가한다.
• comboscore_4line
점수테이블의 유형 “4개” 행 combocount 열에 따라 점수를 추가한다.
• comboscore_5line
점수테이블의 유형 “5개” 행 combocount 열에 따라 점수를 추가한다.

• comboscore_6line
점수테이블의 유형 “6개” 행 combocount 열에 따라 점수를 추가한다.

정의

• comboscore_7line
점수테이블의 유형 “7개” 행 combocount 열에 따라 점수를 추가한다.
• comboscore_bomb
점수테이블의 유형 “폭탄” 행 combocount 열에 따라 점수를 추가한다.

• comboscore_random
점수테이블의 유형 “랜덤” 행 combocount 열에 따라 점수를 추가한다.
• comboscore_angry
Comboscore = comboscore + 1000로 한다.
• comboscore_fever
점수테이블의 유형 “피버팡” 행 combocount 열에 따라 점수를 추가한다.

• comboscore_fld
점수테이블의 유형 “필드체인” 행 fldchain 열에 따라 점수를 추가한다.
역기획 분석
게 임 기 획

지 원

포 트 폴 리 오
처음의 의도

342

• 똑같이 만들자
만들어 진 것은

• …….

343
주요 차이점1

• 점수 시스템

344
점수 파트에서 다룬대로

• 모니터링하여 점수를
파악하는데는 한계가 있었고
- 터지는 블록이 너무 많아 세기도 힘들다…

345
그 외에도

• vba로 만든 역기획과 애니팡과
의 난이도 차로 점수 차이가 있다

346
주요 차이점2

• 난이도

347
이미 다룬

348

• 블록 모양과 색
난이도 비교 분석

349

블록 사이의 검은색 배경은
또 하나의 색으로 인식되어
기억할 수 있는 블록 수를 줄
임
사실 두개의 색 남색,검은색

캐릭터는 여러가지 색으로
구성되어 있어
블록의 인지 방해
그 외에 색깔 톤 등 여러 요인 작용
그 외에도

350

• 조작의 문제도 있다
- 터치와 키보드
주요 차이점3

• 시스템 상 문제

351
애니팡은

352

블록이 터지는 중에도
다른 블록의 이동이 가능하다
그러나 VBA에서는

• 불가능하다

353
예를들어

354

• 블록을 이동시키면
빈칸채움이 완료될 때까지
행동 불가
실행

게임시간

필드생성

<0

블록생성

종료

이동/선택
검사

이동/선택

없음

지울게 있음

블록지움

빈칸채움
빈칸채움
검사

지울게 있음

블럭지움

없음

이동/선택

있음

검사

움직일게 없음

블럭생성
이제야

358

• 이동/선택 가능
결과적으로, VBA역기획은

• 기다리는 시간이 증가

359
이것이 미치는 영향 2가지

• 난이도 하락
• 플레이 시간 감소

360
난이도 하락

361

애니팡의 경우,

블록을 터트리면
이펙트가 끝나기 전에
다음 블록을 찾아야
콤보가 이어진다
그러나 VBA역기획은

• 다음 블록을 찾을 시간이
• 충분하므로
• 긴박함이 없다

362
또한, 시간이 충분하다는 것은

• 블록을 움직일 시간 보다는
• 기다리는 시간이 많다는 것이므로

• 움직일 수 있는 총 블록 양 감소
- 점수 하락

363
그래서 생각한 것

• 최대한 애니팡의 요소를 살려보자

364
첫째, 긴박함

365

찾을 시간이 많은 대신
다음 블록을 움직일 시간을
적게 준다
실험을 거쳐

366

• 정한 시간 4초
- 애니팡의 3초보다 길지만,
방향키로 이동해야 하기 때문
에 4초가 적절했다.
결과

367

• 그래도 쉽다
그래서 생각한 것

368

• 팡가능 블록을 줄이자

팡불가블록
그 결과

369

• 어려워 졌다
- 바로 바로 찾아내지 못하면
콤보가 끊길 정도의 난이도
난이도

370

• 해결
둘째, 플레이시간

애니팡의 묘미는 20콤보 유지
…

- 하지만 VBA역기획에서는 20콤보에 도달할 때 쯤이면

371
플레이시간이 짧아지면

• 콤보, 점수 시스템을 충분히 활용할 수 없
다

372
그래서 간단하게

• 시간을 늘림

373
120초

374

• 점수는 비슷하게 나온다

• 하지만, 지루하다
- 너무 길다
90초로 수정

• 점수는 낮게 나오지만
• 20콤보 이상을 충분히 활용 가능

375
그래서

376

• 90초로 결정
난이도 문제

377

• 해결 완료
마지막으로

378

• 애니팡은 반드시 터질 것이 있다

팡가능검사
마지막으로

• VBA역기획은 터질 것이 없을 때도 있다

379
사실은

애니팡도 움직일 게 없을 때가 많
다

380
그러므로

381

• 패스
이로써

382

• 역기획 분석 종료
추가 콘텐츠
게 임 기 획

지 원

포 트 폴 리 오
애니팡을 하면서 아쉬웠던 점

• 안터지는 블록끼리 뭉쳐있을 때

384
아래 5칸

385

터트릴 게 없다
위에 채워지는 것들로만 터트릴 수 있다
랜덤한 요소때문에

• 게임이 지루해질 수 있다

386
그래서

387

• 생각해 낸 요소
바로

388

마그넷
두 곳에 마그넷이 생성되면

• 생각해 낸 요소

389
두 곳에 마그넷이 생성되면

• 생각해 낸 요소

390
두 곳에 마그넷이 생성되면

둘 사이 영역 터트
림

391
그럼

392

쓸모없는 영역이 갱신된
다
만약

393

• 다시 채워졌는데 또 움직일게 없다
면
- 번개폭탄 사용……. 비슷한 의도로 만들어졌을 수도
…….
어쨋든

394

• 어떻게 생성될까?
아이템 사용

역기획에서 아이템은 다루지 않았지만…

원하는 때 사용가능하
다

395
첫 번째 마그넷 생성

396

위의 마그넷을 터치하
고,
첫 번째 마그넷 생성

397

필드 중 하나의 블록 터
치
첫 번째 마그넷 생성

398

그럼 위의 마그넷이 사라지
고

해당 위치에 마그넷 생성
두 번째 마그넷 생성

399

블록을 맞춘
다
두 번째 마그넷 생성

400

그럼 해당 위치
에
마그넷 생성
두개의 마그넷이 생성되면

범위를 설정
후
해당 범위 삭
제

401
그러므로

402

• 정의는
마그넷 생성

403

• 마그넷팡을 생성한다

정의

• 방법
1. 게임을 시작하기 전에 마그넷팡을 구매한다.
2. 게임 도중 점수 옆의 마그넷팡아이콘을 클릭하면, magnetvalue1 = true,
magnetvalue2 = true, magnetvalue3 = true로 한다.
블록 선택/이동 정의

404

• 기본 블록을 선택하여 이동시킨다.
• magnetvalue1
Magnetvalue1 = true이면, 아래의 “블록 선택/이동”의 실행을 취소하고, 선택된 블록의 sp값을“M”
으로 한다. 선택된 셀의 좌표를 rngM1에 저장한다. Magnetvalue1 = false로 한다.(최초, rngM1 =
nothing, 셀의 sp값이 M이면 “마그넷팡”의 이미지로 바뀐다.)

• ( y, x ) 의 블 록 을 선 택 하 면 해 당 블 록 의 모 습 이 변 하 여

정의

다른 블록들과 구분할 수 있으며, 이동가능한 상태가 된다. (단, 특수 블록
은 예외. 특수블록 파트에서 다룸.)
• (y-1,x), (y+1,x), (y,x-1), (y,x+1) 중 하나를 선택할 수 있으며,
하나를 선택하면 그 셀의 chr값과 (y,x)의 chr값이 뒤바뀐다.
• 이동 후 3개가 연달아 배열되었는지를 검사하여 검사 값이 거짓이면 블록이 이동하기 전으로 되
돌아간다. 되돌아가기 까지 1초 정도의 시간이 걸리기 때문에 콤보를 잇는데 큰 방해 요소가 된다.
• 랜덤팡, 파이어팡
선택한 블록의 sp값이 “R”이면 “랜덤팡사용”을 실행시키고, comboscore_random을 실행시킨다.
“bomb”이면 “파이어팡사용”을 실행시키고, comboscore_bomb를 실행시킨다.
검사

이동/선택

없음

지울게 있음

파이어팡
생성

블록지움

랜덤팡
생성

빈칸채움

앵그리팡
생성

두번째
마그넷
생성
두번째마그넷생성

406

• 두번째 마그넷팡을 생성한다.

정의

• Magnetvalue2 = true이면, 커서가 위치한 좌표 (y,x)의 셀의 chr값이 none이고,
sp값이 none이면, 해당 셀의 sp값을 “M”으로 한다. (y,x)의 chr값이나 sp값이
none이 아닐 경우, 이동 전의 셀의 좌표(y,x)의 sp값을 “M”으로 한다. rngM2(최
초, nothing)에 최종(y,x)좌표를 저장한다. Magnetvalue2 = false로 한다.
(해당 셀에 랜덤팡이나, 앵그리팡이 있다면 생성되지 않고, 다음번에 생성된다.)
• “마그넷사용”을 실행한다.
마그넷 사용

407

• 마그넷팡을 사용한다.

정의

• magnetvalue3 = true이면, rngM1과 rngM2의 좌표 내 행과 열을 모두 선택한
다. 범위 내의 랜덤팡과 파이어팡은 “삭제대상‟에서 제외하고 앵그리팡은 해당
범위를 추가하여, 최종 “삭제대상”을 삭제한다. magnetvalue3 =false로 한다.
예상되는 장점

• 새로운 전략 구사 가능
- 원하는 때 사용 가능

• 운이 없을 때 구제 받을 수 있다
- 판이 안좋을 때

408
예상되는 단점

• 조작이 힘들다
- 3번의 조작이 필요. 콤보를 잇기 어려움.

• 재미를 해칠 수 있다
- 어떻게 될지는 미지수

409
추가 콘텐츠 생성

• 완료

410
이상으로

411

• 애니팡 역기획 완료
끝

412

감사합니다
배상욱
hzael@naver.com
게임기획 포트폴리오 애니팡역기획 배상욱
ㅓ 범위 내의 존재가능한 모든 패턴

ex1

블록 이동 시
터질 수 있는
모든 패턴
총 12개
원래 페이지
필드 중 빈칸 검사
.

ex2

.

.

48

49

6

7

none

8

9

.

.

.

1

2

3

4

5

순서대로 셀의 chr값을 검사
그 값이 “none”이면 다음 과정으로

원래 페이지
팡가능 블록 패턴
(y,
x)

(y,
x)

(y,
x)

(y,
x)

ex3

(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)
(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)
(y,
x)

(y,
x)

(y,
x)
(y,
x)

(y,
x)
(y,
x)

가로 총 24개
(세로 24개, 시계방향 90˚ 회전)

원래 페이지
팡가능 블록 패턴
(y,
x)

(y,
x)

(y,
x)

(y,
x)

ex4

(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)
(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)
(y,
x)

(y,
x)

(y,
x)
(y,
x)

(y,
x)
(y,
x)

가로 총 24개
(세로 24개, 시계방향 90˚ 회전)

원래 페이지
팡가능 블록 패턴
(y,
x)

(y,
x)

(y,
x)

(y,
x)

ex5

(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)
(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)
(y,
x)

(y,
x)

(y,
x)
(y,
x)

(y,
x)
(y,
x)

가로 총 24개
(세로 24개, 시계방향 90˚ 회전)

원래 페이지
우선은,

ex6

.

.

.

8

9

.

.

2

3

4

5

49

6

7

.

(y,x)

48

순서대로 세 칸씩 검
사
원래 페이지
이 외에도

ex7

(y,x)

(y,x)

(y,x)

(y,x)

(y,x)

(y,x)

(y,x)

(y,x)

(y,x)

이런 모양들을 검
사

원래 페이지
팡가능 블록 패턴
(y,
x)

(y,
x)

(y,
x)

(y,
x)

ex8

(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)
(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)

(y,
x)
(y,
x)

(y,
x)

(y,
x)
(y,
x)

(y,
x)
(y,
x)

가로 총 24개
(세로 24개, 시계방향 90˚ 회전)

원래 페이지
팡체크

ex9

4개

5개 이상

원래 페이지
팡불가블록 생성 방법

ex10

(y,
x)

원래 페이지
팡가능블록 생성 방법
(y,
x)

ex11

위의 패턴대로
셀의 chr값 검사

두 셀의 chr값은 모두 7
그러므로 (y,x)에
Chr7을 입력한다
원래 페이지
게임기획 포트폴리오 애니팡역기획 배상욱

Más contenido relacionado

La actualidad más candente

[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정강 민우
 
모바일 게임기획 따라하며 배우기
모바일 게임기획 따라하며 배우기모바일 게임기획 따라하며 배우기
모바일 게임기획 따라하며 배우기Sunnyrider
 
쩌는 게임 기획서, 이렇게 쓴다(How to write great design documents) from GDC 2008 (Korean)
쩌는 게임 기획서, 이렇게 쓴다(How to write great design documents) from GDC 2008 (Korean)쩌는 게임 기획서, 이렇게 쓴다(How to write great design documents) from GDC 2008 (Korean)
쩌는 게임 기획서, 이렇게 쓴다(How to write great design documents) from GDC 2008 (Korean)Kay Kim
 
게임 시스템 디자인 시작하기
게임 시스템 디자인 시작하기게임 시스템 디자인 시작하기
게임 시스템 디자인 시작하기ByungChun2
 
엄재민 Nhn과제 신규 게임 컨셉 제안서
엄재민 Nhn과제 신규 게임 컨셉 제안서엄재민 Nhn과제 신규 게임 컨셉 제안서
엄재민 Nhn과제 신규 게임 컨셉 제안서재민 엄
 
기획자의 포트폴리오는 어떻게 써야 할까
기획자의 포트폴리오는 어떻게 써야 할까기획자의 포트폴리오는 어떻게 써야 할까
기획자의 포트폴리오는 어떻게 써야 할까Han Je Sung
 
마이너리티 아레나 기본 전투 시스템 기획서
마이너리티 아레나 기본 전투 시스템 기획서마이너리티 아레나 기본 전투 시스템 기획서
마이너리티 아레나 기본 전투 시스템 기획서Nawe1
 
어서와 게임기획은 처음이지?
어서와 게임기획은 처음이지?어서와 게임기획은 처음이지?
어서와 게임기획은 처음이지?Lee Sangkyoon (Kay)
 
NDC2012_마비노기 영웅전 카이 포스트모템_시선을 사로잡는 캐릭터 카이 그 시도와 성공의 구현 일지
NDC2012_마비노기 영웅전 카이 포스트모템_시선을 사로잡는 캐릭터 카이 그 시도와 성공의 구현 일지NDC2012_마비노기 영웅전 카이 포스트모템_시선을 사로잡는 캐릭터 카이 그 시도와 성공의 구현 일지
NDC2012_마비노기 영웅전 카이 포스트모템_시선을 사로잡는 캐릭터 카이 그 시도와 성공의 구현 일지영준 박
 
[NDC 19] 시스템 기획서 잘 쓰는 법
[NDC 19] 시스템 기획서 잘 쓰는 법[NDC 19] 시스템 기획서 잘 쓰는 법
[NDC 19] 시스템 기획서 잘 쓰는 법Na Eun Lee
 
게임 개발 파이프라인과 시스템 기획(공개용)
게임 개발 파이프라인과 시스템 기획(공개용)게임 개발 파이프라인과 시스템 기획(공개용)
게임 개발 파이프라인과 시스템 기획(공개용)ChangHyun Won
 
NDC 2018 레벨 디자인 튜토리얼 Level Design Tutorial
NDC 2018 레벨 디자인 튜토리얼 Level Design TutorialNDC 2018 레벨 디자인 튜토리얼 Level Design Tutorial
NDC 2018 레벨 디자인 튜토리얼 Level Design Tutorial용태 이
 
슈팅 게임에서 레벨 디자인 하기
슈팅 게임에서 레벨 디자인 하기슈팅 게임에서 레벨 디자인 하기
슈팅 게임에서 레벨 디자인 하기용태 이
 
1 회사및게임소개자료
1 회사및게임소개자료1 회사및게임소개자료
1 회사및게임소개자료정의 윤
 
게임 기획 튜토리얼 (2015 개정판)
게임 기획 튜토리얼 (2015 개정판)게임 기획 튜토리얼 (2015 개정판)
게임 기획 튜토리얼 (2015 개정판)Lee Sangkyoon (Kay)
 
테일즈위버 합성 시스템 역 기획
테일즈위버 합성 시스템 역 기획테일즈위버 합성 시스템 역 기획
테일즈위버 합성 시스템 역 기획Jun Geun Lee
 
톤톤해적단 게임소개서
톤톤해적단 게임소개서톤톤해적단 게임소개서
톤톤해적단 게임소개서DrukHigh
 
슈팅게임 개발 포트폴리오
슈팅게임 개발 포트폴리오슈팅게임 개발 포트폴리오
슈팅게임 개발 포트폴리오채호 국
 
KGC 2013 - 5일만에 레벨 디자인하기
KGC 2013 - 5일만에 레벨 디자인하기KGC 2013 - 5일만에 레벨 디자인하기
KGC 2013 - 5일만에 레벨 디자인하기용태 이
 
[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?
[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?
[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?강 민우
 

La actualidad más candente (20)

[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
 
모바일 게임기획 따라하며 배우기
모바일 게임기획 따라하며 배우기모바일 게임기획 따라하며 배우기
모바일 게임기획 따라하며 배우기
 
쩌는 게임 기획서, 이렇게 쓴다(How to write great design documents) from GDC 2008 (Korean)
쩌는 게임 기획서, 이렇게 쓴다(How to write great design documents) from GDC 2008 (Korean)쩌는 게임 기획서, 이렇게 쓴다(How to write great design documents) from GDC 2008 (Korean)
쩌는 게임 기획서, 이렇게 쓴다(How to write great design documents) from GDC 2008 (Korean)
 
게임 시스템 디자인 시작하기
게임 시스템 디자인 시작하기게임 시스템 디자인 시작하기
게임 시스템 디자인 시작하기
 
엄재민 Nhn과제 신규 게임 컨셉 제안서
엄재민 Nhn과제 신규 게임 컨셉 제안서엄재민 Nhn과제 신규 게임 컨셉 제안서
엄재민 Nhn과제 신규 게임 컨셉 제안서
 
기획자의 포트폴리오는 어떻게 써야 할까
기획자의 포트폴리오는 어떻게 써야 할까기획자의 포트폴리오는 어떻게 써야 할까
기획자의 포트폴리오는 어떻게 써야 할까
 
마이너리티 아레나 기본 전투 시스템 기획서
마이너리티 아레나 기본 전투 시스템 기획서마이너리티 아레나 기본 전투 시스템 기획서
마이너리티 아레나 기본 전투 시스템 기획서
 
어서와 게임기획은 처음이지?
어서와 게임기획은 처음이지?어서와 게임기획은 처음이지?
어서와 게임기획은 처음이지?
 
NDC2012_마비노기 영웅전 카이 포스트모템_시선을 사로잡는 캐릭터 카이 그 시도와 성공의 구현 일지
NDC2012_마비노기 영웅전 카이 포스트모템_시선을 사로잡는 캐릭터 카이 그 시도와 성공의 구현 일지NDC2012_마비노기 영웅전 카이 포스트모템_시선을 사로잡는 캐릭터 카이 그 시도와 성공의 구현 일지
NDC2012_마비노기 영웅전 카이 포스트모템_시선을 사로잡는 캐릭터 카이 그 시도와 성공의 구현 일지
 
[NDC 19] 시스템 기획서 잘 쓰는 법
[NDC 19] 시스템 기획서 잘 쓰는 법[NDC 19] 시스템 기획서 잘 쓰는 법
[NDC 19] 시스템 기획서 잘 쓰는 법
 
게임 개발 파이프라인과 시스템 기획(공개용)
게임 개발 파이프라인과 시스템 기획(공개용)게임 개발 파이프라인과 시스템 기획(공개용)
게임 개발 파이프라인과 시스템 기획(공개용)
 
NDC 2018 레벨 디자인 튜토리얼 Level Design Tutorial
NDC 2018 레벨 디자인 튜토리얼 Level Design TutorialNDC 2018 레벨 디자인 튜토리얼 Level Design Tutorial
NDC 2018 레벨 디자인 튜토리얼 Level Design Tutorial
 
슈팅 게임에서 레벨 디자인 하기
슈팅 게임에서 레벨 디자인 하기슈팅 게임에서 레벨 디자인 하기
슈팅 게임에서 레벨 디자인 하기
 
1 회사및게임소개자료
1 회사및게임소개자료1 회사및게임소개자료
1 회사및게임소개자료
 
게임 기획 튜토리얼 (2015 개정판)
게임 기획 튜토리얼 (2015 개정판)게임 기획 튜토리얼 (2015 개정판)
게임 기획 튜토리얼 (2015 개정판)
 
테일즈위버 합성 시스템 역 기획
테일즈위버 합성 시스템 역 기획테일즈위버 합성 시스템 역 기획
테일즈위버 합성 시스템 역 기획
 
톤톤해적단 게임소개서
톤톤해적단 게임소개서톤톤해적단 게임소개서
톤톤해적단 게임소개서
 
슈팅게임 개발 포트폴리오
슈팅게임 개발 포트폴리오슈팅게임 개발 포트폴리오
슈팅게임 개발 포트폴리오
 
KGC 2013 - 5일만에 레벨 디자인하기
KGC 2013 - 5일만에 레벨 디자인하기KGC 2013 - 5일만에 레벨 디자인하기
KGC 2013 - 5일만에 레벨 디자인하기
 
[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?
[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?
[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?
 

게임기획 포트폴리오 애니팡역기획 배상욱