SlideShare uma empresa Scribd logo
1 de 63
リアルタイム通信ゲームの
実装例
2016.5.28
株式会社Aiming
山藤 智之
自己紹介
• 山藤 智之
• 株式会社Aiming所属
• 携わった作品
– Blade Chronicle
– 剣と魔法のログレス(PC)
– 剣と魔法のログレス いにしえの女神
• 猫大好き!猫アレルギー系エンジニア
Aiming?
• オンラインゲームの会社
• 各職人材募集中です!!
今日の内容
• オンラインゲームを作るのに必要になる
通信技術のお話
– 通信規格
– 通信内容
– 通信ライブラリ
• RPC(Remote Procedure Call)
• IDL (Interface Definition Language)
通信規格
• UDP
– 単方向通信
• 届いたか?までは責任持たない
• 保証しようとするとTCPと同じ処理をアプリケー
ション側で適切に実装しないといけない
• TCP
– 双方向通信
• 配送が順序通り届いた事を保証してくれる
• UDPに比べて速度は遅い
• UDPに比べて通信量は多い
常時接続 / 非常時接続
• 非常時接続(単方向通信)
• リクエストに対してリプライ
• クライアントからの要求が必須
常時接続 / 非常時接続
• 常時接続(双方向通信)
• リクエストに対してリプライ
• サーバ側からのプッシュが可能
• クライアントに要求できる
通信内容
• キーフレーム形式
– フレーム毎のコントローラーからの入力を交換し
合う
– 対戦格闘ゲームとかで有効
• メッセージ形式
– 手続き呼び出しをメッセージ化して、必要なパラ
メータをやり取りする
– MMOとかで有効
– 手続き毎にコードを記述するので大規模向き
• ゲーム、プロジェクト規模に合わせて適切な
企画・形式を選ぶ
メッセージ / キーフレーム
• 通信量の少なさ
– キーフレーム > メッセージ
• 処理の簡単さ(高速)
– キーフレーム > メッセージ
• 拡張の容易さ
– メッセージ > キーフレーム
• 複雑なデータのやり取りのし易さ
– メッセージ > キーフレーム
通信ライブラリ
• 作った理由
– 社内共通ライブラリにしたかった
• アプリケーションの移植性向上
– 当時はあまりちゃんとした物がなかった
– 送信・受信時のメモリ管理をキチンとやりた
かった
– 自社製品のそれまでのノウハウを活かした
かった
通信ライブラリ
• 要件
– とりあえずメッセージベースの物
– アプリケーションが変わっても、あまり変わ
らないネットワーク処理部分を分離させた物
– クライアント端末が変わっても大丈夫な様に
• PC
• スマホ
• 家庭用ゲーム機
通信ライブラリ
• 主にこの部分
通信ライブラリ
• 主にこの部分
通信ライブラリ
• 主にこの部分
Windows
WinSock
Linux
Unix Socket
Mac
BSD Socket
ソケットをラップした何か
通信関数
ゲームアプリケーション
通信ライブラリ
• 主にこの部分
Windows
WinSock
Linux
Unix Socket
Mac
BSD Socket
ソケットをラップした何か
通信関数
ゲームアプリケーション
通信ライブラリ
• メッセージ形式を利用したライブラリ
– ソケット部分のコード
• 幾つかのプラットフォームをサポート
• 異なるプラットフォーム間での通信の提供
– RPC(Remote Procedure Call)の提供
• プログラム記述難易度の低減
• 通信プロトコルの隠蔽
– HTTP / ゲーム専用プロトコル
– IDL(Interface Definition Language)の提
供
RPC (Remote Procedure Call)
• プログラムから別のマシンで動いている
サブルーチン(手続き)を呼び出す仕組
み
• 通常はネットワーク越しに、通信対象の
マシンで動作するプログラムの手続きを
呼び出す
RPC (Remote Procedure Call)
Network.function_call(“デザイナー”); void function_call(std::string types)
{
printf(“%s募集中n”
, types);
}こんな感じに書くと
コレが実行される
RPCを実現するために
• RPCを実現する為に必要になりそうな情報
– どの関数を呼ぶ?
– 各関数に渡さないといけない引数リスト
• 呼び出し順序の保障
• 適切な単位(メッセージ毎)の受信
– 引数が途中で途切れたりしない様に
• バイトオーダーの吸収
– リトルエンディアン / ビッグエンディアン
リトルエンディアン
8bit
16bit
• バイトオーダーに影響を受けない数値の
受け渡し方
ビッグエンディアン
データの表現
0A 0B 0C 0D
0A0B 0C0D
0D 0C 0B 0A
0C0D 0A0B
8bit
16bit
整数値 0x0A0B0C0D
データの表現
• バイトオーダーが異なる2台で通信する
と…?
0D 0C 0B 0A 整数値 0x0A0B0C0D
リトルエンディアン 8Bit
リトルエンディアン 16Bit
0D0C 0B0A 整数値 0x0B0A0D0C
メモリのイメージをそのまま移すと
データの表現
• バイトオーダーが異なる2台で通信する
と…?
0D 0C 0B 0A
リトルエンディアン 8Bit
リトルエンディアン 16Bit
0D0C 0B0A
メモリのイメージをそのまま移すと
表現したい数値が変
わってしまう!!
整数値 0x0A0B0C0D
整数値 0x0B0A0D0C
• バイトオーダーに影響を受けない数値の
受け渡し方
データの表現
0D 0C 0B 0A 送りたい数値
リトルエンディアン 8Bit
リトルエンディアン 16Bit
• バイトオーダーに影響を受けない数値の
受け渡し方
データの表現
0A 0B 0C 0D
0D 0C 0B 0A 送りたい数値
ネットワーク経路上
一度整列
リトルエンディアン 8Bit
リトルエンディアン 16Bit
• バイトオーダーに影響を受けない数値の
受け渡し方
データの表現
0A 0B 0C 0D
0D 0C 0B 0A
0C0D 0A0B
送りたい数値
受信側受け取り時
リトルエンディアン 8Bit
リトルエンディアン 16Bit
ネットワーク経路上
一度整列
• 数値をやり取りする際の容量軽減
– 小さい数値のやり取りが多い場合有効
整数値 0x00000A0B
データの表現
0A 0B 00 00
整数値 0x00000A0B
• 数値をやり取りする際の容量軽減
– 小さい数値のやり取りが多い場合有効
データの表現
0A 0B 00 00
0000_0000 0000_0000 0000_1010 0000_1011
整数値 0x00000A0B
• 数値をやり取りする際の容量軽減
– 小さい数値のやり取りが多い場合有効
データの表現
0A 0B 00 00
0000_0000 0000_0000 0000_1010 0000_1011
011000_0101
後続するデータがあるので最上位は1
整数値 0x00000A0B
• 数値をやり取りする際の容量軽減
– 小さい数値のやり取りが多い場合有効
データの表現
0A 0B 00 00
0000_0000 0000_0000 0000_1010 0000_1011
0101100_00101000_0101
後続するデータがあるので最上位は1
整数値 0x00000A0B
• 数値をやり取りする際の容量軽減
– 小さい数値のやり取りが多い場合有効
データの表現
0A 0B 00 00
0000_0000 0000_0000 0000_1010 0000_1011
0100_00001100_0010 00001000_0101
後続するデータが無いので最上位は0
整数値 0x00000A0B
• 数値をやり取りする際の容量軽減
– 小さい数値のやり取りが多い場合有効
データの表現
0A 0B 00 00
0000_0000 0000_0000 0000_1010 0000_1011
0100_00001100_0010 0000_00001000_0101 0000_0---
整数値 0x00000A0B
• 数値をやり取りする際の容量軽減
– 小さい数値のやり取りが多い場合有効
データの表現
0A 0B 00 00
0000_0000 0000_0000 0000_1010 0000_1011
0000_00000100_00001100_0010 0000_00001000_0101
この2Byteは送らなくても良くなる
パケット構造
• RPCを実現する為に必要になる通信内容
– プロトコルバージョン番号
• エンコード、デコード形式
– 制御用カウンタ
• 何回目の通信なのか?
– どの関数を呼ぶ?
• 関数番号(ID)
– 関数に合わせた引数
• 関数毎に引数の数、型、長さが変わる
– 1手続きを実行するのに必要なデータ総容量
• 正しく受信するために必要
圧縮有
圧縮無
パケット構造
Version
(1Byte)
PacketNumber
(4Byte)
PayloadSize
(4Byte)
Compress
(1Byte)
Size
(4Byte)
CompressData
(Size)
MessageID
(4Byte)
Parameters
Compress
(1Byte)
MessageID
(4Byte)
Parameters
Payload
(PayloadSize)
レイヤー構造による処理
• 送信 / 受信で処理する順にレイヤを構築
Compressor
データの圧縮
SplitToContract
メッセージ一つを処理
Packetize
送受信ヘッダー処理
送信
受信
レイヤー構造による処理
• 各レイヤーで行う処理
必要に応じて圧縮
メッセージデータをバイナリストリーム化
ネットワークに流す形式に変換
送信
受信
ネットワークから流れてきたデータの変換
必要に応じて伸長
バイナリストリームのメッセージ化
OS低レベルAPIによる送受信処理
データの流れ
Compressor
データの圧縮
SplitToContract
メッセージ一つを処理
Packetize
送受信ヘッダー処理
送信
受信
MessageID
(4Byte)
Parameters
データの流れ
Compressor
データの圧縮
SplitToContract
メッセージ一つを処理
Packetize
送受信ヘッダー処理
送信
受信
MessageID
(4Byte)
Parameters
Compress
(1Byte)
データの流れ
Version
(1Byte)
PacketNumber
(4Byte)
PayloadSize
(4Byte)
MessageID
(4Byte)
Parameters
Compress
(1Byte)
Compressor
データの圧縮
SplitToContract
メッセージ一つを処理
Packetize
送受信ヘッダー処理
送信
受信
データの流れ
Compressor
データの圧縮
SplitToContract
メッセージ一つを処理
Packetize
送受信ヘッダー処理
送信
受信
Version
(1Byte)
PacketNumber
(4Byte)
PayloadSize
(4Byte)
MessageID
(4Byte)
Parameters
Compress
(1Byte)
データの流れ
Compressor
データの圧縮
SplitToContract
メッセージ一つを処理
Packetize
送受信ヘッダー処理
送信
受信
Version
(1Byte)
PacketNumber
(4Byte)
PayloadSize
(4Byte)
MessageID
(4Byte)
Parameters
Compress
(1Byte)
データの流れ
Compressor
データの圧縮
SplitToContract
メッセージ一つを処理
Packetize
送受信ヘッダー処理
送信
受信
MessageID
(4Byte)
Parameters
Compress
(1Byte)
データの流れ
Compressor
データの圧縮
SplitToContract
メッセージ一つを処理
Packetize
送受信ヘッダー処理
送信
受信
MessageID
(4Byte)
Parameters
データの流れ
Compressor
データの圧縮
SplitToContract
メッセージ一つを処理
Packetize
送受信ヘッダー処理
送信
受信
関数呼び出し
MessageID
(4Byte)
Parameters
実装における問題点
• 通信内容を一つ追加する都度、追加・修
正しないといけないコード量が多い
– 送信関数
– 受信関数
– 受信関数の呼び分け部分(Dispatcher)
• これを簡易化する為に IDL(Interface
Definition Language)を用意する
IDL
• IDL(Interface Definition Language)
– 通信に載るメッセージ(RPC)の内容定義を
抽象化した物
– マルチプラットフォーム向けに変数定義
(型)も抽象化する
• この定義を元に、最低限必要になるコー
ドを自動生成する仕組み
• 定義ファイルとコードジェネレータ
IDL
• 送信側
– 受信側が識別可能な一意なメッセージID
– メッセージ毎のパラメータ格納
• 受信側
– どのメッセージを受信したのか?(適切な手
続きの呼び出し)
– メッセージ毎のパラメータ展開
• 受信後の処理はアプリケーションレベル
の実装
IDL
サーバ用 受信 クライアント用 送信
メッセージ定義
---------------------
WANTED
string Occupation
---------------------
Generator
IDL
メッセージ定義
---------------------
WANTED
string Occupation
---------------------
C++
C
C++
C
サーバ用 受信 クライアント用 送信
Generator
メッセージ定義
---------------------
WANTED
string Occupation
---------------------
Generator
IDL
C++
C
C++
void send_WANTED(std::string Occupation);
C
void send_WANTED(char* Occupation);
サーバ用 受信
void WANTED(char* Occupation);
クライアント用 送信
void recv_WANTED(std::string Occupation);
IDL
• ゲーム内の操作は、こんな感じでメッ
セージ化されています。(MMOの場合)
MessageID Message 概要 パラメータ
1 CHAT_SEND チャットに発言 Msg:発言内容
2 CHAR_MOVE 移動 X:X座標
Y:Y座標
3 CHAT_SHOW 誰かがチャットした Who:誰が?
Msg:何て言った?
4 ATTACK キャラクターが攻撃 Target;誰に攻撃する?
How:どうやって攻撃する?
IDL
• 実際の例
<?xml version=“1.0” encoding=“utf-8” standalone=“yes” ?>
<contract name=“GameMessage”>
<party primary=“Client” secondary=“Server” />
<call name=“CHAT_SEND”>
<parameter name=“Msg” type=“String” />
</call>
<typedefine name=“id” type=“int” />
<receive name=“CHAT_SHOW”>
<parameter name=“Who” type=“id” />
<parameter name=“Msg” type=“String” />
</receive>
</contract>
<?xml version=“1.0” encoding=“utf-8” standalone=“yes” ?>
<contract name=“GameMessage”>
<party primary=“Client” secondary=“Server” />
<call name=“CHAT_SEND”>
<parameter name=“Msg” type=“String” />
</call>
<typedefine name=“id” type=“int” />
<receive name=“CHAT_SHOW”>
<parameter name=“Who” type=“id” />
<parameter name=“Msg” type=“String” />
</receive>
</contract>
IDL
• 実際の例このメッセージ群(通信定義)の名前
<?xml version=“1.0” encoding=“utf-8” standalone=“yes” ?>
<contract name=“GameMessage”>
<party primary=“Client” secondary=“Server” />
<call name=“CHAT_SEND”>
<parameter name=“Msg” type=“String” />
</call>
<typedefine name=“id” type=“int” />
<receive name=“CHAT_SHOW”>
<parameter name=“Who” type=“id” />
<parameter name=“Msg” type=“String” />
</receive>
</contract>
IDL
• 実際の例
以下に記すメッセージ定義の方向指定、
このファイルの場合 “Client to Server”
このメッセージ群(通信定義)の名前
<?xml version=“1.0” encoding=“utf-8” standalone=“yes” ?>
<contract name=“GameMessage”>
<party primary=“Client” secondary=“Server” />
<call name=“CHAT_SEND”>
<parameter name=“Msg” type=“String” />
</call>
<typedefine name=“id” type=“int” />
<receive name=“CHAT_SHOW”>
<parameter name=“Who” type=“id” />
<parameter name=“Msg” type=“String” />
</receive>
</contract>
IDL
• 実際の例
以下に記すメッセージ定義の方向指定、こ
のファイルの場合 “Client to Server”
このメッセージ群(通信定義)の名前
call なので Client -> Server
Server -> Client
• クライアント
typedef id int;
class GameMessageReceiver {
public:
void dispatch(network_data& data) {
function_number = data.pop<int>();
switch (function_number) {
case 789012:
id Who = data.pop<id>();
std::string Msg = data.pop<std::string>();
CHAT_SHOW(Who, Msg);
break;
}
}
virtual void CHAT_SHOW(id Who, std::string Msg) =
0;
};
IDL
class GameMessageSender {
public:
void CHAT_SEND(std::string Msg) {
push_args<int>(123456); // function number
push_args<std::string>(Msg);
}
};
• サーバー
<Client_RPC.h>
typedef id int;
class GameMessageReceiver {
public:
void dispatch(network_data& data) {
function_number = data.pop<int>();
switch (function_number) {
case 123456:
std::string Msg = data.pop<std::string>();
CHAT_SEND(Msg);
}
}
virtual void CHAT_SEND(std::string Msg) = 0;
};
IDL
class GameMessageSender {
public:
void CHAT_SHOW(id Who, std::string Msg) {
push_args<int>(789012); // function number
push_args<id>(Who);
push_args<std::string>(Msg);
}
};
IDL
GameMessageSender::CHAT_SEND(“募集中”);
IDL
GameMessageReceiver::CHAT_SEND(std::string)
{
GameMessageSender::CHAT_SHOW(user_id, string);
}
IDL
GameMessageReceiver::CHAT_SHOW(id Who, std::string)
{
std::string name = get_charname(Who);
Display(“%s %s”, name, string);
}
エンジニア 募集中 エンジニア 募集中
まとめ
• 通信方式(TCP/UDP/常時/非常時)
• 通信内容(メッセージ/キーフレーム)
• 通信ライブラリ
– RPC
• データの表現方法(バイトオーダー)
• メッセージの表現(パケット構造)
• メッセージを処理するレイヤー構造
– IDL
• IDLの例
御清聴ありがとうございました
質疑応答

Mais conteúdo relacionado

Mais procurados

オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫Yuta Imai
 
【Unity道場スペシャル 2017札幌】最適化をする前に覚えておきたい技術 -札幌編-
【Unity道場スペシャル 2017札幌】最適化をする前に覚えておきたい技術 -札幌編-【Unity道場スペシャル 2017札幌】最適化をする前に覚えておきたい技術 -札幌編-
【Unity道場スペシャル 2017札幌】最適化をする前に覚えておきたい技術 -札幌編-Unity Technologies Japan K.K.
 
UniTask入門
UniTask入門UniTask入門
UniTask入門torisoup
 
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法モノビット エンジン
 
Game Creators Conference 2019 Keiji Kikuchi
Game Creators Conference 2019 Keiji KikuchiGame Creators Conference 2019 Keiji Kikuchi
Game Creators Conference 2019 Keiji KikuchiKeiji Kikuchi
 
【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなす
【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなす【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなす
【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなすUnity Technologies Japan K.K.
 
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!Unity Technologies Japan K.K.
 
【Unite Tokyo 2019】「禍つヴァールハイト」Timelineだから可能だった!モバイルに最適化されたリアルタイム3D演出!
【Unite Tokyo 2019】「禍つヴァールハイト」Timelineだから可能だった!モバイルに最適化されたリアルタイム3D演出!【Unite Tokyo 2019】「禍つヴァールハイト」Timelineだから可能だった!モバイルに最適化されたリアルタイム3D演出!
【Unite Tokyo 2019】「禍つヴァールハイト」Timelineだから可能だった!モバイルに最適化されたリアルタイム3D演出!UnityTechnologiesJapan002
 
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]DeNA
 
インタフェース完全に理解した
インタフェース完全に理解したインタフェース完全に理解した
インタフェース完全に理解したtorisoup
 

Mais procurados (20)

オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
 
UE4における大規模背景制作事例 最適化ワークフロー編
UE4における大規模背景制作事例 最適化ワークフロー編UE4における大規模背景制作事例 最適化ワークフロー編
UE4における大規模背景制作事例 最適化ワークフロー編
 
Fortniteを支える技術
Fortniteを支える技術Fortniteを支える技術
Fortniteを支える技術
 
UE4におけるレベル制作事例
UE4におけるレベル制作事例  UE4におけるレベル制作事例
UE4におけるレベル制作事例
 
【Unity道場スペシャル 2017札幌】最適化をする前に覚えておきたい技術 -札幌編-
【Unity道場スペシャル 2017札幌】最適化をする前に覚えておきたい技術 -札幌編-【Unity道場スペシャル 2017札幌】最適化をする前に覚えておきたい技術 -札幌編-
【Unity道場スペシャル 2017札幌】最適化をする前に覚えておきたい技術 -札幌編-
 
UniTask入門
UniTask入門UniTask入門
UniTask入門
 
猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
猫でも分かるUE4を使った VRコンテンツ開発 超入門編 2021
 
ロボット好き集まれ!こいつ、動くぞ。星と翼のパラドクス開発事例
ロボット好き集まれ!こいつ、動くぞ。星と翼のパラドクス開発事例ロボット好き集まれ!こいつ、動くぞ。星と翼のパラドクス開発事例
ロボット好き集まれ!こいつ、動くぞ。星と翼のパラドクス開発事例
 
UE4のローカライズ機能紹介 (UE4 Localization Deep Dive)
UE4のローカライズ機能紹介 (UE4 Localization Deep Dive)UE4のローカライズ機能紹介 (UE4 Localization Deep Dive)
UE4のローカライズ機能紹介 (UE4 Localization Deep Dive)
 
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
 
Game Creators Conference 2019 Keiji Kikuchi
Game Creators Conference 2019 Keiji KikuchiGame Creators Conference 2019 Keiji Kikuchi
Game Creators Conference 2019 Keiji Kikuchi
 
Online MultiPlay Game Design
Online MultiPlay Game DesignOnline MultiPlay Game Design
Online MultiPlay Game Design
 
【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなす
【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなす【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなす
【Unity道場スペシャル 2017博多】TextMesh Pro を使いこなす
 
UE4 MultiPlayer Online Deep Dive: 実践編1 (Byking様ご講演) #UE4DD
UE4 MultiPlayer Online Deep Dive: 実践編1 (Byking様ご講演)  #UE4DDUE4 MultiPlayer Online Deep Dive: 実践編1 (Byking様ご講演)  #UE4DD
UE4 MultiPlayer Online Deep Dive: 実践編1 (Byking様ご講演) #UE4DD
 
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
【CEDEC2017】Unityを使ったNintendo Switch™向けのタイトル開発・移植テクニック!!
 
「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像
「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像
「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像
 
【Unite Tokyo 2019】「禍つヴァールハイト」Timelineだから可能だった!モバイルに最適化されたリアルタイム3D演出!
【Unite Tokyo 2019】「禍つヴァールハイト」Timelineだから可能だった!モバイルに最適化されたリアルタイム3D演出!【Unite Tokyo 2019】「禍つヴァールハイト」Timelineだから可能だった!モバイルに最適化されたリアルタイム3D演出!
【Unite Tokyo 2019】「禍つヴァールハイト」Timelineだから可能だった!モバイルに最適化されたリアルタイム3D演出!
 
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
 
インタフェース完全に理解した
インタフェース完全に理解したインタフェース完全に理解した
インタフェース完全に理解した
 
猫でも分かる Control Rig UE4.25 版
猫でも分かる Control Rig UE4.25 版猫でも分かる Control Rig UE4.25 版
猫でも分かる Control Rig UE4.25 版
 

Destaque

サーバーのおしごと
サーバーのおしごとサーバーのおしごと
サーバーのおしごとYugo Shimizu
 
分割と整合性と戦う
分割と整合性と戦う分割と整合性と戦う
分割と整合性と戦うYugo Shimizu
 
負荷がたかいいんだから~♪(仮)
負荷がたかいいんだから~♪(仮)負荷がたかいいんだから~♪(仮)
負荷がたかいいんだから~♪(仮)Yohei Hamada
 
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例Satoshi Yamafuji
 
Fluentd and Embulk Game Server 4
Fluentd and Embulk Game Server 4Fluentd and Embulk Game Server 4
Fluentd and Embulk Game Server 4N Masahiro
 
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】
Halo2 におけるHFSM(階層型有限状態マシン)  【ビヘイビアツリー解説】Halo2 におけるHFSM(階層型有限状態マシン)  【ビヘイビアツリー解説】
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】Youichiro Miyake
 
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜 リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜 Yugo Shimizu
 
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~johgus johgus
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方光晶 上原
 
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事Manabu Koga
 
ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方Daisaku Mochizuki
 

Destaque (12)

サーバーのおしごと
サーバーのおしごとサーバーのおしごと
サーバーのおしごと
 
分割と整合性と戦う
分割と整合性と戦う分割と整合性と戦う
分割と整合性と戦う
 
負荷がたかいいんだから~♪(仮)
負荷がたかいいんだから~♪(仮)負荷がたかいいんだから~♪(仮)
負荷がたかいいんだから~♪(仮)
 
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
MMOのサーバについて 剣と魔法のログレス ~いにしえの女神~ での実装例
 
Fluentd and Embulk Game Server 4
Fluentd and Embulk Game Server 4Fluentd and Embulk Game Server 4
Fluentd and Embulk Game Server 4
 
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】
Halo2 におけるHFSM(階層型有限状態マシン)  【ビヘイビアツリー解説】Halo2 におけるHFSM(階層型有限状態マシン)  【ビヘイビアツリー解説】
Halo2 におけるHFSM(階層型有限状態マシン) 【ビヘイビアツリー解説】
 
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜 リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
 
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
負荷対策しておもったことまとめ~JMeterでSocket.IOもいけるでよ~
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方
 
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
 
ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方
 

Semelhante a Imprementation of realtime_networkgame

Armored core vのオンラインサービスにおけるクラウドサーバー活用事例
Armored core vのオンラインサービスにおけるクラウドサーバー活用事例Armored core vのオンラインサービスにおけるクラウドサーバー活用事例
Armored core vのオンラインサービスにおけるクラウドサーバー活用事例erakazu
 
20120519 #qpstudy インターフェース入門
20120519 #qpstudy インターフェース入門20120519 #qpstudy インターフェース入門
20120519 #qpstudy インターフェース入門Hiyou Shinnonome
 
DXライブラリでMMO作ったよ!
DXライブラリでMMO作ったよ!DXライブラリでMMO作ったよ!
DXライブラリでMMO作ったよ!h2so5
 
Agu itr 20100901_communication
Agu itr 20100901_communicationAgu itr 20100901_communication
Agu itr 20100901_communicationKiminari Homma
 
コンピューターネットワーク入門
コンピューターネットワーク入門コンピューターネットワーク入門
コンピューターネットワーク入門Yusuke Miyazaki
 
Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Tadahiro Ishisaka
 
第11回ACRiウェビナー_東工大/坂本先生ご講演資料
第11回ACRiウェビナー_東工大/坂本先生ご講演資料第11回ACRiウェビナー_東工大/坂本先生ご講演資料
第11回ACRiウェビナー_東工大/坂本先生ご講演資料直久 住川
 
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkIoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkTakanori Suzuki
 
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
20120407 ASP.NET+C#で開発する大規模ソーシャルゲームhideyuki ikeda
 
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタックONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタックKentaro Ebisawa
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションMasahiko Sawada
 
Qlik Gold ClientテクニカルDeep-Diveセッション
Qlik Gold ClientテクニカルDeep-DiveセッションQlik Gold ClientテクニカルDeep-Diveセッション
Qlik Gold ClientテクニカルDeep-DiveセッションQlikPresalesJapan
 
Database Encryption and Key Management for PostgreSQL - Principles and Consid...
Database Encryption and Key Management for PostgreSQL - Principles and Consid...Database Encryption and Key Management for PostgreSQL - Principles and Consid...
Database Encryption and Key Management for PostgreSQL - Principles and Consid...Masahiko Sawada
 
Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Hokkaido.cap #osc11do Wiresharkを使いこなそう!Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Hokkaido.cap #osc11do Wiresharkを使いこなそう!Panda Yamaki
 
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
 
プログラムの大海に溺れないために
プログラムの大海に溺れないためにプログラムの大海に溺れないために
プログラムの大海に溺れないためにZenji Kanzaki
 
Lチカで終わらせないArduino シリアル通信 Part2(移行済)
Lチカで終わらせないArduino シリアル通信 Part2(移行済)Lチカで終わらせないArduino シリアル通信 Part2(移行済)
Lチカで終わらせないArduino シリアル通信 Part2(移行済)tomitomi3 tomitomi3
 

Semelhante a Imprementation of realtime_networkgame (20)

Armored core vのオンラインサービスにおけるクラウドサーバー活用事例
Armored core vのオンラインサービスにおけるクラウドサーバー活用事例Armored core vのオンラインサービスにおけるクラウドサーバー活用事例
Armored core vのオンラインサービスにおけるクラウドサーバー活用事例
 
Mmo game networking_1
Mmo game networking_1Mmo game networking_1
Mmo game networking_1
 
20120519 #qpstudy インターフェース入門
20120519 #qpstudy インターフェース入門20120519 #qpstudy インターフェース入門
20120519 #qpstudy インターフェース入門
 
DXライブラリでMMO作ったよ!
DXライブラリでMMO作ったよ!DXライブラリでMMO作ったよ!
DXライブラリでMMO作ったよ!
 
Agu itr 20100901_communication
Agu itr 20100901_communicationAgu itr 20100901_communication
Agu itr 20100901_communication
 
コンピューターネットワーク入門
コンピューターネットワーク入門コンピューターネットワーク入門
コンピューターネットワーク入門
 
Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Ossで作成するチーム開発環境
Ossで作成するチーム開発環境
 
第11回ACRiウェビナー_東工大/坂本先生ご講演資料
第11回ACRiウェビナー_東工大/坂本先生ご講演資料第11回ACRiウェビナー_東工大/坂本先生ご講演資料
第11回ACRiウェビナー_東工大/坂本先生ご講演資料
 
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkIoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache Flink
 
Amazon elastictranscoderのご紹介
Amazon elastictranscoderのご紹介Amazon elastictranscoderのご紹介
Amazon elastictranscoderのご紹介
 
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
 
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタックONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
 
IIJmio meeting 16 「通信速度」に影響を与える要素とは
IIJmio meeting 16 「通信速度」に影響を与える要素とはIIJmio meeting 16 「通信速度」に影響を与える要素とは
IIJmio meeting 16 「通信速度」に影響を与える要素とは
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
 
Qlik Gold ClientテクニカルDeep-Diveセッション
Qlik Gold ClientテクニカルDeep-DiveセッションQlik Gold ClientテクニカルDeep-Diveセッション
Qlik Gold ClientテクニカルDeep-Diveセッション
 
Database Encryption and Key Management for PostgreSQL - Principles and Consid...
Database Encryption and Key Management for PostgreSQL - Principles and Consid...Database Encryption and Key Management for PostgreSQL - Principles and Consid...
Database Encryption and Key Management for PostgreSQL - Principles and Consid...
 
Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Hokkaido.cap #osc11do Wiresharkを使いこなそう!Hokkaido.cap #osc11do Wiresharkを使いこなそう!
Hokkaido.cap #osc11do Wiresharkを使いこなそう!
 
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
 
プログラムの大海に溺れないために
プログラムの大海に溺れないためにプログラムの大海に溺れないために
プログラムの大海に溺れないために
 
Lチカで終わらせないArduino シリアル通信 Part2(移行済)
Lチカで終わらせないArduino シリアル通信 Part2(移行済)Lチカで終わらせないArduino シリアル通信 Part2(移行済)
Lチカで終わらせないArduino シリアル通信 Part2(移行済)
 

Imprementation of realtime_networkgame