ภาษาใดที่ใช้งานได้เหมาะสมที่สุดในการสร้างเกมด้วย? [ปิด]


19

ฉันมีตาของฉันในการเขียนโปรแกรมภาษาการทำงานในขณะที่ แต่ลังเลที่จะเข้าไปในพวกเขาจริง ๆ แต่ฉันคิดว่ามันเป็นเวลาที่ฉันเริ่มมองทิศทางนั้นอย่างน้อยเพื่อให้แน่ใจว่าฉันพร้อมสำหรับทุกสิ่ง

ฉันเคยเห็นเรื่อง Haskell, F #, Scala และอื่น ๆ แต่ฉันไม่มีเงื่อนงำความแตกต่างระหว่างภาษาและชุมชนของพวกเขาและฉันไม่สนใจเป็นพิเศษ ยกเว้นในบริบทของการพัฒนาเกม

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

Bottom line: ภาษาโปรแกรมที่ใช้งานได้ดีที่สุดสำหรับการเขียนโปรแกรมเกมที่ใช้งานได้และทำไม?

ฉันเชื่อ / หวังว่าคำถามนี้จะประกาศภาษาที่ดีที่สุดอย่างชัดเจนดังนั้นฉันจึงไม่ได้ทำเครื่องหมายว่า CW แม้จะมีแนวโน้มที่เป็นอัตวิสัยก็ตาม


2
"คุณหมายถึงอะไรเกม 2D หรือเกม 3D" "ไม่ฉันไม่รู้ - aieeee "
Cyclops

@ ไซคลอปเอ่ออะไรนะ? ฉันไม่เข้าใจ ...
Ricket

@Ricket ส่วนหนึ่งเป็นคำขอที่จะอธิบายประเภทของเกมที่คุณกำลังพูดถึง 2D หรือ 3D (และอาจเป็นแบบเรียลไทม์หรือเทิร์นเบส) ส่วนหนึ่งเป็นเรื่องตลก Monty-Python ซึ่งบดบังส่วนแรก Wups :) และฉันคิดว่าการระบุประเภทของเกมนั้นมีประโยชน์ - เว้นแต่ว่ามีฟังก์ชั่นภาษาเดียวที่สมบูรณ์แบบสำหรับทุกอย่างภาษาที่แตกต่างกันอาจดีกว่าในสิ่งที่แตกต่างกัน
ไซคลอป

ฉันไม่เชื่อว่า 2D หรือ 3D ส่งผลกระทบต่อการเลือกภาษายกเว้นเครื่องมือ / ไลบรารีที่มีให้สำหรับภาษาต่างๆ ฉันสนใจทั้งแบบ 2D และ 3D เป็นการส่วนตัวดังนั้นฉันจึงไม่ได้คิดถึงสิ่งใดสิ่งหนึ่งเมื่อเขียนคำถามนี้ แต่โดยรวมแล้วเกม 2D และ 3D ใช้ระบบและโครงสร้างข้อมูลร่วมกันจำนวนมาก (เช่นออดิโอ, อินพุต, AI, โครงสร้างโปรแกรม, ลูปเกม) และมีเกม 3D จำนวนมากที่สามารถย้ายไปยัง 2D หรือในทางกลับกัน และใช่ฉันไม่เห็น Monty Python ดังนั้นฉันจึงไม่เข้าใจเลย :)
Ricket

1
ฉันไม่คิดว่าจะมีคำตอบที่ชัดเจนเกี่ยวกับภาษาที่ดีที่สุด
Wei Hu

คำตอบ:


12

F # เป็นส่วนหนึ่งของตระกูล Microsoft. net สามารถเข้าถึง XNA ซึ่งเป็นฐานที่ยอดเยี่ยมสำหรับการสร้างเกม googling จะมีบทช่วยสอนวิดีโอและบทความบางส่วน เอกสาร XNA ที่ยอดเยี่ยมน่าจะช่วยได้เช่นกัน

มีการเคลื่อนไหวบางอย่างในเกมสำหรับ Haskell เป็นอย่างดีดูที่นี่ คุณอาจกำลังใช้การผูก openGL

ตั้งแต่ Scala เล่นในที่ดิน Java ก็ทำงานร่วมกับทั้งหมดที่มีเครื่องมือ Java / ผูก, เห็นนี้ดังนั้นการโพสต์

ฉันคิดว่ามันเป็นความชอบในขณะที่ฉันเล่นกับ Haskell เท่านั้นฉันคิดว่าภาษาที่ใช้งานได้แต่ละภาษามีความเป็นตัวของตัวเอง มันอาจจะคุ้มค่าที่จะลองเล่นเกมทดสอบเล็ก ๆ ในแต่ละเกมและดูว่าเกมไหนที่คุณรู้สึกดีกว่า

อย่างที่ฉันบอกว่าฉันมีประสบการณ์ Haskell เพียงเล็กน้อยเท่านั้นดังนั้นฉันจึงไม่สามารถแสดงความคิดเห็นได้ดีที่สุด แต่แหล่งข้อมูลเหล่านี้ควรช่วยให้คุณเริ่มต้นได้อย่างหวัง


2
ระหว่างปัญหากับ JVM และความไม่บรรลุนิติภาวะของการใช้งานคอมไพเลอร์ฉันพบว่าประสิทธิภาพของ Scala ไม่สามารถยอมรับได้เมื่อใช้สไตล์การทำงานแม้ว่าภาษานั้นจะรองรับได้ดีก็ตาม มันจบลงด้วยความรวดเร็วเท่ากับพูด Python หรือ Ruby ไม่ใช่ F # หรือ OCaml (ความเร็วของ Scala สามารถแข่งขันกับรูปแบบ OO / ขั้นตอนเพิ่มเติมได้)

จริง ๆ แล้วฉันได้รับโครงการ F # ที่ใช้งาน XNA (นั่นคือหน้าต่าง XNA ว่างเปล่าที่มีสีฟ้าของคอร์นฟลาวเวอร์เพียงรหัสคือ F # และไม่ใช่ C #
RCIX

8

ฉันจะพูดเสียงกระเพื่อม

มันถูกใช้ในเกมเป็นภาษาสคริปต์อย่างน้อย Naughty Dog (หรืออย่างที่ฉันคิด) และเป็นภาษาที่สมบูรณ์มาก

ข้อดีของ LISP คือการกำจัดของเสีย (Deserialization) ซึ่งเป็นส่วนสำคัญของการจัดการสินทรัพย์ Deserializing lisp เป็นเรื่องไม่สำคัญรหัสและข้อมูลเป็นหนึ่งเดียวกัน สิ่งนี้ทำให้ง่ายขึ้นที่จะมีรูปแบบไฟล์สำหรับสินทรัพย์และพฤติกรรม มันไม่เหมือนคุณคนหนึ่งใน json / xml / yaml / bin และไฟล์ F # หนึ่งไฟล์สำหรับ AI คุณสามารถบันทึกทุกอย่างเป็น s-expressions ซึ่งจะทำให้การไพพ์ไลน์ของสินทรัพย์ง่ายขึ้นมาก


TBH ฉันอยากจะแนะนำสิ่งนี้ ภาษาสคริปต์ไม่เพียง แต่ให้นักพัฒนาใช้ modders จะต้องการปรับเปลี่ยนเกมและไม่มีอะไรที่จะทำให้พวกเขากลัวเร็วกว่า (() ()))) () () (.) นอกจากนี้แม้ภาษาที่ใช้งานได้จะยังคงมีอยู่ Lisp เป็นความลับ
RCIX

7
หากการฝืนตัวโมเดอเรเตอร์เป็นสิ่งที่ทำให้คุณกังวลการใช้ภาษาที่ใช้งานได้อาจไม่ใช่ทางที่ถูก
Paul Wicks

3
@RCIX & @Joe - พลัง Necro เปิดใช้งาน อย่างไรก็ตามโครงการจะถูกนำมาใช้เป็นภาษาการเรียนการสอน SICPเปรียบเสมือน CS ครึ่งหนึ่งในหนังสือเล่มหนึ่งและถูกใช้โดยโรงเรียนหลายแห่ง (รวมถึง MIT จนกระทั่งเมื่อเร็ว ๆ นี้) และHTDPเป็นการแนะนำที่ไม่ยอมใครง่ายๆ
Jesse Millikan

1
@RCIX & Joe แน่นอน เสียงกระเพื่อมและโครงการมีภาษาเบื้องต้นที่มากของมหาวิทยาลัย
oberhamsi

1
เสียงกระเพื่อมไม่ใช่สิ่งที่คุณต้องการใช้ Naughty Dog มีหนึ่งโปรแกรมเมอร์ Lisp เดี่ยวและเมื่อเขาออกจากพวกเขาเปลี่ยนเครื่องยนต์ทั้งหมดเป็น C ++ ไม่มีความคิดว่าทำไมเครื่องยนต์ล้าสมัยจาก บริษัท หนึ่งได้รับการลากออกมาเป็นตัวอย่างที่ส่องแสงตลอดเวลา =)
แพทริคฮิวจ์

8

หลังจากได้รับประสบการณ์จริงกับมันฉันจะลงคะแนนให้ Clojure - เขียนเกมเล็ก ๆ หนึ่งเกมไว้แล้วและวางแผนที่จะทำมากขึ้น

เหตุผล:

  • ผลผลิต - Clojure เป็นภาษาแบบไดนามิก มันมีคุณสมบัติที่ยอดเยี่ยมสำหรับการพัฒนาสไตล์ REPL แบบอินเทอร์แอคทีฟตัวอย่างเช่นคุณสามารถใช้ REPL เพื่อสอบถามหรือแก้ไขสถานะภายในอินสแตนซ์ของแอปพลิเคชันเกมที่รันอยู่ รหัสใน Clojure ก็มักจะรัดกุมขัน ฉันคิดว่าฉันมีประสิทธิผลมากกว่า Clojure 3-5 เท่าใน Java หรือ C #
  • ไม่บริสุทธิ์ - ในขณะที่ฉันชื่นชมความงามและความสง่างามของภาษาที่ใช้งานได้อย่าง Haskell การเขียนโปรแกรมเกมเป็นสิ่งที่ยุ่งเหยิงซึ่งผู้นิยมลัทธิปฏิบัตินิยมชนะ ฉันต้องการที่จะสามารถใส่ผลข้างเคียงในฟังก์ชั่นของฉันเมื่อฉันต้องการพวกเขาและ Clojure อนุญาตนี้ ต้องบอกว่าสไตล์ Clojure สำนวนคือสามารถทำงานได้อย่างหมดจดมากที่สุดของเวลา
  • Metaprogramming - มรดกเสียงกระเพื่อมของ Clojure เป็นภาษาhomoiconicทำให้เหมาะสำหรับการสร้าง metaprogramming / code มันง่ายที่จะ "ขยายภาษา" เพื่อสร้าง DSL ของคุณเองหรือกำจัดแผ่น biolerplate คุณสามารถใช้ Clojure ได้อย่างง่ายดายเนื่องจากเป็นภาษาสคริปต์ของเกมเองและการรวบรวมรหัสแบบไดนามิกหมายความว่าสคริปต์ของคุณจะทำงานได้เร็วเท่ากับเอ็นจิ้นเกมหลักของคุณ
  • การเข้าถึงห้องสมุด Java คุณสามารถใช้ไลบรารีเสียง / กราฟิก / AI / เครือข่ายทั้งหมดจาก Java ซึ่งเป็นข้อได้เปรียบอย่างมากเมื่อเทียบกับภาษาที่ใช้งานได้ส่วนใหญ่ (ซึ่งคุณจะต้องเขียนสิ่งเหล่านี้ตั้งแต่ต้น นี่สามารถช่วยชีวิต
  • ข้ามแพลตฟอร์ม - นี่ฟรีจากการทำงานบน JVM แต่มันเป็นโบนัสที่ดี
  • ประสิทธิภาพ - สำหรับภาษาที่ใช้งานได้แบบไดนามิก Clojure เร็วพอที่จะรับได้ มันถูกรวบรวม JIT เสมอไม่เคยตีความ ด้วยการปรับให้เหมาะสมอย่างชาญฉลาดคุณสามารถจับคู่ความเร็วของรหัส Java ระดับต่ำใน Clojure ได้ ตัวอย่างเช่นคุณสามารถใช้อาร์เรย์ดั้งเดิมของ Java หรือจัดทำคำแนะนำประเภทเพื่อให้แน่ใจว่าคอมไพเลอร์สร้างการเรียกใช้ฟังก์ชันที่พิมพ์แบบคงที่ในรหัสที่มีประสิทธิภาพที่สำคัญ
  • การทำงานพร้อมกัน - Clojure มีรูปแบบที่ยอดเยี่ยมสำหรับการจัดการสถานะพร้อมกันได้รับการสนับสนุนโดยระบบหน่วยความจำทรานแซคชันของซอฟต์แวร์ที่น่าประทับใจ ควรดูวิดีโอนี้เพื่อรับข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับวิธีการทำงาน

ครั้งเดียวที่ฉันไม่คิดว่า Clojure จะเป็นถ้าฉันเขียนเกมแบบกราฟิกที่ล้ำสมัยซึ่งคุณต้องการประสิทธิภาพการทำงานที่ทันสมัย

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