Minggu, 24 April 2016

ARSITEKTUR GAME ENGINE

Arsitektur game engine adalah sistem perangkat lunak yang dirancang untuk menciptakan dan mengembangkan video game. Ada banyak mesin permainan yang dirancang untuk bekerja pada konsol permainan video dan sistem operasi dekstop seperti Microsoft Windows, Linux, dan Mac Os.

Tahap-tahap awal pembuatan game :

1
Tuangkan Logika permainan anda ke dalam rendering (view)
Konsep
Hal pertama yang harus dilakukan adalah memisahkan render dari logika. Logika permainan tidak mengenal rendering, sehingga pada logika tidak peduli apakah nantinya akan ditampilkan dalam 2D, 3D seni, ASCII atau apapun. Namun rendering tergantung pada logika, karena itu perlu info tentang cara/dimana untuk menampilkan segala logika kita. Gambar berikut menunjukkan 2 modul dengan dependensi. Rendering yang terjadi di dalam modul "View".


Contoh:
Kita akan membuat kelas RaceCarView pada objek RaceCar. RaceCar menangani logika dan input pengguna tetapi tidak tahu tentang cara menampilkannya, dan RaceCarView menampilkan mobil balap pada layar, dengan menggunakan informasi dari raceCar.

2.  Tuangkan logika permainan anda ke dalam model dan controller

Konsep
Hal kedua yang bisa kita lakukan adalah menuangkan logika menjadi model dan controller. Model ini pada dasarnya adalah dunia permainannya. Ia akan mengetahui apa-apa tentang cara menampilkan, input pengguna, dll. Model hanya mengimplementasikan aturan dunia permainan anda, dan bagaimana entitas berinteraksi satu sama lain. Controller tau tentang model dan dapat memanipulasinya. Misalnya controller memeriksa input pengguna, dan memanipulasi mobil yang sesuai. Controller perlu untuk kode rendering saat menggunakan input mouse untuk memanipulasi objek di layar.



Contoh:
Dalam contoh balapan mobil (RaceCar), ketika ada input dari pengguna pertama yang akan menangani adalah RaceCarController. Ketika pengguna menekan tombol kiri, Controller melihat ini dan akan menangani model RaceCar, steer left(). Model ini kemudian menangani aturan dari dunia mobil untuk melakukan manuver ke kiri.

Jadi, kita membagi ke 3 modul berbeda, yaitu: model, view, dan controller.
  • Model
Semua aturan dunia permainan diimplementasikan dalam model, dan juga berisi data negara atau level dari setiap objek permainan atau entitas. Ini adalah simulasi permainan dari dunia nyata, sehingga model tidak tahu apa-apa tentang input pengguna atau menampilkan ke layar.
  • View
Rendering ke layar ditangani oleh view. View menggunakan model untuk tahu di mana saja si view harus menampilkan sesuatu. View tidak memiliki fungsi lain selain untuk menampilkan saja.
  • Controller
Controller menangani user input dan memanipulasi model. Pertama memeriksa input pengguna, selanjutnya Controller mungkin bisa meminta View untuk menampilkan objek ke layar saat mouse di klik, dan akhirnya memanipulasi data pada model. Beberapa COntroller dapat diterapkan bersamaan, misalnya keyboard controller, controller joypad, dan bahkan controller 'bot' AI.

Disini, model berdiri sendiri dan tidak perlu tahu apa-apa tentang yang lain (Controller dan View). View hanya bergantung pada model untuk membuat segala sesuatu di layar Controller menerima input, dapat memperoleh informasi tambahan dengan memanggil View, dan pada akhirnya memanipulasi Model.
Keuntungan dari arsitektur ini:
-  Desain yang bagus, karena menggunakan modul-modul
-  Dunia permainannya dibundel dalam model
-  Perubahan render tidak mempengaruhi permainan inti
-  mendukung input Controller yang berbeda, user/bot


Game engine juga sering disebut juga “Game Middleware”. Game Middleware adalah software yang didalamnya sudah terdapat elemen-elemen yang dibutuhkan oleh seorang game developer, kebanyakan dari game middleware memberikan fasilitas guna menunjang pengembangan game dengan mudah seperti graphics, sound dan Artificial intelligence.

Beberapa elemen yang ada di dalam game engine adalah :
a.       Tools/Data
Dalam pengembangan game, dibutuhkan data yang tidak semudah menuliskan text files. Dalam pengembangan game, paling tidak dibutuhkan beberapa tools seperti 3d model editor, level editor dan graphics programs. Bahkan jika diperlukan, seringkali kita mengembangkan game engine tersebut dengan menambahkan beberapa code dan fitur yang diperlukan.

b.      System
System sendiri adalah bagian dari game engine yang berfungsi untuk melakukan komunikasi dengan hardware yang berada di dalam mesin. Jika game engine sudah dibuat dengan baik maka system ini adalah satu-satunya bagian yang membutuhkan perubahan yang cukup banyak apabila dilakukan implementasi pada platform yang berbeda. Di dalam system sendiri terdapat beberapa sub system yaitu graphics, input, sound, timer, configuration. System sendiri bertanggung jawab untuk melakukan inisialisasi, update dan mematikan sub system yang terdapat di dalamnya.

c.       Console
Dengan menambahkan console, kita dapat merubah setting game dan setting game engine di dalam game tanpa perlu melakukan restart pada game tersebut. Console sendiri lebih sering digunakan dalam proses debugging. Apabila game engine tersebut mengalami error kita tinggal mengoutputkan error message tersebut ke dalam console tanpa harus melakukan restart. Console sendiri dapat dihidupkan dan dimatikan sesuai keinginan.

d.      Support
Support adalah bagian yang paling sering digunakan oleh system di dalam game engine. Support sendiri berisi rumus-rumus matematika yang biasa digunakan, vector, matrix, memory manager, file loader. Merupakan dasar dari game engine dan hampir digunakan semua projek game engine.

e.      Renderer/Engine Core
Pada game engine, engine core / renderer terdiri dari beberapa sub yaitu visibility, Collision Detection dan Response, Camera, Static Geometry, Dynamic Geometry, Particle Systems, Billboarding, Meshes, Skybox, Lighting, Fogging, Vertex Shading, dan Output.

f.        Game Interface
Game interface sendiri merupakan layer diantara game engine dan game itu sendiri. Berfungsi sebagai control yang bertujuan untuk memberikan interface apabila di dalam game engine tersebut terdapat fungsi fungsi yang bersifat dinamis sehingga memudahkan untuk mengembangkan game tersebut.

g.       The Game
Merupakan inti dari penggunaan game engine sendiri, sehingga terserah kita bagaimana mengembangkan game tersebut.

Beberapa contoh game engine :
a.       RealmForge

Merupakan free dan open source game engine untuk Microsoft .Net Framework dan dikhususkan pada visual3D Game Engine, merupakan cross platform game engine untuk .NET 2.0 dan Microsoft XNA.RealmForge dibangun diatas AXIOM 3D rendering engine. Di tulis dalam bahasa C# keseluruhan. Dibangun untuk pembuatan game berbasis .NET.


b.      Truevision3D
Merupakan game engine 3D yang dibangun dengan menggunakan visual basic 6 dan C++ dengan menggunakan Microsoft Directx  API. Mulai versi 6.5, engine ini menggunakan direct 9 dan shader support, serta ditulis ulang menggunakan C++. Sampai perkembangan terbaru, belum ada wacana untuk mengembangkannya untuk mendukung penggunaan directx9 serta Microsoft XNA.



c.       OGRE
OGRE (Object-Oriented Graphics Rendering Engine) merupakan engine yang mendukung 3D Graphic. Merupakan game engine yang fleksibel dalam melakukan 3D Rendering, ditulis dalam bahasa C++ sehingga memudahkan pengembang untuk membangun game yang mendukung 3D Graphics.


Beberapa contoh game middleware yang sering digunakan :
a.       Gamebryo 
Merupakan game engine yang berawal dari perusahaan Numerical Design Limited (NDL) akan tetapi pada perkembangannya, perusahaan NDL bergabung dengan Emergent Game Technologies. Ditulis menggunakan bahasa C++, Gamebryo merupakan 3D Game engine yang memberikan support kepada beberapa platform sebagai berikut :
-          Windows (baik direct 9 dan 10)
-          Nintendo game cube
-          Nintendo WII
-          PS 2 dan PS 3
-          XBOX serta XBOX360

b.      Renderware
Merupakan salah satu saingan dari Gamebryo. Bergerak dalam bidang 3D API dan graphic rendering engine. Renderware digunakan pada computer games, Active Worlds serta beberapa VRML Browser. Merupakan game engine yang sering digunakan di PS2 sehingga sering disebut sebagai “Sony’S Directx”.

c.       Unreal Engine
Merupakan salah satu game engine yang cukup populer. Dikembangkan oleh Epic Games dalam bahasa C++, Unreal engine menjadi salah satu game engine yang mempunyai kemampuan portability yang baik. Dapat berjalan pada beberapa platform seperti Windows, Linux, MacOS dan beberapa video games console seperti Dreamcast, XBOX, XBOX360.




#Sumber Referensi
 
http://en.wikipedia.org/wiki/List_of_game_engines
 

 

Sabtu, 23 April 2016

Pengantar Teknologi Game


KONSEP PEMBUATAN SCRIPT GAME COMPUTER

     Game/permainan adalah sesuatu yang sangat digemari oleh anak-anak hingga orang dewasa. Game berarti “hiburan”. Permainan game juga merujuk pada pengertian sebagai “kelincahan intelektual” (intellectual playability). Sementara kata “game” bisa diartikan sebagai arena keputusan dan aksi pemainnya. Ada target-target yang ingin dicapai pemainnya. Kelincahan intelektual, pada tingkat tertentu, merupakan ukuran sejauh mana game itu menarik untuk dimainkan secara maksimal.
     Beberapa waktu lalu istilah “game” yang dalam bahasa Indonesia adalah “permainan” identik dengan anak-anak  selaku pemain. Tentunya dalam permainan itu suatu kegiatan yang dilakukan oleh anak-anak yang menurut mereka itu dapat menyenangkan hati mereka. Segala bentuk kegiatan yang memerlukan pemikiran, kelincahan intelektual dan pencapaian terhadap target tertentu dapat dikatakan sebagai game. Tetapi yang akan dibahas pada kesempatan ini adalah game yang terdapat di komputer, baik off line maupun online.
     Saat ini perkembangan games di komputer sangat cepat. Para pengelola industri game berlomba-lomba untuk menciptakan game yang lebih nyata dan menarik untuk para pemainnya. Hal inilah yang membuat perkembangan games di komputer sangat cepat. Sehingga games bukan hanya sekedar permainan untuk mengisi waktu luang atau sekedar hobi. Melainkan sebuah cara untuk meningkatkan kreatifitas dan tingkat intelektual para penggunanya.

Script
      Dalam pemrograman komputer, naskah adalah sebuah program atau urutan instruksi yang ditafsirkan atau dilakukan dengan program lain daripada oleh komputer prossesor. Skrip (script) adalah semacam bahasa pemrograman dalam tingkat kesulitan yang lebih rendah, tanpa aplikasi hasil kompilasi interpreter; skrip biasanya disisipkan ke dalam bahasa pemrograman yang lebih kompleks dan hasil skrip digunakan oleh bahasa pemrograman yang lebih kompleks itu. 
      Contohnya ialah penyisipan skrip assembly ke dalam program Pascal untuk mengakses hardware pada level bahasa tingkat rendah. Skrip merupakan kumpulan sintaks bahasa pemrograman yang siap untuk di-compile. Untuk mengetahui tentang script, disini ada sedikit rangkuman tentang script :
  • Script adalah bahasa yang digunakan untuk menerjemahkan setiap perintah dalam situs yang pada saat di akses.
  • Jenis script sangat menentukan statis, dinamis, atau interaktifnya sebuah situs.
  • Semakin banyak script yang digunakan maka akan terlihat semakin dinamis, dan interaktif serta terlihat lebih bagus.
  • Bahasa dasar yang di pakai setiap situs adalah HTM.
  • Macam-macam script, PHP, ASP, JSP, Java Script, Java Applets, VBScript.
Storyboard Game
    Storyboard adalah visualisasi ide dari aplikasi yang akan dibangun, sehingga dapat memberikan gambaran dari aplikasi yang akan dihasilkan. Storyboard dapat dikatakan juga visual script yang akan dijadikan outline dari sebuah proyek, ditampilkan shot by shot yang biasa disebut dengan istilah scene.
     Storyboard sekarang lebih banyak digunakan untuk membuat kerangka pembuatan websites dan proyek media interaktif lainnya seperti iklan, film pendek, games, media pembelajaran interaktif ketika dalam tahap perancangan /desain.
      Baru-baru ini istilah “Storyboard” telah digunakan dibidang pengembangan web, pengembangan perangkat lunak dan perancangan instruksi untuk mempresentasikan dan menjelaskan kejadian interaktif seperti suara dan gerakan biasanya pada antarmuka pengguna, halaman elektronik dan layar presentasi. Sebuah Storyboard media interaktif dapat digunakan dalam antarmuka grafik pengguna untuk rancangan rencana desain sebuah website atau proyek interaktif sebagaimana alat visual untuk perencanaan isi.
Sebaliknya, sebuah site map (peta) atau flow chart (diagram alur) dapat lebih bagus digunakan untuk merencanakan arsitektur informasi, navigasi, links, organisasi dan pengalaman pengguna, terutama urutan kejadian yang susah diramalkan atau pertukaran audiovisual kejadian menjadi kepentingan desain yang belum menyeluruh.
     Salah satu keuntungan menggunakan Storyboard adalah dapat membuat pengguna untuk mengalami perubahan dalam alur cerita untuk memicu reaksi atau ketertarikan yang lebih dalam. Kilas balik, secara cepat menjadi hasil dari pengaturan Storyboard secara kronologis untuk membangun rasa penas.
Seorang pembuat Storyboard harus mampu menceritakan sebuah cerita yang bagus. Untuk mencapainya, mereka harus mengetahui berbagai film, dengan pengertian tampilan yang bagus, komposisi, gambaran berurut dan editing. Mereka harus mampu untuk bekerja secara sendiri atau dalam sebuah bagian tiam. Mereka harus mampu menerima arahan dan juga bersiap membuat perubahan terhadap hasil kerja mereka.
    Untuk proyek tertentu, pembuat Storyboard memerlukan ketrampilan menggambar yang bagus dan kemampuan beradaptasi terhadap gaya yang bermacam. Mereka harus mampu untuk mengikuti desain yang telah dikeluarkan dan menghasilkan kerja konsisten, yang digambar pada model.
 
Dalam pembuatan script game ini ada beberapa konsep yang harus Anda perhatikan di antarannya adalah sebagai berikut :
  1. Pikirkan terlebih dahulu RAW PLAN gamenya.
  2. Pilih jenis game yang akan Anda buat.
  3. Genre apa yang akan Anda pilih.
  4. Judul apa yang akan Anda pilih untuk memberikan gambaran keseluruhan game Anda.
  5. Siapa tokoh Utama yang akan Anda pilih dan buat.
  6. Alur atau plot cerita dari game yang akan Anda buat.
  7. Buatlah detail yang Anda ingin kan agar game Anda lebih bagus.
  8. Kumpulkan bahan-bahan yang ada perlukan.
Jika konsep sudah Anda miliki selanjutnya Anda dapat memulai untuk membuat game yang ingin Anda buat. Buat lah game yang baik dan memiliki edukasi yang bagus juga untuk mendorong daya motorik si pemain game ini. Jika game yang Anda buat sudah jadi, selanjutnya Anda akan mengembangkan game yang sudah Anda buat sebelumnya hingga gamenya benar-benar game pro yang di cari para pemain game.
Dibawah ini adalah tahapan pembuatan game komputer.

Dapat kita lihat pada tahapan pembuatan game di atas dengan beberapa tahap sampai menghasilkan game.

Aplikasi games dapat dijalankan pada berbagai platform. Beberapa platform media yang bisa dijadikan pilihan untuk advergames adalah :
1. Personal Computer
berupa aplikasi games pada PC. Games ini dijalankan pada personal computer. Pada media Personal Computer, durasi waktu penayangan adalah tidak terbatas, selama games tersebut bagus dan mampu menghibur audience/pemain, maka selama itulah tingkat kemungkinan untuk dilihat audience akan semakin tinggi. Pembuatan Games ini biasanya menggunakan Language C++ / C#, membutuhkan waktu 3-6 bulan tergantung dengan kompleksitas games tersebut.
2. Web Based Games.
Yaitu aplikasi games yang diletakkan pada server di internet dimana audience/pemain hanya perlu menggunakan akses internet dan browser untuk mengakses games tersebut. Corporate yang memiliki keinginan mengumpulkan komunitas internet dan sekaligus memperkenalkan product/brandnya kepada komunitas Internet sangat cocok memilih media games online internet ini. Pilihan ini banyak digunakan karena dapat meningkatkan traffic pada suatu website Bila games yang dibutuhkan simple maka diperlukan waktu pengembangan yang relative lebih singkat 1-2 bulan.
     3. SmartPhones/PocketPC.
Aplikasi games yang jalan pada mobile devices bersistem operasi Windows Mobile 2003/2004 ataupun windows mobile 5.0. Product yang memiliki target market status ekonomi A,B dan karakter pengusaha/ eksekutif muda sangat cocok apabila menggunakan media PocketPC/SmartPhones sebagai bagian aktivitas kegiatan advertising. Games bertemakan strategi ataupun simulasi bisnis pada umumnya lebih disukai oleh orang-orang golongan ini. Waktu pengembangan biasanya memerlukan waktu 3-6 bulan tergantung dengan kompleksitas games tersebut
4. CellPhones / Mobile Phones.
Aplikasi games untuk cell-phones atau mobile phones sebenarnya bisa dimanfaatkan untuk mendapatkan potensial pelanggan dengan golongan Status Ekonomi Responden A,B dan C. Produk yang memiliki target golongan ABG, remaja, anak kuliah, eksekutif muda sangat tepat menggunakan media ini, mengingat pada golongan inilah mereka suka sekali mencoba dan mengeksplorasi features aplikasi yang tersedia pada mobile/cellphones mereka. Mereka biasanya aktif mencari aplikasi bersifat fun atau game yang dapat mengisi waktu senggang mereka. Waktu pengembangan untuk membuat aplikasi pada devices ini relative lebih pendek yaitu 1-3 bulan tergantung dengan kompleksitas games tersebut. 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.

Pilihan bahasa pemrograman

Walaupun terdapat banyak sekali pilihan bahasa pemrograman untuk membuat game, namun padaintinya 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 perilakukarakter dan kejadian di level game, maka scriptakan perlu untuk mengeksekusi sebagai bagiandari loop game utama. Ini berarti bahwa scriptyang 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 formatteks. Interpreter melihat setiap baris, penyusunan bekerja sesuai yang maksud dari script, danmelakukan tindakan yang spesifik. Bahasa byte-terkompilasi dikonversi dari teks ke formatinternal, 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 kefungsi 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 yangdapat dengan mudah memanggil fungsi-fungsi atau menggunakan kelas main code dalam game.Biasanya, itu adalah penting bagi programmer untuk dapat mengekspos fungsi baru atau kelasyang dengan mudah ketika pembuat script memintanya.

        d. Re-Entrancy (ikut serta ulang)
Fungsi ini sering berguna untuk memanggil script menjadi diikut sertakan 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.

Memilih sebuah bahasa

     Sejumlah besar bahasa scripting tersedia, dan banyak dari mereka yang dirilis di bawah lisensi yang cocok untuk dimasukkan dalam sebuah game. Secara tradisional, sebagian besar bahasa scripting dalam game telah diciptakan oleh pengembang khusus untuk kebutuhan mereka sendiri. Dalam beberapa tahun terakhir telah ada minat dalam bahasa off-the-shelf, yang kebanyakn diterapkan pada suatu game engine.
     Beberapa mesin game komersial dilengkapi dengan dukungan bahasa scripting ini (Unreal dan Quake oleh id Software, misalnya). Hal ini memberikan solusi lengkap dalam efisiensi waktu pembuatan game, karena sebagian besar bahasa yang ada yang digunakan dalam game pada awalnya tidak dirancang untuk tujuan ini. Namun penggunaan bahasa off-the-shelf ini memiliki hubungan dengan kelebihan dan kekurangan yang perlu dievaluasi sebelum kita membuat pilihan.


Kelebihan

      Bahasa-bahasa off-the-shelf cenderung lebih lengkap dan handal daripada bahasa yang kita tulis sendiri. Dengan menggunakan cara ini, kita mendapatkan manfaat dari banyaknya waktu pengembangan, upaya debugging, dan optimasi yang telah dilakukan oleh pihak lain sebelumnya. Bila kita telah menggunakan bahasa off-the-shelf, pengembangan tidak berhenti sampai di situ. Terdapat sebuah komunitas pengembang yang mungkin akan melanjutkan pengembangan pada bahasa tersebut, memperbaiki dan menghapus bug. Banyak bahasa open source menyediakan forum web di mana masalah dapat dibicarakan, bug dapat dilaporkan, dan contoh kode dapat didownload. Dukungan yang berkelanjutan Ini dapat sangat berharga dalam memastikan sistem scripting yang kuat dan bebas bug.
Banyak game, terutama pada PC, ditulis dengan tujuan yang memungkinkan konsumen untuk mengedit perilaku mereka. Konsumen membangun objek baru, level, atau mods keseluruhan dapat memperpanjang hidup sebuah rak game. Menggunakan bahasa scripting yang umum memungkinkan pengguna untuk mempelajari bahasa yang mudah dengan menggunakan tutorial, contoh kode, dan penerjemah baris perintah yang dapat didownload dari web. Kebanyakan bahasa memiliki newsgroup atau forum web di mana pelanggan bisa mendapatkan nasihat tanpa menyebut garis bantuan penerbit.

Kekurangan
 
     Bila kita membuat game menggunakan bahasa ini, anda dapat memastikan itu tidak persis apa yang anda inginkan. Karena game peka terhadap keterbatasan memori dan kecepatan, anda dapat menaruh fitur yang anda butuhkan saja ke dalam bahasa. Seperti yang kita lihat pada re-entrancy, anda juga dapat menambahkan fitur yang khusus untuk aplikasi game dan yang biasanya tidak dimasukkan dalam bahasa umum.
        Dengan cara yang sama, bila ada sesuatu yang salah dengan bahasa tersebut, staf anda yang tahu bagaimana susunan game dan biasanya dapat menemukan bug dan menciptakan solusi yang lebih cepat.
Setiap kali anda menyertakan kode pihak ketiga ke dalam game anda, anda akan kehilangan kontrol atas hal itu. Dalam kebanyakan kasus, keuntungan lebih besar daripada kurangnya fleksibilitas, tapi hanya untuk beberapa proyek kontrol.


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. Beberapa lisensi open source mengharuskan user membebaskan produk open source yang baru dibuat. Ini jelas tidak cocok bagi game komersial.
       Open-source software, seperti namanya, juga memungkinkan akses untuk melihat dan mengubah source code. Hal ini membuat mudah untuk menarik studio dengan memberikan kebebasan untuk menarik keluar setiap kode asing atau kode yang tidak efisien. Beberapa lisensi open source, bahkan yang mengijinkan anda untuk menggunakan bahasa dalam produk komersial, mengharuskan anda membebaskan modifikasi bahasa itu sendiri. Ini mungkin akan menjadi masalah bagi proyek anda.
      Walaupun ada atau tidak sebuah bahasa scripting open source, terdapat implikasi hukum dari penggunaan bahasa tersebut dalam proyek anda. Sebelum menggunakan teknologi luar dalam produk yang ingin anda distribusikan (apakah komersial atau tidak), anda harus selalu berkonsultasi dengan pengacara properti intelektual yang baik. Buku ini tidak bisa dengan benar menyarankan anda pada implikasi hukum dari penggunaan bahasa pihak ketiga. Isi komentar berikut ini dimaksudkan sebagai indikasi dari hal-hal yang mungkin menimbulkan 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 anda membuat komitmen.


Tahapan Pengolahan Bahasa

Memulai sebagai teks dalam sebuah file teks, script biasanya  melewati empat tahap:  tokenization, parsing (penguraian), kompilasi, dan interpretasi. Keempat tahapan membentuk sebuah jalur, masing-masing memodifikasi masukan untuk mengubahnya menjadi format yang lebih mudah dimanipulasi. Tahapan tidak mungkin terjadi satu demi satu. Semua langkah bisa saling terkait, atau set tahapan bisa membentuk fase terpisah. Script mungkin berupa tokenized, diuraikan, dan dikompilasi secara offline, misalnya untuk interpretasi kemudian.

1)   Tokenizing
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. Sebuah string dalam bentuk :
1 a = 3.2;

dapat dipisah menjadi 6 token :
a -- text
<space> : -- whitespace
= -- equality operator
<space> -- whitespace
3.2 -- floating point number
; -- end of statement identifier

2)   Parsing
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.

Contoh : 1 if (a < b) return;

dapat dilakukan proses parsing seperti pada bagan di bawah ini :



3)   Compiling
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. Jadi code seperti :

1 a = 3;
2 if (a < 0) return 1;
3 else return 0;

akan dicompile menjadi :

1     load 3
2     set-value-of a
3     get-value-of a
4     compare-with-zero
5     if-greater-jump-to LABEL
6     load 1
7     return
8     LABEL:
9     load 0
10   return

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 bahasa yang sering digunakan:

1)   Lua
Lua adalah bahasa prosedural sederhana yang dibangun dari dasar ke atas sebagai bahasa embedding. Desain bahasa didorong oleh ekstensibilitas. Tidak seperti kebanyakan bahasa embedded, hal ini tidak terbatas untuk menambahkan fungsi baru atau tipe data di C atau C + +. Cara kerja bahasa Lua juga dapat men-tweak. Lua memiliki sejumlah kecil core library yang menyediakan fungsionalitas dasar. Core yang relatif tanpa sifat khusus merupakan bagian objek tersebut, bagaimanapun. Dalam game anda tidak mungkin membutuhkan library untuk memproses apa pun kecuali matematika dan logika. Core kecil ini mudah dipelajari dan sangat fleksibel.

2)   Python
Python adalah mudah dipelajari, bahasa scripting berorientasi objek dengan ekstensibilitas 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 inti dari versi 2.2 dan seterusnya (disebut Generator).
Python memiliki sejumlah besar library yang tersedia untuk itu dan memiliki komunitas yang sangat besar dari usernya. Pengguna python memiliki reputasi untuk menolong, dan newsgroup comp.lang.python merupakan sumber troubleshooting dan saran yang sangat baik.
Kelemahan utama Python adalah dalam kecepatan dan ukuran. Meskipun mengalami kemajuan signifikan dalam kecepatan eksekusi telah dibuat selama beberapa tahun terakhir, namun masih terasa lambat ketika dijalankan. Python bergantung pada lookup tabel hash (oleh string) bagi banyak operasi fundamental (fungsi panggilan, akses variabel, object-oriented programming). Hal ini menambahkan banyak biaya overhead.

Lex dan Yacc

Lex dan Yacc adalah dua tool utama yang digunakan dalam membangun tokenizers dan parser. Masing-masing memiliki implementasi yang berbeda dan kebanyakan disediakan untuk platform UNIX (namun tersedia versi untuk platform lain juga). Varian Linux yang sering digunakan contohnya adalah Flex dan Bison.
Untuk membuat tokenizer dengan Lex, kita harus menjelaskan apa yang membuat token yang berbeda dalam bahasa anda. Ini akan menghasilkan kode C yang akan mengkonversi aliran teks dari program ke dalam aliran kode token dan data token, kemudian menghasilkan output yang lebih baik dan lebih cepat daripada kita membuatnya sendiri.
Yacc digunakan untuk membangun parser. Dibutuhkan representasi dari tata bahasa kita. Tata bahasa ini kemudian diberikan dalam seperangkat aturan yang menunjukkan bagaimana struktur yang lebih besar yang terbuat dari yang sederhana atau dari token.

 

Game Panjat Tebing

1. Buat sebuah project dengan nama “Panjat Tebing” karena game ini game Panjat Tebing. tapi jika anda menginginkan nama yang lain silahkan menggunakan nama yang lain sesuai keinginan anda.


2. Setelah halaman muncul selanjutnya import karakter 3d utama yang telah anda buat tadi dengan cara di drag ke Project. Ubah Animation Type pada bagian Inspector karakter tersebut, yang semula Generic menjadi Legacy lalu Apply.


3. Sama Seperti halnya nomor 2, import object Bebatuan dan juga object Coin yang telah dibuat sebelumnya, untuk pengaturan di inspector tidak diubah pun tidak masalah.
4. selanjutnya buat Script js baru dengan nama clone.js lalu masukan script dibawah.

#pragma strict
public var tebing : Rigidbody;
public var barrelEnd : Transform;
function OnTriggerEnter (col : Collider) {
if(col.tag ==&quot;Player&quot;){
var rocketInstance : Rigidbody;
rocketInstance = Instantiate(tebing, barrelEnd.position, barrelEnd.rotation);
rocketInstance.AddForce(barrelEnd.forward * 0);
}
}
*Script diatas nantinya digunakan untuk mengclone tebing, jadi seolah olah karakter yang bergerak naik, padahal background tebing yang bergerak turun.
5. Buat kembali script baru dengan nama maju.js lalu masukan kode berikut.

var speed : float = 5.0;
function Update () {
transform.Translate(Vector3(0,0,speed) * Time.deltaTime);
}
*Script ini fungsinya agar object bergerak dari atas kebawah atau sebaliknya, bisa juga dari depan ke belakang atau kiri ke kanan. tergantung posisi sumbu yang diatur.
6. Buatlah sebuah plane, ukuran bisa disesuaikan, lalu beri texture seperti bebatuan, lalu beri nama tebing dan Add Component Rigidbody, Script clone.js dan maju.js yang tadi sudah dibuat. atur pengaturan seperti gambar dibawah.


7. pada gambar di atas terlihat pada script clone ada Tebing dan juga end. untuk Tebing silahkan drag ke project agar menjadi sebuah prefab. setelah di drag maka masukan prefab tebing tadi kedalam pengaturan inspector objek Tebing yang sudah ada pada menu hierarchy. dan untuk end buatlah object kosong dan beri namaend. posisinya harus berada diatas karakter utama. fungsi object end ini adalah output dari object tebing itu sendiri. jadi seolah olah karakter sedang naik ke atas. padahal tebing yang bergerak seolah olah tidak ada habisnya. padalah diclone secara berulang ulang.
8. Buatlah Script baru dengan nama destroy.js masukan kodenya.

function OnTriggerEnter(col : Collider){
if(col.gameObject.tag == &quot;Tebing&quot;)
Destroy(col.gameObject);
if(col.gameObject.tag == &quot;point&quot;)
Destroy(col.gameObject);
if(col.gameObject.tag == &quot;batu&quot;)
Destroy(col.gameObject);
}
*kegunaan script diatas untuk menghilangkan object tebing, point dan juga batu ketiga bersentuhan dengan objek yang sudah diberi tersebut.
PENTING jangan lupa untuk menguubah tag pada masing – masing objek sesuai secript diatas. untuk tebing menjadi tebing, untuk coin menjadi point, untuk batu menjadi Batu.
8. buatlah object cube lalu simpan posisinya dibawah player lebih jauh. lebar sesuai ruang jatuhnya tebing, point dan bebatuan tadi. kegunaannya unuk menghilangkan/menghapus objek tersebut saat keluar dari pantauan camera. jika tidak dihilangkan atau dihapus maka Lag berat dan Crash.
9. buatlah script js dengan nama muncul.js kemudian masukan kode berikut.

 var projectile : Rigidbody;
 var end : Transform;
 function OnTriggerEnter (col : Collider) {
 if(col.tag ==&quot;Player&quot;){
 /// untuk clone objek batu dan juga point
var clone : Rigidbody; clone = Instantiate(projectile, end.position, end.rotation);
clone.velocity = transform.TransformDirection (Vector3.back * 10); } }
 
*Script diatas berguna untuk clone objek. yang nati akan digunakan untuk clone objek batu dan juga point.
10. buatlah 40 buah sphere dengan nama bebas dengan ukuran tinggi sama seperti karakter. dan lebar 2 kali lebih besar dari karakter. jangan lupa centang trigger pada inspector. 20 puluh sejajar dengan karakter untuk 20 lagi jauh diatas karakter. untuk posisi saling berjajar diberi sedikit jarak dari satu ke yang lainya. kegunaannya ketika anda masuk kewilayah antara 20 objek yang sejajar dengan karakter  tersebut maka batu dan point akan diclone oleh objek tersebut. output dari klone tersebut yaitu berada di 20 objek atas. selanjutnya masukan 2 script muncul.js kedalam 20 objek yang sejajar dengan karakter. Untuk pengaturan pada di inspector yaitu.
  • Projectile: nama batu dan juga nama point.
  • End: nama salah satu objek dibagian atas yang sejajar dengan objek tersebut. gambarnya seperti ini.
11. buatlah sebuah script js baru dengan nama tombol.js dan masukan kode berikut.

var speed : float = 5.0;
 
function Update () {
if(Input.GetKey(KeyCode.D))
transform.Translate(Vector3(speed,0,0) * Time.deltaTime);
if(Input.GetKey(KeyCode.A))
transform.Translate(Vector3(-speed,0,0) * Time.deltaTime);
}
 
*Script diatas berguna untuk menggerakan karakter.
12. masukan karakter utama dengan posisi sesuai dengan gambar di atas tadi. lalu Add component tombol.js, centang is trigger. lalu sesuaikan pengaturan dengan gambar dibawah.


Selesai Selanjutnya coba play.





#Sumber Referensi