Rabu, 12 Juni 2013

Game Engine

Definisi Game Engine
Apa itu 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.
  1. 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.
  1. 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.
  1. 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.
  1. 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.
  1. 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.
  1. The Game
Merupakan inti dari penggunaan game engine sendiri, sehingga terserah kita bagaimana mengembangkan game tersebut.
Saat sekarang ini sudah sangat banyak game engine yang hadir, dan sangat maju. Para pembuat game engine kini berlomba-lomba untuk menciptakan game engine dengan tampilan yang menarik agar menciptakan suasana permainan yang nyaman atau enak untuk dilihat dan dimainkan dalam PC ataupun Console. Dengan tampilan atau graphic yang menarik yang kini semakin mendekati realitas dalam segi fisik para tokoh serta gameplay-nya, akan membuat para gamers semakin antusias untuk memainkan game tersebut.
Konsep dari game engine sebenernya cukup gampang, yaitu bahan dasar yang diperlukan sebuah game untuk menjalankan tugasnya, merender pixel demi pixel, menghitung physiscs, memperkirakan input tombol, dan lain hal, yang memungkinkan developer kreatif dapat membuat sebuah game dengan engine yang sama menjadi unik satu sama lain. Di analogikan sebagai sebuah mobil, game engine sudah merupakan bagian mobil, sekitar 50% jadi. Mesin dan rangkaian sistem pengapian, sampai pembuangan. Kurang body dan aksesoris.
Sebuah game engine memungkinkan penggunaan kembali komponen komponen yang dapat mempercepat hadirnya game menjadi nyata di layar monitor mu. Beberapa diantara nya yang termasuk dengan itu adalah deteksi tubrukan, tampilan grafis, setting dalam game, artificial intelligence dan lain lain. Semua komponen tadi disatukan dalam satu pake game engine. Artist dan Developer, dapat menambahkan pustaka texture dan model sendiri untuk dijadikan tokoh utama atau setting dunia dalam sebuah engine. Sekali lagi dalam analogi game, model dan texture dalam game engine bisa dibilang sebagai body dan aksesoris mobil.
Sebuah game engine dibagi lagi menjadi dua bagian besar. Yaitu API dan SDK. API ( Applicaiton Programming Interfaces ) adalah bagian operating system, services dan libraries yang diperlukan untuk memanfaatkan beberapa feature yang diperlukan. Dalam hal ini contohnya DirectX. Sementara SDK adalah kumpulan dari libraries dan API yang sudah siap digunakan untuk memodifikasi program yang menggunakan operating system dan services yang sama. Biasanya, game engine menyertakan keduanya.
Contohnya dalam Unreal Engine, menyiapkan antarmuka baku bagi programmer untuk menciptakan game nya dengan mudah, melalui scripting engine, yang disebut UnrealScript, dan juga libraries, yang berisi model standar dan texture standar dan juga world editor yang disebut sebagai UnrealED.
Jenis-jenis Game Engine
Roll-your-own game engine.
Banyak perusahaan game kecil seperti publisher indie biasanya menggunakan engine nya sendiri. Ini berarti mereka menggunakan API seperti XNA, DirectX atau OpenGL untuk membuat game engine mereka sendiri. Disisi lain, mereka kadang menggunakan libraries komersil atau malah open source. Terkadang mereka malah membuat semuanya dari nol.
Biasanya, game engine tipe ini lebih disukai karena selain kemungkinan besar tersedia gratis, juga memperbolehkan mereka, para developer, lebih fleksibel dalam mengintegrasikan komponen yang diinginkan untuk dibentuk sebagai game engine mereka sendiri. Kelemahannya, banyak engine yang dibuat dengan cara semacam ini malah menyerang balik developernya. Menara Games Studio membutuhkan satu tahun penuh untuk menyempurnakan game engine nya, hanya untuk di tulis ulang semuanya dalam beberapa hari penggunaan karena adanya bug kecil yang sangat mengganggu.
Mostly-ready game engines.
Engine engine ini biasanya sudah menyediakan semuanya begitu diberikan pada developer / programmer. Semuanya termasuk contoh GUI, physiscs, libraries model dan texture, dan segalanya. Banyak dari mereka yang sudah benar benar matang, sehingga dapat langsung digunakan untuk scripting sejak hari pertama.
Biasanya game engine semacam ini memiliki batasan batasan, terutama jika dibandingkan dengan game engine sebelumnya yang benar benar terbuka lebar. Hal ini ditujukan agar tidak terjadi terlalu banyak error yang mungkin terjadi setelah sebuah game yang menggunakan engine ini dirilis, dan masih memungkinkan game engine nya itu sendiri untuk mengoptimalkan kinerja game nya. Banyak dari game engine seperti ini, Unreal Engine, Source Engine, id Tech Engine dan sebagainya, yang sudah sangat optimal dibandingkan jika harus membuat dari awal. Hal ini dengan serta merta menyingkat sangat banyak waktu dan jelas, biaya dari para Developer game.
Point-and-click engines.
Engine untuk point-and-click merupakan engine yang sangat amat dibatasi, tapi dibuat sangat user friendly. Kamu bahkan bisa mulai membuat game mu sendiri menggunakan engine seperti GameMaker, Torque Game Builder dan Unity3D. Dengan sedikit memanfaatkan coding, kamu sudah bisa merilis game point-and-click yang kamu banget.
Kekurangannya terletak pada terbatasnya jenis interaksi yang bisa dilakukan, dan biasanya hal ini mencakup semuanya, mulai dari grafis, hingga tata suara. Tapi bukan berarti game engine jenis ini nggak berguna, bagi developer cerdas dan berdaya kreativitas tinggi, game engine bapuk seperti ini bisa dirubah menjadi sebuah game menyenangkan, seperti Flow. Game engine seperti ini memang ditujukan bagi developer yang ingin menyingkat waktu pemrogramman, dan secepatnya merilis game game mereka.

Adapun contoh dari game engine:
  1. 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.
  1. 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.
  1. 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.

sumber :

Konsep Game Design

Apa sih konsep game design itu? mungkin dari sebagian orang ada yang belum mengetahui apa itu yang dimaksud dengan konsep game design. Langsung saja saya akan menjelaskan apa yang dimaksud dengan konsep game design adalah suatu konsep awal untuk pembuatan game dan itulah tugas dari seorang game designer yaitu untuk mengolah dari ide awal sampai jadi satu konsep game yang menyenangkan untuk dimainkan. Sedangkan Game Designer adalah bagian atau posisi dari beberapa elemen dalam pembuatan game, adapun peranan dari game designer adalah merancang konsep alur cerita, karakter dan segala aspek yang berhubungan dengan game yang akan dikembangkan. Alur cerita dibuat dengan kreatif sehingga game menjadi hidup (seolah-olah ada dikehidupan nyata). Diperlukan imaginasi sang game designer untuk merancang alur yang bukan hanya bagus namun juga menarik.
Game designer memiliki peranan yang vital dalam pembuatan game. Mirip seperti arsitek yang merancang gedung sebelum dibangun. Seorang game designer harus merancang konsep gamenya dulu sebelum mulai dibuat.

Untuk gambaran singkat tentang peranan yang dijalankan oleh game designer, saya ambil contoh ide game petualangan tadi. Dari ide tersebut, seorang game designer harus meracik elemen-elemen yang fun untuk dimainkan, misalnya:
Tujuan apa yang harus dicapai oleh pemain?
Halangan apa yang akan ada dalam game itu?
Hadiah apa yang diperoleh oleh pemain dalam game itu
Elemen estetika apa yang cocok untuk ide game ini?
Proses meracik dan mencari jawaban untuk nilai fun dari elemen-elemen itulah yang jadi tugas seorang game designer dalam proses pembuatan game.
Apa saja sih yang perlu diolah dari ide awal tadi?
Secara garis besar, ada beberapa elemen yang perlu diolah dari ide awal sampai jadi game, seperti:
Mekanik. Elemen ini bisa dikatakan sebagai aturan-aturan yang ada di dalam game. Agar lebih jelas, saya ambil contoh elemen-elemen mekanik dari game Pac-Man:
Kondisi awal permainan (Start Game); Karakter Pac-Man (memiliki sejumlah nyawa) yang akan dimainkan dalam suatu maze. Ada empat musuh (hantu) yang berada dalam sangkar di tengah maze. Di dalam maze itu juga ada sejumlah objek (dots) yang harus dikumpulkan oleh pemain.
Kondisi akhir permainan (Game Over); Ada dua tipe game over, yaitu:
Menang: ketika pemain berhasil mengumpulkan semua dots di dalam maze, sebelum nyawa si Pac-Man habis.
Kalah: ketika nyawa si Pac-Man habis sebelum pemain berhasi mengumpulkan semua dots di dalam maze.
Aturan untuk aksi yang ada di dalam game:
Pemain bisa menggerakkan si Pac-Man ke atas, bawah, kiri dan kanan untuk mengumpulkan dots di dalam maze.
Pemain harus menghindari sergapan hantu yang berusaha menangkap si Pac-Man.
Kalau hantu berhasil menangkap si Pac-Man, maka nyawanya berkurang satu.
Ada kondisi spesial dimana si Pac-Man bisa memakan hantu yang mengejarnya. Untuk itu, pemain harus mendapatkan power dots yang tersebar di dalam maze.
Tadi adalah beberapa contoh elemen mekanik yang umumnya ada di dalam game. Tugas game designerlah untuk merancang aturan/mekanik tadi berdasarkan ide awal yang diperoleh.
Dinamik. Ini adalah elemen yang muncul ketika aturan/mekanik tadi dilakukan oleh pemain saat bermain. Game designer perlu memperhatikan aspek fun dari elemen ini, misalnya dalam contoh game Pac-Man tadi:
Kalau hantu memiliki kecepatan X, apa yang terjadi? Apakah pemain jadi kesulitan untuk menghindari hantu sambil mengumpulkan dots? Atau pemain jadi terlalu mudah untuk memenangkan permainan?
Apa yang terjadi kalau pemain berusaha mengumpulkan semua power dots terlebih dulu? Perlu berapa power dots yang disediakan agar game ini tetap fun untuk dimainkan?
Goal/Objektif. Ini adalah target yang harus dicapai oleh pemain dalam game. Misalnya dalam contoh game Pac-Man tadi, target untuk pemain adalah mengumpulkan semua dots yang ada di dalam maze sebelum nyawa si Pac-Man habis.
Seorang game designer perlu memperhatikan apakah objektif dalam game ini cocok dengan ide awal yang diperoleh. Selain itu perlu dipertimbangkan juga apakah objektif tersebut sudah cukup fun dan menantang untuk dimainkan.
Avatar. Elemen ini adalah representasi dari objek yang dimainkan oleh pemain. Dalam contoh game Pac-Man tadi, avatar yang dimainkan adalah si Pac-Man. Untuk menentukan avatar ini, game designer perlu mempertimbangkan pilihan yang cocok dan fun dari ide awal yang diperoleh.
Tema. Ini adalah elemen yang membungkus mekanik tadi jadi satu paket game yang fun untuk dimainkan. Misalnya seperti game Mario Bros, yang merupakan game dengan tema petualangan seorang tukang ledeng di dunia fantasi. Atau game Temple Run yang juga game petualangan dengan karakter seorang petualang ala Indiana Jones.
Menurut kamu, game Pac-Man yang kita bahas tadi memiliki tema apa?


Mewujudkan ide ke dalam bentuk visual
Siapa yang mewujudkan ide dan elemen-elemen estetika tadi hingga bisa kamu lihat di dalam game?
Game artist.
Game artist berperan dalam pembuatan aset-aset grafis yang digunakan untuk mewujudkan ke dalam bentuk visual.
Aset grafis seperti apa sih yang perlu dibuat oleh game artist? Sebagai gambaran saya ambil contoh dari ide game petualangan ala Indiana Jones tadi, elemen visual yang dibutuhkan misalnya:
Karakter yang dimainkan oleh pemain. Animasi karakter tersebut saat dimainkan.
Musuh yang harus dihadapi pemain.
Dunia tempat si karakter itu berinteraksi.
Efek visual dalam game.
Tadi barulah contoh kecil dari elemen-elemen visual yang perlu dibuat oleh game artist. Masih banyak lagi elemen-elemen visual yang ada dalam game. Karena itu biasanya dalam pembuatan game posisi game artist ini terbagi jadi beberapa disiplin, seperti:
Concept artist.
2D artist.
3D artist.
Animator.
Ada 2 cara yang dapat digunakan dalam membuat game, yaitu :
1. Dengan membuat sendiri program yang akan digunakan untuk membuat game ( umumnya professional game developer yang menggunakan cara ini).
2. Dengan menggunakan program jadi yang tinggal kita gunakan.
Untuk membuat program sendiri tidak akan kita bahas disini karena tujuan penulisan ini adalah untuk amateur game developer , tapi sekedar pengetahuan saja, untuk membuat program sendiri kita harus memahami bahasa pemrograman , dan untuk membuat program sendiri, kita dapat menggunakan “Visual Basic”, “C++”,dll.

sumber :

Jumat, 03 Mei 2013

RENDERING FARM

Pada kesempatan kali ini saya akan membahas mengenai Rendering Farm atau biasa disebut juga dengan Render Farm. Mungkin sebagian kalangan umum ada yang belum mengetahui sih itu Rendering Farm? pertama-tama saya akan menjelaskan apa itu Rendering. 

Rendering adalah suatu proses untuk mengubah model geometri menjadi suatu gambar. Untuk melakukan proses render biasanya membutuhkan waktu yang lama, terutama untuk rendering gambar yang photo-realistic. Untuk mengatasi masalah tersebut pemanfaatan sumber daya grid sebagai suatu rendering farm dapat dijadikan sebagai salah satu alternatif pilihan. nah itu adalah sebagai pengenalan utnuk kalian agar mengetahui apa itu Rendering.

Rendering Farm adalah sekumpulan dari komputer yang bekerja secara bersama sama untuk melakukan proses render.


Untuk membangun suatu rendering farm maka dibutuhkan suatu software pembantu yang dapat difungsikan sebagai tools untuk melakukan proses parallel rendering. Yadra adalah salah satu tools yang dapat digunakan untuk membangun sebuah rendering farm. Yadra akan sangat efektif bila digunakan untuk merender suatu animasi, sebab yadra bekerja dengan cara memecah dan mendistribusikan frame dari le animasi kepada setiap komputer. Proses memecah frame dilakukan secara manual oleh user dengan cara melakukan ssh pada tiap komputer client. Dalam tugas akhir ini yadra akan diimplementasikan pada sistem grid yang telah ada di Jurusan Teknik Elektro, selain itu program bantuan juga akan dibuat untuk mempermudah user dalam menggunakan yadra.


Rendering sendiri adalah salah satu topik utama dalam dunia 3D Grafik Komputer. Rendering tidak hanya digunakan pada game programming. Rendering juga sering digunakan untuk desain arsitektur, simulator, movie atau juga spesial efek pada tanyangan televisi yang ada. Setiap bidang tadi mempunyai perbedaan keseimbangan dalam proses pembuatan Remndering Farm itu sendiri, seperti pada fitur dan teknik dalam rendering. Dalam bidang 3D Graphics sendiri rendering harus dilakukan secara cermat dan teliti. Maka dari itu terkadang dilakukan pre rendering sebelum rendering dilaksanakan. Per rendering sendiri adalah proses pengkomputeran secara intensif ,yang biasanya digunakan untuk pembuatan film, menggunakan grafik card dan 3D hardware accelerator untuk penggunaan real time rendering.
Rendering merupakan sebuah proses untuk menghasilkan sebuah citra 2D dari data 3D. Prose ini bertujuan untuk untuk memberikan visualisasi pada user mengenai data 3D tersebut melalui monitor atau pencetak yang hanya dapat menampilkan data 2D.

Pada dasarnya proses render farm adalah membagi tugas rendering ke komputer-komputer lain yang terhubung dalam satu jaringan. Pembagian tugas untuk masing-masing komputer tersebut dapat dibagi menjadi tiga kelompok, yaitu :
  • Render manager : komputer yang digunakan untuk membagi tugas rendering.
  • NAS : network storage yang digunakan untuk menyimpan hasil render
  • Render slave : komputer yang hanya digunakan untuk render.
Dengan demikian itu adalah sedikit pengertian dan pengenalan tentang apa itu Rendering Farm. Semoga apa yang saya sampaikan ini bisa bermanfaat bagi kalian para pembaca :)





Referensi :
http://nurmanto.com/pengertian-rendering-dan-fungsinya/
http://digilib.its.ac.id/ITS-Undergraduate-3100009034972/5673
https://en.wikipedia.org/wiki/Render_farm
http://herypurwanto.com/2013/05/