Publicité
Publicité

Contenu connexe

Publicité

特にオチのないゲームの小ネタ

  1. 10月のLT 🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣🍣
  2. 自己紹介 2 • @S_Shimotori • 最近学習意欲と勤労意欲がない • 研究室変えて大丈夫かなあ • 某某某某某で得た金は自転車に溶かした • 身長150cmが乗れる自転車のモデルは1シリーズ しかなかったのでかなしかったです。 • 3月インターンどこ
  3. 今日の話 3 特にオチのない ゲームの小ネタ
  4. アジェンだ 4 • マップの自動生成(けっこう有名) • FFのデータ参照バグ(知る人ぞ知る) • 厨二病な名前のライブラリ(ふーん) • 自然に見える疑似乱数列の生成法(へー) • ゲームを動かす数学・物理(あっそう)
  5. ゲームの小ネタ[1] 5 マップの自動生成
  6. 昔のゲームの特徴 6 • 入れられるデータ量には限度がある • スーファミで50MB弱……らしい • 今は10GBとかがある……らしい • データ圧縮のために苦心していた時代がある • エスコン3はディスク枚数を減らすためデータの配 置を最適化したら読み込み時間がほぼ0になった • 何を言っているのかわからない
  7. データ削減例:マップ自動生成 7 • ドルアーガの塔 • 舞台は60階建ての塔、60階分のマップデータを入れ るのはしんどい • マップを自動生成すればいいんじゃね!? • 結果マップデータは60バイト未満らしい
  8. マップ自動生成の原理 8 • 基本は柱(17本*8本くらい)だけのマップ • 線形帰還シフトレジスタにより乱数を発生、柱から壁を生 やす • 線形帰還シフトレジスタは発生する乱数の値が初期シー ドで決まり、0または1を返す • ドルアーガの塔では「前の乱数値+新しい乱数値」で 00∼11の4種の乱数を発生させていた • ある柱に対して00だったらその柱から上に壁を伸ば す、とか
  9. Before 9 出典:http://yasu9780.hatenablog.com/entry/ 2015/06/17/222234
  10. After 10 出典:http://d.hatena.ne.jp/yaneurao/20130125
  11. うまくマップ自動生成する 11 • 線形帰還シフトレジスタは特定のシードを与えると同 じ値を返し続けるという性質がある • シードが255だと1を生成し続ける • 「11だったら柱から左に壁を伸ばす」と設定
  12. 最上階マップはこちら 12 • 最上階のみシード値を255とする
  13. ゲームの小ネタ[2] 13 データ参照バグ
  14. データ参照バグ 14 • ゲームにはいろいろなデータが保存されている • 古いゲームはガバガバなので、特定の動作を取ると すぐ目的外のデータを読んで意味不な動作をする • ポケモンの「セレクトBBバグ」も違うところを
 読み書きしたばっかりにバグっている • 省略
  15. FF4の64階層バグ(1/3) 15 • FF4(SFC版) • 世界を旅したり途中建物に入ったりする • ワールドマップでは階層が「0」 • 建物に入る(「行き」)と階層+1 • 建物から出る(「帰る」)は階層-1 • 「行き」の階段に入ると+1、「帰り」なら-1 • 「帰る」ときは「行き」の履歴を見ることで正しくマッ プ遷移をして元のマップに戻れる
  16. FF4の64階層バグ(2/3) 16 • とある建物では「行き」の階段ばかりが配置されてい て階層の値をインクリメントしまくることができる • 階層63の次は階層0になる(ダメ) • 63から0にしたあと階層を-1すると階層がマイナス になる • 階層がマイナスになる移動をすると、マップ遷移の 処理のとき違うところを参照するので、結果バグる • 詳細→sm18279717
  17. FF4の64階層バグ(3/3) 17 • バグ発生時に誤って読んでしまう領域の例 • 飛空 とチョコボ(主人公御一行の乗り物)を
 駐車している座標 • 各種コンフィグの値(枠の色RGBとか) • 各キャラの技の並び • 所持金 • 事前にこれらを特定の値に設定しておくことで、いい 感じのバグを引き起こすことができる
  18. 64階層バグの有効活用(1/2) 18 • 特定のマップにワープ • 前述の項目をいい感じに設定してマップ遷移を起こ すことで、好きなところに行ける • 特定の技を習得 • 敵の技すら覚える • 敵の技には、「あらゆる耐性を無視して(主人公に とっての)敵を全滅させる」技がある
  19. 64階層バグの有効活用(2/2) 19 • 「凶悪な技をひっさげて」「ラスボスのいるマップへ ワープ」することにより、素早くゲームクリアする • TASのルールでは実機で再現できるものならバグを 使ってもいいのでこのバグを利用する • バグを自重しないTASさんがFF4を1:42:03で クリア【超更新】Part 1(sm22838224)
  20. ゲームの小ネタ[3] 20 厨二病な名前のライブラリ
  21. 厨二病 21 • qiita.com/shibukawa/items/95130b2dec50301c66fe • http://mithril.js.org/ • http://elixir-lang.org/ • http://ethna.jp/doc/ • http://www.goblinphysics.com/ • https://odinge.codeplex.com/ • http://www.firerift.com/support/docs/titan/ • https://code.google.com/p/bahamut-engine/ • https://github.com/jdangerx/Cockatrice
  22. ゲームの小ネタ[4] 22 (プレイヤーにとって) 自然に見える擬似乱数列
  23. 自然な擬似乱数列 23 • 数学的に自然な擬似乱数列とプレイヤーが見て自然な 擬似乱数列は違う……という論文
 「標準的なゲームプレイヤにとって自然に見える疑似 乱数列の生成法」 • 情報処理学会にゲームプログラミングワークショッ プがあるということを初めて知りました! • まあワークショップだし具体的な成果は
  24. 自然な擬似乱数列 24 • 数学的に自然な擬似乱数列 • 大きな目で見ればばらつきはないが、部分を見ると 「コインの表裏が連続する」「サイコロの出目が連 続する」時もある • 実際のプレイヤー • コイントス等の結果は連続しないという思い込み • ある事象が起きる確率の見積もり間違い • などなど
  25. ゲームの小ネタ[5] 25 ゲームを動かす数学・物理
  26. ゲームを動かす数学・物理 26 • 「ゲームを動かす数学・物理」という本がちょっと前 に話題になっていた • 立ち読みした • 高校数学だった • そっと本棚に戻した • 報告は以上です
  27. まとめ 27 • 昔の人は苦労してたんだなあ。すごいなあ。 • 今でも昔のゲームのバグが見つかっているらしい。
 見つけてる人はきっと変態だ。 • 某FEの攻撃命中確率は表示よりも極端だぞ。マジで。
Publicité