Ebitengine 2.8 リリースノート
v2.8.0
このリリースでは、主に細かい機能追加、バグ修正、パフォーマンス改善を行いました。
Ebitengine 2.8 から Go 1.22 以上が必要になりました。
32bit Float オーディオストリーム
このリリースで、オーディオストリームのフォーマットに 32bit float が追加されました。 16bit 整数オーディオストリームに比べて、ストリームの加工が容易になります。また内部での変換が減り、パフォーマンスが向上する可能性があります。
現在の 16bit 整数オーディオストリームは引き続きサポートされます。 16bit 整数ストリームと 32bit Float ストリームは混在が可能です。 16bit 整数ストリームについて現在非推奨化予定はありませんが、 Ebitengine バージョン 3 では 32bit Float 版のみになる予定です。
(*audio.Context).NewPlayerF32
(*audio.Context).NewPlayerF32FromBytes
audio.NewInfiniteLoopF32
audio.NewInfiniteLoopWithIntroF32
audio.ResampleF32
mp3.DecodeF32
vorbis.DecodeF32
wav.DecodeF32
Vertex
へのカスタムデータの追加
ebiten.Vertex
構造体に、カスタム要素として、新たに 4 つの float32
型メンバー Custom0
、 Custom1
、 Custom2
、 Custom3
が追加されました。これにより、カスタムシェーダである Kage を使ったより複雑な処理が可能になります。
この変更に伴い、 Kage の Fragment
関数のシグニチャが以下の種類を取れるように変更されました。カスタム要素を使用する場合、 custom vec4
を取るシグニチャを使用してください。
func Fragment() vec4
func Fragment(dstPos vec4) vec4
func Fragment(dstPos vec4, srcPos vec2) vec4
func Fragment(dstPos vec4, srcPos vec2, color vec4) vec4
func Fragment(dstPos vec4, srcPos vec2, color vec4, custom vec4) vec4
exp/textinput
のポータビリティの改善
exp/textinput
は Windows や macOS などはサポートしていますが、 Linux などの環境では未実装でした。このパッケージを Linux で使おうとした場合、何もテキスト入力できないという状態でした。
このリリースから、 exp/textinput
を使ったときに、 IME ハンドリングが未実装な環境でも IME を使わないテキスト入力を行うように修正されました。これによりコードのポータビリティが向上します。今後 IME ハンドリングができる環境を増やしていく予定です。
OpenGL ES の優先
OpenGL ES が使用可能な環境では、 OpenGL よりも OpenGL ES を優先するように修正されました。これにより、 Raspberry Pi など一部の環境でパフォーマンス上の問題が起きていたのが改善されました。また、環境変数 EBITENGINE_OPENGL
は無視されるようになりました。
新しい API
ebiten.ColorSpaceDefault
(#2871)ebiten.ColorSpaceSRGB
(#2871)ebiten.ColorSpaceDisplayP3
(#2871)ebiten.DrawImageOptions.DisableMipmaps
(#3095)ebiten.DrawTrianglesOptions.DisableMipmaps
(#3095)ebiten.FillRuleFillAll
(#3006)ebiten.FillRuleNoneZero
(#3006)ebiten.FillRuleEvenOdd
(#3006)ebiten.RequestAttention()
(#2998)ebiten.RunGameOptions.ColorSpace
(#2871)ebiten.RunGameOptions.DisableHiDPI
(#2987)(*mp3.Stream).SampleRate()
(#2996)(*vorbis.Stream).SampleRate()
(#2996)(*wav.Stream).SampleRate()
(#2996)text.Glyph.OriginOffsetX
(#3070)text.Glyph.OriginOffsetY
(#3070)text.Glyph.OriginX
(#3070)text.Glyph.OriginY
(#3070)text.Metrics.CapHeight
(#3082)text.Metrics.XHeight
(#3082)
非推奨になった API
2.7 以前 | 2.8 以降 | Issue |
---|---|---|
ebiten.FillAll |
ebiten.FillRuleFillAll |
#3006 |
ebiten.NonZero |
ebiten.FillRuleNoneZero |
#3006 |
ebiten.EvenOdd |
ebiten.FillRuleEvenOdd |
#3006 |
バグ修正
このリリースは、以下の修正に加えて、バージョン 2.7 にあった全てのバグ修正を含みます。
- Safari でカーソルキャプチャ失敗時にカーソル位置がおかしくなった問題の修正 (#2764)。
- Windows で IME を使用しないときはハンドリングしないように修正 (#2918)。
- Kage パーサーのいくつかの問題を修正 (#2965、 #2989、 #2993、 #3111、 #3112)。
exp/textinput
を使ったとき、モバイルブラウザで Enter キーが無視されることがあった問題の修正 (#3015)。- ハッシュ可能ではない
io.Reader
をaudio.NewPlayer
に与えるとクラッシュした問題の修正 (#3039)。 - Firefox と Safari で複数ファイルをドロップしたときに
ebiten.DroppedFiles
の結果が正しくなかった問題の修正 (#3045)。 - ChromeOS Linux で
SetScreenClearedEveryFrame(false)
が正しく動かなかった問題の修正 (#3055)。 - Android Termux で動かなかった問題の修正 (#3057)。
cmd/ebitenmobile
で go.mod ファイルの内容によっては正しく動かなかった問題の修正 (#3086)。- ChromeOS Linux で
SetRunnableOnUnfocused(false)
をゲーム開始前に呼んだときにウィンドウが表示されなかった問題の修正 (#3091)。 SetScreenClearedEveryFrame(false)
使用時に、ウィンドウリサイズしたときに描画がおかしくなった問題の修正 (#3105)。
パフォーマンス改善
破壊的変更
text/v2
の(*GoTextFaceSource).UnsafeInternal()
の戻り値の型が、font.Face
からany
に変更されました。これは依存ライブラリであるgo-text/typesetting
のバージョンアップデートに伴うものです。
v2.8.1
バグ修正
- ブラウザで音が再生しないことがあった問題の修正 (#3122)。
v2.8.2
バグ修正
- Kage シェーダーに一部の代入演算子を含むとコンパイルできなかった問題の修正 (#3140)。
v2.8.3
バグ修正
inpututil.AppendJustReleasedGamepadButtons
とinpututil.AppendJustReleasedStandardGamepadButtons
が正しい値を返さなかった問題の修正 (#3147)。
v2.8.4
バグ修正
- Linux または UNIX の Wayland 環境でアプリケーションが起動しないことがあった問題の修正 (#3152)。
v2.8.5
バグ修正
- Windows で
ebiten.SetWindowDecorated(false)
を呼んだときに、ウィンドウが画面上部に配置できなかった問題の修正 (#3118)。