Blogging for sharing, sekedar berbagi ilmu dan pengalaman

Extension Unity Sering Digunakan (Menurut Saya)

August 31, 2013 Posted by Ahmad Saifuddin Azhar No comments

Unity merupakan tools serba bisa untuk mengembangkan game. Unity dapat digunakan untuk mengembangkan berbagai jenis game antara lain Role Playing Game (RPG), First Person Shooter (FPS), Racing, dsb. Dalam Unitypun sudah didukung berbagai library atau tools yang cukup ampuh unutuk mendukung pembuatan game. Sebut saja component physics NVidia Phisx secara default akan disematkan di dalam Unity untuk mempermudah mengaplikasikan hukum-hukum fisika pada sebuah object. Selain itu di dalam Unity juga disematkan berbagai tools lain yang amat sangat membantu dalam pembuatan game seperti Character Controller, Pathfinding, Lighting, Sound, dan masih banyak tools-tools lain yang dapat dimanfaatkan.

Dengan segala bentuk kesaktiannya bukan berarti Unity dapat melakukan segala hal. Masih ada banyak hal yang tidak dapat dilakukan di Unity, sehingga seorang programmer harus membuatnya dari awal dengan tools-tools yang tersedia. Sebut saja 2D sprite manager, Unity (sampai versi Unity 4) setahu saya belum memberikan fitur untuk menjalankan sprite 2D di enginenya. Oleh karena itu seorang programmer harus bersusah payah untuk membuat sprite manager agar dapat membuat game 2D di Unity. 

Dari keterbatasan di atas untungnya unity menyediakan fitur package dalam exstensi .unitypackage yang memungkinkan seorang pengembang pihak ketiga membuat sebuah project library tambahan untuk meningkatkan kesaktian engine ini. Mungkin cukup dulu basa basinya, dan berikut adalah beberapa lib yang menurut saya sangat bermanfaat untuk mengembangkan game :
 
Augmented reality (realitas tertambah)
Vuforia SDK (free) >> https://www.vuforia.com/ >> Tutorial disini

2D Sprite Manager (tools untuk membuat sprite dalam mengembangkan game 2D)
Orthello (free & berbayar) >> http://www.wyrmtale.com/orthello/ >> Tutorial disini
2DToolkit (berbayar) >> http://www.unikronsoftware.com/2dtoolkit/

Path Finding (mencari rute jalan)
Arongranberg (Metode A*, free & berbayar) >> http://www.arongranberg.com/ >> Tutorial disini

Mungkin sekian yang dapat saya berikan.. Semoga bermanfaat. Jika ada tambahan silahkan comment yah… Terus berkarya dan terima kasih ^^

Alarm Clock Xtreme Free, Aplikasi Alarm Bagi Anda yang Susah Bangun

August 30, 2013 Posted by Ahmad Saifuddin Azhar 1 comment
Aplikasi alarm mungkin sudah biasa disematkan di dalam ponsel. Tidak harus smartphone, bahkan handphone jadul macam Nokia 3310 juga sudah memiliki aplikasi ini. Namun, seberapa efektif kah aplikasi alarm yang sobat punyai selama ini? Jika sobat adalah tipe orang yang susah untuk bangun mungkin aplikasi alarm biasa tidak terlalu membantu, karena dengan satu kali tekan alarm akan mati dan Sobat bisa dengan nyenyak tidur kembali. 

Pada artikel kali ini saya akan sedikit share tentang aplikasi alarm gratisan yang bagi saya cukup efektif untuk membuat saya bangun pagi setiap hari. Bagaimana tidak, aplikasi ini akan memberikan tantangan matematika untuk mematikan alarm. Tidak hanya itu, bahkan aplikasi ini bisa di set untuk memberikan lebih dari satu soal matematika untuk mematikan alarm. Semuanya bisa diatur dan di set sesuai dengan tingkat kekejasama Anda pada diri Anda sendiri. Hehehe... Oke.. Langsung saja kita bahas satu per satu fitur dari aplikasi menarik ini.
Tampilan utama aplikasi ini terlihat seperti apda gambar di bawah. Sobat dapat membuat lebih dari satu alarm. 
Tampilan utama alarm clock xtreme
Nah... Ini fitur uniknya ayng membedakan dengan alarm biasa.. Ada beberapa pilihan cara yang dapat digunakan untuk mematikan alarm, seperti mengocok device, menyelesaikan soal matematika (ini yang paling saya suka), sampai disuruh jalan-jalan cari mobil dan meletakkan device ke dalam docknya ( ribet banget yah -_-' ). Semua tergantung selera Sobat dan seberapa kejam Sobat, hehehe...

Menyelesaikan soal matematika untuk mematikan alarm

Tidak lupa untuk fitur Snooze  juga diberikan berbagai pilihan yang kurang lebih sama dengan pilihan untuk mematikan alarm.

Metode snooze berbagai pilihan
Oh iya... untuk tingkat kesulitan soal matematika juga bervariasi loh. Semuanya bisa dipilih tergantung dengan tingkat kekejaman Sobat pada diri Anda sendiri.

Tingkat kesulitan soal matematika untuk mematikan alarm

Nah.. Kalo alarm berbunyi kurang lebih hasilnya seperti ini.

Alarm berbunyi

Kalo kita klik 'Start math problem' maka akan muncul seperti ini

Soal matematika untuk mematikan alarm

Dari situ kalo jawaban kita bener maka alarm akan berhenti, kalau salah maka alarm akan terus berbunyi sampai Sobat bisa menjawab dengan benar. Sedikit tambahan lagi ternyata aplikasi ini juga punya fitur untuk memberikan hukuman bagi yang melakukan Snooze. Jadi semakin banyak melakukan Snooze maka soal yang diberikan akan semakin susah sehingga alarm akan semakin susah pula dimatikan.

Berbagai opsi tambahan alarm

Aplikasi ini dapat di download secara gratis di google play store disini.

Mungkin cukup sekian dulu review saya tentang aplikasi gratisan unik ini. Semoga review ini bermanfaat dan membuat sobat tidak lagi bangun kesiangan. Ok.. Terima kasih sudah membaca dan tinggalkan jejak dengan berkomentar ya... Kurang lebihnya saya mohon maaf, tetap semangat dan terus berkarya ^_^

Ngapain sih saya bikin blog ?

August 30, 2013 Posted by Ahmad Saifuddin Azhar No comments


Siang ini saya sedikit kurang kerjaan. Memang, hari ini sedikit sepi dari tugas-tugas kuliah. Sejak pagi saya hanya duduk ditemani laptop kesayangan saya lengkap dengan browser Firefox yang merupakan browser favorit saya. Hingga pada siang ini saya teringat tentang sedikit perkataan seseorang kepada saya beberapa waktu yang lalu dimana kurang lebih perkataan itu seperti ini “Ngapain sih kamu bikin blog? Dapet uang juga belum tentu, capek iya. Kalopun kamu nulis artikel, belum tentu juga artikel kamu dibaca orang”. Hahahaha…. Saya hanya sedikit tertawa kecil dalam hati karena memang saya menulis blog ini bukan untuk dibaca orang lain, tapi memang untuk saya sendiri. Kalaupun ada orang yang baca kebanyakan juga orang yang nemuin blog saya dari google atau orang yang memang ingin mengetahui blog saya. Saya sangat jarang mempromosikan atau menunjukkan blog ini di manapun, termasuk di jejaring sosial atau sejenisnya. Seringkali saya hanya membagikan artikel di jejaring sosial jika sebelumnya ada pertanyaan, atau seringkali ada pertanyaan tentang apa yang saya tulis di artikel tersebut. Kemudian, ngapain sih saya bikin blog kalo gak buat dibagi? Inilah beberapa alasan saya kenapa saya membuat blog ini.

Iseng
Ya.. Inilah alasan terkuat kenapa saya membuat blog ini. Saya pertama kali membuat blog dengan akun wordpress (http://gurusakti.wordpress.com) sudah sejak hampir 2 tahun lalu (terhitung ketika saya menulis artikel ini) yaitu sekitar awal 2011, dan itupun saya hanya sekedar iseng ikut-ikutan membuat blog tanpa ada niat untuk apa saya membuat blog dan apa yang akan saya isikan. Baru setelah hampir setahun kemudian, Desember 2011, saya baru memulai membuat post di blog wordpress dan terus berlanjut sampai sekarang.

Menjawab Pertanyaan yang berulang
Mungkin ini juga merupakan salah satu alasan yang cukup kuat kenapa saya membuat blog ini. Seringkali teman-teman saya menanyakan sesuatu yang kurang lebih menghasilkan jawaban yang mirip. Sebagai manusia terkadang saya juga bosan memjawab satu per satu pertanyaan dari mereka yang kebanyakan bertanya via SMS atau chat FB. Untuk itu, agar lebih praktis saya menyusun tutorial dalam blog ini sehingga ketika ada pertanyaan yang sama maka dengan santai saya akan memberikan link dari blog ini dan saya persilahkan untuk mencobanya sendiri. Lebih praktis bukan?

Sebagai catatan
Terkadang saya menemukan sebuah link tutorial yang menarik, atau bahkan terkadang saya menguasai sebuah ilmu baru yang cukup menarik. Sangat disayangkan bukan jika ilmu tersebut menguap begitu saja? Untuk itu seringkali saya membuat suatu catatan agar ilmu tersebut tidak menguap. Tapi tunggu, bagaimana jika saya membagikan catatan saya kepada orang lain? Tentunya akan lebih bermanfaat. Jadi, jika Anda cermati beberapa artikel dalam blog ini sebenarnya adalah catatan saya dan ketika saya membutuhkannya, saya dapat langsung mencarinya di blog saya sendiri.

Berbagi
Loh… Tadi katanya bikin blog bukan buat berbagi, kok plin plan sih? Ok saya jelaskan, ini memang bukanlah alasan utama saya, namun konsekuensi Anda membuat blog pasti dibaca oleh orang lain, dan bahkan mungkin pembacanya adalah orang yang sama sekali belum Anda kenal. Bagamana jika anda menulis sesuatu yang bermanfaat? Saya yakin, semakin banyak orang yang membaca maka akan semakin banyak Pahala yang mengalir buat Anda.

Sekedar Curhat dan Menunjukkan Karya Saya
Yang ini mungkin terdengar sedikit aneh, karena saya adalah tipe orang yang mungkin sedikit tertutup. Terus, apa maksudnya blog untuk curhat? Curhat disini biasanya adalah curhat tentang keberhasilan saya dalam menciptakan suatu karya, meskipun karya tersebut seringkali sesuatu yang simple yang mungkin dianggap sepele bagi kebanyakan orang

Mungkin sekian sedikit curhatan saya kenapa saya membuat blog ini dan terimakasih karena telah membaca curhatan saya yang sedikit alay ini. Hehehe…

Mencari Duplikasi File di Windows dengan Fast Duplicate File Finder

August 30, 2013 Posted by Ahmad Saifuddin Azhar No comments
Logo duplicate file finder
 Manajemen file yang buruk dalam media penyimpanan akan sangat merepotkan pengguna PC. Apalagi jika di dalamnya terdapat banyak file yang sama atau duplikat dan hanya berbeda namanya saja. Hal semacam ini selain merepotkan juga akan turut memakan space media penyimpanan yang seharusnya dapat dialokasikan untuk kegunaan lainnya. 

Berangkat pada pengalaman pribadi pada artikel ini saya akan membahas sebuah aplikasi kecil dengan nama 'Fast Duplicate File Finder' yang berfungsi untuk menemuka file-file yang sebenarnya kembar. Lebih dari itu, program ini dapat menemukan file yang tidak kembar namun mirip, dengan tingkat kemiripan yang dapat disesuaikan oleh user. Ok... Tanpa basa basi panjang lebar langsung saja kita bahas beberapa fitur penting dari Fast Duplicate File Finder melalui gambar-gambar di bawah. Berikut adalah tampilan utama dari aplikasi

Halaman utama duplicate file finder

Berikut akan sedikit saya jelaskan arti dari nomor-nomor yang saya berikan :
  1. Untuk menyimpan, membuka da membuat project baru. Hasil pencarian duplikasi file dapat disimpan sebagai project dan dapat dibuka sewaktu waktu sehingga tidak perlu melakukan scan ulang
  2. Tombol mulai pencarian dan pause
  3. Folder pencarian, aplikasi akan mencari file kembar pada folder-folder yang dapat diinputkan user
  4. Action setelah pencarian, seperti men-delete salah satu dari file kembar
  5. Pengaturan scan dan memulai scan
Ok... Sekarang coba kita tes kemampuan aplikasi ini. Saya coba untuk membuat beberapa file txt seperti pada gambar
Percobaan mencari file duplikat
Pada gambar diatas terlihat bahwa file a dan b kembar, file c dan e juga kembar. Kemudian kita coba cari dengan Duplicate File Finder, dan hasilnya adalah sbb :

Aplikasi menemukan file duplikat
Nah.. Ketemu kan file mana saja yang kembar. Fast Duplicate File Finder berlisensi freeware. Namun versi ini dapat diupgrade dan menyediakan beberapa tambahan, yaitu selain mencari file yang sama persis program ini juga dapat mencari file yang mirip alias tidak 100% kembar.

Tingkat kesamaan file yang duplikat

Fast Duplicate File Finder dapat di download di Softonic, Cnet, atau di pasar aplikasi lainnya.

Oke mungkin sekian saja artikel yang saya tulis, terima kasih sudah membaca dan tinggalkan jejak untuk berkomentar ya.. Selanjutnya mohon maaf jika ada salah kata, tetap semangat dan terus berkarya ^^



Berkenalan Lebih Jauh dengan Game Engine Unity3d (For Beginner)

August 28, 2013 Posted by Ahmad Saifuddin Azhar No comments
Logo unity

Setelah beberapa hari saya tidak mengurus blog ini, akhirnya hari ini saya mulai lagi menulis artikel sebagai pengisi blog ini. Artikel ini saya tujukan khususnya untuk teman saya yang sekarang sedang gencar-gencarnya mulai belajar unity untuk proyek akhir, dan sekaligus untuk siapapun yang ingin memulai belajar game engine unity ini. Saya berharap semoga artikel kali ini bermanfaat bagi siapapun yang membaca. ^^

Unity, adakah dari pembaca yang masih belum tau apa itu Unity??! Bagi yang belum tau apa itu unity monggo dibaca artikel saya sebelumnya disini. Sekedar review aja, Unity adalah salah satu game engine yang banyak digunakan. Dengan software ini, anda dapat membuat game anda sendiri dengan lebih mudah dan cepat. Hebatnya lagi, unity mensuport pembuatan game dalam berbagai platform, misal Unity Web, Windows, Mac, Android, iOS, XBox, Playstation 3 dan Wii.
Mungkin bagi anda yang belum familiar dengan Unity akan sedikit susah untuk mengerti cara menggunakan game enggine ini. Jadi sebelum anda menjadi seorang developer game yang hebat, ada baiknya anda membaca sedikit artikel ini agar anda tahu cara menggunakan Unity. Dibawah ini adalah poin-poin penting yang sangat mendasar tentang  bagaimana cara menggunakan software Unity ini.


1. Membuat Project Baru
Inilah hal yang paling mendasar dan biasanya adalah hal yang paling mudah ketika anda belajar untuk menggunakan suatu software. Jika anda tidak tahu cara membuat project maka mustahil project anda akan jadi. Dan berikut adalah cara membuat project baru pada Unity.
Klik File -> New Project

Maka akan muncul window Unity Project Wizard. Pada window itu anda akan diminta memasukkan lokasi dimana project anda, dan Package apa saja yang anda butuhkan pada project anda. Jika anda ragu untuk memilih Package yang akan diimport, maka lebih baik anda tidak mengimport package sama sekali.

Membuat project di unity

Setelah anda selesai menentukan lokasi dan memilih Package kemudian klik Create. Tunggu bebeapa saat maka project baru akan dibuat.Lihat gambar di bawah

Tampilan utama unity

2. Mengganti Platform dan Konfigurasinya
Setelah project baru dibuat maka langkah selanjutnya adalah mengatur platform dari project anda, apakah untuk Windows, Mac, Android, iOS, dsb. Untuk mengatur platform, klik File -> Build Settings

Setelah anda klik maka Window Build Settings akan muncul. Pada window itu anda akan diberi pilihan platfrom yang dapat anda gunakan. Untuk Unity versi free, platform yang tersedia hanya Web Player dan PC/Mac Standalone. Setelah anda menentukan platform anda, klik Switch Platform.

Anda juga dapat melakukan konfigurasi dari Platform dengan mengklik Player Settings. Konfigurasi akan ditampilkan pada Window Inspector

Build setting unity untuk merubah platform

3. Setting Kualitas Grafik
Langkah selanjutnya adalah konfigurasi grafik. Lakukan dengan bijak konfigurasi ini. semakin baik kualitas grafik maka akan semakin memperburuk performa. Untuk mensetting kualitas grafik anda dapat masuk Edit -> Project Setting -> Quality. Lihatlah pada window Inspector untuk mengkonfigurasi. Disini anda dapat melakukan setting project dari berbagai platform.

Quality Setting di unity

4. Tentang Window
Seperti kebanyakan software lainnya, Unity terdiri dari window-window, dimana setiap window memiliki fungsi masing-masing. Anda dapat menampilkan, menyembunyikan, merubah ukuran, dan mengatur tata letak dari window. Window dapat anda munculkan dengan klik Window -> Pilih Window yang akan dimunculkan.

berbagai macam Window pada unity

Berikut adalah window yang paling penting dan paling sering digunakan menurt pengalaman saya dalam menggunakan Unity :

Window Scene
Merupakan window untuk mengatur tata letak dari suatu object dalam game. Misal anda dapat mengatur letak kamera, terrain, atau object lain dalam window ini. Anda dapat memasukkan Object dengan melakukan drag drop dari window Project ke dalam Window ini.

Window Game
Merupakan window simulasi game ketika game dijalankan. Window ini banyak berfungsi pada proses debugging ketika anda menjalankan game anda.

Window Inspector
Seperti layaknya window Properties pada kebanyakan aplikasi seperti VB dsb. Pada window ini disediakan berbagai pengaturan. Isi dari window ini dapat berubah ubah ketika anda mengklik object yang berbeda.

Window Hierarchi
Berhubungan dengan window Scene. Apa yang ada dalam window Scene akan ditampilkan secara list di window ini.

Window Project
Pada window ini terdapat hirarki dari folder-folder asset yang anda miliki. Asset dapat anda gunakan dengan melakukan drag drop ke window scene

Window Animation
Pada window ini anda dapat membuat animasi sederhana untuk game anda, misal animasi rotasi untuk membuka pintu, animasi translasi untuk menggerakkan jendela, dsb. untuk animasi yang rumit tidak dapat anda lakukan disini, akan tetapi pada software modelling anda, misal blender, 3dsmax, dsb.

5. Apa itu Scene?
Sedikit susah untuk menjelaskan apa itu scene. Lebih baik saya langsung memberikan contoh. Scene dapat dianalogikan sebagai level permainan, meskipun tidak selamanya scene adalah level permainan. Misal, level1 anda letakkan pada scene1, level2 pada scene2, dst. Namun scene tidak selamanya berupa level, bisa jadi lebih dari satu level anda letakkan dalam satu scene. Game menu biasanya juga diletakkan pada satu scene tersendiri.  Suatu scene dapat berisi beberapa  GameObject. Antara satu scene dengan scene lainnya bisa memiliki GameObject yang berbeda. Scene diatur pada window scene dan hierarchy. Scene dapat anda simpan dengan klik file -> save scene.

Tampilan pada windows Scene

6. Mengenal Asset dan Package
Sebenarnya saya sendiri kurang mengerti apa perbedaan Asset dan Package. Dari yang saya pahami Asset dan Package adalah mirip, suatu asset dapat terdiri dari beberapa package. Mungkin jika salah bisa anda comment di bawah. Yang jelas, asset atau package adalah sekumpulan object yang disimpan. Object dapat berupa GameObject, terrain, dsb. Dengan adanya asset/package anda tidak perlu susah-susah membuat object lagi jika anda telah membuatnya sebelumnya. Anda dapat mengimport nya dari project lama anda.

Sebuah ilustrasi, pada project lama anda telah membuat object tank lengkap dengan AI, control, missile, dan ledakan. Kemudian anda akan membuat project baru yang memerlukan object tank yang pernah anda buat sebelumnya. Maka anda tidak perlu repot-repot membuatnya dari awal. Cukup buka project lama anda, lihat window project, carilah object mana yang akan anda gunakan. Kemudian klik kanan -> Export Package. Package akan disimpan dalam format .unitypackage. Kemudian anda dapat membuka project baru dan mengimport packagenya dengan klik Assets -> Import Packake -> Custom Package.

Anda juga dapat berbelanja berbagai macam package yang anda butuhkan di unity assets store. Bukalah Window -> Asset Store.

7. Menambahkan Object ke dalam scene
Untuk menambah object anda dapat mengklik GameObject -> Pilih yang anda inginkan. Anda dapat juga menambahkan Object dalam scene dari asset yang anda miliki. Anda juga dapat membuat berbagai object 3D anda sendiri beserta animasinya dengan software lain, misal blender, 3dsmax, dsb. Untuk mengimportnya dapat anda lakukan drag drop dari file 3D ke dalam window Project. Unity mensuport berbagai format 3D antara lain .fbx, .blend, .max, .3ds, dsb. Keseluruhan object tersebut secara otomatis akan dijadikan object .fbx oleh unity dan akan diletakkan pada window project.

Object pada unity dalam bentuk prefab

8. Apa itu Component?
 Jika anda telah mengimport object dan meletakkan pada scene, apa yang dapat dilakukan object tersebut selain diam? Disinilah component berperan, dengan menggunakan component anda dapat menambahkan perilaku dari object, misalkan gravity, collider, cloth, controller, dsb. Component sebenarnya adalah sekumpulan script. Anda juga dapat membuat script anda sendiri dengan menggunakan C#, javascript, atau booscript. Untuk menambahkan component cukup klik object anda dalam scene -> klik component -> pilih yang akan anda gunakan. Jika anda memiliki script anda sendiri, anda dapat melakukan drag drop script anda dari window project ke object anda di window scene atau hierarchy.

9. Build Project
Inilah yang ditunggu tunggu setelah anda membuat project anda. Untuk melakukan build dapat anda klik File -> Build and Run.

Berhubung saya sudah capek maka saya sudahi saja arikel kali ini, semoga bermanfaat bagi anda yang baru belajar engine ini. Maaf kalau artikelnya kepanjangan. Silahkan comment jika anda kurang paham atau ingin request artikel lainnya. Keep spirit dan terima kasih sudah membaca…. ^^

Sumber : Blog pribadi, http://gurusakti.wordpress.com/2012/03/14/berkenalan-lebih-jauh-dengan-game-engine-unity3d-for-beginner/

Tutorial Pencarian Rute ( Pathfinding ) dengan Algoritma A* di Unity Menggunakan Library Arongranberg

August 28, 2013 Posted by Ahmad Saifuddin Azhar 13 comments

Mungkin sobat sudah bisa menduga, kenapa saya pajang gambar game lawas, pacman, sebagai pembukaan artikel ini. Yaa.. Karena memang tujuan kita di artikel ini adalah membuat simple AI yang memiliki sifat mirip dengan karakter musuh dalam game pacman, yaitu dapat mencari jalan untuk mencari objek tertentu kemanapun obyek tersebut bersembunyi.

Artikel ini sebenarnya adalah artikel lanjutan dari artikel pembuatan simple AI untuk mengikuti obyek tertentu yang pernah saya tulis sebelumnya disini. Namun jika sobat lihat pada artikel sebelumnya yang ada hanyalah karakter mengikuti player hanya dalam ruangan kosong tanpa ada halangan sama sekali. Coba lihat gambar di bawah

Arena kosong tanpa penghalang

Kemudian pertanyaanya, bagaimana jika arena berupa labirin atau memiliki penghalang seperti pada gambar di bawah? Pasti algoritma sederhana seperti algoritma sebelumnya tidak dapat menyelesaikan ini dan dijamin akan terjadi berbagai tubrukan.

Arena labirin dengan banyak penghalang

Jika arena berbentuk labirin atau memiliki penghalang maka tentu diperlukan suatu algoritma tertentu agar AI yang mengejar tidak membentur tembok. Selain itu, karakter AI seharusnya juga dapat memutuskan rute mana yang harus ditempuh agar pergerakan semakin realistis dan optimal.

Terdapat berbagai algoritma pencarian jalur ayng dapat dipakai, sebut saja djikstra, A*, dsb. Namun pada artikel kali ini kami akan membahas algoritma A*, kenapa A* yang saya pilih karena di Unity telah tersedia extension arongranberg untuk memudahkan kita dalam menemukan jalur terpendek menggunakan algoritma A*. Adapun jika Sobat ingin tahu apa itu algoritma A* dan bagaimana cara kerjanya silahkan baca artikel saya sebelumnya tentang algoritma A* untuk pencarian jalur terpendek.

Namun pada tutorial kali ini kita tidak terlalu membahas bagaimana cara kerja algoritma A* karena kita akan memakai library arongranberg. Dengan library ini kita cukup menentukan dimana saja posisi node dan arongranberg akan mencari sendiri rute terdekat menggunakan algoritma A*. Ok.. Langsung saja kita coba, mari siapkan alat dan bahannya sbb :
  1. Game engine Unity yang sudah terinstall di PC. Adapun Unity dapat di download disini. Jika sobat ingin belajar lebih jauh tentang unity silahkan mengunjungi halaman kumpulan link tutorial disini.
  2. Extension Arongranberg sebagai extension unity untuk mencari jalur terpendek. Versi terbaru arongranberg dapat di download di situs resminya disini. Namun untuk menghindari perbedaan cara, jika Sobat ingin mendownload versi yang sama dengan tutorial ini (versi 3.2.5.1) maka dapat di download disini.
  3. Project membuat simple AI yang pernah saya buat di tutorial sebelumnya disini. Adapun projectnya dapat di download disini.
Oke jika alat dan bahan sudah siap mari langsung saja ita mulai percobaannya. Berikut adalah step by step pembuatan aplikasi ini :

1. Buka project dan import arongranberg
Pertma buka project yang telah Sobat download pada alat & bahan di step 3. Buka scene Main Scene pada folder _Scenes. Setelah dibuka maka tampilannya seperti pada gambar di bawah.

Buka project lama

Selanjutnya import library arongranberg dengan membukanya dan lakukan double klik

Import library arongranberg untuk A* pathfinding
Import semua elemen maka di window project akan ditambahkan

Hasil import library arongranberg

2. Buat graph
Setelah project dan lib bisa di import makan langkah selanjutnya dalah membuat graph. Ada beberapa jenis graph yang dapat dibuat di arongranberg, namun kali ini saya akan membahas yang paling mudah yaitu grid graph. Caranya buat empty game object dengan nama A*. Kemudian drag & drop script AStarPath ke dalam object A*.

Pembuatan graph untuk pencarian rute

Kemudian buat GridGraph pada object A*

Menggunakan grid graph

Selanjutnya lakukan konfigurasi seperti di bawah

Konfigurasi grid graph

Nilai-nilai dalam tutorial ini bisa saja berbeda sesuai dengan luas arena. Silahkan mainkan sendiri ya nilai nilai width, depth, node size, dsb. Lihat-lihat sendiri apa efeknya, yang jelas berkaitan dengan ukuran arena, banyaknya node dalam graph, dan letak center dari graph. Tempatkan tepat di atas arena.Jika sudah diatur klik tekan seperti pada gambar di bawah 

Scan untuk generate graph
Jika sudah di scan maka seharusnya hasilnya adalah seperti pada gambar di bawah

Hasil scan dari grid graph

Kotak-kotak merah pada gambar diatas menunjukkan daerah yang tidak dapat dilewati atau illegal. Jika sobat tidak menemukan kotak-kotak merah atau dengan kata lain penghalang tidak dapat dideteksi maka coba mainkan variabel Erode Iteration dengan memperbesar nilainya. Semakin besar nilai Erode Iteration maka akan memperbesar daerah terlarang. Jika semakin kecil maka penghalang tidak dapat dideteksi.

Erode iteration
Jika kita tengok lebih dekat maka player dan enemy juga akan dideteksi sebagai penghalang. Lihat gambar di bawah 
Player dan enemy dianggap sebagai penghalang
Yang perlu kita lakukan adalah membatasi hanya tembok, bangunan dan arena yang dideteksi oleh arongranberg, adapun lainnya tidak. Yang perlu kita lakukan adalah memisahkan tembok dan arena pada layer yang berbeda, misal kita taruh dalam layer "Arena Collider". Lihat gambar di bawah 

Membuat layer arena collider

Kemudian pada bagian Mask pada Collssion testing hanya kita centang bagian Arena Collider

Hanya mengunakan arena collider dan mengabaikan yang lain

Maka hasilnya player dan enemy tidak lagi dianggap sebagai penghalang. Lihat gambar di bawah

Player dan enemy diabaikan


3. Buat karakter AI
Untuk membuat obyek yang menerapkan pathfinding kita daur ulang obyek pada proyek sebelumnya dengan cara remove script AICharacter pada object AI Character. Sekedar info bagi yang belum membaca artikel sebelumnya tentang simple AI. Object AI Character adalah object karakter yang akan mengejar target (player). Di dalam AI Character terdapat script AICharacter untuk mengikuti object. Disini kita tidak membutuhkan script ini sehingga kita perlu me-remove-nya.

Remove component

Untuk mencari jalur script yang diperlukan adalah Seeker. Kita drag & drop script seeker ke dalam AI Character
Menambahkan script seeker untuk menemukan rute

Kita biarkan script seeker (WARNING : Jangan pernah mengedit script Seeker kecuali benar-benar mengerti dan dibutuhkan). Kemudian kita buat script baru dengan nama AIPathFindingCharacterBehaviour. Adapun isi dari AIPathFindingCharacterBehaviour adalah sbb :


using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using Pathfinding;

public class AIPathfindingCharacterBehaviour : MonoBehaviour {
    public GameObject target;
    public float movingSpeed = 2f; //kecepatan berpindah
    public float turnSpeed = 0.05f; //kecapatan berbelok

    private Seeker seeker;

 void Start () {
        seeker = this.GetComponent();

        seeker.pathCallback += OnPathComplete; //Jika pencarian complete maka memanggil method OnPathComplete. Fungsi pencarian cari seeker.StartPath

        StartCoroutine(RepeatSearchTarget(0.5f)); //Mencari target setiap 0.5 detik. Semakin cepat repeat rate beban CPU semakin berat, jika terlalu lambat ketika target berpindah tempat jalur tidak berubah
 }

    private Vector3 processedVectorPath; //Node dari path yang sedang di proses >> berelasi dengan vectorPath
 void Update () {
        if (Vector3.Distance(this.transform.position, processedVectorPath) < 1) { //Jika mencapai processedVectorPath, maka node yang di proses (processedVectorPath) adalah node berikutnya (vectorPath[0])
            if (vectorPath.Count > 0) {
                processedVectorPath = vectorPath[0];
                vectorPath.RemoveAt(0); //me remove vectorpath[0]
            }
        }

        Vector3 gapPosition = processedVectorPath - this.transform.position; //Gap antara posisi AI dengan target
        gapPosition = new Vector3(gapPosition.x, 0, gapPosition.z); //Nilai gap y dibuat 0 agar AI mengabaikan posisi atas dan bawah (Y) dari target dan hanya mengikuti arah ke kanan dan ke kiri (X dan Y)
        Quaternion lookRotation = Quaternion.LookRotation(gapPosition); //Rotasi untuk look atau melihat target
        this.transform.rotation = Quaternion.Lerp(this.transform.rotation, lookRotation, turnSpeed); //Membuat rotasi berubah secara smooth menggunakan fungsi lerp dari rotasi awal ke rotasi tujuan lookRotasion

        this.transform.Translate(Vector3.forward * movingSpeed * Time.deltaTime); //Bergerak maju
 }

    private List vectorPath = new List(); //berisi kumpulan node dalam path >> node yang sedang di proses dimasukkan processedVectorPath
    private IEnumerator RepeatSearchTarget(float repeatRate) { 
        while (true) {
            seeker.StartPath(this.transform.position, target.transform.position); //Mulai mencari path path >> lihat OnPathComplete

            yield return new WaitForSeconds(repeatRate);
        }
    }

    private void OnPathComplete(Path path) { //Pencarian selesai
        vectorPath = path.vectorPath; //hasil pencarian berupa kumpulan node dari path, ditampung dalam vectorPath
        processedVectorPath = vectorPath[0]; //ode yang sedang di proses dimasukkan processedVectorPath 
        vectorPath.RemoveAt(0); //menghapus node pada vectorPath[0] karena telah di tampung di processedVectorPath untuk diproses
    }
}

Kemudian kita masukkan script AIPathFindingCharacterBehaviourke dalam object AI Character dengan cara drag & drop.

Menambahkan script baru untuk mencari rute

Selanjutnya kita masukkan Player kedalam variabel target dengan cara drag & drop.

Menentukan object yang menjadi target pencarian

3. Uji Coba
Selanjutnya tinggal uji coba deh semuanya. Klik tombol play dan jalankan program. Adapun hasilnya kurang lebih adalah seperti pada gambar di bawah. Enemy akan mengejar player tanpa menabrak tembok.

Garis hijau merupakan rte yang ditempuh

Sobat dapat menekan tombol-tombol arrow pada keyboard untuk menggerakkan player.


Mungkin cukup sekian tutorial yang dapat saya sampaikan, project dapat Sobat download pada link di akhir artikel ini. Jangan lupa untuk membaca artikel saya lainnya yaaa... Dan saya harap pengunjung bisa tinggalkan komen, itung-itung biar rame. Hehehe... Kurang lebihnya saya mohon maaf, terima kasih telah membaca artikel ini tetap semangat dan terus berkarya... ^^

PROJECT : 
http://www.4shared.com/zip/wwYLG27U/Pathfinding_arongranberg.html

Baca juga :
Belajar Algoritma A* Untuk Pencarian Jalur / Rute Terdekat
Extension Unity Sering Digunakan (Menurut Saya)

Tutorial Cara Membuat Game 2D Menggunakan Unity dan Orthello Framework

August 26, 2013 Posted by Ahmad Saifuddin Azhar 35 comments


Unity adalah sebuah game engine dimana engine ini memiliki kemampuan untuk membuat game-game 3D dengan berbagai efek yang memukau, seperti efek lighting, physics, dsb. Namun tahukah Anda bahwa Unity dapat pula digunakan untuk membuat game 2D? Ya, selain untuk membuat game-game 3D ternyata unity juga memiliki kemampuan untuk membuat game 2D. Namun seberapa ampuhkah kemampuan unity untuk membuat game 2D? Apakah bisa seampuh engine 2D lain seperti flash, game maker, dsb? Hal ini merupakan pertanyaan yang cukup sulit, karena setiap developer tentu memiliki tools-tools andalan mereka dalam membuat produknya. Namun bagi saya pribadi sebagai seorang developer yang sering memanfaatkan tools Unity, saya sangat yakin bahwa Unity sama sekali tidak kalah dengan engine-engine 2D lainnya asalkan developer mampu memanfaatkan tools-tools dalam unity secara maksimal. Hal ini dibuktikan dengan munculnya berbagai game-game 2D yang cukup fenomenal yang dibuat menggunakan Unity. Sebut saja Bad piggies, game 2D besutan Rovio yang sangat sangat terkenal ternyata juga dibuat menggunakan Unity.


Selain kemampuannya yang sudah cukup sakti, kemampuan Unity dalam membuat game-game 2D juga sangat didukung dengan adanya berbagai library/framework tambahan yang sangat memudahkan untuk membuat game-game 2D. Contoh framework yang sangat terkenal adalah 2DToolkit dan Orthello. Khusus untuk artikel kali ini saya bermaksud untuk membahas tentang pembuatan animasi simple menggunakan salah satu framework 2D yaitu Orthello. Kenapa orthello saya pilih karena alasan utamanya adalah orthello merupakan framework yang gratis namun memiliki kemampuan yang tidak kalah dengan framework berbayar lainnya. Adapun alat dan bahan yang perlu dipersiapkan untuk mengikuti tutorial ini adalah sbb :

  1. Unity (Yang ini pastinya lah, judulnya aja Simple 2D Sprite di Unity. Anda dapat mendownload Unity di situs resminya di sini)
  2.  Orthello framework (Anda dapat mendownload orthello free di situs resminya di sini)
    Texture packer (Tools untuk membuat sprite 2D, Anda dapat mendownloadnya di situs resminya di sini)
  3.  Asset, optional (Ini adalah contoh sprite sederhana buatan saya, Anda dapat mendownloadnya di sini)
Peringatan : 
Sebelum Anda membaca lebih jauh saya menawarkan alternatif tutorial membuat game 2D tanpa menggunakan orthello framework disini

Nah… Jika semua tools telah siap saatnya kita mulai percobaannya. Langkah pertama sebagai pemanasan adalah siapkan spritenya. Dalam tutorial ini saya memiliki 4 buah gambar yang akan saya jadikan sebuah sprite dengan 2 animasi, yaitu idle (diam) dan walk_right (berjalan ke kanan).


Langkah selanjutnya kita buat project baru di Unity. Ketik file >> new project >> buat project baru


Dengan Unity masih aktif terbuka selanjutnya buka file orthello dan lakukan double click untuk mengimport orthello ke dalam project


Setelah double click Anda akan diberi konfirmasi komponen apa saja yang akan di import. Centang semua dan klik import


Jika orthello sudah berhasil di import maka akan muncul susunan file-file orthello seperti pada gambar


Sebagai langkah awal masukkan object orthello dalam Orthello >> Object >> OT ke dalam scene dengan melakukan drag drop ke window hierarchy


Kemudian lakukan pengaturan resolusi pada Player setting seperti gambar di bawah



Lakukan juga pengaturan resolusi game pada object view dalam Child object OT


Setelah semua pengaturan dilakukan maka pengaturan kamera secara otomatis akan dirubah oleh orthello menjadi tampilan Orthographic yaitu tampilan kamura 2D. Lihat gambar di bawah


Kemudian saya akan membuat sebuah object 2D stickman. Buat susunan folder seperti gambar di bawah. Susunan folder ini bukanlah aturan baku, Anda dapat mengatur susunannya sesuai keinginan Anda.


Setelah kerangka folder-folder siap saatnya membuat sprite, dengan langkah awal membuat Texture Atlas. Texture Atlas dibuat dengan menggunakan software tersendiri, yaitu Texture Packer. Buka texture packer maka akan muncul tampilan di bawah.


Kemudian klik Use Free (lite) Version untuk masuk ke dalam program. Setelah masik, saatnya membuat Texture Atlas baru dengan melakukan drag & drop sprite 2D ke dalam Texture Packer pada bagian Sprites


Kemudian rubah pengaturan layout seperti pada gambar di bawah. Perhatikan pada bagian yang diberi tanda


Setelah layout rubah pengaturan output. Perhatikan pula pada bagian yang diberi tanda. Untuk data file masukkan pada [lokasi project]/Assets/User Assets/Stickman/Texture Atlases. Beri nama Stickman.xml. Peringatan : Pada kondisi default Texture packer akan memberi ekstensi .plst pada data file. Namun agar dapat di baca unity maka format data harus dirubah dari .plst ke .xml. Lihat gambar di bawah


Setelah semua pengaturan selesai maka berikut adalah preview dari Texture Atlas yang telah kita buat


Setelah semua siap tinggal kita buat Texture Atlas dengan klik Publish


Setelah kita lakukan publish maka jika penyimpanan lokasi benar maka data dan texture akan ada dalam folde Texture Atlases di Unity


Secara default semua image yang diimport dalam Unity memiliki type Texture. Typeini membuat gambar lebih ringan untuk di load namun akan terlihat sedikit kabur. Dalam game 2D hampir tidak ada bedanya antara object (yang seharusnya jadi texture) dengan object user Interface GUI. Untuk itu meskipun pada sebenarnya image digunakan sebagai texture, maka akan lebih baik hasilnya jika kita ruba typenya ke GUI. Bentuk GUI akan membuat gambar lebih jelas dan tidak kabur. Klik image yang di rubah, pada Texture Type pilih GUI.


Selanjutnya untuk membuat sebuah animasi langkah pertama adalah membuat sebuah object Container. Container dapat saya ibaratkan sebagai data image apa saja yang akan load di suatu scene. Image ini berupa Texture Atlas dimana di dalamnya terdapat data pada Texture Atlas dan Image itu sendiri. Pada kasus ini kita akan membuat container dari Stickman, dengan Texture Atlas yang telah kita buat tadi menggunakan Texture Packer. Langkah pertama adalah drag drop object Orthello dari Orthello >> Objects >> Sprites >> Sprite Atlas >> SpriteAtlasCocos2SD ke dalam scene atau ke window Hierarchy


Setelah kita drag drop maka secara otomatis akan ada object Container baru dalam child Containers.


Selanjutnya kita lakukan pengaturan, berupa setting nama container dan lakukan drag & drop data dari Texture Atlas ke dalam container.


Ketika data di drag & drop maka seharusnya secara otomatis image dari Texture Atlas akan terinclude dan Orthello akan mengenerate sprite-sprite pada Texture Atlas Anda.


Setelah Container dibuat maka langkah selanjutnya adalah membuat Animasi dari container. Animasi kita buat dengan melakukan drag & drop object dari Orthello >> Objects >> Sprites >> Animation ke dalam scene window Hierarchy.


Kemudian beri nama animasi


Buat animasi dengan mengisi frameset sesuai jumlah animasi yang diinginkan. Pada setiap frameset masukkan container yang telah kita buat dengan melakukan drag & drop


Kemudian atur nama animasi dan range frame dari animasi tersebut sesuai Texture Atlas yang telah dibuat sebelumnya


Object container beres, animasi beres, selanjutnya tinggal membuat object dari animasi yang telah kita buat. Hal ini hampir sama dengan membuat object biasanya. Caranya drag & drop object Animating Sprite dari Orthello >> Objects >> Animating Sprite ke dalam scene.


Beri nama object animasinya dan masukkan animasi yang telah kita buat sebelumnya.


Sekarang untuk ujicoba tinggal play deh project kita, maka seharusnya akan muncul animasi rang bergerak. Selamat, Anda berhasil membuat animasi 2D di unity… ^^


Nah… Selanjutnya apakah berhenti sampai disini? Terus gimana kalo setiap kita menekan key tertentu muncul animasi yang berbeda? Ya… Tentu harus menggunakan script. Ok, kali ini saya akan memberi contoh object akan me-load animasi berbeda ketika saya menekan key Panah kanan. Langkah awalnya non-aktifkan dulu auto start animasinya.


Kemudian saya bikin sebuah script StickmanBehaviour, dan jangan lupa untuk menaruh script ini di object Stickman.


Nah isi scriptnya kurang lebih seperti ini


using UnityEngine;
using System.Collections;

public class StickmanBehaviour : MonoBehaviour {
    private OTAnimatingSprite otAnimatingSprite;

    void Start() {
        otAnimatingSprite = this.GetComponent();
    }

    void Update() {
        // Get keyboard input
        if (Input.GetKey(KeyCode.RightArrow))
            MoveRight();
        else
            Idle();
    }

    public void MoveRight() {
        otAnimatingSprite.PlayLoop("Walk Right");

        //Some script to translate object
    }

    public void Idle() {
        otAnimatingSprite.PlayLoop("Idle");
    }
}


Ato jika mau screenshotnya silahkan liat gambar di bawah



Ok… Sekarang jadilah animasi Anda. Silahkan tekan panah kanan dan liat apa yang terjadi. Selamat Anda telah mengilkuti tutorial ini dengan baik ^^

Kesimpulan :
Mungkin dari beberapa step yang Anda lakukan terlihat cukup ribet dan sulit, terdapat beberapa tahap hanya untuk membuat 1 animasi 2D. Nah, sebenarnya tidak ribet, namun kita harus mengetahui step-stepnya secara urut. Berikut adalah rangkuman step-step yang harus dilakukan
  • Siapkan bahan (unity, orthello framework, texture packer)
  • Buat new project unity, atur berbagai keperluan seperti resolusi dsb, import orthello framework
  • Masukkan object orthello ( OT ) ke dalam scene dan atur resolusi dan pengaturan lain di View
  • Buat Texture Atlas menggunakan software Texture Packer
  • Buat object Container dan masukkan Texture Atlas yang telah dibuat pada step sebelumnya. Container  adalah ibarat mendefinisika Texture Atlas yang akan digunakan di scene agar dapat di proses oleh orthello dan dijadikan kumpulan Sprite
  • Buat animation. Animation adalah ibarat mendefinisikan animasi dari Container yang dibuat pada step sebelumnya. Misal : Animasi jalan, berasal dari container A, dari frame 1-10
  • Buat object animasi. Ini seperti membuat object biasa, tinggal masukkan animasinya
Ok… Mungkin cukup sekian saja artikel dari saya. Mohon maaf jika mungkin ada kesalahan, saya ucapkan selamat mencoba dan terus berkarya ^^

Sumber : Blog pribadi http://gurusakti.wordpress.com/2013/05/23/simple-2d-sprite-di-unity-menggunakan-orthello/

Baca juga :
Andengine, library imut yang tangguh untuk Android game developer