It's been 7 years since I started to develop Ebiten. This article is a retrospective of Ebiten in 2020.

自分が Ebiten を開発し始めてから 7 年になりました。この記事は、 2020 年の Ebiten の回顧録です。



These people sponsored me in between December 2019 and November 2020. I can't thank you enough!

2019 年 12 月から 2020 年 11 月の間、以下の方々にスポンサーしていただきました。心より感謝いたします。

(In the order of total sponsoring amounts)




These people contributed to Ebiten in between December 2019 and November 2020. I appreciate all the contributions!

2019 年 12 月から 2020 年 11 月の間、以下の方々にコントリビュートしていただきました。心より感謝いたします。

(In the order of total commits)






  • The most significant change in Ebiten is introducing a Go-flavored shading language. I hope this would be used more in actual applications.
  • Ebiten 自体の一番大きい変化は、 Go 風味シェーディング言語の導入です。今後もっと実アプリケーションで使われるように慣ればと思います。
  • The second most significant change in Ebiten is updating the major version to v2. This was the first trial, but apparently worked well. v3 will be released in about 5 years.
  • 次に大きい変化は、メジャーバージョンが v2 にアップデートされたことです。初の試みでしたが、うまく行ったように思われます。 v3 が出るのはおおよそ 5 年後くらいでしょう。
  • I have been working on supporting consoles. An actual output will be shown in 2021.
  • 家庭用ゲーム機の対応を行っていました。実際に成果物が出るのは 2021 年でしょう。
  • Compared with the last year, the number of applications with Ebiten has been increased. I am very grateful with that. I picked up some of them in this article.
  • 去年と比べて、 Ebiten を使ったアプリケーションが徐々に増えてきました。大変ありがたいことです。この記事でもいくつかピックアップして紹介しています。

December, 2019

2019 年 12 月


1 月


2 月

  • I was doing an experiment to run the Go toolchains as WebAssembly. The output is in the project Asobiba.
  • Go ツールチェーンを WebAssembly として動かす実験を行っていました。成果物は Asobiba リポジトリにあります。


3 月


4 月

  • Released Ebiten 1.11. The main feature is Game interface and RunGame function. In addition, you can develop a desktop mascot application.
  • Ebiten 1.11 をリリース。主な機能は Game インターフェイスと RunGame 関数です。また、デスクトップマスコットが作れるようになりました。


5 月

  • Started to develop go2cpp. This tool converts Go to C++. The purpose is to make Ebiten games works on consoles.
  • go2cpp の開発を開始。このツールは Go を C++ に変換します。目的は Ebiten のゲームを家庭用ゲーム機で動かすことです。


6 月


7 月


8 月


9 月


10 月

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)


11 月


12 月

  • I'm now working on supporting consoles, especially Nintendo Switch. Stay tuned!
  • 現在、家庭用ゲーム機、特に Nintendo Switch のサポートに向けて作業中です。お楽しみに!

Ebiten in 2021 and after

2021 年以降の Ebiten

  • The highest priority task is supporting consoles, especially Nintendo Switch (Issue 744). I believe this can be done with go2cpp. Due to NDA, I cannot make the work open, but I'd like to release an Ebiten game for Nintendo Switch some day.
  • 最もプライオリティの高いタスクは家庭用ゲーム機、特に Nintendo Switch のサポートです (Issue 744)。 go2cpp を使って実現可能であると信じています。 NDA の問題があり、成果物は公開できないのですが、いつか Nintendo Switch 向けの Ebiten ゲームをリリースしたいと考えています。
  • The other thing I am interested in is supporting UI (Issue 1029). I think that supporting a native text input would be useful.
  • その他興味があるのは UI のサポートです。ネイティブでテキスト入力ができるようになると便利であると考えています (Issue 1029)。