継承

久々のコンテンツ。と言ってもいつもどおり内容は無いよー。
継承と言ってもプログラム用語的な意味ではなく、プロジェクトの継承の話。まあ、そんな大げさじゃないけど(^^; そろそろはちくまから東方サッカーが出るんじゃないかと思うけど、私も少々開発に携わっていて、その1つとしてアーカイブ部分(圧縮・暗号化)をやった。種明かしすると、sue445さんのWakanaArcを元に、彼からソースをもらってそれを私が原型をとどめない程度に改造。そしてそれを諒さんが原型をとどめない程度に改良。つまり、私は結局何もやっていないきもするのだが、実際はそうではない。原型をとどめないといってもそれはソースそのものの話であって、構想はしっかり継承されている。
WakanaArcの利点としては、差分が利くところである。これ結構重要なのだがちゃんと考えて作られているところは案外少ない。ツクールXPですら考えておらず、差分が利かず、ゲームのバージョンアップ等で変更点があったり追リソースがあってもほぼ全部取り替えなければいけないという。WakanaArcなら変更点の部分だけちょっと追加するだけで済む。この点が魅力でSRSで採用された。
そして、私は差分が利くという利点を残しつつ、SRSに都合がよくなるように機能を追加した。具体的な追加点としては、まず、アーカイブと生ファイルの両方が利くようにした。ファイルシステムはまずアーカイブを読みに行く。もしここでアーカイブ内にファイルが見つからなければ、今度は生のファイルを読みに行く。これにより開発効率が格段によくなる(はず)。普段は編集のしやすい生ファイルで扱い、リリース時にパケットすればよい。開発者は生ファイルかアーカイブかを意識せずに開発に専念できる。(ちなみにこの発想は私のオリジナルではく、元はyaneSDK)もう1つの改良点は、ストリーミングが利くというところ。音楽くらいなら全メモリ読み込みでもそれ程読み込みに時間は食わないが、ムービーのようにでかいファイルはかなり痛い。それどころかヘタしたらメモリが足りなかったりする。なのでストリーミングしたいところだが普通は自前実装になる。フリーのストリーミングライブラリは当然生ファイルを対象としている。ので、独自圧縮+ストリーミングは結構技術が高いのかどうか知らないけど、実際、市販のゲームですらムービーは暗号化されていないのが結構ある(拡張子変えただけのは暗号化とはイイマセン)。この部分を実装することにより重いα付きムービーもさくさく動くように。
最後に、諒さんがこれまでの利点を生かしつつ改良を加えた。具体的には圧縮アルゴリズムの取替えでかなり圧縮率がよくなった。というか、元々はどうやら使っていた圧縮のソースがバグがあるんじゃないかとということで怖いということで取り替えたのが原因で(^^; もう1つが、ストリーミング部分の改良で、キャッシュを扱うことにより動作を軽くすることによって少々古いCPUでもムービーが落ちなくなった。というか、元々の私の実装だとかなりハイスペックマシーンでないとムービー再生が処理落ちしたようで(^^;

こうやってプログラマは移り変わってソースは原型をとどめないくらい改造されていくが、それぞれが考えた構想は受け継がれているので、それはやはりプログラムソースに残っている。ソースそのものよりもこういった構想の継承というのは非常に重要だと思う。構想はソースを見ただけではわからないことも多々ある。何も考えずに勝手に改造したらその構想が消えてしまい、例えどんなにソースが元のままでもその時点でプロジェクトの継承の意味をなくしてしまうのではないかと思う。
今回、構想がうまく継承されたということでこのプロジェクトはかなりうまくいったのではないかと思う。ムービーストリーミングまで含め、このアーカイブシステムはかなり優れているんじゃないかと思う。3人の誰が欠けても、継承がどこで止まったとしてもこのアーカイブシステムは誕生しなかっただろうと思う。

今後ともこうありたいものだ。