lumino trail

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

開発状況 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 が出来上がってきたので、この辺りの書き散らしてきたコードを整理しています。

github.com

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 はプロトタイプベースでラップするように作り直したりしました。