Ebitengine 2.3 Release Notes
Ebiten was renamed to Ebitengine on May 25, 2022.
v2.3.0
DirectX on Windows
(#1007)
Ebitengine now supports DirectX on Windows. This is a preparation to support more environments like Arm Windows by Ebitengine.
Native compile for Nintendo Switch™
(#1900)
In the previous version, Ebitengine supported Nintendo Switch by go2cpp
by converting Go program to C++ via the WebAssembly format. This was a portable and simple solution. However, an application was single-threaded and not performant due to the WebAssembly restriction. Compiling time for bunch of C++ files was also problematic.
In order to resolve these problems, Ebitengine now supports a native compiling for Nintendo Switch by Hitsumabushi, which replaces system calls in the Go runtime with C function calls. For more technical details, see a blog article about Hitsumabushi.
In order to support this, Ebitengine introduced a new build tag ebitencbackend
.
An environment variable EBITEN_GRAPHICS_LIBRARY
You can specify an underlying graphics library for Ebitengine by an environment variable EBITEN_GRAPHICS_LIBRARY
.
auto
(default): Ebitengine chooses a graphics library automatically.opengl
: OpenGL, OpenGL ES, or WebGL is used.metal
: Metal is used.directx
: DirectX is used.
A build tag ebitengl
was removed.
A build tag ebitenexternaldll
(#1832)
Ebitengine embeds DLL files for a Windows executable, and the executable extracts them on the fly. However, this can be problematic as the application might be unexpectdly recognized as a virus by some virus checkers.
A new build tag ebitenexternaldll
stops embedding DLL file in a Windows executable. The executable will require a DLL file at the working directory. Copy them from Ebitengine repository's internal/glfw
directory:
glfw_windows_386.dll
for Windows GOARCH=386glfw_windows_amd64.dll
for Windows GOARCH=amd64
This is not a perfect solution yet, but should mitigate the false positives.
Vibration
(#1452)
Ebitengine introduced new APIs to vibrate mobile devices, browsers, and game controllers:
ebiten.Vibrate
vibrates the device with the specified options. Vibrate works on mobiles and browsers.ebiten.VibrateGamepad
vibrates the specified gamepad with the specified options. This works only on browsers and Nintendo Switch so far.
Window-resizing mode
(#1819)
Ebitengine introduced new APIs for various modes of resizing a window:
ebiten.WindowResizingModeType
represents a mode in which a user resizes the window.WindowResizingModeDisabled
indicates the mode to disallow resizing the window by a user.WindowResizingModeOnlyFullscreenEnabled
indicates the mode to disallow resizing the window, but allow to make the window fullscreen by a user. This works only on macOS so far.WindowResizingModeEnabled
indicates the mode to allow resizing the window by a user.
ebiten.SetWindowResizingMode
sets the mode in which a user resizes the window.
ebiten.IsWindowResizable
and ebiten.SetWindowResizable
was now deprecated.
Real-time PCM
(#2026)
Ebitengine introduced a new API for real-time PCM by adjusting an audio player's buffer size:
(*audio.Player).SetBufferSize
adjusts the buffer size of the player. A small buffer size is useful if you want to play a real-time PCM for example.
For an actual usage, see the new example realtimepcm
.
Other new features
- Gamepad support for iOS (#1105)
- The standard gamepad layout for mobiles (#1722)
ebiten.SetScreenFilterEnabled
(#1772)text.AppendGlyphs
(#1871)(*ebiten.ColorM).ScaleWithColor
(#1944)
Bug fix
This release includes all the bug fixes in v2.2.x.
- Slight noises for a looped audio stream (#1888)
- Bunch of bug fixes in Kage like wrong type checkings
- Other small fixes
Performance
v2.3.1
Bug fix
- An app froze when manipulating images at a game's
Layout
function (#2079). - An app sometimes crashed when resizing a window on Windows (#2081).
v2.3.2
Bug fix
- An old Metal shading language version could be used unexpectedly on macOS (#2086).
- Calling
Image.Fill
andImage.Set
and resizing the window broke the rendering (#2089).
v2.3.3
Bug fix
- Android NDK 24 is supported (#2085).
- An application might crash just by importing
inpututil
(#2103).
v2.3.4
Bug fix
- A non-existing returing value was handled in the DirectX driver (#2115).
- An application crashes with a gamepad on 32bit Linux (#2122).
- An application crashes with pressing Alt + Enter on Windows (#2123).
v2.3.5
Bug fix
- An application crashed when
MaximizeWindow
was called before the main loop started (#2137). - The screen unexpectedly blinked with the
EvenOdd
mode on Windows (#2138). - Debug warnings were shown after resizing the window on Windows (#2151).
ReplacePixels
sometimes failed on macOS (#2154).
v2.3.6
Bug fix
- A memory allocation error sometimes happened on browsers (#2156).
- An application might crash with some inputting devices on Linux (#2169).
- A big screen might flicker on macOS (#2174).
- An applicaiton crashed when going to a lock screen on Windows (#2179).
v2.3.7
Bug fix
ebitenmobile
for iOS didn't work with a case-sensitive file system (#2192).- There were wrong memory usages in the DirectX driver (#2201, #2202, #2204).
- There was a memory leak when disconnecting a gamepad on Windows (#2205).
v2.3.8
Bug fix
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)。
v2.3.8
バグ修正
Ebiten v2.3 发布日志
v2.3.0
在Windows平台支持DirectX
(#1007)
Ebiten现在支持在Windows上使用DirectX. This is a preparation to support more environments like Arm Windows by Ebiten.
原生编译支持 Nintendo Switch™
(#1900)
In the previous version, Ebiten supported Nintendo Switch by go2cpp
by converting Go program to C++ via the WebAssembly format. This was a portable and simple solution. However, an application was single-threaded and not performant due to the WebAssembly restriction. Compiling time for bunch of C++ files was also problematic.
In order to resolve these problems, Ebiten now supports a native compiling for Nintendo Switch by Hitsumabushi, which replaces system calls in the Go runtime with C function calls. For more technical details, see a blog article about Hitsumabushi.
In order to support this, Ebiten introduced a new build tag ebitencbackend
.
An environment variable EBITEN_GRAPHICS_LIBRARY
You can specify an underlying graphics library for Ebiten by an environment variable EBITEN_GRAPHICS_LIBRARY
.
auto
(default): Ebiten chooses a graphics library automatically.opengl
: OpenGL, OpenGL ES, or WebGL is used.metal
: Metal is used.directx
: DirectX is used.
build tag ebitengl
移除.
build tag ebitenexternaldll
(#1832)
Ebiten embeds DLL files for a Windows executable, and the executable extracts them on the fly. However, this can be problematic as the application might be unexpectdly recognized as a virus by some virus checkers.
新的 build tag ebitenexternaldll
stops embedding DLL file in a Windows executable. The executable will require a DLL file at the working directory. Copy them from Ebiten repository's internal/glfw
directory:
glfw_windows_386.dll
for Windows GOARCH=386glfw_windows_amd64.dll
for Windows GOARCH=amd64
这还不是一个完美的解决方案, but should mitigate the false positives.
Vibration
(#1452)
Ebiten introduced new APIs to vibrate mobile devices, browsers, and game controllers:
ebiten.Vibrate
vibrates the device with the specified options. Vibrate works on mobiles and browsers.ebiten.VibrateGamepad
vibrates the specified gamepad with the specified options. This works only on browsers and Nintendo Switch so far.
Window-resizing mode
(#1819)
Ebiten introduced new APIs for various modes of resizing a window:
ebiten.WindowResizingModeType
represents a mode in which a user resizes the window.WindowResizingModeDisabled
indicates the mode to disallow resizing the window by a user.WindowResizingModeOnlyFullscreenEnabled
indicates the mode to disallow resizing the window, but allow to make the window fullscreen by a user. This works only on macOS so far.WindowResizingModeEnabled
indicates the mode to allow resizing the window by a user.
ebiten.SetWindowResizingMode
sets the mode in which a user resizes the window.
ebiten.IsWindowResizable
和 ebiten.SetWindowResizable
was now deprecated.
实时 PCM
(#2026)
Ebiten introduced a new API for real-time PCM by adjusting an audio player's buffer size:
(*audio.Player).SetBufferSize
adjusts the buffer size of the player. A small buffer size is useful if you want to play a real-time PCM for example.
For an actual usage, 请见新示例 realtimepcm
.
其他新特性
- 手柄支持 iOS (#1105)
- 移动设备上的标准手柄布局 (#1722)
ebiten.SetScreenFilterEnabled
(#1772)text.AppendGlyphs
(#1871)(*ebiten.ColorM).ScaleWithColor
(#1944)
Bug修复
这个版本修复了v2.2.x的所有Bug.
- Slight noises for a looped audio stream (#1888)
- Bunch of bug fixes in Kage like wrong type checkings
- 其他小修复