lumino trail

ゲームエンジン作ってます。Github:https://github.com/lriki/Lumino Twitter:https://twitter.com/lriki8

開発状況 2018 #1

年末からずっと Chainer をいじっています。そのため Lumino の開発は停滞・・・するかと思いましたが、 3D な学習データの作成やボクセルマップのビューアを作るのにそこそこ都合が良かったので、その途中で必要になった機能や不具合の修正がいくつか入っています。

MeshResource クラスがインデックスバッファのフォーマットを自動検出できるようにしました

メッシュを扱うとき、メッシュコンテナや LOD など、効率的な描画のためには考えなければならないことがたくさんありますが、MeshResource クラスはそういったメッシュ構造の最小単位です。 この人は addBox() や addSquare() といった、形状を動的に追加できるメソッドを持っていますが、これまでは 16bit インデックスバッファの限界までしか追加できませんでした。

Box 2000 個も使えないんじゃボクセルマップで使うのはキツイです。ということで拡張しました。

ファイルをウィンドウへドラッグ&ドロップできるようにしました

ビューアならこれくらいできて当然だよね?ということで。 インターフェイスWPF と Qt をまぜまぜしたような感じです。

UIMainWindow* window = Engine::getMainWindow();

// D&D 許可
window->setAllowDragDrop(true);

window->connectOnDragEnter([](UIDragDropEventArgs* e)
{
    if (e->data()->hasDropFiles())
    {
        // ファイルなら受け入れる
        e->setEffect(DragDropEffects::Copy);
    }
});

window->connectOnDragDrop([](UIDragDropEventArgs* e)
{
    for (auto& file : e->data()->dropFiles())
    {
        // Drop されたファイルパスを表示
        Console::writeLine(file);
    }
});

connectOn~ は少し冗長を感じるので += 演算子をサポートするかもしれません。

時計回りの頂点並びをポリゴン正面方向にしました

Lumino は左手座標系です。

方向 向き
X方向 右が正
Y方向 上が正
Z方向 奥が正

回転方向などなど全部「左」に統一するため、面方向も左ねじにしました。

内部文字コードの統一と Mac 対応中

UTF16 に統一しようとしています。char でも wchar_t でもなく、char16_t です。Qt や Cocoa に倣う、という感じで。

個人開発レベルのゲームエンジンでこんなことやるのは正気を疑われそうですが、和製のライブラリということでエンコーディング周りは元からかなり気を使って作っていました。 Core モジュールのユニットテスト通せた今のところ、特に大きな問題は出てないです。

このまま上手くいければいいなぁ・・・。

今後の予定

Lumino はゲームエンジンだけではなく一般的なグラフィックス系アプリのフレームワークとしての利用も想定しています。 とはいえソレをメインで開発しているわけではないので、細かい TODO が山ほど溜まってしまいました。

これの消化ばかりに時間を使うわけにもいかないので、Mac 対応の途中でお亡くなりになってるユニットテストを通したら次のお試し版を出したいです。