2012年7月27日金曜日

開発日誌つけ始めました。



NScripter2

現在、一般版公開前に商業マスターアップを控えて作業中。これが終わったら、まずexeとサンプルスクリプトだけのものを実験的に公開します。ドキュメントはおいおい整備していきます。
NScripterと比較しての機能面での目玉は、

  • DirectX9のDirectGraphicsを使っているので、ハードウェアアクセラレーションにより高速な描画が可能。
  • 2Dのピクセルシェーダーによるエフェクトにも対応。
  • ムービー機能が強化されている。任意のムービーをスプライトとして利用可能。また、透過動画もサポートしている。
  • 本格的なBASIC文法により、柔軟で簡潔な記述が可能になった。現在はシナリオ演出/ADVシステム記述がBASIC 個々の命令の実装がLua 描画や音声再生などの低水準ライブラリがC++、という構造になっているが、Luaだけで2Dゲームエンジンとして使うことも可能。
  • システム部分がLuaで記述されており、カスタマイズの粒度が細かくなった。たとえば、全てのフォント出力は最終的にひとつのLua関数に結び付けられており、その関数をラップすることで、全てのフォント出力をカスタマイズできる。
  • プラグインDLLの呼び出しの自由度がNScripterより高い。Luaのどこからでも自由に呼び出せて、BMPデータやテクスチャデータ等のやり取りが出来る。たとえば上記のフォント出力関数からDLL関数を呼ぶことが出来るので、フォントの出力をプラグインで行うことが出来る。
  • 最初からシステムのカスタマイズを前提としているため、仕様がシンプルになった。デフォルトのシステムというものがないので、サンプルシステムを供給していく予定。
  • 現在、NScripterと同程度の禁則処理、ルビ機能と、アウトラインフォント出力をサポートしているが、将来的にもっとリッチなものに入れ替えたい(あるいはプラグインに期待)

現状、ドキュメント整備が進んでいないのと、システムが多層構造になったため、エラーメッセージがLuaレベルのものとBASICレベルのものが混在して不親切になりがちだという問題があります。内輪で使う分には問題ないのですが、一般公開向けとしてはまずいので、これはおいおい解決していく予定。

3Dライブラリ開発

出来ればNScripter2本体から分離して単独のオープンソースライブラリにしたいのだが、画像ロードやムービーテクスチャ、音声再生等がNScripter2本体とがっちり組み合ってしまっているため分離が難しい。一度NScripter2の内部で完成させてから考えたほうがいいかもしれない。
今のところコンパイル時のマクロ設定で3D部分が丸々外せるように作ってある。

今出来ていること
  • パーピクセルライティング
  • バンプマッピング
  • スキンアニメーション(ただし仕様変更予定)

実装予定

  • 一般的な、初期姿勢行列とフレーム時姿勢行列によるスキンアニメーション(MMDのアニメ部分をそのまま実装するのは大変そうなのと、一ツールに特化しすぎてしまうと柔軟性がなくなりそうなので、一般的なツールから出力出来そうなものにしたい)
  • メッシュ、アニメーションについて、COLLADAから独自形式へのコンバータ(とりあえずCOLLADAを予定、多くのツールで吐けるので)、フリーで使えるツールとしてBlenderを想定しているが、最終的にCOLLADAであれば通るようにはする。
  • シャドウマップもしくはシャドウボリューム
  • ライトマップ
  • 環境マップ
  • 物理エンジンbullet
  • アニメーション間の補間
  • 3D音響は必要?

0 件のコメント:

コメントを投稿