ภาษาสคริปต์ดีกว่าภาษาอื่นในกรณีใดบ้าง
คำตอบทั้งหมดได้รับการชื่นชมโปรดระบุคำอธิบายและอธิบายในกรณีที่ภาษาดีขึ้น
(โปรดจำไว้ว่าหนึ่งภาษาต่อคำตอบ)
ภาษาสคริปต์ดีกว่าภาษาอื่นในกรณีใดบ้าง
คำตอบทั้งหมดได้รับการชื่นชมโปรดระบุคำอธิบายและอธิบายในกรณีที่ภาษาดีขึ้น
(โปรดจำไว้ว่าหนึ่งภาษาต่อคำตอบ)
คำตอบ:
Lua ถูกนำมาใช้กันอย่างแพร่หลายในอุตสาหกรรมเกม จากเกมอิสระ ( Aquaria ) ถึงชื่อ AAA (อารยธรรม)
เหตุผลหลัก? ฉันจะบอกว่ามันเป็นเรื่องง่ายที่จะเรียนรู้และง่ายต่อการรวมเข้ากับเกมของคุณ แต่อาจพูดได้เหมือนกันกับ Python ฉันแน่ใจ โดยทั่วไปการเขียนสคริปต์นั้นไม่ยาก ฉันคิดว่าเหตุผลที่แท้จริงที่คุณควรไปกับ Lua คือเพราะมันได้รับการพิสูจน์แล้วซึ่งส่งผลให้มีทรัพยากรมากขึ้นสำหรับคุณที่จะเรียนรู้จาก .. หากคุณรู้สึกอยากทดลองกับบางสิ่งนอกเกณฑ์ปกติแล้วฉันจะเริ่มยุ่งกับภาษาอื่น
กระรอกมีประวัติที่น่าสนใจ มันถูกสร้างขึ้นหลังจากสถาปนิกเกมมีปัญหาเกี่ยวกับการเก็บขยะของ Lua คาดเดาไม่ได้และบ้าทุกอย่างเป็นโมฆะแม้ว่ามันจะไม่ได้อยู่
กระรอกภาษา sripting ที่ใช้ในLeft 4 Dead 2 API นั้นเหมือน lua มาก (ผู้เขียนของ Squirrel ชอบการออกแบบของ Lua )
กระรอกเป็นภาษาที่ยอดเยี่ยมเพราะมันเป็นรุ่นที่สองลัวะ ใช้ความคิดที่ดีและลบสิ่งแปลกประหลาดที่น่ารำคาญออกไป
เหมือนกันจากลัวะ:
ใหม่สำหรับกระรอก:
ข้อเสียเปรียบหลักของกระรอกคือไม่ใช่ Lua ลัวะใช้กันอย่างแพร่หลายมากขึ้น แต่ถ้าหากนั่นไม่ใช่ปัญหา Squirrel เป็นชัยชนะที่ง่าย อย่างไรก็ตามบ่อยครั้งที่ความนิยมของภาษาเป็นคุณสมบัติที่มีประโยชน์ในตัวเองดังนั้นการตัดสินใจจึงไม่ชัดเจนนัก
V8 Javascript จาก google
ข้อดี :
ค่อนข้างใช้งานง่าย
เริ่มดีขึ้นเรื่อย ๆ
ทรงพลังและยืดหยุ่น
อื่น ๆดังที่กล่าวไว้ javascript เป็นเครื่องมือโปรแกรมเมอร์ทั่วไป การเพิ่มลงในเกมของฉันได้เปิดผู้คนจำนวนมากที่รู้สึกมีความสามารถมากกว่าภาษาอื่น ๆ นอกจากนี้ยังรองรับการหล่อและการแปลงเป็นจำนวนมากเพื่อประหยัดงานของโปรแกรมเมอร์ทำให้ใช้งานได้ง่ายใช้งานได้ดีกับ STL
เป็นไปได้ CON:
เอกสารอาจทำให้เกิดความสับสนมันไม่ได้ดีที่สุด
ตัวอย่างบ่อยครั้งที่เว็บแห่งความแปลกประหลาด ขาดความเรียบง่ายที่เป็นของแข็งมาในระดับที่สูงขึ้นกว่าที่เป็น
เทมเพลตบางครั้งสิ่งเหล่านี้ถูกเกลียดหรือหลีกเลี่ยง
ขนาด SDK Codebase ขนาดรหัสที่สร้างขึ้นอาจถูกพิจารณาว่าขยายตัว
ขึ้นอยู่กับเกมและแพลตฟอร์มเป้าหมาย
เกมที่รันตัวละครที่ไม่ใช่ผู้เล่น 100 คน (เกม RTS) มีความต้องการที่แตกต่างจากเกมที่รันเพียง 2 (สตรีทไฟท์เตอร์) เกมที่ทำงานบนพีซีนั้นมีความต้องการที่แตกต่างจากเกมที่รันบนคอนโซล
ลัวะเป็นที่นิยม
GameMonkeyถูกใช้โดยหลาย ๆ ทีม มันเร็วกว่า Lua และดีกว่าในการทำเกลียว
Python ถูกใช้ในหลาย ๆ เกม
JavaScript เป็นตัวเลือกที่เป็นไปได้เนื่องจากคุณสามารถดาวน์โหลดเอนจิ้น JavaScript มีโปรแกรมเมอร์ JavaScript มากกว่าโปรแกรมเมอร์ประเภทอื่น ๆ
นอกจากนี้ยังมีภาษาเฉพาะ
SCUMM ถูกนำมาใช้ในเกมผจญภัยหลายเกมและเหมาะอย่างยิ่งสำหรับเกมเหล่านั้น
เพื่อความสมบูรณ์แบบตัวเลือกอื่นคือโมโนสคริปต์ซึ่งช่วยให้คุณสามารถใช้งาน Novell ของ. NET Framework สำหรับการเขียนสคริปต์ มันคือสิ่งที่ความสามัคคีใช้ นี่คืออีกหน้าหนึ่งเกี่ยวกับการฝังโมโนในแอปพลิเคชันของคุณ
เฟรมเวิร์กโมโนเร็วกว่าภาษาสคริปต์ส่วนใหญ่เพราะอาจไม่ถูกตีความและเนื่องจากมีเลเยอร์ระหว่างคอมไพเลอร์และชุดคำสั่งมันช่วยให้คุณสามารถเขียนโปรแกรมในภาษาต่างๆรวมถึงภาษา C # และภาษาถิ่นของ Python, Lua และ Javascript
ฉันไม่แน่ใจว่าจะให้บริการฟรีในทุกแพลตฟอร์มหรือไม่
โดยส่วนตัวแล้วฉันพบ AngelScript (ดูลิงค์ด้านล่าง) ง่ายกว่าที่จะผูกกับ C ++ มากกว่า Lua เมื่อฉันเลือกภาษาสคริปต์สำหรับโครงการของฉันเอง (จริง ๆ แล้วฉันเขียนไลบรารี่ขนาดเล็กเพื่อให้ใช้งานได้ง่ายขึ้นในราคาที่ยืดหยุ่น)
http://www.angelcode.com/angelscript/
ที่ถูกกล่าวว่าฉันสงสัย Lua มีข้อได้เปรียบบางประการที่ทำให้มันน่าสนใจสำหรับนักพัฒนาเกมเชิงพาณิชย์:
(a) มีความเป็นผู้ใหญ่และแพร่หลายมากกว่า AngelScript
(b) ไวยากรณ์ของมันง่ายกว่าสำหรับผู้ที่ไม่ได้เขียนโปรแกรม (AngelScript เป็นภาษา C ++ เหมือนกัน)
(c) มันมีขนาดเล็กกว่า AngelScript (อย่างน้อยเท่าที่ฉันจำได้)
ถ้าคุณเพียงแค่เขียนโครงการอดิเรกฉันอยากจะบอกว่าอย่างน้อย AngelScript ควรค่าแก่การดู
คุณควรเลือกภาษาสคริปต์ที่มีการเชื่อมโยงที่มั่นคงและได้รับการสนับสนุนเป็นอย่างดีกับภาษาพัฒนาหลักของเกมของคุณ หากคุณกำลังเขียนเกมของคุณใน C หรือ C ++ แสดงว่ามีการผูกที่ค่อนข้างแน่นสำหรับ Python และ Lua หากคุณกำลังเขียนเกมของคุณสำหรับแพลตฟอร์ม. NET (โดยใช้ภาษา C # หรือภาษาอื่น) ฉันขอแนะนำให้ใช้ IronPython หรือ IronRuby ทั้งสองเป็นการนำภาษามาใช้อย่างสมบูรณ์ซึ่งใช้ประโยชน์จาก Dynamic Language Runtime (DLR) ของ Microsoft ซึ่งให้ประสิทธิภาพที่ยอดเยี่ยมและการผนวกรวมกับ. NET Framework อย่างแน่นหนา ความสามารถในการทำงานร่วมกันระหว่าง C # และ IronPython / IronRuby ค่อนข้างราบรื่นในทุกวันนี้โดยเฉพาะอย่างยิ่งเมื่อมีการแนะนำการรวม callsite แบบไดนามิกใน C # 4.0
เอาซะเลย
ด้วยมารยาทคุณสามารถมี DSL (Domain Specific Language) ของคุณเองสำหรับเกมของคุณ เมื่อคุณคุ้นเคยกับเครื่องหมายวงเล็บและสัญลักษณ์นำหน้าแล้วชุดรูปแบบคือสวรรค์สำหรับการทำงานกับ
หากคุณกำลังจะใช้เล่ห์เหลี่ยมในเกมที่จริงจังฉันจะรอสองสามเดือนจนกว่าจะมีการเปิดตัว 2.0 ซึ่งจะรวมถึง IIRC ล่าม Ecmascript และโครงร่างปัจจุบัน คุณสามารถคาดหวังว่าจะเห็นการปรับปรุงความเร็วสูง
ขึ้นอยู่กับสิ่งที่คุณต้องการใช้ Lua ได้รับความนิยมอย่างมากแม้ว่าผู้พัฒนาเกมรายหนึ่งจะบอกกับฉันว่าเขาไม่แน่ใจว่าทำไม ฉันคิดว่าความเบาของมันเป็นเหตุผลทั่วไป แต่ ณ จุดนี้ฉันคาดว่าผู้คนจำนวนมากใช้ Lua เพราะนั่นกลายเป็นมาตรฐานโดยพฤตินัย ดูเหมือนว่าดีที่สุดสำหรับการปรับเปลี่ยนที่มีน้ำหนักเบามาก
สำหรับวิธีการที่สมบูรณ์แบบมากขึ้นฉันจะบอกว่า Python เป็นตัวเลือกที่เหมาะสม Civ IV ใช้มันเพื่อผลที่ดี
การเลือกภาษาสคริปต์หนึ่งภาษาเหนืออีกภาษาหนึ่งนั้นขึ้นอยู่กับข้อกำหนดเฉพาะของคุณ
ตัวเลือกบางอย่างที่คุณต้องเลือกอาจเป็น:
ความเร็วของล่าม - หากคุณลักษณะของการเขียนสคริปต์ถูกใช้เพียงอย่างเดียวเช่นโดยนักพัฒนาเพื่อเขียนสคริปต์พฤติกรรมคงที่ดังนั้นความเร็วและ API ที่มีการขยายและขยายได้อย่างเต็มที่อาจเป็นสิ่งสำคัญที่สุด ฉันมีประสบการณ์ที่ดีกับ LUA ที่นั่น
ง่ายต่อการเรียนรู้การเข้าถึง - สำหรับ content- / leveldesigner มันอาจจะยากที่จะเรียนรู้ภาษาสคริปต์ที่ซับซ้อนมากขึ้น (ขึ้นอยู่กับพื้นหลัง) เพื่อสร้างพฤติกรรมแบบไดนามิก ในกรณีดังกล่าวการใช้ภาษาที่ง่ายต่อการเรียนรู้ (เช่นที่ใช้กันทั่วไป) และภาษาที่มีเอกสารที่ดีอาจเหมาะสมกว่า JavaScript หรือ Python อาจเป็นทางออกที่ดีที่นี่
การรวมเวิร์กโฟลว์ - หากคุณมีกระบวนการผลิตเฉพาะที่มีเครื่องมือที่มีอยู่แล้วอาจเป็นความคิดที่ไม่ดีที่จะใช้ภาษาที่ดูเหมือนว่าจะทำงานได้ดีที่สุดสำหรับกรณีที่กำหนดหากเครื่องมืออื่นทำงานด้วยเครื่องมือที่แตกต่างกันโดยสิ้นเชิง สิ่งนี้จะถูกต้องเป็นพิเศษหากคุณมีโปรแกรมเมอร์หลายคนทำงานกับเครื่องมือที่แตกต่าง ในกรณีนี้มันอาจมีประสิทธิภาพมากกว่าในการใช้ภาษา "ค่อนข้างไม่เหมาะสม"
หากคุณกำลังทำงานกับชื่อเรื่องสำหรับ 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 เดียวกันจะทำให้การรันไทม์เพื่อเพิ่มประสิทธิภาพโค้ดของคุณมากขึ้นในระหว่างการทำงาน
คำตอบนั้นขึ้นอยู่กับสภาพแวดล้อมของคุณ ฉันกำลังทำงานกับ Unity อยู่ดังนั้นฉันจึงใช้ภาษาโมโน (ในกรณีของฉัน C # แต่ Javascript และ Boo ก็เป็นตัวเลือกด้วย) คำตอบนั้นขึ้นอยู่กับสถานการณ์เฉพาะของคุณ
ActionScript เป็นภาษาพิมพ์แบบไดนามิก / แบบคงที่แบบไฮบริดที่ใช้ในการสร้างเกม Flash ซึ่งสามารถเผยแพร่บนเว็บได้อย่างกว้างขวาง ได้รับการสนับสนุนเป็นอย่างดีกับห้องสมุดเช่น Flixel, FlashPunk และ Box2d
หากคุณมีทีมที่มีอยู่แล้วที่จะใช้ภาษาสคริปต์หรือนักออกแบบนำ (ระดับ) ที่จะใช้สคริปต์ดังนั้นไปกับภาษาที่พวกเขาเลือกใช้ พวกเขาจะใช้เวลากับมันดังนั้นพวกเขาจึงควรได้รับการตอบสนอง
[เม็ดเกลือ] ถ้าคุณไม่ได้มีใครหรือวางแผนระยะยาวแล้ว ม้วนของคุณเอง ใช่การเขียนคอมไพเลอร์และ / หรือล่ามสำหรับภาษาสคริปต์อาจใช้เวลาหนึ่งหรือสองสัปดาห์ แต่ในระยะยาวความยืดหยุ่นจะจ่ายหลายครั้ง ไม่ต้องไปไกลและหลงทาง [/ เม็ดเกลือ]