นักพัฒนา Go ถกเถียงบทบาทของภาษาในการพัฒนาเกมหลังโปรเจกต์ DOOM Port จุดประกายการอภิปราย

ทีมชุมชน BigGo
นักพัฒนา Go ถกเถียงบทบาทของภาษาในการพัฒนาเกมหลังโปรเจกต์ DOOM Port จุดประกายการอภิปราย

โปรเจกต์ Go port ใหม่ของเกมคลาสสิก DOOM ได้จุดประกายการอภิปรายที่น่าสนใจในหมู่นักพัฒนาเกี่ยวกับตำแหน่งของ Go ในการพัฒนาเกมและการเปรียบเทียบกับภาษาโปรแกรมมิ่งอื่นๆ โปรเจกต์ที่เรียกว่า GORE นี้เป็นการแปลงเกมเอนจิ้นในตำนานจาก C เป็น Go อย่างสมบูรณ์ โดยลบการพึ่งพาแพลตฟอร์มออกไปพร้อมกับรักษาประสบการณ์การเล่นเกมแบบเดิมไว้

คุณสมบัติของโปรเจค GORE :

  • ไม่ขึ้นกับแพลตฟอร์ม (รันได้ทุกที่ที่ Go รันได้)
  • ไม่มีการพึ่งพา CGo
  • รองรับ DOOM หลายเวอร์ชัน ( DOOM , DOOM II , Ultimate DOOM , Final DOOM )
  • ปลอดภัยด้านหน่วยความจำด้วย garbage collector ของ Go
  • รองรับการ cross-compilation
  • ต้องการ Go 1.24+ และไฟล์ WAD

ความเหมาะสมของ Go สำหรับการพัฒนาเกม

การตอบสนองจากชุมชนเผยให้เห็นความรู้สึกที่หลากหลายแต่โดยรวมเป็นบวกเกี่ยวกับการใช้ Go สำหรับการพัฒนาเกม นักพัฒนาบางคนชื่นชมที่โปรเจกต์นี้แสดงให้เห็นทางเลือกอื่นจากแนวทาง C และ C++ แบบดั้งเดิมในการเล่นเกม การอภิปรายเน้นย้ำถึงความสามารถในการคอมไพล์ข้ามแพลตฟอร์มและฟีเจอร์ความปลอดภัยของหน่วยความจำของ Go เป็นข้อได้เปรียบที่สำคัญเหนือภาษาระดับต่ำกว่า

อย่างไรก็ตาม การสนทนายังสัมผัสถึงข้อจำกัดของ Go ในพื้นที่เกมมิ่งด้วย ภาษานี้ยังขาดไลบรารีกราฟิกและการพัฒนาเกมที่กว้างขวางเมื่อเปรียบเทียบกับระบบนิเวศที่มีการสร้างมาอย่างยาวนาน Ebitengine ที่กล่าวถึงในโปรเจกต์ดูเหมือนจะเป็นหนึ่งในเฟรมเวิร์กการพัฒนาเกมที่โดดเด่นไม่กี่ตัวที่มีให้สำหรับนักพัฒนา Go

ข้อจำกัดปัจจุบัน:

  • หนึ่งอินสแตนซ์ต่อหนึ่งโปรเซสเนื่องจากตัวแปรส่วนกลาง
  • ค่าคงที่ที่ส่งออกแบบสุ่มจากการแปลง C
  • API ภายนอกที่จำกัดสำหรับการตรวจสอบสถานะ
  • ยังคงมีบล็อกโค้ดที่ไม่ปลอดภัยบางส่วน
  • การรองรับอินพุตที่จำกัดในเวอร์ชันเทอร์มินัล

การเปรียบเทียบภาษาและปรัชญาการออกแบบ

การถกเถียงที่ร้อนแรงเป็นพิเศษเกิดขึ้นเกี่ยวกับการเปรียบเทียบ Go กับ Python โดยนักพัฒนาอภิปรายว่า Go สามารถถือได้ว่าเป็น Python 4.0 หรือไม่ ชุมชนชี้ให้เห็นความแตกต่างพื้นฐานระหว่างภาษาทั้งสอง - ลักษณะที่คอมไพล์แล้วของ Go เทียบกับแนวทางแปลผลของ Python และการมุ่งเน้นของ Go ในเรื่อง concurrency เทียบกับการเน้นของ Python ในเรื่องความง่ายในการใช้งาน

Go มุ่งเน้นที่ concurrency ส่วน Python มุ่งเน้นที่การทำให้การเขียนโค้ดเป็นเรื่องง่าย หลายสิ่งที่เป็น one-liner ใน Python ใน Go ต้องใช้หลายบรรทัดหรือ boilerplate มาก

การอภิปรายเผยให้เห็นว่าแม้ Go จะเสนอความยืดหยุ่นของ structural typing ที่คล้ายกับภาษาสคริปต์ แต่ก็ต้องการโค้ดที่ verbose มากกว่าสำหรับงานที่ภาษาอื่นจัดการได้อย่างกระชับมากกว่า

การใช้งานทางเทคนิคและข้อจำกัด

โปรเจกต์ GORE แสดงให้เห็นทั้งจุดแข็งและข้อจำกัดปัจจุบันของ Go การ port นี้ขจัด CGo dependencies และโค้ดเฉพาะแพลตฟอร์มได้สำเร็จ ทำให้เป็น cross-platform อย่างแท้จริง อย่างไรก็ตาม นักพัฒนาสังเกตเห็นความท้าทายที่เหลืออยู่หลายประการ รวมถึงการมีอยู่ของตัวแปรโกลบอลที่ป้องกันไม่ให้มีหลาย game instance และบล็อกโค้ด unsafe ที่เหลืออยู่บางส่วน

แนวทางของโปรเจกต์ในการแปลงโค้ด C เป็น Go แล้วทำความสะอาดด้วยตนเองเป็นจุดกึ่งกลางที่น่าสนใจระหว่างการแปลงอัตโนมัติและการเขียนใหม่ทั้งหมด วิธีการนี้รักษาโครงสร้างของเกมต้นฉบับไว้ในขณะที่ทำให้เข้ากับสไตล์การเขียนโปรแกรมของ Go มากขึ้น

การอภิปรายของชุมชนชี้ให้เห็นว่าแม้ Go อาจไม่ใช่ตัวเลือกแรกสำหรับการพัฒนาเกม แต่โปรเจกต์อย่าง GORE แสดงให้เห็นความเป็นไปได้สำหรับแอปพลิเคชันเกมบางประเภท โดยเฉพาะอย่างยิ่งที่ให้ความสำคัญกับความเข้ากันได้ข้ามแพลตฟอร์มและความปลอดภัยของหน่วยความจำมากกว่าประสิทธิภาพแบบดิบ

อ้างอิง: GORE