Selasa, 19 Maret 2019

Teknologi dan AI pada Game

     Teknologi semakin hari makin terlihat jelas perkembangannya, begitu juga dengan teknologi game yang di gunakan. Jika kita melihat masa lalu kita dapat menemukan sebuah konsol (perangkat) game terbuat dari komputer yang super besar bentuk fisik nya namun, memiliki kualitas gambar yang tidak sesuai dengan bentuk fisik komputer tersebut. Namun zaman ini banyak konsol game berukuran kecil namun memiliki kualitas yang bagus bahkan mendekati real. Berikut ini teknologi konsol game dari masa ke masa :

Generasi Pertama

      Pertama kali diciptakan oleh A.S. Douglas pada tahun 1952 di University of Cambridge yaitu TicTacToe yang diprogram pada komputer EDSAC dengan teknologi komputer Vaccum Tube. Setelah kemunculan game TicTacToe berbagai jenis game bermunculan seperti : Pada tahun 1961, Steve Russel membuat game bernama Spacewar dengan komputer mainframe MIT PDP-1 yang biasa digunakan untuk perhitungan statistik. 
      
      Lalu, pada tahun 1972 perangkat khusus untuk game yang dapat terhubung dengan televisi (Magnavox Odyssey ) yang diciptakan oleh perusahaan Magnavox dengan game buatannya yaitu Pong. Setelaah itu pada tahun 1975, Magnavox tidak lagi menjual perangkat tersebut karena, mereka telah memperkenalkan konsol game yang menggunakan microprosessor yang menjadi cikal bakal teknologi game generasi kedua.


Generasi Kedua

      Pada tahun 1976, teknologi game dengan menggunakan microprosessor mulai di perkenalkan dengan adanya VES ( Video Entertainment System) yang dibuat oleh Fairchild selain itu, ada konsol game lainnya yang terkenal pada zaman tersebut diantaranya : Magnavox Odyssey versi 2, Attari 2600, dan Attari 5200.

      Pada tahun 1980, Atari 2600 digunakan sebagai konsep dasar perkembangan konsol game di perusahaan lainnya. Generasi kedua ini juga ditandai dengan game Arcade 3D pertama keluaran Atari yaitu Battlezone, Pac-Man keluaran Namco, Game & Watch seri video game-handheld keluaran Nintendo, dan juga APF yang mengeluarkan Imagination Machine yang merupakan add-on komputer untuk video game rumahan APF MP-100 dimana semua game tersebut menggunakan teknologi gambar 8 bit.


Generasi Ketiga

      Pada tahun 1983 FAMICOM (Nintendo) merilis konsol game dengan nama NES (Nintendo Entertainment System) yang dapat menampilkan gambar dan animasi dengan resolusi tinggi dengan game yang paling terkenal adalah Super Mario.

      Pada generasi ini keamanan terhadap game sudah dipikirkan untuk menghindari dari pembajakan. Untuk itu, Nintendo merilis sebuah chip pengaman pada cartridge game mereka, sehingga seluruh game yang akan dirilis harus dengan seizin Nintendo


Generasi Keempat

      Pada tahun 1988, teknologi dalam bidang konsol game mengalami perkembangan mulai dari sisi grafis yang menggunakan teknologi 16 bit, perubahan pada gameplay, dan sound system dalam game konsol.

      Perkembangan ini dibuktikan dengan hadirnya perusahaan game pesaing Nintendo yaitu SEGA yang mengeluarkan produk konsol game buatannya yaitu Sega Mega Drive yang mendukung teknologi pada masa itu dan game buatannya yang terkenal Sonic the Hedgehog.


Generasi Kelima

      Pada tahun 1994, Atari kembali meluncurkan konsol game yaitu Atari Jaguar yang menyaingi kecanggihan SNES dan Mega Drive. Pada masa tersebut Atari Jaguar sudah mendukung teknologi gambar 64 bit namun, karena sulitnya menggunakan konsol tersebut akhirnya Atari Jaguar kalah saing dengan perusahaan konsol game terbaru yang dibuat oleh Sony yaitu Playstation 1 dengan teknologi gamabar 32 bit. Sony menggunakan CD sebagai media penyimpanan untuk game nya.

     Pada akhirnya konsol game dengan menggunakan CD/DVD sebagai media penyimpanan game semakin laris dan Sony pun mengeluarkan produk terbaru nya pada tahun 2000 dengan konsol game bernama Playstation 2.


Generasi Keenam

      Pada tahun 2006, konsol game mulai mengalami perubahan dari segi grafis yang tinggi hinga mendekati real, dilengkapi dengan motion sensitive sehingga pengguna dapat menkontrol game nya dengan memiringkan atau memutar konsol game, terhubung dengan internet, dan masih banyak fitur lainnya dari segi perangkat maupun software yang digunakan terus berkembang hingga saat ini


Game Engine (Unity)


      Seiring berkembangnya zaman dalam industri game, diperlukan sebuah metode untuk membuat game dengan cepat dan praktis serta memiliki teknologi yang terus berkembang. Untuk tujuan tersebut Game Engine dibuat, biasanya game engine di lengkapi oleh fitur seperti : Rendering, Scripting, Platform, Assets Store dan lain lainnya. Salah satu game engine yang akan saya bahas di sini adalah UNITY.

      Unity merupakan salah satu game engine yang banyak digunakan pada saat ini yang dibangun oleh Unity Technologies pada tahun 2004 oleh David Helgason, Nicholas Francis, dan Joachim Ante. Unity menyediakan fitur pengembangan game dalam berbagai platform, yaitu Unity Web, Windows, Mac, Android, iOS, XBox, Playstation 3 dan Wii. Dan kabarnya, Unity akan merilis versi berikutnya dengan dilengkapi platform Flash.

     Versi gratis unity menyediakan fitur pengembangan game berbasis windows, standalone mac, dan web. Sedangkan untuk platform lainnya diperlukan lisensi khusus. Unity pro juga menyediakan beberapa fitur lebih jika dibandingkan unity free, misalkan adalah efek bayangan pada objek dan efek water yang lebih memukau. Dalam unity disediakan berbagai pilihan bahasa pemrograman untuk mengembangkan game, antara lain JavaScript, C#, dan BooScript. Namun meskipun disediakan tiga bahasa pemrograman, kebanyakan developer menggunakan JavaScript dan C# sebagai bahasa yang digunakan untuk mengembangkan game mereka. Unity Mensuport pembuatan game 2D dan 3D, namun lebih ditekankan pada 3D. Pengembangan game lebih ditekankan pada desain dan tampilan visual daripada pemrograman. Unity memiliki beberapa versi, diantaranya Unity 3.x, Unity 4.x, Unity 5.x dan Unity 2017.x.

Fitur-fitur :

Rendering
Graphics engine yang digunakan adalah Direct3D (Windows, Xbox 360), OpenGL (Mac, Windows, Linux, PS3), OpenGL ES (Android, iOS), dan proprietary APIs (Wii). Ada pula kemampuan untuk bump mapping, reflection mapping, parallax mapping, screen space ambient occlusion (SSAO), dynamic shadows using shadow maps, render-to-texture and full-screen post-processing effects.[4]
Unity dapat mengambil format desain dari 3ds Max, Maya, Softimage, Blender, modo, ZBrush, Cinema 4D, Cheetah3D, Adobe Photoshop, Adobe Fireworks and Allegorithmic Substance. Asset tersebut dapat ditambahkan ke game project dan diatur melalui graphical user interface Unity.
ShaderLab adalah bahasa yang digunakan untuk shaders, dimana mampu memberikan deklaratif “programming” dari fixed-function pipeline dan program shader ditulis dalam GLSL atau Cg. Sebuah shader dapat menyertakan banyak varian dan sebuah spesifikasi fallback declarative, dimana membuat Unity dapat mendeteksi berbagai macam video card terbaik saat ini, dan jika tidak ada yang kompatibel, maka akan dilempar menggunakan shader alternatif yang mungkin dapat menurunkan fitur dan performa.

Scripting
Script game engine dibuat dengan Mono 2.6, sebuah implementasi open-source dari .NET Framework. Programmer dapat menggunakan UnityScript (bahasa terkustomisasi yang terinspirasi dari sintax ECMAScript, dalam bentuk JavaScript), C#, atau Boo (terinspirasi dari sintax bahasa pemrograman phyton). Dimulai dengan dirilisnya versi 3.0, Unity menyertakan versi MonoDevelop yang terkustomisasi untuk debug script.

Asset Tracking
Unity juga menyertakan Server Unity Asset – sebuah solusi terkontrol untuk defeloper game asset dan script. Server tersebut menggunakan PostgreSQL sebagai backend, sistem audio dibuat menggunakan FMOD library (dengan kemampuan untuk memutar Ogg Vorbis compressed audio), video playback menggunakan Theora codec, engine daratan dan vegetasi (dimana mensuport tree billboarding, Occlusion Culling dengan Umbra), built-in lightmapping dan global illumination dengan Beast, multiplayer networking menggunakan RakNet, dan navigasi mesh pencari jalur built-in.

Platforms
Unity support pengembangan ke berbagai plaform. Didalam project, developer memiliki kontrol untuk mengirim keperangkat mobile, web browser, desktop, and console. Unity juga mengijinkan spesifikasi kompresi textur dan pengaturan resolusi di setiap platform yang didukung.
Saat ini platform yang didukung adalah BlackBerry 10, Windows 8, Windows Phone 8, Windows, Mac, Linux, Android, IOS, Unity Web Player, Adobe Flash, PlayStation 3, Xbox 360, Wii U and Wii. Meskipun tidak semua terkonfirmasi secara resmi, Unity juga mendukung PlayStation Vita yang dapat dilihat pada game Escape Plan dan Oddworld: New ‘n’ Tasty.
Rencana platform berikutnya adalah PlayStation 4 dan Xbox One. Dan juga rumor untuk kedepanya mengatakan HTML akan menjadi platformnya, dan plug-in Adobe baru dimana akan disubtitusikan ke Flash Player, juga akan menjadi platform berikutnya.

Asset Store
Diluncurkan November 2010, Unity Asset Store adalah sebuah resource yang hadir di Unity editor. Asset store terdiri dari koleksi lebih dari 4,400 asset packages, beserta 3D models, textures dan materials, sistem particle, musik dan efek suara, tutorial dan project, scripting package, editor extensions dan servis online.

Physics
Unity juga memiliki suport built-in untuk PhysX physics engine (sejak Unity 3.0) dari Nvidia (sebelumnya Ageia) dengan penambahan kemampuan untuk simulasi real-time cloth pada arbitrary dan skinned meshes, thick ray cast, dan collision layers.



Desain Skenario dan Script


      Desain biasa di terjemahkan sebagai seni terapan, arsitektur dan berbagai pencapaian kreatif lainya. Skenario adalah urutan cerita yang disusun oleh seseorang agar suatu peristiwa sesuai dengan yang diinginkan. Skenario game sendiri artinya membuat sebuah alur cerita dari game tersebut dari awal hingga akhir dari game tersebut. Dengan adanya skenario game dapat membuat daya tarik dari game tersebut.

      Naskah atau script dalam pemrograman komputer adalah sebuah program atau intruksi yang ditafsirkan atau dilakukan dengan program lain daripada oleh komputer prosesor. Script adalag semacam bahasa pemrograman dalam tingkat kesulitan yang lebih rendah, tanpa aplikasi kompilasi interpreter, skrip biasanya disisipkan ke dalam bahasa pemrograman yang lebih kompleks dan hasil digunakan oleh bahasa pemrograman yang lebih kompleks itu. Skrip merupakan kumpulan sintaks pemrograman yang siap untuk di-compile. Macam - macam skrip : PHP, ASP, Java Script, Java Apples, VB Script. Ruby, Python, dan lain lainnya.


Artificial Intelligence pada Game


      Sebelum saya menjelaskan tentang AI (Artificial Intelligence) pada game, saya akan menjelaskan definisi AI itu sendiri menurut beberapa pakar Ahli diantaranya :

"Kecerdasan buatan (Artificial Intelligence) merupakan kawasan penelitian, aplikasi dan instruksi yang terkait dengan pemrograman komputer untuk melakukan sesuatu hal yang –dalam pandangan manusia adalah– cerdas”
– H. A. Simon (1987)

“Kecerdasan Buatan (AI) merupakan sebuah studi tentang bagaimana membuat komputer melakukan hal-hal yang pada saat ini dapat dilakukan lebih baik oleh manusia”
– Rich and Knight (1991)

     Dari beberapa definisi diatas maka dapat ditarik kesimpulan bahwa AI (Artificial Intelligence) / kecerdasan buatan merupakan sebuah teknologi komputer yang membuat sebuah mesin memiliki kecerdasan layaknya manusia. Begitu juga hal nya dengan Game yang memiliki AI di dalam nya, di buat layaknya manusia yang dapat bergerak dan mengambil keputusan nya sendiri.

      Saat saya belum mengenal AI (Artificial Intelligence) dan perkembangan AI belum memasuki dunia games, saya pernah berfikir bahwa NPC (Non Playable Character) yang ada saat itu masih bergerak sesuai pola yang dibuat oleh programmer, hal itu membuat saya dapat menebak pergerakan NPC tersebut. Karena saya mampu menebak pergerakkan NPC tersebut membuat saya sedikit bosan dan berfikir bahwa game tersebut sangat mudah dimainkan. Atau ketika saya bermain Mortal Kombat dengan NPC, setiap pergerakkan dan kemampuan yang dimiliki karakter NPC dapat di baca polanya, setiap kali NPC mengeluarkan serangan yang sama saya hanya menghindar dan menunggu pergerakkan nya berhenti baru saya dapat menyerang. Hal tersebut sangat membosankan dalam melawan NPC di game, saya berfikir bahwa suatu saat, di masa depan NPC dapat menentukan tindakkan nya sendiri tanpa ada nya pola yang diatur oleh programmer.

      Tetapi saat AI sudah ditanam dalam system game, pergerakkan NPC menjadi lebih leluasa untuk menjelajahi map tanpa ada pola yang mengatur pergerakkan nya dan kini NPC dapat membuat sebuah strategi sederhana dengan kondisi yang berbeda beda. Walau tidak banyak game yang seperti ini, saya akui bahwa saat ini Industri Game sudah berkembang dari sebelumnya. Bahkan banyak game engine yang menawarkan System AI pada NPC, hal tersebut dapat membantu programmer lebih cepat dalam memasukkan AI ke dalam game nya.

Berdasarkan buku yang ditulis Ian Millington dan John Funge, Teknik yang diperlukan dalam membuat game menjadi cerdas adalah dengan membuat NPC dapat bergerak dengan bebas tanpa ada pola yang ditetapkan programmer kecuali batasan yang bisa di tempuh NPC tersebut, dapat mengambil keputusan sendiri dan dapat belajar dari pengalaman.

Movement
      Pada beberapa game yang mengusung tema petualangan sudah hal dasar bagi game tersebut memiliki NPC yang dapat bergerak mengikuti alur/pola yang telah ditentukan. Dengan adanya AI dalam game tersebut dapat memungkin kan NPC bergerak sesuai pola yang ditentukan atau bebas bergerak sepanjang jalur yang di sediakan dalam game tersebut.


Pathfinding
      Pathfinding merupakan teknik yang digunakan agar NPC dapat membatasi pergerakkan nya sesuai perintah yang di terimanya. Dalam hal ini pathfinding merupakan perpaduan antara Decision Making dan Movement. Misalnya pada sebuah permainan, dimana NPC diperintahkan untuk berjaga di suatu lokasi oleh pemain maka, NPC akan berjalan di sekitar titik yang ditentukan oleh pemain. Hal tersebut salah satu fungsi dari teknik pathfinding dalam game berbasis AI.

Decision making
     Sebuah game dikatakan memiliki AI jika NPC nya dapat mengambil keputusan sendiri. Hal tersebut hanya bagian terkecil dalam sebuah game yang berbasis AI karena, AI tidak hanya sekedar mengambil keputusan saja tapi mengolah informasi yang di dapat untuk mengambil keputusan guna untuk membuat strategi dan mempelajari hal yang di lakukan oleh lawan nya dan masih banyak lagi hal yang dapat dilakukan AI untuk menciptakan game yang hebat.

Tactical & Strategic
      AI digunakan untuk membuat NPC dapat mengambil keputusan yang kemudian, di olah menjadi informasi untuk digunakan sebagai Taktik dan Strategi yang harus di lakukan oleh NPC tersebut. Namun, penulis mengatakan bahwa tidak semua jenis game dapat menggunakan AI dan AI harus dibatasi dalam setiap permainan. Contoh dalam game dengan genre FPS (First Person Shoot), di dalam game tersebut NPC ditugaskan untuk menembaki pemain. Jika AI di pasang dalam NPC tersebut maka, NPC tersebut akan membuat sebuah strategi berdasarkan pengalaman nya dan hal tersebut akan membuat tingkat kesulitan game tersebut bertambah dengan sendiri nya. Hal yang paling buruk adalah membuat pemain menjadi stress untuk menghadapi NPC tersebut.

Learning
      Learning dalam game diperlukan untuk NPC agar dapat mempelajari gerakan, strategi, dan pola permainan dari pemain lain sehingga dapat menunjang NPC untuk mengambil keputusannya sendiri untuk menghadapi pemain tersebut seperti membuat strategi dan memutuskan sebuah penyelesaian masalah.



Daftar Pustaka :


[1] Millington, Ian dan John Funge. 2009. "Artificial Intelligence for Games : second edition". Burlington: Morgan Kaufmann Publishers.

[2] Roedavan, Rickman. 2016. "Unity Tutorial Game Engine". Bandung: Informatika.

[3] https://www.academia.edu/26064884/Unity_3D_Game_Engine

[4] https://unity.com