มีเอ็นจิ้นเกมใด ๆ ที่ใช้ภาษาการเขียนโปรแกรมที่ใช้งานได้หรือไม่? [ปิด]


10

มีเอ็นจิ้นเกมใด ๆ ที่ใช้ภาษาการเขียนโปรแกรมที่ใช้งานได้คล้ายกับ Scheme, Common Lisp, Clojure หรือ JavaScript หรือไม่?

ฉันได้ลอง Unity3D แล้ว "JavaScript" ของพวกเขาไม่ใช่ JavaScript จริง ๆ แล้วพิมพ์ออกมาอย่างรุนแรงและไม่สามารถใช้งานได้


2
ฉันใช้ ThreeJS แต่ในขณะที่มันเต็มไปด้วยความสุดยอดมันขาดชุมชนที่ใช้งานและเอกสารประกอบเป็นปัญหาร้ายแรง
MaiaVictor

5
ทำไมคุณต้องการตั้งโปรแกรมในภาษาที่ใช้งานได้? คุณประสบปัญหาอะไร กรุณาเจาะจงมากขึ้น คำถามนี้กว้างเกินไปที่จะให้คำตอบที่ถูกต้องหนึ่งคำตอบและมีแนวโน้มที่จะสร้างรายการคำตอบ (ทั้งหมด "เท่าเทียมกัน" ถูกต้อง ") เช่นนี้: - Clojure รวมกับโปรแกรมเกม Java ใด ๆ - วิธีการเกี่ยวกับการใช้รูปแบบการเขียนโปรแกรมฟังก์ชั่นในภาษาที่ไม่ทำงานต่อ se? (อ่านการเขียนโปรแกรมฟังก์ชั่นใน C ++โดย Carmack) - ฯลฯ
Eric

2
Javascript ของ Unity3D นั้นใช้งานได้เหมือนJavascript ทั่วไปคุณเพียงแค่ต้องใช้ C # 4.0 ประเภทเช่น:var add : Func<int, int, int> = ...
fableal

2
ดูคำถามที่พบบ่อยเกี่ยวกับคำถาม "เทคโนโลยีที่จะใช้" คำถามนี้ตามที่แสดงเป็นเพียงการสร้างรายการ มันไม่สร้างสรรค์เนื่องจากไม่มีคำตอบเดียวที่ถูกต้อง (นอกเหนือจาก "ใช่มี") นี่ไม่ใช่ที่สำหรับรวบรวมรายชื่อ
MichaelHouse

2
นี่เป็นปัญหา "เครื่องมือที่เหมาะสมสำหรับงานที่ถูกต้อง" ฟังก์ชั่นการเขียนโปรแกรมมุ่งเน้นไปที่การลดและขจัดสถานะที่ไม่แน่นอนที่เป็นไปได้ ซึ่งอาจทำงานได้ดีสำหรับแอปพลิเคชั่นบางประเภท แต่มันตรงกันข้ามกับวิธีการทำงานของเกมใด ๆ
Mason Wheeler

คำตอบ:


7

มีLambdaCubeที่เขียนใน Haskell (มันไม่เหมือนกับเอ็นจิ้นเกม แต่เหมือนกับกราฟิกเอ็นจิ้น )


2
สิ่งนี้อาจเป็นที่สนใจของคุณ (ทั่วไปจาก Tim Sweeney จาก Epic)
tumdum

ลิงค์ที่น่าสนใจมี ppt ที่นี่
bobobobo

2

คุณสามารถใช้ f # หรือ iron python ได้ (ใช่ฉันรู้ว่า python ไม่สามารถใช้งานได้) หรือภาษา. netified อื่น ๆ ที่มี XNA บนแพลตฟอร์ม. net

http://fsharpgamedev.codeplex.com/ http://www.ironpython.info/index.php/XNA_Example_with_a_Bouncing_Sprite

แก้ไข: อีกหนึ่งเครื่องมือที่เขียนด้วย Lisp: http://code.google.com/p/blackthorn-engine/


2

ฉันไม่มีคำตอบสำหรับคำถามตามที่เขียน แต่ฉันเชื่อว่าคุณอาจลองถามว่า "ทำไมจึงไม่มีเอ็นจิ้นเกมทำงานมากกว่า" แทนที่จะมองหาคำถามเฉพาะที่จะใช้ หากถูกต้องคุณควรใช้ถ้อยคำใหม่อีกครั้ง ถ้าไม่ ... ไม่สนใจฉัน :)

วิธีการใช้งานอย่างแท้จริงนั้นไม่เหมาะสำหรับเกม เกม (และกราฟิกและฟิสิกส์และ AI) และโดยทั่วไปเกี่ยวกับการเปลี่ยนแปลงสถานะ วิธีการทำงานที่ถูกต้องของปัญหาเหล่านี้คือการคำนวณสถานะใหม่ทั้งหมดหนึ่งครั้งต่อลูปซึ่งจะมีโทษประสิทธิภาพที่รุนแรงมากเมื่อเทียบกับการเข้ารหัสโดยตรงกับการทำงานของฮาร์ดแวร์จริง

ด้วยเหตุนี้คุณจึงไม่เห็นเอ็นจิ้นเกมสไตล์การทำงานใด ๆ ในการผลิต เป็นเพียงกระบวนทัศน์การเขียนโปรแกรมที่ผิดสำหรับปัญหาส่วนใหญ่ที่เอ็นจิ้นเกมมีไว้เพื่อแก้ไข มันเป็นกระบวนทัศน์การเขียนโปรแกรมที่ผิดสำหรับปัญหาส่วนใหญ่ที่ต้องได้รับการแก้ไขในระดับสูงกว่าการเขียนสคริปต์และรหัสเกมตรรกะ ในขณะที่เกือบจะเป็นไปได้ที่จะสร้างเอ็นจิ้นเกมที่ใช้งานได้มันจะช้าใช้งานยากและยุ่งยากและจะไม่มีจุดประสงค์ที่แท้จริงนอกเหนือไปจากการสาธิต / เล่นของเล่นให้เรียบร้อย

ไม่ได้หมายความว่าการเขียนโปรแกรมการทำงานไม่มีที่ใดที่หนึ่งในเกม ฉันใช้รูปแบบการเขียนโค้ดที่ใช้งานได้ดี (ในกรณีที่เหมาะสม) ใน C #, Unity JavaScript และแม้แต่ C ++ 11 ปัญหาบางอย่างที่เฉพาะเจาะจงนั้นดีที่สุดหรืออย่างน้อยก็แก้ไขได้อย่างง่ายดายที่สุดด้วยสไตล์การใช้งานและภาษายอดนิยมส่วนใหญ่ในปัจจุบันสนับสนุนรูปแบบของการเขียนโปรแกรมแม้ว่าจะมีความยุ่งยากมากกว่าภาษาที่ใช้งานได้จริง โดยทั่วไปปัญหาเหล่านี้แก้ไขได้ด้วยวิธีการใช้งานที่ไม่ได้อยู่ในรหัสเครื่องยนต์หลักหรือรหัสที่ทำงานในเกม ฟังก์ชั่นการเข้ารหัสสามารถเป็นประโยชน์สำหรับเครื่องมือและการประมวลผลข้อมูลออฟไลน์ (ตัวอย่างรุ่นการทำเบเกอรี่และสินทรัพย์อื่น ๆ ) นอกจากนี้ยังเป็นที่ถกเถียงกันอยู่ว่าการเขียนโปรแกรม GPU ทำงานได้ไม่ดีในการเขียนอัลกอริธึม

แน่นอนว่ายังคงเป็นการดีที่สุดที่จะหลีกเลี่ยงวิธีการใช้งานนอกสถานการณ์ที่เฉพาะเจาะจงเนื่องจากคุณต้องการให้เครื่องมือออฟไลน์เหล่านี้ทำงานได้เร็วที่สุด ภาษาที่ใช้งานได้ดีในแบบขนานซึ่งดีสำหรับปัญหาบางอย่าง แต่นามธรรมจากฮาร์ดแวร์มีแนวโน้มที่จะนำไปสู่ประสิทธิภาพของเธรดเดี่ยวที่ไม่มีประสิทธิภาพ (ภาษาอย่าง LISP ทำได้ดีที่นี่เพราะพวกมันไม่ได้ใช้งานได้จริงและในความเป็นจริง LISP ทั่วไปนั้นมีหลายกระบวนทัศน์) สิ่งที่เลวร้ายที่สุดอย่างแน่นอนสำหรับเกมเอ็นจิ้นหรือชุดเครื่องมือที่เกี่ยวข้องคือคอขวดสำหรับเนื้อหาซ้ำ เอนจิ้นแฟนซีที่มีคุณสมบัติมากมายที่ใช้เวลาศิลปินหรือนักออกแบบระดับในการทำสิ่งที่สามารถทำได้ภายใน 5 นาที (หรือใกล้เคียงทันที) จะนำไปสู่เกมที่มีคุณภาพต่ำหรือยกเลิกเนื่องจากการเพิ่มงบประมาณ


1
ดู: ทำความสะอาดคลังเกม (สะอาด) และนิกกี้และหุ่นยนต์ (Haskell)
Andres F.

1
คำตอบนี้ส่วนใหญ่ผิดและดูเหมือนจะอยู่บนพื้นฐานของความเข้าใจที่ไม่ดีของภาษาที่ใช้งานจริง
CA McCann

1
คุณมีจุดนับจริงหรือไม่?
Sean Middleditch

4
... คุณมีประสบการณ์มากแค่ไหนในการจัดส่งเกมที่มีคุณภาพในอุตสาหกรรมเป็นภาษาที่ใช้งานได้? หากคุณมีประสบการณ์แบ่งปัน สร้างข้อความที่มีคำอธิบายและเหตุผลไม่ดึงดูดความเชี่ยวชาญหรือผู้มีอำนาจหรือข้อกล่าวหาส่วนตัว ความน่าจะเป็นของการโต้เถียงแบบไม่พอใจและการทะเลาะวิวาทส่วนบุคคลเป็นสิ่งที่ว่าทำไมคำถามนี้จึงถูกปิด
Sean Middleditch

4
คุณเอาคำใส่ปากฉัน ฉันไม่ได้ระบุระดับประสบการณ์ของฉันเพราะความเห็นของคุณเกี่ยวกับความเชี่ยวชาญของฉันนั้นไม่เกี่ยวข้องกับหัวข้อ อย่าอ้างว่าคุณไม่มีเวลาที่จะระบุข้อเท็จจริงขณะที่มีเวลาโจมตีระดับทักษะส่วนบุคคล คุณอาจมีการแก้ไขที่แท้จริง แต่คุณจำเป็นต้องระบุ "ผู้ชายคนนั้นผิด" ไม่ใช่คำตอบที่มีค่าสำหรับทุกคน ฉันสามารถอ้างได้ว่าคุณผิดแล้วเรามีวงจรการทะเลาะวิวาทที่ไม่มีที่สิ้นสุดและไม่มีจุดหมาย กรุณาพูดว่าทำไมคำตอบไม่ถูกต้อง
Sean Middleditch

0

บริษัท Naugthy Dog ใช้ List ใน Game Engines และเรียกว่า Game Oriented Assembly Lisp

ข้อมูลบางอย่างสามารถพบได้ที่นี่: http://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp

ตัวอย่างโค้ดบางอย่าง: http://web.archive.org/web/20070127022728/http://lists.midnightryder.com/pipermail/sweng-gamedev-midnightryder.com/2005-August/003804.html

มันไม่สามารถใช้ได้สำหรับการใช้งานสาธารณะ


หากคุณดูที่คำอธิบายของวิกิพีเดียมันจะปรากฏอย่างรวดเร็วว่าเป้าหมายนั้นแทบจะเป็นภาษาที่ใช้งานไม่ได้
Mason Wheeler
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.