Edited at

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

More than 1 year has passed since last update.

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言語でゲーム作れるの楽しいです。