赤宿 = Red Inn

素人の試行錯誤と2Dゲームプログラミング

Next Stage!!

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

  • MonoGameの更新に成功
  • .Netの更新に成功 なぜか
  • 画面のちらつきを無くし、FPSも30 -> 60に
    • ラップトップのビデオカードのVSyncの設定が悪かった? そこでVSyncを切る(?):
      • GraphicsDeviceManager.SynchronizeWithVerticalRetrace = false;
    • この時点で画面のちらつきがなくなり、144FPSに
    • 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.RGB *= color.A としておく
    • c.f. Blending on XNA
    • Sprite.setAlpha() ではなく Sprite.setOpacity() を用意する
      • 不透明度を変更すると、正確な元のRGB値が失われる問題?

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

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

 作ったテキストエディタは、公開するにはまだまだ杜撰。作る価値はあると思うが、Macでは他のソフトに霞む程度のものだと思う。
 キーバインディングを学ぶため、自分がEMacsVimを使用できればさらに面白い。文節単位の移動などが元のQtには無いため、そこは妥協するしかないかもしれない。