chrome://dino for Playdate

date
Dec 21, 2025
slug
chrome-dino-for-playdate
status
Published
tags
Korean
summary
Playdate 게임 개발, 의외로 재미있었다.
type
Post
notion image
Note: This is not an official Google product. All assets are distributed under the Chromium license, and the game is a re-implementation of the original JavaScript version which does not follow the same license.
참고: 이 제품은 Google의 공식 제품이 아닙니다. 모든 에셋은 Chromium 라이선스에 따라 배포되며, 본 게임은 기존 JavaScript 버전을 재구현한 것으로 해당 라이선스를 따르지 않습니다.
최근에 이주 후, 여러가지 귀찮은 일이 동시에 연말에 몰려 들어와, 머리가 아픈 상황에 뭔가 머리 식힐만한게 없을까 하다가, 뭔가 머리를 식힐 무언가가 절실했다. 그 와중에 갑자기 떠오른게 전부터 봐둔 Playdate라는 휴대용 게임기였고, 홈페이지 가보니 여전히 배송이 시간이 좀 걸려 (예약제였던 예전보다는 덜 하지만) 그럼 돈 쓰지 말고 간접 체험 해보자는 취지에 간단한 게임을 하나 포팅해보기로 했다. 대상은, 아는 사람들은 아는 지루한 회의 시간의 영원한 벗인 타임킬러 게임, chrome://dino.
원 소스는 Chromium 구현체누군가가 예쁘게 뜯어내줘서 그걸 참고로 하였고 (사용중인 맥 미니에 Chromium을 체크아웃 할 정도의 여유 공간이 없어서), 그걸 Playdate용 Lua로 포팅한 버전. 대부분의 작업은 gemini-cli를 통해서 이루어졌으나, 상대적으로 매니악한 휴대용 기기 전용 개발 환경과 반드시 패키징 후 실행 및 검증을 CLI가 할 수 없는 에뮬레이터로 해야한다는 점, 그리고 원 구현체가 꽤 난해한 스프라이트 시트로 되어있어 수작업이 꽤 많이 들어갔다. 스프라이트 시트가 어떤 느낌이었는가 하면…
notion image
경험해본 사람들에게는 당연한 이야기로 들리겠지만 이런 스프라이트 시트를 LLM이 보면 똑똑하게 대응을 못한다. 이거 자르는데 시간을 제일 많이 쓴 것 같다.
또 하나의 난항은, Playdate의 1-bit 컬러였다. 1-bit 컬러가 무엇이냐 하면, 말 그대로 회색이 존재하지 않는 흑백 시스템. 회색은 용납되지 않는다. 명암이 필요하거나 투명이 필요하면 디더링에 의존해야 한다. 다른 곳에는 크게 문제가 없었는데, 구름에서 결국 디더링으로 회색 비슷한 효과를 냈다. 추후 UI 개선을 한다면 거기에도 쓰여야 할것으로 보인다.
개발 과정에 발견한 재미있는 사실이 두가지가 있다. 첫번째는, 개발 후 한번도 당연히 손도 안댔을거라는 확신을 배신한 TypeScript 재구현 사실. (참고로 한 버전은 TS가 아닌 JS 구현체이다. 게임 로직은 동일하다.) 두번째는, 아래 키를 누르면 숙이기가 가능하다는 것. 이 기능을 이용해서, 공중 점프 중에 하강을 가속화 시킬 수도 있는 다소 괴상한 게임 기능도 있다 (Space, <100ms>, ⬇️ 로 확인 가능).
실제 단말에서 돌아가는지는 지인을 통해서 확인은 했으나 (Thank you Michael!) 크랭크를 이용한 조작이 어떤지는 직접 해보지 않아 튜닝이 필요할 것으로 예상된다.

© Sangwhan Moon 2014 - 2025