情報論
情報論
学習トピック
- データ圧縮
- 可逆圧縮/非可逆圧縮
- 誤り検出/訂正技術
- パリティ,CRC
授業の流れ
- 情報論とは?
- 厳密な定義を議論するのは目的ではないので,イメージとして理解できるようにする
- ビットの話はしてるので.「情報をビット列に変え,またビット列から情報を復元する仕組みを学ぶ」とする
- 後の説明に備え,「符号化」「復号」という単語もこの時点で出しておく
- そもそも「情報」とは?
- "定義"の重要性と曖昧性は何度も出しておく
- データ圧縮
- 符号化の例として扱う
- 圧縮の2つの考え方:可逆&非可逆
- 可逆圧縮
- ここでは「ゲームにおけるデータ節約の様々な手法」から入る
- マリオとドラクエ(前の回で使ったゲームを流用.他のゲームでも同様の事例は確認可能)
- 非可逆圧縮
- 「品質を下げる」と表現.「人間が気づかない範囲の情報を削ってしまう」「演出上必要なところ以外は簡素に」
- まず画像で例を示す
- 可逆圧縮と非可逆圧縮の例を,ビット列の例を示して(単純な例で)説明
- 音声圧縮の例(PCエンジン CD-ROM^2のゲーム)
- データ冗長化
- ビット反転の可能性についてまず説明
- ゲームの「パスワード」例
- パスワードが間違ってゲームが再開できない例も示す
- パスワードの長さから推定される「表現可能なビット数」は,実際にプレイデータとして復旧できるデータを比べると明らかに多い.なぜか?
- 合わせて,バッテリーバックアップ方式で「データが消えた」メッセージを表示するゲームも紹介
- 「なぜ消えたのがわかるの?」「パスワードが間違ってるとわかるなら,なんで直してくれないの?」
- 誤り検出/訂正符号
- 例として,パリティビットを使った誤り検出と訂正の説明
- CSアンプラグドの「カード交換の手品」(参考: Error Detection | Computer Science Unplugged)を題材にミニテストを実施
- 復元可能,復元不可能,検出のみ可能,などいろんなパターンを提示
- 100%間違いなく訂正できるわけではない
- ゲームデータで誤り「検出」だけで「訂正」しないのは,ゲームの進行に支障を来す形で「訂正」してしまう可能性があるため.
- あてずっぽうでパスワードを探り当てないように,という意図もあると思われる.
- 例として,パリティビットを使った誤り検出と訂正の説明
使用題材
スーパーマリオブラザース (1985, 任天堂)
- ファミコンのグラフィック表示の原理
- 8x8ドット単位のタイルを敷き詰めてグラフィックを表示
- 背景もキャラクターも,この基本に依存
- 文字
- 使うタイルの種類が少ないほど,データサイズが小さくて済む
- 8x8ドット単位のタイルを敷き詰めてグラフィックを表示
- グラフィックにおけるデータ節約の工夫
- レンガブロック:縦横にどんどん並べても違和感がないようなドットデザイン
- 地上の草と空の雲:あるパレットの色が「白」か「緑」かの違いだけで,他は全く同じグラフィック.
ドラゴンクエスト (エニックス)
- キャラクター使い回し
- データ量節約
- キャラクターの特性値(体力,攻撃力など)だけで特徴づけ
- パターン
- 色違い
- 左右反転
- 別グラフィック重ね合わせ(剣を持つなど)
- ファミコンの文字グラフィック表示の原理
- 標準で持ってるのは「数字」と「英大文字」のみ(未確認)
- それ以外の文字を使う場合は自前で用意する必要あり
- 文字コードなんてものは当然非対応.「画像」として用意する必要あり
- つまり「8x8ドットのタイル敷き詰め」の制限を受ける
- なので,ファミコンの文字の多くは8x8ドット
- 標準で持ってるのは「数字」と「英大文字」のみ(未確認)
- 使用文字の節約
- 参考情報: http://game.watch.impress.co.jp/docs/news/20090904_312961.html
- カタカナ:20文字しかない
- ドラクエなのに「ク」も「エ」もない
- 濁点:別の8x8タイルとして表示し,清音と組み合わせて濁音文字を表現
- しかし「ド」だけは独立した文字として用意(「ドラゴン」が出てくるから?でもゴは「コ」+「゛」.町の名前にも「メルキド」「ドムドーラ」とドが多用されていて,会話の文章にも多数登場し使用頻度が高いからかもしれない.)
- 漢字:「力」は「カ」(カタカナ)で代用
- 基本的にはひらがなのみ.漢字に相当する使用文字は「力」のみ
- ふっかつのじゅもん
- ゲームの続きをプレイするために必要な文字列
- 当時,ゲームのプレイデータをセーブする機構はほとんどなかった(カセットテープ,ディスクシステムなど磁気保存の方式は一部にあったが,いずれも高価もしくは対応ソフトが少なかった)
- 主流だったのが,ゲームを中断する時に王様が教えてくれる,一見意味不明な文字列="ふっかつのじゅもん".これをメモしておいて,次にプレイを再開する時に文字列を入力すると,ふっかつのじゅもんをメモした時点のパラメータで再開できた
- 使用可能な文字:64種類 (=6bit)
- 長さ:20文字
- つまり全体で120bitのプレイデータ
- 実際にプレイデータに相当するのは,109bitだけ
- 所持アイテム,各種フラグなど
- 順番に並んでるのではなく,一つのデータを表すビット列をあちこちの文字(に対応するビット列)に分散させている(推測防止)
- ゲーム進行に大きく影響しないパラメータは入ってない(現在の体力など.再開時には満タンになっている)
- 算出可能なパラメータも入ってない(体力の最大値や攻撃力など."経験値"と"プレイヤーの名前(4文字)"から,対応する値が算出できる)
- 参考:「復活の呪文」資料室(SATOH_Yoshiyuki) http://www.imasy.or.jp/~yotti/dq-passwd.html
- 残る11bit:誤り検出符号
- CRC(Cyclic Redundancy Check, 巡回冗長符号)を利用
- ゲームの続きをプレイするために必要な文字列
イースI・II(1989, 日本ファルコム)
- PCエンジン CD-ROM^2で発売
- 特徴は「生録音の音声をそのまま再生できる(CDなので)」
- 当時の音声は無圧縮.
- 音楽・ボイスの部分だけで60分くらいあったらしい
- 無圧縮だと,大体540MB相当
- しかしWiiのバーチャルコンソール版として配信されたものは,約30MB強しかない
- ゲーム自体のボリューム当時のまま
- むしろ,PCエンジン本体のエミュレーション部分のプログラムが追加されてる分,本来なら容量が増えているはず
- 当時はムービー再生も不可能(主記憶装置が72kBしかない)
- となるとデータ節約のカギになるのは・・・音声しかない
バベルの塔 (1987, ナムコ)
- パスワード
- 4種類の絵(ゲーム中に登場する16x16のグラフィック4つ) (=2bit)
- 長さ:4個
- 8bitで表現可能
- 「認証用パスワード」に近い扱い
- 再開したいフロア(ステージ)の番号をまず自分で選んでから,対応するパスワードを入力
- フロア番号とパスワードの対応関係の法則は未調査(決めうちの可能性もある.が,容量節約のために算出できる可能性もあり?)
ロックマン2 (1988, カプコン)
- パスワード
- 5x5のマスに9個の点を置く
- パスワードを図形的表現で採用した面白い例
- 25マスx点の有無 = 25bit?
- 「9個の点を置く」という条件から,実際可能な組み合わせは2^25よりははるかに少ない
- 5x5のマスに9個の点を置く
タッチ ミステリーオブトライアングル (1987, 東宝)
- パスワード
- 使用文字:68文字 (=7bit?)
- なぜこんな中途半端な長さに・・・
- 長さ:60文字
- 7x60 = 420bit.ただし,ゲーム内容からして明らかにこんなにいらない.
- 使用文字:68文字 (=7bit?)
- 「すっごい長いパスワード」の例として,手元にあったものをネタ的に使用
- そもそもこのゲーム,同名の原作漫画のキャラクターを使ってるのだが,ゲーム内容は原作の内容と全く関係ない.
- ちなみに,10匹の迷子の子犬を見つけるために,立ちふさがる敵を野球のボールでなぎ倒していくというゲームです.
- 今の大学生でも知ってる人が多いくらい有名なマンガなので,ある種お笑いネタとして利用.学習目的で言えば,これを使う必然性は全くないです.
- そもそもこのゲーム,同名の原作漫画のキャラクターを使ってるのだが,ゲーム内容は原作の内容と全く関係ない.
ドラゴンクエストIII (1988, エニックス)
- 「おきのどくですが ぼうけんのしょ1ばんは きえてしまいました。」
- 本当はデータは消えてない.だが何らかの理由でビット反転が起こり,正常でないデータになっている
- 誤り検出技術が使われている
- ゲーム進行に悪影響が出る可能性もあるので,「きえた」ということにしてデータを削除してしまう
- 削除するのはメッセージが出た後らしく,リセットを連打するとさらにビット反転が起こって,たまにゲーム開始可能な状態になることがあるらしい
- 本当はデータは消えてない.だが何らかの理由でビット反転が起こり,正常でないデータになっている
パリティビット
- ゲーム会社の名前 (パリティビット公式Webサイト
- パリティビットの説明の際に,余談として同名の会社紹介.
- 代表作は「ダービースタリオン」.パラメータが多用されるゲームなので,もしかすると授業ネタが眠ってるかも?
その他素材
映像・音声圧縮用ミドルウェア群
- Mobiclip
- CRYWARE
- ライブラリの話を前回しているので,情報論の話に合わせて実際使われているものを紹介
- ゲームのオープニングで使用ミドルウェアのタイトルが表示されてる場合が多い
- ミドルウェアの使用ライセンスに「使ってル場合はロゴを表示する」となっている場合があるため.非表示にして良いライセンスを提供しているところもある.
- 関連URL
ファミコンの音源
概論としては内容がマニアックになってしまいそうなので,授業では触れず.ただ,デジタル音源から情報科学をひもとく授業も面白そう.
- 矩形波2音,三角波1音,ノイズ音+拡張音源(DPCM)
- 基本は3音+ノイズ音.
- 音数を多く使えば当然データサイズも増える
- DPCMで音を鳴らすとかなりデータを食うので,初期ではほとんど使われず.
- 音程と長さをビット列で直接指定
- 非可逆圧縮という概念はない.元となるデータあっての非可逆圧縮なので当然
- 先人達の知恵
- ドラクエ1:タイトルとエンディング以外のBGMは全て2音.ノイズは効果音として適宜使用.
- アルペジオ
- 和音を構成する音を,1音ずつ連続的に鳴らす演奏手法(音楽用語)
- 同時に何音も鳴らせない昔のゲーム機の環境では,和音を表現する手法として最適
- ドラクエのBGMでも多用されている
- ノイズ音源を打楽器に見立てて利用
- 音源の間引き
- BGM演奏中に別の効果音を鳴らすとき,音源の一部を一瞬だけ効果音用に使用
- 当然その間,BGMのその音源の担当部分は途切れる
- 入れ替えの際によく犠牲になるのはメロディーライン.ベースラインを消すと急にBGMが薄い感じになるから?(経験則.未検証)
その他
E3 (Electronic Entertainment Expo)
- 業界向けゲーム展示会@アメリカ
- 毎年1回開催(大体6月頃に開催)なので,この回あたりで紹介
文字コード
- 実際利用されている文字コードにも,ドラクエのような「清音」+「濁点」の表現方法がある(Unicod)
- こちらはデータサイズの節約ではなく,文字の意味づけと文字コードの対応関係というポリシーの問題だが
可逆圧縮と非可逆圧縮
- Powerpointでは,可逆圧縮の画像を載せても,勝手に圧縮処理が行われてしまう
- 色の境界線の差異を見せたいのに,境界線にブロックノイズがのっかったような画像になってしまう.
ゲームの世界での「パスワード」
- 認証用パスワード以外に,「ゲームの続きをプレイする」ためのパスワードも存在
- パスワードがプレイデータそのもの
- 1文字ごとに対応するビット列を定義
- 特定の文字の並び→ビット列→本来のプレイデータに対応付け
- パスワードがプレイデータそのもの
QRコード
- 強力な誤り訂正機能を持つ例として,補足資料で紹介
- 参考:QRコードドットコム
オーディオオカルト
- 音楽録音再生専用USBメモリー (紹介ページ)
- スペック
- 容量:4GB, 19,950円(税込)
- ケース:木製(ヴァイオリンの音響効果を応用)
- ケーブル:100%ウール外皮(音質に悪影響を与えるノイズを極力排除)
- 時間が余ったときに,これを紹介した上で「さて,これをみんなはどう思う?」と問いかけ
- コンピュータの「情報」の概念を理解してないと,ツッコミどころがわからない
- スペック