Senin, 16 Desember 2013

My RPG project: The world

Hi semuanya, ketemu lagi dengan aku di blog post yang membahas soal game RPG yang lagi aku bikin. Kalau kalian masih ingat, minggu kemarin aku bilang kalau aku ingin mulai memikirkan soal cerita dan dunia dalam game, kali ini aku ingin menulis soal dunia tempat setting game. Ada tiga kerajaan di dalam game ini, Altiria, Belirium, dan Arkascha.

Altiria



Altiria adalah kerajaan antagonis dalam cerita. Orang-orang Altiria adalah bangsa yang suka berperang, mereka juga adalah bangsa dengan kekuatan fisik yang tinggi (lebih tinggi dari kedua kerajaan lain). Biarpun begitu, masih ada juga orang-orang Altiria yang menggunakan sihir. Altiria bermusuhan dengan Belirium (kerajaan protagonis) karena putri kesayangan raja kawin lari dengan pangeran Belirium. Pihak Altiria menginginkan tuan putri dikembalikan tapi Belirium menolak, akhirnya terjadilah perang.

Karena mereka adalah bangsa yang suka bertarung, maka di sini juga ada olahraga gladiator. Mati dalam pertarungan gladiator atau dalam perang adalah kematian yang terhormat, dan tidak bisa dibalasdendamkan. Sementara itu, bunuh diri adalah tindakan yang paling hina bagi mereka, karena orang yang bunuh diri adalah orang yang nggak berani menghadapi hidup.

Tipe pemerintahan di sini adalah religious leadership, aku nggak tahu apakah di dunia nyata ada istilah seperti itu tapi itulah sistem pemerintahan di Altiria. Seorang raja akan memerintah bersama seorang Grand Cleric. Sebelum pergi berperang raja akan menanyakan pada Grand Cleric apakah para dewa menyetujui perang mereka, kalau Grand Cleric mengatakan para dewa setuju maka raja akan mendeklarasikan perang (di cerita game ini, Grand Cleric sudah menyatakan bahwa para dewa setuju perang untuk mengambil kembali tuan putri). Pada umumnya, raja bebas berbuat apa saja dalam memerintah, kecuali kalau Grand Cleric mendapat wahyu dari para dewa bahwa dewa nggak merestui tindakan raja, maka Grand Cleric akan mengintervensi raja, dan raja akan menghentikan tindakannya.

Berbicara mengenai para dewa, Altiria menyembah beberapa dewa, yaitu:

  • Kohrob, Sang Pencipta, Yang Maha Tahu, Pemimpin Para Dewa
  • Carathian, Sang Pelindung Kehidupan
  • Voraldin, Sang Pencipta makhluk
  • Reyrull, Sang Pencabut Nyawa
  • Elloyr, Sang Penyembuh (juga Sang Matahari)
  • Andallar, Sang Dewa Kesuburan
Altiria juga punya mitologi penciptaan dunia, seperti ini:

Kohrob menciptakan dunia dari kehampaan
Carathian melindungi dunia dari ancaman
Voraldin menghidupkan manusia, binatang, dan semua makhluk lain
Reyrull mengakhiri yang masanya telah habis
Elloyr menyinari dunia, menyembuhkan yang terluka
Andallar menyuburkan tanah, menghidupkan tanaman, membuat para makhluk saling mencinta
Dan begitulah keseimbangan dunia ini tercipta

Para penduduk Altiria juga selalu mengucapkan "May Carathian protects you" pada orang lain, ini adalah ekuivalen dari "May the force be with you" dari star wars. Sebenarnya ini cuma secuil dari sistem mitologi dewa-dewi di Altiria, aku mungkin akan menambahkan dewa-dewi lain untuk disembah, tapi lima dewa utama adalah mereka ini. Aku juga akan membuat mitologi dan kisah hubungan antar dewa nantinya (juga aturan dan larangan menurut agama mereka). 

Aku jadi tertarik membuat agama dalam game setelah memainkan dragon age 2, di mana mereka punya agama (virtual) yang rumit dan banyak disinggung dalam game (ucapan "Maker's breath" atau "Praise the Maker"), bahkan sampai memengaruhi bagaimana mereka melihat orang lain (templar yang membenci penyihir, misalnya). 

Karena Altiria adalah kerajaan yang gemar berperang, teknologi perang mereka juga yang paling maju diantara kerajaan tetangga mereka, ini juga yang membuat pasukan tempur mereka amat kuat. Mereka sudah punya catapult, trebuchet, dan battering ram. Hanya saja mereka belum bisa menemukan bubuk mesiu. Soalnya kalau mereka punya bubuk mesiu, mereka menang jauh atas kedua kerajaan lainnya.

Satu lagi soal Altiria, selain dihuni oleh manusia, kerajaan ini juga dihuni oleh para orc. Mereka menempati hutan di barat dan utara Altiria, ini sebabnya nggak ada kota manusia di sebelah barat, karena pasti akan diserang orc. Para orc ini biasanya menyerang caravan pedagang. Altiria sebenarnya sudah berusaha membunuh para orc, tapi fisik para orc ini jauh lebih kuat dari tentara Altiria, sehingga menyulitkan mereka.

Selain orc, para penduduk Highview juga beberapa kali mengklaim melihat naga terbang di atas kota mereka. Ini membuat orang-orang yakin bahwa naga itu membuat sarang di pegunungan panjang yang membentang (aku belum punya nama buat pegunungan itu),  hanya saja belum ada yang pernah melihat sarangnya. Sampai saat ini naga itu nggak pernah menyerang pemukiman manusia, jadi nggak ada yang berusaha membunuh naga. Kalaupun ada yang mencoba melakukannya, mereka nggak pernah kembali.

Senin, 09 Desember 2013

Animasi & Spriter

Halo, kembali lagi di blog post soal pengembangan game RPGku. Kali ini aku mulai membuat battle system, yang kurencanakan akan berupa action based. Tapi sebelum itu aku perlu membuat animasi masing-masing karakternya, jadi seminggu kemarin aku lebih banyak berkutat dengan Spriter.

pembuatan animasi di Spriter
Awalnya aku kira membuat animasi akan agak susah, ternyata memang susah (walaupun nggak sesusah yang aku kira). Untuk membuat animasi ini aku membuat gambar anggota tubuh dalam beberapa bagian (kepala, badan, tangan & kaki) sebelum kemudian memasang bone & menganimasikannya. Awalnya aku agak bingung bagaimana membuat animasi, bagaimana tubuh karakterku bergerak, dsb. Tapi sesudah mencoba-coba selama beberapa menit, aku akhirnya bisa membuat animasi yang cukup bagus.

Berikutnya adalah soal memakai animasi Spriter ini di Construct 2. Awalnya aku bisa me-load file Spriter dan mengganti-ganti animasi untuk satu karakter, tapi entah kenapa aku nggak bisa mengganti ke karakter yang lain dari satu file Spriter yang sama. Animasinya memang berganti, tapi sprite-nya tetap sprite Argus, bukan Tiara. Aku sudah melihat-lihat forum Construct 2, tapi kelihatannya ini karena Spriter masih dalam tahap beta. Solusi yang aku pakai adalah menganimasikan karakter dalam file Spriter masing-masing, jadi aku nggak perlu susah-susah mengganti entity dari Construct 2. Nantinya pasti hal ini akan diperbaiki di update berikutnya dari Spriter, tapi untuk sementara ini saja cukup.

Untuk sekarang aku baru menganimasikan Argus dan Tiara. Tadinya aku ingin menganimasikan semua karakter lainnya dulu sebelum berlanjut ke animasi musuh, tapi karena prioritas utamanya adalah membuat battle system sampai cukup bagus, jadi aku ingin berlanjut ke membuat musuh & animasinya. Tapi sebelum membuat musuh paling tidak aku harus membuat setting dunia dan konsep kasar ceritanya, supaya aku tahu musuh yang harus aku buat (mungkin ada bandit, serigala, beruang, atau yang lainnya tergantung setting), jadi mungkin minggu ini aku akan mengurus hal itu.

Senin, 02 Desember 2013

RPG update: pixeling the art

Halo semua, selamat datang di blog-ku lagi. Sesudah sebelumnya aku menulis update game ini dari segi programming, kali ini giliran bagian art dari game-ku. Karena game ini aku mengerjakannya sendirian, ini berarti bagian art (dan nantinya juga mungkin musik) akan aku kerjakan juga. Jadi untuk sementara, inilah sprite2 dari para karakter penting:

Argus Soruva

Tiara Roldyn

Sophie Roldyn

Anita Nurrein

Valerie

Rudolf Vaughan

Senin, 25 November 2013

Progress update: RPG project

Halo semua, sudah seminggu sejak aku menulis post tentang proyek baruku, dan aku berencana buat menulis progress mingguan soal game ini. Untuk minggu terakhir ini aku senang karena aku akhirnya berhasil menyelesaikan barrack mode dari game-ku. Tadinya aku kira barrack mode ini adalah sesuatu yang sederhana dan bisa selesai dalam beberapa hari, tapi ternyata aku butuh sekitar dua minggu untuk menyelesaikannya.

Barrack mode ini sendiri adalah semacam "tempat netral" bagi karakter dalam game ketika nggak sedang melakukan misi atau petualangan. Aku namakan barrack mode karena di kerangka cerita yang aku bikin, ceritanya memang berkisah seputar mercenary yang disewa untuk berperang melawan kerajaan tetangga (iya, ceritanya biasa aja. Perang. Bukan menyelamatkan dunia dari iblis jahat yang berusaha menghancurkan dunia.). Dalam barrack mode ini pemain bisa melakukan beberapa hal:

  • Membeli barang / equipment yang diperlukan. Ceritanya barang-barang ini dijual oleh pedagang yang membuka toko di barrack.
  • Leveling. Jadi sewaktu pemain sudah naik level, pemain bisa menaikkan atribut di sini.
  • Memilih quest, bisa main quest atau juga side quest. Karena sudah hal biasa kalau barak mercenary punya semacam quest board
  • Mengatur inventory, nantinya juga mungkin bisa memasang senjata & equipment tapi aku masih belum yakin soal ini.
Sewaktu membuat bagian shop dari barrack mode, aku juga harus membuat daftar item apa saja yang ada dalam game dan item yang bisa dibeli dari dalam toko. Pemain bisa membeli item penyembuhan dan equipment / senjata di toko, tapi nggak semua item & equipment bisa dibeli di toko, kebanyakan item dan senjata yang lebih kuat hanya bisa didapatkan dari side quest. Ini kubuat sebagai reward dari pemain karena sudah menjalankan side quest yang kuberikan. Dan juga aku rasa ini menambahkan unsur realistis dari game, karena aku nggak pernah bisa memberi penjelasan kenapa pedagang di barrack bisa punya senjata terkuat dalam game (siapa supplier pedagang itu?)

Senin, 18 November 2013

Announcement: new project!

Hi para pembaca blog-ku. Sudah lama banget aku nggak nulis, maaf. Tapi sekarang aku punya sesuatu yang bagus untuk dijadikan blog post: proyek game baru! Proyek game ini rencananya akan lebih besar dari game-game yang pernah kukerjakan sebelumnya, dan ini akan menjadi ujian bagi skill yang kumiliki, sejauh apa kemampuanku sebenarnya. Biasanya aku membuat game kecil-kecilan untuk onegameamonth.com tapi sekarang aku ingin menggunakan ilmu yang kudapat dari sana untuk membuat satu game besar yang membuatku bangga.

Gamenya sendiri akan berupa action RPG di tengah dunia fantasi. Akan ada banyak fitur dalam game ini seperti:

  • Main quest (tentu saja)
  • Side quest (akan ada banyak)
  • Defending mode (ala tower defense)
  • War mode (masih rencana, akan mirip real time strategy)
  • Cerita yang epik
  • Banyak item yang bisa dibuat dalam crafting / cooking
  • Pemain juga akan bisa merekrut NPC (tertentu) untuk bergabung dalam defending mode & war mode
Kira-kira begitulah desain awal game baru ini. Aku membuatnya dengan Construct 2, tool yang aku sudah terbiasa menggunakannya. Untuk sementara ada beberapa screenshot awal:




Rabu, 06 November 2013

Autobo di Mozilla Marketplace

Sebetulnya kemarin aku ingin ngeblog soal ini tapi aku lupa *dihajar*. Minggu lalu kiriman geeksphone Mozilla Keon sudah tiba (foto-foto menyusul), dan sesuai kesepakatanku dengan Mozilla, aku harus porting Autobo ke firefox OS. Awalnya agak susah karena layarnya yang kecil (sekitar 3.5 inci) jadi aku harus mengubah ukuran tombol-tombol HUD di game supaya jelas terlihat dan bisa gampang disentuh. Selain itu pada awalnya game ini berjalan lambat banget, sehingga aku harus mikir bagaimana cara membuat game berjalan dengan lancar.

Tapi akhirnya game ini selesai aku porting juga, dan sesudah aku export untuk Mozilla marketplace, aku mengalami masalah kecil karena pertama kalinya aku upload ke Mozilla marketplace game ini ditolak. Setelah ngobrol sedikit dengan bagian app publisher, ternyata ketahuan kalau aku nggak menaruh webapp manifest di tempat yang benar di .zip file. Sesudah upload berhasil aku cuma perlu menunggu beberapa hari sampai game ini akhirnya disetujui dan tersedia di Mozilla marketplace! Kalau kamu kebetulan punya firefox OS device, kamu bisa pergi ke sini: https://marketplace.firefox.com/app/autobo/ untuk download game-nya, gratis kok.

Mungkin aku juga akan publish beberapa game kecil lagi ke firefox OS ini. Aku belum bisa bilang apakah pasar firefox OS menjanjikan atau nggak karena aku belum publish aplikasi berbayar (autobo bahkan nggak ada iklan) jadi itu mungkin akan jadi bahan blog post untuk lain kali. Sampai ketemu di blog post berikutnya.


Rabu, 30 Oktober 2013

Game art: #pixelshit

Halo semuanya, sudah lama juga aku nggak nulis post baru di blog ini. Belakangan ini aku agak sibuk dengan contract work, tapi sekarang contract work itu sudah selesai dan aku bisa ngeblog lagi (hore!!). Karena akhir-akhir ini aku nggak ada update soal tutorial atau hal lain soal game design aku akan nyoba menulis tentang satu hal yang baru: game art.

Selama ini aku nggak pernah menulis soal game art atau hal lain berkaitan dengan grafik dalam game, karena aku memang bukan orang yang ahli soal itu. Tapi kelihatannya di jagat internet yang luas ini (atau lebih tepatnya dunia twitter), orang-orang indie dev yang payah dalam art bukan cuma aku aja, ada banyak banget. Dan salah seorang mengusulkan sebuah acara mingguan di mana semua dev yang payah dalam hal artistik melatih diri mereka membuat sebuah pixel art dan di-tweet dengan hashtag #pixelshit. Untuk acara pertama ini ada 3 syarat untuk ikutan #pixelshit ini:

  1. Gambar beresolusi 16x16 atau 32x32
  2. Gambar karakter
  3. Jumlah maksimal warna hanya boleh 8 saja
selain itu syarat utamanya sendiri adalah harus payah dalam menggambar, karena itu orang-orang akan mesubmit gambarnya dalam bentuk pixel art (karena.... yah pixel art itu gampang dibuat oleh orang yang nggak bisa gambar).

Aku sendiri membuat dua gambar untuk acara pertama ini, yang pertama dengan resolusi 32x32


dan yang kedua dengan resolusi 16x16


keduanya sebenarnya mirip, hanya beda warna rambut saja.

Buatku acara ini adalah ajang latihan yang bagus, biarpun nggak ada hadiah tapi aku dapat kemampuan baru yang bisa berguna dalam perjalanan gamedev ini. Entah untuk acara berikutnya masih menggunakan aturan yang sama atau nggak, tapi aku benar-benar excited untuk ikut lagi, siapa tahu game-ku berikutnya akan berupa pixel art untuk grafisnya?

Kamis, 10 Oktober 2013

Game design: Game choices

Sudah lama juga aku nggak nulis post baru di blogku ini. Supaya nggak dikira blog ini sudah mati, aku akan nulis sesuatu. Bukan di topik RPG tutorial, tapi game design, kali ini aku akan membahas tentang pilihan-pilihan dalam game.

Game adalah sebuah media hiburan yang berbeda dengan media hiburan lain (musik, dan film) karena game menawarkan sebuah interaktivitas dengan penikmatnya (gamer). Game adalah satu-satunya media hiburan yang tidak dinikmati secara pasif, tetapi aktif melalui tindakan-tindakan yang bisa dilakukan pemain dalam game. Dalam melakukan tindakan-tindakan ini, pemain beberapa kali akan harus melakukan pilihan-pilihan yang menentukan hasil akhirnya dalam game. Sebelum aku menulis lebih jauh aku akan mendefinisikan satu hal dengan jelas: apa itu pilihan? Pilihan adalah dua atau lebih tindakan yang disediakan oleh game kepada pemain, tapi pemain hanya bisa memilih satu tindakan saja pada satu waktu, atau lebih dari satu tindakan tapi tetap di bawah jumlah tindakan yang bisa dipilih.

Secara garis besar pilihan-pilihan ini bisa hadir dalam dua kategori: gameplay dan cerita. Pilihan-pilihan dalam gameplay bisa dilihat contohnya di game fighting. Pilihan-pilihan ini hadir dalam bentuk moves list, semua orang yang memainkan game ini punya pilihan yang sama untuk melakukan jurus yang dia inginkan, tapi hanya bisa melakukan satu jurus dalam satu waktu. Jurus apa yang dipilih seorang gamer tergantung dari jurus-jurus apa saja yang dia ingat dan apakah kondisi saat itu memungkinkan untuk melakukan jurus tersebut. Pilihan dalam cerita biasa kita lihat dalam RPG, tapi bisa saja hadir dalam game lain yang mengandalkan story. Pilihan ini hadir dalam pilihan dialog yang muncul sewaktu kita berinteraksi dengan NPC, selain itu pilihan ini juga bisa hadir dalam bentuk subquest yang bisa diambil pemain disamping main quest.

Sabtu, 14 September 2013

Construct 2 RPG tutorial part 7: implementing the AI

Selamat datang di bagian ke 7 dari seri tutorial membuat RPG di Construct 2. Kali ini aku akan mencoba mengimplementasikan AI seperti yang sudah aku desain sebelumnya. Aku akan mencoba membuatnya dalam 1 blog post, tapi kalau nggak bisa, berarti blog post ini cuma mencakup AI penyerang fisik.

Pertama-tama aku ingin memastikan bahwa semua petarung di battle scene tahu tentang musuh-musuhnya, karena AI kedua tipe musuh juga akan bergantung dari data ini. Awalnya aku berencana memakai family buat keperluan ini. Tapi ternyata aku nggak bisa menambah / mengurangi member family ini lewat event, padahal buat kebutuhan ini aku harus bisa mengganti member family secara dinamis lewat event (karena tiap battle, musuhnya beda-beda, dan party member pun bisa diganti secara bebas oleh pemain). Jadi untuk mengatasi ini, aku akan membuat array yang berisi data petarung dari party member dan juga dari musuh, array ini bernama enemyPartyArr dan playerPartyArr. Kedua array ini hanya berisi maksimal 4 elemen, karena kita memang membatasi jumlah petarung di sisi player dan musuh dalam battle. Ini juga mengubah fungsi family Friendly, dulunya family ini berisi semua party member yang bertarung, tapi sekarang mungkin lebih cocok berisi semua character dalam game yang bisa bergabung bersama pemain.

Aku mengubah apa yang terjadi di event on start of layout, sekarang kita memberi nama pada battleName musuh dan juga mengisi kedua array petarung, saat ini isinya hanya ada satu tapi nanti isinya akan berbeda-beda.

Kemudian aku membuat instance variable enemySelection di kedua family. Untuk memudahkan kita untuk membedakan nantinya, di family Enemies akan aku namai playerSelection sedangkan di family Friendly aku namai enemySelection. Keduanya memiliki nilai awal "closest". Di bagian bawah, aku membuat function baru bernama "enemySelTarget" yang akan digunakan oleh musuh untuk mencari target pemain. Fungsi ini menerima dua parameter, yaitu nama musuh yang akan mengganti target, dan AI pemilihan target si musuh.

Minggu, 25 Agustus 2013

My published Game: Autobo

Di hari yang cerah (dan panas) ini, aku ingin menulis tentang satu hal bahagia: Game bikinanku sudah dirilis di Blackberry App World! Namanya Autobo, bukan typo dari Autobot tapi memang namanya Autobo. Kenapa dinamai Autobo? karena menurutku nama Autobot sudah umum dan game-ku nggak bisa tampil menonjol kalau nggak punya nama yang unique, karena itu aku sengaja menghilangkan t di akhir namanya, dan jadilah Autobo!

Game ini adalah game stratgi bertipe tower offense, yang awalnya aku buat untuk challenge 7drts, atau membuat RTS dalam tujuh hari. Gameplay yang kubuat sudah selesai dalam satu minggu itu, tapi grafisnya belum cukup polished buat aku masukin sebagai 7drts entry, jadi waktu itu aku sengaja nggak memasukkan ini ke dalam kompetisi 7drts, tapi akan aku buat game sendiri.

Screenshot:

Icon


Jumat, 16 Agustus 2013

Construct 2 RPG tutorial: Mages AI

Baiklah, kita ketemu lagi di blog post yang membahas soal cara membuat RPG. Kali ini aku akan melanjutkan bahasan sebelumnya soal AI, yaitu bagaimana membuat AI penyihir. Sebenarnya membuat AI penyihir ini nggak jauh beda dengan membuat AI untuk petarung, hanya ada sedikit perubahan saja. Ada dua jenis penyihir, yaitu penyihir ofensif / tipe penyerang, dan penyihir suportif, keduanya punya logika sendiri-sendiri.

Pertama-tama kita akan bahas AI dari penyihir ofensif, logikanya adalah seperti ini:
  1. Pilih target
  2. Kalau SP mencukupi untuk men-cast paling nggak satu sihir, pilih sihir
  3. Masuk casting time
  4. Kalau diserang musuh casting time berakhir, sihir gagal di-cast
  5. Kalau bisa casting sampai casting time berakhir, keluarkan sihir dan kurangi current SP
  6. Kalau target masih hidup, kembali ke poin 2
  7. Kalau target sudah mati, kembali ke poin 1
  8. Kalau SP nggak mencukupi, dekati musuh, lalu serang secara fisik.
Aku perlu menambahkan poin terakhir soal kemungkinan kalau ternyata si penyihir nggak punya cukup SP buat mengeluarkan sihir, kalau nggak begitu bisa-bisa penyihir kita cuma berdiri bengong di tengah battle screen. Logika pemilihan target akan kubuat sama seperti penyerang fisik, yaitu menggunakan instance variable enemySelection dan targetName, kalau kamu lupa untuk apa kedua instance variable ini, bisa lihat di blog post sebelumnya.

Berikutnya, penyihir akan memilih sihir apa yang dipakai, untuk sementara aku berencana membuatnya memilih acak, karena aku nggak tahu bagaimana cara membuat AI memilih sihir yang bagus. Sesudah memilih, penyihir akan masuk casting time. Selama casting time ini penyihir nggak bisa berjalan atau melakukan hal yang lain, kalau penyihir dikendalikan oleh pemain maka kita harus mengganti nilai variable state yang sudah aku jelaskan. Semua sihir punya instance variable castTime yang hitungannya dalam detik, nanti kita akan mengurusi variable ini sewaktu kita mulai men-coding sistem penyihir ini. Sepertinya sisa poin-poinnya sudah cukup jelas dan nggak perlu aku jelaskan, kalau belum jelas silahkan tinggalkan komentar.

Kamis, 15 Agustus 2013

Construct 2 RPG tutorial 5: making AI

Jadi sebelumnya aku sudah mulai bikin AI sederhana (sekali) untuk musuh, walaupun hasil akhirnya adalah musuh baru mengikuti pemain saja. Sebelum aku membuat AI dalam bentuk code yang lebih kompleks, aku ingin merancangnya terlebih dulu. Oh iya, walaupun contoh kasusnya untuk musuh, AI ini nantinya bukan cuma untuk musuh saja, tapi juga party member lain dalam kelompok pemain. Dan juga, AI untuk boss juga akan kusamakan dengan AI untuk musuh biasa, hanya saja nilai parameternya kubuat lebih susah.

Baik musuh maupun anggota party member ada yang berperan sebagai penyerang jarak dekat dan penyerang jarak jauh, ada pula penyerang fisik dan penyerang sihir. Jadi dibagi berdasarkan tipenya, musuh dan party member bisa dikategorikan seperti ini:
  • Penyerang fisik jarak dekat
  • Penyerang fisik jarak jauh
  • Penyerang sihir jarak jauh
  • Penyembuh / support
Aku nggak menuliskan penyerang sihir jarak dekat, karena aku menganggap semua penyerang sihir adalah penyerang jarak jauh, lagipula kalau penyerang sihir menyerang dari jarak dekat dia bisa diserang duluan sebelum sempat mengeluarkan sihirnya. Masing-masing penyerang fisik akan punya radius serangan yang jaraknya beda antara jarak dekat dan jarak jauh, penyerang fisik akan mendekat sampai musuh masuk dalam radius serangan sebelum akhirnya menyerang. Penyerang sihir nggak perlu mendekat buat menyerang musuh, jarak jangkau sihirnya adalah seluruh battle screen, jadi mereka bisa menyerang musuh tanpa peduli jarak. Bedanya adalah sihir perlu casting time untuk bisa dirapalkan dan mereka bisa diserang sewaktu ini.

Rabu, 14 Agustus 2013

Construct 2 RPG tutorial 4

Di blog post kali ini aku masih akan membahas tentang battle system. Kalau kalian perhatikan, sewaktu pemain menekan tombol K berulang-ulang (atau tombol serang di gamepad), karakter pemain akan terus-menerus menyerang tanpa henti. Ini akan aku halangi, karena menyerang tanpa henti ini bisa membuat pemain terus menerus menyerang tanpa strategi (atau disebut button mashing). Caranya adalah dengan menambahkan sebuah instance variable attackCount (Number) ke family Friendly, karena aku ingin pembatasan ini juga berpengaruh ke anggota party lainnya nanti. Kemudian di tempat fungsi charaAttacks dipanggil (waktu tombol K di keyboard dan tombol A di gamepad ditekan) tambahkan 1 ke attackCount karakter yang dikendalikan pemain. Kenapa aku tambahkan attackCount di sini dan bukan dalam fungsi charaAttacks? Karena kalau ditambahkan dalam charaAttacks nanti instance variable milik character akan bertambah sewaktu party member yang lain menyerang, atau kita harus mencari cara untuk bisa tahu bahwa yang menyerang adalah karakter dan bukan party member lain. Karena kedua implikasi itu merepotkan, aku memilih untuk menambahkan khusus instance variable character di tempat yang aku yakin pasti karakter yang menyerang. Nantinya kita harus melakukan yang sama pada party member yang lain.



Sesudah itu, tambahkan Timer behaviour ke dalam family Friendly, ini untuk memberi jeda sesudah mereka selesai menyerang sesuai dengan attackCount. Jeda sesudah menyerang ini harus diberi nama, karena aku kesusahan memberi nama, jeda ini aku namai "rest", yang berarti beristirahat sejenak untuk mengatur nafas sesudah menyerang berturut-turut. Untuk memudahkan, aku buat sebuah constant variable berisi "rest". Sekarang, berikan instance variable bernama state ke family Friendly, state ini yang nanti akan aku isi dengan "rest" untuk menandakan karakter ini baru saja menyerang berurutan. Nantinya, variable ini bisa diisi dengan nilai lain seperti: poisoned, stunned, silenced, atau semacamnya.

Rabu, 31 Juli 2013

Construct 2 RPG tutorial: The battle continues...

Sesudah kita membahas tentang battle design di bagian kedua, di bagian ketiga ini aku akan mulai mengimplementasikan apa yang kita desain sebelumnya. Di sini aku mulai memikirkan tentang implementasi stats karakter yang kita desain, dan juga tentang pemakaian equipment / senjata. Pertama-tama mari kita lihat screenshot hasil akhir dari tutorial ini:


Pertama-tama aku akan menambahkan beberapa family baru, family ini adalah fitur construct 2 yang cuma ada di versi berbayar (punyaku versi personal)

Aku akan menjelaskan apa arti dari masing-masing family:
- Enemies: berisi daftar-daftar musuh dalam game
- enemySprites: sprites dari musuh, namanya sama dengan nama musuh
- Friendly: berisi karakter pemain dan party member lain yang bergabung dalam battle. Objek-objek yang ada di family ini nggak bisa dilukai dengan serangan pemain tapi bisa disembuhkan dengan item atau skill penyembuh pemain
- FriendlyAttackFX: efek serangan yang dikeluarkan anggota family Friendly, efek serangan ini yang nanti dites collision detection dengan musuh
- Weapons: daftar senjata yang ada dalam game. Senjata yang ada di sini nggak harus dipakai oleh pemain atau party member yang lain, ini cuma menjadi database senjata.

Minggu, 28 Juli 2013

Game Design: What is fun?

Oke, sudah agak lama nggak nulis blog post kali ini aku mau nulis sesuatu soal salah satu tujuan game dibuat, yaitu memberikan rasa senang kepada pemain. Apa itu fun? Fun adalah perasaan kenikmatan yang kita rasakan ketika kita sedang melakukan aktifitas tertentu, aktifitas ini bisa macam-macam dan dua orang yang melakukan aktifitas yang sama bisa saja merasakan rasa fun yang berbeda. Aktifitas ini bisa berupa menonton film, membaca buku, jalan-jalan, dan berbagai macam. Tapi kali ini, kita akan berbicara soal fun dalam game.

Aku mengelompokkan fun dalam dua macam: Entertaining Fun, dan Challenging Fun. Entertaining fun adalah perasaan senang sewaktu kita merasa rileks dan terhibur, kita tidak perlu bersusah payah untuk mendapatkan perasaan senang macam ini. Game yang memberikan perasaan ini adalah casual game yang sekarang banyak hadir di smartphones. Game tipe ini tidak memberikan banyak tantangan, tantangan yang ada hanyalah tantangan sederhana yang bisa dilalui pemain, baru kemudian tantangan itu diberikan variasi. Contoh yang paling gampang adalah angry birds, tantangan yang diberikan hanyalah satu: membunuh para babi dengan burung yang disediakan. Tantangan ini kemudian divariasikan dengan memberikan beraneka macam burung dengan kemampuan berbeda untuk dilempar, atau diberi penghalang lain dalam satu level (batu sebagai pengganti kayu misalnya). Game semacam ini diberikan untuk pemain yang tidak suka tantangan, dan lebih menginginkan rasa fun yang langsung bisa mereka dapatkan saat itu juga.

Because pigs are too angry birds


Challenging fun adalah kebalikan dari Entertaining fun. Challenging fun tidak membuat pemain merasa senang sewaktu sedang memainkan gameplay dari game, tapi semakin menekan pemain (dalam batas-batas game rules) untuk mengeluarkan kemampuan terbaik mereka untuk mengalahkan tantangan dalam game. Perasaan senang itu baru akan diterima pemain ketika sudah menyelesaikan tantangan itu sendiri. Game yang menggunakan tipe fun seperti ini biasanya adalah game-game yang dirilis di PC, baik itu oleh developer besar atau developer indie. Game ini dibuat untuk gamers yang memang menginginkan tantangan, dan menguji kemampuan mereka dalam mengalahkan tantangan itu.

This is just the easy mode, baby

Jadi ini juga menjadi salah satu bahan pemikiranmu sewaktu kamu membuat game, tipe fun seperti apa yang ingin kamu berikan pada gamers? Sesudah itu terjawab, kamu bisa menentukan challenge & reward yang sesuai dengan tipe gamers yang ingin kamu tuju. Sampai ketemu di blog post berikutnya.

Rabu, 17 Juli 2013

Construct 2 RPG tutorial: battle design!

Baik, sekarang kita memasuki bagian kedua dari tutorial membuat RPG dengan Construct 2!  Kali ini aku ingin melanjutkan membuat battle system, tapi sebelum itu aku harus menyentuh ke desain pertarungannya dulu, supaya kita punya dasar ketika coding nanti. Jadi untuk sekarang ini aku akan menulis soal game design dari sisi pertarungan.

Yang pertama-tama akan aku bikin adalah stats. Entah stats ini singkatan dari apa, tapi dalam RPG sudah sering kita temui stats, baik stats musuh ataupun stats pemain. Stats yang aku bicarakan ini beda dengan status dalam artian status effect, karena status effect adalah efek buff (baik) atau debugg (buruk) yang mengenai pemain / monster. Stats-stats ini adalah sebagai berikut:

  • HP: Health point. Total health, kalau pemain / monster disembuhkan, nilai currentHP ngga bisa melewati ini.
  • CurrentHP: Health saat ini, kalau turun sampai 0 maka pemain / monster mati.
  • SP: Spirit point. Dipakai untuk menggunakan skill / sihir, nilai currentSP ngga bisa melewati ini.
  • CurrentSP: Spirit point saat ini, berkurang tiap kali memakai skill / sihir. Kalau jumlahnya kurang dari yang dibutuhkan untuk menggunakan skill / sihir, maka skill / sihir itu ngga terpakai.
  • ATK: Attack. Nilai serangan karakter, digunakan untuk menentukan besaran kekuatan serangan fisik / skill bersama dengan kekuatan senjata.
  • DEF: Defense. Nilai pertahanan karakter, dipakai untuk menentukan pertahanan terhadap serangan fisik yang juga dihitung bersama dengan pertahanan armor.
  • ACC: Accuracy. Kemungkinan serangan kena atau nggak. Serangan jarak dekat, jarak jauh, dan sihir /skill dihitung pakai stats ini.
  • EVA: Evasion. Kemungkinan menghindari serangan.
  • INT: Intelligence: Tingkat kecerdasan, dipakai untuk menentukan kekuatan serangan sihir
  • RES: Resistance. Ketahanan terhadap serangan sihir.
  • LUK: Luck. Menentukan tingkat critical dan mungkin hal-hal lain yang bergantung pada keberuntungan (item drop misalnya).

Baik karakter pemain ataupun monster memiliki stats yang sama, yang membedakan adalah nilainya. Monster akan memiliki lebih banyak HP dibandingkan dengan karakter pemain, karena nantinya monster nggak akan menyerang seagresif pemain, dan kebanyakan monster nggak punya skill / sihir seperti pemain (kecuali tentunya boss).

Berikutnya adalah stats yang diberikan dari senjata. Sudah umum kita temui dalam RPG, semua senjata punya atribut seperti ATK dan semacamnya, jadi senjata dalam game ini pun juga seperti itu. Di bawah ini adalah stats dari senjata:


  • MinAtk: Kekuatan serang terendah senjata ini
  • MaxAtk: kekuatan serang tertinggi senjata ini.
  • StatsMod: Modifier dari stats tertentu dari pengguna senjata, kalau ada. Stats ini boleh kosong.
  • Elemen: Elemen senjata, boleh kosong.

MinATK dan MaxAtk adalah bonus serangan yang didapat karakter dari senjata, nantinya sewaktu menyerang karakter akan mendapat bonus ATK yang berkisar antara MinAtk dan MaxAtk, sehingga tiap serangan akan menghasilkan damage yang bervariasi seperti RPG pada umumnya. StatsMod adalah tambahan stats tertentu yang didapat karakter sewaktu sedang meng-equip senjata ini. Nggak semua senjata punya StatsMod jadi boleh kosong. Contoh dari StatsMod ini adalah senjata yang punya kekuatan spiritual sehingga meningkatkan SP pemain yang memakainya. Kemudian elemen adalah elemen senjata, ini nggak perlu dijelaskan pasti sudah jelas, elemen ini bisa saja dimiliki senjata sejak awal, atau ditambahkan dari proses crafting. Ini masih belum seluruhnya dari atribut senjata, masih ada yang belum aku bahas seperti nama senjata, definisi, harga beli, dan harga jual. Tapi di sini aku lebih fokus ke stats senjata dalam battle, jadi ini aja cukup.

Kamis, 11 Juli 2013

Game design: Game rules

Apa sih itu game rules? Kita pasti tahu apa itu game rules, karena itu dipaparkan dalam game selama kita memainkan game, cuma mungkin saja kita yang nggak sadar kalau ada peraturan khusus dalam game. Sewaktu kita memainkan game kita selalu mengikuti peraturan-peraturan khusus yang sudah ditetapkan oleh game designer.Untuk menjelaskan soal game rules ini, aku akan mengambil contoh dari game yang sudah terkenal: Mario.

Peraturan-peraturan dalam game ini kira-kira seperti ini:
1. Kalau menyentuh musuh dari samping, Mario akan mati. (atau kalau  sudah memakan jamur, tubuhnya akan kembali kecil)
2. Kalau menyentuh musuh dari atas (menginjak), musuhnya mario akan mati
3. Kalau jatuh dalam lubang, Mario akan langsung mati
4. Kotak batu yang disundul akan hancur, atau mengeluarkan koin atau jamur atau bunga.
5. Lompatan Mario sangat tinggi kalau dibandingkan dengan tinggi badannya. Bisa dibilang ini adalah kekuatan supernya Mario (lol)

Sebenarnya ini bisa dilanjutkan lagi, tapi untuk sekarang ini, aku ambil lima saja contohnya. Gabungan dari aturan-aturan inilah yang nantinya membantu membentuk gameplay dari game.

Minggu, 07 Juli 2013

Construct 2 RPG tutorial: the beginning

Oke, jadi sekarang aku berpikiran untuk membuat tutorial RPG dengan Construct 2, karena Construct 2 ini adalah tool yang mudah digunakan untuk membuat game apapun juga, aku jadi ingin mencoba membikin RPG dengan tool ini. Kenapa RPG? Simple aja, aku ingin buat RPG, dan aku yakin banyak yang juga ingin. Aku nggak tau seberapa rutin aku menulis tutorial ini, tapi aku usahakan akan aku teruskan sampai jadi. Oh iya, tutorial ini berasumsi pembacanya sudah familiar dengan cara memakai Construct 2, jadi cara-cara seperti membuat event / layer / object baru ngga aku tulis di sini, sudah ada banyak tutorial soal itu di website scirra.

Pertama, kita akan membuat game design sederhana dari RPG ini.

Judul: My RPG Project (diganti nanti)
Platform: PC, Mac, Linux
Pemain: 1 orang
Battle system: action-based dengan random battle. Pemain akan berjalan-jalan di map/dungeon lalu mendadak akan bertemu musuh dan pindah ke layar battle. Pertarungan akan mirip pertarungan di Tales of Destiny.
Kondisi menang: Pemain mengalahkan boss terakhir di akhir game.
Kondisi kalah: pemain kalah dari pertarungan, kecuali yang memang dibuat supaya kalah.
Tantangan: Pertarungan. Baik itu random battle atau boss battle
Reward: Exp points, items, dan uang sesudah mengalahkan monster.

Sementara segitu dulu, nanti akan aku lengkapi. Untuk tutorial pertama ini aku ingin memulai dengan battle system sederhananya. Aku sudah meng-upload file project-nya di dropbox, bisa diambil di sini: https://dl.dropboxusercontent.com/u/22420086/My%20RPG%20project.capx
screenshot awalnya adalah seperti ini:

lumayan bagus kan? Untuk yang ingin tau lebih soal cara pembuatannya, bisa lanjut membaca di bawah.

Kamis, 04 Juli 2013

Game design: Ide game

Udah lama banget ya aku nggak nulis soal game design, salah satu sebabnya karena memang nggak ada ide soal game design yang mau aku tulis. Tapi sekarang, kelihatannya aku ada ide soal ini. Yaitu soal ide game. Dulu aku pernah baca artikel tentang "idea guy", alias orang yang hanya punya ide saja tanpa punya skill yang cukup untuk mewujudkan idenya itu. Dalam sebuah tim, orang ini biasanya hanya aktif di awal pengembangan game saja, karena sesudah mengeluarkan ide, dia nggak punya kesibukan lagi. Itulah definisi "idea guy" dari artikel yang aku baca itu.

Tapi beberapa hari lalu aku berfikir, apa benar hanya itu? Atau mungkin ada yang lebih dari seorang "idea guy". Jujur, aku belum pernah bertemu langsung dengan seorang "idea guy" (capek juga ngasih tanda kutipnya), jadi apakah dia benar-benar ada atau tidak, entahlah. Tapi di sini aku nggak ingin membahas soal si manusia ide itu, tapi lebih ke idenya. Apa sih ide itu? Apakah ide dalam game itu cukup hanya sekedar "Aku mau membuat game seperti Final Fantasy XIII-2", "Aku punya ide bikin game mirip Fable.", "Ayo bikin game seperti Dynasty Warriors tapi settingnya bukan tiga kerajaan."?

Kalau itulah definisi dari sebuah "ide", maka menurut aku definisi itu salah. Itu bukan ide, ide bukanlah sekedar satu kalimat pendek mengatakan kita akan meniru game terkenal apa. Ide game adalah sebuah dokumen lengkap tentang sebuah game, walaupun waktu dibuat pertama kali ide game tidaklah harus langsung lengkap dan "benar".

Oke, mari kita coba buat contohnya. Kita akan mencoba membuat ide game RPG, karena genre ini populer dan sepertinya banyak orang yang mau membuat game genre ini, entah bergaya barat atau timur. Nama RPG untuk sementara adalah "Sword of Legend".

Senin, 01 Juli 2013

Konsol dari Google? should I care?

Oke, kecuali kalian tinggal menyendiri di pulau terpencil yang jauh dari manapun juga, kalian pasti sudah tahu kalau google akan meluncurkan konsol game berbasis android mereka sendiri. Ini sebenarnya baru rumor sih, tapi karena sumber beritanya dari wall street journal, ini lumayan terpercaya. Sebenarnya langkah google ini gak terlalu mengejutkan, mengingat sudah ada banyak konsol android "indie" yang didanai dari kickstarter, bukan hal yang aneh kalau sang pemilik android juga ingin menginjakkan kaki di wilayah perang konsol android. Pertanyaan yang menarik adalah: apa efek dari konsol google ini?

Yang paling terkena dampaknya adalah konsol-konsol "indie" yang lain, karena selain bertanding melawan sesama pabrikan indie, mereka juga harus bertarung melawan google. Apa saja kelebihan konsol google ini nantinya? Pertama-tama adalah adanya Googla Play Services, layanan game integrated dari google ini memberikan achievements, leaderboards, cloud save, terikat ke akun google+, dan yang paling penting adalah adanya real time multiplayer. Ini adalah fitur-fitur yang, sampai sekarang, belum ada di konsol-konsol android lain, dan ini bisa jadi fitur andalan di konsol google. Seandainya saja Google Play Services diluncurkan juga di konsol google, orang-orang bisa main di konsolnya sendiri, men-save permainannya di konsolnya, lalu melanjutkan permainan di konsol teman. Atau mungkin disediakan achievement dalam game, beradu leaderboard dengan teman, atau yang paling seru adalah bermain real time multiplayer bersama teman. Bayangkan saja, bermain balapan dengan teman, bertarung di fighting game bersama teman, atau mungkin saja multiplayer RPG langsung di konsol android. Google Play services akan menjadi lawan yang berat bagi konsol android yang lain.

Minggu, 16 Juni 2013

Konsol baru dari MAD Catz

Kalian semua pasti sudah tahu bahwa pabrikan konsol sekarang ini nggak cuma dipegang sama Nintendo, Microsoft, dan Sony lagi, tapi sudah ada beberapa yang mencoba membuat konsol berbasis android, dua yang lumayan terkenal adalah Ouya dan Shield dari NVidia, satu lagi yang kurang terdengar adalah gamestick. Masing-masing punya kelebihannya masing-masing, biarpun kalau dilihat dari spesifikasi teknisnya, Shield yang menang, tapi itu bukan pilihan buat orang-orang yang low budget. Aku sendiri lebih tertarik sama gamestick karena desain gamepad yang lucu.

Mungkin kalian belum tahu kalau sekarang ada satu lagi konsol android, Project M.O.J.O dari Mad Catz. Mad Catz memang sudah terkenal di dunia gaming sebagai pembuat aksesoris untuk game, jadi sama seperti NVidia mereka sudah punya nama di dunia game sebelum akhirnya mencoba membuat game console sendiri. Daleman dari M.O.J.O ini sendir belum diketahui, tapi Mad Catz janji kalau prosesornya akan sama baik atau bahkan lebih baik dari yang ada di pasaran, untuk saat ini, itu adalah Tegra 4.

Konsol android ini menarik karena dia sudah bisa memainkan game-game android di play store. Beda dengan Ouya yang perlu toko sendiri, dan hasilnya deretan game yang mereka tawarkan gak begitu banyak. Desain konsolnya sendiri cukup kecil, cuma segenggaman tangan, gamepad-nya malah lebih besar dari konsolnya. Bicara soal gamepad, M.O.J.O ini sudah kompatibel dengan gamepad buatan Mad Catz, jadi kalau kamu sudah punya gamepad mad Catz, kamu cuma perlu beli konsolnya aja, gak perlu gamepad.

Rencana rilisnya adalah Q4 2013, harganya masih belum dibeberkan, tapi dengan apa yang ditawarkan, walaupun harganya nanti lebih mahal dari Ouya, menurutku nggak masalah. Karena memang yang didapat lebih dari Ouya.

fotonya M.O.J.O:




Kamis, 13 Juni 2013

A new project: Neverending full moon

Hi. Sudah kangen denganku? Sudah lama sekali aku nggak nulis blog post baru. Kenapa? Karena aku sendiri bingung mau nulis apa. Perkembangan game project peasant nggak semulus yang aku duga, sekarang perkembangan proyek itu tersendat. Aku ingin membuat game untuk one game a month, tapi belum ada ide game apa yang mau aku buat (dan aku agak malas ngelanjutin proyek EXP).

Aku ingin bikin game lagi bersama timku, kali ini lebih sederhana dari project EXP, untuk sementara aku sebut Neverending full moon. Kenapa? Karena memang ada hubungannya dengan bulan purnama. Genrenya adalah sidescrolling shooter, dengan karakter pemain menembak secara otomatis, dan pemain menggerakkan gerakan naik-turunnya karakter.

Ceritanya adalah seorang penyihir werewolf yang benci bulan purnama, menjadi kesal karena di suatu malam, malam hari tidak pernah berakhir. Menyadari ada yang aneh, dia pergi mencari tau alasan kenapa bulan purnama tidak pernah hilang.

Untuk sementara, nikmati konsep karakternya:



Jumat, 31 Mei 2013

Dev Blog: Kemajuan EXP Project

Masih ada yang ingat soal EXP Project? proyek game kecil yang tadinya aku targetkan untuk jadi entri bulan mei untuk one game a month. Tapi sayangnya, proyek game ini berjalan lebih lambat dari yang aku duga, lebih dari satu bulan. Kenapa? karena ternyata membuat sistem pertarungan yang berjalan otomatis itu lebih susah dari yang aku kira. Sebenarnya sih, dari game design yang sudah pernah aku post di sini, membuat implementasinya itu gampang, tapi ada hal yang tidak aku duga sebelumnya. Pertarungan berjalan cepat banget. Melawan satu musuh bisa kurang dari satu detik, begitu musuh muncul, langsung mati terkena serangan bertubi-tubi dari pemain. Padahal aku inginnya sesudah menyerang, ada jeda waktu sedikit baru kemudian menyerang lagi, supaya pertarungan bisa dilihat pemain. Ini sudah aku atasi, tapi kemudian muncul bug lain di penghitungan damage, dan ini makan waktu agak lama buat dibereskan.

Akhirnya, karena kesibukanku yang lain, kelihatannya EXP project ga bisa selesai bulan mei ini. Aku akan menyelesaikannya di bulan depan (semoga). Karena progress-nya sendiri sudah cukup bagus. Skill tree (atau lebih tepat disebut stats tree) sudah aku buat. Fungsionalitasnya juga sudah mulai jalan, kelihatannya tinggal polishing saja sih (semoga), dan mengatasi berbagai bug yang mungkin akan muncul.

Sementara ini, aku ingin melihatkan stats tree yang sudah aku buat untuk karakter. Rencananya nanti setiap naik level, pemain akan dapat poin yang bisa digunakan untuk mengaktifkan satu titik di stats tree.


penjelasan:
Node hijau: HP node
Node merah: ATK node
Node oranye: DEX node
Node silver: DEF node
Node pink: LUK NODE
Node biru muda: HIT node
Node biru tua: EVA node

Masing-masing sisi tree ini akan membentuk build tersendiri bagi karakter. Jadi di tree ini, pemain yang fokus menaikkan ATK dan DEF, akan berakhir dengan EVA dan HIT yang rendah, begitu juga untuk yang lain. HP tersebar di banyak tempat, karena kalau nggak begitu, HP pemain ga bertambah.

Mungkin segitu dulu. Aku harap game ini bisa selesai bulan depan. Sampai ketemu di blog post berikutnya.


Kamis, 30 Mei 2013

Game developers gathering

Wah, sudah lama banget aku ga nulis blog post baru di sini. Rencananya aku mau nulis soal game design, tapi aku belum tau materi apa yang bisa aku tulis. Mungkin karena ga ada waktu, beberapa hari terakhir aku sibuk banget, tapi kelihatannya sekarang sudah mulai ada waktu luang. Aku tadinya mau nulis tentang EXP project, tapi kelihatannya ada satu hal lagi yang lebih asyik untuk ditulis: Game developers Gathering Jakarta!

Apakah itu? Game Developers Gathering adalah acara tahunan di mana semua game developer dari seluruh Indonesia berkumpul di jakarta. Selain kumpul-kumpul, di sini juga ada workshop teknis, game design, dan juga business & marketing. Karena aku dari Surabaya, aku harus pergi naik kereta api buat bisa sampai ke Jakarta. Perjalanannya panjang tapi worth it buat dilakukan.

Jadi apa aja yang aku lakukan di sana? Aku pergi bareng sama temanku, dia bagian marketing di studioku jadi dia masuk ruangan business & marketing dari awal sampai akhir. Karena aku adalah programmer merangkap game designer, aku bolak-balik antara ruang tutorial dan game design. Memang akibatnya jadi ada sesi game design yang pengen aku liat tapi jadi ga sempat aku ikuti, tapi tetap aja, ilmu yang aku dapatkan itu luar biasa. Mungkin dalam waktu dekat ini aku akan sharing sedikit soal apa yang aku dapat di game developers gathering.

Buat yang mau tahu seperti apa sih, suasana gamedev gathering? di bawah ini ada foto-fotonya.

Sesi game design

Senin, 13 Mei 2013

Proyek game baru!

Mungkin aku sudah pernah bilang sebelumnya, mungkin juga belum, tapi aku punya studio gamedev indie sendiri, Mesin Waktu Game Studio (biarpun aku masih bingung apakah akhirannya Studio saja, atau Game Studio). Di studio indie ini aku akan bikin game-game yang lebih besar daripada proyek one game a month, sehingga waktu pengembangannya akan lebih lama. Dan aku sudah memutuskan proyek pertama Mesin Waktu, yang sementara akan disebut Project Peasant. Kenapa namanya Project Peasant? karena ide dasarnya adalah petani melawan monster.

Genre gamenya akan mirip game mobile samurai vs zombies defense, tapi pemain akan menggerakkan petani alih-alih seorang samurai. Sementara baru itu saja sih, desain game ini. Hari ini aku sudah bikin versi prototip dari game-nya sendiri, tapi masih terlalu kecil untuk diperlihatkan pada khalayak, mungkin nanti saja kalau sudah lebih bagus lagi. Sampai ketemu di post berikutnya.

Rabu, 08 Mei 2013

Dev blog: on game design

Sesudah kemarin aku menulis blog post soal sprite, sekarang waktunya aku nulis soal game design. Pertama-tama yang aku lakukan adalah mendefinisikan stats yang dimiliki oleh karakter & musuh, dan juga kegunaannya, dan inilah stats itu:
HP: health points, HP-nya karakter/musuh saat ini. Kalau ini sampai 0, maka karakter/musuh mati
MaxHP: nilai maksimum HP, sewaktu HP disembuhkan nilainya ga boleh melebihi nilai MaxHP
ATK: menentukan kekuatan serangan
DEF: menentukan kekuatan pertahanan karakter/musuh
EVA: penentu kemungkinan menghindar
HIT: menentukan apakah serangannya kena atau tidak
DEX: modifier untuk kemungkinan kena, perhitungan damage, dan giliran serang
LUK: menentukan kemungkinan serangan critical karakter/musuh
EXP: khusus musuh, jumlah experience points yang akan didapatkan karakter

sesudah itu aku langsung memikirkan rumus perhitungan kemungkinan kena serangan dan damage waktu adegan pertarungan. Urutan perhitungannya adalah: kemungkinan kena --> kemungkinan critical --> menghitung damage. Untuk kemungkinan kenanya aku hitung dengan rumus ini:
HIT * [2/3/4] – ((EVA + DEX) * 2)
arti dari [2/3/4] itu akan dirandom salah satu, apakah HIT penyerang akan dikali 2, atau 3, atau 4. Sesudah itu jumlahkan EVA dan DEX penerima serangan lalu dikali 2. Setelah itu hasil perkalian HIT akan dikurangi hasil perhitungan EVA dan DEX, kalau hasilnya lebih dari atau sama dengan 0, maka serangan itu kena, selain itu berarti meleset. Dengan ini ada kemungkinan 2 kali kemungkinan kena, 1 kali kemungkinan meleset (kecuali ada perbedaan stats yang besar, maka akan ada kemungkinan serangan pasti meleset.)

Untuk kemungkinan critical sederhana saja, cuma merandom angka antara 1 sampai 100. Kalau angka hasil randomnya kurang dari atau sama dengan nilai LUK, maka serangan itu critical, dan nantinya nilai damage akan dikali tiga. Jadi nanti akan ada variabel yang menyimpan apakah nanti akan critical atau tidak.

Senin, 06 Mei 2013

Dev blog: Sprites, sprites, & sprites

Hari ini sudah ada cukup perkembangan soal EXP project, terutama dari sisi art. Karena aku gak menemukan art asset yang gratis, cocok dengan game, dan bisa dipakai (legal) jadi dengan terpaksa aku menggambar sendiri. Karena kemampuan menggambarku yang masih amat rendah, jadi mungkin hasilnya gak terlalu bagus. Yang pertama kali aku pikirkan adalah: karakter utamanya seperti apa? Tadinya aku pingin bikin karakter humanoid, tapi karena aku ga bisa menggambar, jadi aku harus membuat karakternya lebih gampang aku buat, tapi tetap menarik. Dan aku pun ingat pada satu karakter yang bisa jadi contoh: Kirby. Karakternya lucu, imut, dan simple. Kelihatannya aku bisa bikin yang seperti itu, dan akhirnya jadilah seperti ini:

Bayu, si ksatria biru

Namanya Bayu. Kenapa Bayu? karena mudah diingat dan diucapkan. Sengaja gak aku bikinkan tangan, soalnya takutnya nanti kesusahan waktu bikin animasi serangan dan lari. Jadi nanti senjatanya akan melayang di samping Bayu, seperti dipegang tangan tak terlihat.Dengan begitu animasi serangannya tinggal memutar senjatanya.

Jumat, 03 Mei 2013

Dev Blog: EXP project

Oke, melanjutkan blog post kemarin, dan sebagai tutorial bikin game juga. aku mau nulis lebih detil soal game yang akan aku ikutkan one game a month bulan mei. Untuk sementara game ini akan disebut: EXP project, karena memang berhubungan dengan experience points. Resolusi game-nya 1280x720, karena aku ingin game ini juga bisa dimainkan di mobile. Untuk sementara, mock up sederhananya adalah seperti ini (sengaja dimiringin)


Jadi game nanti akan terbagi jadi 3 bagian: activity area, stats area, dan leveling area (ga ada nama yang lebih cocok soalnya). Activity area ini tempat di mana karakter pemain ditampilkan bertarung, pertarungan terjadi secara otomatis, pemain ga menggerakkan karakter di sini. Stats area adalah tempatnya stats karakter ditampilkan, HP, attack, defense, hit, evasion, dan mungkin stats lain. Leveling area adalah tempatnya pemain berinteraksi dengan game, nantinya setiap naik level karakter akan mendapatkan semacam stats point, stats point inilah yang akan dipakai di leveling area untuk meningkatkan stats karakter.

Kamis, 02 Mei 2013

Dev blog: Rencana game bulan mei

Oke, untuk bulan mei ini aku berencana buat mengikuti tema bulan ini: grow. Aku gak ingin cuma sekedar bikin game yang mengikuti tema, aku ingin ada unsur RPG dalam game yang aku buat, karena aku memang suka RPG dan aku ingin tantangan one game a month ini jadi ajang latihanku membuat sistem-sistem kecil dalam sebuah RPG sebelum akhirnya membuat RPG lengkap.

Karena itu aku memutuskan untuk membuat game tentang... (wait for it...) experience points. Mungkin bisa disebut sistem EXP atau sistem perkembangan karakter. Jadi dalam game nanti pemain cuma akan menentukan stats apa yang naik sesuai dengan poin-poin yang didapat sewaktu pemain naik level. Battle akan berjalan otomatis, setiap karakter naik level maka HP karakter akan langsung penuh. Tidak ada sistem item di sini, karena kelihatannya akan susah mengimplementasi sistem item management. Tentu saja sistem experience-nya nanti tidak akan sesederhana RPG di android, yang cuma ngeklik tanda panah buat meningkatkan stats, tapi akan lebih kompleks. Seberapa kompleks? Tunggu aja rinciannya di blog post berikutnya nanti.

(hm... apa mungkin sekalian aja aku bikin skill tree ya?)

April RPG released!

Hari ini adalah hari bahagia dalam hidupku, karena akhirnya one game a month untuk bulan april sudah dirilis! Ini memang sudah bulan mei, tapi untuk men-submit game, ada sebuah perpanjangan waktu selama 96 jam sesudah hari terakhir di bulan game-mu itu. Artinya aku masih belum terlambat untuk men-submit one game a month bulan aprilku.

Ada sedikit perubahan, setidaknya aku sudah punya nama untuk game-ku ini. Two defenders. Bukan nama yang mewah atau terlalu bagus, tapi menurutku itu sudah cukup mewakili game-ku ini. Gameplay dari game-ku ini bersifat endless, jadi pemain akan terus melawan monster tanpa henti sampai pemain kalah. Tantangannya adalah pemain harus membunuh monster sebanyak mungkin dan nanti akan beradu jumlah monster yang dibunuh dengan pemain lain lewat leaderboard. Game ini sudah bisa dimainkan di clay.io di link ini: http://twodefenders.clay.io/ (peringatan: mungkin saja ada bug, belum dites intensif!)

Sekalian di blog post ini aku mau minta maaf, aku pernah janji mau ngasih tutorial pembuatan game pake construct 2, tapi sampe sekarang belum aku buatkan, jadi gimana kalau aku kasih tutorial pembuatannya waktu aku membuat one game a month bulan mei saja?

Rabu, 24 April 2013

Update April RPG

Oke, bulan April tinggal seminggu lagi, dan aku mulai merasakan betapa susahnya membuat RPG, karena membikin battle systemnya aja aku kesusahan. Kemarin aku melakukan bug fix ke game ini, karena angka HP tiap karakter aku pisahkan (sebelumnya jadi satu text object), dan entah kenapa game cuma mau menampilkan HP buat satu karakter aja (yang satu lagi cuma keluar angka 0). Sesudah beberapa jam berusaha mencari tau penyelesaiannya, ternyata aku cuma perlu tinggal ngasih nilai ke instance variabel yang ada di masing-masing health bar, dan masalah pun selesai. Kalau tau begitu, sudah aku kasih nilainya sedari awal (dan aku bisa menghemat beberapa jam =__= ).

Well, biarpun waktu tinggal seminggu, tapi aku yakin aku bisa menyelesaikan one game a month ini, karena main gameplay-nya sudah selesai. Aku cuma perlu nyari background, bikin layar title, dan layar gameover. Nantinya akan ada leaderboard atau semacamnya buat adu highscore antar pemain.

Ada satu hal yang aku khawatirkan dari game ini. Untuk menyerang, pemain harus menekan tombol attack dulu, baru kemudian menekan musuh. Aku khawatir pemain ga tau soal ini, dan mereka mengharapkan karakter menyerang musuh cuma dengan menekan tombol attack. Aku juga harus berusaha untuk membuat kontrol ini lebih intuitif.

Kamis, 18 April 2013

One game a month progress

Oke, jadi setelah lama gak ada tulisan update soal entri game yang aku tujukan untuk one game a month, akhirnya sekarang ada blog post soal upgrade ini. Dari sisi tampilan, memang gak ada banyak perubahan, tapi dari sisi "dalam" ada banyak upgrade, terutama bug fix. Gameplay-nya sederhana, serang musuh (di sini, minotaur) sampai musuh mati. Sesudah musuh mati, musuh berikutnya akan datang lagi, tapi dengan salah satu stats yang menjadi lebih tinggi.

Di game ini, karakter pemain dan musuh punya beberapa stats, seperti ini:
- HP
- MaxHP
- Atk
- Def
- Hit
- Eva
nanti setiap musuh muncul lagi, salah satu stats-nya akan jadi lebih kuat, tergantung sudah berapa kali musuh tampil, semakin banyak akan semakin kuat perkaliannya. Tadinya aku ingin ngasih sistem exp/leveling buat musuh, tapi karena aku masih bingung gimana implementasi sistemnya di construct 2, dan karena aku ingin game ini simple, jadi sistem "leveling"nya dibuat sederhana seperti ini.

Sampai saat ini, game ini sudah lumayan bagus, core gameplay sudah terlihat, tapi ada masalah. Game ini ga fun, challenge-nya ga kerasa. Mungkin karena cuma ada 1 tombol attack, jadi gameplay-nya membosankan, cuma klik-klik aja tanpa strategi/pemikiran. Nantinya aku ingin bikin semacam skill buat kedua karakter utama game ini, dengan cara sedemikian rupa sehingga bisa membuat tantangan bagi pemain.

Karena gameplay game ini cuma bertarung, bertarung, bertarung, dan bertarung. Jadi, cerita yang akan aku bikin juga harus menyesuaikan dengan gameplay ini. Sementara yang terpikirkan adalah kedua karakter ini mempertahankan desa mereka dari serangan monster. Tapi, unsur ceritanya masih belum dibuat di game ini, semoga aja bisa dibikin dengan keterbatasan 100 event di versi gratis construct 2.

Sementara masih belum ada demo gameplay. Untuk yang tertarik dengan screenshot, ada satu di bawah ini.

Senin, 15 April 2013

Gundam Dynames milikku

Oke, ini memang bukan soal game baru, atau tutorial, atau hal-hal technical semacam itu. Tapi karena udah lama banget aku ga nulis blog, kayaknya aku harus memaksa diriku buat nulis, siapa tau bisa jadi pemicu buat tulisan-tulisanku berikutnya.
Jadi nikmati action figure Gundam Dynames-ku ini. Kebetulan ini pertama kalinya aku ngerakit gundam, ternyata seru juga. Berikutnya aku mau beli gundam lagi, hehe

Aiming, from higher angle

Other aiming Dynames

Dynames-2

Minggu, 07 April 2013

One game a month, April RPG

Oke. karena ini sudah bulan april,one game a month pun berganti tema opsionalnya. Tema buat bulan ini adalah: Spring. Karena di sini ga pernah musim semi, aku jadi ga tau harus bikin game kayak gimana yang ada unsur spring, bisa aja aku bikin fungsionalitas lompat-lompat atau pengertian spring dalam arti lain, tapi kali ini aku gak mau ngikutin tema. Aku mau bikin game yang pengen aku bikin: RPG. Bikin full-blown RPG dalam sebulan atau kurang, memang sebuah target yang mustahil, jadi aku berencana bikin versi lebih sederhana.

Game ini akan dibuat dengan construct 2, karena tool ini kelihatannya adalah tool paling mudah digunakan kalau kita mau mencoba HTML5 tanpa javascript (aku ga bisa javascript). Desain dari game ini akan dibuat lebih sederhana, seperti apa? Cuma ada sistem pertarungan aja. That's it. No more. Ceritanya adalah tentang dua orang pemuda yang mempertahankan desa mereka dari serangan monster. Kenapa dua pemuda? Ini sekalian bikin sistem party sederhana. Monster-monster ini akan datang terus menerus tanpa henti, nanti akan ada jeda beberapa detik sebelum monster berikutnya muncul.

Untuk sementara, nikmati screenshot pertama dari game bulan april ini:

Selasa, 02 April 2013

Gamedevid weekend chalenge, Granma Cross

Weekend kemarin, forum gamedevid mengadakan game making challenge bernama weekend challenge. Tujuan dari challenge ini bukan buat mendapatkan hadiah uang atau barang, atau semacamnya. Melainkan hanya sebagai ajang untuk mengetes skill kita sendiri, untuk tahu sehebeat apa sih kita? Challenge yang rencananya diadakan tiap weekend ini punya tema sendiri buat tiap minggunya, untuk weekend kemarin (yang aku ikuti) temanya adalah: frogger clone.

Jadi, inti dari challenge kemarin adalah, membuat game dengan mekanisme yang sama/mirip dengan frogger dalam 2 hari atau kurang. Inti mekanisme frogger adalah: ada katak (pemain) yang menyeberang jalan, tapi dalam mencapai tujuannya buat menyeberang, akan ada beberapa halangan yang menghalanginya. Berawal dari konsep sederhana itu, aku membikin game berjudul: Granma Cross.

Sabtu, 30 Maret 2013

Dungeon rogue released!

Setelah berjuang sekian lama, akhirnya dungeon rogue selesai juga! hanya saja di versi akhir ini jumlah lantainya ga sampai seperti yang didesain awal (15 lantai) soalnya waktunya sudah semakin mepet, dan keliatannya juga sudah cukup susah. Kebetulan aku juga nemu situs yang menarik, itch.io, situs ini menyediakan layana bagi developer game indie untuk membuat halaman download game. Game yang ditaruh di sini bisa versi gratis, bisa juga versi berbayar.

Jadi, tanpa berlama-lama lagi, silahkan download dungeon rogue di http://daggio.itch.io/dungeon-rogue
(oh iya, screenshot ada di bawah sini)

Jumat, 22 Maret 2013

Dungeon rogue progress

Sudah lama ga nulis pos baru di blog, jadi pengen nulis lagi. Oke, sekarang aku mau nulis soal update terbaru dari proyek game one game a month yang aku buat. Dulu aku ngerancang bahwa aku pengen bikin 15 lantai, tapi kayaknya itu harus diganti karena akhir bulan yg semakin dekat, dan kayaknya terlalu maksa kalau aku bikin sampai 15 lantai. Lagipula, playtime game ini udah sampai 3 jam, keliatanna terlalu lama buat sebuah game kecil, jadi wa berusaha bikin sampai 13 lantai aja (progress sampai sekarang emang sampai lantai 13).

Selain mengubah jumlah lantai, aku juga berusaha ngasih tambahan unsur cerita ke dalam game ini. Jadi awalnya, para karakter ini cuma sebagai 'boneka' buat sarana gamer untuk main game ini. Tapi sekarang mereka masing-masing punya alasan kenapa mereka mau menjelajahi dungeon. Menurut rumor, di dasar dungeon itu tersimpan sebuah artifak yang memiliki kekuatan untuk mengabulkan permintaan orang yang menemukannya.
Diaz, yang seorang petualang menginginkan harta dan kekayaan.
Naia, yang adalah anak seorang pemilik dojo, menginginkan kesembuhan untuk ayahnya yang sakit.
Aleia, yang healer cuma sekedar ingin membantu ketiga petualang.
Anastasia, si gadis penyihir terobsesi menemukan elemen sihir baru dengan bantuan artifak.
dan begitulah, dengan tujuan masing-masing, mereka bersama-sama menjelajahi dungeon yang dalam.

screenshot baru ada di bawah:

Jumat, 15 Maret 2013

Game design part 4

Baiklah, sampailah kita di bagian keempat dari seri artikel tentang game design. Kalau sebelumnya aku sudah nulis soal challenge, reward, dsb, sekarang aku mau nulis soal feature. Feature ini adalah hal-hal dalam game-mu yang kamu tawarkan ke gamer. Contohnya fitur ini beda-beda tergantung genrenya juga, beberapa contohnya adalah:

  • playtime 50 jam
  • secret item
  • secret boss
  • secret character
  • new game +
dan masih banyak lagi.

Ada dua hal yang harus diingat sewaktu membuat fitur untuk game-mu:

Senin, 11 Maret 2013

one game a month, dungeon rogue (1)

Di blog post sebelumnya, aku sudah menulis soal one game a month, sekarang aku mau nulis soal game yang aku buat untuk one game a month ini. Bulan ini, aku memutuskan untuk ngikutin tema, yaitu rogue-like. Karena ini rogue-like, aku membuat game-nya bertualang di dalam dungeon. Pemain harus menelusuri dungeon sedalam (rencananya) 15 lantai. Nanti di beberapa tempat akan ada peti harta yang bisa berisi uang atau equipment. Ga ada toko di sini, jadi semua item / equipment cuma bisa didapatkan dari peti harta.

Untuk difficulty-nya sendiri, aku bikin supaya jadi susah & menantang. Ga ada item semacam phoenix down yang bisa 'menghidupkan' anggota party yang mati (tentunya ga ada sihir yang bisa begitu juga), jadi kalau anggota party-mu mati, ya nasibmu buruk. Nantinya juga ada lantai yg bisa melukai pemain, dan pemain juga bisa mati karena lantai itu, membuat petualangan jadi makin susah.

untuk sementara, nikmati dulu screenshot awal di bawah ini: