SlideShare a Scribd company logo
1 of 22
Download to read offline
elixirを使ったゲームサーバ
Hidetaka Kojo
XFLAG™スタジオ / mixi, Inc.
自己紹介
• 名前: 古城秀隆
• github: HidetakaKojo
• 所属: エックスフラグスタジオたんぽぽT
• お仕事:なんでも嫌がらずやります
昨今のスマフォゲームアプリ事情
• ゲームを複数人で楽しむというのは

当たり前になってきた
• 携帯でのよくあるマルチの構成
• turnserver, photon
• clientの一台がhostとなる

ようなserver-client構成
中継サーバ
Host Client
昨今のスマフォゲームアプリ事情
• 実況中継や大会など多くの人にプレイを視聴される
• e-sports
• モンストグランプリ
• 閉じられた世界から広くみられる世界に
要求されるもの
• 公平さを担保するために不正の排除
• ゲームセーブのようなapi処理だけでなく、ゲーム途中のロジッ
クもサーバ側に…
• サーバからリアルタイムにclientにpushするニーズはある
• メンテナンス直前にユーザにnotifyする
• イベント開始を通知する
• ゲームデータ更新等をユーザに促す
• サーバクライアントで双方向通信可能な構成
elixir & phoenix
• rubyのプロダクトが既にあるので、導入時の見た目的な
アレルギーが少ない(と信じたい)
• ゲームサーバなのでsimpleなapiサーバと常時接続型のコ
ネクションを簡単に利用したい
• 常時接続コネクションを維持しつつホットスワップで
deployを行いたい
• やっぱり流行には乗っておきたい
Architecture
• シンプルな構成例
phoenix
server
JSON API
WebSocket
MySQL
Redis
RabbitMQ
/ZeroMQ
LB
Architecture
• ユーザデータの取得やゲームセーブなどユーザドリブンで発生す
る処理はjson(msgpack) api
• websocketはsignup(json api)で発行されたtokenと

socket server listから返されるipを使って接続
• 実際に接続するサーバは一緒
• json apiはLBを挟みたいがwebsocketは挟みたくないため
• websocket接続先はサーバ側である程度コントロールできる
ようにしておきたいという希望もある
• アプリ起動時にサーバからのpush用の接続を作成
Architecture
• MySQLはもちろんPostgreSQLでもok
• adapter書いて好きなものを追加してもok
• ただしadapter書くならEcto2.0を待ってからのほうが
良さそう
• Ectoの設計上、shardingを書くのは比較的楽
• Ectoはphoenixで標準で疲れているDB wrapper
• 薄いRubyのActiveRecord相当のもの
Architecture
• redis
• よくあるキャッシュ用とdelayed_job用
• messaging queue
• pub/sub用
• phoenix channel(後述)の仕組みの一部で必要
Phoenix Channel
• phoenixが用意するover-httpなリアルタイム通信の仕組み
• L4の生のsocket通信ではない
• websocketのオーバヘッドは少なく、

内部のcowboyの実装にも特に問題はない
• 開発者曰く、40core/128gbのサーバで

2,000,000 clientは処理可能とのこと
• 性能向上の跡 http://goo.gl/w3BtRJ
Phoenix Channel
Phoenix Channel
• transport, channel, pub/sub という3つの要素で構成
• transport
• 常時接続コネクションを管理する足回り
• ユーザコネクションにつき1 (erlang) process
• コネクションとchannelとのやりとりを取り持つ
• 通常はシリアライズにjsonを用いるが、シリアライザを

書くことで比較的に簡単に変更できる
• msgpack, ProtocolBuffers, FlatBuffers
Phoenix Channel
• channel
• transportから送られてくるclientのmessageを受け取る
• topicという文字列で送信先を制御する
• channelにロジックを実装しmessageを処理する
• ここにゲームロジックを実装する!
• pub/subのpublisherとなってtopicのsubscriberの
transportにmessageを送信する
Phoenix Channel
• pub/sub
• デフォルトでerlangのpg2を使用している
• pg2でフロント分散するにはclusterを組み必要あり
• ただpg2はprocess group参加時に各nodeにlockが

発生するので別のMQを使用するほうが良さそう
• redis, RabbitMQ, ZeroMQなどに切り替え可能
ゲーム開始時の接続の流れ
• tokenを持ってwebsocketのリクエストを送信
• 認証が完了したらconnectionを確立
phoenix
server
connection
ゲーム開始時の接続の流れ
• json api等で受け取ったgame idをtopicに含めて

channelに接続
• games:fcfe5f21-8a08-4c9a-9f97-29d2fd6a27b9
• gameの参加者だった場合はchannel join成功
phoenix
server
join
event
ゲーム専用コネクションの有無
• アプリ起動時にサーバからのpush用のchannelに接続して
いると仮定するとゲーム開始時の通信は2通りの方法がある
• 起動時のwebsocketを使ってゲーム用のchannelを接続
• websocketを使い回すので無駄なheartbeat等を減ら
せる
• ゲーム開始時に別のゲーム用のwebsocketを接続
• 特定のサーバにゲーム用の接続を誘導できる
ゲーム状態の保持
• ゲームの実装方法もサーバ構成を左右する
• ゲームの状態をcacheに接続し、clientからchannelにmessageが来るたび
にcacheから状態を読み出し、演算、stateを保存する
• ターン制やレイテンシがそれほど気にならないゲーム向け
• websocketの接続先がどこでもよく、再接続にも強い
• ゲーム用のprocessを作成し、そこにゲームの状態を維持しつつmessage
を処理する
• 低レイテンシ要求があるMMOのmapのような分割された構成に向く
• 特定のサーバにゲーム参加者が接続をする必要があり、サーバ故障時な
どにゲームの状態が失われる可能性がある
client logic
• ゲームがオフラインでもプレイできる場合…
• client側にもロジックが必要
• 言語によって同じ実装でも結果が異なる場合がある
• c++やc#で書かれたロジックをサーバ側に持ってこれないかも検討している
• view層とゲームのコアロジックをいかに切り離すか
• phoenixがsocketを管理して、thriftを使ってc++やc#のロジックに演算処
理を委ねる
• そもそもこの実装が正しいアプローチなのかも含めて課題
• UnityNetworkの進化に期待したい気持ちも…
deploy
• xflagの既存のゲームではプルリクエストがmasterにmergeされたら
deployしていいというルールになっている
• exrmを使ったchannel接続を維持したままのホットスワップは現時点で
は問題なく実行できている
• アプリケーションのバージョンの管理が少し面倒
• ホットスワップの元々の想定はもっとdeploy頻度が低い環境なのかも?
• clientの挙動をコントロール可能なゲームなら再接続をきちんと行える
ような設計をしたほうがコストは低いかもしれない
• ここはもっといい方法がないのか模索しています
まとめ
• とりあえずまだまだ試行錯誤ではありますが、elixirでの要
求を満たすようなゲームサーバの実装は可能性がありそう
• 今後も継続して試験や導入事例の作成に取り組む予定
• elixir界隈の方、ぜひ情報共有をしましょう!
• http://www.slideshare.net/hidetakakojo/elixir-58090331

More Related Content

What's hot

オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメYoji Kanno
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫Yuta Imai
 
Goのシンプルさについて
GoのシンプルさについてGoのシンプルさについて
Goのシンプルさについてpospome
 
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)Koichiro Matsuoka
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方増田 亨
 
ユーザーインタビューするときは、どうやらゾンビのおでましさ
ユーザーインタビューするときは、どうやらゾンビのおでましさユーザーインタビューするときは、どうやらゾンビのおでましさ
ユーザーインタビューするときは、どうやらゾンビのおでましさYoshiki Hayama
 
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムMySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムKouhei Sutou
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
 
Ganglia のUIにGrafanaを追加する話
Ganglia のUIにGrafanaを追加する話Ganglia のUIにGrafanaを追加する話
Ganglia のUIにGrafanaを追加する話KLab Inc. / Tech
 
RLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for DjangoRLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for DjangoTakayuki Shimizukawa
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうRyuji Tsutsui
 
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説増田 亨
 
基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装Masatoshi Tada
 
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019Tokoroten Nakayama
 
JIRA / Confluence の 必須プラグインはこれだ
JIRA / Confluence の必須プラグインはこれだJIRA / Confluence の必須プラグインはこれだ
JIRA / Confluence の 必須プラグインはこれだNarichika Kajihara
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるpospome
 
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)lestrrat
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean ArchitectureAtsushi Nakamura
 

What's hot (20)

オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
 
Goのシンプルさについて
GoのシンプルさについてGoのシンプルさについて
Goのシンプルさについて
 
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
 
SSH力をつけよう
SSH力をつけようSSH力をつけよう
SSH力をつけよう
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
 
ユーザーインタビューするときは、どうやらゾンビのおでましさ
ユーザーインタビューするときは、どうやらゾンビのおでましさユーザーインタビューするときは、どうやらゾンビのおでましさ
ユーザーインタビューするときは、どうやらゾンビのおでましさ
 
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムMySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
Ganglia のUIにGrafanaを追加する話
Ganglia のUIにGrafanaを追加する話Ganglia のUIにGrafanaを追加する話
Ganglia のUIにGrafanaを追加する話
 
RLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for DjangoRLSを用いたマルチテナント実装 for Django
RLSを用いたマルチテナント実装 for Django
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
 
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
 
基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装基礎からのOAuth 2.0とSpring Security 5.1による実装
基礎からのOAuth 2.0とSpring Security 5.1による実装
 
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
 
JIRA / Confluence の 必須プラグインはこれだ
JIRA / Confluence の必須プラグインはこれだJIRA / Confluence の必須プラグインはこれだ
JIRA / Confluence の 必須プラグインはこれだ
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
 
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 

Viewers also liked

Terraform始めました
Terraform始めましたTerraform始めました
Terraform始めましたw1mvy pine
 
2017冬の開発合宿vrオンラインゲーム
2017冬の開発合宿vrオンラインゲーム2017冬の開発合宿vrオンラインゲーム
2017冬の開発合宿vrオンラインゲームSyo Igarashi
 
スマートフォンゲームのチート事情
スマートフォンゲームのチート事情スマートフォンゲームのチート事情
スマートフォンゲームのチート事情直生 亀山
 
今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋Takuya Ueda
 
私なりのGo言語のご紹介
私なりのGo言語のご紹介私なりのGo言語のご紹介
私なりのGo言語のご紹介Ryuji Iwata
 
実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いたAkihiro Kuwano
 
【初心者向け】Go言語勉強会資料
 【初心者向け】Go言語勉強会資料 【初心者向け】Go言語勉強会資料
【初心者向け】Go言語勉強会資料Yuji Otani
 

Viewers also liked (9)

Terraform始めました
Terraform始めましたTerraform始めました
Terraform始めました
 
Windsor castle
Windsor castleWindsor castle
Windsor castle
 
2017冬の開発合宿vrオンラインゲーム
2017冬の開発合宿vrオンラインゲーム2017冬の開発合宿vrオンラインゲーム
2017冬の開発合宿vrオンラインゲーム
 
スマートフォンゲームのチート事情
スマートフォンゲームのチート事情スマートフォンゲームのチート事情
スマートフォンゲームのチート事情
 
今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋
 
私なりのGo言語のご紹介
私なりのGo言語のご紹介私なりのGo言語のご紹介
私なりのGo言語のご紹介
 
Go言語オーバービュー201507
Go言語オーバービュー201507Go言語オーバービュー201507
Go言語オーバービュー201507
 
実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた
 
【初心者向け】Go言語勉強会資料
 【初心者向け】Go言語勉強会資料 【初心者向け】Go言語勉強会資料
【初心者向け】Go言語勉強会資料
 

Similar to elixirを使ったゲームサーバ

シンラ・テクノロジー第2回クラウドゲーム開発者会議
シンラ・テクノロジー第2回クラウドゲーム開発者会議シンラ・テクノロジー第2回クラウドゲーム開発者会議
シンラ・テクノロジー第2回クラウドゲーム開発者会議Shinra_Technologies
 
クリエイター魂を刺激する!シンラが提案する「ゲームの超進化」ロードマップ
クリエイター魂を刺激する!シンラが提案する「ゲームの超進化」ロードマップクリエイター魂を刺激する!シンラが提案する「ゲームの超進化」ロードマップ
クリエイター魂を刺激する!シンラが提案する「ゲームの超進化」ロードマップShinra_Technologies
 
FINAL FANTASY Record Keeper の作り方
FINAL FANTASY Record Keeper の作り方FINAL FANTASY Record Keeper の作り方
FINAL FANTASY Record Keeper の作り方dena_study
 
オンラインゲームのRails複数db戦略
オンラインゲームのRails複数db戦略オンラインゲームのRails複数db戦略
オンラインゲームのRails複数db戦略Yasutomo Uemori
 
サーバー知識不要!のゲームサーバー "Azure PlayFab" で長期運営タイトルを作ろう
サーバー知識不要!のゲームサーバー "Azure PlayFab" で長期運営タイトルを作ろうサーバー知識不要!のゲームサーバー "Azure PlayFab" で長期運営タイトルを作ろう
サーバー知識不要!のゲームサーバー "Azure PlayFab" で長期運営タイトルを作ろうDaisuke Masubuchi
 
TDUCTFの実行基盤
TDUCTFの実行基盤TDUCTFの実行基盤
TDUCTFの実行基盤Youta Egusa
 
さくらのクラウドを使ってみよう
さくらのクラウドを使ってみようさくらのクラウドを使ってみよう
さくらのクラウドを使ってみよう法林浩之
 
サイバーエージェントのゲーム事業のインフラからみたゲーム開発スタイルの変遷
サイバーエージェントのゲーム事業のインフラからみたゲーム開発スタイルの変遷サイバーエージェントのゲーム事業のインフラからみたゲーム開発スタイルの変遷
サイバーエージェントのゲーム事業のインフラからみたゲーム開発スタイルの変遷Suguru Shirai
 
リアルタイムコマンドバトルのゲームで PlayFab を使ってみた
リアルタイムコマンドバトルのゲームで PlayFab を使ってみたリアルタイムコマンドバトルのゲームで PlayFab を使ってみた
リアルタイムコマンドバトルのゲームで PlayFab を使ってみたYutoNishine
 
ある工場の情シス
ある工場の情シスある工場の情シス
ある工場の情シスKohei Nakamura
 
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYOFINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYOGame Tools & Middleware Forum
 
Elasticsearch for Hackadoll
Elasticsearch for HackadollElasticsearch for Hackadoll
Elasticsearch for Hackadollmosa siru
 
Infrastructure as code ~ ツールスタック / ヌーラボの事例 ~
Infrastructure as code ~ ツールスタック / ヌーラボの事例 ~Infrastructure as code ~ ツールスタック / ヌーラボの事例 ~
Infrastructure as code ~ ツールスタック / ヌーラボの事例 ~ikikko
 
【Unity道場京都スペシャル4】Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
【Unity道場京都スペシャル4】Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現【Unity道場京都スペシャル4】Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
【Unity道場京都スペシャル4】Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現UnityTechnologiesJapan002
 
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現Yoshifumi Kawai
 
セガサターンマシン語プログラミングの紹介
セガサターンマシン語プログラミングの紹介セガサターンマシン語プログラミングの紹介
セガサターンマシン語プログラミングの紹介Yuma Ohgami
 
【Unite Tokyo 2019】Unity + PlayFab ではじめる新しいゲーム運用 ~LiveOpsの始め方~
【Unite Tokyo 2019】Unity + PlayFab ではじめる新しいゲーム運用 ~LiveOpsの始め方~【Unite Tokyo 2019】Unity + PlayFab ではじめる新しいゲーム運用 ~LiveOpsの始め方~
【Unite Tokyo 2019】Unity + PlayFab ではじめる新しいゲーム運用 ~LiveOpsの始め方~UnityTechnologiesJapan002
 
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現gree_tech
 
Type scriptmemo
Type scriptmemoType scriptmemo
Type scriptmemoytanno
 

Similar to elixirを使ったゲームサーバ (20)

シンラ・テクノロジー第2回クラウドゲーム開発者会議
シンラ・テクノロジー第2回クラウドゲーム開発者会議シンラ・テクノロジー第2回クラウドゲーム開発者会議
シンラ・テクノロジー第2回クラウドゲーム開発者会議
 
クリエイター魂を刺激する!シンラが提案する「ゲームの超進化」ロードマップ
クリエイター魂を刺激する!シンラが提案する「ゲームの超進化」ロードマップクリエイター魂を刺激する!シンラが提案する「ゲームの超進化」ロードマップ
クリエイター魂を刺激する!シンラが提案する「ゲームの超進化」ロードマップ
 
FINAL FANTASY Record Keeper の作り方
FINAL FANTASY Record Keeper の作り方FINAL FANTASY Record Keeper の作り方
FINAL FANTASY Record Keeper の作り方
 
オンラインゲームのRails複数db戦略
オンラインゲームのRails複数db戦略オンラインゲームのRails複数db戦略
オンラインゲームのRails複数db戦略
 
サーバー知識不要!のゲームサーバー "Azure PlayFab" で長期運営タイトルを作ろう
サーバー知識不要!のゲームサーバー "Azure PlayFab" で長期運営タイトルを作ろうサーバー知識不要!のゲームサーバー "Azure PlayFab" で長期運営タイトルを作ろう
サーバー知識不要!のゲームサーバー "Azure PlayFab" で長期運営タイトルを作ろう
 
TDUCTFの実行基盤
TDUCTFの実行基盤TDUCTFの実行基盤
TDUCTFの実行基盤
 
さくらのクラウドを使ってみよう
さくらのクラウドを使ってみようさくらのクラウドを使ってみよう
さくらのクラウドを使ってみよう
 
サイバーエージェントのゲーム事業のインフラからみたゲーム開発スタイルの変遷
サイバーエージェントのゲーム事業のインフラからみたゲーム開発スタイルの変遷サイバーエージェントのゲーム事業のインフラからみたゲーム開発スタイルの変遷
サイバーエージェントのゲーム事業のインフラからみたゲーム開発スタイルの変遷
 
リアルタイムコマンドバトルのゲームで PlayFab を使ってみた
リアルタイムコマンドバトルのゲームで PlayFab を使ってみたリアルタイムコマンドバトルのゲームで PlayFab を使ってみた
リアルタイムコマンドバトルのゲームで PlayFab を使ってみた
 
ある工場の情シス
ある工場の情シスある工場の情シス
ある工場の情シス
 
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYOFINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
 
Elasticsearch for Hackadoll
Elasticsearch for HackadollElasticsearch for Hackadoll
Elasticsearch for Hackadoll
 
Infrastructure as code ~ ツールスタック / ヌーラボの事例 ~
Infrastructure as code ~ ツールスタック / ヌーラボの事例 ~Infrastructure as code ~ ツールスタック / ヌーラボの事例 ~
Infrastructure as code ~ ツールスタック / ヌーラボの事例 ~
 
【Unity道場京都スペシャル4】Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
【Unity道場京都スペシャル4】Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現【Unity道場京都スペシャル4】Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
【Unity道場京都スペシャル4】Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
 
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
 
Play jjug2012spring
Play jjug2012springPlay jjug2012spring
Play jjug2012spring
 
セガサターンマシン語プログラミングの紹介
セガサターンマシン語プログラミングの紹介セガサターンマシン語プログラミングの紹介
セガサターンマシン語プログラミングの紹介
 
【Unite Tokyo 2019】Unity + PlayFab ではじめる新しいゲーム運用 ~LiveOpsの始め方~
【Unite Tokyo 2019】Unity + PlayFab ではじめる新しいゲーム運用 ~LiveOpsの始め方~【Unite Tokyo 2019】Unity + PlayFab ではじめる新しいゲーム運用 ~LiveOpsの始め方~
【Unite Tokyo 2019】Unity + PlayFab ではじめる新しいゲーム運用 ~LiveOpsの始め方~
 
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
アナザーエデンにおける非同期オートセーブを用いた通信待ちストレスのないゲーム体験の実現
 
Type scriptmemo
Type scriptmemoType scriptmemo
Type scriptmemo
 

elixirを使ったゲームサーバ