LoginSignup
13
11

More than 5 years have passed since last update.

ebitenライブラリを使ってゲームを作ってみた

Last updated at Posted at 2016-10-23

ebitenライブラリを使ってゲームの雛形?を作ってみました。

ebitenライブラリ
http://qiita.com/hajimehoshi/items/d531f0c0e3f5ec5287c3

ソースコードはこちら

シューティングゲーム
https://github.com/ikuo0/game/tree/master/ebiten_stg
ebiten_stg_release.zip がWindows用バイナリです

アクションゲーム
https://github.com/ikuo0/game/tree/master/ebiten_act
ebiten_act_release.zip がWindows用バイナリです

ebiten_stg、ebiten_act について

使えるところがあれば自由にコピペして使って頂いて構いません、質問やバグ等についてはコメント欄からどうぞ。
基本的にWindowsでしか開発を行っていませんので内容はWindows版のお話になります。

ebitenライブラリでゲームを作る際の注意点とか

基本的な使い方

https://hajimehoshi.github.io/ebiten/
公式のサンプルで一通りのことやってますのでまずはサンプルを一通り動かして関数を把握しましょう

画像はgimpで作ろう

Windowsペイント、フリーの画像ビューア(VIX)で透過色PNGを作成した所画像の読み込み処理でエラーとなり読み込めませんでした
gimpで作成し透過色指定してエクスポートした物を素材として使用しましょう

SE・BGMの サンプリングレートは一定、ステレオ形式で

サンプリングレートの異なるWAV、OGGを混在させることはできません、モノラルのWAVは再生できません、
ということなのでゲーム素材のWAV、OGGはサンプリングレートを統一し、全部ステレオ音源で準備しましょう
参考までに私はSoundEngine Freeを使用して音源を加工しました。

SE・BGM再生時に audio.Context のインスタンスはプログラム全体で一つだけ

ebiten のSE、BGMの再生は audio.Context を作成し毎フレーム audio.Context.Update を呼ぶことで再生されます。
audio.Context のインスタンスは複数作ってはいけません、プログラム全体で一つだけです。
複数作って実行してもとりあえず音は出るのですが公式で一つにしてと書いてあるのでそうしましょう

初期化処理について

リソース周りの初期化についてですが音声の初期化は ebiten.Run の前でも可能、ジョイパッドの初期設定は ebiten.Run の中で行わないと機能しません

音声周りの初期化を ebiten.Run の前に行う

https://github.com/ikuo0/game/blob/master/ebiten_act/main.go
sound.Initialize(global.SampleRate, 20, 20)

ジョイパッドの初期化(カウント)を ebiten.Run の中で行う

https://github.com/ikuo0/game/blob/master/ebiten_act/main.go
ginput.Initialize()

ジョイパッドのカウンタが無いので自分でカウントしましょう

ジョイパッドの数をカウントする関数(GedPadNum()みたいな)物が無いので下記のようなコードを作って自分でカウントしましょう

func PadCount() (int) {
    res := 0
    for i := 0; i < 16; i++ {
        if cnt := ebiten.GamepadButtonNum(i); cnt < 1 {
            break
        } else {
            res++
        }
    }
    return res
}

仮想環境Linuxでも動きました

25フレーム程度しか出ませんでしたがWindows上のLinux仮想環境で動作しました、仮想環境で動かした時の環境メモを記します

仮想マシン: VirtualBox
ホスト: Windows10
ゲスト: ubuntu 16

golang 1.7以上をソースからインストール、ubuntu16はgolang1.6であったためgo言語をソースからインストールする必要がありました

下記URLを参考にして必要なライブラリをインストールする
https://github.com/hajimehoshi/ebiten/wiki/Linux

不具合とか

知り合いに配って試験してもらいました、Radeonで3年ほど前(2013年)のドライバ使ってる方が表示不具合ありましたが、それ以外の環境では問題なく動いています
もし表示おかしい場合は環境の確認をしましょう。


他になにかあればまた追記編集していきます。

ebiten作者のHoshiさんに感謝です、go言語でゲーム作れるの楽しいです。

13
11
7

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
11