
Pada tahun 1985, Alexey Pajitnov dan Vadim Gerasimov merilis Tetris. Gim yang menarik dan sangat adiktif ini mengharuskan pemain untuk menyambung bagian yang muncul
secara acak . Sejak itu, lebih dari 150 versi Tetris berlisensi telah dirilis. Berbeda dalam mode permainan, aturan, dan implementasi, mereka semua bermain sedikit (atau sangat) berbeda. Tetris randomizer adalah fungsi yang mengembalikan bentuk yang dipilih secara acak. Selama bertahun-tahun, aturan untuk memilih bentuk telah berevolusi, memengaruhi permainan dan keacakan itu sendiri. Beberapa algoritma ini telah direkayasa balik dan didokumentasikan. Saya telah menyusun daftar pengacak yang saya anggap penting, dan saya akan menunjukkan dalam artikel bagaimana struktur internal Tetris telah berubah selama bertahun-tahun.
Tetris (c. 1985)
Versi Tetris pertama dan asli memiliki pengacak tanpa bias. Tidak ada yang mempengaruhi pilihan figur berikutnya, itu hanya dipilih dan ditunjukkan kepada pemain.
Ketika menggunakan pengacak tanpa perpindahan, muncul situasi di mana pemain menerima urutan satu sosok (disebut "banjir", banjir) atau urutan di mana tidak ada sosok tertentu (disebut "kekeringan", kekeringan). Kita akan melihat bagaimana perancang versi Tetris yang berbeda mencoba sedikit merapikan masalah ini.
Meskipun pengacak tanpa bias menciptakan kompleksitas puzzle terbesar untuk pemain, itu tidak stabil dan dapat menyebabkan
urutan yang tak terkalahkan (PDF) . Namun, ini tidak terjadi dalam permainan nyata, karena komputer tidak memiliki generator nomor acak yang sebenarnya. Pseudorandom number generator (PRNGs) mencoba mensimulasikan keacakan yang sebenarnya, tetapi tidak memiliki properti yang dapat menghasilkan dalam 70 ribu baris bentuk Z.
Keacakan semu yang benar
function* random() { const pieces = ['I', 'J', 'L', 'O', 'S', 'T', 'Z']; while (true) { yield pieces[Math.floor(Math.random() * pieces.length)]; } }
Kesulitan puzzle: 4/5
Pencegahan Banjir: 0/5
Pencegahan Kekeringan: 0/5
Tetris , Nintendo (1989)
Empat tahun kemudian, versi Tetris for
NES yang sangat populer dirilis .
Untuk mengurangi jumlah banjir (pengulangan) angka, pemeriksaan riwayat telah ditambahkan ke pengacak. Pemeriksaan sederhana ini melakukan hal berikut:
- pilih gambar
- memeriksa apakah angkanya cocok dengan yang sebelumnya,
- jika demikian, maka algoritme memilih bentuk baru, tetapi hanya sekali,
- dan apa pun hasilnya, angka itu diberikan kepada pemain.
Meskipun kemungkinan mendapatkan satu bagian berturut-turut menurun, tidak ada yang mencegah permainan mengeluarkan dua bolak-balik. Selain itu, dalam versi ini, kekeringan lebih dari 30 angka adalah situasi yang sering terjadi. Kekeringan dapat terjadi untuk semua jenis tetramino, tetapi figur I penting untuk mencetak gol dalam permainan ini, dan kekeringan hebatnya dapat secara signifikan mempengaruhi skor akhir.
Menghafal cerita 1 angka secara mendalam dan dengan 1 lemparan
function* historyRandomizer() { const pieces = ['I', 'J', 'L', 'O', 'S', 'T', 'Z']; let history; while (true) {
Kesulitan puzzle: 5/5
Pencegahan Banjir: 2/5
Pencegahan Kekeringan: 0/5
Tetris: The Grand Master (1998)
Meskipun
Tetris untuk NES meningkatkan algoritma dibandingkan dengan pengacakan tanpa bias, kekeringan di dalamnya masih sering terjadi.
Tetris: Grand Master (
TGM ) pada dasarnya menggunakan sistem yang sama, tetapi dengan sejarah yang lebih panjang dan lebih banyak lemparan.
Karena peningkatan nilai-nilai ini, tidak hanya jumlah banjir berkurang, tetapi situasi dengan kekeringan juga membaik. Empat tokoh dilestarikan dalam sejarah, dan ini berarti bahwa probabilitas untuk memperoleh sosok yang sudah tidak ada sejak lama meningkat. Meskipun demikian, permainan masih tidak memiliki aturan ketat untuk mencegah kekeringan dan mereka masih terjadi, meskipun jauh lebih jarang daripada di
Tetris untuk NES .
Menghafal sebuah cerita dengan 4 buah dan 4 lemparan
function* historyRandomizer() { const pieces = ['I', 'J', 'L', 'O', 'S', 'T', 'Z'];
Kesulitan puzzle: 4/5
Pencegahan Banjir: 4/5
Pencegahan Kekeringan: 2/5
Tetris Worlds et on (2001)
Tetris Worlds memperkenalkan massa ke generator acak. Dia sekarang menjadi pengacak resmi, dalam sebagian besar versi resmi game setelah
Tetris Worlds, dan hingga hari ini dia digunakan.
Pengacak berbasis sejarah membantu menyingkirkan banjir (atau setidaknya menguranginya), tetapi tidak menghentikan kekeringan. Dalam kondisi tertentu, masih ada kemungkinan mendapatkan urutan angka yang mematikan.
Generator acak (Random Generator) memecahkan masalah ini melalui penggunaan sistem baru "tas" (tas). Dalam sistem ini, daftar gambar ditempatkan dalam "tas", setelah itu angka-angka diekstraksi secara acak satu demi satu sampai "tas" kosong. Ketika kosong, potongan kembali ke sana dan proses berulang. Generator Acak memiliki "tas" ukuran 7 (7-tas), yaitu, "kantong" diisi dengan masing-masing 7 tetraminos. Jenis "tas" lain dimungkinkan, misalnya 14 tas, di mana dua potong setiap jenis tetramino ditempatkan.
Karena kurangnya sejarah "tas", banjir dari 2 angka dan "ular" dari 4 angka dapat terjadi di persimpangan mereka (

,

dll.) Artinya, dalam arti tertentu, ini adalah langkah mundur dibandingkan dengan
Tetris tradisional
untuk SEN .
Potongan-potongan keluar dari 7-tas secara stabil, yang membuatnya lebih mudah diprediksi. Sangat mudah untuk memahami bagian "tas" tempat Anda berada, dan kapan sosok yang Anda butuhkan bisa muncul. Karena prediktabilitas generator keacakan ini, permainan sebenarnya dapat
dimainkan tanpa akhir . Secara umum, ini adalah sistem yang sangat bodoh, dan tidak jelas bagaimana umumnya menjadi pengacak resmi.
7-tas
function* randomGenerator() { let bag = []; while (true) { if (bag.length === 0) { bag = ['I', 'J', 'L', 'O', 'S', 'T', 'Z']; bag = shuffle(bag); } yield bag.pop(); } }
Kesulitan puzzle: 3/5
Pencegahan Banjir: 3/5
Pencegahan Kekeringan: 4/5
Tetris: The Grand Master 3 - Terror-Instinct (2005)
TGM3 telah sangat maju gagasan menghasilkan keacakan. Ini adalah sistem unik yang tidak ditemukan dalam versi lain.
Alih-alih tas atau cerita, TGM3 menggunakan kumpulan bentuk. Awalnya, ia memiliki 5 angka dari setiap jenis, yaitu total 35 angka. Ketika sebuah figur ditarik, itu tidak dikeluarkan dari kolam, tetapi digantikan oleh figur dengan kekeringan terbesar (yang belum dihapus untuk waktu yang lama). Berangsur-angsur, kolam semakin dipenuhi dengan sosok ini sampai akhirnya ditarik keluar. Ini memecahkan masalah sistem "tas", serta sistem dengan sejarah; dia mengambil yang terbaik dari kedua jenis pengacakan.
Kelompok 35 angka dengan 6 lemparan
function* tgm3Randomizer() { let pieces = ['I', 'J', 'L', 'O', 'S', 'T', 'Z']; let order = [];
Kesulitan puzzle: 4/5
Pencegahan Banjir: 4/5
Pencegahan Kekeringan: 4/5
Kesimpulan
Sulit untuk menarik hasil yang pasti. Pengacak TGM3 tampaknya lebih mudah diprediksi dan kurang kompleks untuk pemain. 7-bag canggung terasa tidak alami, tetapi memungkinkan Anda untuk membuat banyak strategi membangun yang stabil. Pengacak yang tidak ramah, seperti di Tetris for NES, dapat merusak permainan Anda, atau, lebih mungkin, suasana hati Anda untuk bermain.
Bisakah kita memperbaiki sistem ini dengan membuatnya tampak lebih acak, dan dengan menempatkan pembatasan parah pada kekeringan dan banjir? Atau apakah pembatasan ketat seperti itu hanya membuat game lebih mudah diprediksi?