# โกโด (เกมเอนจิน)
โกโด  เป็นเกมเอนจินเสรีและโอเพนซอร์สข้ามแพลตฟอร์ม ซึ่งเผยแพร่ภายใต้สัญญาอนุญาตของสถาบันเทคโนโลยีแมสซาชูเซตส์ เดิมทีได้รับการพัฒนาใน กรุงบัวโนสไอเรสโดยนักพัฒนาซอฟต์แวร์ชาวอาร์เจนตินา ฆวน ลีนีเอ็ตสกี (Juan Linietsky) และ แอเรียล มานซูร์ (Ariel Manzur) สำหรับใช้ในบริษัทหลายแห่งในละตินอเมริกา ก่อนที่จะเผยแพร่สู่สาธารณะในปี 2014 สิ่งแวดล้อมการพัฒนาใช้งานได้บนหลากหลายแพลตฟอร์ม และสามารถส่งออกผลงานไปยังแพลตฟอร์มอื่นๆ ได้อีกมากมาย เอนจินนี้ได้รับการออกแบบมาเพื่อสร้างเกมทั้ง 2D และ 3D สำหรับแพลตฟอร์มคอมพิวเตอร์ส่วนบุคคล มือถือ และ เว็บ และยังสามารถใช้ในการพัฒนาซอฟต์แวร์ที่ไม่ใช่เกม รวมถึงโปรแกรมแก้ไขอีกด้วย

 คุณสมบัติ 
โกโดช่วยให้ผู้พัฒนาวิดีโอเกม สามารถสร้างเกมทั้งแบบ 2D และ 3D โดยใช้ภาษาการเขียนโปรแกรมหลายภาษา เช่น C++, C# และ GDScript ในเอนจินมีระบบลำดับชั้นของโหนดเพื่ออำนวยความสะดวกในการพัฒนา สามารถสร้างคลาสจากประเภทโหนดเพื่อสร้างประเภทโหนดที่มีความเฉพาะทางมากขึ้นซึ่งสามารถสืบทอดได้ โหนดจะถูกจัดระเบียบภายใน "ฉาก" ซึ่งเป็นกลุ่มโหนดที่สามารถนำกลับมาใช้ใหม่ได้ สร้างอินสแตนซ์ได้ สืบทอดได้ และซ้อนกันได้ ทรัพยากรเกมทั้งหมด รวมถึงสคริปต์และทรัพยากรกราฟิก จะถูกบันทึกไว้เป็นส่วนหนึ่งของ ระบบไฟล์ ของคอมพิวเตอร์ (แทนที่จะอยู่ใน ฐานข้อมูล) วิธีการจัดเก็บข้อมูลนี้มีวัตถุประสงค์เพื่ออำนวยความสะดวกในการทำงานร่วมกันระหว่างทีมพัฒนาเกมโดยใช้ระบบการควบคุมการปรับปรุงแก้ไขซอฟต์แวร์

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

โปรแกรมแก้ไขโกโดที่ใช้สำหรับการสร้างเกมโกโดรองรับแพลตฟอร์มต่อไปนี้:

 แพลตฟอร์มเดสก์ท็อปลินุกซ์, แมคโอเอส, ไมโครซอฟท์ วินโดวส์ เผยแพร่บนเว็บไซต์ บนสตีม  บนอีปีค (Epic Game Store) และบนอิตช์ (itch.io)
 แพลตฟอร์มเว็บ HTML5, เว็บแอสเซมบลี โดยใช้ตัวแก้ไขเว็บ
 โทรศัพท์และแท็บเล็ตแอนดรอยด์ (พร้อมใช้งานตั้งแต่โกโด 3.6 ขึ้นไปและ 4.3 ขึ้นไป)
 รองรับเบิร์กลีย์ซอฟต์แวร์ดิสตริบิวชันด้วยเช่นกัน แต่จะต้องคอมไพล์ด้วยตนเอง

เอนจินรองรับการส่งออกโครงการไปยังแพลตฟอร์มอื่นๆ อีกมากมาย รวมถึงแพลตฟอร์มแก้ไขทั้งหมด แพลตฟอร์มที่รองรับในปัจจุบันของ โกโด4.0 ได้แก่:

 แพลตฟอร์มเดสก์ท็อปลินุกซ์, แมคโอเอส, ไมโครซอฟท์ วินโดวส์ , เบิร์กลีย์ซอฟต์แวร์ดิสตริบิวชัน (ถ้าเป็น เบิร์กลีย์ซอฟต์แวร์ดิสตริบิวชัน จะต้องคอมไพล์ด้วยตนเอง)
 แพลตฟอร์มมือถือแอนดรอยด์, ไอโอเอส
 แพลตฟอร์มเว็บ HTML5, เว็บแอสเซมบลี (C# ยังไม่พร้อมใช้งานบนเว็บ)
 แพลตฟอร์มเสมือนจริง/ขยายความเป็นจริง HTC Vive, Valve Index, Oculus Rift, Oculus Go, Oculus Quest, ชุดหูฟัง Microsoft MR ทั้งหมด, ARKit ของ Apple และอื่นๆ อีกมากมาย

เอนจินโกโดสามารถรันบนเครื่องเล่นวิดีโอเกมได้ แม้ว่าเครื่องเล่นวิดีโอเกมยอดนิยมจะไม่ได้รับการสนับสนุนอย่างเป็นทางการ เนื่องจากไม่อนุญาตให้เผยแพร่รหัสเฉพาะแพลตฟอร์มภายใต้สัญญาอนุญาตโอเพนซอร์ซ เกมสามารถพอร์ตไปยังเครื่องเล่นวิดีโอเกมได้ผ่านบริษัทบุคคลที่สาม ขณะนี้ทีมงานโกโดกำลังพัฒนาให้โกโด 4 รองรับเครื่องเล่นวิดีโอเกมโดยทีมงานภายนอกได้ W4 Games บริษัทเชิงพาณิชย์ที่ก่อตั้งโดยสมาชิกบางส่วนของผู้นำโครงการโกโด ได้ประกาศวา่ต่อไปจะให้บริการพอร์ตเกมที่สร้างด้วยโกโด 4.0 ให้กับแพลตฟอร์ม ไมโครซอฟท์, นินเท็นโด และ โซนี่

สำหรับสถาปัตยกรรม CPU นั้น โกโดรองรับเอกซ์86 (x86) อย่างเป็นทางการบนแพลตฟอร์มเดสก์ท็อปทั้งหมด (ทั้ง 32 บิตและ 64 บิต หากมี) และมีการรองรับสถาปัตยกรรมตระกูล ARM อย่างเป็นทางการบนแมคโอเอสและลินุกซ์,   แพลตฟอร์มมือถือ และแพลตฟอร์ม Oculus แบบสแตนด์อโลน (ทั้ง 32 บิตและ 64 บิต หากมี) แพลตฟอร์มเว็บใช้เว็บแอสเซมบลี 32 บิต นอกจากนี้ยังมีการรองรับริสค์-วี (RISC-V) และ PowerPC ลินุกซ์อย่างไม่เป็นทางการและถือเป็นเพียงแค่การทดลอง

 การเขียนสคริปต์ 
thumb|306x306px| ภาพหน้าจอของการแก้ไขไฟล์ GDScript โดยใช้ตัวแก้ไขสคริปต์ในตัวของโกโด 3.4
โกโดรองรับภาษาการเขียนโปรแกรมต่างๆ สำหรับการสร้างเกม รวมถึงภาษาที่แถมมากับตัวที่ชื่อจีดีสคริปท์ (GDScript) นอกจากนั้นก็มี C++  และ C# นอกจากนี้ เอนจินยังมี GDNative ซึ่งเป็นเครื่องมือสำหรับสร้างการผูกกับภาษาอื่นๆ อีกด้วย ภาษาที่ GDNative รองรับอย่างเป็นทางการได้แก่ C และ C++  ภาษาที่ชุมชนสร้างการรองรับให้ ได้แก่ ภาษารัสต์ (Rust), ภาษานิม (Nim), ภาษาแฮสเคิล(Haskell), ภาษาโคลจูร์ (Clojure), ภาษาซวิฟท์ (Swift) และ ภาษาดี (D) นอกจากนี้ยังรองรับการเขียนโค้ดเชิงภาพ ผ่าน Orchestrator ภาษาเสรีและโอเพนซอร์สของบุคคลที่สาม  การเขียนโค้ดเชิงภาพเดิมทีนั้นใช้ VisualScript ซึ่งแถมมากับตัวเอนจิน ซึ่งได้รับการออกแบบมาให้เทียบเท่ากับ GDScript แต่ต่อมาในโกโด 4.0 ตัว VisualScript ก็ถูกลบออกจากเอนจินหลัก นอกจากนี้เกมโกโดที่รันบนเบราว์เซอร์สามารถเชื่อมต่อกับรหัสจาวาสคริปต์ของเบราว์เซอร์ได้

โปรแกรมแก้ไข โกโดประกอบด้วยตัวแก้ไขข้อความที่มีการเยื้องอัตโนมัติ ไฮไลท์ไวยากรณ์ การพับรหัส และการเติมรหัส นอกจากนี้ยังมีโปรแกรมดีบักเกอร์ที่สามารถกำหนดจุดพักและ ขั้นตอนการทำงานของโปรแกรม (program stepping) ได้

 จีดีสคริปท์ 

โกโดมีภาษาสคริปต์ในตัวมันเองที่เรียกว่าจีดีสคริปท์  ซึ่งเป็นภาษาโปรแกรม ระดับสูงที่มีการกำหนดประเภทแบบค่อยเป็นค่อยไป ซึ่งมีไวยากรณ์คล้ายกับภาษาไพทอน แต่ต่างจากไพทอนตรงที่จีดีสคริปท์ได้รับการปรับปรุงให้เหมาะสมสำหรับสถาปัตยกรรมแบบฉากของโกโดและสามารถระบุประเภทของตัวแปรที่เข้มงวดได้ นักพัฒนาของโกโดได้ระบุว่ามีการทดสอบภาษาสคริปต์ของบุคคลที่สามมาเป็นทางเลือกมากมาย เช่น ภาษาลูอา, ภาษาไพทอน และ กระรอก (ภาษาโปรแกรม) (Squirrel) ก่อนที่จะตัดสินใจว่าการใช้ภาษาที่สร้างขึ้นใหม่นั้นจะช่วยเพิ่มประสิทธิภาพและบูรณาการกับตัวแก้ไขได้ดียิ่งขึ้น ในเวอร์ชัน 4.0 ฟีเจอร์ใหม่ที่เรียกว่า Typed array ได้ถูกนำไปใช้บนจีดีสคริปท์ ช่วยให้ผู้ใช้สามารถเปลี่ยนอาร์เรย์ปกติเป็นแบบมีชนิดและเปลี่ยนกลับได้อย่างง่ายดายโดยไม่ต้องเปลี่ยนแปลงรหัสมากนัก ในการอัปเดต 4.0 ในภายหลัง ยังมีการเพิ่มพจนานุกรมแบบมีประเภท (Typed Dictionaries) ซึ่งทำให้ผู้ใช้สามารถประกาศคู่ กุญแจ-ค่า ที่มีประเภทชัดเจนเพื่อเพิ่มความปลอดภัยของประเภทของสคริปต์ต่อไป  ประเภทคงที่ (static types) ที่เป็นตัวเลือกที่ช่วยให้แบ็กเอนด์ C++ สามารถใช้การปรับแต่งที่ทำให้ประสิทธิภาพเพิ่มขึ้นอย่างเห็นได้ชัด โดยพบว่าจีดีสคริปท์ที่ใช้ประเภทคงที่ทำงานเร็วขึ้นกว่า 40%

โปรแกรมเฮลโลเวิลด์ง่ายๆ สามารถเขียนได้ดังนี้:func _ready:
	print("Hello World")โปรแกรมที่ซับซ้อนมากขึ้น เช่น การสร้างลำดับฟีโบนักชี สามารถเขียนได้ดังนี้:func _ready:
	var nterms = 5
	print("Fibonacci sequence:")
	for i in range(nterms):
		print(fibonacci(i))

func fibonacci(n):
	if n <= 1:
		return n
	else:
		return fibonacci(n - 1) + fibonacci(n - 2)

 การนำไปใช้ 
OKAM Studio ได้ผลิตเกมหลายเกมด้วยโกโด เช่น Dog Mendonça & Pizza Boy, ที่ใช้ส่วนขยาย Escoria adventure game extension นอกจากนี้ยังใช้เอนจินนี้ในการเรียนการสอนระดับมัธยมปลายในรัฐเวสต์เวอร์จิเนีย เนื่องจากใช้ได้ง่ายแม้ผู้ใช้จะเขียนโปรแกรมไม่เป็นก็ตาม  และยังมีสื่อการเรียนการสอนเพียบพร้อมอีกด้วย นอกจากนี้ Gotcha Gotcha Games ผู้สร้าง RPG Maker ประกาศว่าจะใช้โกโดเป็นระบบสร้างเกมใหม่ของพวกเขา ระบบนี้ชื่อ Action Game Maker และมีกำหนดเผยแพร่ในปี พ.ศ. 2568