Submit Search
Upload
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
•
4 likes
•
52,043 views
Yoshifumi Kawai
Follow
2016.09.14 photonstudy
Read less
Read more
Technology
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 65
Download now
Download to read offline
Recommended
NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#
Yoshifumi Kawai
【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things
UnityTechnologiesJapan002
A Framework for LightUp Applications of Grani
A Framework for LightUp Applications of Grani
Yoshifumi Kawai
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
Yoshifumi Kawai
UniRx - Reactive Extensions for Unity
UniRx - Reactive Extensions for Unity
Yoshifumi Kawai
True Cloud Native Batch Workflow for .NET with MicroBatchFramework
True Cloud Native Batch Workflow for .NET with MicroBatchFramework
Yoshifumi Kawai
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
Yoshifumi Kawai
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
Yoshifumi Kawai
Recommended
NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#
Yoshifumi Kawai
【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things
UnityTechnologiesJapan002
A Framework for LightUp Applications of Grani
A Framework for LightUp Applications of Grani
Yoshifumi Kawai
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
Yoshifumi Kawai
UniRx - Reactive Extensions for Unity
UniRx - Reactive Extensions for Unity
Yoshifumi Kawai
True Cloud Native Batch Workflow for .NET with MicroBatchFramework
True Cloud Native Batch Workflow for .NET with MicroBatchFramework
Yoshifumi Kawai
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
Yoshifumi Kawai
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
Yoshifumi Kawai
Implements OpenTelemetry Collector in DotNet
Implements OpenTelemetry Collector in DotNet
Yoshifumi Kawai
The History of Reactive Extensions
The History of Reactive Extensions
Yoshifumi Kawai
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
torisoup
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Yoshifumi Kawai
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
Yoshifumi Kawai
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Yoshifumi Kawai
A quick tour of the Cysharp OSS
A quick tour of the Cysharp OSS
Yoshifumi Kawai
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Yoshifumi Kawai
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
Yoshifumi Kawai
Multipeer connectivityを使った 動画のリアルタイム端末間共有
Multipeer connectivityを使った 動画のリアルタイム端末間共有
Imajin Kawabe
Golang tokyo #7 qtpm
Golang tokyo #7 qtpm
Yoshiki Shibukawa
The Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnion
Yoshifumi Kawai
Introduction to NotifyPropertyChangedGenerator
Introduction to NotifyPropertyChangedGenerator
Yoshifumi Kawai
Building the Game Server both API and Realtime via c#
Building the Game Server both API and Realtime via c#
Yoshifumi Kawai
Dockerを使ったクライアントハイパーバイザー
Dockerを使ったクライアントハイパーバイザー
kunst1080
LINQPad with LINQ to BigQuery - Desktop Client for BigQuery
LINQPad with LINQ to BigQuery - Desktop Client for BigQuery
Yoshifumi Kawai
Using or not using magic onion
Using or not using magic onion
Goichi Shinohara
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
Yoshifumi Kawai
The History of LINQ
The History of LINQ
Yoshifumi Kawai
Mithril
Mithril
Yoshiki Shibukawa
Clash of Oni Online - VR Multiplay Sword Action
Clash of Oni Online - VR Multiplay Sword Action
Yoshifumi Kawai
RuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for Unity
Yoshifumi Kawai
More Related Content
What's hot
Implements OpenTelemetry Collector in DotNet
Implements OpenTelemetry Collector in DotNet
Yoshifumi Kawai
The History of Reactive Extensions
The History of Reactive Extensions
Yoshifumi Kawai
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
torisoup
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Yoshifumi Kawai
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
Yoshifumi Kawai
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Yoshifumi Kawai
A quick tour of the Cysharp OSS
A quick tour of the Cysharp OSS
Yoshifumi Kawai
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Yoshifumi Kawai
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
Yoshifumi Kawai
Multipeer connectivityを使った 動画のリアルタイム端末間共有
Multipeer connectivityを使った 動画のリアルタイム端末間共有
Imajin Kawabe
Golang tokyo #7 qtpm
Golang tokyo #7 qtpm
Yoshiki Shibukawa
The Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnion
Yoshifumi Kawai
Introduction to NotifyPropertyChangedGenerator
Introduction to NotifyPropertyChangedGenerator
Yoshifumi Kawai
Building the Game Server both API and Realtime via c#
Building the Game Server both API and Realtime via c#
Yoshifumi Kawai
Dockerを使ったクライアントハイパーバイザー
Dockerを使ったクライアントハイパーバイザー
kunst1080
LINQPad with LINQ to BigQuery - Desktop Client for BigQuery
LINQPad with LINQ to BigQuery - Desktop Client for BigQuery
Yoshifumi Kawai
Using or not using magic onion
Using or not using magic onion
Goichi Shinohara
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
Yoshifumi Kawai
The History of LINQ
The History of LINQ
Yoshifumi Kawai
Mithril
Mithril
Yoshiki Shibukawa
What's hot
(20)
Implements OpenTelemetry Collector in DotNet
Implements OpenTelemetry Collector in DotNet
The History of Reactive Extensions
The History of Reactive Extensions
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
A quick tour of the Cysharp OSS
A quick tour of the Cysharp OSS
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
Multipeer connectivityを使った 動画のリアルタイム端末間共有
Multipeer connectivityを使った 動画のリアルタイム端末間共有
Golang tokyo #7 qtpm
Golang tokyo #7 qtpm
The Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnion
Introduction to NotifyPropertyChangedGenerator
Introduction to NotifyPropertyChangedGenerator
Building the Game Server both API and Realtime via c#
Building the Game Server both API and Realtime via c#
Dockerを使ったクライアントハイパーバイザー
Dockerを使ったクライアントハイパーバイザー
LINQPad with LINQ to BigQuery - Desktop Client for BigQuery
LINQPad with LINQ to BigQuery - Desktop Client for BigQuery
Using or not using magic onion
Using or not using magic onion
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
The History of LINQ
The History of LINQ
Mithril
Mithril
Viewers also liked
Clash of Oni Online - VR Multiplay Sword Action
Clash of Oni Online - VR Multiplay Sword Action
Yoshifumi Kawai
RuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for Unity
Yoshifumi Kawai
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Yoshifumi Kawai
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
Yoshifumi Kawai
【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術
【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術
Unity Technologies Japan K.K.
Photon Webhooks & IPv6対応の最新情報
Photon Webhooks & IPv6対応の最新情報
GMO GlobalSign Holdings K.K.
IL2CPPに関する軽い話
IL2CPPに関する軽い話
Wooram Yang
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミング
Ransui Iso
DeclarativeSql
DeclarativeSql
Takaaki Suzuki
linq.js - Linq to Objects for JavaScript
linq.js - Linq to Objects for JavaScript
Yoshifumi Kawai
Photon Server Deep Dive - View from Implmentation of PhotonWire, Multiplayer ...
Photon Server Deep Dive - View from Implmentation of PhotonWire, Multiplayer ...
Yoshifumi Kawai
How to make the Fastest C# Serializer, In the case of ZeroFormatter
How to make the Fastest C# Serializer, In the case of ZeroFormatter
Yoshifumi Kawai
History & Practices for UniRx(EN)
History & Practices for UniRx(EN)
Yoshifumi Kawai
linq.js ver.3 and JavaScript in Visual Studio 2012
linq.js ver.3 and JavaScript in Visual Studio 2012
Yoshifumi Kawai
RuntimeUnitTestToolkit for Unity(English)
RuntimeUnitTestToolkit for Unity(English)
Yoshifumi Kawai
開発キックオフ時にマネージャが行うべき11のこと ~Visual Studio Online & TFS 使い始めと HOME 画面の構成
開発キックオフ時にマネージャが行うべき11のこと ~Visual Studio Online & TFS 使い始めと HOME 画面の構成
慎一 古賀
[data analytics showcase] A12: データに隠された課題、ちゃんと見えていますか? by Tableau Japan 株式会社 ...
[data analytics showcase] A12: データに隠された課題、ちゃんと見えていますか? by Tableau Japan 株式会社 ...
Insight Technology, Inc.
「ずいぶんとダサいライティングを使っているのね」〜UniRxを用いた物理ベースライティング制御〜
「ずいぶんとダサいライティングを使っているのね」〜UniRxを用いた物理ベースライティング制御〜
Toru Nayuki
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
Yoshifumi Kawai
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
Yoshito Tabuchi
Viewers also liked
(20)
Clash of Oni Online - VR Multiplay Sword Action
Clash of Oni Online - VR Multiplay Sword Action
RuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for Unity
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術
【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術
Photon Webhooks & IPv6対応の最新情報
Photon Webhooks & IPv6対応の最新情報
IL2CPPに関する軽い話
IL2CPPに関する軽い話
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミング
DeclarativeSql
DeclarativeSql
linq.js - Linq to Objects for JavaScript
linq.js - Linq to Objects for JavaScript
Photon Server Deep Dive - View from Implmentation of PhotonWire, Multiplayer ...
Photon Server Deep Dive - View from Implmentation of PhotonWire, Multiplayer ...
How to make the Fastest C# Serializer, In the case of ZeroFormatter
How to make the Fastest C# Serializer, In the case of ZeroFormatter
History & Practices for UniRx(EN)
History & Practices for UniRx(EN)
linq.js ver.3 and JavaScript in Visual Studio 2012
linq.js ver.3 and JavaScript in Visual Studio 2012
RuntimeUnitTestToolkit for Unity(English)
RuntimeUnitTestToolkit for Unity(English)
開発キックオフ時にマネージャが行うべき11のこと ~Visual Studio Online & TFS 使い始めと HOME 画面の構成
開発キックオフ時にマネージャが行うべき11のこと ~Visual Studio Online & TFS 使い始めと HOME 画面の構成
[data analytics showcase] A12: データに隠された課題、ちゃんと見えていますか? by Tableau Japan 株式会社 ...
[data analytics showcase] A12: データに隠された課題、ちゃんと見えていますか? by Tableau Japan 株式会社 ...
「ずいぶんとダサいライティングを使っているのね」〜UniRxを用いた物理ベースライティング制御〜
「ずいぶんとダサいライティングを使っているのね」〜UniRxを用いた物理ベースライティング制御〜
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
Xamarin 概要 @ 「Xamarin」って何? Wエバンジェリストによる特濃「Xamarin」勉強会 Rev2
Similar to Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
20140830 2014年版 C #でできること
20140830 2014年版 C #でできること
Takayoshi Tanaka
ngCore engine for mobage platform
ngCore engine for mobage platform
Toru Yamaguchi
革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術
Toru Yamaguchi
スマートフォンの方式検討に関する基礎知識
スマートフォンの方式検討に関する基礎知識
Yugo Yamamoto
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
Web Technology Corp.
Unity講習会
Unity講習会
MASA_T_O
GTMF2012 SpriteStudio と "Unity" と "CoronaSDK" と "ngCore" ! ~組み合わせて改善する 2D ワーク...
GTMF2012 SpriteStudio と "Unity" と "CoronaSDK" と "ngCore" ! ~組み合わせて改善する 2D ワーク...
Web Technology Corp.
ゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetup
gree_tech
ゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetup
Ryuichi Kubuki
Unity 名古屋セミナー [Sprite Studio]
Unity 名古屋セミナー [Sprite Studio]
MakotoItoh
Webプログラマの為のUnity入門
Webプログラマの為のUnity入門
Yusuke Ando
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
Satoshi Yamafuji
Gamebryo LightSpeed(Japanese)
Gamebryo LightSpeed(Japanese)
Gamebryo
RustによるGPUプログラミング環境
RustによるGPUプログラミング環境
KiyotomoHiroyasu
ソーシャルゲームとスマフォアプリとクラウドの関係
ソーシャルゲームとスマフォアプリとクラウドの関係
gipwest
【17-A-1】Mobile Future Conference開会のご挨拶/世界へ挑むDeNAの「X-border」「X-device」戦略
【17-A-1】Mobile Future Conference開会のご挨拶/世界へ挑むDeNAの「X-border」「X-device」戦略
Developers Summit
VRライブ・コミュニケーションサービス「バーチャルキャスト」でのモノビットエンジンの採用事例と最新情報 - モノビットエンジン - GTMF 2018 O...
VRライブ・コミュニケーションサービス「バーチャルキャスト」でのモノビットエンジンの採用事例と最新情報 - モノビットエンジン - GTMF 2018 O...
Game Tools & Middleware Forum
Cocos最新情報(2015/3/13)
Cocos最新情報(2015/3/13)
Chukong Technologies Japan
Unity ゲーム開発
Unity ゲーム開発
Katsutoshi Makino
Aiming のクラウド採用基準
Aiming のクラウド採用基準
Takahiro Hozumi
Similar to Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
(20)
20140830 2014年版 C #でできること
20140830 2014年版 C #でできること
ngCore engine for mobage platform
ngCore engine for mobage platform
革新的ブラウザゲームを支えるプラットフォーム技術
革新的ブラウザゲームを支えるプラットフォーム技術
スマートフォンの方式検討に関する基礎知識
スマートフォンの方式検討に関する基礎知識
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
Unity講習会
Unity講習会
GTMF2012 SpriteStudio と "Unity" と "CoronaSDK" と "ngCore" ! ~組み合わせて改善する 2D ワーク...
GTMF2012 SpriteStudio と "Unity" と "CoronaSDK" と "ngCore" ! ~組み合わせて改善する 2D ワーク...
ゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetup
Unity 名古屋セミナー [Sprite Studio]
Unity 名古屋セミナー [Sprite Studio]
Webプログラマの為のUnity入門
Webプログラマの為のUnity入門
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
剣と魔法のログレス いにしえの女神 〜スマホ時代の MMORPG を支える技術
Gamebryo LightSpeed(Japanese)
Gamebryo LightSpeed(Japanese)
RustによるGPUプログラミング環境
RustによるGPUプログラミング環境
ソーシャルゲームとスマフォアプリとクラウドの関係
ソーシャルゲームとスマフォアプリとクラウドの関係
【17-A-1】Mobile Future Conference開会のご挨拶/世界へ挑むDeNAの「X-border」「X-device」戦略
【17-A-1】Mobile Future Conference開会のご挨拶/世界へ挑むDeNAの「X-border」「X-device」戦略
VRライブ・コミュニケーションサービス「バーチャルキャスト」でのモノビットエンジンの採用事例と最新情報 - モノビットエンジン - GTMF 2018 O...
VRライブ・コミュニケーションサービス「バーチャルキャスト」でのモノビットエンジンの採用事例と最新情報 - モノビットエンジン - GTMF 2018 O...
Cocos最新情報(2015/3/13)
Cocos最新情報(2015/3/13)
Unity ゲーム開発
Unity ゲーム開発
Aiming のクラウド採用基準
Aiming のクラウド採用基準
More from Yoshifumi Kawai
A Brief History of UniRx/UniTask, IUniTaskSource in Depth
A Brief History of UniRx/UniTask, IUniTaskSource in Depth
Yoshifumi Kawai
Deep Dive async/await in Unity with UniTask(EN)
Deep Dive async/await in Unity with UniTask(EN)
Yoshifumi Kawai
Memory Management of C# with Unity Native Collections
Memory Management of C# with Unity Native Collections
Yoshifumi Kawai
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Yoshifumi Kawai
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
Binary Reading in C#
Binary Reading in C#
Yoshifumi Kawai
More from Yoshifumi Kawai
(6)
A Brief History of UniRx/UniTask, IUniTaskSource in Depth
A Brief History of UniRx/UniTask, IUniTaskSource in Depth
Deep Dive async/await in Unity with UniTask(EN)
Deep Dive async/await in Unity with UniTask(EN)
Memory Management of C# with Unity Native Collections
Memory Management of C# with Unity Native Collections
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Binary Reading in C#
Binary Reading in C#
Photon Server Deep Dive - PhotonWireの実装から見つめるPhotonServerの基礎と応用
1.
2.
Work C# Unity Private http://neue.cc/ @neuecc https://github.com/neuecc/UniRx
3.
About Grani モバイル向けゲーム開発企業 http://grani.jp/ 2012年設立 代表作として「神獄のヴァルハラゲート」 GREE Platform
Awardにて殿堂入り最優秀賞 他、カプコンとの共同開発による「モンスターハンター ロア オブ カード」 iOS/Android向けに次期タイトル「黒騎士と白の魔王」鋭意開発中
4.
5.
6.
using
7.
using
8.
Unity + Realtime
9.
すべてが別格のRPG https://kuro-kishi.jp Unity ASP.NET Photon
10.
ゲームのメイン部分 チャット・通知系システム
11.
Socket.io ASP.NET SignalR Unity Multiplayer(UNET) モノビットエンジン
12.
サーバー側の分散手法が弱い Unity向けの標準クライアントがない プロトコルが重い 固定のシリアライゼーションフォーマット
13.
C#であること サーバー側にロジックが書けること 大規模MMORPGなどへの発展性があること 実績がある
14.
Photon Family
15.
Realtime/(Turnbased)/Chat/Voice/Server...
16.
サーバーに実装を入れたい
17.
PUN(Photon Unity Network) PUNを使わない100の理由
18.
Getting Started Photon Server
19.
20.
21.
22.
実態はただのクラスライブラリ 実行フロー
23.
public class Startup
: ApplicationBase { // サーバーに接続が入った時のコネクション生成ハンドリング protected override PeerBase CreatePeer(InitRequest initRequest) { if (/* クライアントからのリクエストなら */) { return new MyClientPeer(initRequest); } else // サーバーからのリクエストなら { return new InboundS2SPeer(initRequest); } } protected override void Setup() { // 起動時の処理 // マスターサーバーに繋げるならOutboundS2SPeerを作ったり var outboundPeer = new OutboundS2SPeer(); outboundPeer.ConnectTcp(); } protected override void TearDown() { // 終了時の処理 } } public class MyClientPeer : ClientPeer { public MyClientPeer(InitRequest initRequest) : base(initRequest) { } protected override void OnOperationRequest(OperationRequest operationRequest, { // byte: operationRequest.OperationCode // Dictionary<byte, object>: operationRequest.Parameters // クライアントにレスポンスを送信 this.SendOperationResponse(new OperationResponse(), sendParameters); } protected override void OnDisconnect(DisconnectReason reasonCode, string reaso { } }
24.
// 1. Unity側からサーバーへ送信 var
peer = new ClientSidePeer(new MyListener()); peer.OpCustom(opCode: 10, parameter: new Dictionary<byte, object>()); // 2. サーバー側が受信する protected override void OnOperationRequest(OperationRequest operationRequest) { // opCodeで分岐 switch (operationRequest.OperationCode) { case 10: // データはDictionaryに詰まってるのでそれを取り出す(<byte, object>) var parameter = operationRequest.Parameters; /* それを使って何か処理する */ // 3. 処理終わったということでクライアントに結果を送る this.SendOperationResponse(new OperationResponse(operationCode: 5)); break; default: break; } }
25.
// Unityクライアント側 public class
MyListener : IPhotonPeerListener { // 4. クライアント受信 public void OnOperationResponse(OperationResponse operationResponse) { // 返ってきたレスポンス switch (operationResponse.OperationCode) { case 5: // なんかする break; } } } // 3. サーバー側:処理終わったということでクライアントに結果を送る this.SendOperationResponse(new OperationResponse(operationCode: 5), sendParameters);
26.
// opCodeで分岐 switch (operationRequest.OperationCode) { case
0: break; case 1: break; case 2: break; case 3: break; case 4: break; case 5: break; case 6: break; case 7: break; case 8: break; case 9: break case 10:
27.
// opCodeで分岐 switch (operationRequest.OperationCode) { case
0: break; case 1: break; case 2: break; case 3: break; case 4: break; case 5:
28.
// opCodeで分岐 switch (operationRequest.OperationCo { case
0: break; case 1: break; case 2: break; case 3: break;
29.
30.
Intro to PhotonWire
31.
byte, Dictionaryを送りswitch、送り返してswitch クライアントの送信と受信がバラバラ
32.
33.
34.
Typed Asynchronous RPC
Layer https://github.com/neuecc/PhotonWire
35.
Demo...
36.
専用のWindowsクライアント
37.
Server to Server
38.
39.
40.
41.
42.
43.
44.
なにもないことはいいこと
45.
Into the Photon
Server
46.
非常にプリミティブ 複雑な機能は全てロジックに寄る
47.
接続
48.
4種類ある送信メソッド 当然受信側も4種類
49.
SendEvent/OnEvent SendMessage/OnMessage SendOperationRequest/OnOperationRequest SendOperationResponse/OnOperationResponse
50.
SendEvent/OnEvent SendMessage/OnMessage SendOperationRequest/OnOperationRequest SendOperationResponse/OnOperationResponse
51.
シリアル化 サポート型は少なめ
52.
Next PhotonWire
53.
デシリアライズ速度 シリアライザの置き換え
54.
(De)serialize is slow... ScriptableObject
> JsonUtility > (越えられない壁) > MsgPack > XxxJSON
55.
デシリアライズしない新フォーマット C#, Unityにフィットさせる 近日公開予定
56.
Configuration of Photon
57.
<?xml version="1.0" encoding="shift-jis"?> <Configuration> <DevLocal> <!--
CLRVersionを使ってる.NETのバージョンに合わせる。.NET 4.5~6はCLR v4.0 --> <Runtime Assembly="PhotonHostRuntime, Culture=neutral" Type="PhotonHostRuntime.PhotonDomainManager" CLRVersion="v4.0" UnhandledExceptionPolicy="Ignore"> </Runtime> <!-- InactivityTimeout(ms)はローカルでは0にする(デバッガで止めてる最中にも強制切断が辛いので) --> <TCPListeners> <TCPListener IPAddress="127.0.0.1" Port="4530" ListenBacklog="1000" InactivityTimeout="0" /> </TCPListeners> <Applications Default="MyApp.GameServer" PassUnknownAppsToDefaultApp="true"> <Application Name="MyApp.GameServer" BaseDirectory="MyApp" Assembly="MyApp" Type="MyApp.GameServerStartup" EnableShadowCopy="true" EnableAutoRestart="true" ForceAutoRestart="true" ApplicationRootDirectory="PhotonLibs"> </Application> </Applications> </DevLocal> </Configuration>
58.
<?xml version="1.0" encoding="shift-jis"?> <Configuration> <DevLocal> <!--
CLRVersionを使ってる.NETのバージョンに合わせる。.NET 4.5~6はCLR v4.0 --> <Runtime Assembly="PhotonHostRuntime, Culture=neutral" Type="PhotonHostRuntime.PhotonDomainManager" CLRVersion="v4.0" UnhandledExceptionPolicy="Ignore"> </Runtime> <!-- InactivityTimeout(ms)はローカルでは0にする(デバッガで止めてる最中にも強制切断が辛いので) --> <TCPListeners> <TCPListener IPAddress="127.0.0.1" Port="4530" ListenBacklog="1000" InactivityTimeout="0" /> </TCPListeners> <Applications Default="MyApp.GameServer" PassUnknownAppsToDefaultApp="true"> <Application Name="MyApp.GameServer" BaseDirectory="MyApp" Assembly="MyApp" Type="MyApp.GameServerStartup" EnableShadowCopy="true" EnableAutoRestart="true" ForceAutoRestart="true" ApplicationRootDirectory="PhotonLibs"> </Application> </Applications> </DevLocal> </Configuration>
59.
<?xml version="1.0" encoding="shift-jis"?> <Configuration> <DevLocal> <!--
CLRVersionを使ってる.NETのバージョンに合わせる。.NET 4.5~6はCLR v4.0 --> <Runtime Assembly="PhotonHostRuntime, Culture=neutral" Type="PhotonHostRuntime.PhotonDomainManager" CLRVersion="v4.0" UnhandledExceptionPolicy="Ignore"> </Runtime> <!-- InactivityTimeout(ms)はローカルでは0にする(デバッガで止めてる最中にも強制切断が辛いので) --> <TCPListeners> <TCPListener IPAddress="127.0.0.1" Port="4530" ListenBacklog="1000" InactivityTimeout="0" /> </TCPListeners> <Applications Default="MyApp.GameServer" PassUnknownAppsToDefaultApp="true"> <Application Name="MyApp.GameServer" BaseDirectory="MyApp" Assembly="MyApp" Type="MyApp.GameServerStartup" EnableShadowCopy="true" EnableAutoRestart="true" ForceAutoRestart="true" ApplicationRootDirectory="PhotonLibs"> </Application> </Applications> </DevLocal> </Configuration>
60.
<?xml version="1.0" encoding="shift-jis"?> <Configuration> <DevLocal> <!--
CLRVersionを使ってる.NETのバージョンに合わせる。.NET 4.5~6はCLR v4.0 --> <Runtime Assembly="PhotonHostRuntime, Culture=neutral" Type="PhotonHostRuntime.PhotonDomainManager" CLRVersion="v4.0" UnhandledExceptionPolicy="Ignore"> </Runtime> <!-- InactivityTimeout(ms)はローカルでは0にする(デバッガで止めてる最中にも強制切断が辛いので) --> <TCPListeners> <TCPListener IPAddress="127.0.0.1" Port="4530" ListenBacklog="1000" InactivityTimeout="0" /> </TCPListeners> <Applications Default="MyApp.GameServer" PassUnknownAppsToDefaultApp="true"> <Application Name="MyApp.GameServer" BaseDirectory="MyApp" Assembly="MyApp" Type="MyApp.GameServerStartup" EnableShadowCopy="true" EnableAutoRestart="true" ForceAutoRestart="true" ApplicationRootDirectory="PhotonLibs"> </Application> </Applications> </DevLocal> </Configuration>
61.
<?xml version="1.0" encoding="shift-jis"?> <Configuration> <DevLocal> <!--
CLRVersionを使ってる.NETのバージョンに合わせる。.NET 4.5~6はCLR v4.0 --> <Runtime Assembly="PhotonHostRuntime, Culture=neutral" Type="PhotonHostRuntime.PhotonDomainManager" CLRVersion="v4.0" UnhandledExceptionPolicy="Ignore"> </Runtime> <!-- InactivityTimeout(ms)はローカルでは0にする(デバッガで止めてる最中にも強制切断が辛いので) --> <TCPListeners> <TCPListener IPAddress="127.0.0.1" Port="4530" ListenBacklog="1000" InactivityTimeout="0" /> </TCPListeners> <Applications Default="MyApp.GameServer" PassUnknownAppsToDefaultApp="true"> <Application Name="MyApp.GameServer" BaseDirectory="MyApp" Assembly="MyApp" Type="MyApp.GameServerStartup" EnableShadowCopy="true" EnableAutoRestart="true" ForceAutoRestart="true" ApplicationRootDirectory="PhotonLibs"> </Application> </Applications> </DevLocal> </Configuration>
62.
Conclusion
63.
真価は出してみないとわからん Photon Serverは良い PhotonWireは良い
64.
Hiring http://recruit.grani.jp/
Download now