ดาวน์โหลดบน App Storeดาวน์โหลดบน Google Play

วิกิ

ซอร์สโค้ด Chrome Dino

เบื้องหลังโค้ดโอเพนซอร์สของ T-Rex Runner ของ Google

อัปเดตเมื่อ วิกิเผยแพร่ครั้งแรกเมื่อ
ซอร์สโค้ด Chrome Dino
รูปแบบการเล่นของ The Jumping DinoiOS + Android

เกม Chrome Dino เป็นส่วนหนึ่งของโปรเจกต์โอเพนซอร์ส Chromium ดังนั้นการใช้งานปัจจุบันจึงสามารถตรวจสอบได้โดยตรงในที่เก็บซอร์สโค้ดของ Google ณ เดือนกรกฎาคม 2026 เกมอยู่ใน components/neterror/resources/dino_game/ ตัวควบคุม Runner หลักอยู่ใน offline.ts ในขณะที่การให้คะแนน, T-Rex, อุปสรรค, ขอบฟ้า, สไปรต์, สถานะเกม และเสียงถูกแบ่งออกเป็นโมดูล TypeScript ที่เน้นเฉพาะ คำอธิบายเก่าที่อธิบายไฟล์ offline.js ปัจจุบันกำลังอ้างถึงสถาปัตยกรรม Chromium ก่อนหน้า เกมยังคงใช้ HTML Canvas API และไพรเมอร์การจับเวลาของเบราว์เซอร์แทนที่จะเป็นเอนจินเกมของบุคคลที่สาม Runner ประสานงานอินพุตและสถานะ, Trex ควบคุมพฤติกรรมการกระโดดและก้ม, Obstacle และ Horizon จัดการโลกที่เคลื่อนไหว, และ DistanceMeter แปลงระยะทางเป็นคะแนนที่แสดง distance_meter.ts ปัจจุบันยังพิสูจน์ว่าการแสดงผลจะขยายจากห้าเป็นหกหลักหลังจาก 99,999 สำหรับนักพัฒนา โค้ดนี้เป็นตัวอย่างที่มีประโยชน์และกระชับของ TypeScript แบบโมดูลาร์, การเล่นเกมที่ขับเคลื่อนด้วยการกำหนดค่า, การสนับสนุนการเข้าถึง, แอนิเมชันสไปรต์, การตรวจจับการชนกัน และลูป requestAnimationFrame

01

คลาสหลักและสถาปัตยกรรม

ซอร์สโค้ด Chrome Dino ปัจจุบันจัดระเบียบเป็นโมดูลที่เน้นเฉพาะ: - offline.ts / Runner: ประสานงาน game loop, อินพุต, ความเร็ว, สถานะคะแนน, พฤติกรรมการหยุดชั่วคราว/รีสตาร์ท และการเข้าถึง

  • trex.ts: จัดการฟิสิกส์การกระโดด, การก้ม, สถานะแอนิเมชัน และกล่องการชนกัน
  • obstacle.ts: กำหนดการเคลื่อนที่และการเกิดของกระบองเพชรและเทอโรแดกทิล
  • horizon.ts และไฟล์ที่เกี่ยวข้อง: วาดพื้น, เมฆ, ดวงจันทร์, โหมดกลางคืน และโลกที่เลื่อน
  • distance_meter.ts: แปลงระยะทางเป็นคะแนน, วาดคะแนนสูงสุด, แสดงความสำเร็จ และขยายการแสดงผลหลังจากห้าหลักแรก
  • game_config.ts และไฟล์คำจำกัดความสไปรต์: ทำให้ความเร็ว, ช่องว่าง, โหมด และตำแหน่งสินทรัพย์ถูกขับเคลื่อนด้วยการกำหนดค่า โครงสร้าง TypeScript แบบโมดูลาร์นี้มาแทนที่โครงสร้าง JavaScript ไฟล์เดียวแบบเก่า
02

Game Loop ทำงานอย่างไร

เกมใช้ลูป requestAnimationFrame มาตรฐาน ในแต่ละเฟรม เมธอด Runner.update จะ: 1. คำนวณเวลาที่ผ่านไปตั้งแต่เฟรมสุดท้าย 2. อัปเดตความเร็วเกมตามระยะทางที่ผ่านไป 3. เคลื่อนย้ายอุปสรรคทั้งหมดด้วยความเร็วปัจจุบัน 4. ตรวจสอบการชนกันระหว่าง T-Rex และอุปสรรคใดๆ 5. อัปเดตคะแนนและมาตรวัดระยะทาง 6. ล้าง Canvas และวาดองค์ประกอบทั้งหมดใหม่ 7. กำหนดเวลาเฟรมถัดไป หากตรวจพบการชนกัน เกมจะเข้าสู่สถานะ 'crashed' เล่นแอนิเมชันสั้นๆ และรอให้ผู้เล่นกด spacebar เพื่อรีสตาร์ท เกมทั้งหมดทำงานที่เป้าหมาย 60 เฟรมต่อวินาที พร้อมการชดเชยเวลาเดลต้าเพื่อให้แน่ใจว่าฟิสิกส์สอดคล้องกันทั้งบนจอแสดงผลที่เร็วและช้า

03

เรียนรู้จาก Codebase

ซอร์สโค้ดปัจจุบันแสดงให้เห็นแนวคิดทางวิศวกรรมที่มีประโยชน์หลายประการในคุณสมบัติการผลิตจริง: - ความรับผิดชอบแบบโมดูลาร์: ตัวรัน, ตัวละคร, โลก, คะแนน, สถานะ และสินทรัพย์เป็นโมดูล TypeScript แยกต่างหาก

  • อินพุตที่ขับเคลื่อนด้วยเหตุการณ์: แป้นพิมพ์, ตัวชี้, การสัมผัส, การมองเห็น, โฟกัส และเหตุการณ์เกมแพดป้อนสถานะเกมเดียวกัน
  • สถานะที่ชัดเจน: พฤติกรรมการรอ, การวิ่ง, การกระโดด, การก้ม, การหยุดชั่วคราว และการชนกันถูกแสดงโดยตรง
  • การเล่นเกมที่ขับเคลื่อนด้วยการกำหนดค่า: การเร่งความเร็ว, ความเร็วสูงสุด, ช่องว่างของอุปสรรค, สัมประสิทธิ์มือถือ และโหมดทางเลือกถูกขับเคลื่อนด้วยข้อมูล
  • การเข้าถึง: ข้อความในพื้นที่สด, ป้ายกำกับ, การควบคุมการชะลอความเร็ว และทางเลือกอินพุตเป็นส่วนหนึ่งของการใช้งานปัจจุบัน
  • การจับเวลาที่คำนึงถึงอัตราเฟรม: requestAnimationFrame และเวลาที่ผ่านไปทำให้การเคลื่อนไหวสอดคล้องกัน อ่านไฟล์ Chromium ปัจจุบันแทนที่จะเป็นบทช่วยสอนที่คัดลอกมาซึ่งสร้างขึ้นจากเค้าโครง offline.js ที่เลิกใช้แล้ว
หัวข้อchrome dinoซอร์สโค้ดjavascriptchromiumโอเพนซอร์ส

เล่นไปอ่านไป

เล่นตอนนี้หรือรับเกมตัวเต็ม

เล่นเกมวิ่งบนเบราว์เซอร์ หรือรับแอปมือถือพร้อมโหมดแคมเปญ, โหมด Infinite, การพัฒนาไดโนเสาร์ และการแข่งขันผี AI

แหล่งที่มาและข้อมูลอ้างอิง

ตรวจสอบล่าสุดเมื่อ:

  • As the Chrome dino runs, we caught up with the Googlers who built it

    Googleบทสัมภาษณ์อย่างเป็นทางการของ Google กับผู้สร้าง Chrome Dino เกี่ยวกับที่มา, การควบคุม, Project Bolan และจำนวนการเล่นต่อเดือน

  • Chromium dino_game source directory

    Chromiumการใช้งาน Chrome Dino แบบโอเพนซอร์สในปัจจุบัน รวมถึงตรรกะของตัววิ่ง, อุปสรรค และการจัดการสไปรต์

เลื่อนระดับ

ชอบเกมคลาสสิกใช่ไหม? มาพบกับวิวัฒนาการ

The Jumping Dino นำทุกสิ่งที่คุณชื่นชอบเกี่ยวกับเกม Chrome Dino และเปลี่ยนให้เป็นการผจญภัยเต็มรูปแบบ

แคมเปญ + ไม่มีที่สิ้นสุด + ผู้เล่นหลายคน
ช่วยเหลือไข่ข้าม 5 ยุค
ฟักไดโน, สร้าง Sanctuary
iOS & Android; 2 โหมดออฟไลน์

3M+

ยอดดาวน์โหลด

4.3★

คะแนน Google Play

9.28K

รีวิว

ชอบเกมคลาสสิกใช่ไหม? มาพบกับวิวัฒนาการ
ดาวน์โหลดบน App Storeดาวน์โหลดบน Google Play

คำตอบ

คำถามที่พบบ่อย

ใช่ Chrome Dino เป็นส่วนหนึ่งของโปรเจกต์โอเพนซอร์ส Chromium การใช้งานปัจจุบันอยู่ใน components/neterror/resources/dino_game โดยมีตัวรันหลักอยู่ใน offline.ts และโมดูล TypeScript แยกต่างหากสำหรับมาตรวัดระยะทาง, T-Rex, อุปสรรค, ขอบฟ้า และระบบอื่นๆ

การใช้งาน Chromium ปัจจุบันเขียนด้วย TypeScript และคอมไพล์สำหรับ Chrome โดยใช้ API ของเบราว์เซอร์และ HTML Canvas แทนที่จะเป็นเอนจินเกมของบุคคลที่สาม Chromium เวอร์ชันเก่าเก็บตรรกะส่วนใหญ่ไว้ในไฟล์ offline.js ไฟล์เดียว

คุณสามารถดูและ fork ซอร์สโค้ด Chromium ภายใต้ใบอนุญาตโอเพนซอร์สได้ คุณไม่สามารถแก้ไขเวอร์ชันที่ทำงานอยู่ในเบราว์เซอร์ Chrome ของคุณได้หากไม่ได้สร้าง Chromium เวอร์ชันที่กำหนดเอง อย่างไรก็ตาม คุณสามารถจัดการเกมที่กำลังทำงานอยู่ผ่านคอนโซล JavaScript ของ Chrome ได้

โค้ดปัจจุบันเป็นตัวอย่างที่กระชับของ TypeScript แบบโมดูลาร์, แอนิเมชันสไปรต์ Canvas, การตรวจจับการชนกันของกล่องขอบเขต, การเล่นเกมที่ขับเคลื่อนด้วยการกำหนดค่า, ฮุกการเข้าถึง และการจับเวลา requestAnimationFrame โดยไม่มีเอนจินเกมของบุคคลที่สาม

สำรวจต่อไป

หน้าเว็บที่เกี่ยวข้อง