Ebiten in 2020
It's been 7 years since I started to develop Ebiten. This article is a retrospective of Ebiten in 2020.
Sponsors
These people sponsored me in between December 2019 and November 2020. I can't thank you enough!
(In the order of total sponsoring amounts)
- Brandon Chung
- zucenko
- Samuel Mortenson
- Sergio Rubio
- Jithin Raj
- Alex Bykov
- Jeremiah
- Shintaro Abe
- And some private sponsors
Contributors
These people contributed to Ebiten in between December 2019 and November 2020. I appreciate all the contributions!
(In the order of total commits)
and many more contributors have contributed to Ebiten.
Events
Summary
- The most significant change in Ebiten is introducing a Go-flavored shading language. I hope this would be used more in actual applications.
- 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.
- I have been working on supporting consoles. An actual output will be shown in 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.
December, 2019
- Google Developer Group Shikoku held a workshop about Ebiten "香川 Go 言語 わいわい会 (GAME を作ろう)" in Kagawa, Japan.
- Jae Bentvelzen (SilbinaryWolf) released Give Up The Dupe". This is the very first Steam game with Ebiten, as far as I know.
January
- I've finished supporting Go modules for Gomobile. Gomobile is a very essential product for Ebiten, and supporting Go modules is necessary for Ebiten v2.
February
- I was doing an experiment to run the Go toolchains as WebAssembly. The output is in the project Asobiba.
March
- Started to develop go2dotnet. This is a tool to convert from Go to C# so that an Ebiten game work on MonoGame. With this, I planned to make Ebiten games work on consoles. Actually I've succeeded to make an Ebiten game work on MonoGame, but the output C# was too big to convert into C++ for consoles, then I abandoned this project. Instead, I started to develop go2cpp based on my experience of go2dotnet later.
April
- Released Ebiten 1.11. The main feature is
Game
interface andRunGame
function. In addition, you can develop a desktop mascot application.
May
- Started to develop go2cpp. This tool converts Go to C++. The purpose is to make Ebiten games works on consoles.
June
- Introduced a breaking change to make Ebiten faster.
July
- Snowman Story, which is made with Ebiten by Odencat, received Top10 award at Google Play Indie Games Festival 2020. Congratulations!
- Odencat is a game company established by Daigo and has released several mobile games in Ebiten.
- Odencat は Daigo によって設立されたゲーム会社で、 Ebiten 製モバイルゲームをいくつかリリースしています。
「スノーマン・ストーリー」TOP10に選んでいただけたようです。ありがとうございます🥲
— Ryota (@ryo4071) July 24, 2020
他の受賞者と特別賞の方もおめでとうございます!!#IndieGamesFestival https://t.co/mNfP3M27xW
August
- Several interesting games with Ebiten were released in this month.
- Nadim Kobeissi released Piccolo. This is an Othello game with a beautiful user interface, and has the WebAssembly version. This AI is astonishingly strong for me and I could not beat the default level.
- corfe83 released Idle Armada. Probably this is the very first paid Android application with Ebiten.
September
- Odencat released Mousebusters.
October
- Released Ebiten 1.12 with a Go-flavored shading language.
- Released Ebiten 2.0. This is the first major version update. The APIs are cleaned up.
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)
}
- Tommaso Visconti held a workshop session "Game development with Go" at GoLab 2020.
November
- At a game jam Game Off 2020 hosted by GitHub, some games with Ebiten were released
December
- I'm now working on supporting consoles, especially Nintendo Switch. Stay tuned!
Ebiten in 2021 and after
- 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.
- The other thing I am interested in is supporting UI (Issue 1029). I think that supporting a native text input would be useful.