만든 이야기 투비트
개발 노트
곡을 코드로 썼습니다
녹음한 소리가 없습니다. 공용 모듈 하나가 조성·코드 진행·구간·시드로 곡을 만들고, 화면은 그것을 WebAudio로 연주합니다. 서버도 같은 모듈을 쓰므로 어느 순위 판이든 채보를 똑같이 다시 만들 수 있습니다. 캐논 변주곡은 익숙한 주제가 시드에 따라 바뀌지 않게 고정 악보로 썼고, 장단 곡은 기존 다섯 곡 뒤에 붙여 원래 채보와 그 위에 쌓인 기록이 바뀌지 않게 했습니다.
소리·입력·화면을 시계 하나로
브라우저의 오디오 시계는 몇 ms씩 계단처럼 끊겨 움직입니다. 저는 그 계단의 위쪽 끝을 따라가고 기기가 알려 준 출력 지연을 뺀 뒤, 키 입력은 코드가 처리한 때가 아니라 이벤트가 생긴 순간으로 그 시계에 옮깁니다. 게임패드는 연주 중 4ms마다 읽습니다. 헤드리스 크롬에서 재 보니 프레임 사이 떨림이 2.65ms에서 0.05ms로 줄었습니다. 모든 소리를 6ms 늦추던 음량 컴프레서도 빼고 지연 없는 소프트 클리퍼로 바꿨습니다.
누른 시각 원본으로 다시 판정합니다
예전에는 화면이 판정한 오차를 그대로 보냈는데, 그럴듯하게 흩어진 오차를 지어 보내면 S+가 나왔습니다. 지금은 줄마다 누르고 뗀 시각만 보내고, 서버가 같은 판정 코드를 다시 돌린 점수를 결과 화면에도 보여 줍니다. 그래도 사람이 쳤다고 증명할 수는 없어서, 30타 이상에서 오차 흔들림이 4ms 미만인 판은 자동 입력으로 보고 받지 않습니다.
고친 날: