SOLO PROJECT · 2026.06 — 운영 중

Daily Arrow

자정마다 바뀌는 50개의 방향키를 가장 빠르게 입력해 겨루는 반응속도 웹 미니게임입니다. 데일리 퍼즐 형식을 반응속도 게임에 가져왔고, 기획부터 배포와 운영까지 혼자 맡았습니다.

기획개발운영
PLAY
Daily Arrow 플레이 화면
Daily Arrow · 웹 · 배포 중

프로젝트

2026.06.05 첫 배포 이후 커밋 80개. 리더보드, 데일리 스트릭, 도전과제, 통계, 실시간 멀티플레이(v1.0.0)를 차례로 붙였고, 9월에는 디스코드 액티비티로 옮겨 음성 채널에서 함께 할 수 있게 했습니다.

스택

React 19 · Vite · Firebase (Hosting, Firestore, Auth) · Cloudflare Workers · Discord Embedded App SDK

KEY DECISIONS

핵심 판단 3건

데일리 구조, 기록 기준, 변조 방지. 눌러서 펼쳐 보세요.

01모두에게 매일 같은 50키를 준다
상황
워들 같은 데일리 퍼즐 형식을 반응속도 게임에 가져오고 싶었다.
결정
날짜를 시드로 쓰는 난수 생성기(Mulberry32)로 하루 한 번 50개의 방향키 시퀀스를 만들고, 모든 플레이어가 같은 시퀀스를 받게 했다.
이유
매일 다시 들어올 이유를 만들고, 같은 문제를 푼 친구끼리 기록을 공유하고 비교하게 하려는 것이다. 스트릭과 도전과제를 이 흐름에 붙였다.
한계
시드가 기기 로컬 날짜 기준이라, 시간대가 다르면 같은 순간에 다른 시퀀스를 받는다. 재방문율 같은 운영 수치는 아직 정리하지 않았다.
02개인 최고기록은 리더보드에 올라가는 기록만 남긴다
상황
클리어할 때마다 개인 최고기록을 갱신했다. 그래서 리더보드에 등록되는 기록과 개인 기록의 기준이 달랐다.
결정
최고기록 저장 시점을 리더보드 등록 시점으로 옮겼다(6/8, v0.5.1).
이유
리더보드와 개인 기록이 같은 기준을 써야 기록의 의미가 맞는다.
한계
반복 플레이 기록을 따로 보여 주는 화면은 아직 없다.
03클라이언트 데이터 변조를 막는다
상황
기록과 스트릭이 로컬 스토리지에 있어서, 값을 직접 고쳐 리더보드에 올릴 수 있었다.
결정
로컬 데이터를 AES로 암호화하고, 무결성 해시가 맞지 않으면 데이터를 초기화하게 했다. DB 규칙에서는 불가능한 값의 입력을 막았다(6/11).
이유
랭킹 게임은 기록을 믿을 수 있어야 경쟁이 성립한다.
한계
암호화 키가 클라이언트 코드에 있어서, 로컬 암호화만으로는 완전히 막을 수 없다. 실질적인 방어선은 서버 쪽 DB 규칙이다.
전체 판단 기록 4건 보기 →

더 궁금한 점이 있다면
연락 주세요