Satu-satunya keuntungan yang saya pikirkan saat ini adalah bahwa Anda dapat membuat beberapa pembaruan pengkodean, melalui Lua, tanpa harus mengkompilasi ulang.
Jangan mengabaikan utilitas ini dengan mudah. Kamu tidak akan pernah mengerti seberapa produktif Anda sampai Anda mengambil langkah kompilasi.
The "mengalir" adalah sebuah konsep psikologis yang cukup dipahami dengan baik ketika datang ke pekerjaan. Alurnya adalah perasaan yang Anda dapatkan ketika Anda fokus pada suatu kegiatan, ketika Anda menganalisis dan memecahkan masalah hampir tanpa berpikir, dll. Anda paling produktif saat Anda "mengalir".
Waktu kompilasi mengacaukan semua itu. Sulit untuk tetap mengikuti arus jika Anda memiliki kompilasi 10 detik antara pengujian sesuatu.
Ketika Anda mengembangkan gameplay, apa yang biasanya Anda miliki adalah "lingkaran ketat". Anda punya ide, Anda membuat kode tes untuk melihat apakah itu berhasil, dan kemudian Anda mencobanya. Jika tidak berhasil, Anda memodifikasinya dan coba lagi. Waktu "code-to-test" sangat penting untuk menjaga aliran. Mendapatkannya sekecil mungkin sangat penting.
Apa yang Lua (atau bahasa skrip tertanam apa pun) memungkinkan Anda lakukan adalah menguji perubahan, tidak hanya tanpa "kompilasi", tetapi hidup dalam gim . Bergantung pada bagaimana Anda membangun game, Anda dapat menjalankan perintah yang akan memulai kembali game dengan skrip baru tanpa harus berhenti dan memuat ulang data dan sebagainya. Anda tidak hanya harus melakukan kompilasi ulang, Anda tidak harus menjalankan ulang.
Kemampuan untuk melakukan ini, mengingat dukungan engine yang tepat, dapat secara dramatis meningkatkan produktivitas.
Manfaat utama lain dari scripting adalah kemampuan untuk tidak peduli. Jika Anda telah menghabiskan waktu lama menulis C ++, Anda akan kagum dengan berapa banyak waktu yang Anda habiskan untuk minutae. Di mana memori dihapus. Di mana ini dibebaskan. Bahkan jika Anda menggunakan di shared_ptr
mana - mana, tindakan mengetik semua nama variabel itu akan memperlambat Anda.
Dalam bahasa skrip yang diketik secara dinamis, Anda tidak perlu peduli. Pelingkupan itu sederhana. Fungsi adalah objek kelas satu; Anda tidak perlu membangun functors secara manual. Sangat mudah untuk melakukan beberapa hal.
Nah, itu memang punya negatif, jika Anda bukan seorang programmer disiplin. Sangat mudah untuk menggunakan global di Lua (meskipun ada cara untuk mencegahnya). Tidak peduli berarti Anda bisa sangat ceroboh ketika Anda membuat kode.
Tetapi sekali lagi, menjadi sangat ceroboh dapat memiliki keuntungan .
Kelebihan lain dari Lua adalah membuat bahasa deskripsi data yang bagus. Sama seperti JSON hanyalah file JavaScript yang membangun dan mengembalikan array / tabel, Anda dapat membuat skrip Lua yang mengembalikan tabel.
Ini berguna untuk file konfigurasi; Format tabel Lua jauh lebih baik daripada format .ini. Formatnya masih agak bersih, kompak, dan dapat diperpanjang.
Oh, dan itu masih berupa skrip Lua, sehingga bisa melakukan logika yang sebenarnya. Kelemahan dari itu adalah ... yah, itu adalah skrip Lua, sehingga dapat melakukan logika yang sebenarnya . Itu bisa menjadi bencana dalam game, karena pengguna berpotensi mulai mengacaukan segalanya.
Namun sebenarnya, ini mudah ditangani. Lua dirancang untuk ditempelkan, yang berarti isolasi sebenarnya cukup mudah. Memang, keadaan Lua yang segar tidak memberikan apa-apa secara default; Anda harus benar-benar melakukan sesuatu untuk mengekspos bahkan perpustakaan Lua standar yang paling dasar. Akses file, akses kondisi permainan, dll., Semuanya merupakan penyertaan, bukan penyisihan. Dan setiap negara Lua terpisah satu sama lain. Status Lua yang Anda gunakan untuk skrip AI tidak harus status Lua yang Anda gunakan untuk file konfigurasi.
Saya sebenarnya memiliki beberapa kode yang memungkinkan Anda untuk mendaftarkan banyak perpustakaan standar Lua, tetapi melewati dan menghapus semua file IO. Pada akhirnya, hal terburuk yang dapat dilakukan file konfigurasi berbasis script Lua adalah menyebabkan game Anda langsung crash saat dijalankan, dengan kehabisan memori. Dan karena Anda tidak membagikan file konfigurasi ini secara manual, itu tidak akan menyenangkan bagi peretas.
Saya akan mengatakan bahwa kelemahan terbesar dari bahasa scripting adalah debugging. Sebagian besar bahasa skrip tidak memiliki debugger, dan Lua tidak berbeda. Lua memang memiliki semua alat yang diperlukan untuk membangun alat debugging. Tetapi sebenarnya tidak memiliki debugger built-in. Anda harus menyatukannya. Dan itu akan membutuhkan tingkat pekerjaan yang masuk akal.
Atau Anda dapat membuat karena dengan "printf debugging". Itu benar-benar tergantung pada seberapa banyak kode Lua yang Anda tulis.