Haruskah saya menggunakan Lua untuk logika game di perangkat seluler?

33

Seperti benar-benar di atas,

Saya sedang menulis game berbasis android di waktu luang saya (android karena gratis dan saya tidak punya aspirasi nyata untuk melakukan sesuatu yang komersial).

Logika permainan berasal dari model berbasis komponen yang sangat khas di mana entitas ada dan memiliki komponen yang melekat padanya dan pesan dikirim ke sana kemari untuk membuat sesuatu terjadi.

Jelas lapisan untuk benar-benar melakukan yang tipis, dan jika saya menulis versi iPhone dari aplikasi ini, saya harus menulis ulang renderer dan driver inti (dari sistem berbasis komponen ini) di Objective C.

Entitas hanyalah file datar yang menentukan nama komponen yang akan ditambahkan, dan komponen itu sendiri adalah objek sederhana, tujuan tunggal yang berisi logika untuk entitas.

Sekarang, jika saya menulis semua logika untuk komponen-komponen di Jawa, maka saya harus menulis ulang pada Objective C jika saya memutuskan untuk melakukan port iPhone. Karena sebagian besar logika aplikasi terkandung dalam komponen-komponen ini, mereka akan, dalam dunia yang ideal, ditulis dalam beberapa bahasa platform-agnostik / skrip / DSL yang kemudian dapat dimuat ke dalam aplikasi pada platform apa pun.

Namun saya telah dituntun untuk percaya bahwa ini bukan dunia yang ideal, dan bahwa kinerja Lua dll pada perangkat seluler masih belum maksimal, bahwa overhead terlalu banyak dan bahwa saya akan mengalami masalah nanti jika saya turun rute itu?

Apakah ini yang sebenarnya terjadi? Jelas ini hanya pertanyaan hipotetis, saya senang menulis semuanya di Jawa karena sederhana dan mudah menyelesaikan masalah, tetapi katakan saya benar-benar menikmati membuat game ini (tidak mungkin, mengingat betapa saya saat ini tidak suka harus berurusan) dengan semua perangkat seluler yang berbeda itu) dan saya ingin membuat game yang layak secara komersial - akankah saya menggunakan Lua atau akankah saya menerima pukulan ketika menyangkut porting dan hanya menulis ulang semua kode?

Rob Ashton
sumber

Jawaban:

17

Sejauh bahasa scripting, Lua sangat cepat, tetapi seperti apa pun itu bervariasi tergantung pada prosesor. Sebagai contoh, Lua tidak akan bagus pada platform konsol karena cenderung sangat bercabang, dan beberapa platform konsol bercabang sangat lambat. Untuk menjawab pertanyaan Anda, saya sarankan menjalankan beberapa tolok ukur. Lihat seberapa cepat Lua melakukan beberapa algoritma pada perangkat. Saya menduga Anda akan baik-baik saja selama Anda tidak melakukan matematika berat atau iterasi dalam kode skrip Anda. (Lagi pula Anda seharusnya tidak melakukan itu. Itu skrip. Lakukan perhitungan di mesin.)

Yang mengatakan, scripting bukan peluru perak untuk kemerdekaan platform. Anda mungkin perlu menulis ulang dalam Obj-C jika Anda porting ke iPhone karena pembatasan Apple dalam mengeksekusi kode dinamis. Saya tidak punya tautan begitu saja, tetapi mungkin layak dibaca. Apple nyaris tidak mengizinkan kode terkelola (Anda harus mendapatkan izin khusus untuk menjalankan distribusi khusus). Mereka pastinya tidak akan mengizinkan implementasi Lua ke dalam app store.

[sunting] Rupanya saya keliru tentang Lua di iPhone. Lihatlah komentar di bawah ini.

Sean Edwards
sumber
9
Lua banyak digunakan dalam aplikasi iPhone, dan perubahan dibuat dengan persyaratan yang memungkinkannya. Lihat di sini: appleoutsider.com/2010/06/10/hello-lua
Colin Gislason
5
Banyak aplikasi konsol yang benar-benar menggunakan LUA. Ya, itu bercabang - tetapi itu tidak masalah jika Anda mengontrol logika tingkat tinggi. Hanya saja jangan menyebutnya dari render loop Anda;) Sejauh yang saya tahu, LUA untuk game baik-baik saja dengan perubahan terbaru pada perjanjian pengembang - ada banyak game yang didorong oleh LUA. Tetapi seperti halnya pengembangan pada platform tertutup, tanyakan pada pemilik platform (yaitu Apple) untuk jawaban yang pasti. Juga, tidak perlu untuk Obj-C - iPhone memungkinkan C / C ++ baik-baik saja. (Saya sarankan Anda melakukan apa pun UIKit di Obj-C, meskipun. Mengurangi faktor rasa sakit)
Rachel Blum
7
Pergi kotak sabun ajaib. Lua adalah kata benda, bukan akronim, Anda tidak akan pernah menulis JAVA. Lua berarti bulan. Anda tidak akan menulis BULAN. terima kasih - Lau Nazi.
deft_code
2
Sayangnya saya tahu banyak orang yang menulis "JAVA".
1
Saya memang menggunakan lua banyak pada NDS (yang jauh lebih kuat daripada IPhone) dan bekerja cukup cepat. Cukup cepat bagi kami untuk membuat lebih dari setengah logika satu game langsung di lua.
Klaim
7

Implementasi Lua C dirancang khusus untuk dijalankan pada perangkat yang disematkan. Ini kecil dan cepat (untuk bahasa scripting). Saya akan berpikir itu baik untuk setidaknya tugas-tugas ringan.

tenpn
sumber
4

Yakin. Logika skrip sangat tidak mungkin menjadi hambatan Anda (Anda akan benar-benar profil dengan Shark atau Instrumen, kan?). Saya bekerja pada Marooned versi iPhone, yang menggunakan banyak Lua untuk logika game. Saya melakukan banyak penyetelan kinerja, dan pada dasarnya Lua adalah 0%.

(Lua adalah daerah abu-abu ketika kami merilis Marooned, tapi sejak itu secara resmi diberkati untuk pengembangan iOS.)

David Dunham
sumber
1

Lihat http://code.google.com/p/android-scripting/ untuk cara yang disarankan dalam melakukan scripting di Android. Lua masih kurang pas di platform Android, karena membutuhkan C. Tentu saja, Anda bisa menggunakan NDK, tapi itu bukan peluru perak.

pengguna1800
sumber
1

Itu memang sedikit bergantung pada seberapa banyak logika game Anda tertanam dalam skrip. Secara umum LUA digunakan sebagai lem tingkat tinggi tetapi banyak pekerjaan kasar terjadi melalui C (++). Ya, LUA sangat cepat sejauh bahasa scripting berjalan - Anda masih melihat perlambatan dibandingkan dengan bahasa asli sekitar 30 hingga 50 kali, jadi itu benar-benar tergantung seberapa banyak yang terjadi di LUA.

Kaj
sumber
0

Anda benar-benar dapat menulis seluruh permainan Anda di Lua dan menghindari Java / ObjectiveC / C / C ++ sekaligus.

Untuk pengembangan lintas platform gunakan Corona . Ini gratis untuk digunakan sampai Anda berencana mengirim ke App Store atau Android Marketplace.

Jika Anda ingin menargetkan iPhone / Pad / Touch, perhatikan lilin .

Sama seperti catatan tambahan @Sean Edwards: Saya telah terlibat dalam pengiriman lima judul yang menargetkan Nintendo DS, Wii, Sony PSP, dan Xbox360, yang semuanya menggunakan mesin yang sama dan ditulis dalam Lua. Ini banyak digunakan pada konsol dan ponsel.

bkersten
sumber