Ebitengine 2.3 リリースノート
2022 年 5 月 25 日、 Ebiten は Ebitengine に改称されました。
v2.3.0
Windows での DirectX サポート
(#1007)
Windows で DirectX がサポートされました。 Arm Windows など、 Ebitengine がサポートする環境を増やすための準備です。
Nintendo Switch™ 向けのネイティブコンパイル
(#1900)
前のバージョンでは、 go2cpp
を使って、 Go プログラムを WebAssembly フォーマット経由で C++ に変換することで、 Ebitengine は Nintendo Switch をサポートしていました。これはポータブルで単純なソリューションでした。しかし、シングルスレッド故にパフォーマンスが悪く、また大量の C++ ファイルをコンパイルするため時間がかかるなどの問題がありました。
この問題を解決するため、 Go ランタイムのシステムコール呼び出しを C 関数呼び出しに置き換える Hitsumabushi を使って Nintendo Switch へのネイティブコンパイルをサポートします。技術的詳細については、 Hitsumabushi に関するブログ記事を参照してください。
これをサポートするために、 Ebitengine は新しいビルドタグ ebitencbackend
を導入しました。
環境変数 EBITEN_GRAPHICS_LIBRARY
環境変数 EBITEN_GRAPHICS_LIBRARY
で Ebitengine が内部で使うグラフィックライブラリを指定することができます。
auto
(デフォルト): Ebitengine が自動的にグラフィックライブラリを選びます。opengl
: OpenGL、 OpenGL ES または WebGL が使われます。metal
: Metal が使われます。directx
: DirectX が使われます。
ビルドタグ ebitengl
は削除されました。
ビルドタグ ebitenexternaldll
(#1832)
Ebitengine は Windows 実行ファイルに DLL ファイルを埋め込み、実行ファイルがそれを必要時に展開します。しかし、この手法には問題があり、一部のウィルス検知ソフトがアプリケーションをウィルスと誤検知してしまうことがありました。
新しいビルドタグ ebitenexternaldll
によって、 DLL 埋め込みをしないようにできます。実行ファイルは DLL ファイルがワーキングディレクトリに必要になります。 Ebitengine リポジトリの internal/glfw
から次の DLL ファイルをコピーしてください:
glfw_windows_386.dll
(Windows GOARCH=386 向け)glfw_windows_amd64.dll
(Windows GOARCH=amd64 向け)
これは未だに完璧な解決策ではありませんが、誤検知を低減することができるでしょう。
バイブレーション
(#1452)
モバイルデバイス、ブラウザ、ゲームコントローラを振動させるための新しい API が導入されました:
ebiten.Vibrate
: 指定されたオプションでデバイスを振動させます。モバイルとブラウザで動きます。ebiten.VibrateGamepad
指定されたオプションで指定されたゲームパッドを振動させます。現在のところブラウザと Nintendo Switch でのみ動きます。
ウィンドウのリサイズモード
(#1819)
ウィンドウのリサイズモードのための新しい API が導入されました:
ebiten.WindowResizingModeType
: どのようにユーザーがウィンドウをリサイズできるかのモードを表します。WindowResizingModeDisabled
: ユーザーによるリサイズを不可能にします。WindowResizingModeOnlyFullscreenEnabled
ユーザーによるリサイズを不可能にしますが、フルスクリーンは許可します。今の所 macOS でのみ有効です。WindowResizingModeEnabled
: ユーザーによるリサイズを可能にします。
ebiten.SetWindowResizingMode
: どのようにユーザーがウィンドウをリサイズできるかのモードを設定します。
ebiten.IsWindowResizable
と ebiten.SetWindowResizable
は非推奨になりました。
リアルタイム PCM
(#2026)
オーディオプレイヤーのバッファサイズを調整して、リアルタイム PCM を実現する新しい API が導入されました:
(*audio.Player).SetBufferSize
はプレイヤーのバッファサイズを調整します。小さいバッファサイズは、例えばリアルタイム PCM を再生したいときに便利です。
実例は新しいサンプル realtimepcm
を参照してください。
その他の新しい機能
- iOS のゲームパッドサポート (#1105)
- モバイルでの標準ゲームパッドレイアウト (#1722)
ebiten.SetScreenFilterEnabled
(#1772)text.AppendGlyphs
(#1871)(*ebiten.ColorM).ScaleWithColor
(#1944)
バグ修正
このリリースには、 v2.2.x にあるすべてのバグ修正が含まれます。
パフォーマンス
v2.3.1
バグ修正
v2.3.2
バグ修正
- macOS で古い Metal シェーダー言語バージョンが使われてしまうことがあったバグを修正 (#2086)。
Image.Fill
とImage.Set
を呼んでウィンドウをリサイズすると、描画結果が壊れるバグの修正 (#2089)。
v2.3.3
バグ修正
v2.3.4
バグ修正
- DirectX ドライバで、存在しない戻り値をハンドルしていた問題の修正 (#2115)。
- 32bit Linux でゲームパッド使用時にアプリケーションがクラッシュする問題の修正 (#2122)。
- Windows で Alt+Enter を押すとアプリケーションがクラッシュする問題の修正 (#2123)。
v2.3.5
バグ修正
MaximizeWindow
をメインループ前に呼ぶとクラッシュした問題の修正 (#2137)。- Windows で、
EvenOdd
モードで画面が点滅することがあった問題の修正 (#2138)。 - Windows で、画面リサイズ後にデバッグ警告が表示されていた問題の修正 (#2151)。
- macOS で、
ReplacePixels
が失敗することがあった問題の修正 (#2154)。
v2.3.6
バグ修正
- ブラウザで時々メモリアロケーションエラーが発生していた問題の修正 (#2156)。
- Linux で、特定の入力デバイスをつないでいるときにアプリケーションがクラッシュすることがあった問題の修正 (#2169)。
- macOS で、大きい画面が点滅する事があった問題の修正 (#2174)。
- Windows で、ロック画面にいくときにアプリケーションがクラッシュした問題の修正 (#2179)。
v2.3.7
バグ修正
- iOS 向けの
ebitenmobile
が、大文字小文字を区別するファイルシステムで動かなかった問題の修正 (#2192)。 - DirectX ドライバ内でのメモリの使い方が間違っていた問題を修正 (#2201、 #2202、 #2204)。
- Windows でゲームパッドを抜くときにメモリリークした問題の修正 (#2205)。