2020 年の Ebiten
自分が Ebiten を開発し始めてから 7 年になりました。この記事は、 2020 年の Ebiten の回顧録です。
スポンサー
2019 年 12 月から 2020 年 11 月の間、以下の方々にスポンサーしていただきました。心より感謝いたします。
(スポンサー総額の大きい順、敬称略)
- Brandon Chung
- zucenko
- Samuel Mortenson
- Sergio Rubio
- Jithin Raj
- Alex Bykov
- Jeremiah
- Shintaro Abe
- And some private sponsors
コントリビューター
2019 年 12 月から 2020 年 11 月の間、以下の方々にコントリビュートしていただきました。心より感謝いたします。
(コミット数順、敬称略)
その他多数のコントリビューターからコントリビュートしていただきました。
出来事
まとめ
- Ebiten 自体の一番大きい変化は、 Go 風味シェーディング言語の導入です。今後もっと実アプリケーションで使われるように慣ればと思います。
- 次に大きい変化は、メジャーバージョンが v2 にアップデートされたことです。初の試みでしたが、うまく行ったように思われます。 v3 が出るのはおおよそ 5 年後くらいでしょう。
- 家庭用ゲーム機の対応を行っていました。実際に成果物が出るのは 2021 年でしょう。
- 去年と比べて、 Ebiten を使ったアプリケーションが徐々に増えてきました。大変ありがたいことです。この記事でもいくつかピックアップして紹介しています。
2019 年 12 月
- Google Developer Group Shikoku 主催で、「香川 Go 言語 わいわい会 (GAME を作ろう)」という Ebiten の勉強会が香川県で開かれました。
- 「Give Up The Dupe」が Jae Bentvelzen (SilbinaryWolf) 氏によってリリースされました。これは自分の知る限り、一番最初の Ebiten 製 Steam ゲームです。
1 月
- Gomobile の Go modules 対応が完了しました。 Gomobile は Ebiten にとって極めて重要なプロダクトであり、 Go modules の対応は Ebiten v2 のために必要でした。
2 月
- Go ツールチェーンを WebAssembly として動かす実験を行っていました。成果物は Asobiba リポジトリにあります。
3 月
- go2dotnet の開発を開始。これは、 Go を C# に変換するツールで、 Ebiten のゲームを MonoGame で動かすことができ、家庭用ゲーム機で動かすことを目論んだものでした。実際 Ebiten のゲームを MonoGame 上で動かすことは出来たのですが、生成される C# が巨大すぎて家庭用ゲーム機への C++ 変換がうまくいかなかったので断念しました。その代わり、 go2dotnet は後に開発する go2cpp の礎となりました。
4 月
- Ebiten 1.11 をリリース。主な機能は
Game
インターフェイスとRunGame
関数です。また、デスクトップマスコットが作れるようになりました。
5 月
- go2cpp の開発を開始。このツールは Go を C++ に変換します。目的は Ebiten のゲームを家庭用ゲーム機で動かすことです。
6 月
- Ebiten の高速化のために、破壊的変更を導入しました。
7 月
- Odencat の Ebiten 製ゲーム「スノーマンストーリー」が、Google Play Indie Games Festival 2020 にてトップ 10 を受賞しました。おめでとうございます!
- Odencat は Daigo によって設立されたゲーム会社で、 Ebiten 製モバイルゲームをいくつかリリースしています。
「スノーマン・ストーリー」TOP10に選んでいただけたようです。ありがとうございます🥲
— Ryota (@ryo4071) July 24, 2020
他の受賞者と特別賞の方もおめでとうございます!!#IndieGamesFestival https://t.co/mNfP3M27xW
8 月
- いくつか興味深いゲームがリリースされました。
- Nadim Kobeissi 氏の Piccolo がリリースされました。美しい UI を持つオセロゲームで、 WebAssembly 版があります。 AI がめちゃくちゃ強くて、自分の場合デフォルトのレベルでは一度も勝てませんでした。
- corfe83 氏の Idle Armada がリリースされました。これはおそらく Ebiten 史上初の有料 Android アプリケーションです。
9 月
- Odencat の ねずみバスターズ がリリースされました。
10 月
- Ebiten 1.12 をリリース。Go 風味のシェーダ言語が利用できるようになりました。
- Ebiten 2.0 をリリース。初めてのメジャーバージョンアップデートです。 API が整理されました。
package main
// Uniform variables.
var Time float
var Cursor vec2
var ScreenSize vec2
// Fragment is the entry point of the fragment shader.
// Fragment returns the color value for the current position.
func Fragment(position vec4, texCoord vec2, color vec4) vec4 {
// You can define variables with a short variable declaration like Go.
lightpos := vec3(Cursor, 50)
lightdir := normalize(lightpos - position.xyz)
normal := normalize(imageSrc1UnsafeAt(texCoord) - 0.5)
ambient := 0.25
diffuse := 0.75 * max(0.0, dot(normal.xyz, lightdir))
// You can treat multiple source images by
// imageSrc[N]At or imageSrc[N]UnsafeAt.
return imageSrc0UnsafeAt(texCoord) * (ambient + diffuse)
}
- GoLab 2020 にて、 Tommaso Visconti 氏のワークショップ「Game development with Go」が行われました。
11 月
- GitHub 主催のゲームジャム Game Off 2020 にて、いくつか Ebiten 製ゲームが公開されました。
12 月
- 現在、家庭用ゲーム機、特に Nintendo Switch のサポートに向けて作業中です。お楽しみに!
2021 年以降の Ebiten
- 最もプライオリティの高いタスクは家庭用ゲーム機、特に Nintendo Switch のサポートです (Issue 744)。 go2cpp を使って実現可能であると信じています。 NDA の問題があり、成果物は公開できないのですが、いつか Nintendo Switch 向けの Ebiten ゲームをリリースしたいと考えています。
- その他興味があるのは UI のサポートです。ネイティブでテキスト入力ができるようになると便利であると考えています (Issue 1029)。