ฉันควรใช้ Lua เพื่อลอจิกเกมบนอุปกรณ์มือถือหรือไม่


33

ดังกล่าวข้างต้นจริงๆ

ฉันกำลังเขียนเกมที่ใช้ Android ในเวลาว่าง (android เพราะฟรีและฉันไม่มีแรงบันดาลใจที่แท้จริงที่จะทำอะไรเชิงพาณิชย์)

ตรรกะของเกมมาจากรูปแบบพื้นฐานทั่วไปซึ่งมีหน่วยงานอยู่และมีส่วนประกอบที่แนบมากับพวกเขาและข้อความจะถูกส่งไปมาเพื่อให้สิ่งต่าง ๆ เกิดขึ้น

เห็นได้ชัดว่าเลเยอร์สำหรับการแสดงจริงนั้นบางและถ้าฉันต้องเขียนแอพเวอร์ชัน iPhone ของแอพนี้ฉันจะต้องเขียน renderer และคอร์ไดร์เวอร์ใหม่ (ของระบบที่ใช้องค์ประกอบนี้) ใน Objective C

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

ตอนนี้ถ้าฉันเขียนลอจิกทั้งหมดสำหรับส่วนประกอบเหล่านั้นใน Java แล้วฉันต้องเขียนใหม่บน Objective C ถ้าฉันตัดสินใจที่จะทำพอร์ต iPhone เนื่องจากตรรกะแอปพลิเคชันส่วนใหญ่มีอยู่ในส่วนประกอบเหล่านี้พวกเขาจะต้องเขียนภาษา / สคริปต์ / DSL ที่ไม่เชื่อเรื่องภาษาแพลตฟอร์มซึ่งอาจโหลดลงในแอปบนแพลตฟอร์มใดก็ได้

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

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

คำตอบ:


17

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

ที่กล่าวว่าการเขียนสคริปต์ไม่ใช่ bullet เงินเพื่อความเป็นอิสระของแพลตฟอร์ม คุณอาจต้องเขียนใหม่ใน Obj-C ต่อไปถ้าคุณพอร์ตไปยัง iPhone เนื่องจากข้อ จำกัด ของ Apple ในการเรียกใช้รหัสแบบไดนามิก ฉันไม่มีลิงค์ offhand แต่มันอาจคุ้มค่าที่จะอ่าน Apple แทบจะไม่อนุญาตให้มีการจัดการรหัส (คุณต้องได้รับอนุญาตพิเศษในการใช้งานการแจกจ่ายพิเศษ) แน่นอนที่สุดพวกเขาจะไม่อนุญาตให้มีการนำ Lua ไปใช้ในแอพสโตร์

[แก้ไข] เห็นได้ชัดว่าฉันเข้าใจผิดเกี่ยวกับ Lua ในสิ่งที่ iPhone ดูความคิดเห็นด้านล่าง


9
Lua ใช้กันอย่างแพร่หลายในแอพพลิเคชั่นของ iPhone และมีการเปลี่ยนแปลงข้อกำหนดที่อนุญาต ดูที่นี่: appleoutsider.com/2010/06/10/hello-lua
Colin Gislason

5
แอพคอนโซลจำนวนมากใช้จริง ๆ แล้ว LUA ใช่มันเป็นสาขา - แต่นั่นไม่สำคัญว่าคุณควบคุมตรรกะระดับสูง อย่าเพิ่งโทรจากลูปการเรนเดอร์ของคุณ;) เท่าที่ฉันรู้ LUA สำหรับเกมนั้นดีกับการเปลี่ยนแปลงล่าสุดของข้อตกลงผู้พัฒนา - มีเกมมากมายที่ขับเคลื่อนโดย LUA แต่เช่นเดียวกับการพัฒนาใด ๆ บนแพลตฟอร์มปิดขอให้เจ้าของแพลตฟอร์ม (เช่น Apple) สำหรับคำตอบที่ชัดเจน นอกจากนี้ไม่จำเป็นต้องใช้ Obj-C - iPhone อนุญาตให้ใช้ C / C ++ ได้ดี (ฉันขอแนะนำให้คุณทำทุกอย่าง UIKit ใน Obj-C แม้ว่าปัจจัยลดความเจ็บปวด)
Rachel Blum

7
ไปกล่องสบู่วิเศษ Lua เป็นคำนามไม่ใช่คำย่อคุณจะไม่เขียน JAVA Lua แปลว่าดวงจันทร์ คุณจะไม่เขียนดวงจันทร์ ขอบคุณ - Lau Nazi
deft_code

2
น่าเศร้าที่ฉันรู้จักผู้คนมากมายที่เขียนว่า "JAVA"

1
ฉันใช้ lua อย่างหนักกับ NDS (ซึ่งมีประสิทธิภาพน้อยกว่าไอโฟน) และมันใช้งานได้ค่อนข้างเร็ว เร็วพอสำหรับเราในการสร้างตรรกะมากกว่าครึ่งของเกมหนึ่งใน lua
Klaim

7

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


4

แน่ใจ ตรรกะการเขียนสคริปต์ไม่น่าจะเป็นคอขวดของคุณ (จริงๆคุณจะโปรไฟล์กับฉลามหรือเครื่องมือใช่มั้ย) ฉันทำงานกับ Marooned เวอร์ชั่น iPhone ซึ่งใช้ Lua เป็นจำนวนมากสำหรับตรรกะของเกม ฉันทำการจูนประสิทธิภาพมากและโดยทั่วไป Lua นั้นเป็น 0%

(Lua เป็นพื้นที่สีเทาเมื่อเราเปิดตัว Marooned แต่นับตั้งแต่ได้รับการอวยพรอย่างเป็นทางการสำหรับการพัฒนา iOS)


1

ดูhttp://code.google.com/p/android-scripting/สำหรับวิธีการที่แนะนำในการทำสคริปต์บน Android Lua ยังคงไม่เหมาะกับแพลตฟอร์ม Android เนื่องจากต้องใช้ C แน่นอนคุณสามารถใช้ NDK ได้ แต่นั่นไม่ใช่กระสุนเงิน


1

มันขึ้นอยู่กับว่าตรรกะเกมของคุณฝังอยู่ในสคริปต์มากน้อยเพียงใด โดยทั่วไปแล้ว LUA จะใช้เป็นกาวระดับสูง แต่มีการทำเสียงฮึดฮัดจำนวนมากเกิดขึ้นผ่าน C (++) ใช่ LUA นั้นเร็วพอ ๆ กับภาษาสคริปต์ - คุณยังคงดูการชะลอตัวเมื่อเทียบกับภาษาท้องถิ่นประมาณ 30 ถึง 50 เท่าดังนั้นมันขึ้นอยู่กับว่าเกิดอะไรขึ้นใน LUA


0

คุณสามารถเขียนเกมทั้งหมดของคุณใน Lua และหลีกเลี่ยง Java / ObjectiveC / C / C ++ ทั้งหมด

สำหรับการใช้งานข้ามแพลตฟอร์มการพัฒนาโคโรนา ใช้งานฟรีจนกว่าคุณจะวางแผนจัดส่งไปยัง App Store หรือ Android Marketplace

หากคุณต้องการกำหนดเป้าหมาย iPhone / Pad / สัมผัสดูที่ขี้ผึ้ง

เช่นเดียวกับบันทึกด้านข้าง @Sean Edwards: ฉันมีส่วนร่วมในการจัดส่งห้ารายการที่มีเป้าหมายเป็น Nintendo DS, Wii, Sony PSP และ Xbox360 ทั้งหมดนี้ใช้เครื่องมือเดียวกันและเขียนสคริปต์ใน Lua มันใช้กันอย่างแพร่หลายในคอนโซลและโทรศัพท์มือถือ

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