Ebiten は、筆者が趣味で開発した Go の 2D ゲームライブラリです。 2013 年頃から開発を続けており、今年で 6 年になりました。この記事では 2019 年に何があったのかを振り返ります。
まとめると:
- Ebiten 製のゲームが賞受賞できてよかった (くまのレストラン)
- gomobile などの比較的マイナーなツールはコントリビュートのチャンスである。
- ゲームライブラリは使われないとクオリティが上がらない。 2019 年は Ebiten のユースケースを増やすことができ、良いサイクルを回せたように思える。
(追記 2019-12-05) 英語版 もあります。
1 月
- モバイルゲーム「くまのレストラン」のリリースに向けて淡々と頑張っていたような気がする。
2 月
-
くまのレストランリリース。
- ゲームのメイン製作者は Daigo という人。
- 償いの時計などと同じ共通エンジンを使用している。共通エンジンには Ebiten が採用されている。
- 筆者の知るところによると 40 万ダウンロード程度達成したとのこと。
- くまのレストラン以降、モバイル環境における様々な問題を対処する必要がでた (例: Xperia で変な線が描画される)。今年はバグ報告と格闘する日々が続いた。
- Go 1.12 がリリースされたが、これには筆者が実装した Syscall18 が含まれている。これは OpenGL バインディングに必要だった。
https://daigostudio.com/bearsrestaurant/ja/ より
3 月
-
Ebiten v1.9.0 リリース。新機能としては Windows で Cgo 不要になったことや、 macOS Metal など。
- Metal 部分は Dmitri 氏のソースコードを許可を得て拝借した。
- Metal 版を実装した理由は、 Apple が OpenGL を廃止するためである。
- GopherJS の Go 1.12 対応を開始する。
- ebiten.org をオープン。
4 月
-
neguse 氏が cut’n’align というゲームを作ってくださいました。
- neguse 氏のフィードバックを受けて、オーディオ周りの改善などを行った。
5 月
-
フィッシングパラダイスリリース。
- 「くまのレストラン」などと同エンジン採用。
- 筆者の知るところによると 48 万ダウンロードくらいに達しており、今の所 Go 製モバイルゲームで最も DL 数の多いゲームとなっている (当社比)。
- golang.tokyo #24 にて「Go (Ebiten) で実践モバイルゲーム開発」という発表を行う。
https://daigostudio.com/fishingparadise/ja/ より
6 月
- 「くまのレストラン」が Google Play Indie Games Festival 2019 で TOP3 および Avex 賞を受賞する。おめでとうございます
この度くまレスがIndie Game FestivalでTop3+Avex賞受賞となりました。Googleおよび関係者の方々、素晴らしいコンテストを開いていただきありがとうございました。Googleのインディーゲームへの本気度と愛がつたわるいいイベントでした!https://t.co/5HEJmOjy8Z
— Daigo (@daigo) June 30, 2019
7 月
-
GopherCon 2019 にて Mobile Game Development in Go という内容の LT を行う。
- 内容は Go でもちゃんとモバイルゲーム作れるんですよというもの。
- なお Johan Brandhorst 氏の Get Going with WebAssembly という発表でも Ebiten が紹介された。
- Daigo により Odencat 株式会社が設立された。 Odencat 株式会社は現在のところ Ebiten 製モバイルゲームを制作する会社である。
— Hajime Hoshi (星一) (@hajimehoshi) August 27, 2019
8 月
-
gomobile の Go modules 対応を開始する。
- GopherCon で Austin 氏らと話して「やってみれば?」と言われたのがきっかけ。
- Ebiten は gomobile のヘビーユーザーであり、 Go modules 対応は必要不可欠である。そこで筆者は実装者として立候補した。
9 月
- 筆者の思いつきで「海老天パーティー」が催される。
- 前職同僚の皆様に諸々祝っていただきました。ありがとうございます!
-
Go 1.13 リリース。
-
syscall/js
の破壊的変更が含まれていたが、正式リリース前に Ebiten は対応済みである。 - なお Go 1.14 でも別の破壊的変更 (
js.Value
同士が==
で比較不可能になる) が含まれる予定であり、対応が求められている。
-
10 月
-
OpenDiablo2 が Ebiten を採用する。
- Ebiten 採用前は C# だったり、いろいろ転々としていた模様。
- OpenDiablo2 は Diablo2 のオープン再実装プロジェクトであり、リソースはローカルにインストールされた公式 Diablo2 を拝借して動かす。
- OpenDiablo2 は Ebiten をこれまでにないくらいヘビーに使い倒しており、パフォーマンスに問題が生じている。筆者は開発者の Essial 氏と Discord で議論しながら、 Ebiten のパフォーマンス改善に努めている。
11 月
-
Ebiten v1.10.0 リリース。新機能としては iOS Metal や
ebitenmobile
コマンドなど。
12 月
- スノーマン・ストーリーをリリース予定。
https://odencat.com/snowman/ja/ より
2020 年以降の予定
- gomobile の Go modules 対応が終わっていると良いな。
- 終わったら Ebiten v2.0 が出せる
- 機能追加については、「実際に Ebiten を使っているプロジェクトが欲しているもの」が最優先になる
- いまのところ OpenDiablo2 が必要としている Pixel Buffer Object を活用したアニメーション機能とか?
- 「くまのレストラン」の Daigo との情報交換も引き続きやっていく予定
- ユーザーを増やすために、サンプルやドキュメントを増やさないとなあ (いつも言っている)
- ゲーム制作の敷居を下げる工夫として、簡単に使えるアセットの提供や、サンプルの充実などが考えられる。
- 技術書同人誌即売会で本出せたらいいね