Saya menghabiskan ratusan jam dalam permainan menurut statistik Steam, dan ribuan, jika Anda mengandalkan semua platform. Tetapi yang mengejutkan saya adalah perbandingan waktu dalam beberapa kasus. Butuh waktu 8,5 jam untuk menyelesaikan Bioshock Infinite yang hebat, tetapi Sacura Clicker membutuhkan waktu 12 menit lebih. Clicker Heroes memiliki lebih dari empat puluh jam, hampir sama dengan Torchlight 2. Caranya adalah saya ingat dan memiliki ide bagus tentang waktu yang dihabiskan untuk permainan besar. Tetapi mainan kecil itu tidak sepenuhnya teringat, mereka mencuri waktu saya tanpa disadari, mengambil lima hingga sepuluh menit selama berminggu-minggu dan berbulan-bulan.
Ketika saya menyadari hal ini, saya pikir akan menyenangkan untuk memasang turbin ke balerina ini. Yaitu, untuk membuat timekiller yang berguna - permainan sederhana yang tidak akan mencuri, tetapi investasikan waktu saya selama lima hingga sepuluh menit. Misalnya, dalam kosakata bahasa Inggris.

Suatu kali saya membeli banyak kartu dengan kata-kata bahasa Inggris dan membacanya dalam minibus dalam perjalanan ke kantor. Kemudian dia keluar dari kantor dan kebiasaan itu hilang, saya lupa tentang kartunya. Dia harus mengocok ranselnya, dan ketika kata-kata yang berbeda jatuh dari saku sisi atas dengan kipas, saya menyadari - ini adalah pertandingan 2! Gim di mana Anda harus membuat pasangan (tidak seperti pertandingan 3, di mana mereka membutuhkan tiga atau lebih).
Timekillers dengan prinsip "make a couple" telah lama dikenal - misalnya, permainan komputer mahjong solitaire (jangan bingung dengan permainan judi klasik Cina, yang dimainkan oleh Sammo Hung dalam film aksi Hong Kong).
KDE Games MahjongMahjong solitaire memiliki variasi Mahjong Connect yang disederhanakan, di mana chip diletakkan dalam tata letak yang sederhana, tanpa piramida keriting. Di Wikipedia, Anda dapat membaca bahwa itu disebut Shisen-Sho, tetapi jika Anda ingin sampel google, nama depan akan lebih cocok.
Saya menduga bahwa versi pertama dibuat oleh seorang programmer seperti saya, yang tidak memiliki pengalaman dalam pemrograman mahjong penuh dengan tata letak yang rumit - tetapi permainan tiba-tiba menjadi populer dan menelurkan cabang klonnya sendiri.
KDE Games Shiseen-sho atau Mahjong Connect populerLihatlah kartu kata dan Mahjong Connect - mereka sangat cocok bersama - dan ada pasangan. Tetap hanya mengubah setiap kartu menjadi sepasang chip.
Desain chip dan gameplay
Lima kata baru di setiap sesi dan beberapa kata berulang dari yang sebelumnya - ini adalah ide yang saya mulai. Ini berarti bahwa setidaknya sekitar 20 chip harus terlibat dalam permainan.
Pada setiap chip itu perlu untuk menempatkan setidaknya satu kata dengan keterbacaan yang baik. Kartu kertas memungkinkan Anda untuk menempatkan cukup banyak teks, tetapi chip dengan proporsi seperti itu akan terlalu besar. Selain itu, saya benar-benar ingin mempertahankan perasaan "seolah-olah mahjong", dan ini berarti bahwa satu chip game harus sangat kompak dalam bentuk dan teks. Jika Anda memutar buku jari mahjong 90 derajat, Anda mendapatkan cukup ruang untuk teks.
Setelah memodelkan tata letak permainan dengan buku-buku jari seperti itu di editor grafis (Fireworks 2003, jika Anda penasaran), saya melihat bahwa permainannya terlihat sangat membosankan. Setelah melihat lagi screenshot dengan mahjong, saya mencoba menambahkan elemen grafis yang berbeda untuk memeriahkan gambar. Dan kemudian saya sadar - Anda bisa menambahkan permata untuk setiap pasangan. Maka itu akan bekerja tidak hanya sebagai elemen animasi, memberikan setidaknya kemiripan eksternal dengan mainan kasual, tetapi juga sebagai petunjuk.
Versi draf lapangan bermain dengan opsi chip yang berbedaVersi terakhir ternyata seperti ini - tiga permata untuk 10-11 pasang kata. Ini memberi petunjuk dengan kemungkinan kebetulan acak sekitar 25%. Jika Anda lupa kata - Anda dapat melihat chip dengan kata-kata yang sama.
Elemen desain tambahan yang mempercepat orientasi adalah bendera abu-abu yang menandai semua kata dalam satu bahasa (Rusia). Ide awalnya adalah memberi label satu elemen dari pasangan, bukan tanda nasional, jadi saya tidak melakukan tiga warna atau hal lain seperti itu.

Sepertinya hampir curang, tetapi saya tidak ingin melakukan ujian atau tes pengetahuan penuh. Ujiannya menegangkan, dan saya membutuhkan permainan yang paling mudah dan paling menyenangkan sehingga selama pertandingan perasaan kemenangan dan kepercayaan diri terbentuk. Saya pikir ini adalah salah satu kualitas terpenting dari timekiller kultus seperti Bejeweled atau Zuma. Pemain melewati batas optimal antara keterampilan dan ketidakmampuannya, bersenang-senang dan kembali ke permainan lagi dan lagi.
Bagaimana dengan aturan - saya mengambil langkah lain dalam penyederhanaan dari Mahjong Connect dan memungkinkan saya untuk membuat pasangan dari chip yang cocok, dan bukan hanya mereka yang tidak dikunci. Ada dua alasan mengapa ini terjadi. Yang pertama adalah bahwa saya tidak memiliki kode mahjong siap pakai di tangan dan saya diuji hanya berpasangan. Yang kedua adalah saya menemukan bahwa chip dengan kata-kata dalam bahasa yang berbeda dalam diri mereka sendiri menyulitkan gameplay dan memasangkannya sudah menciptakan perasaan permainan.
Ke depan - jika Anda membuat koneksi penuh dan mahjong dengan chip yang sama, itu sebenarnya akan menjadi jauh lebih mudah untuk dimainkan. Faktanya adalah bahwa pembatasan tambahan pada chip akan mempersempit pilihan dan pemain hanya dapat memeriksa semua chip yang cocok untuk permata yang bebas untuk permata - dan ini akan memberikan peningkatan tajam dalam kemungkinan kebetulan dari 25% menjadi 50 atau bahkan seratus, tergantung pada tata letak.
Tetapi tidak peduli betapa mudahnya untuk bermain atau menipu, tujuan utama dalam permainan seperti itu masih akan terpenuhi - otak pemain akan terus-menerus mencocokkan beberapa kata dalam bahasa asli dan asing mereka. Jika seseorang berhasil membuat timekiller seperti itu, maka puluhan jam di dalamnya akan berubah menjadi manfaat bagi para pemain, tidak peduli bagaimana mereka menipu. Meskipun pembelajaran sadar tentu selalu lebih baik.
Pemrograman
Untuk proyek ini, saya menggunakan JavaScript reguler dan mesin permainan Phaser.io 2.10.2. Mengapa game HTML5 bagus - memungkinkan Anda untuk dengan cepat memberikan akses untuk menguji dan menjalankan prototipe. Saya sudah berhasil memastikan pada proyek-proyek lain bahwa sebagai sarana untuk membuat permainan lintas-platform, HTML5 tidak terlalu baik (drawdown yang terlihat pada FPS pada ponsel yang lemah, masalah kompatibilitas lintas-browser, kebutuhan untuk memikirkan jembatan ke API asli dalam beberapa kasus). Tetapi sebagai alat untuk membangun prototipe web dan mainan web, itu adalah pilihan yang baik.
Seperti dalam kasus
karavan pasca-nuklir , saya mulai mengembangkan dengan menyusun model keadaan permainan - yaitu, kelas data dengan bidang yang hanya mencerminkan kemajuan pemain saat ini.
function GameState() { this.pairKey = "ru-en";
Untuk menyimpan dan memuat status permainan di JS berbasis browser, cukup dengan membuat serial dan deserialisasi model ini saat menulis dan membaca ke penyimpanan lokal - dan karenanya kami mendapatkan kemajuan yang tersimpan di komputer pengguna hanya dalam beberapa baris.
Menempatkan chip di lapangan, memproses klik mouse dan layar sentuh di Phaser diimplementasikan dengan cukup sederhana. Ini memiliki kelas Grup, yang memungkinkan Anda untuk secara otomatis menyelaraskan semua objek visual yang ditambahkan padanya sesuai dengan kisi yang diberikan.
Namun, hanya persegi panjang biasa (atau kotak, jika Anda mengatur langkah besar) yang dapat dilakukan dengan cara ini, yang terlihat cukup primitif. Oleh karena itu, saya menulis fungsi tata letak saya, di mana setiap baris kedua digeser setengah chip - ternyata tata letak "batu bata".
Tapi saya harus menyelesaikan masalah utama dengan kamus.
Game kamus dan font
Hal pertama yang akan menarik perhatian semua orang, jika mereka belum tergesa-gesa - panjang chip tidak cukup untuk menampilkan semua kata dalam kamus secara memadai. Anda dapat menyelesaikan ini dengan mengubah ukuran font secara sewenang-wenang tergantung pada panjang kata.
Ukuran font yang berbeda untuk panjang yang berbeda - itu terlihat agak gila, menurut sayaTetapi opsi ini menurut saya terlalu buruk, jadi saya memutuskan untuk hanya menyaring kamus dan hanya menyisakan kata-kata yang tidak lebih dari 9 karakter dalam kedua kasus (Rusia dan Inggris). Dalam kasus saya, ini diizinkan, karena saya menggunakan kamus frekuensi sebagai basis - yaitu, kata-kata di dalamnya diurutkan berdasarkan frekuensi penggunaan. Dalam seribu kata pertama, lebih dari 9 karakter, ada sangat sedikit, dan dalam sepuluh besar, yaitu, yang paling sering, tidak ada sama sekali.
Batas 9 karakter cocok pada tahap memeriksa konsep untuk kata-kata yang paling umum, tetapi jika Anda mengembangkan prototipe, cepat atau lambat Anda harus melakukan sesuatu tentang hal itu. Kemungkinan besar, ubah proporsi chip atau tambah ukurannya. Untuk bahasa Jerman, ini harus dilakukan bahkan dalam kerangka ratusan kata pertama yang paling populer - dan saya juga ingin menguji bahasa Jerman, ingat tahun-tahun sekolah.
Poin kedua adalah kebetulan visual dari huruf-huruf dalam bahasa Inggris dan Rusia. Bahasa Rusia βtidakβ dan bahasa Inggris yang ia gunakan dalam huruf besar sering bertepatan hanya dengan piksel. Kamus frekuensi meningkatkan efek ini karena kata-kata pendek ini berakhir dalam satu pelajaran hampir di awal.
Bahasa Rusia TIDAK dan Bahasa Inggris HE dalam huruf besar terlihat samaBendera abu-abu membantu dengan lemah, kata-katanya membingungkan. Setelah keluhan pertama dari penguji, saya mengubah huruf prasasti menjadi huruf kecil biasa. Dan kemudian saya melihat bug berikutnya - surat-surat mulai menari, dalam beberapa kata melayang secara vertikal dengan seluruh piksel.

Alasannya adalah karena saya menggunakan font raster tunggal untuk output (dibentuk sebagai satu set huruf-gambar dalam ukuran yang sama), menskalakan sesuai kebutuhan. Dalam kebanyakan kasus, ini berjalan dengan lancar, tetapi huruf bundar muncul dalam huruf kecil - kadang-kadang satu piksel dimakan, yang memberikan efek menari.
Moralitas: font raster untuk teks kecil harus segera disiapkan dalam ukuran yang tepat
Setelah menyiapkan font terpisah, semua orang berhenti menari dan berdiri di sepanjang garis dasar.

Jika Anda akan menggunakan Phaser atau mesin HTML5 lain dalam proyek Anda, berikut ini tip lainnya: tampilkan font raster segera dalam warna yang akan digunakan dalam game. Jika tidak, ini memberikan tekanan tambahan pada prosesor, yang dalam game dengan banyak aksi dan efek dapat menyebabkan penurunan FPS yang kuat. Selain itu, bahkan di Chrome seluler terbaru pada beberapa tablet Android, warna "non-pribumi" yang ditetapkan oleh font bitmap secara terprogram mungkin tidak ditampilkan sama sekali - outputnya akan menjadi default.
Dan, tentu saja, kamus untuk permainan seperti itu paling baik terhubung sebagai file yang dapat diunduh secara terpisah - ini akan memungkinkannya diperbarui jika kesalahan ketik atau opsi yang meragukan diperhatikan.
Sebagai contoh, versi kamus saya tampaknya telah dikompilasi dari array teks yang diterjemahkan, dengan mempertimbangkan konteksnya, jadi "apa" dalam pelajaran pertama di sana diterjemahkan sebagai "itu". Jelaslah bahwa dalam pengertian ini partikel ini digunakan lebih sering daripada pertanyaan, tetapi untuk belajar tanpa konteks itu tidak cocok.
Kesimpulan kosakata utama saya adalah bahwa partikel dan kata-kata lain yang sangat peka konteks tidak cocok untuk belajar berpasangan murni. Pilihan solusi yang saya lihat adalah membuat mainan terpisah dalam partikel atau membuat chip dengan teks yang lebih panjang. Opsi kedua terlihat lebih logis, karena Anda tidak akan melek huruf hanya dengan satu kata dan Anda perlu sepenuhnya belajar bahasa dengan konteks, setidaknya dengan bantuan ekspresi kecil. Dan itu berarti - masih ada banyak eksperimen di depan!
Tutorial
Pada awalnya saya menguji sebuah game di mana chip diletakkan dengan sederhana - dan itu menarik, karena gameplay dikurangi dengan mengingat kembali ekspresi yang sudah dikenal dan ini memberikan perasaan kemenangan mudah, yang diperlukan. Tetapi kemudian saya menyadari bahwa ini tidak akan berhasil dengan bahasa yang sama sekali tidak saya kenal. Karena itu, saya harus menambahkan opsi belajar - sebelum memulai pelajaran, permainan menunjukkan chip dalam pasangan yang benar, dan kemudian mencampurnya.

Secara teknis, ini diimplementasikan sebagai berikut - level awalnya diletakkan seperti biasa, yaitu, dalam urutan acak. Kemudian, jika opsi tutorial dinyalakan, sebuah fungsi diluncurkan yang mengingat koordinat awal chip, menambahkan animasi penerbangan dan layout ke mereka dalam pasangan kerja, dan kemudian semuanya kembali ke tempatnya. Karena perhitungan dan persiapan tutorial dilakukan sebelum dimulainya siklus pembaruan pertama (menggambar ulang layar), tampaknya bagi pengguna bahwa permainan pertama-tama menampilkan chip dalam urutan yang benar, dan kemudian secara acak mengocoknya.
Di mesin Phaser, Group memiliki metode acak yang berfungsi seperti mengacak array biasa, tetapi secara bersamaan memperbarui indeks-Z. Ini adalah fungsi yang sangat nyaman, yang tentunya akan berguna untuk implementasi mahjong penuh dan permainan lainnya, di mana setidaknya ada dimensi ketiga bersyarat dan elemen saling tumpang tindih.
Algoritma awal permainan terlihat sederhana - kami mengambil N pasangan dari kamus pasangan untuk pelajaran yang diberikan, membentuk elemen chip visual dari mereka, kemudian membuat acak dan membangunnya menjadi kotak - kami mendapatkan tata letak pseudo-acak.
Proses sebaliknya berlangsung di tutorial - fungsi sort dipanggil pada array chip, di mana pasangan id dari kamus adalah parameter yang signifikan - dengan cara ini chip disusun satu demi satu secara berpasangan, setelah itu tetap menempatkannya dalam dua kolom.
Kemajuan
Untuk memantau kemajuan, saya menambahkan indikator kecil ke menu mulai dan tanda bintang, yang akan muncul ketika semua level selesai dalam seratus kata. Tangkapan layar menunjukkan situasi buatan dengan bintang uji.

Saya membawa Sultan dengan wajah Cartman di Craftpix.net - dia berjalan dengan kit gratis yang sama dengan berlian. Hanya untuk meningkatkan screensaver. Meskipun, jika Anda tidak menyukai Sultan atau Cartman, saya akui bahwa langkah tersebut tidak terlalu berhasil.
Kesimpulan dan Prospek
Saya yakin bahwa timekiller pelatihan adalah timekiller nyata, dan bukan prototipe yang saya lakukan adalah mungkin. Dan ketika mereka muncul dalam jumlah besar, dunia bisa berubah menjadi lebih baik. Minimal, jutaan orang tidak akan menghabiskan ratusan jam.
Jika Anda memiliki kode untuk permainan reguler dalam kombinasi dan beberapa hari gratis, cobalah bereksperimen, setidaknya dengan beberapa kata. Anda dapat mengambil
file JSON yang sudah selesai di sini . Memiliki lebih dari seribu pasang, saya terbentuk dengan margin.
Semua game match3 dan match2 - dengan bola, berlian, chip mahjong, ikan dan anak-anak, dengan tata letak fraktal dinamis seperti Zuma atau bidang statis, seperti di sebagian besar game - ini pada dasarnya adalah tugas untuk membuat kombinasi, untuk memilih grup berdasarkan beberapa kriteria .
Dalam permainan saat ini, tanda ini tidak membawa muatan apa pun, orang hanya menggabungkan bola merah dan hijau, permen jelly bergaris transparan dan anak marmalade lengket. Tetapi bagaimana jika anak-anak ini jenuh dengan vitamin sehat? Saya ingat bahwa saya mempelajari sejumlah kata dalam bahasa Inggris dari Fallout dan Heroes Might and Magic, yang berarti vitamin-vitamin itu ada.
Prototipe permainan saya
dapat diuji di sini . Ada pilihan ratusan dan level yang berbeda, pelestarian, kemajuan, dan ribuan kata bahasa Inggris yang paling umum. Layout dirancang untuk monitor desktop atau tablet. Setiap level dirancang untuk beberapa menit, berisi 5 kata baru dan 6 diulang dari yang sebelumnya (sesuai dengan rumus pengambilan sampel acak 3, 2, 1).
Diperbarui 06.13.18 : menambahkan transisi antara ratusan kata dan salut ketika melewati level terakhir di setiap seratus. Juga dihapus dari kamus adalah beberapa pasangan kontekstual yang tidak masuk akal dalam terjemahan tunggal. Dioptimalkan bekerja dengan memori.