開発状況 2018 #12
リポジトリの Readme で「実際にゲームを作りながら」と言ってますが、ぼちぼちゲームを作るための機能がそろってきたので制作を始めました。
と言っても何年も前にプロト公開した作品のエンジン部分を乗せ換える作業がメインです。
今年の戦果。多分2年くらい前にも同じような動画上げた気がする。バックエンドがどれほど良くなろうとも、それは進歩として見えづらいのであった。 pic.twitter.com/SJoRreQ3s0
— lriki (@lriki8) December 31, 2018
あとはコミットログを遡って、今月やったことを思い出してみます。
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月一杯くらいは様子見です。
他はゲーム作りつつ実装を続けていきます。