Konsep Pembuatan Script Game Komputer
Pengantar Teknologi Game
Script dan Skenario
Perkembangan
teknologi komputer sangat mempengaruhi perkembangan yang ada dalam dunia game.
Pembentukan karakter pada game semakin mendekati dengan keadaan sebenarnya pada
dunia nyata. Ketika proses pembuatan game membutuhkan susunan yang lebih
kompleks, timbullah kebutuhan untuk memisahkan konten (desain perilaku) dari
mesin. Kehandalan seorang desainer game benar-benar dibutuhkan untuk merancang
perilaku yang luas dari karakter. Banyak tersedia berbagai macam bentuk bahasa
pemrograman yang ada. Tentunya dari kesemuanya itu memiliki kelebihan dan
kekurangan masing-masing. Maka game developer harus benar-benar teliti dalam
memilih bahasa dan menyusun script untuk membuat suatu game, agar nantinya game
dapat berjalan lancar, tanpa bug, dan mampu menjalankan script dengan kebutuhan
hardware seminimum mungkin.
Konsep Pembuatan Scripting pada game
• Pemilihan Bahasa Pemrograman
Pemrograman suatu game bisa
menggunakan berbagai macam jenis bahasa pemrograman. Diantaranya yang terkenal
adalah C++, C dan Java.
Proses pembuatan game modern bisa
memakan waktu 1-3 tahun untuk menyelesaikannya. Lamanya suatu pengembangan
bergantung pada sejumlah faktor, seperti genre, skala, platform pengembangan
dan jumlah aset.
Sebagai contoh, sebuah game puzzle
yang sederhana dengan menggunakan grafik 2D akan jauh lebih sedikit memakan
waktu untuk dikembangkan daripada game role-playing komputer 3D.
Walaupun terdapat banyak sekali
pilihan bahasa pemrograman untuk membuat game, namun pada intinya bahasa
tersebut harus memenuhi syarat sebagai berikut :
a) Speed
Bahasa scripting untuk game harus
mampu berjalan secepat mungkin. Jika kita berniat untuk menggunakan banyak
script untuk perilaku karakter dan kejadian di level game, maka script akan
perlu untuk mengeksekusi sebagai bagian dari loop game utama. Ini berarti bahwa
script yang lambat akan memakan waktu yang kita butuhkan untuk membuat suatu
adegan, menjalankan mesin fisika, atau menyiapkan audio.
b) Kompilasi dan Interpretasi (penyusunan dan penafsiran)
Bahasa scripting secara luas
diinterpretasikan,melalui susunan serangkaian byte. Penafsiran bahasa diambil
melalui format teks. Interpreter melihat setiap baris, penyusunan bekerja
sesuai yang maksud dari script, dan melakukan tindakan yang spesifik.
Bahasa byte-terkompilasi dikonversi
dari teks ke format internal, yang disebut byte code. Kode byte biasanya jauh
lebih padat daripada format teks. Karena kode byte dalam suatu format
dioptimalkan ketika dieksekusi, agar dapat berjalan lebih cepat.
c) Ekstensibilitas dan Integrasi
Bahasa scripting perlu memiliki
akses ke fungsi yang signifikan ke dalam game. Sebuah script yang mengendalikan
karakter, misalnya, harus mampu untuk menanyai game untuk mencari tahu apa yang
bisa dilihat dan kemudian membiarkan game tahu apa yang akan dilakukan sebagai
aksinya.
Serangkaian fungsi yang dibutuhkan
untuk mengakses ini jarang diketahui ketika bahasa scripting telah
diimplementasikan atau dipilih. Hal ini penting untuk memiliki sebuah bahasa
yang dapat dengan mudah memanggil fungsi-fungsi atau menggunakan kelas main
code dalam game. Biasanya, itu adalah penting bagi programmer untuk dapat
mengekspos fungsi baru atau kelas yang dengan mudah ketika pembuat script
memintanya.
d) Re-Entrancy (ikut serta ulang)
Fungsi ini sering berguna untuk
memanggil script menjadi diikutsertakan ulang. Mereka dapat berjalan untuk
sementara waktu, dan ketika anggaran waktu telah habis script akan dapat
ditunda. Ketika script selanjutnya mendapatkan beberapa waktu kembali, maka
akan dapat menjalankan kembali script yang ditunda sebelumnya.
Hal ini sering membantu untuk
membiarkan kontrol hasil script saat mencapai jeda normal. Kemudian sebuah
algoritma penjadwalan dapat memberikan lebih banyak waktu untuk meminimalisasi
penggunaan sumber daya.
Sebuah script untuk mengendalikan
sebuah karakter, misalnya, mungkin memiliki lima tahapan yang berbeda
(memeriksa situasi, memeriksa kesehatan, menentukan gerakan, rencana rute, dan
melaksanakan gerakan). Ini semua dapat dimasukkan dalam satu script yang
menghasilkan penyekat antara setiap bagian. Kemudian masing-masing akan
berjalan dengan setiap lima frame, dan beban dari eksekusi AI akan
didistribusikan.
Re-entrancy yang lebih canggih harus
memungkinkan penulis script untuk menandai bagian yang tidak boleh terputus.
• Embedding (penanaman)
Embedding berhubungan dengan
ekstensibilitas. Sebuah bahasa yang tertanam dirancang untuk dimasukkan ke
dalam program lain. Ketika kita menjalankan bahasa scripting dari workstation,
biasanya akan menjalankan program khusus untuk menafsirkan file source code.
Dalam game, sistem scripting perlu dikontrol dari dalam program utama. Game
yang menentukan jalannya script harus dijalankan dan harus dapat memberitahu
mesin terkait bahasa scripting yang cocok untuk memproses script tersebut.
• Bahasa Open Source
Banyak bahasa scripting game populer
yang dirilis di bawah lisensi open source. Software open-source dirilis di
bawah lisensi yang memberikan hak user untuk memasukkannya ke dalam perangkat
lunak mereka sendiri tanpa membayar biaya tambahan.
Memulai sebagai teks dalam sebuah
file teks, script biasanya melewati empat tahap:
1. Tokenization :
Tokenizing mengidentifikasi
unsur-unsur dalam teks. Sebuah file teks hanya berisi serangkaian karakter
(dalam pengertian karakter ASCII). Hasil tokenizer keluar sebagai kumpulan byte
tertentu dan jenis dari kelompok tertentu yang membentuk mereka.
2. Parsing (penguraian) :
Makna dari sebuah program adalah
sangat hirarkis: nama variabel dapat ditemukan dalam sebuah statement pemberian
nilai, ditemukan di dalam pernyataan IF-, yang ada di dalam tubuh fungsi, di
dalam definisi kelas, maupun di dalam sebuah deklarasi namespace, misalnya.
Parser mengambil urutan token, mengidentifikasi peran masing-masing kode dalam
program, dan mengidentifikasi struktur hirarkis keseluruhan program.
Contoh1 : if (a < b)
return;
3. Compiler :
Mengubah parse tree ke dalam kode
byte yang dapat dijalankan oleh interpreter. Kode byte biasanya berbentuk data
biner berurutan. Compiler non-optimasi biasanya berisi output kode byte sebagai
terjemahan literal dari parse tree.
4. Interpreting :
Tahap akhir dari serangkaian ini
ialah menjalankan kode byte. Dalam sebuah compiler untuk bahasa seperti C atau
C++, produk akhir akan menjadi mesin instruksi yang dapat langsung dijalankan
oleh prosesor. Dalam bahasa scripting, anda sering perlu untuk menyediakan
layanan (seperti re-entrancy dan eksekusi yang aman) yang tidak mudah dicapai
dengan bahasa mesin.Kode byte akhir dijalankan pada sebuah “mesin virtual”. Ini
secara efektif menjadi sebuah emulator untuk sebuah mesin yang belum pernah ada
di hardware. Anda menentukan instruksi agar mesin dapat mengeksekusi, dengan
instruksi kode byte.
CONTOH SCRIPT PEMBUTAN GAME TEBAK
ANGKA DENGAN MENGGUNAKAN BAHASA C
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int random_number(void);
int view_stats(void);
int show_menu(void);
int totalwins = 0;
int totallosses = 0;
int guess;
int counter = 5;
int main() {
printf("\t\t\tGAME TEBAK ANGKA\n");
printf("\t\t\t================\n");
printf("\t\t ASTRONAUT11.BLOGSPOT.COM\n\n");
show_menu();
system("pause");
return 0;
}
int show_menu() {
int decision;
system("color f0");
printf("\ MENU\n");
printf("=================\n\n");
printf(" 1. MULAI GAME\n");
printf(" 2. STATUS GAME\n");
printf(" 3. PANDUAN GAME\n");
printf(" 4. EXIT GAME\n\n");
printf("MENU INPUT (1-4): ");
scanf("%d", &decision);
switch (decision) {
case 1:
random_number();
break;
case 2:
view_stats();
break;
case 3:
printf("\nIni adalah permainan tebak angka! Bagaimana cara mainnya?\n");
printf("Komputer akan memberikan angka dari 1-10 secara acak.\n");
printf("\nTugas anda adalah menebak angka acak tersebut! \n");
printf("Anda diberikan 5 kali kesempatan untuk menebaknya.\n");
printf("Disini kita bermain dengan LUCK atau Logika ?\n");
printf("Hal itu terserah kepada anda. HAHAHA!!");
printf("Selamat bermain!(^_^)\n\n");
show_menu();
case 4:
printf("\nTerima kasih telah menggunakan permainan ini (^_^)\n");
system("exit");
break;
default:
printf("\nPilihan Anda tidak tersedia, masukkan pilihan yang benar\n\n");
show_menu();
}
return 0;
}
int random_number() {
int randnumber;
srand(time(NULL));
randnumber = 1 + rand() % 10;
printf("Saya sedang memikirkan angka 1 s/d 10.\n");
printf("Angka apa yang saya pikirkan? ");
scanf("%d", &guess);
if(guess == randnumber) {
system("color fc");
printf("\nSelamat Kamu Benar, Saya sedang memikirkkan Angka %d\n", randnumber);
totalwins += 1;
counter = 5;
printf("\nTekan Sembarang tombol\n");
system("pause");
show_menu();
}
else {
counter -= 1;
printf("\nMaaf itu bukan angka yang saya pikirkan.\nYang saya pikirkan adalah angka %d\n", randnumber);
printf("\nSilahkan ulangi lagi (Anda memiliki kesempatan %d kali lagi untuk mecoba)\n", counter);
if(counter != 0) {
random_number();
}
else {
printf("\nKamu kalah dalam permainan ini.\n\n");
counter = 5;
totallosses += 1;
show_menu();
}
}
return 0;
}
int view_stats() {
printf("\nMenang dalam game sebanyak : %d", totalwins);
printf("\nKalah dalam game sebanyak : %d\n\n", totallosses);
show_menu();
return 0;
}
#include <stdlib.h>
#include <time.h>
int random_number(void);
int view_stats(void);
int show_menu(void);
int totalwins = 0;
int totallosses = 0;
int guess;
int counter = 5;
int main() {
printf("\t\t\tGAME TEBAK ANGKA\n");
printf("\t\t\t================\n");
printf("\t\t ASTRONAUT11.BLOGSPOT.COM\n\n");
show_menu();
system("pause");
return 0;
}
int show_menu() {
int decision;
system("color f0");
printf("\ MENU\n");
printf("=================\n\n");
printf(" 1. MULAI GAME\n");
printf(" 2. STATUS GAME\n");
printf(" 3. PANDUAN GAME\n");
printf(" 4. EXIT GAME\n\n");
printf("MENU INPUT (1-4): ");
scanf("%d", &decision);
switch (decision) {
case 1:
random_number();
break;
case 2:
view_stats();
break;
case 3:
printf("\nIni adalah permainan tebak angka! Bagaimana cara mainnya?\n");
printf("Komputer akan memberikan angka dari 1-10 secara acak.\n");
printf("\nTugas anda adalah menebak angka acak tersebut! \n");
printf("Anda diberikan 5 kali kesempatan untuk menebaknya.\n");
printf("Disini kita bermain dengan LUCK atau Logika ?\n");
printf("Hal itu terserah kepada anda. HAHAHA!!");
printf("Selamat bermain!(^_^)\n\n");
show_menu();
case 4:
printf("\nTerima kasih telah menggunakan permainan ini (^_^)\n");
system("exit");
break;
default:
printf("\nPilihan Anda tidak tersedia, masukkan pilihan yang benar\n\n");
show_menu();
}
return 0;
}
int random_number() {
int randnumber;
srand(time(NULL));
randnumber = 1 + rand() % 10;
printf("Saya sedang memikirkan angka 1 s/d 10.\n");
printf("Angka apa yang saya pikirkan? ");
scanf("%d", &guess);
if(guess == randnumber) {
system("color fc");
printf("\nSelamat Kamu Benar, Saya sedang memikirkkan Angka %d\n", randnumber);
totalwins += 1;
counter = 5;
printf("\nTekan Sembarang tombol\n");
system("pause");
show_menu();
}
else {
counter -= 1;
printf("\nMaaf itu bukan angka yang saya pikirkan.\nYang saya pikirkan adalah angka %d\n", randnumber);
printf("\nSilahkan ulangi lagi (Anda memiliki kesempatan %d kali lagi untuk mecoba)\n", counter);
if(counter != 0) {
random_number();
}
else {
printf("\nKamu kalah dalam permainan ini.\n\n");
counter = 5;
totallosses += 1;
show_menu();
}
}
return 0;
}
int view_stats() {
printf("\nMenang dalam game sebanyak : %d", totalwins);
printf("\nKalah dalam game sebanyak : %d\n\n", totallosses);
show_menu();
return 0;
}
STORYBOARD
Storyboard adalah sketsa gambar yang
disusun berurutan sesuai dengan naskah, dengan storyboard kita dapat
menyampaikan ide cerita kita kepada orang lain dengan lebih mudah, karena kita
dapat menggiring khayalan seseorang mengikuti gambar-gambar yang tersaji,
sehingga menghasilkan persepsi yang sama pada ide cerita kita.
Salah satu tahapan penting dalam produksi film adalah membuat storyboard, setelah sutradara dan pengarah fotografi membahas sebuah adegan mereka kemudian bertemu dengan artis storyboard untuk menterjemahkan gagasan mereka dalam gambar. Disitu terbentuklah rancangan-rancangan shooting, dan ketika dirasa ada sesuatau yang kurang pas atau ada kendala-kendala dalam pengambilan gambar nantinya segera dapat dilakukan revisi.
Dengan mengacu pada rencana shooting dalam storyboard para pemain dan krue dapat mengerjakan tugas mereka masing-masing dengan cepat dan tepat. Storyboard secara gamblang memberikan tata letak visual dari adegan seperti yang terlihat melalui lensa kamera.
Storyboard juga berguna bagi editor untuk membantu menyusun scene yang berbeda- beda menjadi sesuai dengan skenario dengan lebih mudah dan cepat.
Salah satu tahapan penting dalam produksi film adalah membuat storyboard, setelah sutradara dan pengarah fotografi membahas sebuah adegan mereka kemudian bertemu dengan artis storyboard untuk menterjemahkan gagasan mereka dalam gambar. Disitu terbentuklah rancangan-rancangan shooting, dan ketika dirasa ada sesuatau yang kurang pas atau ada kendala-kendala dalam pengambilan gambar nantinya segera dapat dilakukan revisi.
Dengan mengacu pada rencana shooting dalam storyboard para pemain dan krue dapat mengerjakan tugas mereka masing-masing dengan cepat dan tepat. Storyboard secara gamblang memberikan tata letak visual dari adegan seperti yang terlihat melalui lensa kamera.
Storyboard juga berguna bagi editor untuk membantu menyusun scene yang berbeda- beda menjadi sesuai dengan skenario dengan lebih mudah dan cepat.
Storyboard pada Game
Storyboard pada Game sedikit berbeda
dari storyboard animasi, dimana pada storyboard game terdapat goal /
mission yang akan dibuat pada game itu sendiri. Kemudian storyboard pada game
menjelakaskan tentang alur permaianan itu sendiri seperti apa tergantung dari
jenis game. misalkan game ber-genre arcade tidak memiliki
alur cerita namun game terebut menitik beratkan pada perolehan point. Jadi
storyboard yang dibuat yaitu bagaimana pemain mendapat nilai / point setinggi
mungkin.
Fungsi Storyboard
- Menggambarkan sketsa cerita sebuah film/animasi berdasarkan garis besar seperti awal tengah akhir.
- Memudahkan saat membuat film.
- Merupakan perencanaan dalam membuat film (kalau dalam bangunan bisa disebut desain bangunan)
Referensi :
https://www.academia.edu/3875722/Scripting_dalam_Pembuatan_Game
Komentar
Posting Komentar