2012年9月1日土曜日

更新予定メモ

更新予定メモ。随時付け足していきます。反応要望があれば出来る範囲でフィードバックします。
(ここから下は、ちょっとデザインとかが必要になるので掛かります)
・立ち絵アニメーションシステムの例
・もうちょっとリッチなGUIの例

(9/2 17:07更新)選択肢でctrlを間違って読んでいたのを修正しました。
(9/5)Luaマニュアル更新、その他細かいところを更新しました(バグ修正や、BASICの変数のスコープの解説を少し詳しくする、等)
(9/5 20:27)バグ修正:for文時のcontinueのバグを修正しました。
(9/6)\pで文途中のクリック待ちが出来るようになりました。ドキュメントの記述を正しく直しました。
(9/16)
ボタン機能時、特にそれらに機能を割り当てていないときに、カーソルとリターンとスペースをボタン移動と左クリックと右クリックに割り当てました。
フルスクリーン時のバグを直しました。
(9/28)プラグインリファレンス更新

(あんまり他のサイトや掲示板は見てませんので、よろしければバグ報告はこちらにももらえると、対応が早くできて助かります、すみません)

(10/20)
こちらの更新ですが、同人の作業スケジュールと合わせているもので、色々遅れてて済みません。

NScripter2 beta 公開

http://www.nscripter.com/nscr2beta.zip
現段階でexeとしては完成しており、商用ゲーム一本で採用の実績もあり、理解出来るなら実用可能ですが、リファレンスの作成と細部の調整が不十分なので済みませんがまだベータ版です。
ベーシック命令のリファレンスと、最小限の機能サンプルは完成しています。
エンジン自体はだいたい固まってきているものの、機能サンプルは急ごしらえなので不具合があるかもしれません。何かあったらご報告ください、直します。

(追記)
13:00頃再アップしました(スクリプト中の改行が一個抜けてたので入れたのと、タイトル画面を02.txtに移しただけですが)。
13:10頃再々アップしました(エフェクトのミスを修正しました。多分これで、機能面で付け忘れはないと思うのですが)。
細々とした更新はこれからもすると思います、全部告知してると大変なので、何か大きな更新があったらそのときにお知らせする感じで。
02.txtだけ弄ればとりあえず動くゲームものは作れるとは言うものの、これは本当に、ただ機能にアクセス出来るというだけのサンプルになっているので、これから、難しすぎずしかし十分実用的ないい感じのデフォルトのシステムを構築しなきゃいけないので、デザインどうするかですな。

2012年8月9日木曜日

NScripter2開発状況

セリカ2のWEB体験版が出ました。今公開しているバージョンではD3DX9ライブラリをリンクしているのですが、今回該当機能(シェーダーなど)を使っていませんので、外したバージョンもコンパイルしました。
もしD3DX9回りのトラブル報告があるようならそちらを公開しなおします。このライブラリはバージョンごとに違うので、これをリンクしていると、リンクしていないときよりも若干DirectXのバージョンへの要求が厳しくなるみたいなので。
製品版と、NScripter2公開版最初のバージョンでは、この外したバージョンで公開し、該当機能については解説しない方向で行きます。
この先どういう風に回すかは今後の使い方で考えていく予定。ひとまずこのエンジンは2Dを極めていくほうがいいかなと。
細かい修正予定がありますが、もうエンジン性能は十分公開レベルです。スクリプト作業も全ての機能を実装し終わり、あとはボイスや誤字等のミスが見つかればそれをデバッグすれば終わるところまで来ています。
この仕事が終わったら、NScripter2のマニュアルとサンプルの作成作業に掛かります。今月中には第一弾は確実に出せそうです。

2012年8月5日日曜日

NScripter2公開スケジュール

8/31までに、NScripter2の正式版を公開します。
全命令表とプラグイン仕様、機能リストがドキュメントに付く予定ですが、初心者に分かりやすいものになるかは難しいところです。ドキュメントについてはまだまだ整備が必要なものになるかもしれません。
サンプルスクリプトもあまり充実したものにはなっていないかもしれません。「とりあえずエンジン自体は商業レベルで出来上がっていますよ」というバージョンだと思ってください。
ある程度ドキュメントがこなれてきたら、なんらかの形で(書籍とかの形で)いい入門書が出せればいいのですが、今のところ予定はありません。
正式版商業第一作として、TOUCHABLEから発売される予定の「触装天使セリカ2」に正式版のNScripter2が使われます。オーソドックスなADVであり、旧NScripterでやっていたこととそれほど違う演出をしているわけではない点、それと、なにしろモノがガチ触手エロゲーですので、万人向けのサンプルとは言いがたいところですが、とりあえず商業レベルで完成しているという実例にはなるかと思います。
今後、PC向け2Dゲーム開発はこのNScripter2に集約していく予定です。機能をアピールできるような更新もしていきます。
また、NScripter2の商業作品でのご利用もお待ちしています(ドキュメントが少ないため難しいとは思います。スクリプト作業ごと発注いただければ、スケジュール次第でお引き受けできます)。利用条件についてはNScripterと同じものになる予定です。

<NScripter2の現時点でのウリ>

  • 描画にDirectXを使用しており、高速に処理できます。
  • フルスクリーン時に、解像度を変えるだけではなく、解像度はそのままで画像を拡大することも出来ます(この場合、縦横比を変えないためにスクリーンサイズによっては黒帯が入ることがある)。
  • ムービーをスプライト(BGや立ち絵等)として重ね合わせたり、α値を持った透過ムービーに対応しています。そのための変換ツールを用意しています。
  • 袋文字やグラデーションフォントに標準で対応しています。また、文字出力を外部DLLでカスタマイズするのも容易です。
  • ピクセルシェーダを使ったエフェクトも可能です(この場合、推奨環境が少し上がります)。
  • BASICをベースに設計しなおされた高機能な文法。変数は名前で管理され、配列や構造体も使え、複数行ifも使えます(プチコンBASICやVisual Basicを参考に作っています)。
  • 内部言語にLuaを用いており、柔軟な拡張性があります。DLLを直接呼び出すことも出来ます。


2012年7月31日火曜日

汎用 ゲーム開発に便利なツール


そのうちちゃんとNScripter2のサンプルに合致した形で公開しますが、一足早く公開してみます。ちょっとしたツールで作業効率アップ。

http://www.nscripter.com/toolsmpl.zip

(アーカイブに入っている「説明.txt」の内容)
【NScripter2開発ツール】
各種ツールをこのひとつのアプリにまとめる予定です。
現在、アーカイブ作成と透過動画作成が登録されています。
透過動画のほうは初代NScripterは残念ながら対応していませんが、ns2形式アーカイブファイルのほうはNScripterのそれと同じ仕様です。
NScripterについているns2arc.exeよりも動作が高速です。

【BGM/SEツール】
スクリプトにBGMやSEを打ち込むときに便利なツールです。色々なゲームのスクリプトに使える汎用ソフトです。
ソースを読めばだいたい使い方は分かると思います。マウスでタイトルをクリックするとその音声が再生され、
登録されているスクリプト文字列がクリップボードにコピーされます。それをスクリプトにペーストすればいいわけです。

【背景ツール】
スクリプトに背景を打ち込むときに便利なツールです。使い方は↑とほぼ同じです。
一画面におさまらないほど画像を登録したときは、ホイールでページを切り替えることが出来ます。

【立ち絵ツール】
スクリプトに立ち絵を打ち込むときに便利なツールです。使い方は↑とほぼ同じです。
一画面におさまらないほど画像を登録したときは、ホイールでページを切り替えることが出来ます。

2012年7月27日金曜日

3Dライブラリの実装についてメモ

3Dの分離問題だけど、LoadTextureとかUpdateTextureとかPlaySoundとかいう形でコールバック関数を登録させる形式にして解決しようかなと思う。テスト版を分離して作っているときには単純にD3DXLoadTextureとかで読んどけばいいし、製品で使うときにはアーカイブからのロードとかのグルー関数を書いて登録すればいい。メッシュデータのロードも多分同じでいい。LoadBinaryDataとかでいいかな。
2Dでしか使わない条件(現実的に、少なくとも数年は、これがメインだと思われる)でのNScripter2の動作に一切影響を与えない開発をしたい、けど、なんとか楽にNScripter2とバインドできるプロジェクトにはしておきたい、というときの対策。

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



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音響は必要?