【unite 2017...
TRANSCRIPT
![Page 1: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/1.jpg)
![Page 2: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/2.jpg)
C# /UniRx
![Page 3: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/3.jpg)
Yoshifumi KawaiCTO Grani, Inc.
![Page 5: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/5.jpg)
About this session
•
•
![Page 6: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/6.jpg)
About this session
•
•
![Page 7: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/7.jpg)
![Page 8: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/8.jpg)
•
•
•
•
•
•
•
![Page 9: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/9.jpg)
•
•
•
•
•
•
•
•
•
![Page 10: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/10.jpg)
•
•
•
•
•
•
•
•
![Page 11: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/11.jpg)
•
•
•
•
•
•
•
![Page 12: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/12.jpg)
•
•
•
•
•
•
•
•
![Page 13: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/13.jpg)
• 4 NPC
• 4 vs 4
• C#
• AI
•
![Page 14: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/14.jpg)
• UniRx
• LINQ to GameObject
• MessagePack for C#
• MagicOnion
• MasterMemory
• ReMotion
• by Yoshifumi Kawai
• etc...
![Page 15: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/15.jpg)
![Page 16: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/16.jpg)
using
![Page 17: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/17.jpg)
Why C#?Why Unity?
•
•
•
•
•
•
•
•
•
![Page 18: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/18.jpg)
C#
•
•
•
•
•
•
•
•
•
![Page 19: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/19.jpg)
How to
•
•
•
•
![Page 20: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/20.jpg)
)
•
•
•
![Page 21: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/21.jpg)
• IDL(Interface Definiton Language)
• IDL = JSON proto /
• IDL ……
• IDL
• C#
• IDL
![Page 22: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/22.jpg)
IDL
• Visual Studio
•
• Unity
• Git
• ……
• C#
• C#
•
•
![Page 23: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/23.jpg)
Visual Studio
![Page 24: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/24.jpg)
C# C#
• C# C#
• C# 6.0(Visual Studio 2015)
•
• [MessagePackObject] => ***MessagePackFormatter
• /
![Page 25: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/25.jpg)
![Page 26: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/26.jpg)
![Page 27: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/27.jpg)
•
•
•
• /
•
•
•
•
![Page 28: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/28.jpg)
•
•
•
• /
•
•
•
•
![Page 29: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/29.jpg)
•
• /
•
• /
•
•
•
![Page 30: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/30.jpg)
•
• /
•
• /
•
•
•
![Page 31: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/31.jpg)
C#
• C# /
•
•
•
•
• /
•IDL
•
![Page 32: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/32.jpg)
![Page 33: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/33.jpg)
•
• C#
• ……
•
•
•
•
•
•
![Page 34: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/34.jpg)
3
![Page 35: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/35.jpg)
gRPC
• Web API + Streaming
• Google HTTP/2 RPC
• HTTP/2 HTTP/1
• gRPC
• Web API
• (Unity )
• (Unity Web API )google
![Page 36: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/36.jpg)
gRPC
• Web API + Streaming
• Google HTTP/2 RPC
• HTTP/2 HTTP/1
• gRPC
• Web API
• (Unity )
• (Unity Web API )google
![Page 37: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/37.jpg)
Unity gRPC
• C# gRPC Unity
• .NET 4.5
•
• gRPC Client Unity
• .NET 3.5 + IL2CPP
• (C Core) iOS/Android
• /
• gRPC IDL Protocol Buffers/ Unity
• HTTP/2 gRPC
![Page 38: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/38.jpg)
Unity gRPC
• C# gRPC Unity
• .NET 4.5
•
• gRPC Client Unity
• .NET 3.5 + IL2CPP
• (C Core) iOS/Android
• /
• gRPC IDL Protocol Buffers/ Unity
• HTTP/2 gRPC
![Page 39: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/39.jpg)
![Page 40: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/40.jpg)
•
•
•
•
•
•
•
•
• ……
![Page 41: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/41.jpg)
•
•
•
•
•
•
•
•
• ……
![Page 42: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/42.jpg)
UNET
• Unity
•
•
•
• C#
•
• UNET
• C#
•
• Web API ,
![Page 43: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/43.jpg)
![Page 44: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/44.jpg)
Web API
•
•
•
•
•
•
•
•
•
![Page 45: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/45.jpg)
Web API
•
•
•
•
•
•
•
•
•
![Page 46: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/46.jpg)
![Page 47: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/47.jpg)
• Web API
![Page 48: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/48.jpg)
Streaming Service(gRPC Battle Engine)
![Page 49: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/49.jpg)
F for AI
• AI (DSL) F#
• F# .NET Framework
• Excel F#C# gRPC BattleEngine
• AI
![Page 50: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/50.jpg)
Streaming Server
•
•
•
•
•
•
•
•
•
•
![Page 51: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/51.jpg)
![Page 54: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/54.jpg)
UniRx
•
•
•
•
•
•
•
•
![Page 55: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/55.jpg)
•
• : 3845 : 1186
•
•
•
•
•
![Page 56: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/56.jpg)
•
•
•
•
•
•
•
•
•
•
![Page 57: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/57.jpg)
Rx
•
•
•
•
•
![Page 58: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/58.jpg)
Rx 3
// これで例外を共通ハンドリングIObservable<TResponse> HnadleCommonError<TRequest, TResponse>(IObservable<TResponse> source){
return source.Catch((Exception ex) =>{
// Exception使って共通エラーポップアップを出したりするとするNavigationService.ShowMessagePopUpAsync("error", "errorMessage").Subscribe();
// 呼び元に真の意味で何も返さないreturn Observable.Never<TResponse>();
});}
![Page 59: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/59.jpg)
Pitfall of Empty
•
•
IObservable<Unit> Test(){
return Observable.FromCoroutine(() => TestCore());}
IEnumerator TestCore(){
yield return Observable.Empty<int>().ToYieldInstruction();
Debug.Log(“この行には到達する");}
![Page 60: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/60.jpg)
Pitfall of Empty
•
•
IObservable<Unit> Test(){
return Observable.FromCoroutine(() => TestCore());}
IEnumerator TestCore(){
yield return Observable.Empty<int>().ToYieldInstruction();
Debug.Log("come here");}
![Page 61: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/61.jpg)
UI Framework Rx
•
•
•
•
•
•
•
•
![Page 62: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/62.jpg)
Chaotic Rx
•
•
•
•
•
Ivory.Unity.Core.Scene.<OnAfterNavigate>c__AnonStorey76A:<>m__2DC7(Unit)UniRx.Operators.Do:OnNext(Unit)UniRx.Operators.ImmutableReturnUnitObservable:Subscribe(IObserver`1)UniRx.Operators.Do:Run()UniRx.Operators.DoObservable`1:SubscribeCore(IObserver`1, IDisposable)UniRx.Operators.OperatorObservableBase`1:Subscribe(IObserver`1)UniRx.Operators.OperatorObservableBase`1:Subscribe(IObserver`1)UniRx.Operators.SelectManyOuterObserver:OnNext(Unit)UniRx.Operators.SelectMany:OnNext(Unit)UniRx.Operators.SelectMany:OnNext(Unit)UniRx.Operators.SelectMany:OnNext(Unit)UniRx.Operators.Do:OnNext(Unit)UniRx.Operators.SelectMany:OnNext(Unit)UniRx.Operators.SelectManyOuterObserver:OnNext(Unit)UniRx.Operators.Do:OnNext(Unit)UniRx.Operators.ImmutableReturnUnitObservable:Subscribe(IObserver`1)UniRx.Operators.Do:Run()UniRx.Operators.DoObservable`1:SubscribeCore(IObserver`1, IDisposable)UniRx.Operators.OperatorObservableBase`1:Subscribe(IObserver`1)UniRx.Operators.SelectManyOuterObserver:Run()UniRx.Operators.SelectManyObservable`2:SubscribeCore(IObserver`1, IDisposable)UniRx.Operators.OperatorObservableBase`1:Subscribe(IObserver`1)UniRx.Operators.Do:Run()UniRx.Operators.DoObservable`1:SubscribeCore(IObserver`1, IDisposable)UniRx.Operators.OperatorObservableBase`1:Subscribe(IObserver`1)UniRx.Operators.SelectManyOuterObserver:OnNext(Unit)UniRx.Operators.SelectMany:OnNext(Unit)UniRx.Operators.WhenAll_:OnNext(Unit)UniRx.Operators.WhenAllCollectionObserver:OnCompleted()UniRx.Operators.AsUnitObservable:OnCompleted()UniRx.Operators.WhenAll:OnCompleted()UniRx.Operators.WhenAllCollectionObserver:OnCompleted()UniRx.Operators.ImmutableReturnUnitObservable:Subscribe(IObserver`1)UniRx.Operators.WhenAll:Run()
![Page 63: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/63.jpg)
Model-View-(Reacitve)Presenter
ViewReactive
PresenterModel
![Page 64: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/64.jpg)
Model-View-(Reacitve)Presenter
ViewReactive
PresenterModel
![Page 65: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/65.jpg)
Chaotic-Reacitve-Model
Reactive
PresenterModel
![Page 66: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/66.jpg)
Chaotic-Reacitve-Model
Reactive
PresenterModel
![Page 67: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/67.jpg)
Rx Simplicity
•
•
•
•
•
•
•
•
•
•
![Page 68: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/68.jpg)
Rx
•
•
•
•
•
•
•
•
•
•
![Page 69: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/69.jpg)
![Page 70: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/70.jpg)
• Before gRPC
•
•
•
•
•
• After gRPC
•
•
![Page 71: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/71.jpg)
•
•
•
•
•
•
•
•
•
![Page 72: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/72.jpg)
•
•
•
•
•
•
•
•
•
![Page 73: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/73.jpg)
ZeroFormatter
![Page 74: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/74.jpg)
•
•
•
•
•
![Page 75: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/75.jpg)
•
•
•
•
•
•
•
•
•
![Page 76: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/76.jpg)
MessagePack for C#
![Page 79: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/79.jpg)
•
•
•
•
•
•
•
•
![Page 80: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/80.jpg)
•
•
•
•
•
•
•
•
•
![Page 81: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/81.jpg)
•
•
•
•
•
•
•
•
•
![Page 83: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/83.jpg)
Architecture of MasterMemory
Header LZ4+MsgPack LZ4+MsgPack LZ4+MsgPack LZ4+MsgPack
Memory<T>
![Page 84: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/84.jpg)
•
•
•
•
•
•
•
•
•
•
![Page 85: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/85.jpg)
•
•
•
•
•
•
•
•
•
•
![Page 86: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/86.jpg)
![Page 87: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/87.jpg)
The Future Has Come
•
• C#
•
•
•
•
•
•
![Page 89: 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術](https://reader033.vdocuments.pub/reader033/viewer/2022050613/5a64794d7f8b9a40568b46c5/html5/thumbnails/89.jpg)
Thank you!