retrospective

프로젝트 회고

프로젝트에서 직접 겪은 문제를 문제 → 원인 → 해결 → 배운 점 순서로 기록합니다.

24편

20268편

  1. 10.04Algorithm

    '이거 아까 나온 패턴인데?': 자동 채보의 반복을 숫자로 잡기

    이 사이트의 리듬게임은 mp3를 넣으면 채보를 자동으로 만든다. 드럼·박자를 분석해 노트 시각을 고르고, 레인은 계단(D F J K), 트릴(D F K J), 연타 같은 익숙한 패턴으로 깐다. 패턴을 넣고 나서 '너…

  2. 10.04Frontend

    싱크 맞추기 화면을 없애기까지: 리듬게임 자동 싱크

    웹 리듬게임은 기기마다 소리가 귀에 닿는 시각이 다르다. 스피커와 유선 이어폰은 수십 ms, 블루투스는 150ms가 넘기도 하고, 아이폰 사파리는 AudioContext.outputLatency 를 알려주지 않아서…

  3. 10.03Backend

    웹 SDK가 안 알려주는 문서 생성 시각: 예전 랭킹에 날짜 붙이기

    모든 게임 랭킹에 '달성 일자'를 넣기로 했다. 새 기록은 저장할 때 날짜를 넣으면 되지만, 몇 년 동안 쌓인 예전 기록에는 날짜 필드가 아예 없었다. 새 기록: 서버 시각만 허용 클라이언트 시계는 믿을 수 없어서…

  4. 10.03Frontend

    레거시 캔버스 게임을 '동작은 그대로' 다시 쓰기: 멜론게임 리팩터링

    2021년에 만든 멜론게임(합이 10이 되게 드래그해서 지우는 게임)을 다시 만들었다. 조건은 하나였다. 랭킹이 쌓여 있는 게임이라 판정·점수·시간은 한 치도 달라지면 안 된다 . 문제: 규칙이 그리기 코드 속에 섞…

  5. 10.03etc

    자동 채보가 Lv15에서 멈춘 이유: 보스곡 채보를 직접 설계하기

    리듬게임에 보스곡을 넣으면서 '매우 어려움 Lv18, 숫자만이 아니라 체감도 18'을 목표로 잡았다. 그런데 자동 채보기로 밀도를 아무리 올려도 레벨이 15에서 더 오르지 않았다. 원인: 채보기는 음원에 있는 타격만…

  6. 10.03Frontend

    모바일에서 캔버스 게임이 지지직거린 이유: desynchronized 한 줄

    리듬게임을 개편하고 휴대폰으로 쳐 보니 노트가 내려오는 화면 전체가 찢어지고 깜빡였다. PC에서는 멀쩡했고, 게임 로직이나 판정에는 아무 문제가 없었다. 원인 1: 입력 지연을 줄이려고 켠 옵션 개편하면서 캔버스를…

  7. 09.29etc

    5년 된 CRA 사이트를 Next.js + TypeScript로 옮기며 배운 것

    2021년 Create React App으로 만든 이 사이트를 2026년에 Next.js App Router + TypeScript로 옮겼다. 기능은 그대로 두고 기반만 바꾸는 작업이었는데, 생각보다 걸리는 지점이…

  8. 09.28Next/Express

    Next.js 정적 export에서 useSearchParams가 페이지를 비워버리는 이유

    개인공부 목록 페이지를 output: "export" 로 정적 생성했는데, 빌드된 HTML을 열어보니 글 링크가 하나도 없었다. 브라우저에서는 멀쩡히 보이는데 크롤러가 받는 HTML에는 목록이 통째로 빠져 있었다.…

Gunmo Lee