Game Engine

Arsitektur Game Engine

Image result for ARSITEKTUR 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.
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 Open Source :
3Dgame Studio
Delta 3D
UnrealEngine
Panda3D
Torque
Quake Engine
Ada 3 tipe game engine yang ada saat ini, diantaranya :
1. Roll-your-own game engine
 
        Banyak perusahaan game kecil seperti publisher indie biasanya menggunakan engine-nya sendiri. Mereka menggunakan API seperti XNA, DirectX atau OpenGL untuk membuat game engine mereka sendiri. Di sisi lain, mereka kadang menggunakan library komersil atau yang open source. Terkadang mereka juga membuat semuanya mulai dari nol. Biasanya game engine tipe ini lebih disukai karena selain kemungkinan besar diberikan secara 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. Tower Games Studio membutuhkan satu tahun penuh untuk menyempurnakan game engine-nya, hanya untuk ditulis ulang semuanya dalam beberapa hari sebelum penggunaannya karena adanya bug kecil yang sangat mengganggu.
2. Mostly-ready game engines
        Engine ini biasanya sudah menyediakan semuanya begitu diberikan pada developer/programer. Semuanya termasuk contoh GUI, physiscs, libraries model, texture dan lain-lain. Banyak dari mereka yang sudah benar-benar matang, sehingga dapat langsung digunakan untuk scripting sejak hari pertama. Game engine semacam ini memiliki beberapa batasan, terutama jika dibandingkan dengan game engine sebelumnya yang benar-benar terbuka lebar. Hal ini ditujukan agar tidak terjadi banyak error yang mungkin terjadi setelah sebuah game yang menggunakan engine ini dirilis dan masih memungkinkan game engine-nya tersebut untuk mengoptimalkan kinerja game-nya. Contoh tipe game engine seperti ini adalah Unreal Engine, Source Engine, id Tech Engine dan sebagainya yang sudah sangat optimal dibandingkan jika harus membuat dari awal. Dengan hal ini dapat menyingkat menghemat waktu dan biaya dari para developer game.
3. Point-and-click engines
        Engine ini merupakan engine yang sangat dibatasi, tapi dibuat dengan sangat user friendly. Anda bahkan bisa mulai membuat game 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 tidak berguna, bagi developer cerdas dan memiliki kreativitas tinggi, game engine seperti ini bisa dirubah menjadi sebuah game menyenangkan, seperti Flow. Game engine ini memang ditujukan bagi developer yang ingin menyingkat waktu pemrogramman dan merilis game-game mereka secepatnya.

Interaksi Fisik Dalam Game

Interaksi fisik ialah salah satu bentuk interaksi yang terjadi jika ada dua orang atau lebih melakukan kontak dengan menggunakan bahasa-bahasa tubuh. Contoh interaksi ini : posisi tubuh, ekspresi wajah, gerak-gerik tubuh dan kontak mata.
Dalam lingkungan game, interaksi fisik dapat dimaksud dengan menyerap pengertian diatas, yaitu menjadi interaksi fisik ialah salah satu bentuk interaksi yang terjadi jika ada dua objek atau lebih melakukan kontak. Kontak yang terjadi antara objek – objek tersebut umumnya adalah collision atau tabrakan.

Collision Detection

Collision Detection dibutuhkan untuk memastikan tidak ada objek yang saling menembus.
Pada dasarnya, objek baik 2 dimensi maupun 3 dimensi pada Teknologi Game dan digital, secara umumnya objek – objek tersebut bukanlah objek yang memiliki kemampuan fisik, atau secara lain objek tersebut hanyalah susunan dari titik, garis, dan penampang yang terhubung satu sama lain, dan bisa dianggap bahwa objek tersebut hanyalah sebatas bentuk, tanpa memiliki kemampuan.

Spatial Partitioning

Algoritma alternatif di kelompokkan dibawah spatial partitioning, termasuk octress, binary space partitioning ( BSP Trees ), dan yang lainnya yang memiliki pendekatan yang serupa. Hal ini digunakan dengan membagikan sebuah wilayah menjadi beberapa bagian, dan jika dua objek tidak terdapat pada bagian yang sama, maka objek – objek tersebut tidak perlu dicek apakah akan berpotongan. BSP Trees bisa memperhitungkan terlebih dahulu, yang mana pendekatan tersebut sangat cocok untuk didefinisikan di dalam objek berbentuk tembok, dan objek halangan yang tetap dalam sebuah game. Algoritma tersebut secara umum lebih dulu diketahu daripada algoritma yang telah dijabarkan sebelumnya.

Bounding Boxes

Image result for bounding box in image processing

Bounding boxes ( atau Bounding volumes ) seringnya digunakan untuk objek yang berbentuk persegi atau kubus, tetapi objek dengan bentuk lainnya dapat menggunakannya. Bounding diamond, minimum bounding parallelogram, convex hull, bounding circle, atau bounding ball, dan bounding ellipse sudah diujicoba, tetapi bounding boxes tetap menjadi algoritma yang popular karena simpel.

User Interface Pada Game Komputer

User interface berarti tampilan antar muka pengguna. Jika didefinisikan secara sederhana User interface adalah penghubung atau mediator antar komputer dan manusia atau user komputer itu agar hubungan antara perangkat komputer dengan user bisa terjalin. User interface sangat berperan penting dalam dunia komputer karena dengan adanya user interface maka kemudahan user dalam mengoprasikan suatu perangkat komputer menjadi lebih mudah.

Desain user interface dalam game berbeda dari desain user interface lainnya karena melibatkan unsur tambahan fiksi. Fiksi melibatkan avatardari pengguna yang sebenarnya atau player. Sebuah desain interface pada suatu game mempengaruhi kenyamanan dan sejauh mana user atau pemain meminati game tersebut.  Dalam user interface game, terdapat sebuah teori yang dikemukakkan oleh Erik Fagerholt dan Magnus Loretzon dari Chalmers University of Technology. Dalam tesisnya mereka menulis tesis tentang desain user interface berjudul Beyond the HUD – User Interfaces for Increased Player Immersion in FPS Games. Mereka memperkenalkan istilah berbagai jenis interface yang berkaitan dengan desain video game.

HUD itu sendiri kepanjangan dari Heads – up display, merupakan metode dimana informasi secara visul disampaikan kepada pemain sebagai bagian dari antarmukan pengguna permainan. Biasanya menunjukkan bar/kotak HP(Health Point) ataupun MP(Mana Point) dan biasanya muncul  di atas kepala karakter. Fungsi HUD ini untuk memudahkan pemain mengetahui kondisi karakter dalam permainan.

Dalam desain antarmuka game terdapat beberapa elemen yang diantaranya adalah :

  1. Diegetic
  2. Meta
  3. Spatial
  4. Non Diagetic
Referensi :