Istilah skrip dan skrip tampaknya digunakan secara bergantian di Game Development Stack Exchange, tetapi selain membaca pertanyaan tentang pilihan bahasa skrip, saya tidak mengerti hubungan antara skrip dan skrip, dan bahasa inti. Apa yang biasanya dilakukan skrip, kapan skrip itu digunakan, dan apakah skrip dalam beberapa konteks (seperti yang didefinisikan oleh pemrogram game) berbeda dari bahasa skrip?
13
Jawaban:
Skrip ditulis untuk bahasa skrip. Orang-orang dapat menggunakan kata-kata dalam kalimat slang untuk mendapatkan kekacauan yang Anda maksud tetapi meminta siapa pun untuk definisi Script, Scripting dan Scripting Language dan Anda akan mendapatkan sesuatu seperti: Scripting adalah tindakan menulis Script menggunakan Bahasa Scripting.
Ketika Anda menanamkan bahasa scripting ke mesin game, atau bahasa inti seperti yang Anda maksudkan, Anda mengekspos tidak hanya objek dalam mesin game tetapi juga memungkinkan logika untuk ditulis untuk mesin game. Satu hal lain yang perlu diperhatikan adalah bahwa ini mengubah game Anda menjadi semacam mesin virtual, karena bahasa scripting jarang dikompilasi ke bahasa mesin dan sebaliknya dimasukkan ke dalam bentuk kode byte dan ditafsirkan pada saat dijalankan oleh mesin game Anda.
Ini memiliki beberapa manfaat besar bagi tim pengembangan, beberapa di antaranya dapat Anda temukan di daftar berikut:
Saya yakin daftar dapat terus berjalan dan terus saya yakin, terutama ketika Anda masuk ke jenis permainan khusus dan bagaimana skrip dapat membantu menentukan aturan pembentukan grup untuk memindahkan grup unit dalam RTS atau bagaimana Anda dapat membuat logika UI dalam sebuah bahasa scripting untuk menyediakan UI yang dapat diperluas untuk pengguna akhir Anda dan sejenisnya.
sumber
Menggunakan skrip memiliki banyak keunggulan dibandingkan "bahasa inti". Beberapa di antaranya adalah:
sumber
Sebuah skrip biasanya merupakan sepotong kode yang berjalan di luar mesin inti Anda. Ini biasanya terkandung dalam file teks di mana pun Anda ingin menyimpannya. Maka biasanya dimuat oleh mesin, diurai, dan dieksekusi saat runtime.
Apa yang umumnya terjadi adalah bahasa apa pun yang Anda gunakan (Lua, Angelscript misalnya), bahasa ini biasanya memiliki beberapa fasilitas yang memungkinkan pemrogram mesin untuk mengekspos fungsi mesin atau bahkan seluruh kelas ke instance dari "mesin skrip" yang saat ini sedang berjalan .
Misalnya (contoh yang benar-benar bodoh, tetapi hanya untuk menunjukkan maksudnya) kode permainan Anda mungkin memiliki fungsi publik yang memunculkan zombie di suatu tempat:
Bahasa scripting yang Anda gunakan sekarang memungkinkan Anda untuk mengekspos fungsi ini ke parser scripting yang sedang berjalan. Ini secara efektif berarti bahwa Anda dapat membuka file teks, menulis "SpawnZombie (200,300,1337)" dan begitu mesin Anda mengeksekusi kode, Zombie akan muncul di lokasi itu.
Jawaban lain sudah mendaftar beberapa contoh yang baik tentang bagaimana ini biasanya digunakan, tetapi mereka meninggalkan satu poin yang saya temukan sangat penting:
Jenis-jenis skrip ini membuatnya sangat mudah untuk debug atau menguji gameplay saat runtime.
Katakanlah Anda ingin mengetahui cara sempurna untuk menempatkan zombie di peta sehingga memiliki efek menakut-nakuti maksimum pada pemain begitu mereka menemukannya. Tanpa dukungan skrip, Anda harus keluar dari aplikasi, mengubah beberapa angka ajaib dalam kode, mengkompilasi ulang dan mengujinya.
Dengan dukungan skrip (asalkan Anda sudah memiliki beberapa metode memasukkan teks selama runtime, misalnya konsol debug), Anda cukup mengetik "SpawnZombie (333.444.555)" dan melihat tampilannya.
Dengan cara yang sama mungkin bagi Anda untuk menelurkan senjata, kendaraan, memuat peta yang berbeda, mengubah nilai beberapa hal dalam permainan dll, menanamkan musuh karena Anda tidak ingin membuang waktu untuk sampai ke bagian yang perlu diuji dll
Ini akan menghemat banyak waktu dalam game yang lebih kompleks.
sumber
1) Skrip seringkali lebih mudah untuk dimodifikasi daripada kode.
2) Skrip sering dimodifikasi lapangan. Ini memungkinkan modding game.
sumber
Sebagian besar bahasa scripting jauh lebih ekspresif daripada bahasa di mesin inti. Seringkali mesin ditulis dalam bahasa tingkat rendah (mis. C ++) untuk alasan kinerja, tetapi kode gameplay tidak perlu sebagai pemain sehingga prioritas beralih ke kemampuan mengekspresikan fungsionalitas dengan mudah.
Misalnya, pengetikan dinamis vs. statis. Contoh lain: pengumpulan sampah vs. manajemen memori manual.
sumber
Scripting memungkinkan Anda untuk menulis logika di tingkat yang lebih tinggi. Dengan kata lain, Anda menulis lebih sedikit kode dengan lebih banyak fungsi.
Jadi contoh, berikut ini menunjukkan perbedaan antara menulis sesuatu dalam kode dan menulisnya dalam bahasa skrip.
Kode Game
}
Kode skrip
Lihat seberapa sedikit pengkodean yang harus dilakukan perancang jika Anda menggunakan bahasa skrip?
Alasannya adalah karena dalam kode permainan, Anda harus membagi acara menjadi beberapa frame, dan menulis kode dari perspektif beberapa frame. Di sisi lain, skrip memungkinkan Anda untuk memikirkan peristiwa beberapa frame sebagai hanya satu baris kode, karena semua kode tambahan diabstraksi di belakang fungsi skrip.
Anda mungkin bertanya, tetapi tidak bisakah fungsi itu hanya ditulis dalam kode permainan juga? Ya, tapi itu berarti para perancang harus membuka kode sumber dari mesin permainan dan menulis semua kode di sana, dan Anda tidak ingin desainer Anda memeriksa kode sumber dari mesin permainan (mereka mungkin secara tidak sengaja mengubah beberapa kode lain dan semuanya crash).
Alih-alih, Anda ingin desainer Anda melakukan sesuatu seperti ini sebagai gantinya: Klik kanan mobil di Editor Peta, klik Sisipkan Skrip, ketik kode skrip. Tidak ada masalah dengan kode sumber mesin game kritis.
sumber