Minggu, 25 Maret 2012

Game Engine



Game engine adalah perangkat lunak yang dirancang untuk membuat dan mengembangkan video game. Fungsi utama yang diberikan oleh game engine meliputi rendering untuk 2D atau 3D graphic, collision detection, sound, scripting, animasi, artificial intelligence, networking, memory management, threading dan scene graph. Game engines memberikan perangkat untuk visual development dengan tambahan komponen perangkat lunak yang dapat dipakai berulang kali. Perangkat ini pada umumnya memberikan integrated development environment yang dapat mempermudah, serta mempercepat pengembangan game.
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 :


1.       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.
2.       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.
3.       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.
4.       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.
5.       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.
6.       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.
7.       The Game
Merupakan inti dari penggunaan game engine sendiri, sehingga terserah kita bagaimana mengembangkan game tersebut.

Tujuan Game Engine

Game engine menyediakan seperangkat alat pengembangan visual di samping komponen software digunakan kembali. Alat-alat ini umumnya diberikan dalam suatu lingkungan pengembangan terpadu untuk mengaktifkan disederhanakan, perkembangan pesat dari permainan dengan cara data-driven. mesin pengembang Game upaya untuk "pra-menciptakan roda" dengan mengembangkan suite perangkat lunak kuat yang mencakup banyak unsur pengembang game mungkin perlu untuk membangun sebuah permainan. Kebanyakan mesin permainan suite menyediakan fasilitas yang memudahkan pengembangan, seperti grafik, suara, fisika dan fungsi AI. Permainan mesin ini kadang-kadang disebut "middleware" karena, seperti dengan istilah naluri bisnis, mereka menyediakan sebuah platform perangkat lunak yang fleksibel dan dapat digunakan kembali yang menyediakan semua fungsionalitas inti yang dibutuhkan, langsung dari kotak, untuk mengembangkan sebuah aplikasi permainan sambil mengurangi biaya , kompleksitas, dan faktor waktu-ke-pasar-semua penting dalam industri video game yang sangat kompetitif  Gamebryo dan RenderWare. adalah seperti program middleware digunakan secara luas. Seperti solusi middleware lainnya, mesin permainan biasanya menyediakan abstraksi platform, yang memungkinkan permainan yang sama untuk dijalankan pada berbagai platform termasuk game konsol dan komputer pribadi dengan sedikit, jika ada, perubahan yang dibuat ke kode sumber permainan. Seringkali, mesin permainan dirancang dengan arsitektur berbasis komponen yang memungkinkan sistem tertentu dalam mesin yang akan diganti atau diperpanjang dengan lebih khusus (dan sering kali lebih mahal) komponen middleware game seperti Havok untuk fisika, Miles Sound System untuk suara, atau Bink untuk Video. Beberapa mesin permainan seperti RenderWare bahkan dirancang sebagai rangkaian dihubungkan secara longgar komponen middleware permainan yang bisa selektif dikombinasikan untuk membuat mesin khusus, bukan pendekatan yang lebih umum dari memperluas atau menyesuaikan solusi terintegrasi yang fleksibel. Namun diperpanjang tercapai, hal itu tetap menjadi prioritas tinggi dalam mesin game karena berbagai kegunaan yang mereka diterapkan. Meskipun kekhususan nama, mesin permainan yang sering digunakan untuk jenis lain aplikasi interaktif dengan persyaratan grafis real-time seperti demo pemasaran, visualisasi arsitektur, simulasi pelatihan, dan lingkungan pemodelan.Beberapa mesin permainan hanya menyediakan 3D real-time rendering kemampuan bukan berbagai fungsi yang dibutuhkan oleh game. Mesin ini mengandalkan pengembang game untuk melaksanakan seluruh fungsi ini atau merakit dari komponen middleware permainan lainnya. Jenis mesin umumnya disebut sebagai "mesin grafis," "mesin render," atau "mesin 3D" bukan meliputi lebih istilah "mesin permainan." Terminologi ini tidak konsisten banyak digunakan sebagai fitur lengkap mesin permainan 3D disebut hanya sebagai "mesin 3D." Beberapa contoh mesin grafis adalah: RealmForge, Truevision3D, OGRE, Crystal Space, Genesis3D, Visi Engine, Irrlicht dan JMonkey Engine.Modern permainan atau mesin grafis umumnya memberikan grafik adegan, yang merupakan representasi berorientasi objek dari dunia permainan 3D yang sering menyederhanakan desain game dan dapat digunakan untuk rendering yang lebih efisien dari dunia maya yang luas.

Abstraksi Hardware Game Engine

Paling sering, mesin 3D atau sistem rendering di mesin permainan yang dibangun di atas sebuah API grafis seperti Direct3D atau OpenGL yang menyediakan abstraksi perangkat lunak dari kartu GPU atau video. Perpustakaan tingkat rendah seperti DirectX, SDL, dan OpenAL juga sering digunakan dalam permainan karena mereka menyediakan akses perangkat keras-independen untuk perangkat keras komputer lain seperti perangkat input (mouse, keyboard, dan joystick), kartu jaringan, dan kartu suara. Sebelum grafis 3D hardware-accelerated, renderers perangkat lunak telah digunakan. Software rendering masih digunakan di beberapa alat pemodelan atau untuk gambar yang masih diberikan bila akurasi visual dinilai atas kinerja real-time (frame-per-detik) atau ketika perangkat keras komputer tidak memenuhi persyaratan seperti dukungan shader.Dengan munculnya akselerasi perangkat keras pengolahan fisika, fisika berbagai API seperti PAL dan ekstensi fisika dari Collada (format pertukaran untuk 3D aktiva) menjadi tersedia untuk menyediakan abstraksi perangkat lunak dari unit pengolahan fisika dari penyedia middleware yang berbeda dan konsol platform.

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.

1.     Game Development Tools
Game development tools adalah software yang mempunyai spesialisasi yang membantu atau memfasilitasi pembuatan computer atau video game. Beberapa tugas dapat ditangani oleh game development tools termasuk konversi beberapa kelengkapan dari video game seperti 3D model dan texture ke dalam format yang diperlukan oleh game, level editing serta script compilation.
Pada saat pengembangannya. Game development seringkali menemui kendala. Hal berikut ini adalah beberapa alasan kenapa game development tools dibilang gagal :

a.       Game development yang di design seiring waktu berjalan
Seringkali dalam merancang sebuah game tools. Perusahaan game terlalu terburu-buru dalam melakukan design awal dari game tools tersebut. Karena dituntut untuk selalu memberikan progress, biasanya para programmer merancang game tools tersebut seiring dengan coding yang telah dibuat.
Saat game tools menjadi makin komplek dan perlu di tinjau ulang, seringkali programmer kesulitan untuk merubah code yang mereka tulis diawal sehingga seringkali muncul opini untuk menulis ulang semua code daripada memperbaiki atau menambah fitur yg ada.

b.      System model dari design game development game tersebut
Saat programmer mendesign sebuah tampilan atau interface, seringkali mereka berusaha untuk memperlihatkan struktur data secara langsung. Hal ini mungkin akan berguna untuk orang yang mengerti cara kerja system, tetapi untuk end user, biasanya mereka tidak memperdulikan detail dari implementasi system, yang diperlukan hanyalah hasil akhir.

c.       Menerapkan teknologi yang salah untuk menekan biaya
Pada pengembangan game tools, seringkali pengembang berusaha menerapkan system yang sudah ada untuk mempersingkat biaya. Akan tetapi, pada kasus tertentu lebih baik kita membangun game tools tersebut dari awal sehingga dapat menghemat biaya serta waktu.

d.      Interface yang terlalu kompleks
Penerapan “The simple, The better” harus selalu dicamkan oleh setiap game tools designer. Semakin kompleks interface, semakin susah game tools tersebut digunakan oleh end user. Operasi yang paling umum dipakai harus selalu didesign untuk mudah dipakai dan paling gampang untuk diakses oleh end user. Sedangkan aplikasi yang jarang digunakan dapat disembunyikan di dalam menu bar.

e.      Terlalu banyak fitur-fitur tambahan
Seringkali pengembang membuang waku untuk mengembangkan fitur-fitur tambahan yang kurang berguna bagi user, daripada membuang waktu dan tenaga untuk fitur tambahan lebih baik pengembang lebih memfokuskan pada fungsionalitas fungsionalitas utama yang harus ada pada game tools.

f.        Merancang untuk user yang sudah advance
Game development tools seharusnya ditujukan untuk user bertipe intermediate. Dimana semua fungsionalitas utama harusnya lebih ditonjolkan dan beberapa fungsionalitas tambahan dapat ditemukan jika diperlukan.


Beberapa contoh game development tools :
a.       RAD Game tools
b.      Java Game Development Tools
c.       Garage games game development tools

sumber :
- http://bulletin-it.blogspot.com/2012/03/pengenalan-game-engine.html
- http://gameprograming.blog.ittelkom.ac.id

Tidak ada komentar:

Posting Komentar