SlideShare uma empresa Scribd logo
1 de 33
Real-world game development
with Ebitengine
- How to make the best-selling Go game
Daigo Sato
All of our games are
made with Ebitengine.
https://ebiten.org/
It works on Nintendo Switch™!
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
I decided to use Go
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
Was it worth it?
?
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 ...
Daigo Sato
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
Chicken Egg Problem
We’ve grown together
How we make games
We have to make many games
In a meaningful way
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
Write once,
Run Everywhere
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
One improvement for All
New Feature / Optimization / Crash fix / SDK Update
Test in Production
Sharing the codebase enabled us to use
our less popular games to test new features/updates.
OK OK
Wrap up
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
Add to Wishlist NOW!
@daigo
Follow me on Twitter!

Mais conteúdo relacionado

Mais procurados

ゲーム向けな美味しい乱数を生成する(再アップ版)
ゲーム向けな美味しい乱数を生成する(再アップ版)ゲーム向けな美味しい乱数を生成する(再アップ版)
ゲーム向けな美味しい乱数を生成する(再アップ版)ai BlogOnly
 
若輩エンジニアから見たUniRxを利用したゲーム開発
若輩エンジニアから見たUniRxを利用したゲーム開発若輩エンジニアから見たUniRxを利用したゲーム開発
若輩エンジニアから見たUniRxを利用したゲーム開発Hirohito Morinaga
 
WPF開発での陥りやすい罠
WPF開発での陥りやすい罠WPF開発での陥りやすい罠
WPF開発での陥りやすい罠Sho Okada
 
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
知らないと損するアプリ開発におけるStateMachineの活用法(full版)知らないと損するアプリ開発におけるStateMachineの活用法(full版)
知らないと損するアプリ開発におけるStateMachineの活用法(full版)Ken Morishita
 
Unity での asset bundle による追加コンテンツの扱い方
Unity での asset bundle による追加コンテンツの扱い方Unity での asset bundle による追加コンテンツの扱い方
Unity での asset bundle による追加コンテンツの扱い方Kouji Hosoda
 
【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作るtorisoup
 
Behaviour Tree AI in Gentou Senki Griffon (幻塔戦記グリフォンでのBehaviour Treeの試み)
 Behaviour Tree AI in Gentou Senki Griffon (幻塔戦記グリフォンでのBehaviour Treeの試み) Behaviour Tree AI in Gentou Senki Griffon (幻塔戦記グリフォンでのBehaviour Treeの試み)
Behaviour Tree AI in Gentou Senki Griffon (幻塔戦記グリフォンでのBehaviour Treeの試み)Sindharta Tanuwijaya
 
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?Takuya Ueda
 
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnity Technologies Japan K.K.
 
大画面 e-Paperでどハマりした話
大画面 e-Paperでどハマりした話大画面 e-Paperでどハマりした話
大画面 e-Paperでどハマりした話Hitoshi Kikuchi
 
Visual Studio を使わず .NET する
Visual Studio を使わず .NET するVisual Studio を使わず .NET する
Visual Studio を使わず .NET するm ishizaki
 
【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~
【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~
【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~UnityTechnologiesJapan002
 
Unityでオニオンアーキテクチャ
UnityでオニオンアーキテクチャUnityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャtorisoup
 
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?京大 マイコンクラブ
 
ワタシはSingletonがキライだ
ワタシはSingletonがキライだワタシはSingletonがキライだ
ワタシはSingletonがキライだTetsuya Kaneuchi
 
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化DeNA
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミングPreferred Networks
 
Win32 APIをてなずけよう
Win32 APIをてなずけようWin32 APIをてなずけよう
Win32 APIをてなずけようKouji Matsui
 
Unity講習会(初級)
Unity講習会(初級)Unity講習会(初級)
Unity講習会(初級)torisoup
 

Mais procurados (20)

ゲーム向けな美味しい乱数を生成する(再アップ版)
ゲーム向けな美味しい乱数を生成する(再アップ版)ゲーム向けな美味しい乱数を生成する(再アップ版)
ゲーム向けな美味しい乱数を生成する(再アップ版)
 
若輩エンジニアから見たUniRxを利用したゲーム開発
若輩エンジニアから見たUniRxを利用したゲーム開発若輩エンジニアから見たUniRxを利用したゲーム開発
若輩エンジニアから見たUniRxを利用したゲーム開発
 
WPF開発での陥りやすい罠
WPF開発での陥りやすい罠WPF開発での陥りやすい罠
WPF開発での陥りやすい罠
 
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
知らないと損するアプリ開発におけるStateMachineの活用法(full版)知らないと損するアプリ開発におけるStateMachineの活用法(full版)
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
 
Unity での asset bundle による追加コンテンツの扱い方
Unity での asset bundle による追加コンテンツの扱い方Unity での asset bundle による追加コンテンツの扱い方
Unity での asset bundle による追加コンテンツの扱い方
 
【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
 
Behaviour Tree AI in Gentou Senki Griffon (幻塔戦記グリフォンでのBehaviour Treeの試み)
 Behaviour Tree AI in Gentou Senki Griffon (幻塔戦記グリフォンでのBehaviour Treeの試み) Behaviour Tree AI in Gentou Senki Griffon (幻塔戦記グリフォンでのBehaviour Treeの試み)
Behaviour Tree AI in Gentou Senki Griffon (幻塔戦記グリフォンでのBehaviour Treeの試み)
 
【Unity道場】使って覚えるTileMap
【Unity道場】使って覚えるTileMap【Unity道場】使って覚えるTileMap
【Unity道場】使って覚えるTileMap
 
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
 
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
 
大画面 e-Paperでどハマりした話
大画面 e-Paperでどハマりした話大画面 e-Paperでどハマりした話
大画面 e-Paperでどハマりした話
 
Visual Studio を使わず .NET する
Visual Studio を使わず .NET するVisual Studio を使わず .NET する
Visual Studio を使わず .NET する
 
【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~
【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~
【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~
 
Unityでオニオンアーキテクチャ
UnityでオニオンアーキテクチャUnityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャ
 
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
 
ワタシはSingletonがキライだ
ワタシはSingletonがキライだワタシはSingletonがキライだ
ワタシはSingletonがキライだ
 
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミング
 
Win32 APIをてなずけよう
Win32 APIをてなずけようWin32 APIをてなずけよう
Win32 APIをてなずけよう
 
Unity講習会(初級)
Unity講習会(初級)Unity講習会(初級)
Unity講習会(初級)
 

Semelhante a Real-world game development with Ebitengine - How to make the best-selling Go game

How We Won Gamedev By Rolling Our Own Tech (no notes)
How We Won Gamedev By Rolling Our Own Tech (no notes)How We Won Gamedev By Rolling Our Own Tech (no notes)
How We Won Gamedev By Rolling Our Own Tech (no notes)Mihai Gosa
 
So you (think you) want to work in video games
So you (think you) want to work in video gamesSo you (think you) want to work in video games
So you (think you) want to work in video gamesSven Charleer
 
DSC RNGPIT - Getting Started with Game Development Day 1
DSC RNGPIT - Getting Started with Game Development Day 1DSC RNGPIT - Getting Started with Game Development Day 1
DSC RNGPIT - Getting Started with Game Development Day 1DeepMevada1
 
Brass Monkey Couch Multiplayer
Brass Monkey Couch MultiplayerBrass Monkey Couch Multiplayer
Brass Monkey Couch MultiplayerFrancois Laberge
 
Getting Started with Python Workshop Part 1
Getting Started with Python Workshop Part 1Getting Started with Python Workshop Part 1
Getting Started with Python Workshop Part 1CEGD
 
Mobile game design: What makes it different?
Mobile game design: What makes it different?Mobile game design: What makes it different?
Mobile game design: What makes it different?Devin Becker
 
The 8 steps to create a board game on Board Game Arena
The 8 steps to create a board game on Board Game ArenaThe 8 steps to create a board game on Board Game Arena
The 8 steps to create a board game on Board Game ArenaBoard Game Arena
 
Jakarta XR Meetup 13 | Digital Happiness deck
Jakarta XR Meetup 13 | Digital Happiness deckJakarta XR Meetup 13 | Digital Happiness deck
Jakarta XR Meetup 13 | Digital Happiness deckNico Alyus
 
Kodu Together: Video Game Programming & Publishing
Kodu Together: Video Game Programming & PublishingKodu Together: Video Game Programming & Publishing
Kodu Together: Video Game Programming & PublishingNick Tanzi
 
Python games
Python gamesPython games
Python gamesmolw
 
Introduction to game development
Introduction to game developmentIntroduction to game development
Introduction to game developmentGaetano Bonofiglio
 
OGDC2012 Just-in-time Operation in Social Games_Mr.Eiji Okuda_Glooops
OGDC2012 Just-in-time Operation in Social Games_Mr.Eiji Okuda_GlooopsOGDC2012 Just-in-time Operation in Social Games_Mr.Eiji Okuda_Glooops
OGDC2012 Just-in-time Operation in Social Games_Mr.Eiji Okuda_GlooopsBuff Nguyen
 
The importance of just-in-time operation of social games
The importance of just-in-time operation of social gamesThe importance of just-in-time operation of social games
The importance of just-in-time operation of social gamesaction.vn
 
iPad Game Design -- Develop Liverpool Dec' 2011
iPad Game Design -- Develop Liverpool Dec' 2011iPad Game Design -- Develop Liverpool Dec' 2011
iPad Game Design -- Develop Liverpool Dec' 2011garethjenkins
 

Semelhante a Real-world game development with Ebitengine - How to make the best-selling Go game (20)

How We Won Gamedev By Rolling Our Own Tech (no notes)
How We Won Gamedev By Rolling Our Own Tech (no notes)How We Won Gamedev By Rolling Our Own Tech (no notes)
How We Won Gamedev By Rolling Our Own Tech (no notes)
 
So you (think you) want to work in video games
So you (think you) want to work in video gamesSo you (think you) want to work in video games
So you (think you) want to work in video games
 
I Develop Videogames
I Develop VideogamesI Develop Videogames
I Develop Videogames
 
DSC RNGPIT - Getting Started with Game Development Day 1
DSC RNGPIT - Getting Started with Game Development Day 1DSC RNGPIT - Getting Started with Game Development Day 1
DSC RNGPIT - Getting Started with Game Development Day 1
 
Swarming Zombies
Swarming ZombiesSwarming Zombies
Swarming Zombies
 
Brass Monkey Couch Multiplayer
Brass Monkey Couch MultiplayerBrass Monkey Couch Multiplayer
Brass Monkey Couch Multiplayer
 
Getting Started with Python Workshop Part 1
Getting Started with Python Workshop Part 1Getting Started with Python Workshop Part 1
Getting Started with Python Workshop Part 1
 
Mobile game design: What makes it different?
Mobile game design: What makes it different?Mobile game design: What makes it different?
Mobile game design: What makes it different?
 
The 8 steps to create a board game on Board Game Arena
The 8 steps to create a board game on Board Game ArenaThe 8 steps to create a board game on Board Game Arena
The 8 steps to create a board game on Board Game Arena
 
BGA Studio Guidelines
BGA Studio GuidelinesBGA Studio Guidelines
BGA Studio Guidelines
 
Jakarta XR Meetup 13 | Digital Happiness deck
Jakarta XR Meetup 13 | Digital Happiness deckJakarta XR Meetup 13 | Digital Happiness deck
Jakarta XR Meetup 13 | Digital Happiness deck
 
RfA - Manual
RfA - ManualRfA - Manual
RfA - Manual
 
Kodu Together: Video Game Programming & Publishing
Kodu Together: Video Game Programming & PublishingKodu Together: Video Game Programming & Publishing
Kodu Together: Video Game Programming & Publishing
 
Insight
InsightInsight
Insight
 
Python games
Python gamesPython games
Python games
 
Street runner final
Street runner finalStreet runner final
Street runner final
 
Introduction to game development
Introduction to game developmentIntroduction to game development
Introduction to game development
 
OGDC2012 Just-in-time Operation in Social Games_Mr.Eiji Okuda_Glooops
OGDC2012 Just-in-time Operation in Social Games_Mr.Eiji Okuda_GlooopsOGDC2012 Just-in-time Operation in Social Games_Mr.Eiji Okuda_Glooops
OGDC2012 Just-in-time Operation in Social Games_Mr.Eiji Okuda_Glooops
 
The importance of just-in-time operation of social games
The importance of just-in-time operation of social gamesThe importance of just-in-time operation of social games
The importance of just-in-time operation of social games
 
iPad Game Design -- Develop Liverpool Dec' 2011
iPad Game Design -- Develop Liverpool Dec' 2011iPad Game Design -- Develop Liverpool Dec' 2011
iPad Game Design -- Develop Liverpool Dec' 2011
 

Último

8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech studentsHimanshiGarg82
 
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptxBUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptxalwaysnagaraju26
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...Shane Coughlan
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...Jittipong Loespradit
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
Pharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodologyPharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodologyAnusha Are
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesVictorSzoltysek
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfkalichargn70th171
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfVishalKumarJha10
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 

Último (20)

8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptxBUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Pharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodologyPharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodology
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 

Real-world game development with Ebitengine - How to make the best-selling Go game

  • 1. Real-world game development with Ebitengine - How to make the best-selling Go game Daigo Sato
  • 2.
  • 3. All of our games are made with Ebitengine. https://ebiten.org/
  • 4. It works on Nintendo Switch™!
  • 5. Compiling a Go program into a native binary for Nintendo Switch™ https://ebiten.org/blog/native_compiling_for_nintendo_switch.html
  • 6. Why Go? ? Go Gopher by Renee French is licensed under the Creative Commons Attribution 3.0 License.
  • 7. 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
  • 8. 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
  • 9. 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
  • 10. I decided to use Go
  • 11. 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
  • 12. Was it worth it? ?
  • 13. 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
  • 15. 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
  • 18. How we make games
  • 19. We have to make many games
  • 21. 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
  • 23. 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
  • 24. For each game, we are just swapping the game data ♫ Game Data Music Graphics Scripts .ogg .png .json
  • 25. RPG Editor ● ReactJS + Electron ● Very similar to RPG Maker series ● Build a game only with commands ● Non-engineers can make games
  • 26. Animation Tool ● Pure Go tool ● Make keyframe animations ● Let artist make animations without using the RPG Editor
  • 27. Switch target to make different builds. The same Go code runs for every game & every platform
  • 28. One improvement for All New Feature / Optimization / Crash fix / SDK Update
  • 29. Test in Production Sharing the codebase enabled us to use our less popular games to test new features/updates. OK OK
  • 31. 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

Notas do Editor

  1. 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.