Anda di halaman 1dari 4

Scripting dalam Pembuatan Game

Fakhruddin Ar Razi 1) Idhar Firmansyah2)


1) Jurusan Teknik Informatika, UIN Malang, email: fadeaway19@gmail.com
2) Jurusan Teknik Informatika, UIN Malang, email: interisty@gmail.com

Abstract – Perkembangan teknologi komputer sangat yang telah dibuat sebelumnya, tentunya dengan sedikit
mempengaruhi perkembangan yang ada dalam dunia penambahan tekstur baru agar tampilan game baru
game. Pembentukan karakter pada game semakin mereka tidak sama persis dengan yang sebelumnya.
mendekati dengan keadaan sebenarnya pada dunia Game engine sangat cocok digunakan untuk membuat
nyata. Ketika proses pembuatan game membutuhkan game multi seri.
susunan yang lebih kompleks, timbullah kebutuhan Pemilihan bahasa dalam membuat game akan
untuk memisahkan konten (desain perilaku) dari berpengaruh ketika developer ingin merubah/
mesin. Kehandalan seorang desainer game benar- memperbaiki maupun mengembangkan game tersebut.
benar dibutuhkan untuk merancang perilaku yang Karena tiap-tiap bahasa pemrograman memiliki ciri-
luas dari karakter. Banyak tersedia berbagai macam ciri dan struktur yang berbeda.
bentuk bahasa pemrograman yang ada. Tentunya dari
kesemuanya itu memiliki kelebihan dan kekurangan
sendiri-sendiri. Maka game developer harus benar- III. HASIL DAN PEMBAHASAN
benar jeli dalam memilih bahasa dan menyusun script
untuk membuat suatu game, agar nantinya game A. Pilihan bahasa pemrograman
dapat berjalan lancar, tanpa bug, dan mampu
Walaupun terdapat banyak sekali pilihan bahasa
menjalankan script dengan kebutuhan hardware
pemrograman untuk membuat game, namun pada
seminimum mungkin.
intinya bahasa tersebut harus memenuhi syarat sebagai
berikut :
Kata kunci : komputer,game, script, developer, bug.
a) Speed
Bahasa scripting untuk game harus mampu
I. PENDAHULUAN berjalan secepat mungkin. Jika kita berniat untuk
menggunakan banyak script untuk perilaku
Pemrograman suatu game bisa menggunakan karakter dan kejadian di level game, maka script
berbagai macam jenis bahasa pemrograman. akan perlu untuk mengeksekusi sebagai bagian
Diantaranya yang terkenal adalah C++, C dan Java. dari loop game utama. Ini berarti bahwa script
Proses pembuatan game modern bisa memakan yang lambat akan memakan waktu yang kita
waktu 1-3 tahun untuk menyelesaikannya. Lamanya butuhkan untuk membuat suatu adegan,
suatu pengembangan bergantung pada sejumlah menjalankan mesin fisika, atau menyiapkan audio.
faktor, seperti genre, skala, platform pengembangan
b) Kompilasi dan Interpretasi (penyusunan dan
dan jumlah aset.
penafsiran)
Sebagai contoh, sebuah game puzzle yang
Bahasa scripting secara luas
sederhana dengan menggunakan grafik 2D akan jauh
diinterpretasikan,melalui susunan serangkaian
lebih sedikit memakan waktu untuk dikembangkan
byte. Penafsiran bahasa diambil melalui format
daripada game role-playing komputer 3D.
teks. Interpreter melihat setiap baris, penyusunan
bekerja sesuai yang maksud dari script, dan
melakukan tindakan yang spesifik. Bahasa byte-
II. LANDASAN TEORI
terkompilasi dikonversi dari teks ke format
internal, yang disebut byte code. Kode byte
C++ biasa digunakan untuk membuat game
biasanya jauh lebih padat daripada format teks.
engine. Game engine berfungsi sebagai “Middleware”
Karena kode byte dalam suatu format dioptimalkan
atau jembatan antara Brainware (pembuat game) dan
ketika dieksekusi, agar dapat berjalan lebih cepat.
game itu sendiri. Game engine bisa membuat proses
pembuatan sebuah game menjadi lebih cepat dan c) Ekstensibilitas dan Integrasi
efisien karena game engine layaknya sebuah template Bahasa scripting perlu memiliki akses ke
yang “reuseable”. fungsi yang signifikan ke dalam game. Sebuah
Artinya bila developer tersebut ingin memproduksi script yang mengendalikan karakter, misalnya,
game lagi, mereka tinggal menggunakan game engine harus mampu untuk menanyai game untuk mencari
tahu apa yang bisa dilihat dan kemudian game telah diciptakan oleh pengembang khusus untuk
membiarkan game tahu apa yang akan dilakukan kebutuhan mereka sendiri. Dalam beberapa tahun
sebagai aksinya. terakhir telah ada minat dalam bahasa off-the-shelf,
Serangkaian fungsi yang dibutuhkan untuk yang kebanyakn diterapkan pada suatu game engine.
mengakses ini jarang diketahui ketika bahasa Beberapa mesin game komersial dilengkapi dengan
scripting telah diimplementasikan atau dipilih. Hal dukungan bahasa scripting ini (Unreal dan Quake oleh
ini penting untuk memiliki sebuah bahasa yang id Software, misalnya). Hal ini memberikan solusi
dapat dengan mudah memanggil fungsi-fungsi atau lengkap dalam efisiensi waktu pembuatan game,
menggunakan kelas main code dalam game. karena sebagian besar bahasa yang ada yang
Biasanya, itu adalah penting bagi programmer digunakan dalam game pada awalnya tidak dirancang
untuk dapat mengekspos fungsi baru atau kelas untuk tujuan ini. Namun penggunaan bahasa off-the-
yang dengan mudah ketika pembuat script shelf ini memiliki hubungan dengan kelebihan dan
memintanya. kekurangan yang perlu dievaluasi sebelum kita
membuat pilihan.
d) Re-Entrancy (ikut serta ulang)
Fungsi ini sering berguna untuk memanggil a) Kelebihan
script menjadi diikutsertakan ulang. Mereka dapat Bahasa-bahasa off-the-shelf cenderung lebih
berjalan untuk sementara waktu, dan ketika lengkap dan handal daripada bahasa yang kita tulis
anggaran waktu telah habis script akan dapat sendiri. Dengan menggunakan cara ini, kita
ditunda. Ketika script selanjutnya mendapatkan mendapatkan manfaat dari banyaknya waktu
beberapa waktu kembali, maka akan dapat pengembangan, upaya debugging, dan optimasi
menjalankan kembali script yang ditunda yang telah dilakukan oleh pihak lain sebelumnya.
sebelumnya. Bila kita telah menggunakan bahasa off-the-
Hal ini sering membantu untuk membiarkan shelf, pengembangan tidak berhenti sampai di situ.
kontrol hasil script saat mencapai jeda normal. Terdapat sebuah komunitas pengembang yang
Kemudian sebuah algoritma penjadwalan dapat mungkin akan melanjutkan pengembangan pada
memberikan lebih banyak waktu untuk bahasa tersebut, memperbaiki dan menghapus bug.
meminimalisasi penggunaan sumber daya. Banyak bahasa open source menyediakan forum
Sebuah script untuk mengendalikan sebuah web di mana masalah dapat dibicarakan, bug dapat
karakter, misalnya, mungkin memiliki lima dilaporkan, dan contoh kode dapat didownload.
tahapan yang berbeda (memeriksa situasi, Dukungan yang berkelanjutan Ini dapat sangat
memeriksa kesehatan, menentukan gerakan, berharga dalam memastikan sistem scripting yang
rencana rute, dan melaksanakan gerakan). Ini kuat dan bebas bug.
semua dapat dimasukkan dalam satu script yang Banyak game, terutama pada PC, ditulis
menghasilkan penyekat antara setiap bagian. dengan tujuan yang memungkinkan konsumen
Kemudian masing-masing akan berjalan dengan untuk mengedit perilaku mereka. Konsumen
setiap lima frame, dan beban dari eksekusi AI akan membangun objek baru, level, atau mods
didistribusikan. keseluruhan dapat memperpanjang hidup sebuah
Re-entrancy yang lebih canggih harus rak game. Menggunakan bahasa scripting yang
memungkinkan penulis script untuk menandai umum memungkinkan pengguna untuk
bagian yang tidak boleh terputus. mempelajari bahasa yang mudah dengan
menggunakan tutorial, contoh kode, dan
B. Embedding (penanaman) penerjemah baris perintah yang dapat didownload
dari web. Kebanyakan bahasa memiliki newsgroup
Embedding berhubungan dengan ekstensibilitas.
atau forum web di mana pelanggan bisa
Sebuah bahasa yang tertanam dirancang untuk
mendapatkan nasihat tanpa menyebut garis
dimasukkan ke dalam program lain. Ketika kita
bantuan penerbit.
menjalankan bahasa scripting dari workstation,
biasanya akan menjalankan program khusus untuk b) Kekurangan
menafsirkan file source code. Dalam game, sistem Bila kita membuat game menggunakan
scripting perlu dikontrol dari dalam program utama. bahasa ini, anda dapat memastikan itu tidak persis
Game yang menentukan jalannya script harus apa yang anda inginkan. Karena game peka
dijalankan dan harus dapat memberitahu mesin terkait terhadap keterbatasan memori dan kecepatan, anda
bahasa scripting yang cocok untuk memproses script dapat menaruh fitur yang anda butuhkan saja ke
tersebut. dalam bahasa. Seperti yang kita lihat pada re-
entrancy, anda juga dapat menambahkan fitur yang
C. Memilih sebuah bahasa khusus untuk aplikasi game dan yang biasanya
tidak dimasukkan dalam bahasa umum.
Sejumlah besar bahasa scripting tersedia, dan
Dengan cara yang sama, bila ada sesuatu
banyak dari mereka yang dirilis di bawah lisensi yang
yang salah dengan bahasa tersebut, staf anda yang
cocok untuk dimasukkan dalam sebuah game. Secara
tahu bagaimana susunan game dan biasanya dapat
tradisional, sebagian besar bahasa scripting dalam
menemukan bug dan menciptakan solusi yang Keempat tahapan membentuk sebuah jalur,
lebih cepat. masing-masing memodifikasi masukan untuk
Setiap kali anda menyertakan kode pihak mengubahnya menjadi format yang lebih mudah
ketiga ke dalam game anda, anda akan kehilangan dimanipulasi. Tahapan tidak mungkin terjadi satu
kontrol atas hal itu. Dalam kebanyakan kasus, demi satu. Semua langkah bisa saling terkait, atau set
keuntungan lebih besar daripada kurangnya tahapan bisa membentuk fase terpisah. Script mungkin
fleksibilitas, tapi hanya untuk beberapa proyek berupa tokenized, diuraikan, dan dikompilasi secara
kontrol. offline, misalnya untuk interpretasi kemudian.
1) Tokenizing
D. Bahasa Open-Source
Tokenizing mengidentifikasi unsur-unsur
Banyak bahasa scripting game populer yang dirilis dalam teks. Sebuah file teks hanya berisi
di bawah lisensi open source. Software open-source serangkaian karakter (dalam pengertian karakter
dirilis di bawah lisensi yang memberikan hak user ASCII). Hasil tokenizer keluar sebagai kumpulan
untuk memasukkannya ke dalam perangkat lunak byte tertentu dan jenis dari kelompok tertentu yang
mereka sendiri tanpa membayar biaya tambahan. membentuk mereka. Sebuah string dalam bentuk :
Beberapa lisensi open source mengharuskan user 1 a = 3.2;
membebaskan produk open source yang baru dibuat. dapat dipisah menjadi 6 token :
Ini jelas tidak cocok bagi game komersial. a -- text
Open-source software, seperti namanya, juga <space> : -- whitespace
memungkinkan akses untuk melihat dan mengubah = -- equality operator
source code. Hal ini membuat mudah untuk menarik <space> -- whitespace
studio dengan memberikan kebebasan untuk menarik 3.2 -- floating point number
keluar setiap kode asing atau kode yang tidak efisien. ; -- end of statement identifier
Beberapa lisensi open source, bahkan yang
mengijinkan anda untuk menggunakan bahasa dalam 2) Parsing
produk komersial, mengharuskan anda membebaskan Makna dari sebuah program adalah sangat
modifikasi bahasa itu sendiri. Ini mungkin akan hirarkis: nama variabel dapat ditemukan dalam
menjadi masalah bagi proyek anda. sebuah statement pemberian nilai, ditemukan di
Walaupun ada atau tidak sebuah bahasa scripting dalam pernyataan IF-, yang ada di dalam tubuh
open source, terdapat implikasi hukum dari fungsi, di dalam definisi kelas, maupun di dalam
penggunaan bahasa tersebut dalam proyek anda. sebuah deklarasi namespace, misalnya. Parser
Sebelum menggunakan teknologi luar dalam produk mengambil urutan token, mengidentifikasi peran
yang ingin anda distribusikan (apakah komersial atau masing-masing kode dalam program, dan
tidak), anda harus selalu berkonsultasi dengan mengidentifikasi struktur hirarkis keseluruhan
pengacara properti intelektual yang baik. Buku ini program.
tidak bisa dengan benar menyarankan anda pada Contoh : 1 if (a < b) return;
implikasi hukum dari penggunaan bahasa pihak
ketiga. Isi komentar berikut ini dimaksudkan sebagai dapat dilakukan proses parsing seperti pada bagan
indikasi dari hal-hal yang mungkin menimbulkan di bawah ini :
kekhawatiran. Ada banyak lainnya.
Bila Anda menggunakan perangkat lunak open
source, tidak ada orang yang melisensi perangkat
lunak untuk anda, dan karena anda tidak menulis itu,
anda tidak tahu apakah bagian dari itu dicuri atau
disalin. Kecuali jika anda sangat berhati-hati, anda
tidak akan tahu kalau itu merusak paten atau hak
kekayaan intelektual. Hasilnya adalah bahwa anda
bisa bertanggung jawab atas pelanggaran tersebut.
Anda perlu memastikan bahwa anda memahami
implikasi hukum dari penggunaan "bebas" software.
Hal ini tidak selalu menjadi pilihan termurah atau
terbaik, meskipun biaya di muka yang sangat rendah.
Berkonsultasilah dengan seorang pengacara sebelum Gambar 1.0 Sebuah parse tree
anda membuat komitmen.
3) Compiling
E. Tahapan Pengolahan Bahasa Compiler mengubah parse tree ke dalam kode byte
yang dapat dijalankan oleh interpreter. Kode byte
Memulai sebagai teks dalam sebuah file teks, biasanya berbentuk data biner berurutan. Compiler
script biasanya melewati empat tahap: tokenization, non-optimasi biasanya berisi output kode byte
parsing (penguraian), kompilasi, dan interpretasi.
sebagai terjemahan literal dari parse tree. Jadi code inti dari versi 2.2 dan seterusnya (disebut
seperti : Generator).
1 a = 3;
Python memiliki sejumlah besar library yang
2 if (a < 0) return 1; tersedia untuk itu dan memiliki komunitas yang
3 else return 0; sangat besar dari usernya. Pengguna python
memiliki reputasi untuk menolong, dan newsgroup
akan dicompile menjadi : comp.lang.python merupakan sumber
1 load 3 troubleshooting dan saran yang sangat baik.
2 set-value-of a Kelemahan utama Python adalah dalam
3 get-value-of a kecepatan dan ukuran. Meskipun mengalami
4 compare-with-zero kemajuan signifikan dalam kecepatan eksekusi
5 if-greater-jump-to LABEL telah dibuat selama beberapa tahun terakhir,
6 load 1 namun masih terasa lambat ketika dijalankan.
7 return Python bergantung pada lookup tabel hash (oleh
8 LABEL:
string) bagi banyak operasi fundamental (fungsi
9 load 0
10 return panggilan, akses variabel, object-oriented
programming). Hal ini menambahkan banyak
4) Interpreting biaya overhead.
Tahap akhir dari serangkaian ini ialah
menjalankan kode byte. Dalam sebuah compiler G. Tools: Sekilas tentang Lex dan Yacc
untuk bahasa seperti C atau C++, produk akhir Lex dan Yacc adalah dua tool utama yang
akan menjadi mesin instruksi yang dapat langsung digunakan dalam membangun tokenizers dan parser.
dijalankan oleh prosesor. Dalam bahasa scripting, Masing-masing memiliki implementasi yang berbeda
anda sering perlu untuk menyediakan layanan dan kebanyakan disediakan untuk platform UNIX
(seperti re-entrancy dan eksekusi yang aman) yang (namun tersedia versi untuk platform lain juga).
tidak mudah dicapai dengan bahasa mesin. Varian Linux yang sering digunakan contohnya adalah
Kode byte akhir dijalankan pada sebuah Flex dan Bison.
"mesin virtual". Ini secara efektif menjadi sebuah Untuk membuat tokenizer dengan Lex, kita harus
emulator untuk sebuah mesin yang belum pernah menjelaskan apa yang membuat token yang berbeda
ada di hardware. Anda menentukan instruksi agar dalam bahasa anda. Ini akan menghasilkan kode C
mesin dapat mengeksekusi, dengan instruksi kode yang akan mengkonversi aliran teks dari program ke
byte. dalam aliran kode token dan data token, kemudian
menghasilkan output yang lebih baik dan lebih cepat
F. Contoh bahasa yang sering digunakan daripada kita membuatnya sendiri.
1) Lua Yacc digunakan untuk membangun parser.
Lua adalah bahasa prosedural sederhana yang Dibutuhkan representasi dari tata bahasa kita. Tata
dibangun dari dasar ke atas sebagai bahasa bahasa ini kemudian diberikan dalam seperangkat
embedding. Desain bahasa didorong oleh aturan yang menunjukkan bagaimana struktur yang
ekstensibilitas. Tidak seperti kebanyakan bahasa lebih besar yang terbuat dari yang sederhana atau dari
embedded, hal ini tidak terbatas untuk token.
menambahkan fungsi baru atau tipe data di C atau
C + +. Cara kerja bahasa Lua juga dapat men-
tweak. IV. KESIMPULAN
Lua memiliki sejumlah kecil core library
yang menyediakan fungsionalitas dasar. Core yang Bahasa pemrograman dalam pembuatan game
relatif tanpa sifat khusus merupakan bagian objek sangat banyak macamnya. Contohnya C++, walaupun
tersebut, bagaimanapun. Dalam game anda tidak bahasa pemrograman ini sudah lama tetapi sampai
mungkin membutuhkan library untuk memproses sekarang masih sering digunakan. Untuk membuat
apa pun kecuali matematika dan logika. Core kecil game berbasis web biasanya mengunakan C#, java
ini mudah dipelajari dan sangat fleksibel. applet, dll. Yang perlu diperhatikan oleh pembuat
game salah satunya adalah memahami bahasa
2) Python pemrograman yang digunakan, agar ke depannya tidak
Python adalah mudah dipelajari, bahasa kesulitan apabila ingin mengembangkan game
scripting berorientasi objek dengan ekstensibilitas tersebut.
baik dan dukungan embedding. Python
menyediakan dukungan yang sangat baik untuk
pemrograman bahasa campuran, termasuk
kemampuan untuk secara transparan memanggil C
dan C + + dari Python. Python memiliki dukungan
untuk fungsi re-entrant sebagai bagian dari bahasa

Anda mungkin juga menyukai