크레센도 Phaser + TypeScript TIL 8
사각형 조합이 상자로 보였다
앞선 TIL 7의 함대 placeholder는 사각형 둘과 타원 하나였다. 화면에서 보니 비행선이 아니라 상자였다. 색을 바꾸고 창문을 붙여도 상자다.
문제는 디테일이 아니라 외곽 형태였다. 멀리서 검은 실루엣만 봐도 무엇인지 알 수 있으려면, 그 대상의 정체를 만드는 특징이 외곽선에 드러나야 한다. 임의의 외곽선을 그릴 수 있는 폴리곤(꼭짓점을 이어 만든 다각형)으로 바꾸고 세 가지를 넣었다.
- 진행 방향으로 뾰족해지는 기수 → 앞으로 나아가는 것
- 상부 함교 → 함선
- 하부 행어(격납고) 노치(패임) → 수송·모함
창문·엔진 불빛·림라이트(위에서 빛을 받는 밝은 가장자리 선)는 실루엣이 읽힌 다음에 얹는 양념이다. 실루엣이 안 읽히면 디테일을 아무리 얹어도 못 살린다. 그림을 검수할 때 색과 디테일을 빼고 외곽만 보는 눈이 먼저다.
디테일은 실루엣이 읽힌 뒤에 얹었다
폴리곤으로 바꾼 실루엣을 화면에서 보니 비행선으로 읽혔다. 그다음에야 창문 점광, 후미 엔진 글로우, 위쪽 가장자리 림라이트를 얹었다. 림라이트는 씬에 이미 있는 “하늘에서 내려오는 빛”과 같은 방향이라 함대가 그 장면 안에 있는 것으로 보였다.
순서가 반대였으면 상자에 창문을 붙이는 일이었다. 교체 지점은 앞선 TIL 7 그대로라 전용 스프라이트가 나오면 그 자리만 바꾼다.
S5가 다른 스테이지의 절반이라 짧았다
S5 최종전 접근 구간이 5화면으로, 다른 스테이지(8~9화면)의 절반이었다. 마지막 스테이지가 제일 짧으니 흐름이 급했다. 8화면으로 늘리고, 발판을 9개로, 잡몹을 근접 6·원거리 5·돌진 4로 전부 섞었다.
시스템 코드는 한 줄도 안 고쳤다. 앞선 TIL 3에서 스테이지를 데이터로 두기로 한 덕에 맵 폭·발판·잡몹 배치 숫자만 바꾸면 끝났다. “멤버·스테이지 추가가 시스템 수정으로 번지면 안 된다”는 원칙이 여기서 회수된다.
하나 지킬 것이 있었다. 보스 아레나는 마지막 한 화면이고, 들어가면 잠기고 컷신이 돌고 남은 잡몹은 도주한다(앞선 TIL 2). 잡몹을 아레나 안에 배치하면 이 흐름과 충돌하니 전부 진입선 앞에만 뒀다. 데이터가 자유로워 보여도 시스템이 가정하는 경계는 배치 제약으로 남는다.