開発状況 2020 #8
先月に引き続き、ゲーム開発中です。
と言ってもシナリオ書いたりキャラデザしたりが主な作業になってるので、あんまり見せられる絵は無いです。
Lumino のコミット数だけは目に見えて減ってるけど…。
一方これまで撮ってきたいろんなスクリーンショットを、リポジトリのトップに並べてみました。 https://github.com/LuminoEngine/Lumino#screenshots
Particle の HorizontalBillboard 描画モード
水面上の波紋とかに使える描画モードを追加しました。
これでやっと雨のシーンが作れるかな。
Bullet の衝突検知整理
Bullet の衝突検知は次の2種類あります。
- ContactStartedCallback, ContactEndedCallback
- btGhostObject
実際にゲームを作り始めて、btRigidBody 同士の衝突は前者、btGhostObject 同士の衝突は後者でしか検出できないみたいな動きをしたので、 両方使ってなんかいい感じに検知できるようにしました。
Shader API の仕上げ
Skinning や Instancing、各種ポストエフェクトなど、そこそこ実用に耐えるような Shader API が出来上がってきたので、この辺りの書き散らしてきたコードを整理しています。
Hot Soup Processor (HSP) 版
供養の一環として、開発初期のころから思ってた「和製の言語にゲームエンジンを提供する」っぽいことをまたやってみてます。
HSPのコンテスト募集中だからそれに間に合えばいいけど…。
メインループを公開した書き方はこんな感じ↓
LNEngine_Initialize LNTexture2D_Load "Sprite1.png", texture LNSprite_CreateWithTexture texture, sprite repeat running = 0 LNEngine_Update running if running == LN_FALSE: break loop LNEngine_Finalize end
メインループを隠蔽した書き方はこんな感じ↓
LNApplication_Create app LNApplication_SetPrototype_OnInit app, *App_OnInit LNApplication_SetPrototype_OnUpdate app, *App_OnUpdate LNEngine_Run app end *App_OnInit LNTexture2D_Load "Sprite1.png", texture LNSprite_CreateWithTexture texture, sprite return *App_OnUpdate return
Ruby 版と同じように C++ からの自動変換ですが、オブジェクト指向の仕組みを持たない言語でも拡張がしやすいように、API はプロトタイプベースでラップするように作り直したりしました。