Advertisement
  1. Game Development
  2. From Scratch
Gamedevelopment

Buat Match-3 Game dalam Construct 2: Lebih Banyak Swapping, Poin, dan Matching

by
Difficulty:BeginnerLength:LongLanguages:
This post is part of a series called Make a Match-3 Game in Construct 2.
Make a Match-3 Game in Construct 2: Points, Matching, and Gravity
Make a Match-3 Game in Construct 2: Block Movement

Indonesian (Bahasa Indonesia) translation by Suci Rohini (you can also view the original English article)

Kita sekarang berada di tengah-tengah seri ini, dan sejauh ini sudah banyak membahasnya. Dalam tutorial sebelumnya, kita menambahkan sistem poin ke permainan, kita akhirnya menerapkan "gravitasi" ke blok, dan meningkatkan sistem pencocokan. Dalam tutorial ini kita akan membuat beberapa perbaikan kecil pada sistem swapping, tambahkan teks floating point yang dapat Anda lihat di versi terakhir dari permainan, dan selesaikan sistem pencocokan sekali dan untuk semua.


Demo Game Final 

Berikut ini adalah demo game yang sedang dikerjakan pada seluruh seri ini:




1. Meningkatkan Mekanika Swapping 

Saat ini, permainan memiliki mekanika swapping yang sangat sederhana diimplementasikan. Sementara sistem yang digunakan untuk melakukan swap ini sangat efektif, ada dua masalah yang dapat Anda hadapi saat bermain, dan keduanya harus diperbaiki sebelum kita melangkah lebih jauh.

Masalah-masalah ini berasal dari ide yang sama: bahwa sistem swapping tidak memperhitungkan batas-batas bidang permainan.

Ke Kiri, ke Kanan 

Apa artinya ini, tepatnya? Nah, pertama, jika Anda mau, Anda bisa memindahkan blok di luar bidang permainan ke kiri atau ke kanan, dengan membuat swap seperti yang digambarkan di bawah ini:

Make a Match-3 Puzzle Game in Construct 2: More Swapping, More Points, and More Matching

Jika Anda masuk ke permainan dan melakukan swap ini, Anda akan melihat bahwa game tidak melakukan apa pun untuk menghentikan Anda, dan bertindak seolah-olah bidang game terus berlanjut dalam arah horizontal. Alasannya adalah, saat ini, bidang permainan terus berlanjut secara horizontal.

Karena kita tidak pernah menentukan di mana batas kiri dan kanan bidang permainan, atau bahkan bahwa bidang game memiliki batas kiri dan kanan, game tidak pernah mencoba untuk menghentikan pemain memindahkan blok lebih jauh ke samping. Masalah ini juga muncul ketika Anda menukar sisi lain dari bidang game juga.

Untuk mengatasi masalah ini, kita akan menambahkan beberapa ketentuan baru ke Block > On DragDrop drop Event. Buka acara ini dan tambahkan ketentuan ini ke Sub-Event yang memeriksa pertukaran kiri:

Sekarang tambahkan kondisi ini ke Sub-Event yang memeriksa pertukaran benar:

Peristiwa pertukaran kiri dan kanan Anda seharusnya sekarang terlihat seperti ini:

Make a Match-3 Puzzle Game in Construct 2: More Swapping, More Points, and More Matching

Kondisi baru ini kita tambahkan sedang digunakan oleh acara swapping sebagai cek untuk memastikan bahwa swap dalam batas horizontal dari area game. Pertama memastikan bahwa posisi blok akan ditukar untuk tidak lebih jauh ke kiri blok paling kiri, dan kedua memastikan bahwa posisi blok menjadi swap untuk tidak lebih jauh ke kanan blok paling kanan.

Dengan yang kedua, saya menggunakan rumus dengan Block.Width untuk menemukan di mana blok paling kanan adalah untuk memastikan bahwa, jika ukuran Blok berubah, itu tidak akan mencegah kondisi ini bekerja.

Jika Anda menjalankan game, Anda seharusnya tidak lagi dapat membuat swap horizontal yang akan menempatkan blok di luar area game.

Keluar Batas

Masalah lain yang dimiliki adalah game tidak menghentikan Anda dari menukar blok di bawah bidang game. Buka game dan cobalah membuat swap seperti yang telah saya ilustrasikan dalam gambar ini:

Make a Match-3 Puzzle Game in Construct 2: More Swapping, More Points, and More Matching

Setelah membuat swap ini, Anda seharusnya telah melihat blok pada dasarnya menghilang begitu saja di belakang bagian bawah bidang game, dan balok-balok yang berada di atasnya seharusnya jatuh untuk mengisi ruang yang sekarang kosong. Sekali lagi, masalah ini adalah karena kita tidak pernah mendefinisikan di mana tepi bawah bidang tersebut.

Dalam tutorial sebelumnya kita menyatakan bahwa blok harus berhenti jatuh setelah mencapai ketinggian tertentu, tetapi kita tidak pernah mengatakan apakah itu baik-baik saja untuk sebuah blok untuk pergi di bawah ketinggian itu ketika melakukan swap.

Memperbaiki ini akan sesederhana dua masalah sebelumnya. Pergi ke Sub-Event yang memeriksa swap ke bawah, dan tambahkan kondisi ini:

Kode Anda untuk bagian ini seharusnya sekarang terlihat seperti ini:

Make a Match-3 Puzzle Game in Construct 2: More Swapping, More Points, and More Matching

Sama seperti kondisi sebelumnya, ini memastikan bahwa swap tidak akan menempatkan blok ke area di luar lapangan game. Dalam hal ini, terlihat pada area di bawah bidang game.

Jika Anda menguji game saat ini, Anda seharusnya tidak dapat membuat swap yang meletakkan blok di bawah pangkal bidang game.

Pada titik ini, kita telah memecahkan masalah dengan sistem swapping, dan dapat melanjutkan untuk membuat sistem poin yang ebih baik.


2. Teks Floating Points

Saat ini, sistem poin kita cukup efektif. Ia bekerja dengan cara yang diinginkan, dan sudah menampilkan semuanya dengan benar. Meskipun begitu, jika Anda memberikan permainan itu kepada seorang pemain dan menaruhnya bersama mereka, mereka mungkin tidak dapat mengetahui dengan pasti berapa banyak poin yang mereka dapatkan dari setiap grup yang mereka buat, karena permainan dapat bergerak dengan cepat.

Untuk mengatasi masalah ini, kita akan menambahkan pop-up teks yang menampilkan berapa banyak poin yang dihasilkan pemain dari grup apa pun yang mereka bentuk. Ini akan menambah bakat visual ekstra ke permainan, dan ini akan memperjelas kepada pemain betapa berharganya kelompok yang lebih besar.

Menciptakan Teks Itu Sendiri

Sebelum kita dapat mulai menambahkan fungsionalitas, kita perlu membuat objek baru yang akan bertindak sebagai teks pop-up, jadi ikuti langkah-langkah ini.

  1. Pergi ke Layout 1
  2. Masukkan objek Text baru:
    1. NameFloatingPointsText
    2. LayerGame Field
    3. Position616, 250
    4. Size127, 43
    5. Text0
    6. FontCalibri, Bold, 24
    7. Color255, 255, 255
  3. Di tab Projects di sebelah kanan, klik kanan objek FloatingPointsText, dan pilih Behaviors.
  4. Tambahkan perilaku Fade baru, dan tutup jendela Behaviors.
  5. Pada properti di sisi kiri layar, ubah Fade Out Time menjadi 1.25.

Objek yang baru saja kita buat akan digunakan untuk membuat floating teks yang memberi tahu pemain berapa banyak poin yang akan diberikan oleh kelompok yang diberikan. Sekarang kita benar-benar memiliki objek ini, kita perlu menerapkannya sehingga ketika pemain membuat kecocokan, itu akan menghasilkan contoh baru dari objek dan mengubah teks untuk menunjukkan jumlah poin yang tepat.

Spawning Teks 

Untuk menimbulkan teks poin, kita akan menambahkan dua Tindakan baru ke pemeriksaan NumMatchesFound di fungsi FindMatches.

Buka fungsi FindMatches, dan tambahkan dua Tindakan ini ke akhir setiap pemeriksaan NumMatchesFound>3:

Fungsi FindMatches Anda seharusnya sekarang terlihat seperti ini:

Make a Match-3 Puzzle Game in Construct 2: More Swapping, More Points, and More Matching

Jadi apa yang dilakukan Tindakan ini? Tindakan pertama membuat objek FloatingPointsText di atas blok pertama dalam grup, dan yang kedua mengalikan jumlah blok dalam grup dengan 10, seperti rumus poin, dan menetapkan teks objek baru ke nomor itu .

Make a Match-3 Puzzle Game in Construct 2: More Swapping, More Points, and More Matching

Jika Anda menjalankan permainan pada titik ini, Anda harus memperhatikan bahwa teks tidak bergerak sama sekali. Untuk memperbaiki masalah ini kita akan menambahkan Event baru ke permainan kita.

Membuat Teks Bergerak

Kembali ke Event Sheet 1 dan tambahkan Event baru:

Acara baru Anda akan terlihat seperti ini:

Make a Match-3 Puzzle Game in Construct 2: More Swapping, More Points, and More Matching

Jika Anda menjalankan game ini sekarang, Anda akan melihat bahwa teks tersebut bergerak.

Pada titik ini, FloatingPointsText berfungsi seperti yang diinginkan, tetapi Anda mungkin telah memperhatikan sedikit masalah sekarang karena sistem sudah ada. Masalahnya sendiri berasal dari cara sistem pencocokan bekerja, dan sekarang kita dapat melihat bahwa masih ada masalah dengan pencocokan, kita dapat mengatur tentang memperbaiki masalah terakhir ini, dan menempatkan sistem pencocokan ke tempat tidur.


3. Menyelesaikan Sistem Pencocokan

Jika Anda belum tahu masalah apa yang saya bicarakan, pergilah ke game, dan buat grup yang berisi empat blok. Setelah grup Anda dibuat, Anda akan melihat sesuatu yang mirip dengan apa yang saya miliki pada gambar di bawah ini:

Make a Match-3 Puzzle Game in Construct 2: More Swapping, More Points, and More Matching

Seperti yang Anda lihat, kita sebenarnya memiliki dua contoh objek teks floating. Jika Anda membuat grup dengan lima Blok, masalah menjadi semakin buruk dan Anda benar-benar akan melihat tiga contoh dari teks poin.

Make a Match-3 Puzzle Game in Construct 2: More Swapping, More Points, and More Matching

Alasan untuk masalah ini didasarkan pada cara kecocokan yang terdeteksi. Saat ini, sistem pencocokan kita melihat setiap blok secara individual, dan melihat ke arah yang benar, dan arah ke bawah, untuk menemukan kecocokan. Karena itu, sistem yang cocok sebenarnya menemukan tiga kelompok ukuran yang berbeda di sini, meskipun sebenarnya hanya satu kelompok besar.

Grup pertama akan ditemukan ketika dimulai dengan Blok A, dan akan berisi lima blok:

Make a Match-3 Puzzle Game in Construct 2: More Swapping, More Points, and More Matching

Kelompok kedua akan ditemukan ketika dimulai dengan Blok B, dan akan berisi empat blok:

Make a Match-3 Puzzle Game in Construct 2: More Swapping, More Points, and More Matching

Dan kelompok ketiga akan ditemukan ketika dimulai dengan Blok C, dan akan berisi tiga blok:

Make a Match-3 Puzzle Game in Construct 2: More Swapping, More Points, and More Matching

Jadi, saat ini, sistem pencocokan kita sangat tidak efisien - dan rusak - karena memeriksa blok yang sama beberapa kali dan mendaftarkan lebih banyak grup daripada yang sebenarnya.

Bagaimana Kita Akan Memperbaiki Ini

Memperbaiki masalah ini sebenarnya jauh lebih sederhana daripada yang mungkin tampak pada awalnya.

Masalahnya di sini terutama berasal dari fakta bahwa sistem pencocokan tidak memiliki cara untuk mengetahui apakah blok itu dimulai dengan sebenarnya adalah awal dari grup. Jika kita bisa menjamin bahwa kita hanya melihat Blok yang paling jauh ke kanan, atau tertinggi, dalam kelompok mereka, maka sistem yang cocok akan efektif apa adanya.

Jadi, yang harus kita lakukan adalah menambahkan kondisi atau Event yang memastikan tidak ada blok yang cocok di atas, atau di sebelah kiri, blok yang kita mulai dengan, dan memberi tahu fungsi ketika telah melakukan pemeriksaan ini, sehingga dapat lanjutkan dengan normal jika blok yang dilihatnya adalah awal grup.

Hal pertama yang akan kita tambahkan adalah parameter baru untuk fungsi CheckMatches. Parameter ini akan berupa bilangan bulat dan akan berupa 1 atau 0.

Jika parameternya adalah 1, itu akan menunjukkan ke fungsi yang diperlukan untuk melakukan pemeriksaan untuk memastikan itu melihat blok awal dalam grup; jika 0, itu akan menunjukkan ke fungsi yang sudah melakukan pemeriksaan ini, dan dapat melanjutkan secara normal untuk menentukan apakah grup terdiri dari tiga atau lebih blok.

Mari Kita Lakukan

Jadi, mulailah dengan pergi ke fungsi FindMatches. Dalam fungsi ini Anda memanggil CheckMatch dua kali. Karena ini adalah pertama kalinya Anda memanggil CheckMatches untuk blok apa pun yang Anda lihat, Anda perlu menambahkan parameter baru ke masing-masing panggilan fungsi ini dan setel ke 1 sehingga akan memeriksa untuk melihat apakah pemblokiran yang dilihatnya adalah mulai dari grup.

Fungsi FindMatches Anda seharusnya sekarang terlihat seperti ini, dan saya telah menyoroti dua pernyataan yang diubah untuk kenyamanan Anda:

Make a Match-3 Puzzle Game in Construct 2: More Swapping, More Points, and More Matching

Sekarang kita memberi tahu CheckMatch saat perlu melakukan pemeriksaan baru ini, kita harus benar-benar menambahkan cek baru untuknya. Pergi ke fungsi CheckMatches Anda, dan tambahkan Sub-Event baru ini sebagai Sub-Event pertama:

Sebelum Anda selesai memodifikasi fungsi CheckMatches Anda juga perlu menambahkan pernyataan Else ke bagian atas acara asli untuk fungsi CheckMatches, dan Anda perlu menambahkan parameter baru ke panggilan fungsi CheckMatches dan atur ke 0.

Kode baru untuk fungsi CheckMatches akan terlihat seperti ini:

Make a Match-3 Puzzle Game in Construct 2: More Swapping, More Points, and More Matching

Acara yang ditambahkan tidak persis seperti yang saya jelaskan di atas. Pertama, terlihat pada blok di atas, atau di sebelah kiri, blok awal yang Anda lewati.

Jika blok tersebut memiliki warna yang sama dengan yang Anda berikan, ia tidak melakukan apa pun karena ia tahu bahwa blok yang Anda berikan bukan Blok pertama dalam grup itu.

Di sisi lain, jika warnanya tidak sama dengan blok yang Anda lewati, cek asli terjadi karena pernyataan Else yang baru saja kami tambahkan, dan itu mencari kelompok tiga atau lebih blok seperti biasanya.

Jika Anda menguji permainan pada titik ini, dan membuat grup dengan lebih dari tiga blok, Anda seharusnya hanya melihat satu objek teks mengambang yang memberi tahu Anda berapa banyak poin yang bernilai kelompok itu.


Kesimpulan

Sekarang setelah selesai memperbaiki semua fitur ini, dan akhirnya kita telah menyelesaikan sistem pencocokan, kita siap untuk menerapkan sistem gerakan. Karena kita sudah melakukan banyak hal dalam tutorial ini, dan karena sistem gerakan mengharuskan kita membuat beberapa sistem yang rumit, saya akan menunggu hingga artikel berikutnya memulai sistem pergerakan.

Jika Anda ingin mulai mengerjakannya, pertimbangkan beberapa hal ini. Tentunya hal pertama yang harus Anda lakukan adalah menerapkan gerakan itu sendiri. Untuk itu, coba gunakan sistem yang mirip dengan apa yang kita gunakan saat membuat objek teks poin mengambang. Dari sana, mulailah mempertimbangkan bagaimana Anda akan mengubah kecepatan di mana mereka bergerak. Akhirnya, bagaimana Anda akan menghasilkan baris baru Blok untuk pemain, dan bagaimana Anda tahu kapan harus menghasilkan baris baru?

Luangkan waktu untuk mempertimbangkan hal-hal ini, dan saya akan melihat Anda kembali ke sini minggu depan untuk seri besar berikutnya dari seri ini.

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.