Ebitengine v2 Migration Guide

Ebitengine v2 移行ガイド

Ebitengine v2 升级迁移指南

Overview

概要

Ebitengine v2 is a major version update from v1. There are some breaking changes in the API. Thus, you have to update the program in order to migrate to Ebitengine v2.

Ebitengine v2 は v1 からのメジャーバージョンアップデートです。 API に関して破壊的変更を伴います。そのため v2 への移行はプログラムの修正が必要です。

This document lists the action items for the migration to Ebitengine v2.

このドキュメントでは、 v2 移行の際に実際にやらなければならないことを列挙します。

We don't add drastic changes to v2. Instead, we plan to add quiet changes.

v2 には過激な変更を入れるのではなく、代わりにおとなしめの変更が入ります。

Platforms

プラットフォーム

Action items

やることリスト

Updating the import paths

インポートパスの更新

Update all the github.com/hajimehoshi/ebiten in import to github.com/hajimehoshi/ebiten/v2. github.com/hajimehoshi/ebiten/text will be github.com/hajimehoshi/ebiten/v2/text.

import 内の github.com/hajimehoshi/ebiten をすべて github.com/hajimehoshi/ebiten/v2 に更新します。 github.com/hajimehoshi/ebiten/textgithub.com/hajimehoshi/ebiten/v2/text になります。

Lastly, execute go mod tidy command so that your go.mod will include github.com/hajimehoshi/ebiten/v2 and exclude github.com/hajimehoshi/ebiten.

最後に go mod tidy コマンドを実行します。 go.modgithub.com/hajimehoshi/ebiten/v2 が含まれるようになり、 github.com/hajimehoshi/ebiten が消えるはずです。

You cannot mix Ebitengine v1 and v2 for one application. If you run go mod tidy but there are both version in your go.mod, confirm the dependency relationships and remove the dependency on v1. However, you don't have to do it if you intentionally manage multiple applications in one module.

Ebitengine v1 と v2 は 1 つのアプリケーションに混ぜて使用することが出来ません。 go mod tidy を実行したあとにも関わらず go.mod で両方記述されてしまっている場合は、依存関係を確認して v1 の依存を消してください。ただし複数のアプリケーションを 1 つのモジュールで意図的に管理するような場合は、その限りではありません。

Updating the API usages

API の更新

github.com/hajimehoshi/ebiten

These types are introduced.

次の型が導入されます。

These APIs' signatures are changed.

次の API のシグニチャが変更されます。

v1v2
func GamepadAxisNum(id int, axis int) intfunc GamepadAxisNum(id GamepadID, axis int) int
func GamepadAxisNum(id int) intfunc GamepadAxisNum(id GamepadID) int
func GamepadButtonNum(id int) intfunc GamepadButtonNum(id GamepadID) int
func GamepadIDs() []intfunc GamepadIDs() []GamepadID
func GamepadName(id int) stringfunc GamepadName(id GamepadID) string
func GamepadSDLID(id int) stringfunc GamepadSDLID(id GamepadID) string
func (*Image).Clear() errorfunc (*Image).Clear()
func (*Image).Dispose() errorfunc (*Image).Dispose()
func (*Image).DrawImage(img *Image, options *DrawImageOptions) errorfunc (*Image).DrawImage(img *Image, options *DrawImageOptions)
func (*Image).Fill(clr color.Color) errorfunc (*Image).Fill(clr color.Color)
func (*Image).ReplacePixels(pixels []byte) errorfunc (*Image).ReplacePixels(pixels []byte)
func IsGamepadButtonPressed(id int, button GamepadButton) boolfunc IsGamepadButtonPressed(id GamepadID, button GamepadButton) bool
func NewImage(width, height int, filter Filter) (*Image, error)func NewImage(width, height int) *Image
func NewImageFromImage(source image.Image, filter Filter) (*Image, error)func NewImageFromImage(source image.Image) *Image
func TouchIDs() []intfunc TouchIDs() []TouchID
func TouchPosition(id int) (int, int)func TouchPosition(id TouchID) (int, int)

These APIs are removed or replaced.

次の API が削除されるか置き換えられます。

v1v2
const FilterDefault(No replacement)(置き換え先なし)
const FPS(No replacement)(置き換え先なし)
const MaxImageSize(No replacement)(置き換え先なし)
struct DrawImageOptions's ImagePartsDrawImageOptions 構造体の ImagePartsfunc (*Image).SubImage
struct DrawImageOptions's PartsDrawImageOptions 構造体の Partsfunc (*Image).SubImage
struct DrawImageOptions's SourceRectDrawImageOptions 構造体の SourceRectfunc (*Image).SubImage
interface Touchfunc TouchPosition
func (*ColorM).Add(No replacement)(置き換え先なし)
func (*GeoM).Add(No replacement)(置き換え先なし)
func IsCursorVisiblefunc CursorMode
func IsDrawingSkippedfunc RunGame and interface Game's DrawRunGame 関数と Game インターフェイスの Draw
func IsRunningInBackgroundfunc IsRunnableOnUnfocused
func IsRunningSlowlyfunc RunGame and interface Game's DrawRunGame 関数と Game インターフェイスの Draw
func MonitorSizefunc ScreenSizeInFullscreen
func Monochromefunc (*ColorM).ChangeHSV with arguments 0, 0, 1(*ColorM).ChangeHSV 関数 (引数は 0, 0, 1)
func RotateGeofunc (*GeoM).Rotate
func RotateHuefunc (*ColorM).RotateHue
func Runfunc RunGame
func ScaleColorfunc (*ColorM).Scale
func ScaleGeofunc (*GeoM).Scale
func ScreenScalefunc WindowSize
func SetCursorVisiblefunc SetCursorMode
func SetCursorVisibilityfunc SetCursorMode
func SetRunningInBackgroundfunc SetRunnableOnUnfocused
func SetScreenScalefunc RunGame and interface Game's LayoutRunGame 関数と Game インターフェイスの Layout
func SetScreenSizefunc RunGame and interface Game's LayoutRunGame 関数と Game インターフェイスの Layout
func Touchesfunc TouchIDs
func TranslateColorfunc (*ColorM).Translate
func TranslateGeofunc (*GeoM).Translate

github.com/hajimehoshi/ebiten/audio

These APIs' signatures are changed.

次の API のシグニチャが変更されます。

v1v2
func NewContext(sampleRate int) (*Context, error)func NewContext(sampleRate int) *Context
func NewInfiniteLoop(src ReadSeekCloser, length int64) *InfiniteLoopfunc NewInfiniteLoop(src io.ReadSeeker, length int64) *InfiniteLoop
func NewInfiniteLoopWithIntro(src ReadSeekCloser, introLength int64, loopLength int64) *InfiniteLoopfunc NewInfiniteLoopWithIntro(src io.ReadSeeker, introLength int64, loopLength int64) *InfiniteLoop
func NewPlayer(context *Context, src io.ReadCloser) (*Player, error)func NewPlayer(context *Context, src io.Reader) (*Player, error)
func NewPlayerFromBytes(context *Context, src []byte) (*Player, error)func NewPlayerFromBytes(context *Context, src []byte) *Player
func (*Player).Pause() errorfunc (*Player).Pause()
func (*Player).Play() errorfunc (*Player).Play()

These APIs are removed or replaced.

次の API が削除されるか置き換えられます。

v1v2
BytesReadSeekCloser(No replacement, but bytes.NewReader works in most cases)(置き換え先はないが、大抵の場合 bytes.NewReader で事足りる)
func (*Context).Update(No replacement)(置き換え先なし)
ReadSeekCloser(No replacement, but io.ReadSeeker works in most cases)(置き換え先はないが、大抵の場合 io.ReadSeeker で事足りる)

github.com/hajimehoshi/ebiten/audio/mp3

These APIs' signatures are changed.

次の API のシグニチャが変更されます。

v1v2
func Decode(context *audio.Context, src audio.ReadSeekCloser) (*Stream, error)func Decode(context *audio.Context, src io.ReadSeeker) (*Stream, error)

These APIs are removed or replaced.

次の API が削除されるか置き換えられます。

v1v2
func (*Stream).Close(No replacement)(置き換え先なし)
func (*Stream).Sizefunc (*Stream).Length

github.com/hajimehoshi/ebiten/audio/vorbis

These APIs' signatures are changed.

次の API のシグニチャが変更されます。

v1v2
func Decode(context *audio.Context, src audio.ReadSeekCloser) (*Stream, error)func Decode(context *audio.Context, src io.ReadSeeker) (*Stream, error)

These APIs are removed or replaced.

次の API が削除されるか置き換えられます。

v1v2
func (*Stream).Close(No replacement)(置き換え先なし)
func (*Stream).Sizefunc (*Stream).Length

github.com/hajimehoshi/ebiten/audio/wav

These APIs' signatures are changed.

次の API のシグニチャが変更されます。

v1v2
func Decode(context *audio.Context, src audio.ReadSeekCloser) (*Stream, error)func Decode(context *audio.Context, src io.ReadSeeker) (*Stream, error)

These APIs are removed or replaced.

次の API が削除されるか置き換えられます。

v1v2
func (*Stream).Close(No replacement)(置き換え先なし)
func (*Stream).Sizefunc (*Stream).Length

github.com/hajimehoshi/ebiten/ebitenutil

These APIs' signatures are changed.

次の API のシグニチャが変更されます。

v1v2
func DebugPrint(image *ebiten.Image, str string) errorfunc DebugPrint(image *ebiten.Image, str string)

github.com/hajimehoshi/ebiten/inpututil

These APIs' signatures are changed.

次の API のシグニチャが変更されます。

v1v2
func GamepadButtonPressDuration(id int, button ebiten.GamepadButton) intfunc GamepadButtonPressDuration(id ebiten.GamepadID, button ebiten.GamepadButton) int
func IsGamepadButtonJustPressed(id int, button ebiten.GamepadButton) boolfunc IsGamepadButtonJustPressed(id ebiten.GamepadID, button ebiten.GamepadButton) bool
func IsGamepadButtonJustReleased(id int, button ebiten.GamepadButton) boolfunc IsGamepadButtonJustReleased(id ebiten.GamepadID, button ebiten.GamepadButton) bool
func IsGamepadJustDisconnected(id int) boolfunc IsGamepadJustDisconnected(id ebiten.GamepadID) bool
func IsTouchJustReleased(id int) boolfunc IsTouchJustReleased(id ebiten.TouchID) bool
func JustConnectedGamepadIDs() []intfunc JustConnectedGamepadIDs() []ebiten.GamepadID
func JustPressedTouchIDs() []intfunc JustPressedTouchIDs() []ebiten.TouchID
func TouchPressDuration(id int) intfunc TouchPressDuration(id ebiten.TouchID) int

github.com/hajimehoshi/ebiten/mobile

These APIs are removed or replaced.

次の API が削除されるか置き換えられます。

v1v2
interface Gameebiten's interface GameebitenGame インターフェイス
func Startebitenmobile command and func SetGameebitenmobile コマンドと SetGame 関数
func Updateebitenmobile command and func SetGameebitenmobile コマンドと SetGame 関数
func UpdateTouchesOnAndroidebitenmobile commandebitenmobile コマンド
func UpdateTouchesOnIOSebitenmobile commandebitenmobile コマンド