6 คะแนน โดย GN⁺ 2025-04-20 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • undercut-f1 เป็นไคลเอนต์ TUI โอเพนซอร์สที่บันทึกข้อมูลไลฟ์ไทมิงของเซสชัน F1 แบบเรียลไทม์เพื่อนำมาเล่นย้อนหลังภายหลังได้
  • สามารถรับข้อมูลสตรีมแบบ SignalR เพื่อนำมาแสดงผล หรือรีเพลย์เซสชันที่บันทึกไว้ ได้
  • มีฟีเจอร์อย่างทาวเวอร์ไทมิงรายนักขับแบบละเอียด, กลยุทธ์พิทสต็อป, ข้อความจาก race control, การวิเคราะห์กลยุทธ์, การติดตามตำแหน่งนักขับ, team radio และประวัติรายรอบ
  • ข้อมูลถูกเก็บไว้ในเครื่อง จึงนำไปใช้เพื่อการพัฒนาและทดสอบได้ และรองรับโหมดจำลองด้วย
  • แสดงผลแบบภาพด้วย terminal image protocol ของ iTerm2, Kitty และเทอร์มินัลอื่นที่รองรับ

แนะนำโปรเจกต์ undercut-f1

undercut-f1 คือ เครื่องมือโอเพนซอร์ส สำหรับแสดงผลข้อมูล F1 Live Timing ผ่าน TUI (terminal user interface) บน CLI
คุณสมบัติหลักมีดังนี้:

  • แสดงข้อมูลเซสชัน F1 แบบเรียลไทม์ทั้งในเชิงภาพและข้อมูล
  • ผู้ใช้สามารถบันทึกข้อมูลเซสชันด้วยตนเอง และนำมาเล่นซ้ำภายหลังได้
  • มี ฟังก์ชันปรับค่าหน่วงเวลา โดยคำนึงถึงดีเลย์เฉลี่ยของการถ่ายทอด F1 (30~60 วินาที)
  • เป็นแอป CLI บน .NET ใช้งานได้ทั้งในรูปแบบแพ็กเกจ NuGet หรือไฟล์รันเดี่ยว

ฟีเจอร์หลัก

  • ทาวเวอร์ไทมิง

    • แสดงสถิติรายเซกเตอร์ (ระบุสีสำหรับเวลาที่ดีที่สุดส่วนตัว/ดีที่สุดรวม)
    • เวลาในรอบล่าสุดและรอบที่ดีที่สุด
    • ประเภทยางและเวลาที่ใช้งาน
    • ช่องว่างเวลากับผู้นำและรถคันหน้า
    • เปรียบเทียบช่องว่างเวลาระหว่างนักขับที่เลือกกับนักขับคนอื่น
  • ข้อมูลกลยุทธ์/สตินต์

    • ดูกลยุทธ์ยางของนักขับแต่ละคนได้ในภาพรวมเดียว
    • แสดงช่วงเวลาที่ใช้ยางแต่ละชุดและระยะเวลาการใช้งาน
    • ช่วยให้เห็นความแตกต่างของกลยุทธ์ได้ง่าย
  • หน้าจอ race control

    • ดูข้อความจาก race control เช่น การสอบสวนอย่างเป็นทางการ บทลงโทษ และข้อมูลสภาพอากาศ
  • ตัวติดตามนักขับ

    • แสดงตำแหน่งบนแทร็กของนักขับที่เลือกแบบเรียลไทม์
    • ใช้งานได้บนเทอร์มินัลที่รองรับ image protocol ของ iTerm2 และ Kitty
    • เลือกและเปรียบเทียบนักขับได้ผ่านเคอร์เซอร์
  • ประวัติไทมิง

    • ตรวจสอบการเปลี่ยนแปลงของ gap/interval ในแต่ละรอบ
    • มีกราฟแนวโน้มเวลาในรอบและช่องว่างจากผู้นำของ 15 รอบล่าสุด
  • ฟังและถอดเสียง team radio

    • ใช้โมเดล Whisper เพื่อ ถอดเสียง team radio แบบ speech recognition ภายในเครื่อง
    • คุณภาพขึ้นอยู่กับคุณภาพเสียงในวันนั้น และยังเปิดรับข้อเสนอเพื่อการปรับปรุง

การรันเซสชันและรีเพลย์

  • รันเซสชันสด

    • รัน 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
  • รับข้อมูลเรียลไทม์ผ่านการ subscribe หัวข้อ เช่น
    • TimingStats, TimingData, WeatherData, DriverList, RaceControlMessages, TeamRadio เป็นต้น
  • ระหว่างเซสชัน ข้อมูลจะถูกบันทึกเป็น 2 ไฟล์ดังนี้:
    • subscribe.txt: ข้อมูลเริ่มต้นที่ได้รับตอน subscribe
    • live.txt: ข้อมูลทั้งหมดที่รับแบบเรียลไทม์ระหว่างเซสชัน

ไลเซนส์

  • โปรเจกต์นี้เป็น โปรเจกต์โอเพนซอร์สอย่างไม่เป็นทางการ และไม่มีความเกี่ยวข้องกับองค์กรทางการของ F1
  • เครื่องหมายการค้า F1, FORMULA ONE และที่เกี่ยวข้อง เป็นทรัพย์สินของ Formula One Licensing B.V.

1 ความคิดเห็น

 
GN⁺ 2025-04-20
ความคิดเห็นจาก Hacker News
  • ในฟินแลนด์ เทเลเท็กซ์ยังคงได้รับความนิยมมากสำหรับการติดตามกีฬา TUI ให้ข้อมูลสำคัญได้ทันทีโดยไม่มีโฆษณา รูปแบบเทเลเท็กซ์ตอนนี้อยู่รอดยาวนานกว่า TV เสียอีก จนผู้คนอ่านหน้าเทเลเท็กซ์ผ่านแอปมือถือ
  • ในฐานะคนที่รัก F1 ฉันตื่นเต้นมากที่จะได้ลองใช้สิ่งนี้ในสุดสัปดาห์นี้ สงสัยเกี่ยวกับแหล่งที่มาของข้อมูลสด/ข้อมูลคงที่ และการเปิดให้ใช้งานได้อย่างอิสระ หลายกีฬาปกป้องสิทธิ์ด้านข้อมูลอย่างเข้มงวด เลยสงสัยว่า F1 มองเรื่องนี้อย่างไร ไม่ว่าอย่างไรก็ตาม นี่เยี่ยมมากจริง ๆ และดูเหมือนว่าจะใช้เป็นหน้าจอที่สอง/สามขณะนั่งดูการแข่งขันบนโซฟาได้ ถ้าหาวิธีมีส่วนร่วมได้ ฉันก็จะทำ
  • ยินดีด้วย README เขียนได้ดีมาก แสดงให้เห็นถึงความใส่ใจอย่างรอบคอบที่มีต่อโปรเจ็กต์นี้
  • งานยอดเยี่ยม หน้ากลยุทธ์ยางทำให้เห็นได้ว่า Ferrari พลาดกลยุทธ์ให้กับนักขับอย่างไร
  • ดูน่าสนใจ น่าเสียดายที่การติดตั้งแบบรวดเร็วด้วยวิธีเครื่องมือ dotnet (Win10) ติดตั้งได้โดยไม่มีข้อผิดพลาด แต่เมื่อเปิดแอปกลับมีหน้าต่างที่ไม่ตอบสนองขึ้นมา ใน log ก็ไม่มีข้อผิดพลาด คำสั่งจากคีย์บอร์ดใช้ไม่ได้เลย (แม้แต่ Q) การดึงข้อมูลทำงาน แต่หน้าต่างที่ไม่ตอบสนองก็ไม่เปลี่ยนแปลง ไม่ได้มาหาการซัพพอร์ตทางเทคนิคนะ แค่อยากแจ้งว่า README อาจต้องมีขั้นตอนเพิ่มเติม
  • เจ๋งมาก อีกไม่กี่สัปดาห์ฉันจะไป Miami Grand Prix กับภรรยา กำลังตั้งตารอที่จะลองใช้สิ่งนี้กับเซสชัน/การแข่งขันที่ Jeddah
  • ฉันติดตั้งบน Windows ด้วยวิธี dotnet แต่ดูเหมือนว่าจะใช้งานไม่ได้ บรรทัดด้านบนอย่าง Quit / Cursor / Session แสดงขึ้นมา แต่ปุ่มกดไม่ทำอะไรเลย ฉันอยากทดสอบระหว่างเซสชันที่กำลังดำเนินอยู่
  • ขอบคุณที่สร้างสิ่งนี้ขึ้นมา ในฐานะคนที่รักทั้ง F1 และ TUI มันน่าจะตอบโจทย์ความต้องการของฉันได้อย่างสมบูรณ์แบบ เพราะเวลา TV เน้นภาพอยู่ด้านหน้า ฉันมักอยากรู้มากกว่าว่าทีมกลางตารางกำลังทำอะไรกันอยู่
  • ดูยอดเยี่ยม แต่คงดีถ้ามีวิธีให้รันได้ง่ายกว่านี้ ไบนารีสำหรับ Linux ไม่ได้เป็นแบบสแตนด์อโลน และต้องติดตั้ง dependency ของบุคคลที่สามด้วย น่าจะดีถ้ามี static binary (หรืออิมเมจคอนเทนเนอร์?)
  • ดูเจ๋งทีเดียว แต่ฉันทำให้ฟีเจอร์ดีเลย์ทำงานถูกต้องไม่ได้ กำลังพยายามดูรอบคัดเลือกแบบหน่วงเวลาประมาณ 25 นาที นาฬิกาแสดงเวลาถูกต้อง แต่เวลาไดรเวอร์ไม่ขึ้น ข้อความวิทยุและข้อความ race control กลับเป็นสถานะปัจจุบัน ฉันเห็นข้อความ race control และข้อความวิทยุทั้งหมดของ Q1 ได้