매치 시즈를 만들고 있습니다. 아직 개발 중이고, 규칙과 숫자가 지금도 바뀝니다.

한 줄로 말하면 보드 자체가 전장인 매치-3 입니다. 침식이 가장자리에서 칸을 먹어 들어오고, 매치가 그걸 밀어냅니다. 맞추는 행위가 점수만 올리는 게 아니라 땅을 되찾는 일이 되게 하고 싶었습니다.

침식 칸은 블록이 아니라 장애물입니다

처음에 침식을 "검게 변한 블록"으로 만들어 봤습니다. 곧 문제가 생겼습니다. 블록이면 매치 판정에 걸리고, 중력에 떨어지고, 사라지면 새로 채워집니다. 그러면 침식이 저절로 정리돼 버립니다. 위협이 아니라 잡음이 됩니다.

그래서 규칙을 뒤집었습니다. 침식된 칸은 비어 있는 칸이고, 그 위에 장애물이 얹혀 있는 상태입니다. 코드에서는 이렇게 강제합니다.

  • 침식 강도가 1 이상인 칸은 반드시 블록이 없다
  • 블록이 있는 칸은 반드시 침식 강도가 0이다

이 한 쌍이 깨지지 않는 한, 침식은 매치되지도 떨어지지도 채워지지도 않습니다. 자가 검사 항목으로도 박아 뒀습니다. 상태가 어긋나면 조용히 이상해지는 대신 바로 실패로 잡히게요.

부작용이 하나 생기는데, 이게 마음에 들었습니다. 침식 칸은 중력을 막습니다. 가운데가 먹힌 열은 위와 아래가 끊겨서, 위쪽 블록이 아래로 못 내려옵니다. 열 하나가 두 구간으로 쪼개지는 겁니다. 침식이 퍼질수록 보드가 좁아지는 게 아니라 조각조각 나뉩니다. 남은 칸 수보다 이쪽이 훨씬 아픕니다.

번지기 전에 2.4초를 줍니다

침식은 가장자리에서만 시작합니다. 한번 자리를 잡으면 거기 인접한 칸으로만 번집니다. 한가운데서 갑자기 터지면 막을 방향 자체가 없어서, 플레이어가 할 수 있는 게 없어집니다.

번지기 직전에는 그 칸이 2.4초 동안 예고됩니다. 화면의 붉은 호가 그겁니다. 그리고 여기가 핵심인데 — 예고된 칸을 매치에 포함시키면 침식이 취소됩니다.

예고를 공정성 장치로 넣었다가, 만들고 나서 보니 그게 플레이 그 자체였습니다. 지금 가장 큰 매치를 할 것인가, 아니면 점수는 낮아도 저 예고 칸을 덮을 것인가. 매 순간 그걸 고르게 됩니다. 맞추는 재미보다 무엇을 먼저 막을지 고르는 재미 쪽으로 게임이 기울었습니다.

공격도 같은 원리입니다. 블록이 지워진 자리에 인접한 침식은 한 겹 벗겨집니다. 다만 한 번의 매치가 같은 침식을 두 번 때리지는 못하게 막아 뒀습니다. 안 그러면 큰 매치 한 방이 주변을 통째로 밀어 버려서, 어디를 지울지 고르는 의미가 사라집니다.

지는 조건은 셋, 전부 막는 쪽으로

  • 시간이 다하면 진다 — 타이머가 곧 생명입니다
  • 쓸 수 있는 칸이 스무 칸 아래로 떨어지면 진다
  • 섞어도 움직일 수 있는 수가 없으면 진다

마지막 것이 조금 유별납니다. 보드에 가능한 수가 없으면 색 구성을 유지한 채 자동으로 섞는데, 섞고 나서도 수가 없으면 계속 섞지 않고 그냥 집니다. 무한 루프에 빠져 화면이 멈추느니 진 것으로 처리하는 편이 낫다고 봤습니다.

침식이 너무 빨랐습니다

처음 붙였을 때는 손도 못 대고 밀렸습니다. 숫자를 이렇게 늦췄습니다.

  • 첫 예고까지 8초 → 12초
  • 예고 간격 5.5초 → 8.5초, 최소 간격 2.2초 → 3.0초
  • 두 겹짜리 침식이 나오는 시점 50초 → 90초

대략 1.8배 느려졌습니다. 같이 바꾼 게 하나 더 있는데, 난이도를 시간이 아니라 판(웨이브)으로 올리게 했습니다. 시간으로 조이면 잘하는 사람일수록 빨리 죽습니다. 오래 버틴 게 벌이 되면 안 되니까요.

판이 넘어갈 때 보드를 밀어 버리지 않는 것도 같은 이유입니다. 침식은 남고, 대신 모든 침식이 한 겹 벗겨지고 12초가 붙습니다. 한 판이 다음 판으로 이어지는 감각을 살리고 싶었습니다. 판마다 보석 종류는 5종에서 시작해 6종, 7종으로 늘어납니다. 색이 늘면 우연히 맞아떨어지는 일이 줄어서, 같은 규칙인데도 손이 바빠집니다.

에셋 없이 전부 코드로 그립니다

이미지 파일이 하나도 없습니다. 블록은 삼각형·사각형·마름모·육각형·오각형·원 같은 도형으로 그리고, 침식은 덩어리와 호로, 효과음 열네 가지는 시작할 때 파형을 계산해서 만듭니다. 다운로드가 가벼워야 브라우저에서 바로 켜지니까요.

이 글을 쓴 뒤 아트를 통째로 갈아엎었습니다. 어두운 보석에서 밝은 캔디로 바꾸고 보드도 8×8로 넓혔습니다 — 그 이야기는 따로 적었습니다.

그리는 층은 셋으로 나눠 뒀습니다. 그중 블록 층은 보드 모양대로 잘라내서, 위에서 새로 들어오는 블록이 보드 밖에 떠 보이지 않게 했습니다. 별것 아닌데 이걸 안 하니 화면이 계속 어색했습니다.

다음

특수 블록과 판 전환, 효과음, 이벤트까지 올라와서 게임의 뼈대는 섰습니다. 지금 제일 급한 건 코드가 아니라 실제로 오래 플레이해 보는 것입니다. 한 판이 얼마나 길어야 하는지, 몇 판째부터 버거워지는지는 혼자 숫자만 봐서는 안 나옵니다.

브라우저에서 바로 켜집니다. 저장은 안 되고, 지면 처음부터입니다.