ฉันควรเลือกภาษาสคริปต์ใดสำหรับเกมของฉัน [ปิด]


53

ภาษาสคริปต์ดีกว่าภาษาอื่นในกรณีใดบ้าง

คำตอบทั้งหมดได้รับการชื่นชมโปรดระบุคำอธิบายและอธิบายในกรณีที่ภาษาดีขึ้น

(โปรดจำไว้ว่าหนึ่งภาษาต่อคำตอบ)

คำตอบ:


39

Lua ถูกนำมาใช้กันอย่างแพร่หลายในอุตสาหกรรมเกม จากเกมอิสระ ( Aquaria ) ถึงชื่อ AAA (อารยธรรม)

เหตุผลหลัก? ฉันจะบอกว่ามันเป็นเรื่องง่ายที่จะเรียนรู้และง่ายต่อการรวมเข้ากับเกมของคุณ แต่อาจพูดได้เหมือนกันกับ Python ฉันแน่ใจ โดยทั่วไปการเขียนสคริปต์นั้นไม่ยาก ฉันคิดว่าเหตุผลที่แท้จริงที่คุณควรไปกับ Lua คือเพราะมันได้รับการพิสูจน์แล้วซึ่งส่งผลให้มีทรัพยากรมากขึ้นสำหรับคุณที่จะเรียนรู้จาก .. หากคุณรู้สึกอยากทดลองกับบางสิ่งนอกเกณฑ์ปกติแล้วฉันจะเริ่มยุ่งกับภาษาอื่น


8
Lua เป็นที่นิยมมากเพราะมันมีคุณสมบัติ "ภาษาเมตา" คุณสามารถใช้โครงสร้างเชิงวัตถุหรือฟังก์ชั่นขั้นตอนบริสุทธิ์ ฯลฯ มันมีอินเตอร์เฟซ C ง่ายมากและให้นักพัฒนาเครื่องยนต์มีความยืดหยุ่นมากในภาษาของตัวเอง
Karantza

3
ฉันไม่เชื่อว่าหลามจะทำให้เป็นทางเลือกที่ดี การผูก C สำหรับไพ ธ อนนั้นมีมากขึ้นในการขยายไพ ธ อนด้วย C จากนั้นก็ฝังไพ ธ อนใน C
SpoonMeiser

5
จากสิ่งที่ฉันเคยได้ยินĹuaยังมีประสิทธิภาพการรันไทม์ที่ดีเมื่อเปรียบเทียบกับภาษาสคริปต์อื่น ๆ เช่น Python (และก็มีการสนับสนุนอย่างเต็มที่สำหรับการปิด - คุณสมบัติที่ดีจริงๆถ้าคุณถามฉัน .. )
thbusch

2
ที่จริงอารยธรรม IV ใช้หลาม ...
Emiliano

2
@happy_emi แน่นอนในขณะที่Civ V ใช้ Lua
Tobias Kienzler

22

กระรอก

กระรอกมีประวัติที่น่าสนใจ มันถูกสร้างขึ้นหลังจากสถาปนิกเกมมีปัญหาเกี่ยวกับการเก็บขยะของ Lua คาดเดาไม่ได้และบ้าทุกอย่างเป็นโมฆะแม้ว่ามันจะไม่ได้อยู่

กระรอกภาษา sripting ที่ใช้ในLeft 4 Dead 2 API นั้นเหมือน lua มาก (ผู้เขียนของ Squirrel ชอบการออกแบบของ Lua )

กระรอกเป็นภาษาที่ยอดเยี่ยมเพราะมันเป็นรุ่นที่สองลัวะ ใช้ความคิดที่ดีและลบสิ่งแปลกประหลาดที่น่ารำคาญออกไป

เหมือนกันจากลัวะ:

  • coroutines
  • ตารางและ metatables
  • พิมพ์แบบไดนามิก
  • มากขึ้น

ใหม่สำหรับกระรอก:

  • ชั้นเรียน
  • อาร์เรย์
  • regexs แทนไวยากรณ์การจับคู่ของ Lua
  • ภาษาสไตล์ C / C ++ / Java / C # แทนสไตล์ Pascal / Delphi
  • มากขึ้น

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


9

V8 Javascript จาก google

ข้อดี :

ค่อนข้างใช้งานง่าย

เริ่มดีขึ้นเรื่อย ๆ

ทรงพลังและยืดหยุ่น

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

เป็นไปได้ CON:

เอกสารอาจทำให้เกิดความสับสนมันไม่ได้ดีที่สุด

ตัวอย่างบ่อยครั้งที่เว็บแห่งความแปลกประหลาด ขาดความเรียบง่ายที่เป็นของแข็งมาในระดับที่สูงขึ้นกว่าที่เป็น

เทมเพลตบางครั้งสิ่งเหล่านี้ถูกเกลียดหรือหลีกเลี่ยง

ขนาด SDK Codebase ขนาดรหัสที่สร้างขึ้นอาจถูกพิจารณาว่าขยายตัว


ข้อเสียอย่างหนึ่งสำหรับฉันคือขนาด หากคุณกำลังสร้างเกมง่ายๆ / ไม่เป็นทางการเครื่องยนต์ v8 นั้นค่อนข้างใหญ่และอาจจะใหญ่กว่าเกมของคุณหลายเท่า
Zack The Human

จริง แต่เป็นไฟล์. lib แบบสแตนด์อโลนเป็นเรื่องที่น่ากังวลหรือไม่ เพียงเสียบช่องถัดจาก SDL ของคุณหรือ lua ของคุณ หากคุณหมายถึงขนาดรหัสที่สร้างขึ้นดีฉันยังไม่ได้ทดสอบว่ามันใหญ่แค่ไหน แต่ก็ไม่ได้แย่ขนาดนั้น
เน้นการค้นพบ

ฉันหมายถึงขนาดรหัสที่สร้างขึ้น ฉันคิดว่ามันไม่ใหญ่มากเมื่อเทียบกับขนาดของเกมส่วนใหญ่ในปัจจุบัน
Zack The Human

1
ทดสอบ shell.cc เริ่มต้นกับนาฬิกา SVN ล่าสุดในที่ 1.441 MB bit.ly/9DNn8J ในขณะที่สิ่งนี้ดูค่อนข้างหนัก แต่ห้องสมุดส่วนใหญ่ต้องการทำสิ่งอื่น (เครือข่ายกราฟิก) จะเพิ่มเข้าไปในนั้นอย่างมาก โครงการด้านข้างของฉันกับ v8, phoenixGL, ENet, พวงของการเพิ่มและรหัสอื่น ๆ อีกมากมายในการแก้ปัญหา (เช่นการบีบอัด, การเข้ารหัส, ห้องสมุด gui, awesomium) ที่ 2.5 MB ใน Visual Studio 2008 - และซิปใน " ปล่อย "build weights ในเวลา 861 KB สำหรับฉันนั่นไม่ใช่สิ่งที่เลวร้าย ในบางแพลตฟอร์มฉันเห็นว่ามันลำบาก แต่ไม่ใช่สำหรับที่สุด :)
เน้นย้ำการค้นพบ

1
ฉันเคยใช้ V8 สองสามครั้งก่อนในโครงการของฉัน IMO Javascript เป็นภาษาที่เหมาะสมที่สุดที่จะใช้สำหรับการเขียนสคริปต์เกม ลักษณะของเหตุการณ์และวัตถุที่ใช้ต้นแบบทำให้ทุกอย่างง่ายขึ้น :)
Stephen Belanger

7

ขึ้นอยู่กับเกมและแพลตฟอร์มเป้าหมาย

เกมที่รันตัวละครที่ไม่ใช่ผู้เล่น 100 คน (เกม RTS) มีความต้องการที่แตกต่างจากเกมที่รันเพียง 2 (สตรีทไฟท์เตอร์) เกมที่ทำงานบนพีซีนั้นมีความต้องการที่แตกต่างจากเกมที่รันบนคอนโซล

ลัวะเป็นที่นิยม

GameMonkeyถูกใช้โดยหลาย ๆ ทีม มันเร็วกว่า Lua และดีกว่าในการทำเกลียว

Python ถูกใช้ในหลาย ๆ เกม

JavaScript เป็นตัวเลือกที่เป็นไปได้เนื่องจากคุณสามารถดาวน์โหลดเอนจิ้น JavaScript มีโปรแกรมเมอร์ JavaScript มากกว่าโปรแกรมเมอร์ประเภทอื่น ๆ

นอกจากนี้ยังมีภาษาเฉพาะ

SCUMM ถูกนำมาใช้ในเกมผจญภัยหลายเกมและเหมาะอย่างยิ่งสำหรับเกมเหล่านั้น


Javascript เป็นความคิดที่ดีจริงๆ ฉันสงสัยว่าทำไมมันถึงไม่มีแรงฉุดในพื้นที่นี้? ความคิดใด ๆ
cflewis

จาวาสคริปต์มีแรงฉุด ความสามัคคีใช้มัน ดังนั้น Wolfire Games สำหรับเครื่องยนต์ของพวกเขา
AA Grapsas

เครื่องยนต์สองเครื่องไม่มีแรงฉุด ฉันเดาว่ามันเป็นเพียงการพัฒนาเมื่อเร็ว ๆ นี้เพราะไม่มีล่าม JavaScript ที่ดีมาก่อนโมโนและ V8 SpiderMonkey ไม่ใช่สิ่งที่คุณมองและพูดว่า "ใช่ฉันต้องการให้เกมของฉันนั้นรวดเร็วและมีความเสถียร!"

4

เพื่อความสมบูรณ์แบบตัวเลือกอื่นคือโมโนสคริปต์ซึ่งช่วยให้คุณสามารถใช้งาน Novell ของ. NET Framework สำหรับการเขียนสคริปต์ มันคือสิ่งที่ความสามัคคีใช้ นี่คืออีกหน้าหนึ่งเกี่ยวกับการฝังโมโนในแอปพลิเคชันของคุณ

เฟรมเวิร์กโมโนเร็วกว่าภาษาสคริปต์ส่วนใหญ่เพราะอาจไม่ถูกตีความและเนื่องจากมีเลเยอร์ระหว่างคอมไพเลอร์และชุดคำสั่งมันช่วยให้คุณสามารถเขียนโปรแกรมในภาษาต่างๆรวมถึงภาษา C # และภาษาถิ่นของ Python, Lua และ Javascript

ฉันไม่แน่ใจว่าจะให้บริการฟรีในทุกแพลตฟอร์มหรือไม่


4
โปรดทราบว่าหากคุณทำการพัฒนาคอนโซลรหัส JIT นั้นไม่เป็นที่ต้องการเนื่องจากคุณไม่สามารถทำเครื่องหมายหน้าข้อมูลเป็นไฟล์สั่งการได้ IL จะต้องมีการรวบรวมล่วงหน้าไปยังแพลตฟอร์มเป้าหมาย
Jeff

3
ปัญหา JIT ยังใช้กับ iOS Mono มีข้อ จำกัด ด้านลิขสิทธิ์ด้วย คุณต้องการสิทธิ์ใช้งานเชิงพาณิชย์หากคุณต้องการใช้งานในสภาพแวดล้อมที่ผู้ใช้ปลายทางไม่ได้รับอนุญาต / สามารถอัพเกรดรันไทม์โมโน
Sam

4

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

http://www.angelcode.com/angelscript/

ที่ถูกกล่าวว่าฉันสงสัย Lua มีข้อได้เปรียบบางประการที่ทำให้มันน่าสนใจสำหรับนักพัฒนาเกมเชิงพาณิชย์:

(a) มีความเป็นผู้ใหญ่และแพร่หลายมากกว่า AngelScript

(b) ไวยากรณ์ของมันง่ายกว่าสำหรับผู้ที่ไม่ได้เขียนโปรแกรม (AngelScript เป็นภาษา C ++ เหมือนกัน)

(c) มันมีขนาดเล็กกว่า AngelScript (อย่างน้อยเท่าที่ฉันจำได้)

ถ้าคุณเพียงแค่เขียนโครงการอดิเรกฉันอยากจะบอกว่าอย่างน้อย AngelScript ควรค่าแก่การดู


2

คุณควรเลือกภาษาสคริปต์ที่มีการเชื่อมโยงที่มั่นคงและได้รับการสนับสนุนเป็นอย่างดีกับภาษาพัฒนาหลักของเกมของคุณ หากคุณกำลังเขียนเกมของคุณใน C หรือ C ++ แสดงว่ามีการผูกที่ค่อนข้างแน่นสำหรับ Python และ Lua หากคุณกำลังเขียนเกมของคุณสำหรับแพลตฟอร์ม. NET (โดยใช้ภาษา C # หรือภาษาอื่น) ฉันขอแนะนำให้ใช้ IronPython หรือ IronRuby ทั้งสองเป็นการนำภาษามาใช้อย่างสมบูรณ์ซึ่งใช้ประโยชน์จาก Dynamic Language Runtime (DLR) ของ Microsoft ซึ่งให้ประสิทธิภาพที่ยอดเยี่ยมและการผนวกรวมกับ. NET Framework อย่างแน่นหนา ความสามารถในการทำงานร่วมกันระหว่าง C # และ IronPython / IronRuby ค่อนข้างราบรื่นในทุกวันนี้โดยเฉพาะอย่างยิ่งเมื่อมีการแนะนำการรวม callsite แบบไดนามิกใน C # 4.0


2

โครงการ

เอาซะเลย

ด้วยมารยาทคุณสามารถมี DSL (Domain Specific Language) ของคุณเองสำหรับเกมของคุณ เมื่อคุณคุ้นเคยกับเครื่องหมายวงเล็บและสัญลักษณ์นำหน้าแล้วชุดรูปแบบคือสวรรค์สำหรับการทำงานกับ

หากคุณกำลังจะใช้เล่ห์เหลี่ยมในเกมที่จริงจังฉันจะรอสองสามเดือนจนกว่าจะมีการเปิดตัว 2.0 ซึ่งจะรวมถึง IIRC ล่าม Ecmascript และโครงร่างปัจจุบัน คุณสามารถคาดหวังว่าจะเห็นการปรับปรุงความเร็วสูง


1

ขึ้นอยู่กับสิ่งที่คุณต้องการใช้ Lua ได้รับความนิยมอย่างมากแม้ว่าผู้พัฒนาเกมรายหนึ่งจะบอกกับฉันว่าเขาไม่แน่ใจว่าทำไม ฉันคิดว่าความเบาของมันเป็นเหตุผลทั่วไป แต่ ณ จุดนี้ฉันคาดว่าผู้คนจำนวนมากใช้ Lua เพราะนั่นกลายเป็นมาตรฐานโดยพฤตินัย ดูเหมือนว่าดีที่สุดสำหรับการปรับเปลี่ยนที่มีน้ำหนักเบามาก

สำหรับวิธีการที่สมบูรณ์แบบมากขึ้นฉันจะบอกว่า Python เป็นตัวเลือกที่เหมาะสม Civ IV ใช้มันเพื่อผลที่ดี


0

การเลือกภาษาสคริปต์หนึ่งภาษาเหนืออีกภาษาหนึ่งนั้นขึ้นอยู่กับข้อกำหนดเฉพาะของคุณ

ตัวเลือกบางอย่างที่คุณต้องเลือกอาจเป็น:

ความเร็วของล่าม - หากคุณลักษณะของการเขียนสคริปต์ถูกใช้เพียงอย่างเดียวเช่นโดยนักพัฒนาเพื่อเขียนสคริปต์พฤติกรรมคงที่ดังนั้นความเร็วและ API ที่มีการขยายและขยายได้อย่างเต็มที่อาจเป็นสิ่งสำคัญที่สุด ฉันมีประสบการณ์ที่ดีกับ LUA ที่นั่น

ง่ายต่อการเรียนรู้การเข้าถึง - สำหรับ content- / leveldesigner มันอาจจะยากที่จะเรียนรู้ภาษาสคริปต์ที่ซับซ้อนมากขึ้น (ขึ้นอยู่กับพื้นหลัง) เพื่อสร้างพฤติกรรมแบบไดนามิก ในกรณีดังกล่าวการใช้ภาษาที่ง่ายต่อการเรียนรู้ (เช่นที่ใช้กันทั่วไป) และภาษาที่มีเอกสารที่ดีอาจเหมาะสมกว่า JavaScript หรือ Python อาจเป็นทางออกที่ดีที่นี่

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


0

หากคุณกำลังทำงานกับชื่อเรื่องสำหรับ Windows และการเขียนโค้ดที่ได้รับการจัดการที่ทำงานอยู่ด้านบนของ Common Language Runtime (CLR) - สมมติว่าเช่นใน C # - ฉันขอแนะนำให้คุณดูที่การรวม (Iron) Python เป็นภาษาสคริปต์

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

นอกจากภาษาที่ง่ายต่อการเรียนรู้และมีประสิทธิภาพแล้ว CLR และทีมภาษาที่ Microsoft (Anders Hejlsberg, Eric Lippert, Mads Torgersen, Jim Hugunin และคณะ) ได้ทำงานที่ยอดเยี่ยมในการเปิดเผยคุณสมบัติคอมไพเลอร์และรันไทม์ผ่าน Dynamic ใหม่ Language Runtime (DLR) ใน. NET 4 ทำให้การทำงานร่วมกันระหว่างโค้ดที่พิมพ์แบบสแตติกและโค้ดที่พิมพ์แบบไดนามิกนั้นตรงไปตรงมามากขึ้น จากสิ่งที่ฉันได้เห็นและทดลองใช้จนถึงตอนนี้รหัสแผ่นความร้อนลดลงเหลือน้อยที่สุด มันจะทำให้ codebase ของคุณสะอาดและบำรุงรักษาได้

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


0

คำตอบนั้นขึ้นอยู่กับสภาพแวดล้อมของคุณ ฉันกำลังทำงานกับ Unity อยู่ดังนั้นฉันจึงใช้ภาษาโมโน (ในกรณีของฉัน C # แต่ Javascript และ Boo ก็เป็นตัวเลือกด้วย) คำตอบนั้นขึ้นอยู่กับสถานการณ์เฉพาะของคุณ


-2

ActionScript เป็นภาษาพิมพ์แบบไดนามิก / แบบคงที่แบบไฮบริดที่ใช้ในการสร้างเกม Flash ซึ่งสามารถเผยแพร่บนเว็บได้อย่างกว้างขวาง ได้รับการสนับสนุนเป็นอย่างดีกับห้องสมุดเช่น Flixel, FlashPunk และ Box2d


-2

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

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


ฉันจะเขียนล่ามหรือคอมไพเลอร์ jit ใน haskell สำหรับ sth เช่น lisp / scheme หรือ bash หรือ python หรือ lua หรือ erlang (อะไรก็ตามที่ไม่มี libs มาตรฐาน) ในหนึ่งหรือสองวัน ฉันจะไม่แนะนำให้เขียนล่ามใน C ++ หรือ Java ตราบใดที่มันไม่ได้สำหรับการตีความ sth lisp เช่น แต่นั่นไม่ใช่คำถาม
comonad

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