ชุมชนเกมเรโทรกำลังตื่นเต้นกับเอมูเลเตอร์ Game Boy ใหม่ที่ชื่อว่า retroboy ซึ่งเขียนด้วยภาษา Rust และสามารถทำงานได้โดยตรงบนเว็บเบราว์เซอร์ โปรเจกต์นี้แสดงให้เห็นว่าภาษาโปรแกรมมิ่งสมัยใหม่และ WebAssembly กำลังช่วยให้นักพัฒนาสามารถนำประสบการณ์การเล่นเกมคลาสสิกมาสู่เว็บได้อย่างแม่นยำน่าประทับใจ
ความท้าทายและความก้าวหน้าของการจำลองเกมบนเว็บ
เอมูเลเตอร์นี้ได้รับความสนใจอย่างมากจากคุณสมบัติที่ครอบคลุม ซึ่งรวมถึงการจำลอง CPU อย่างแม่นยำ การรองรับระบบเสียง และความเข้ากันได้กับ Memory Bank Controllers (MBCs) หลากหลายรูปแบบ อย่างไรก็ตาม การสนทนาในชุมชนเผยให้เห็นว่าการจำลองเสียงยังคงเป็นหนึ่งในความท้าทายที่ยากที่สุดของเอมูเลเตอร์บนเบราว์เซอร์ ผู้ใช้หลายคนรายงานว่าได้ยินเสียงคลิกและเสียงแปลกปลอมอื่นๆ ที่ไม่ควรมีในเกมต้นฉบับ ซึ่งดูเหมือนจะเป็นปัญหาทั่วไปกับ WebAssembly และระบบเสียงในเบราว์เซอร์
เกือบทุกอย่างที่เป็น WASM+Audio ดูเหมือนจะมีปัญหานี้ในเบราว์เซอร์ปัจจุบัน เว้นแต่คุณจะระมัดระวังอย่างมากเกี่ยวกับสิ่งที่คุณกำลังทำและใช้ประโยชน์จากหลายเธรด ผมคิดว่าปัญหาส่วนใหญ่อยู่ที่บริบทแบบเธรดเดียว ซึ่งต้องสลับระหว่างการเล่นเสียงและการทำงานอื่นๆ
นักพัฒนาในความคิดเห็นอธิบายว่าข้อจำกัดด้านประสิทธิภาพของ WebAudio มักต้องการบัฟเฟอร์เสียงที่ใหญ่กว่ามาก (อย่างน้อย 100 มิลลิวินาที) เมื่อเทียบกับแอปพลิเคชันแบบเนทีฟ (20 มิลลิวินาที) และการดรอปเฟรมหรือปัญหาด้านประสิทธิภาพใดๆ สามารถทำให้เกิดปัญหาเสียง บางคนแนะนำให้ใช้เธรดแยกสำหรับการประมวลผลเสียงเป็นทางแก้ไขที่เป็นไปได้ แม้ว่าวิธีนี้จะเพิ่มความซับซ้อนให้กับการพัฒนาอย่างมากก็ตาม
คุณสมบัติหลักของอีมูเลเตอร์ retroboy:
- CPU ที่มีความแม่นยำในระดับไซเคิลซึ่งผ่านการทดสอบ JSON CPU ทั้งหมด
- การจำลองเสียงที่แม่นยำ (มีข้อจำกัดบางประการในเบราว์เซอร์)
- การจำลองกราฟิกโดยใช้ตัวเรนเดอร์แบบสแกนไลน์
- รองรับ MBC1, MBC3, MBC5 และ HuC1
- รองรับ RTC สำหรับตลับเกม MBC3
- การเก็บรักษาข้อมูล RAM ของตลับเกมผ่านการจัดเก็บในเบราว์เซอร์แบบโลคอล
- รองรับการโกงเกมแบบ GameShark หรือ GameGenie
- ส่วนติดต่อผู้ใช้บนเว็บพร้อมโหมดเต็มจอ, หยุดชั่วคราว/เล่นต่อ และการปรับแต่งการควบคุมได้
ระบบนิเวศของเอมูเลเตอร์ Rust ที่กำลังเติบโต
โปรเจกต์นี้เข้าร่วมกับระบบนิเวศที่กำลังเติบโตของเอมูเลเตอร์ที่ใช้ Rust โดยมีผู้แสดงความคิดเห็นหลายคนแชร์ลิงก์ไปยังโปรเจกต์ที่คล้ายกันของพวกเขา ภาษาโปรแกรมมิ่ง Rust ดูเหมือนจะได้รับความนิยมมากขึ้นสำหรับโปรเจกต์เอมูเลชันเนื่องจากคุณลักษณะด้านประสิทธิภาพและความปลอดภัยของหน่วยความจำ เมื่อคอมไพล์เป็น WebAssembly เอมูเลเตอร์เหล่านี้สามารถทำงานได้อย่างมีประสิทธิภาพในเบราว์เซอร์โดยไม่ต้องมีปลั๊กอินหรือการดาวน์โหลด
การจัดระเบียบโค้ดที่สะอาดได้รับคำชมเฉพาะจากนักพัฒนาหลายคนที่ต้องการเรียนรู้จากโปรเจกต์นี้ บางคนกล่าวว่าพวกเขาลังเลที่จะเริ่มโปรเจกต์เอมูเลชันของตัวเองเนื่องจากความไม่แน่ใจเกี่ยวกับเฟรมเวิร์กและเครื่องมือ แต่พบว่าแนวทางของโปรเจกต์นี้ที่ใช้ wasm-bindgen และ HTML Canvas นั้นตรงไปตรงมาและน่าสนใจ
เกม Game Boy ที่ได้รับการแนะนำมากที่สุด (จากความคิดเห็น):
- Pokémon Red/Blue และ Gold/Silver
- The Legend of Zelda: Link's Awakening
- Tetris
- Super Mario Land 1 และ 2
- Kirby's Dream Land
- Wario Land II และ III
- Donkey Kong (1994)
ความนิยมที่ไม่เสื่อมคลายของเกมเรโทร
นอกเหนือจากการสนทนาทางเทคนิค ความคิดเห็นยังเผยให้เห็นถึงความนิยมที่ยังคงมีอยู่ของเกมและฮาร์ดแวร์ Game Boy ผู้ใช้แชร์เกมโปรดของพวกเขาอย่างกระตือรือร้น โดยมีเกม Pokémon, Zelda: Link's Awakening และ Tetris ถูกกล่าวถึงบ่อยครั้งว่าเป็นประสบการณ์ที่สำคัญ การสนทนายังเน้นย้ำถึงฉากโฮมบรูที่กำลังเฟื่องฟูซึ่งสร้างเกมใหม่สำหรับฮาร์ดแวร์คลาสสิก รวมถึงซีเควนเซอร์ดนตรีอย่าง LSDj และการพัฒนา Tetris รูปแบบใหม่
ผู้แสดงความคิดเห็นหลายคนสังเกตว่าพวกเขาได้ซื้อเครื่องเล่นเกมพกพาเรโทรจากผู้ผลิตเช่น Anbernic และ Miyoo ในราคาเริ่มต้นประมาณ 50 ปอนด์ (ประมาณ 65 ดอลลาร์สหรัฐ) ซึ่งสามารถจำลองไม่เพียงแค่ Game Boy แต่รวมถึงระบบไปจนถึง PlayStation 1 สิ่งนี้บ่งชี้ถึงตลาดที่แข็งแกร่งสำหรับประสบการณ์การเล่นเกมเรโทรแบบพกพานอกเหนือจากการจำลองเกมด้วยซอฟต์แวร์เพียงอย่างเดียว
ผู้สร้างโปรเจกต์ซึ่งรู้สึกประหลาดใจกับความสนใจที่โปรเจกต์งานอดิเรกเล็กๆ ของพวกเขาได้รับ กล่าวว่าพวกเขาพบว่า wasm-bindgen ค่อนข้างง่ายต่อการใช้งาน การเข้าถึงนี้ชี้ให้เห็นว่าเทคโนโลยีเว็บสมัยใหม่กำลังลดอุปสรรคในการเข้าถึงโปรเจกต์เอมูเลชันที่ซับซ้อน ช่วยให้นักพัฒนาเข้ามามีส่วนร่วมในการอนุรักษ์ประวัติศาสตร์เกมได้มากขึ้น ในขณะที่ทำให้เข้าถึงได้ผ่านแพลตฟอร์มเว็บเบราว์เซอร์ที่แพร่หลาย
อ้างอิง: retroboy