Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Game Development
  2. Complete Games
Gamedevelopment

Menciptakan Game Puzzle Berbasis Grid Seperti Minesweeper Menggunakan Unity: Pengaturan

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called Build a Grid-Based Puzzle Game Like Minesweeper in Unity.
Build a Grid-Based Puzzle Game Like Minesweeper in Unity: Interaction

Indonesian (Bahasa Indonesia) translation by Kaso Toluppa (you can also view the original English article)

Game teka-teki sering kali terdapat pada grid yang berisi tile yang memiliki perilaku dan sifat, dan bereaksi terhadap peraturan dan input. Dalam seri ini saya akan menunjukkan kepada Anda bagaimana membangun versi sederhana dari game klasik Minesweeper, yang merupakan contoh sempurna untuk memulai menciptakan permainan puzzle Anda sendiri.

Apakah Anda sedang membuat permainan memori anak-anak atau judul strategi yang rumit, menerapkan blok bangunan dasar Minesweeper adalah tempat yang tepat untuk memulai. Pada bagian pertama dari rangkaian tutorial tiga bagian ini, kami akan membangun lapangan permainan yang dapat Anda gunakan untuk membuat versi permainan Anda sendiri.

Anda akan membutuhkan Unity untuk membuatnya, dan pemahaman dasar tentang hal itu. (Lihat dan cek Build Arkanoid With Unity jika Anda baru mengenalnya.) Sumber kodenya bisa diunduh, namun hal itu tidak diperlukan dalam menjalankan tutorial ini.

Aturan dalam Minesweeper

Minesweeper adalah permainan puzzle di mana Anda harus menemukan semua ranjau di lapangan. Ukuran lapangan bervariasi berdasarkan tingkat kesulitannya, dan dapat berkisar dari tile 9x9 (mudah) sampai 16x30 tile (keras), atau dimensi khusus lainnya.

Dengan mengklik sebuah tile  maka Anda akan"membuka" nya. Jika itu adalah ranjau, Anda akan kalah; Jika itu kosong dan setidaknya satu ranjau berada di salah satu tile yang berdekatan, sebuah angka akan muncul, menunjukkan jumlah ranjau di tile tetangga.  Jika tidak ada ranjau di tile yang berdekatan, semua tile yang berdekatan juga terbuka.

tile bisa ditandai dengan mengklik kanan pada mouse, sehingga kita akan menempatkan bendera di atasnya. Setelah semua tile dengan ranjau ditandai dengan benar, permainan akan dimenangkan.

Cobalah di sini:

Unsur yang Kita Butuhkan

Dari peraturan di atas, kita bisa memperkirakan berbagai elemen yang dibutuhkan oleh Minesweeper sederhana kita. Berikut adalah elemen yang kita butuhkan:

  • Kotak ubin
  • Tile yang bisa berisi ranjau
  • Tile yang bisa berinteraksi dengan meng-klik mouse
  • Tile yang memperhatikan tile didekatnya saat bereaksi terhadap klik mouse

Membangun Tile Dasar

Buatlah sebuah project Unity baru. Buatlaht sebuah kubus dan beri nama Tile. Seretlah ke folder proyek untuk mengubahnya menjadi sebuah prefab. Kami akan menggunakan tile non-fungsional ini untuk membangun lapangan permainan, dan kemudian menambahkan fungsionalitas ke dalamnya.

Membangun Generator Grid

Buatlah objek kosong baru dan beri nama Grid, dan ubah menjadi sebuah prefab juga. Ini akan menjadi generator dari medan permainan dan semua tile di dalamnya.

Buat file JS baru, beri nama Grid juga, dan tambahkan ke objek Grid.

Tambahkan baris berikut ke skrip Grid, agar kita bisa mulai membuat sebuah bidang:

Kemudian, tarik Tile prefab ke slot Prefab Tile dari objek Grid. Seharusnya terlihat seperti ini:

Variabel numberOfTiles akan memungkinkan Anda mengatur jumlah tile yang akan dibuat. DistanceBetweenTiles mendefinisikan jarak di antara keduanya, sehingga kita bisa mengatur jarak sesuai dengan keinginan kita.

Saat ini, generator grid tidak melakukan apapun. Untuk membuatnya aktif buatlah beberapa tile, tambahkan kode ini pada fungsi CreateTiles ():

Jika Anda menjalankan adegan saat ini, sebaiknya buat garis tile seperti ini:

Fungsi ini menciptakan salinan dari prefab tile-sebanyak yang kita tentukan-dan menempatkannya dalam baris,  jarak yang memisahkan dengan menggunakan fungsi distanceBetweenTiles. Cobalah beberapa nilai berbeda untuk menemukan jarak yang baik.

Tapi untuk Minesweeper kita membutuhkan kotak, bukan garis. Untuk mencapai itu, tambahkan variabel ini di awal kode Grid:


...and adaptasilah fungsi CreateTiles() untuk membuatnya terlihat seperti ini:


Jika Anda menjalankan fungsi ini, Anda akan berakhir dengan beberapa garis tile: 

Jika Anda mengatur variabel tilesPerRow dengan benar (seperti 24 tile dalam 6 baris), generator harus membuat lapangan bermain persegi panjang yang bagus.  Jika kemampuan pemrograman Anda cukup baik, Anda dapat mencoba untuk mengetahui bagaimana mengotomatisasi proses lebih lanjut. (Versi Minesweeper yang sedang kita bangun juga akan bekerja dengan bidang berbentuk tidak beraturan.)

Jika kemampuan pemrograman Anda cukup baik, Anda dapat mencoba untuk mengetahui bagaimana mengotomatisasi proses lebih lanjut. (Versi Minesweeper yang sedang kita bangun juga akan bekerja dengan bidang berbentuk tidak beraturan.)

Sekarang kita bisa membuat ladang Minesweeper khusus yang sederhana, kita bisa mengerjakan dengan menambahkan ranjau yang sesungguhnya pada bidang permainan. 

Buatlah file JS baru, beri nama Tile, dan tambahkan ke Tile prefab. Kemudian, tambahkan variabel berikut ke dalamnya:


Ini akan memberitahu kita apakah tile tersebut memiliki ranjau di dalamnya.

Selanjutnya, kita harus menempatkan ranjau yang sebenarnya ke dalam grid. Untuk itu, ubah GameObject dari jenis tile prefab ke kelas Tile baru yang baru saja kita buat.

Ubah variabel tilePrefab hingga terlihat seperti ini:

Dan kemudian tentukan objek Tile lagi ke variabel itu. Sekarang secara otomatis kita dapat mengakses variabel yang kita masukkan ke sana dari awal.

Penetapan ranjau agak sedikit rumit. Kami akan melakukan ini dari generator Grid.

Pertama, tiga array untuk menahan ubin kita ke kode Grid:

Kita juga perlu menginisialisasi mereka. Masukkan baris berikut di awal fungsi CreateTiles ():

Kemudian, ubah perintah instantiate di fungsi CreateTiles ()agar terlihat seperti ini:


Fungsi CreateTiles() seharusnya akan terlihat seperti ini:Sekarang tambahkan perintah ini di akhir fungsi CreateTiles () untuk memulai proses AssignMines ():


Fungsi CreateTiles() seharusnya akan terlihat seperti ini:

Tambahkan juga fungsi AssignMines(), sehingga kita bisa benar-benar bisa menggunakannya:

Inilah yang terjadi: ketika sebuah tile baru dibuat di fungsi CreateTiles, maka itu akan ditambahkan ke tileAll-array. Semua tiledi sana kemudian disalin ke dalam array tileUnmined. Dari array ini kita secara acak memilih satu tile untuk menambahkan ranjau ke dalamnya.  Kami menambahkan ranjau dengan menetapkan variabel isMined menjadi true, mengeluarkannya dari array tilesUnmined dan menambahkannya ke array tilesMined (yang akan kita gunakan nanti). Pada akhirnya kita secara acak menempatkan jumlah ranjau yang ditentukan di lapangan.

Saat ini, tile yang diranjau tidak tampak berbeda dari tile yang tidak beranjau. Tujuan dari permainan ini adalah memang untuk mengetahui hal itu.

Dalam membangun ini Anda bisa menguji bagaimana seharusnya permainan ini bekerja. Untuk tujuan demonstrasi,ubin beranjau tampak berwarna merah.

Dan voilá: Anda sekarang memiliki ladang Minesweeper dengan ukuran khusus!

Membuat Tile Lebih Visual dan Menarik

Saat ini, Tile adalah kubus Unity standar. Mari kita mengubahnya menjadi tile yang sebenarnya.

Di file sumber, Anda akan menemukan file 3D yang disebut puzzleObjects.fbx. Salin folder ini ke folder aset Anda, sehingga kita bisa menggunakannya di game kita. Pastikan file tersebut diimpor dengan ukuran yang disetel ke 1, sehingga sesuai dengan setelan yang telah kami gunakan sejauh ini.

Pengaturan impor file akan terlihat seperti ini:

Kemudian, pergi ke pengaturan prefab tile, dan memindahkan mesh kubus untuk mesh tileImproved.

Sementara kita telah sampai di sini, tekan Reset pada komponen Box Collider dari tile. Ini akan membuat collider pas di sekitar tile lagi.

Akhirnya, berilah tile material baru, sehingga tidak memiliki tampilan yang putih standar.

Ingatlah untuk menerapkan semua perubahan pada tile-prefab juga, sehingga tampilan terbaru dapat terlihat saat kita memulai permainan baru. Jika Anda mencobanya, permainan harus menghasilkan grid menggunakan tile baru ini dan bukan kubus yang lama.

Menambahkan Tampilan Nomor pada Tile

Kita perlu cara untuk menampilkan nomor agar tile menunjukkan kepada kita berapa banyak ranjau yang berdekatan dengannya. Cara mudah untuk melakukannya adalah dengan menggunakan Teks 3D, yang terdapat dalam Unity.

Buatlah satu dengan mengklik GameObject> Create Other> 3D Text, dan tambahkan ke tile. Maka seharusnya akan terlihat seperti ini:

Mari kita perbaiki. Putar teks sehingga menghadap ke atas. Atur string yang saat ini ditampilkan ke 0, sehingga kita tahu ukuran teks yang akan ada. Sesuaikan juga Ukuran Font dan Ukuran Teks, sehingga tidak terlihat buram.

Hebat sekali! Sekarang kita dapat mengakses teks 3D dalam kode. Tambahkan variabel berikut ke kode Tile:

Tarik teks 3D ke slot yang terbuka, sehingga kita dapat mengaksesnya melalui kode nantinya.

Ingatlah untuk menerapkan semuanya ke dalam tile prefab, dan cobalah. Tile yang baru dan yang meningkat kini dapat tercipta.

Kesimpulan

Kami telah menciptakan basis fungsional untuk permainan puzzle, tapi sebenarnya kita belum bisa memainkannya. Kami akan menambahkan fungsi itu di bagian kedua dari seri ini.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.