lumino trail

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

開発状況 2018 #12

リポジトリの Readme で「実際にゲームを作りながら」と言ってますが、ぼちぼちゲームを作るための機能がそろってきたので制作を始めました。

と言っても何年も前にプロト公開した作品のエンジン部分を乗せ換える作業がメインです。

あとはコミットログを遡って、今月やったことを思い出してみます。

Audio

Sound クラスと GameAudio クラスを実装しました。 基本的な使い方は 0.4.0 のものと変わりませんが、内部実装は Web Audio ライクなノードベースのサウンドシステムの上に作られています。 ので、今後はエコーやノイズなどのエフェクトを適用できるようなインターフェイスを追加する予定です。

あと、Ogg vorbis ファイルを再生できるようにしました。

Graphics

Texture2D クラスに、

  • 単色塗りつぶし (clear)
  • 他のテクスチャからのビットマップ転送 (blit)
  • 文字列描画 (drawText)

を追加しました。 プログラム内での簡易的なテクスチャ編集に使います。

Tilemap

2D ゲームのマップなどでよく使われる機能です。 ロードマップ にはありませんが、ちょっと2Dなゲームを作りたい気持ちが出てきり、↑で制作中のゲームで必要になってきたりしたので実装中です。

ImageEffect

いわゆるポストエフェクトです。Unity の ImageEffect と同じです。 今回は2つ作りました。↑の動画でも使っています。

ToneImageEffect は画面全体の色調を調整します。セピア調のイメージを作ったり、フェードイン・フェードアウトの演出に使用できます。

ScreenBlurImageEffect は前回フレームの描画内容を重ね合わせる単純な方法で画面全体のブラーを表現します。

Scene

主にデバッグ用に、マウスでカメラを操作するための CameraOrbitControlComponent を実装しました。

これは Camera オブジェクトにアタッチして使う Component です。以下のようにするだけでぐりぐりできます。

Engine::mainCamera()->addComponent(CameraOrbitControlComponent::create());

Physics

bullet ライブラリをビルドシステムに追加しました。 とりあえず PhysicsWorld を作れるようにしただけで、まだ何もできません。

Shader

実際に本番環境で動かすと出てくるバグからはどうしても逃げられないようで、 あとはドキュメントだけで次のバージョン出せるぞ!とか思っていたら、↑で制作中のゲームで問題が出てきました。 バグっていうか単純な検討不足だったんだけど・・・。

とりあえずこんな↓対策にしました。

今後について

Shader モジュールに対してちょっと変則的な実装を加えたので、1月一杯くらいは様子見です。

他はゲーム作りつつ実装を続けていきます。