
في عام 1985 ، أصدر أليكسي باجيتنوف وفديم جيراسيموف Tetris. هذه اللعبة الرائعة والادمان تتطلب من اللاعبين توصيل قطع تظهر
بشكل عشوائي . منذ ذلك الحين ، تم إصدار أكثر من 150 إصدارًا مرخصًا من Tetris. بالتباين في أوضاع اللعبة وقواعدها وتنفيذها ، لعبت جميعها بشكل مختلف (أو كبير جدًا). أداة التتريس العشوائية هي وظيفة تقوم بإرجاع شكل تم اختياره بشكل عشوائي. على مر السنين ، تطورت قواعد اختيار الأشكال ، مما يؤثر على طريقة اللعب والعشوائية نفسها. تم تصميم بعض هذه الخوارزميات وتوثيقها بشكل عكسي. قمت بتجميع قائمة من العوامل العشوائية التي أعتبرها مهمة ، وسأبين في المقالة كيف تغير الهيكل الداخلي لـ Tetris على مر السنين.
تتريس (حوالي عام 1985)
كان الإصدار الأول والأصلي من تتريس العشوائية دون تحيز. لم يؤثر أي شيء على اختيار الشكل التالي ، لقد تم اختياره وعرضه على اللاعب.
عند استخدام أداة عشوائية دون إزاحة ، تنشأ المواقف التي يتلقى فيها اللاعب سلسلة من رقم واحد (تسمى "فيضان" ، أو فيضان) أو تسلسل لا يوجد فيه شخصية معينة (تسمى "الجفاف" ، الجفاف). سنرى كيف حاول مصممو إصدارات مختلفة من Tetris حل هذه المشكلة قليلاً.
على الرغم من أن أداة عشوائية بدون تحيز تخلق أعظم تعقيد الألغاز للاعبين ، إلا أنها غير مستقرة ويمكن أن تؤدي إلى
تسلسل لا يقهر (PDF) . ومع ذلك ، لا يحدث هذا في لعبة حقيقية ، لأن أجهزة الكمبيوتر لا تحتوي على مولدات الأرقام العشوائية الحقيقية. تحاول مولدات الأرقام العشوائية (PRNGs) محاكاة العشوائية الحقيقية ، ولكن ليس لديها خصائص يمكن أن تولدها على التوالي 70 ألف شكل من الأشكال Z.
عشوائية عشوائية الزائفة
function* random() { const pieces = ['I', 'J', 'L', 'O', 'S', 'T', 'Z']; while (true) { yield pieces[Math.floor(Math.random() * pieces.length)]; } }
صعوبة اللغز: 4/5
الوقاية من الفيضانات: 0/5
منع الجفاف: 0/5
تتريس ، نينتندو (1989)
بعد أربع سنوات ، تم إصدار النسخة الشائعة بشكل غير عادي من Tetris لـ
NES .
لتقليل عدد الفيضانات (التكرار) من الأرقام ، تمت إضافة التحقق من التاريخ إلى عشوائي. قام هذا الفحص البسيط بما يلي:
- اختيار الرقم
- فحص ما إذا كان الرقم يطابق الرقم السابق ،
- إذا كان الأمر كذلك ، فاخترت الخوارزمية شكلًا جديدًا ، ولكن مرة واحدة فقط ،
- وأيا كانت النتيجة ، تم إعطاء الرقم للاعب.
على الرغم من أن احتمالية الحصول على قطعة واحدة على التوالي آخذة في التناقص ، لم يمنع أي شيء اللعبة من إصدار قطعتين بالتناوب. بالإضافة إلى ذلك ، في هذا الإصدار ، كان الجفاف على أكثر من 30 شخصية وضعًا متكررًا. يمكن أن يحدث الجفاف لأي نوع من أنواع tetramino ، لكن الرقم الأول مهم للتسجيل في هذه اللعبة ، وقد يؤثر الجفاف الكبير على النتيجة النهائية.
حفظ قصة قصة 1 في العمق ومع 1 رمي
function* historyRandomizer() { const pieces = ['I', 'J', 'L', 'O', 'S', 'T', 'Z']; let history; while (true) {
صعوبة اللغز: 5/5
الوقاية من الفيضانات: 2/5
منع الجفاف: 0/5
تتريس: جراند ماستر (1998)
على الرغم من أن
Tetris for NES حسّن الخوارزمية مقارنة بالعشوائية دون تحيز ، إلا أن حالات الجفاف فيها كانت متكررة.
Tetris: يستخدم Grand Master (
TGM ) بشكل أساسي نفس النظام ، ولكن مع تاريخ أطول والمزيد من الرميات.
نظرًا للزيادة في هذه القيم ، لم ينخفض عدد الفيضانات فحسب ، بل تحسنت أيضًا حالة الجفاف. تم الحفاظ على أربعة أرقام في التاريخ ، وهذا يعني أن احتمال الحصول على الرقم الذي لم يكن موجودا لفترة طويلة زاد. على الرغم من ذلك ، لا تزال اللعبة تفتقر إلى قاعدة صارمة لمنع حدوث حالات الجفاف وما زالت تحدث ، وإن كان ذلك أقل في كثير من الأحيان في
Tetris لـ NES .
حفظ قصة مع 4 قطع و 4 رميات
function* historyRandomizer() { const pieces = ['I', 'J', 'L', 'O', 'S', 'T', 'Z'];
صعوبة اللغز: 4/5
الوقاية من الفيضانات: 4/5
منع الجفاف: 2/5
Tetris Worlds et on (2001)
قدم
Tetris Worlds الجماهير للمولد العشوائي. هو الآن العشوائي الرسمي ، في معظم الإصدارات الرسمية للعبة بعد
Tetris Worlds ، وحتى يومنا هذا يتم استخدامه.
ساعدت العشوائيات القائمة على التاريخ في التخلص من الفيضانات (أو على الأقل تقليلها) ، لكنها لم توقف الجفاف. في ظل ظروف معينة ، كانت هناك إمكانية للحصول على سلسلة مميتة من الأرقام.
يقوم المولد العشوائي (المولد العشوائي) بحل هذه المشكلات من خلال استخدام نظام جديد من "الحقائب". في هذا النظام ، يتم وضع قائمة الأشكال في "حقيبة" ، وبعد ذلك يتم استخراج هذه الأرقام عشوائياً واحدة تلو الأخرى حتى "الحقيبة" فارغة. عندما تكون فارغة ، تعود القطع إليها وتتكرر العملية. يحتوي Random Generator على "حقيبة" بحجم 7 (7 أكياس) ، أي "حقيبة" مليئة بكل من 7 tetraminos. أنواع أخرى من "أكياس" ممكنة ، على سبيل المثال حقيبة 14 ، والتي وضعت قطعتين من كل نوع من tetramino.
بسبب عدم وجود تاريخ "للأكياس" ، قد تحدث فيضانات من شخصين و "ثعابين" من 4 أرقام عند تقاطعاتها (

.

وما إلى ذلك). هذا ، إلى حد ما ، هذه خطوة إلى الوراء مقارنة
بالتتريس التقليدية
لـ NES .
تتسرب القطع من الحقيبة السبعة بشكل ثابت ، مما يجعلها أكثر قابلية للتنبؤ. من السهل فهم أي جزء من "الحقيبة" التي أنت فيها ، ومتى يمكن أن يأتي الشكل الذي تحتاجه. نظرًا لإمكانية التنبؤ بمولد العشوائية هذا ، يمكن
لعب اللعبة بالفعل إلى
ما لا نهاية . بشكل عام ، هذا نظام غبي جدًا ، ومن غير الواضح كيف أصبح عمومًا عشوائيًا رسميًا.
7-حقيبة
function* randomGenerator() { let bag = []; while (true) { if (bag.length === 0) { bag = ['I', 'J', 'L', 'O', 'S', 'T', 'Z']; bag = shuffle(bag); } yield bag.pop(); } }
صعوبة اللغز: 3/5
الوقاية من الفيضانات: 3/5
منع الجفاف: 4/5
تتريس: غراند ماستر 3 - غريزة الإرهاب (2005)
طورت TGM3 فكرة توليد العشوائية. هذا نظام فريد غير موجود في أي إصدار آخر.
بدلاً من حقيبة أو قصة ، يستخدم TGM3 مجموعة من الأشكال. في البداية ، يحتوي على 5 أرقام من كل نوع ، أي ما مجموعه 35 شخصية. عندما يتم سحب الرقم ، لا يتم إزالته من البركة ، ولكن يتم استبداله بالشكل الذي يمثل أكبر جفاف (لم تتم إزالته لفترة طويلة). تدريجيا ، تملأ المجموعة بشكل متزايد بهذا الرقم حتى يتم سحبها في النهاية. هذا يحل مشاكل أنظمة "الأكياس" ، بالإضافة إلى الأنظمة ذات التاريخ ؛ إنها تأخذ الأفضل من كلا النوعين من العشوائية.
مجموعة من 35 شخصية مع 6 رميات
function* tgm3Randomizer() { let pieces = ['I', 'J', 'L', 'O', 'S', 'T', 'Z']; let order = [];
صعوبة اللغز: 4/5
الوقاية من الفيضانات: 4/5
منع الجفاف: 4/5
النتائج
من الصعب استخلاص أي نتيجة محددة. يبدو العشوائي TGM3 أكثر قابلية للتنبؤ وأقل تعقيدًا للاعب. حقيبة 7 الخرقاء يشعر غير طبيعي ، ولكن يسمح لك لإنشاء العديد من استراتيجيات بناء قابلة للحياة بشكل مستقر. يمكن للعشوائي العشوائي ، كما في Tetris لـ NES ، أن يدمر لعبتك ، أو على الأرجح مزاجك للعب.
هل يمكننا تحسين هذه الأنظمة بجعلها تبدو أكثر عشوائية ، وبوضع قيود شديدة على الجفاف والفيضانات؟ أم أن هذه القيود الصارمة تجعل اللعبة أكثر قابلية للتنبؤ؟