Ebiten 2.2 リリースノート

v2.2.0

Issues for v2.2.0

Nintendo Switch™

Nintendo Switch をサポートしました。詳しくは任天堂プラットフォーム開発者向けポータルサイト Nintendo Developer Portal をご覧ください。

オーディオ再実装

(#1549)

各プレイヤーが大きいバッファを持つように、オーディオの実装が改善されました。遅延やノイズが低減するはずです。

標準ゲームパッドマッピング

(#1557)

Ebiten v2.1 までは、 Ebiten のゲームパッドボタンや軸の割当は、ゲームパッドごと、または環境ごとに異なりました。たとえば、ゲームパッドボタン 1 は他の環境では違う物理ボタンを指すかもしれません。ゲームパッドを使うと、ポータビリティを維持するのが大変でした。

Ebiten v2.2 は Web 標準の標準ゲームパッドレイアウトを採用しました。標準ゲームパッドレイアウトは、 Xbox、 PlayStation、 Nintendo Switch といったモダンなゲームパッドのモデルです。標準ゲームパッドレイアウトは次のボタンや軸を仮定します:

標準ゲームパッドレイアウト

標準ゲームパッドレイアウト

もし使っているゲームパッドおよび環境で、標準ゲームパッドレイアウトが利用可能ならば、 StandardGamepadButton のような標準ゲームパッド API が使えます。ボタンや軸の割当の違いを気にする必要がなくなります。

デスクトップでは SDL のゲームパッドデータベースが使われます。ブラウザでは、ブラウザの標準マッピングが使われます。モバイルでは、マッピングはまだ利用できません。

残念ながら、すべてのゲームパッドが標準ゲームパッドレイアウトに対応しているとは限りません。サポートされてないゲームパッドに対しては、既存の API を使ってください。

実際の使用例については、 examples/gamepad を参照してください。

ベクターグラフィック

(#1684)

examples/vector のスクリーンショット

examples/vector のスクリーンショット

Ebiten のベクターグラフィックス API は再設計され、ステンシルバッファを使うよう再実装されました。

ebiten.DrawTrianglesOptions のメンバとして FillMode が追加されました。フィルモードが ebiten.EvenOdd は、重なった領域がどう描画されるかについてのルールで、 vector パッケージの新関数 AppendVerticesAndIndicesForFilling と組み合わせることで複雑な図形を描画できます。

vector パッケージに次のような関数が追加されました:

実際の使用例については、 examples/vector を参照してください。

macOS のネイティブフルスクリーン

(#1506)

macOS では、ウィンドウをフルスクリーンにするときに、新しい独立したスペースを作りそこにウィンドウをフィットさせる挙動になりました。

ウィンドウが閉じられるときのハンドリング

(#1574)

ウィンドウが閉じられるのを止めたり、ウィンドウが閉じられようとするタイミングで何かを行うことができるようになりました。

実際の使用例については、 examples/windowclosing を参照してください。

静的なアプリケーションのための新しい vsync モード

(#1556)

Vsync のオン・オフに加えて、 Ebiten v2.2 では新しい vsync モード FPSModeVsyncOffMinimum が利用できます。これはゲームは vsync には同期せず、入力が検知されたなど必要なタイミングのみで更新を行うモードです。静的なアプリケーションを実装するのに便利です。

Append* 関数

(#1692, #1705)

Ebiten のいくつかの関数は、呼び出しごとに新しいスライスを作っていました。関数呼び出しごとに新しいスライスを作るのは、メモリをアロケートするので非効率です。この問題を低減するため、スライスを受け取り新しい要素をそこに追加するような新しい関数が追加されました。これらは組み込み関数 append のような動作をします。もしスライスに十分なキャパシティがあれば、その関数は新しいメモリをアロケートすることはありません。もし空スライスや nil が渡ってきたのなら、新しいスライスが作成されます。

パフォーマンス改善

その他の新しい関数

その他

v2.2.1

Issues for v2.2.1

バグ修正

v2.2.2

Issues for v2.2.2

バグ修正

v2.2.3

Issues for v2.2.3

バグ修正

v2.2.4

Issues for v2.2.4

バグ修正

v2.2.5

Issues for v2.2.5

バグ修正

v2.2.6

Issues for v2.2.6

バグ修正

v2.2.7

Issues for v2.2.7

バグ修正