Dome Keeperは、ピクセルアートとダイナミック照明が相反するものではないことを証明しています。その視覚的な成功は、Godot Engineにおけるカスタムシェーダーの賢い使用と、深度に応じて変化するカラーパレットにあります。この分析では、没入感のある雰囲気を生み出すシェーディングとパーティクルのテクニックを分解し、パフォーマンスを犠牲にすることなく同様の効果を求めるインディー開発者へのロードマップを提供します。
深度に応じたシェーダーとカラーレイヤー 🎨
Dome Keeperにおける深度効果は、Godotのフラグメントシェーダーによって制御されるカラーレイヤー(カラーグレーディング)システムによって実現されています。プレイヤーが掘り進むにつれて、深度値がシェーダーに渡され、地表パレット(暖かく明るい)と地下パレット(冷たく暗い)の間を補間します。一方、ダイナミック照明は、CanvasItemモードのスプライト上にソフトシャドウ(ソフトシャドウ)のテクスチャライトを使用して実装されています。最適化のために、低解像度のライトを使用し、フレームごとのアクティブなライトの数を制限することをお勧めします。Asepriteでは、Godotでのリアルタイム合成を容易にするために、照明レイヤー(ベース、影、ハイライト)を分離してスプライトを準備します。
パーティクルとリアルタイムパフォーマンス ⚡
Dome Keeperのパーティクルシステムは雰囲気に不可欠ですが、誤った使用はパフォーマンスを損なう可能性があります。解決策は、GodotのGPUParticles2Dノードを使用して、パーティクルをグラフィックカードで処理することです。掘削時のほこりや火花などのエフェクトには、小さなテクスチャ(16x16ピクセル)を使用し、パーティクルの寿命を1秒未満に短縮することをお勧めします。さらに、バースト放出率を持つエミッターを使用することで、パフォーマンスのスパイクを回避できます。最後に、パーティクルのカラーパレットは、パーティクルシステムのマテリアルでカラーグラデーションを使用して深度レイヤーと同期させ、環境の視覚的な遷移を再現する必要があります。
ピクセルアートの美学を壊さず、リアルタイムで最適なパフォーマンスを維持しながら、GodotでDome Keeperのダイナミック照明システムを実装する方法
(追記: ゲームジャムは結婚式のようなものです。皆幸せで、誰も眠らず、最後には泣いてしまいます)