予定メモ/進捗状況

  • ns2でbmpを直接読む時に何かバグがあるらしい。ns2にbmpを格納すると容量がかなり大きくなるのであまり使わない機能だと思うけど、一段落ついたら修正します。
  • 現在商業製品でns2を使って作業中。pngを使っています。
  • 必要だったのでpngをα値を維持したまま左右もしくは上下に連結して保存するツールを作った。Luaスクリプトで連続実行できるので、好きなように連結できる。が、これは開発中のゲームエンジンをそのまま使って作ってるので、単独ツールとして公開するには無駄な部分が多すぎて、どう扱うか考え中。
    • まあいいや、ということで試験公開。次期ゲームエンジン……を使ったPNG連結プログラム。自分が使う時用に公開しておきます。http://www.nscripter.com/pngrenketu.lzh
      • 現段階でも拡大縮小無しのゲームなら作れるとは思うけど、ゲームエンジンとしてはまだまだ未完成です。
      • エンジンはDirect3D9を使っています。XP以降専用です。
        • 今回のPNG連結は、Direct3D機能を使っていません。内部のDIBクラスでデータ的に連結してるので、カードの都合で画質が変化したりはしません。
      • 試験段階なのでまだ使用条件とか決めていません。ないとは思いますが、実際にゲームエンジンとして利用して公開する人は連絡してください。

新しいエンジンについて

  • SJIS版のLuaでも英語の(オリジナルの)プラグイン類はたぶんだいたい使えるのでこのままでも外のライブラリを使う分には問題ないと思うんだけど、一応内部的にUTF-8にして、もともとのLuaを使うようにしようかな。すると中身をシフトJISで動かしてるのはあまり意味がなくなるので、Unicodeコンパイルしなおす必要があるけど、今の段階でその処理をするのは簡単なので今のうちにやる。OggPNGも内部に持ってるのでそういう改造は比較的楽。
    • ファイル名……ASCII文字(半角の字、半角かなは含まない)
      • NScripterでもそうなんだけど、こちらでもこのルールで。ファイル名処理にシフトJIS対応を組み込むと専用になってしまうので、ファイル名は最初からASCIIに限っておく。ASCIIコードと衝突する文字コードはどこの国にもたぶんないので。
    • スクリプト……シフトJISUTF-8(内部的にはUTF-8に変換される)
    • exeはUnicode版でコンパイルされ、各国語対応という感じで。
  • 現状のNScripterではC++で書かれているような処理のうち、Luaで書いても問題なさそうなものをLuaで外部に出すことで、ユーザー側からいじれるようにして、その分システムカスタマイズ周りの仕様がすっきりするようにするのが狙い。このLuaスクリプトを使って、NScripterの(システムカスタマイズを伴わない)シナリオ演出スクリプト相当のものを作り上げるので、そちらはむしろ現状のNScripterより初心者向けのはず。
  • 問題は、システムカスタマイズをやろうとしたときに、Luaの既存の入門コンテンツはほとんどがC言語を習熟しているのを前提にしていることだけど、これはまあ、そのうちなんとか。
  • NScripterのマニュアルがとっちらかってる問題。アーカイブをns2、音楽再生をnsogg2、画像をnspngに絞った形ですっきりしたガイドを書いていきたいけど、時間がない。レガシーな機能の解説まで含んでいると大変なので。
  • Lua上で行番号式のクラシックなBASIC言語を実装しようかなとか検討してる。作るのも簡単だし、プログラマじゃない人が使うにはLuaよりは敷居が低いだろうと思うので。

(メモ追記)

  • TP.exeとSGE.exeを統合する。ついでにインストーラーくらいはSGE.exeで書けるようにしてもいいかも。(今の汎用インストーラーは、ちゃんと動くけどちょっと古くなってきてるからなあ)
    • この場合二重起動の判定処理に工夫が必要→ミューテックスを二つ使って処理すればexeごとに別の判定ができるかも。
  • SGE.exeにLua経由でSQLiteを組み込む(バインドライブラリにライセンスがMITのがある)。
    • データ処理方面が強くなる。テキスト処理をSQLを使ってやれると記述性が高い。
      • 今回、台本処理でデータベースがあれば楽だなと思ったので。パーサはLuaで書けるけど、きめの細かい選択・整列処理とかはSQLで書けたほうが楽。
    • ゲーム本体でも使えそう。SQLiteは速いらしい。
  • エラー処理をテキストエディタと連携することを考えていたが、テキストエディタは固定しないほうがよさそうな気がする。エラー処理関数をlua上でコールバックできるようにする。
  • 関数をテーブルに分けて、他のライブラリとあわせて全部小文字の名前にする。