引っ越しました

2011年01月09日

Flashで復活の呪文

Flashはローカル環境にデータをセーブできる。(SharedObject)

これによりFlashコンテンツを表示させたウィンドウを閉じても、
次回それをロードすれば、前回の続きから始められる。

ただ、同じ内容のFlashコンテンツでも置いてある場所が違えば、
それぞれに保存されてしまうためセーブデータを共有できない。
また、ローカル環境に保存されるためセーブデータを持ち運び、
他の環境でロードする…という事もなかなか難しい。

ってわけで、行きつくのがドラクエの「復活の呪文」方式。


////////////////////////////////////////////////////////////////////////////////////////////

やってみた

ゲーム上でのユーザーの手順としてはこうだ。

1.セーブデータを暗号化した意味不明の文字列(復活の呪文)をコピー。
  ▼
2.ロードしたい場所、あるいは環境にあるFlashコンテンツにを開く。
  ▼
3.そのFlash内に用意した専用テキストフィールドに呪文をペースト。
  ▼
4.復号ボタンでも押してもらう。
  ▼
5.復活! 続きから始められる。

つまりデータのやりとりを、ユーザーに人力でやってもらう。
これにより、プレイ環境がどこだろうと、コンテンツの置き場所がどこだろうと、
暗号とその復号について共通のシステムを内包するFlashであれば“復活”できちゃう。
ドラクエの復活の呪文と違い、パソコンならコピペできるので、さしたる手間もない。
 ※子どもの頃はチラシの裏とかに呪文を書いたなぁ…書き間違えた時の絶望感たるや…
この方式が実現すれば、いろいろ面白い事ができそうなんだよね。

ちゅーこって、祖末な脳をフル回転させ、一応の完成をみた。
下のA、Bは「ENCODE.swf」と「DECODE.swf」という独立したFlashコンテンツだ。
SharedObjectだと、Aから保存したデータは通常Aからしか読み込めない。Bも同様。

でも、この2つのFlashコンテンツは“暗号とその復号について共通のシステム”を
内包しているため呪文をコピペするだけで“復活”(セーブデータの引き継ぎ)ができる。











同じ内容のセーブデータでも、生成される呪文は毎回ちがう。
呪文の一部を改竄して復号ボタンを押しても、まずハジかれるようになってる。

当然ながら、すでに暗号化のセオリーってものがあるはずで、
こんなのは、完全に車輪の再発明なんだけど、
誰かが作ったものを、よく理解できないまま使うより、
自分で作って把握してた方が、あとあと対応や応用しやすい。


posted by さくらい | 技術 | 更新情報をチェックする