テトリミノの偏り補正から見るテトリスの歴史
- 3. 自己紹介
• 情報セキュリティ会社勤務
• ゲームに関する仕事をしています?
• ゲームに関する本を書いています
• 今年度末までに脱稿させます
• 前回勉強会(2019/4)
前前回勉強会(2018/8)の予定では
「発売済み」のはずだったが…
• レトロゲーム勉強会LT皆勤
• #01 『主にマジコンの話を振り返る』
• #02 『レトロブライトを試してみた』
• #03 『和製レトロゲームの珍翻訳・良翻訳』
- 9. テトリス
• プラットフォーム合算での累計販売本数
• 1億7000万本~4億本
• 今年マインクラフト (1億7600万本) に抜かれたらしい?
• (テトリス側の計算方法に諸説あるため話半分)
• もともとは西側諸国の生産性を落とすためにソ連
が作ったサイバー兵器教育用ソフト
• 人々に効率よく単純労働をさせる仕組みの研究から
生まれたらしい
ポケモンの石原恒和氏がゲーミフィケーションについて語ったセッションをレポート
https://www.4gamer.net/games/316/G031663/20191003028/
- 10. 日本におけるテトリス
• 1988年 アーケード版『テトリス』セガ(通称セガテトリス)
• 日本におけるテトリスブームの原点
• アーケード版リリース後にライセンス違反が発覚、アーケード版は
事後承諾で販売を継続できたが、メガドライブ版は幻になる
• メガドラミニで初の完全移植
• 異論:セガエイジス2500シリーズ『テトリスコレクション』に収録されている
「メガドラ版」は?
『メガドライブミニ』びっくり話 https://www.youtube.com/watch?v=OWrju-vgZMw
- 11. 日本におけるテトリス
• 1988年 ファミコン版『テトリス』BPS
• 国内版は181万本(日本で二番目に遊ばれたテトリス)
• ファミコン版は発売後にライセンス違反が発覚(事後承諾)
• NES版(1989年)は許諾後に任天堂が制作(ファミコン版とは別物)
• NES版を使った公認の世界大会(CTWC)が2010年から毎年開催中
NES版 http://tasvideos.org/Game/nes-tetris.htmlファミコン版 https://refuge.tokyo/famicom/fc/00430.html
- 17. 乱数生成器自体の品質・実装
• 乱数列をあらかじめ決める実装
• アーケード版セガテトリスには電源パターンがある
• 前提
• 起動時にNVRAM(不揮発性)に書き込まれている乱数の種を取得
• ゲーム開始時に1000手先までのツモが決定する
• 条件
• バックアップバッテリーが切れた基板で、電源投入直後の場合
• NVRAMはゼロクリアされているため乱数の種も毎回固定になる
• 初期値 2A6D365A で上書き
(セガの他のゲームに見られる?マジックナンバー)
• 事象
• ゲーム開始後のツモ順が固定になる
• ツモ順を暗記すれば全消し狙いで効率よくカンストできる
参考:Sega Randomizer - TetrisWiki
https://tetris.wiki/Sega_Randomizer
- 20. 乱数生成器自体の品質・実装
• アルゴリズムの選定/実装が悪いとツモが偏る
• 乱数生成器が適切でも実装が悪いと偏る
• 例)rand() % 7; // 0-6までの整数が抽選(テトリミノは7種類)
• 乱数生成器から取得した値と7の剰余をツモにする方法
• rand() が返す値の範囲は基本7の倍数ではないので余りが出る
• rand()が8bit値(0-255)を返す場合
• 0, 1, 2, 3 に割り当てられたミノの出現率は 37/256
4, 5, 6 の出現率は 36/256 になってしまう
• rand()が16bit値(0-65535)を返す場合
• 0, 1 に割り当てられたミノの出現率は 9363/65536
• 2, 3, 4, 5, 6 の出現率は 9362/65536 になる
• (乱数の範囲が広いと分母が大きくなるため偏りは小さくなる)
• セガテトリス(rand()は32bit値を返すのに6bit値(0-63)に処理されている)
• 0 に割り当てられたミノ( )の出現率は 10/64
• 1, 2, 3, 4, 5, 6 の出現率は 9/64 参考:Sega Randomizer - TetrisWiki
https://tetris.wiki/Sega_Randomizer
- 22. 偏り補正のアルゴリズム
• 最初期のテトリス(1988年ぐらいまで)
• 偏り補正なし(全部確認したわけではないので、多分)
• しかしテトリスに限ったことではないが、
この時代の乱数生成器の品質はどれも難あり
• 運が悪いと理不尽なツモに悩まされる
• を待っているのにいつまでたっても が降ってこない
• 扱いに困るテトリミノ( )ばかり降ってくる
• 同じテトリミノが3回連続、4回連続で降ってくる
• どうでもいい時に が4回連続でツモる
• 同じテトリミノが3連続で降る確率は1/49、4連続なら1/343
• 150ライン消すためには375 (=150*10/4) テトリミノが必要なので、
確率としては現実的な数字
• 1ゲーム内でも複数回遭遇することはママある
• その理不尽さもまた面白いと思うのだが…
- 23. 偏り補正のアルゴリズム
• NES版テトリス(1989年)
• 同じテトリミノが連続して出にくくなる偏り補正あり
• (1) テトリミノの抽選を行う
• (2) 前回と違うテトリミノであれば決定
• (3) 前回と同じテトリミノであれば1回だけ再抽選
• 同じテトリミノが連続して出る確率は1/7→1/49に緩和
• この特性を理解した上で取れる戦略
• NEXTのNEXTを予想して投機的に積める
• NEXTのNEXTに は恐らく来ない
• 問題点
• ツモが均等になるわけではない
• 「 がいつまで経っても来ない」
という問題は残ったまま
参考:The history of Tetris randomizers
https://simon.lc/the-history-of-tetris-randomizers
- 29. 偏り補正のアルゴリズム
• ゲームボーイ版テトリス(1989年)
• 例2) を2連続でツモった場合
現在のミノ= 、NEXTのミノ= で、抽選結果= の場合
• 100 OR 001 OR 001 = 101
• 現在のミノの値と演算結果が違う場合は補正なし
抽選結果は (001) で決定
• が2連続しているが、
この処理はあくまで
3連続チェックのためなので
スルーされる
はずなのだが…
000 (L)
001 (J)
010 (I)
011 (O)
100 (Z)
101 (S)
110 (T)
- 30. 偏り補正のアルゴリズム
• ゲームボーイ版テトリス(1989年)
• 例3) を2連続でツモった場合
現在のミノ= 、NEXTのミノ= 、抽選結果= の場合
• 100 OR 000 OR 000 = 100
• 現在のミノの値と演算結果が同じ場合
再抽選する(再抽選結果に対する補正はなし)
• ⇒NEXTのミノと抽選結果が共に (000) であれば、
ORビット演算の性質上、
現在のミノの種類が何であろうと
再抽選になる
(再抽選でも が出たら
ようやく2連続のツモになる)
000 (L)
001 (J)
010 (I)
011 (O)
100 (Z)
101 (S)
110 (T)
- 31. 偏り補正のアルゴリズム
• ゲームボーイ版テトリス(1989年)
• 結果
• 同じミノが3連続で出にくくなる補正がある(本来の意図)
• しかし2連続に対して別の補正がかかってしまっている
• その補正の発生率がテトリミノごとに違っている
• ビットフラグの数が少ない値で
表現されるミノほど、
再抽選されやすく2連続で出にくい
• 同じ2連続でも
(000) 2連は出にくい
( →表参照)
• ビットフラグの数が多い値で
表現されるミノほど、
再抽選されにくく2連続で出やすい
• 一番ムカつく (011) 2連は出やすい
000 (L) (10.7 %)
001 (J) (13.7 %)
010 (I) (13.7 %)
011 (O) (16.1 %)
100 (Z) (13.7 %)
101 (S) (16.1 %)
110 (T) (16.1 %)
この補正によるミノ別ツモ確率
(補正なしなら1/7≒14.3%)
- 32. 偏り補正のアルゴリズム
• テトリス ザ・グランドマスター(1998年)
• 直近のテトリミノが出にくくなる偏り補正あり
• (1) テトリミノの抽選を行う
• (2) 直近4ミノと違うテトリミノであれば決定
• (3) 直近4ミノで既出であれば複数回(4回?)再抽選
• 一手目のツモも補正されている
• 扱いが困るミノ( )は一手目に出てこない
• 回転しても形が変わらないから面白くない
• 平らな地形に置くと屋根ができて横入れ必須になる
• 他、様々な補正(3作目はとても複雑)
• TGMシリーズの偏り補正は非常に野心的
• TGM3は「同じミノばかり降ってくる」「いつまで経っても
が降ってこない」事象はほぼ回避されている
参考:TGM randomizer – Hard Drop https://harddrop.com/wiki/TGM_randomizer
- 50. 7-bagの特徴
• 7-bagに対する疑問
• 2001年以降の正規品テトリスは、ほぼ全てが7-bag
• 7-bagを使わない場合は特殊ルール扱い(?)
• TGM3(2005年)は独自のテトリミノ補正を実装
• テトリスアルティメット(2015年)には14-bagがある
• 18年近く7-bagのままである
• 7-bagが最も最適な補正方法なのか?
• ツモの理不尽さも含めてテトリスではないのか?
• 競技性重視なら運の要素は小さくしたほうがいいのでは?
• いびつな形をしたサイコロを振って面白いのか?
• 新たな創意工夫が生まれる可能性を潰しているのでは?
• などなど…
• 対戦テトリスの戦略は、ほぼ7-bag前提
• 今更ルールを変えるのも難しくなっている
- 52. テトリスAI
• Zetris
• https://mat1jaczyyy.com/zetris
• Cold Clear
• https://github.com/MinusKelvin/cold-clear
• いずれもルールベース、対戦型テトリスに対応したAI
• プレイ動画はYouTubeに多数あり
• ぷよぷよテトリスのbotとして動作している
• すでに人類超えだが、
それに勝つプレイヤーもいるため今なお進化中
• テトリミノのツモは 7-bag 前提で思考ルーチンが組まれている模様
- 54. おすすめテトリス(これから遊ぶ人向け)
• 2019年 Switch『テトリス99』任天堂(アリカ開発)
• ニンテンドースイッチオンライン加入者なら無料で遊べる
• 99人対戦、バトルロイヤル型(実力差は運や立ち回りである程度カバーできる)
• マッチングも高速、手軽に対戦できる
• 個人的にはゲームオブザイヤー2019候補
• 2005年 AC『テトリス ザ・グランドマスター3』アリカ
• アーケード版テトリス、都内なら稼動店舗はそこそこある
• 段位認定のあるMASTERモードのリプレイ性は非常に高い
• Grand Master(最高段位)を目指すと人間卒業レベル
• スタッフロールが本編
アーケードゲーム『TGM3』の認定モードに挑戦のムービー
https://www.youtube.com/watch?v=zHI4Ycx5b5g
• さらなる上級者向けのSHIRASEモードでは、
1秒間にテトリミノが4つ降ってくる
- 55. おすすめテトリス(これから遊ぶ人向け)
• 2014年 多機種『ぷよぷよテトリス』セガ
• 基本は1対1対戦(実力差がはっきり出る)
• T-Spinやテンプレ積みといった戦略の習得は必須
• テトリス対ぷよぷよの場合、戦略を変えないと一方的にやられる
• 多機種展開だがマッチングサーバーは機種ごとに別れている
• レーティング制度はうまく機能しているとは思えない
• アクティブユーザー数が多いのはニンテンドースイッチ版らしい?
• 2018年 PS4/PC『テトリス・エフェクト』エンハンス
• VR/4K対応の没入感型テトリス
• Rez、ルミネス、Child of Edenと同じクリエイターの作品
• 基本一人用のゲーム、オンラインのランキングはある
• 雰囲気重視ならVR、プレイ性重視ならモニタ推奨
• テトリス上級者の評価はかなり分かれる