2011年11月25日金曜日

アーカイブ化

紫電ではローカルでもプレイできることを想定している。
PCで普通のブラウザでローカルでプレイしてもらうためには絵、音声、テキストとかリソースを
丸出しにする必要がある。

おそらく丸出しになるのをいやがる制作者さんもけっこういると思う。
商業、同人で有料配布する時に紫電を選択肢からはずす大きな要因だと思う。

スマホの場合アプリといっしょにパッケージされるので丸出しにはならないから
現状でも問題にはならないはず。問題はPC向けだ。

今この件への対応策としては考えられるのは専用ブラウザを作ること。
webkitがオープンソースであるしもはやブラウザを自分で用意するのはかなり容易だ。
それに手を加えてアーカイブされた絵、音声、テキストを読み込めるようにすれば
よい。
で、そのexe形式の専用ブラウザとアーカイブを一緒にzip化して配布する。
ユーザーはzipの中のexeをダブルクリックすればプレイできるというわけだ。
どうせ専用ブラウザには大した機能いらないんだから2,3Mくらいの大きさにしかならないだろう。

クライアント側プログラミングなら得意とするところ、こういうところでアドバンテージを付けたい。

5 件のコメント:

  1. パッケージング(?)すると読み込みが遅くなるなんてことは無い感じですか?
    NScripterだとBGMをパッケージングすると少し読み込みが遅れるなんていう話を聞いたことがあって(MP3だけだったか)、自分は露出させているんです。

    あとすごく細かいことなんですが、
    BGMのフェードアウト機能的なものは実装する予定ですか?
    もしくは機能というよりデフォでフェードアウトにするか。
    ブツ切りだとどうも違和感を覚えてしまって。
    NScripterだと
      bgmfadeout 2000
      stop
    みたいな感じに記述して、2秒掛けてフェードアウトさせています。

    返信削除
  2. 読み込みおそくなるかどうかは、専用ブラウザの実装次第ですね。
    パッケージまるごと全部メモりにロードしてしまうような実装にしてしまえばむしろパッケージ化した方が読み込み速いですよ。

    絵、音声、テキスト合計して200M程度なら
    最近のパソコンでプレイする分には問題ないかなと。。。

    そうしないにしてもアーカイブしたときにファイルのインデックスリストを作ればそんなに遅くはならないのですが、たぶんNScripterはあまりそこを重要視せずにやらなかったのでしょう。

    なんにしろまだまだ先の機能ですので設計はおいおい。なんにしろ読み込みで問題にはならないかと。

    BGMのフェードアウトはhtml5でそのような機能サポートされてないから無理って決めつけてたのですが
    今解決策がひらめきました。音量調節は制御できるので後はタイマを使って自力でそれっぽくできると思います。

    返信削除
  3. ちなみにインデックスリストというのについて少々。

    コンピュータの動作で一番遅いのはHDDとかストレージから読み込んだり書き込んだりする時です。
    おそらくNscripterはアーカイブされたファイルを見つけるためにアーカイブされたファイルの中を目的のファイルが見つかるまでファイルの先頭から読み込んでいます。

    なので始めから読み込むべきファイルの場所がわかっていれば先頭から探す必要がありません。
    そこでインデックスリストに全ファイルのアーカイブ内での位置を記録しておきまずはインデックスリストをチェックすればすぐに目的のファイルを読み込めるというわけですな。

    返信削除
  4. おお、詳しいところをありがとうございます。
    なんとなく思ったのですが、説明すごく上手いですよね。

    返信削除
  5. いえいえ。だいぶ端折った説明ですみませんww

    返信削除