Real-world game development with Ebitengine - How to make the best-selling Go game
18 de Sep de 2022•0 gostou
1 gostaram
Seja o primeiro a gostar disto
mostrar mais
•4,963 visualizações
visualizações
Vistos totais
0
No Slideshare
0
De incorporações
0
Número de incorporações
0
Baixar para ler offline
Denunciar
Software
In this talk, the games made by Odencat will be showcased, and it'll be explained how the studio has grown with Ebitengine. You'll learn a hint to creating a successful game library and the strategy to build a game studio from scratch.
Compiling a Go program into a native binary for Nintendo Switch™
https://ebiten.org/blog/native_compiling_for_nintendo_switch.html
Why Go?
?
Go Gopher by Renee French is
licensed under the Creative
Commons Attribution 3.0 License.
Number of reasons NOT to use
Go for Game Development
Back then (2017)
● No widely used game engines for Go existed
● No IDE like Unity3D/Unreal was available
● Not many 3rd party libraries were available for game development
● There were only small communities
● There is no official Go support on any console
● Daigo had professional experience in Unity3D and had no clue about
Go
Hi, Daigo!
Why don’t you use my
OSS game library
written in Go for your
new games!?
Dude,
It does not make
sense to use Go
for Game
Development
Hajime Hoshi Daigo Sato
You can learn Go
quickly, you are a
smart man!!
I’ll help writing the RPG
engine as well, deal?
Hmm?
It sounds good
actually... And you are
right, a smart person
should learn Go!
Hajime Hoshi Daigo Sato
So many challenges
● The game library (Ebitengine) did not have any multi-platform
support yet, it needed to be ported to every platform we wanted to
sell our game.
● The OSS was still immature, unstable, performance problems
○ Not reaching 30 FPS for a simple 2D game
○ No support for mp3, ogg
○ QA in production (Using our players as QA)
● If Hajime is bored with Ebiten, my business is over
※ all info above is based on the situation of the year of 2016
All of them above are unnecessary if you used Unity3D or Unreal
Hajime is Happy
Hajime Hoshi
● Used Odencat games to test Ebitengine
● Odencat games being the Demo for Ebitengine
● Bear’s Restaurant proves Ebitengine runs on
Nintendo Switch™
● Someone is Dogfooding your OSS
● Fun and comfortable working experience with Go
● Gives energy to his life
Daigo is Happy
Daigo Sato
● Very fast iteration with very short compile time.
● The limitation rather gave the power
● Being able to borrow the super talented engineer’s
power
● Have the feeling of full-control
○ Closer to native
○ High Maintainability / Portability
○ Dedication for crash-free
● Homebrew game engine is good for mental health
Evolve games
Clock of Atonement
Ported the existing RPGMaker2000 game
Bluebird of Happiness
Prove if we can make an escape room game / implemented sponsor system
Bear’s Restaurant
Support edge to edge experience for all devices / Ads Minigame System
Fishing Paradiso
Prove we can make more non-RPG games
Odencat Game Runtime
Native Layer
IAP / Ads / Analytics / Storage / ...
Game Data
Odencat RPG Runtime
Common Logic / Game Logic
ObjC/Java/C++
Go + Ebitengine
msgpack
per platform
one
per game
For each game, we are just swapping the game data
♫
Game Data
Music
Graphics
Scripts
.ogg
.png
.json
RPG Editor
● ReactJS + Electron
● Very similar to RPG Maker
series
● Build a game only with
commands
● Non-engineers can make
games
Animation Tool
● Pure Go tool
● Make keyframe animations
● Let artist make animations
without using the RPG
Editor
Switch target to make different builds.
The same Go code runs for
every game & every platform
Take away
● Solve the Chicken-Egg Problem if you build OSS
● I you develop everything from scratch, you should
have a good reason to do so.
● Making a game with Go is fun
In order to develop a successful OSS, it is necessary to solve the Chicken-Egg Problem. Evolving with your customer can be a good strategy.
Making a game is hard, if you develop everything from scratch, you’d better have a good reason to do so.
Making a game with Go is fun. It is true that I could’ve achieved what I’ve done with other languages, but it is good for your mental health if you use a language with a good philosophy.