Tampilkan postingan dengan label Game Design. Tampilkan semua postingan
Tampilkan postingan dengan label Game Design. Tampilkan semua postingan

Kamis, 04 Desember 2014

Referensi dalam membuat game

Hai semuanya, ketemu lagi di blog ku yang terbaru! Kalau kalian mengunjungi blog ini, aku yakin kalian pasti ingin tahu tentang cara membuat game. Buktinya adalah tutorial RPG yang aku tulis adalah post dengan jumlah pembaca terbanyak. Tapi selain teknis programming, ada satu hal lagi yang sangat penting: game design.

Aku sudah banyak menulis tentang programming, tapi sepertinya jarang banget aku menulis soal game design. Kali ini aku ingin berbagi referensi, karena sewaktu menulis buku, aku mendapatkan banyak masukan dari para reviewer, salah satunya memberikan banyak referensi tambahan untuk membuat game design. Nah, aku sudah memuat referensi itu dalam sebuah daftar yang ringkas, seperti di bawah ini:

Jadi apakah kalian harus membaca semua referensi di atas sebelum membuat game? Enggak juga, cukup membaca beberapa aja sudah cukup kok. Aku sendiri belum pernah membeli buku dari Amazon jadi kalian enggak perlu memaksakan diri beli.

Semoga kalian mendapatkan referensi yang bagus dari daftar ku di atas, sampai ketemu di blog berikutnya.

Senin, 26 Mei 2014

Ide game: game untuk penyandang cacat

Hai semuanya! Selamat pagi (atau siang, sore, malam) untuk kalian. Kemarin dan hari ini aku ngobrol dengan seorang gamedev dari Poland via twitter (internet memang tak berbatas, bisa ngobrol dengan orang dari sisi lain dunia). Pada awalnya kita ngobrol soal membuat game bermodalkan passion, tapi pada akhirnya kita berbicara tentang membuat game untuk gamers buta dan gamers lain dengan disabilitas.

Kalau dipikir lebih lanjut lagi, ini adalah hal yang sangat penting untuk kita pikirkan sewaktu men-design game. Semua orang berhak untuk mendapatkan hiburan, semua orang berhak untuk bermain game, dan mendapatkan kesenangan yang sama dengan yang kita rasakan. Walaupun begitu kita sering melupakan orang-orang dengan disabilitas ketika membuat game design. Contohnya saja: banyak game yang harus dimainkan dengan kedua tangan, game yang nggak menyediakan remappable control, atau game yang harus dimainkan dengan kombinasi mouse & keyboard.

Banyak orang yang karena kecelakaan akhirnya kehilangan kedua tangannya sehingga harus menggunakan hardware khusus untuk menggerakkan mouse (denganhttp://orin.com/access/headmouse/index.htm contohnya.), apakah kita men-support hardware khusus ini? Bagaimana dengan orang-orang yang memiliki masalah pendengaran? Apa mereka bisa menikmati game kita?

Ini perlu mendapat perhatian khusus. Ada dua cara untuk mengatasi masalah ini:

  1. Membuat game khusus untuk penyandang disabilitas
  2. Membuat pilihan dalam game kita untuk penyandang disabilitas
Di antara dua pilihan itu, pilihan kedua adalah yang lebih susah tapi kalau dilakukan dengan benar kita bisa memberikan pengalaman yang sama bagi penyandang disabilitas dan orang lain pada umumnya. Kesusahannya adalah ketika kita membuat game platformer atau action dan skema kontrol game harus bisa mengakomodasi semua pihak, sampai sekarang aku nggak tahu gimana cara lari dan lompat jauh dengan satu tangan sewaktu main Mario Bros.

Selain disabilitas fisik, masih ada tipe-tipe disabilitas lain seperti pendengaran (bagaimana membuat suasana seram dalam game horor kalau pemain nggak bisa dengar suara-suara mencekam?), penglihatan (apakah orang-orang colour blind bisa mendapat pengalaman bermain yang sama?), dan kemampuan kognitif (apakah game kita memiliki level tutorial yang cukup mudah untuk hal-hal yang kita anggap hal "biasa"? Ingat bahwa penderita cacat ini memiliki kekurangan kemampuan berpikir).

Ini adalah topik yang besar dan aku rasa nggak bisa dibahas dalam satu blog post saja, mungkin di lain kesempatan aku akan menulis tentang apa yang bisa kita lakukan supaya para penyandang disabilitas bisa ikut menikmati game kita. Aku nggak yakin apa kita bisa mengakomodasi semua jenis cacat fisik dalam satu game, tapi setidaknya kita bisa berusaha kan? Atau jangan-jangan kalian sudah punya ide bagaimana membuat game untuk mereka? Tuliskan saja ide itu di kolom komentar.

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

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.

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.

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".

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.

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, 04 Maret 2013

Game design, part 3

Oke, posting pertama di bulan maret ini adalah soal game design. Kali ini aku ingin nge-share tentang apa yang pertama kali kita desain saat mulai membuat sebuah game design. Mungkin kalian sudah tau atau mungkin sudah bisa nebak, kalau bisa, selamat, kalau ga, ga apa-apa jangan sedih, hehe. Yang harus kita desain pertama kali adalah... main game flow. Apa itu? Itu adalah sumber kesenangan dari game-mu. Itu adalah sesuatu yang gamer lakukan berulang-ulang di game-mu. Kalau main game flow mu jelek, pemain akan merasa ga fun memainkan game-mu.

Mari kita buat contoh dari game sederhana, arkanoid.

Jumat, 22 Februari 2013

Game Design, part 2

Oke, kita masuk ke bagian kedua dari pembahasan game design kita. Kalau di bagian pertama aku menuliskan bahwa yang harus kita pikirkan waktu membuat game design adalah: gameplay, sekarang aku akan menambahkan satu lagi ke dalam elemen game design kita: balance. Artinya balance adalah game tidak boleh terlalu sulit dan tidak boleh terlalu gampang. Kalau terlalu sulit, pemain akan berhenti main game. Kalau terlalu gampang, pemain malah akan bosan. Jadi, ketika mendesain game, jangan lupakan balance.

Senin, 18 Februari 2013

Game Designing, part 1

Oke, ini blog post pertamaku yang berisi tentang game design, nantinya aku juga pengen nulis entry lain soal game design. Tulisan-tulisan game design yang kubuat ini mungkin bukan yang sempurna, tapi ini teknik game design yang ingin aku bagikan

Jadi, apa yang harus kita desain pertama kali? gameplay. Jawaban yang sederhana, tapi sepertinya kebanyakan orang lupa, mayoritas orang di internet (facebook, forum, dsb.) yang kulihat lebih mengutamakan cerita, atau membuat cerita dulu baru gameplay-nya. Sehingga mereka membuat gameplay yang mengikuti cerita, harusnya cerita yang mengikuti gameplay. Jadi pelajaran pertama adalah: buat gameplay dulu, baru yang lain (termasuk cerita)