production-ready なGo製2Dゲームライブラリ Ebiten の紹介 & リンク集


はじめに

Ebiten は、Goで書かれた非常にシンプルな2Dゲームライブラリです。(公式サイト: https://ebiten.org

圧倒的な安定性を誇り、今2Dゲームを作るなら非常にオススメ! というわけで、改めて紹介記事を書いてみます。

Ebiten で作られた「くまのレストラン」などの名作を手掛ける odencat の最新作、ねずみバスターズが公開されました(もちろん Ebiten 製)。現在各種アプリストアにてダウンロードできます。(勝手に宣伝)

特徴

はじめる

(ここではGoのインストールおよび、Goの基礎知識に関しては割愛します。)

Windowsおよび、macOSで Ebiten を使い始めるのは非常に簡単です!

まずは、go mod init <モジュール名> で適当なGo Moduleを作り、以下のコードを書いてみましょう。
https://ebiten.org/tour/hello_world.html の転載)

main.go
package main

import (
    "log"

    "github.com/hajimehoshi/ebiten"
    "github.com/hajimehoshi/ebiten/ebitenutil"
)

type Game struct{}

func (g *Game) Update(screen *ebiten.Image) error {
    return nil
}

func (g *Game) Draw(screen *ebiten.Image) {
    ebitenutil.DebugPrint(screen, "Hello, World!")
}

func (g *Game) Layout(outsideWidth, outsideHeight int) (screenWidth, screenHeight int) {
    return 320, 240
}

func main() {
    ebiten.SetWindowSize(640, 480)
    ebiten.SetWindowTitle("Hello, World!")
    if err := ebiten.RunGame(&Game{}); err != nil {
        log.Fatal(err)
    }
}

できたら、go run main.go を実行します。初回だけは各種ビルドに時間がかかるので待ちましょう。

画像のような、いい感じに味のあるHello Worldが表示されれば成功です!

Windows, macOS以外のプラットフォームでのビルドについては、ドキュメント https://ebiten.org/documents/ を参照してください。

できること

ざっくりと Ebiten の機能を列挙してみます。詳しい解説は Ebitenの個人的まとめ に譲りますので、実際に扱う際はそちらを参照してください。

入力まわりを除けば全ての機能が、Webやモバイルを含む各種プラットフォームで同じように利用できます。(対応状況

できないこと

Ebiten は意図的にシンプルさを保っているため、フレームワーク的な部分は備えていないのでご留意ください。

より深く

最後に各種リソースへのリンクをご紹介するので、学習に役立ててください!

サンプル

Webサイト には、たくさんの今すぐ触れるサンプルが掲載されています。

ソースは、リポジトリの examples/ ディレクトリ以下にあります。Webよりもさらに数が多いです。(GitHubのリンク

ソースは以下のように、-tags=exampleをつけて実行します(インストール時に examples もバイナリとして入ってきてしまう問題への対策)。


# go run -tags=example ソースへのパス

go run -tags=example examples/rotate/main.go

ドキュメント

コミュニティ