STILLCODING

STILL CODING / NOTES

Direct Play 개발 노트

게임을 고르고 링크로 초대하면 바로 시작되는 9개의 브라우저 게임

사진 퍼즐과 슬라이딩 퍼즐, 숫자 야구, 숫자합 퍼즐, 6×6 미니 스도쿠, 포켓 레이스, 스파이 게임, 그리고 작은 시야로 관찰하는 PINHOLE과 합 10을 잇는 SUM DROP까지. 공개방과 비밀방을 열어 게임에 따라 최대 12명이 설치 없이 함께합니다.

앱 열기 Direct Play 소개 모든 노트 보기
  1. 방에도 수명이 있다 — 알람으로 청소하고 하루 500방으로 지키는 Direct Play의 서버 비용 설계

    Direct Play는 설정 중 1시간 뒤 삭제, 활동 없이 3일 뒤 보관, 보관 후 7일 뒤 삭제를 예약합니다. Durable Object 알람으로 방을 정리하는 방법, 쓰기를 줄이는 장치, 하루 500방 한도를 전역 객체 하나로 세는 방법을 코드로 정리합니다.

  2. 사진은 서버를 거치지 않는다 — Direct Play가 게임 자원을 P2P로 나눠 주는 법

    사진퍼즐처럼 방장이 올린 사진이 게임의 재료인 앱에서, 서버에 사진을 저장하지 않고 참가자에게 전달하기 위해 Direct Play가 만든 자원 요청 라우팅, 16,000자 청크 전송, 해시 검증, 실패 처리를 정리합니다.

  3. 포켓 레이스: 1분짜리 레이싱을 휴대폰 네 대로 — 방장이 계산하고 각자는 예측한다

    브라우저끼리 최대 4명이 실시간으로 달리는 포켓 레이스의 네트워크 구조를 정리합니다. 방장 권위 시뮬레이션, 순서를 포기한 상태 채널과 신뢰할 수 있는 이벤트 채널, 초당 20번의 상태 전송, 내 차의 예측과 보정을 코드로 설명합니다.

  4. 사진 한 장으로 '여기가 어디게?' — EXIF GPS, 지도 임베드, 그리고 사진 만 장 중 한 장 고르기

    Direct Play 사진퍼즐의 EXIF GPS 읽기, 지도 표시, 장소 이름 추천을 설명합니다. 공개 여부를 확인해야 하는 로컬 Flutter 사진첩 구현과 60초 타임아웃에 관한 커밋 기록도 다룹니다.

  5. 스파이 게임의 진행 규칙 — 역할 확인, 투표, 마지막 추리

    4~12명이 함께하는 Direct Play 스파이 게임의 투표와 결선, 마지막 추리 규칙을 설명합니다. 로컬 코드로 확인한 제한 시간 처리와 진행 상태 복원의 한계도 기록합니다.

  6. 게임마다 주소를 주면 생기는 일 — 문 하나짜리 서브도메인과 302 리다이렉트

    spy-game.still-coding.cc처럼 게임마다 외우기 쉬운 주소를 주되, 실제 플레이는 한곳에서 하도록 만든 Direct Play의 게임 도메인 구조를 정리합니다. 리다이렉트 규칙, 저장소가 흩어지는 문제, 링크 하나가 방 하나를 쓰는 비용을 다룹니다.

  7. 게임을 아홉 개로 늘려도 로비가 가벼운 이유 — Direct Play의 게임 모듈 구조

    Direct Play가 게임 9개를 하나의 로비에서 다루기 위해 만든 카탈로그와 지연 로딩 레지스트리, 게임 모듈 계약, 순수 로직 분리를 설명합니다. 독립 앱 두 개를 같은 계약에 맞춰 옮긴 코드도 다룹니다.