ภาษาสคริปต์ใดที่คุณจะแนะนำสำหรับโครงการเกม C ++ [ปิด]


14

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

ภาษาบางอย่างเช่น Lua มีบางสิ่งห่อหุ้มเช่น luabind แต่เมื่อก่อนฉันเคยใช้มันมีปัญหาเพราะมันไม่รองรับการกำหนดวิธีการใหม่ในบริบทของการสืบทอด

คุณมีคำแนะนำเกี่ยวกับภาษา / เครื่องห่อหุ้มที่จะใช้หรือไม่ใช้?

คำตอบ:


9

วิดีโอเกมที่ใช้สคริปต์ของ Lua เอ็นจิ้นเกมของ
Lua ที่เขียนสคริปต์

ฉันคิดว่า Lua เป็นช็อตที่ดีที่สุด

บทความนี้เกี่ยวกับการรวม Lua และ C ++ มันบอกว่า:

LuaBind เป็นผลิตภัณฑ์ที่ยอดเยี่ยม แต่สำหรับฉันมันดูซับซ้อนเกินไป สำหรับรหัสนั้นไม่ใช่เรื่องง่ายที่จะตามที่คลาสและวัตถุอยู่ ยังเห็นว่าฉันต้องการรวม Lua เข้ากับแอปพลิเคชัน wxWidgets การใช้เทมเพลตเป็นบิตไม่เลย (คุณสามารถอ่านปัญหาข้ามแพลตฟอร์มในเว็บไซต์ wxWidgets)

มีไลบรารีการโยงอื่น ๆ อีกมากมาย:

http://luabridge.sourceforge.net/
http://www.stackedboxes.org/~lmb/diluculum/
http://cpplua.sourceforge.net/
http://www.tecgraf.puc-rio.br/~ Celes / tolua /

C ++ / Lua wrapper ที่ดีที่สุดคืออะไร?

เพียงแค่เลือกและสนุก


ใช่ Lua นั้นค่อนข้างเรียบง่ายและง่ายต่อการรวมเข้ากับ C. ในความเป็นจริงนั่นคือเป้าหมายหลักของ Lua ซึ่งเป็นภาษาที่ฝังตัว
Marco Mustapic

ขอบคุณสำหรับการอ้างอิงเกี่ยวกับ LuaBind บางทีการขุดเข้าไปในห้องสมุดที่มีผลผูกพันอื่น ๆ จะทำให้ฉัน
หลงรัก

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

5

ฉันชอบChaiscriptแล้ว ฉันไม่ได้ใช้มันมานานมาก แต่มันก็ดูดีพอสมควร

ไม่เหมือนกับ Python หรือ lua มันถูกสร้างจากพื้นดินขึ้นเพื่อใช้กับ C ++ กระบวนการเชื่อมโยงนั้นดูสะอาดกว่าการใช้ luabind / etc

นี่คือบทสรุปของเว็บไซต์:

ChaiScript เป็นภาษาสคริปต์ตัวแรกและตัวเดียวที่ได้รับการออกแบบโดยคำนึงถึงความเข้ากันได้ของ C ++> มันเป็นภาษา ECMAScript ที่ได้รับแรงบันดาลใจมาจากการทำงานที่ฝังอยู่

ChaiScript ได้รับอนุญาตภายใต้ใบอนุญาต BSD


น่าสนใจ แล้วการทดสอบประสิทธิภาพล่ะ มีการเปรียบเทียบ ChaiScript / Lua / Python หรือไม่
topright

ค่อนข้างน่าสนใจมีข้อเสีย / ข้อบกพร่อง / การแสดงผลงานที่คุณประสบมาจนถึงตอนนี้หรือไม่?
Frédérick Imbeault

ฉันไม่ได้เห็นการวัดประสิทธิภาพใด ๆ แต่ฉันยังไม่พบปัญหาด้านประสิทธิภาพใด ๆ ... การยึดเกาะหลักของฉันจนถึงตอนนี้ก็คือมันไม่ได้แปลงระหว่างประเภทตัวเลขโดยปริยาย (ดังนั้นคุณจะได้รับข้อผิดพลาดถ้าคุณผ่าน int ไป ฟังก์ชั่นการลอย ฯลฯ )
Riley Adams

1
เพียงแค่ FYI เนื่องจากความคิดเห็นนี้มีอายุ 6 ปีแล้วตอนนี้ ChaiScript จะแปลงเป็นตัวเลขโดยปริยาย
lefticus

5

ฉันจะแนะนำLua
Pythonก็เป็นที่นิยมเช่นกัน เอ็นจิ้นเกมเด่น ๆ (เช่นเครื่องปั่น) ใช้มัน
C ++ :: Boost มีไลบรารีสำหรับทำงานกับ Python
ฉันได้อ่านเกี่ยวกับกระรอกแล้ว แต่ไม่ได้ใช้

คุณสามารถอ่านภาพรวมของ Game Engineนี้ได้ มีScriptingคอลัมน์ คุณจะเห็นว่า Lua และ Python เป็นภาษาสคริปต์ที่ได้รับความนิยมมากที่สุด


เกี่ยวกับ Boost ฉันคิดว่าอาจเป็นห้องสมุดขนาดใหญ่และหลายสิ่งหลายอย่างไม่เป็นประโยชน์ในทุกโครงการ ในความเป็นจริง luabind ใช้ Boost เป็นจำนวนมากและเป็นหนึ่งในสิ่งที่ฉันไม่ชอบ
Frédérick Imbeault

1
ฉันจะบอกว่ามันเป็นข้อได้เปรียบ คุณมีทางออกมากมายให้คุณเลือก และโครงการของคุณมีเพียง 1 พึ่งพาภายนอก - เพิ่ม มีห้องสมุดเล็ก ๆ น้อย ๆ ไม่มากนัก (ที่ใช้สไตล์, แนวทาง, ใบอนุญาต, และในทางกลับกันอาจมีการอ้างอิงโดยนัยภายนอก) ที่ยากต่อการอัพเดทซิงค์กับรหัสของคุณและบำรุงรักษา
topright

1
และคุณรวมเฉพาะห้องสมุด Boost (ส่วนหัว) ที่คุณต้องการ Boost มีขนาดใหญ่มาก แต่คุณไม่สนใจจนกว่าคุณจะต้องการสิ่งนี้หรือสิ่งนั้น
topright

และเกี่ยวกับ python และ Lua มีบาง wrappers สำหรับ C ++ ที่อนุญาตให้คุณกำหนดวิธีการเรียนใหม่สร้างวิธีการใหม่และอื่น ๆ ? และคุณสมบัตินี้สามารถควบคุมได้จากรหัส C ++ (เพื่อความปลอดภัย) หรือไม่? อย่างที่ฉันบอกไป LuaBind ทำสิ่งเหล่านี้ แต่ล้มเหลวในบริบทของการสืบทอดซึ่งค่อนข้างบ่อยในโครงการเกม วิธีที่ฉันต้องการนิยามใหม่สำหรับตัวอย่างการทดสอบลูปเกมเฉพาะวิธีการอัปเดตของเอนทิตีเช่นผู้เล่นวิธีการอัปเดตของโลกเกมเองเป็นต้น
Frédérick Imbeault

Lua ไม่มีคลาสและวัตถุ แต่สามารถเลียนแบบโดยตาราง นี่คือห้องสมุด Lua สำหรับ OOP ที่ฉันชอบ: love2d.org/wiki/MiddleClass
topright

4

ทำไมไม่สร้างของคุณเอง?

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

ข้อดี

  1. คุณจะได้เรียนรู้เกี่ยวกับส่วนที่น่าสนใจของวิทยาศาสตร์คอมพิวเตอร์
  2. ด้วยการพัฒนาเอนจิ้นการเขียนสคริปต์ 'ในบ้าน' จะช่วยให้คุณควบคุมได้อย่างสมบูรณ์ตั้งแต่ต้นจนจบโดยให้คุณปรับแต่งเครื่องยนต์ให้ตรงกับสิ่งที่คุณต้องการ
  3. หากคุณจำเป็นต้องทำการเปลี่ยนแปลงใด ๆ ในภายหลังตามถนนพวกเขาสามารถทำให้การรู้เข้าและออกจาก codebase ของคุณง่ายขึ้นแทนที่จะเรียนรู้การเข้าและออกของใครบางคน
  4. คุณไม่ต้องกังวลกับการอัพเดทเครื่องยนต์ของคุณด้วยแพตช์ของคนอื่น

ข้อเสีย

  1. เวลา. มีคนไม่มากนัก หากคุณต้องการอะไรตอนนี้ลองใช้เอ็นจิ้นที่มีอยู่แล้ว (เช่นหนึ่งในที่แนะนำไปแล้ว)

  2. ความเร็ว. เอ็นจินการเขียนสคริปต์ที่มีอยู่จำนวนมากนั้นเร็วมาก - โซลูชันที่กำหนดเองอาจไม่เร็วนัก

  3. ขนาดของทีม เอ็นจิ้นการเขียนสคริปต์ที่มีอยู่จำนวนมากมีทีมงานขนาดใหญ่ที่ทำงานบน codebase ไม่ว่าจะเป็นทีมส่วนตัวหรืออาสาสมัครทั่วโลกมีบางอย่างที่ต้องบอกว่าเป็นโค้ดที่ตรวจสอบและตรวจสอบโดยคนอื่น ๆ อีกมากมาย

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

  5. ฐานผู้เล่น / นักพัฒนาของคุณจะต้องคุ้นเคยกับเครื่องมือการเขียนสคริปต์ของคุณ สิ่งนี้อาจไม่เป็นปัญหาหากซินแทกซ์และการทำงานใกล้เคียงกับเอ็นจิ้นการเขียนสคริปต์ที่ทันสมัยที่สุด แต่ควรระวังสิ่งนั้น

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

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

"การสร้างระบบสคริปต์ใน C ++" น่าจะเป็นบทความที่คนนิยมแบ่งปันเมื่อพูดคุยหัวข้อ: http://www.gamedev.net/reference/list.asp?categoryid=76


2
ฉันเห็นด้วยนี้มีข้อได้เปรียบทางการศึกษาโดยเฉพาะ ยังคงต้องใช้ความรู้และทักษะในการเขียนโปรแกรมภาษาทฤษฎี (ซึ่งคนจำนวนมากคิดว่าพวกเขามี) และความรู้บางอย่างในทฤษฎีคอมพิวเตอร์ หากคำตอบนี้น่าดึงดูดสำหรับใครบางคนฉันขอแนะนำหนังสือสองเล่มนี้: amazon.com/gp/product/0136073476/ref=oss_productและamazon.com/gp/product/0534950973/ref=oss_product
Frédérick Imbeault

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

เคยทำมาแล้ว เรียนรู้มากมายเกี่ยวกับการแยกวิเคราะห์การออกแบบคอมไพเลอร์เครื่องไบต์ประมวลผลทั้งหมดนั้น ครั้งต่อไปฉันจะใช้ Lua และซาบซึ้งมากขึ้น :)
Kaz Dragon

2

ฉันลอง Lua, Python, Scheme และ Squirrel แล้ว Lua ทำงานได้ดีที่สุด มันมีชุมชนที่ใหญ่กว่าและรองรับได้ดีกว่า Squirrel และมีลักษณะความจำและประสิทธิภาพที่ดีกว่า Python Scheme ก็ทำงานได้ดีเช่นกันและมีล่ามขนาดเล็กมาก แต่ก็ยากสำหรับนักออกแบบที่จะใช้ภาษาที่ใช้งานได้จริง


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