2006年10月11日水曜日

XML と YAML

Pict1126
現在のプロジェクトで必要になったので、XML を調べることに。これまで、XML はRSS などで利用するだけだったので、実際に理解して、それを作成するプログラムを書くのは初めてです。



で、ちょっと調査し始めて痛烈に感じたのは、「XML めんどくさー!」の一言。なんつーか、軽く作って、軽く使いたいだけなのに、理解しておかなくてはいけないことが多いコト、多いこと。しかもめんどくさいだけで、作成に関してなにか技術的ハードルが有るわけではないので、モチベーションも今ひとつ上がらないまま、Ruby スクリプトを書き終えましたヨ。ふぅ。



ところで今回 XML を調査するその過程で、YAML というフォーマットを知ったんですよ。これは、XML の逆を行くようなフォーマットで汎用性は低いけれど、シンプルで理解しやすいというモノなんですよね。しかも、フォーマットのレベルで、配列やハッシュ、そして参照などが定義されているので、使う方が考えなきゃいけないことが少ない。



ちなみに、自分が好きな Ruby に対応するライブラリが整備されていることもポイント高いかも。ネット上に良い記事も充実してるし。



で、考えたのは、このフォーマットってゲームのセーブデータやデータテーブルに持ってこいなのではないかということです。これまで、ゲームのセーブデータやテーブルって言うと、バイナリが大前提だったとおもうのですが(すくなくともコンシューマでは)、バイナリでなにが困るかというと、ちょっとデータ構造がかわるとすぐにアクセスできなくなってしまうコトです。



たとえば、セーブしなきゃいけない情報が追加されると、もう、古いデータが使えなくなりやすい(というか、大抵、つかえない)のですね。バイナリの場合。



これは CD-ROM などで配布するゲームでは良かったのかもしれませんが、ネットワークゲームのように、随時、バージョンアップされていくようなゲームでは、かなりまずい事態を引き起こしかねません。



ある日、ゲームにパッチを当てたら、セーブデータが使えなくなったと言うことは許されないわけですし。で、その為に、セーブデータをコンバートをするようなプログラムを制作側が提供しなくてはいけなくなったりとか、いろんな手間、不都合が考えられるわけです。



しかし、たとえば、シンプルだけれど、柔軟性が高い YAML の様な形式でセーブデータを保存しておければ、そんなにコストをかけずに新しい情報が増えても柔軟に対応していけるんじゃないかと思ったわけです。



もちろん、テキストのままだと、簡単に改造されてしまうので、なんらかの暗号化は必要だと思いますけれどね。



PS3 の様にゲーム機のスペックが相当なレベルまで上がってしまっている昨今では、ゲームのデータにも多少の冗長性を持たせたところで、YAML のパースなんて、一瞬でおわるだろうし、ほとんど困らないと思いますから、こういった点もこれまでと変わっていくところなのかもなーとか、適当に考えたりしたのでした。



というか、パソコンの世界では、当たり前のことなのかもしれないですけれどねー



0 件のコメント: