赤宿 = Red Inn

素人の試行錯誤と2Dローグライク・ゲーム制作

Resuming / Next Stage!!

 ゲーム開発に久しく進展。いつか、ハマりどころをまとめた記事を作られたら楽しい。利用者がいるかは別として……

  • MonoGameの更新に成功
  • .Netの更新に成功 なぜか
  • 画面のちらつきを無くし、FPSも30 -> 60に
    • ラップトップのビデオカードのVSyncの設定が悪かった? そこでVSyncを切る(?):
      • GraphicsDeviceManager.SynchronizeWithVerticalRetrace = false;
    • この時点で画面のちらつきがなくなり、144FPSに
      • 追記: Macではカクカクに。ユーザがVSyncを設定できるのが最善の模様。
    • Game.IsFixedTimeStep = true; // これで60 FPS
    • 端数まで正確に、たとえば50FPSに設定する方法:
      Game.TargetElapsedTime = System.TimeSpan.FromTicks( (long)10_000_000 / (long)50 );
  • MonoGame (Nez) のデフォルトのalpha値はpremultiplied alpha だった
    • つまり BlendState.AlphaBlend は premultiplied alpha を使用
    • アルファ値 ≠ 不透明度
      • 不透明度としてアルファ値を作用させるには、color.R, .G, .B, .A 全てに不透明度(0~1)をかける
    • c.f. Blending on XNA
    • Sprite.setAlpha() ではなく Sprite.setOpacity() を用意する
      • 不透明度を変更すると、正確な元のRGB値が失われるのは避けられない

 これで、最も困っていた三点: カクつき、FPS、アルファ値の問題が解決できた。一年以上困っていた。何が問題か分からないか、別の問題と誤認したのが遅れた最大の原因だった。

 これでゲーム開発を再開できる。また、嬉しいことに、ウディコンも近い。面白くなってきたか……!!

日本語用のエディタをPyQt5で構築中

 公開するにはまだまだ杜撰。作る価値はあると思うが、Macでは他のソフトに霞む程度のものかもしれない。

 キーバインディングを学ぶため、EMacsVimに入門できればさらに面白い。