SlideShare una empresa de Scribd logo
1 de 47
Descargar para leer sin conexión
オンラインゲームつくった話
@toRisouP
誰?
• とりすーぷ ( @toRisouP )
– Webエンジニア(プログラマ)
– Unity、C#、Scala、Ruby、Python、PHPとかその辺触ってる
• 最近はScalaが一番お気に入り
• いろいろやってる
– 同人ゲーム制作
– VR開発
– Qiita書く
– 技術書執筆
この秋、
ゲームをリリースしました
ハクレイフリーマーケット
• Windows向けの東方2次創作ゲーム
• 最大6人までネットワーク対戦可能なパーティアクションゲーム
• ロビー機能あり、CPUあり
ウリ
• 物理演算をメインに使ったパーティゲーム
– とりあえず物理演算をガバらせておけば面白くなるという発想
• ガバガバ物理演算は偉大
– 大量の物理演算オブジェクトを同期しながら通信対戦できる
• 今思うと狂気の沙汰
使ってるもの
• 使っているフレームワークとか
– Unity 2017.2
– Photon Cloud
– NCMB
– ADX2 LE
– Effekseer
• 使ってるライブラリ
– UniRx
– Zenject
– PhotonRx
本題
オンラインゲームつくるの
すごくツライ
PhotonCloudの仕様
• クライアントで状態を管理する
– サーバサイドに状態はもたせられない
– サーバサイドにロジックはおけない
– 誰か1人がマスタークライアントになる
– クライアントサイドで全ての問題を解決しないといけない!
発生した問題
• 動きがカクカクする
• 通信の待ち時間でテンポが悪くなる
• 帯域、メッセージ数がオーバーする
発生した問題
• 動きがカクカクする
• 通信の待ち時間でテンポが悪くなる
• 帯域、メッセージ数がオーバーする
オブジェクトの管理ルール
• オブジェクトには親の概念がある
– 同期オブジェクトにはPhotonViewコンポーネントがついている
– PhotonView.IsMine = true だと自分が管理(送信モード)
– PhotonView. IsMine = false だと通信相手が管理(受信モード)
親
(IsMine=true)
子
(IsMine=false)
子
(IsMine=false)
子
(IsMine=false)
図解
• 自分の世界
– IsMine = true
• 相手の世界
– IsMine = false
同期されている2つのオブジェクトがある
図解
• 自分の世界 • 相手の世界
自分のオブジェクトが移動すると…
アニメーション
図解
• 自分の世界 • 相手の世界
移動後の座標を送信して
相手側の座標を書き換える
図解
• 自分の世界 • 相手の世界
相手の世界の座標を上書きして同期
図解
• 自分の世界 • 相手の世界
自分の世界ではキレイにアニメーションして移動したが、
相手の世界には結果しか送ってないので突然ワープしたように見える
→ 動きがカクカクする
カクカクする問題
• 同期メッセージの送信頻度が低いのが原因
– 根本対策は同期頻度を上げるしかないが、
帯域やメッセージ数の制限で上げるにも限界がある
→別アプローチで解決する必要がある
解決策いろいろ
• 同期頻度を単純に増やす方法
– これができたら苦労しない
• キー入力を送ってしまう方法
– 入力から一意に結果が決まるゲームシステムならかなり有効
• がんばってごまかす方法
– 補間・補外・エフェクト・アニメーションでごまかす
• そもそも同期しない方法
– ローカルで演算可能ならそっちを優先して使う
解決策いろいろ
• 同期頻度を単純に増やす方法
– これができたら苦労しない
• キー入力を送ってしまう方法
– 入力から一意に結果が決まるゲームシステムならかなり有効
• がんばってごまかす方法
– 補間・補外・エフェクト・アニメーションでごまかす
• そもそも同期しない方法
– ローカルで演算可能ならそっちを優先して使う
採用した方法
(というかこれしかできない)
がんばってごまかす
• 補間処理でなんとかんする
– Vector3.Lerp と Quaternion.Lerp を使う
• 補間の割合を調整して違和感が少ないパラメータを見つける
– 補間を強くする → 滑らかだが動きが鈍くなる
– 補間を弱くする → 機敏だがカクカクが目立つ
そもそも同期しない
相手の演算結果を待っているからラグが生じる
↓
自分が演算して結果を送る側になれば
ラグは起きない
プレイヤの動向を観察してわかったこと
• 「プレイヤは自キャラの周辺しかみてない」
– 正確には「自分の行動に対する周辺のリアクション」しか見てない
• 自分が触ったオブジェクト
• 自分が持ち上げたオブジェクト
• 自分が投げたオブジェクトの挙動
– 少なくともここさえ滑らかに動いていれば、
他がカクカクしててもあまり気にならない
やったこと
• 自キャラが触れたオブジェクトの親権を奪う
– 座標を受け取る側から送る側にしてしまう
– 自キャラが触れた瞬間にIsMineをtrueに書き換えてしまう
• (実際はIsMineに似た別のフラグ用意してそっちを書き換えているけどね)
効果
• かなり効いた
– 少なくとも自分の周辺だけはラグがなく動いてくれる
• 実装は複雑化してしまった
– メンテナンス困難な実装になっている
– 親権のスイッチングコストも結構かかる
発生した問題
• 動きがカクカクする
• 通信の待ち時間でテンポが悪くなる
• 帯域、メッセージ数がオーバーする
テンポが悪くなる
• 入力に対してプレイヤが機敏に反応してくれない
– 原因は行動時に「通信」が発生するから
• 特にこのゲームだと「アイテムを拾う」時に発生する
– アイテムを拾えるかどうか?の判定に通信が発生するため
解決策
• 通信時間をアニメーションでごまかす
– アイテムを拾う時に、
「構える」→「持ち上げる」の2段階のアニメーションを再生する
– 構えモーションの間に通信を終わらせてしまう
アニメーション
構えモーション 構え→持ち上げ 構え→持ち上げ
(構えが長めのキャラ)
構えモーション再生中に裏で通信しちゃうことで、
通信によるテンポの悪化をごまかす
発生した問題
• 動きがカクカクする
• 通信の待ち時間でテンポが悪くなる
• 帯域、メッセージ数がオーバーする
帯域とメッセージ数
• 帯域
– 秒間に通信するデータ量
– 小さければ小さいほうが当然良い
– PhotonCloud的には通信したデータの総量の方が大事
• メッセージ数
– 座標等の同期、RPCの実行命令などの送受信回数
制約
• 通信量
– 1ユーザあたり3GB/月まで
– オーバーすると追加料金
• メッセージ数
– 1部屋につき500メッセージ/秒
– オーバーしても今のところはペナルティなし
メッセージ数の制約がヤバイ
• 部屋に参加している人数倍して計算される
– 6人部屋で1メッセージ送信すると、
送信1+受信5=6メッセージ消費してしまう
– 6人部屋だと約83メッセージ/秒しか送れない
• 60FPSだと1フレームあたり1~2メッセージしか送れない
このゲーム同期対象が多すぎる
• フィールド上のアイテムを同期すると一瞬で上限超える
– こんな仕様のゲームでネットワーク対戦とかバカじゃないの…
対策をうつ必要がある
対策前の状態
• データ通信量
– 1試合あたりの総量6MB/人
• メッセージ数
– 2000メッセージ/s/room
– 規定値の4倍もいってた
取った対策一覧
• 次の位置が確実に予測可能なものは同期しない
• 動いていないオブジェクトは同期しない
• オンライン対戦時にはゲームのフレームレートを30に落とす
• オブジェクトをシャーディングしてグループ単位でまとめて同期する
取った対策一覧
• 次の位置が確実に予測可能なものは同期しない
• 動いていないオブジェクトは同期しない
• オンライン対戦時にはゲームのフレームレートを30に落とす
• オブジェクトをシャーディングしてグループ単位でまとめて同期する
フレームレートを落とす
• オンライン時のみ30FPSに落とす
– メッセージ送信回数を60FPS時の半分以下にできる
– 補間処理でごまかしやすくなる
– 低スペックPCと挙動を揃えることが出来る
– 割とメリットが大きかったので採用
オブジェクトのグループ化
• オブジェクトの座標同期をグループ単位で行う
– ようするにシャーディングして管理する
グループ単位で分割するメリット
• バラバラに送るよりメッセージ数を削減できる
– 1メッセージ内に複数の座標データをまとめて送信できる
• 挙動のチューニングができる
– 「グループにわける数」 と 「何フレームごとに送信するか」の
組み合わせでカクカク度合いとメッセージ数のバランスを調整できる
• 一斉に同期する時の違和感が消せる
– 全オブジェクトが同じタイミングで動くと違和感が出る
– バラバラに動いている感を出してごまかせる
後はログを見ながら調整
• 違和感と帯域・メッセージ数のバランスを見て模索
チューニング結果
• 帯域
– 対策前 1試合あたり6MB → 1試合あたり2MB
60FPS,グループ化なし,毎フレーム送信 30FPS,3グループ分割,2フレームごとに送信
チューニング結果
• メッセージ数
– 1000~1900/s → 450~600/s
なんとか規定値には収まった
• まだところどころオーバーするけど…
– 怒られたら直す
500メッセージ
まとめ
まとめ
• オンラインゲーム制作はとにかく手間がかかる
– 工数がオフラインゲーム開発の5~10倍になる(体感)
– 技術的に実装困難なため諦めた仕様もいくつかある
– 不具合発生時の原因調査にエスパー能力が必要
• まじめに作るとつらいところはできるだけ誤魔化す
– プレイヤが不快に感じさえしなければよい
– ガバ物理はむしろラグった方が面白いから助かった

Más contenido relacionado

La actualidad más candente

出張ヒストリア ブループリントを書くにあたって大切なこと
出張ヒストリア ブループリントを書くにあたって大切なこと出張ヒストリア ブループリントを書くにあたって大切なこと
出張ヒストリア ブループリントを書くにあたって大切なことhistoria_Inc
 
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現Yoshifumi Kawai
 
【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~
【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~
【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~UnityTechnologiesJapan002
 
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライドCEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライドToshiyasu Miyabe
 
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
 
IncrediBuildでビルド時間を最大90%短縮! - インクレディビルドジャパン株式会社 - GTMF 2018 OSAKA
IncrediBuildでビルド時間を最大90%短縮! - インクレディビルドジャパン株式会社 - GTMF 2018 OSAKAIncrediBuildでビルド時間を最大90%短縮! - インクレディビルドジャパン株式会社 - GTMF 2018 OSAKA
IncrediBuildでビルド時間を最大90%短縮! - インクレディビルドジャパン株式会社 - GTMF 2018 OSAKAGame Tools & Middleware Forum
 
OpenVRやOpenXRの基本的なことを調べてみた
OpenVRやOpenXRの基本的なことを調べてみたOpenVRやOpenXRの基本的なことを調べてみた
OpenVRやOpenXRの基本的なことを調べてみたTakahiro Miyaura
 
ゲームの仕様書を書こうまとめ
ゲームの仕様書を書こうまとめゲームの仕様書を書こうまとめ
ゲームの仕様書を書こうまとめSugimoto Chizuru
 
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについてSEGADevTech
 
見よう見まねでやってみる2D流体シミュレーション
見よう見まねでやってみる2D流体シミュレーション見よう見まねでやってみる2D流体シミュレーション
見よう見まねでやってみる2D流体シミュレーションKLab Inc. / Tech
 
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例sairoutine
 

La actualidad más candente (20)

出張ヒストリア ブループリントを書くにあたって大切なこと
出張ヒストリア ブループリントを書くにあたって大切なこと出張ヒストリア ブループリントを書くにあたって大切なこと
出張ヒストリア ブループリントを書くにあたって大切なこと
 
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
 
猫でも分かる UE4のAnimation Blueprintの運用について
猫でも分かる UE4のAnimation Blueprintの運用について猫でも分かる UE4のAnimation Blueprintの運用について
猫でも分かる UE4のAnimation Blueprintの運用について
 
【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~
【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~
【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~
 
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライドCEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
CEDEC2015「加算合成コストが0になる!?すぐに使えるP-MAPブレンドテクニック」発表スライド
 
Fortniteを支える技術
Fortniteを支える技術Fortniteを支える技術
Fortniteを支える技術
 
猫でも分かるUE4.22から入ったSubsystem
猫でも分かるUE4.22から入ったSubsystem 猫でも分かるUE4.22から入ったSubsystem
猫でも分かるUE4.22から入ったSubsystem
 
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]
 
60fpsアクションを実現する秘訣を伝授 基礎編
60fpsアクションを実現する秘訣を伝授 基礎編60fpsアクションを実現する秘訣を伝授 基礎編
60fpsアクションを実現する秘訣を伝授 基礎編
 
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
 
IncrediBuildでビルド時間を最大90%短縮! - インクレディビルドジャパン株式会社 - GTMF 2018 OSAKA
IncrediBuildでビルド時間を最大90%短縮! - インクレディビルドジャパン株式会社 - GTMF 2018 OSAKAIncrediBuildでビルド時間を最大90%短縮! - インクレディビルドジャパン株式会社 - GTMF 2018 OSAKA
IncrediBuildでビルド時間を最大90%短縮! - インクレディビルドジャパン株式会社 - GTMF 2018 OSAKA
 
Unreal engine4を使ったVRコンテンツ製作で 120%役に立つtips集+GDC情報をご紹介
Unreal engine4を使ったVRコンテンツ製作で 120%役に立つtips集+GDC情報をご紹介Unreal engine4を使ったVRコンテンツ製作で 120%役に立つtips集+GDC情報をご紹介
Unreal engine4を使ったVRコンテンツ製作で 120%役に立つtips集+GDC情報をご紹介
 
UE4とUnrealC++について
UE4とUnrealC++についてUE4とUnrealC++について
UE4とUnrealC++について
 
OpenVRやOpenXRの基本的なことを調べてみた
OpenVRやOpenXRの基本的なことを調べてみたOpenVRやOpenXRの基本的なことを調べてみた
OpenVRやOpenXRの基本的なことを調べてみた
 
GPU最適化入門
GPU最適化入門GPU最適化入門
GPU最適化入門
 
ゲームの仕様書を書こうまとめ
ゲームの仕様書を書こうまとめゲームの仕様書を書こうまとめ
ゲームの仕様書を書こうまとめ
 
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
 
「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像
「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像
「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像
 
見よう見まねでやってみる2D流体シミュレーション
見よう見まねでやってみる2D流体シミュレーション見よう見まねでやってみる2D流体シミュレーション
見よう見まねでやってみる2D流体シミュレーション
 
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
 

Similar a Unityでオンラインゲーム作った話

【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作るtorisoup
 
UnrealEngine の VR 事情
UnrealEngine の VR 事情UnrealEngine の VR 事情
UnrealEngine の VR 事情Masaaki Suga
 
ソーシャルゲームにレコメンドエンジンを導入した話
ソーシャルゲームにレコメンドエンジンを導入した話ソーシャルゲームにレコメンドエンジンを導入した話
ソーシャルゲームにレコメンドエンジンを導入した話Tokoroten Nakayama
 
Railsによるワイルドなソフトウェア開発
Railsによるワイルドなソフトウェア開発Railsによるワイルドなソフトウェア開発
Railsによるワイルドなソフトウェア開発Drecom Co., Ltd.
 
Shiva 〜Nextremerをscale upする機械学習環境〜
Shiva 〜Nextremerをscale upする機械学習環境〜Shiva 〜Nextremerをscale upする機械学習環境〜
Shiva 〜Nextremerをscale upする機械学習環境〜Kazuki Morozumi
 
財布にやさしいRを使ったデータマイニング
財布にやさしいRを使ったデータマイニング財布にやさしいRを使ったデータマイニング
財布にやさしいRを使ったデータマイニングRyoji Yanashima
 
ROS User Group Meeting #28 マルチ深層学習とROS
ROS User Group Meeting #28 マルチ深層学習とROSROS User Group Meeting #28 マルチ深層学習とROS
ROS User Group Meeting #28 マルチ深層学習とROSHiroki Nakahara
 
opensource and accessibility (Dec2000) Part 2
opensource and accessibility (Dec2000) Part 2opensource and accessibility (Dec2000) Part 2
opensource and accessibility (Dec2000) Part 2Takuya Nishimoto
 
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 OSAKA
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 OSAKAPlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 OSAKA
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 OSAKAGame Tools & Middleware Forum
 
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 TOKYO
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 TOKYOPlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 TOKYO
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 TOKYOGame Tools & Middleware Forum
 
rogyゼミ第2回 ニックさん
rogyゼミ第2回 ニックさんrogyゼミ第2回 ニックさん
rogyゼミ第2回 ニックさんrogy01
 
XNAとはなにか?XNAうれしいところ、うれしくないところ
XNAとはなにか?XNAうれしいところ、うれしくないところXNAとはなにか?XNAうれしいところ、うれしくないところ
XNAとはなにか?XNAうれしいところ、うれしくないところIGDA Japan
 
Io t,ai時代のソフトウェア
Io t,ai時代のソフトウェアIo t,ai時代のソフトウェア
Io t,ai時代のソフトウェアToshiaki Kurokawa
 
くみこみからひとこと
くみこみからひとことくみこみからひとこと
くみこみからひとことkishima7
 
DSPGraphを試してみた話
DSPGraphを試してみた話DSPGraphを試してみた話
DSPGraphを試してみた話Toru Nayuki
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版Katsuhiro Morishita
 
2017冬の開発合宿vrオンラインゲーム
2017冬の開発合宿vrオンラインゲーム2017冬の開発合宿vrオンラインゲーム
2017冬の開発合宿vrオンラインゲームSyo Igarashi
 

Similar a Unityでオンラインゲーム作った話 (20)

【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
 
UnrealEngine の VR 事情
UnrealEngine の VR 事情UnrealEngine の VR 事情
UnrealEngine の VR 事情
 
ソーシャルゲームにレコメンドエンジンを導入した話
ソーシャルゲームにレコメンドエンジンを導入した話ソーシャルゲームにレコメンドエンジンを導入した話
ソーシャルゲームにレコメンドエンジンを導入した話
 
Railsによるワイルドなソフトウェア開発
Railsによるワイルドなソフトウェア開発Railsによるワイルドなソフトウェア開発
Railsによるワイルドなソフトウェア開発
 
Shiva 〜Nextremerをscale upする機械学習環境〜
Shiva 〜Nextremerをscale upする機械学習環境〜Shiva 〜Nextremerをscale upする機械学習環境〜
Shiva 〜Nextremerをscale upする機械学習環境〜
 
財布にやさしいRを使ったデータマイニング
財布にやさしいRを使ったデータマイニング財布にやさしいRを使ったデータマイニング
財布にやさしいRを使ったデータマイニング
 
ROS User Group Meeting #28 マルチ深層学習とROS
ROS User Group Meeting #28 マルチ深層学習とROSROS User Group Meeting #28 マルチ深層学習とROS
ROS User Group Meeting #28 マルチ深層学習とROS
 
opensource and accessibility (Dec2000) Part 2
opensource and accessibility (Dec2000) Part 2opensource and accessibility (Dec2000) Part 2
opensource and accessibility (Dec2000) Part 2
 
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 OSAKA
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 OSAKAPlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 OSAKA
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 OSAKA
 
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 TOKYO
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 TOKYOPlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 TOKYO
PlayCanvas:2D機能とライブラリ組み込みのいろは - PlayCanvas運営事務局 - GTMF 2018 TOKYO
 
Nishimoto 170603-mruby
Nishimoto 170603-mrubyNishimoto 170603-mruby
Nishimoto 170603-mruby
 
rogyゼミ第2回 ニックさん
rogyゼミ第2回 ニックさんrogyゼミ第2回 ニックさん
rogyゼミ第2回 ニックさん
 
PyCharm入門
PyCharm入門PyCharm入門
PyCharm入門
 
XNAとはなにか?XNAうれしいところ、うれしくないところ
XNAとはなにか?XNAうれしいところ、うれしくないところXNAとはなにか?XNAうれしいところ、うれしくないところ
XNAとはなにか?XNAうれしいところ、うれしくないところ
 
Io t,ai時代のソフトウェア
Io t,ai時代のソフトウェアIo t,ai時代のソフトウェア
Io t,ai時代のソフトウェア
 
私とOSSの25年
私とOSSの25年私とOSSの25年
私とOSSの25年
 
くみこみからひとこと
くみこみからひとことくみこみからひとこと
くみこみからひとこと
 
DSPGraphを試してみた話
DSPGraphを試してみた話DSPGraphを試してみた話
DSPGraphを試してみた話
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
 
2017冬の開発合宿vrオンラインゲーム
2017冬の開発合宿vrオンラインゲーム2017冬の開発合宿vrオンラインゲーム
2017冬の開発合宿vrオンラインゲーム
 

Más de torisoup

Doozy UI 使おうぜ! #unity_lt
Doozy UI 使おうぜ! #unity_ltDoozy UI 使おうぜ! #unity_lt
Doozy UI 使おうぜ! #unity_lttorisoup
 
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~torisoup
 
UniTask入門
UniTask入門UniTask入門
UniTask入門torisoup
 
MagicOnion入門
MagicOnion入門MagicOnion入門
MagicOnion入門torisoup
 
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunityUnityで作ったゲームをDLカードで配布してみた話 #roppongiunity
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunitytorisoup
 
ARでVRアバターを表示するシステムを構築しよう
ARでVRアバターを表示するシステムを構築しようARでVRアバターを表示するシステムを構築しよう
ARでVRアバターを表示するシステムを構築しようtorisoup
 
インタフェース完全に理解した
インタフェース完全に理解したインタフェース完全に理解した
インタフェース完全に理解したtorisoup
 
ObserverパターンからはじめるUniRx
ObserverパターンからはじめるUniRx ObserverパターンからはじめるUniRx
ObserverパターンからはじめるUniRx torisoup
 
Unityでオニオンアーキテクチャ
UnityでオニオンアーキテクチャUnityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャtorisoup
 
Photon Cloud ことはじめ
Photon Cloud ことはじめPhoton Cloud ことはじめ
Photon Cloud ことはじめtorisoup
 
アバター生放送支援アプリ「アバれぽ」
アバター生放送支援アプリ「アバれぽ」アバター生放送支援アプリ「アバれぽ」
アバター生放送支援アプリ「アバれぽ」torisoup
 
UniRx完全に理解した
UniRx完全に理解したUniRx完全に理解した
UniRx完全に理解したtorisoup
 
UnityとNCMBでユーザ管理を実装してみた話
UnityとNCMBでユーザ管理を実装してみた話UnityとNCMBでユーザ管理を実装してみた話
UnityとNCMBでユーザ管理を実装してみた話torisoup
 
Task vs Observable
Task vs ObservableTask vs Observable
Task vs Observabletorisoup
 
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介torisoup
 
UniRxでPUNを使いやすくする
UniRxでPUNを使いやすくするUniRxでPUNを使いやすくする
UniRxでPUNを使いやすくするtorisoup
 
はじめてのUniRx
はじめてのUniRxはじめてのUniRx
はじめてのUniRxtorisoup
 
UniRxでMV(R)Pパターン をやってみた
UniRxでMV(R)PパターンをやってみたUniRxでMV(R)Pパターンをやってみた
UniRxでMV(R)Pパターン をやってみたtorisoup
 
未来のプログラミング技術をUnityで -UniRx-
未来のプログラミング技術をUnityで -UniRx-未来のプログラミング技術をUnityで -UniRx-
未来のプログラミング技術をUnityで -UniRx-torisoup
 
みくみくまうすについて&Unity で使えるコーディングノウハウ
みくみくまうすについて&Unity で使えるコーディングノウハウみくみくまうすについて&Unity で使えるコーディングノウハウ
みくみくまうすについて&Unity で使えるコーディングノウハウtorisoup
 

Más de torisoup (20)

Doozy UI 使おうぜ! #unity_lt
Doozy UI 使おうぜ! #unity_ltDoozy UI 使おうぜ! #unity_lt
Doozy UI 使おうぜ! #unity_lt
 
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
 
UniTask入門
UniTask入門UniTask入門
UniTask入門
 
MagicOnion入門
MagicOnion入門MagicOnion入門
MagicOnion入門
 
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunityUnityで作ったゲームをDLカードで配布してみた話 #roppongiunity
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
 
ARでVRアバターを表示するシステムを構築しよう
ARでVRアバターを表示するシステムを構築しようARでVRアバターを表示するシステムを構築しよう
ARでVRアバターを表示するシステムを構築しよう
 
インタフェース完全に理解した
インタフェース完全に理解したインタフェース完全に理解した
インタフェース完全に理解した
 
ObserverパターンからはじめるUniRx
ObserverパターンからはじめるUniRx ObserverパターンからはじめるUniRx
ObserverパターンからはじめるUniRx
 
Unityでオニオンアーキテクチャ
UnityでオニオンアーキテクチャUnityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャ
 
Photon Cloud ことはじめ
Photon Cloud ことはじめPhoton Cloud ことはじめ
Photon Cloud ことはじめ
 
アバター生放送支援アプリ「アバれぽ」
アバター生放送支援アプリ「アバれぽ」アバター生放送支援アプリ「アバれぽ」
アバター生放送支援アプリ「アバれぽ」
 
UniRx完全に理解した
UniRx完全に理解したUniRx完全に理解した
UniRx完全に理解した
 
UnityとNCMBでユーザ管理を実装してみた話
UnityとNCMBでユーザ管理を実装してみた話UnityとNCMBでユーザ管理を実装してみた話
UnityとNCMBでユーザ管理を実装してみた話
 
Task vs Observable
Task vs ObservableTask vs Observable
Task vs Observable
 
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
 
UniRxでPUNを使いやすくする
UniRxでPUNを使いやすくするUniRxでPUNを使いやすくする
UniRxでPUNを使いやすくする
 
はじめてのUniRx
はじめてのUniRxはじめてのUniRx
はじめてのUniRx
 
UniRxでMV(R)Pパターン をやってみた
UniRxでMV(R)PパターンをやってみたUniRxでMV(R)Pパターンをやってみた
UniRxでMV(R)Pパターン をやってみた
 
未来のプログラミング技術をUnityで -UniRx-
未来のプログラミング技術をUnityで -UniRx-未来のプログラミング技術をUnityで -UniRx-
未来のプログラミング技術をUnityで -UniRx-
 
みくみくまうすについて&Unity で使えるコーディングノウハウ
みくみくまうすについて&Unity で使えるコーディングノウハウみくみくまうすについて&Unity で使えるコーディングノウハウ
みくみくまうすについて&Unity で使えるコーディングノウハウ
 

Unityでオンラインゲーム作った話