5P by GN⁺ 1일전 | ★ favorite | 댓글 1개
  • undercut-f1은 F1 세션의 실시간 타이밍 정보를 기록하여 나중에 재생할 수 있는 오픈소스 TUI 클라이언트
  • 신호 기반 스트림 데이터를 받아 시각화하거나 녹화된 세션을 리플레이할 수 있음
  • 상세한 드라이버별 타이밍 타워, 피트 스톱 전략, 레이스 컨트롤 메시지, 전략 분석, 드라이버 위치 추적, 팀 라디오, 랩별 히스토리 기능 제공
  • 데이터는 로컬에 저장되어 개발 및 테스트에 활용 가능, 시뮬레이션 모드도 지원
  • iTerm2, Kitty 등의 터미널 이미지 프로토콜을 활용한 시각적 디스플레이 구현

undercut-f1 프로젝트 소개

undercut-f1은 F1 라이브 타이밍 정보를 CLI 기반 TUI(터미널 사용자 인터페이스)로 시각화하는 오픈소스 도구
주요 특징은 다음과 같음:

  • 실시간 F1 세션 데이터를 시청각적으로 표현
  • 사용자가 직접 세션 데이터를 녹화하고, 이후 재생 가능
  • F1 방송의 평균 지연 시간(30~60초)을 고려하여 지연 설정 조정 기능 제공
  • .NET 기반 CLI 앱으로, NuGet 패키지 또는 단일 실행 파일 형태로 사용 가능

주요 기능

  • 타이밍 타워

    • 섹터별 기록 표시 (개인 최고/전체 최고 색상 표시)
    • 최근 및 베스트 랩 타임
    • 타이어 종류 및 사용 시간
    • 선두 및 전 차량과의 시간 차
    • 선택된 드라이버와 다른 드라이버 간 시간 차 비교
  • 전략/스틴트 정보

    • 드라이버별 타이어 전략을 한 눈에 확인 가능
    • 각 타이어의 사용 시점, 지속 시간 시각화
    • 전략 차이 감지 용이
  • 레이스 컨트롤 화면

    • 공식 조사, 페널티, 날씨 정보 등 레이스 컨트롤 메시지 확인
  • 드라이버 트래커

    • 선택된 드라이버의 실시간 트랙 위치 시각화
    • iTerm2 및 Kitty 이미지 프로토콜 지원 터미널에서 작동
    • 커서를 통해 드라이버 선택 및 비교 가능
  • 타이밍 히스토리

    • 랩별 갭/인터벌 변화 확인
    • 최근 15랩의 랩 타임 및 선두 갭 트렌드 차트 제공
  • 팀 라디오 청취 및 전사

    • Whisper 모델을 활용하여 로컬에서 팀 라디오를 자체 음성 인식으로 전사
    • 품질은 당일 오디오 품질에 따라 다르며 개선 제안도 수렴 중

세션 실행 및 리플레이

  • 실시간 세션 실행

    • undercutf1 실행
    • <kbd>S</kbd> 키로 세션 화면 진입
    • <kbd>L</kbd> 키로 실시간 세션 시작
    • <kbd>T</kbd> 키로 타이밍 타워 보기
    • 세션 데이터는 ~/undercut-f1/data/<session-name>에 저장되어, 이후 재생용 데이터로 활용 가능
  • 녹화된 세션 리플레이

    • Sample Data 폴더의 데이터를 복사하거나, 공식 세션 데이터를 다운로드해 리플레이 가능
    • <kbd>F</kbd> 키로 시뮬레이션 시작 → 세션 선택 → 타이밍 타워로 진입
    • <kbd>N</kbd> 키로 지연 시간 조정하여 빠르게 탐색 가능
  • 세션 데이터 다운로드

    • undercutf1 import <year> 명령어로 해당 연도 세션 리스트 확인 가능
    • 세션을 선택해 로컬로 다운로드 및 변환 → 재생 가능

커서 및 지연 관리 기능

  • 모든 화면에서 <kbd>▲</kbd>/<kbd>▼</kbd> 키로 커서를 제어
    • 예: 특정 드라이버 선택 시, 해당 드라이버 기준 시간 차 시각화 가능
  • <kbd>M</kbd>/<kbd>N</kbd> 키로 라이브 방송과의 싱크를 위한 지연 시간 조정
    • <kbd>Shift</kbd>와 함께 누르면 30초 단위 조정

데이터 소스 및 저장 방식

  • F1 Live Timing 스트림은 SignalR 기반
  • 다음과 같은 토픽을 구독하여 실시간 데이터를 수신:
    • TimingStats, TimingData, WeatherData, DriverList, RaceControlMessages, TeamRadio
  • 세션 시 데이터는 다음 두 파일로 저장됨:
    • subscribe.txt: 구독 시 받은 초기 데이터
    • live.txt: 세션 중 실시간 수신된 전체 데이터

라이선스

  • 본 프로젝트는 F1 공식 기관과 무관한 비공식 오픈소스 프로젝트
  • F1, FORMULA ONE 등 관련 상표는 Formula One Licensing B.V. 가 소유함
Hacker News 의견
  • 핀란드에서는 스포츠를 따라가기 위해 텔레텍스트가 여전히 인기가 많음. TUI는 광고 없이 바로 핵심 정보를 제공해 줌. 텔레텍스트 형식은 이제 TV보다 오래 살아남아 사람들이 모바일 앱을 통해 텔레텍스트 페이지를 읽음
  • F1을 사랑하는 사람으로서 이번 주말에 이걸 사용해 보는 것이 정말 기대됨. 라이브/정적 데이터의 출처와 그 자유로운 이용 가능성에 대해 궁금함. 많은 스포츠가 데이터 권리에 대해 매우 보호적임. F1이 이를 어떻게 보는지 궁금함. 어쨌든 이건 정말 훌륭하고, 레이스를 즐기면서 소파에 앉아 두 번째/세 번째 화면으로 사용할 수 있을 것 같음. 기여할 방법을 찾으면 그렇게 할 것임
  • 축하함. 잘 작성된 README로, 이 프로젝트에 대한 세심한 배려가 드러남
  • 훌륭한 작업임. 타이어 전략 페이지를 통해 페라리가 드라이버를 위한 전략을 어떻게 실수했는지 볼 수 있음
  • 매력적으로 보임. 아쉽게도 dotnet 도구 방법(Win10)을 사용한 빠른 설치는 오류 없이 설치되지만, 앱 실행 시 응답이 없는 창이 나타남. 로그에는 오류가 없음. 키 명령이 작동하지 않음(Q도 아님). 데이터 가져오기는 작동하지만 응답 없는 창은 변하지 않음. 기술 지원을 찾는 것은 아니지만 README에 추가 단계가 필요할 수 있음을 알림
  • 정말 멋짐. 몇 주 후에 마이애미 그랑프리에 아내와 함께 갈 예정임. Jeddah 세션/레이스를 위해 이걸 사용해 보는 것이 기대됨
  • dotnet 방법을 사용하여 Windows에 설치했지만 작동하지 않는 것 같음. Quit / Cursor / Session 등의 상단 라인은 나타나지만 키가 아무것도 하지 않음. 현재 진행 중인 세션 동안 테스트해 보고 싶었음
  • 이걸 만들어줘서 고맙음. F1과 TUI를 사랑하는 사람으로서, 방송사가 앞부분을 보고 있을 때 중위권 팀이 무엇을 하고 있는지 더 알고 싶어하는 내 욕구에 완벽할 것임
  • 훌륭해 보임. 그러나 실행을 더 쉽게 할 수 있는 방법이 있으면 좋겠음. Linux용 바이너리는 독립 실행형이 아니며 타사 종속성을 설치해야 함. 정적 바이너리(또는 컨테이너 이미지?)가 있으면 좋겠음
  • 꽤 멋져 보이지만 지연을 제대로 작동시키지 못함. 약 25분 지연으로 예선 세션을 보려고 하는데, 시계는 올바른 시간을 표시하지만 드라이버 시간은 나타나지 않음. 라디오와 레이스 제어 메시지는 현재 상태임. Q1의 모든 레이스 제어 메시지와 라디오 메시지를 볼 수 있음