Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
C# /
UniRx
Yoshifumi Kawai
CTOGrani, Inc.
About speaker
•
•
•
•
•
•
•
•
•
About this session
•
•
About this session
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
• 4 NPC
• 4 vs 4
• C#
• AI
•
• UniRx
• LINQ to GameObject
• MessagePack for C#
• MagicOnion
• MasterMemory
• ReMotion
• by Yoshifumi Kawai
• etc...
using
Why C#?
Why Unity?
•
•
•
•
•
•
•
•
•
C#
•
•
•
•
•
•
•
•
•
How to
•
•
•
•
)
•
•
•
• IDL(Interface Definiton Language)
• IDL = JSON proto /
• IDL ……
• IDL
• C#
• IDL
IDL
• Visual Studio
•
• Unity
• Git
• ……
• C#
• C#
•
•
Visual Studio
C# C#
• C# C#
• C# 6.0(Visual Studio 2015)
•
• [MessagePackObject] => ***MessagePackFormatter
• /
•
•
•
• /
•
•
•
•
•
•
•
• /
•
•
•
•
•
• /
•
• /
•
•
•
•
• /
•
• /
•
•
•
C#
• C# /
•
•
•
•
• /
•
IDL
•
•
• C#
• ……
•
•
•
•
•
•
3
gRPC
• Web API + Streaming
• Google HTTP/2 RPC
• HTTP/2 HTTP/1
• gRPC
• Web API
• (Unity )
• (Unity Web API )
google
gRPC
• Web API + Streaming
• Google HTTP/2 RPC
• HTTP/2 HTTP/1
• gRPC
• Web API
• (Unity )
• (Unity Web API )
google
Unity gRPC
• C# gRPC Unity
• .NET 4.5
•
• gRPC Client Unity
• .NET 3.5 + IL2CPP
• (C Core) iOS/Android
• /
• gRPC IDL Prot...
Unity gRPC
• C# gRPC Unity
• .NET 4.5
•
• gRPC Client Unity
• .NET 3.5 + IL2CPP
• (C Core) iOS/Android
• /
• gRPC IDL Prot...
•
•
•
•
•
•
•
•
• ……
•
•
•
•
•
•
•
•
• ……
UNET
• Unity
•
•
•
• C#
•
• UNET
• C#
•
• Web API ,
Web API
•
•
•
•
•
•
•
•
•
Web API
•
•
•
•
•
•
•
•
•
• Web API
Streaming Service(gRPC Battle Engine)
F for AI
• AI (DSL) F#
• F# .NET Framework
• Excel F#
C# gRPC BattleEngine
• AI
Streaming Server
•
•
•
•
•
•
•
•
•
•
We’re using UniRx
•
•
•
•
•
•
•
We’re using UniRx
•
•
•
•
•
•
•
UniRx
•
•
•
•
•
•
•
•
•
• : 3845 : 1186
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Rx
•
•
•
•
•
Rx 3
// これで例外を共通ハンドリング
IObservable<TResponse> HnadleCommonError<TRequest, TResponse>(IObservable<TResponse> source
{
retur...
Pitfall of Empty
•
•
IObservable<Unit> Test()
{
return Observable.FromCoroutine(() => TestCore());
}
IEnumerator TestCore(...
Pitfall of Empty
•
•
IObservable<Unit> Test()
{
return Observable.FromCoroutine(() => TestCore());
}
IEnumerator TestCore(...
UI Framework Rx
•
•
•
•
•
•
•
•
Chaotic Rx
•
•
•
•
•
Ivory.Unity.Core.Scene.<OnAfterNavigate>c__AnonStorey76A:<>m__2DC7(Unit)
UniRx.Operators.Do:OnNext(Un...
Model-View-(Reacitve)Presenter
View
Reactive
Presenter
Model
Model-View-(Reacitve)Presenter
View
Reactive
Presenter
Model
Chaotic-Reacitve-Model
Reactive
Presenter
Model
Chaotic-Reacitve-Model
Reactive
Presenter
Model
Rx Simplicity
•
•
•
•
•
•
•
•
•
•
Rx
•
•
•
•
•
•
•
•
•
•
• Before gRPC
•
•
•
•
•
• After gRPC
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
ZeroFormatter
•
•
•
•
•
•
•
•
•
•
•
•
•
•
MessagePack for C#
C#
•
•
•
•
•
•
•
•
•
C#
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
DB
•
•
•
•
Architecture of MasterMemory
Header LZ4+MsgPack LZ4+MsgPack LZ4+MsgPack LZ4+MsgPack
Memory<T>
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
The Future Has Come
•
• C#
•
•
•
•
•
•
We're Hiring
Unity Engineer/Technical Artist
http://recruit.grani.jp/
Thank you!
【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術
【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術
【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術
【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術
【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術
【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術
【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術
【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術
【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術
【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術
【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術
【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術
Upcoming SlideShare
Loading in …5
×

of

【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 1 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 2 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 3 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 4 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 5 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 6 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 7 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 8 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 9 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 10 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 11 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 12 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 13 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 14 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 15 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 16 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 17 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 18 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 19 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 20 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 21 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 22 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 23 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 24 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 25 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 26 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 27 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 28 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 29 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 30 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 31 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 32 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 33 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 34 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 35 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 36 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 37 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 38 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 39 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 40 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 41 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 42 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 43 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 44 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 45 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 46 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 47 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 48 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 49 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 50 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 51 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 52 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 53 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 54 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 55 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 56 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 57 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 58 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 59 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 60 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 61 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 62 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 63 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 64 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 65 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 66 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 67 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 68 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 69 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 70 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 71 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 72 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 73 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 74 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 75 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 76 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 77 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 78 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 79 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 80 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 81 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 82 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 83 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 84 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 85 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 86 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 87 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 88 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 Slide 89
Upcoming SlideShare
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
Next
Download to read offline and view in fullscreen.

50 Likes

Share

Download to read offline

【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術

Download to read offline

講演者:河合 宜文(株式会社グラニ)

こんな人におすすめ
・C#大統一理論について興味のある方
・UniRxを使ったことがある/使ってみたい方

受講者が得られる知見
・C#で統一したプロジェクトの作り方
・UniRxの活用法、メリットとデメリット

講演動画:https://youtu.be/Lvbs22iZFPk

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術

  1. 1. C# / UniRx
  2. 2. Yoshifumi Kawai CTOGrani, Inc.
  3. 3. About speaker • • • • • • • • •
  4. 4. About this session • •
  5. 5. About this session • •
  6. 6. • • • • • • •
  7. 7. • • • • • • • • •
  8. 8. • • • • • • • •
  9. 9. • • • • • • •
  10. 10. • • • • • • • •
  11. 11. • 4 NPC • 4 vs 4 • C# • AI •
  12. 12. • UniRx • LINQ to GameObject • MessagePack for C# • MagicOnion • MasterMemory • ReMotion • by Yoshifumi Kawai • etc...
  13. 13. using
  14. 14. Why C#? Why Unity? • • • • • • • • •
  15. 15. C# • • • • • • • • •
  16. 16. How to • • • •
  17. 17. ) • • •
  18. 18. • IDL(Interface Definiton Language) • IDL = JSON proto / • IDL …… • IDL • C# • IDL
  19. 19. IDL • Visual Studio • • Unity • Git • …… • C# • C# • •
  20. 20. Visual Studio
  21. 21. C# C# • C# C# • C# 6.0(Visual Studio 2015) • • [MessagePackObject] => ***MessagePackFormatter • /
  22. 22. • • • • / • • • •
  23. 23. • • • • / • • • •
  24. 24. • • / • • / • • •
  25. 25. • • / • • / • • •
  26. 26. C# • C# / • • • • • / • IDL •
  27. 27. • • C# • …… • • • • • •
  28. 28. 3
  29. 29. gRPC • Web API + Streaming • Google HTTP/2 RPC • HTTP/2 HTTP/1 • gRPC • Web API • (Unity ) • (Unity Web API ) google
  30. 30. gRPC • Web API + Streaming • Google HTTP/2 RPC • HTTP/2 HTTP/1 • gRPC • Web API • (Unity ) • (Unity Web API ) google
  31. 31. 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
  32. 32. 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
  33. 33. • • • • • • • • • ……
  34. 34. • • • • • • • • • ……
  35. 35. UNET • Unity • • • • C# • • UNET • C# • • Web API ,
  36. 36. Web API • • • • • • • • •
  37. 37. Web API • • • • • • • • •
  38. 38. • Web API
  39. 39. Streaming Service(gRPC Battle Engine)
  40. 40. F for AI • AI (DSL) F# • F# .NET Framework • Excel F# C# gRPC BattleEngine • AI
  41. 41. Streaming Server • • • • • • • • • •
  42. 42. We’re using UniRx • • • • • • •
  43. 43. We’re using UniRx • • • • • • •
  44. 44. UniRx • • • • • • • •
  45. 45. • • : 3845 : 1186 • • • • •
  46. 46. • • • • • • • • • •
  47. 47. Rx • • • • •
  48. 48. 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>(); }); }
  49. 49. Pitfall of Empty • • IObservable<Unit> Test() { return Observable.FromCoroutine(() => TestCore()); } IEnumerator TestCore() { yield return Observable.Empty<int>().ToYieldInstruction(); Debug.Log(“この行には到達する"); }
  50. 50. Pitfall of Empty • • IObservable<Unit> Test() { return Observable.FromCoroutine(() => TestCore()); } IEnumerator TestCore() { yield return Observable.Empty<int>().ToYieldInstruction(); Debug.Log("come here"); }
  51. 51. UI Framework Rx • • • • • • • •
  52. 52. 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)
  53. 53. Model-View-(Reacitve)Presenter View Reactive Presenter Model
  54. 54. Model-View-(Reacitve)Presenter View Reactive Presenter Model
  55. 55. Chaotic-Reacitve-Model Reactive Presenter Model
  56. 56. Chaotic-Reacitve-Model Reactive Presenter Model
  57. 57. Rx Simplicity • • • • • • • • • •
  58. 58. Rx • • • • • • • • • •
  59. 59. • Before gRPC • • • • • • After gRPC • •
  60. 60. • • • • • • • • •
  61. 61. • • • • • • • • •
  62. 62. ZeroFormatter
  63. 63. • • • • •
  64. 64. • • • • • • • • •
  65. 65. MessagePack for C#
  66. 66. C# • • • • • • • • •
  67. 67. C# • • • • • • • • •
  68. 68. • • • • • • • •
  69. 69. • • • • • • • • •
  70. 70. • • • • • • • • •
  71. 71. DB • • • •
  72. 72. Architecture of MasterMemory Header LZ4+MsgPack LZ4+MsgPack LZ4+MsgPack LZ4+MsgPack Memory<T>
  73. 73. • • • • • • • • • •
  74. 74. • • • • • • • • • •
  75. 75. The Future Has Come • • C# • • • • • •
  76. 76. We're Hiring Unity Engineer/Technical Artist http://recruit.grani.jp/
  77. 77. Thank you!
  • ssuserea4f3d

    Jul. 19, 2021
  • RyuyaMatsuoka

    Nov. 18, 2019
  • tamurakazumi

    May. 18, 2019
  • suxin92

    Mar. 20, 2019
  • OtohikoMisawa

    Sep. 16, 2018
  • ssuser5e15c6

    Jul. 5, 2018
  • silverrin

    May. 8, 2018
  • MasatakeInaba

    Apr. 29, 2018
  • AtsushiTaniguchi

    Apr. 3, 2018
  • yfrjxyyanfan7

    Apr. 2, 2018
  • stonerhk08

    Mar. 29, 2018
  • ducu001

    Feb. 8, 2018
  • syuminagi

    Feb. 4, 2018
  • ssuserfa1d2e

    Nov. 5, 2017
  • NoritoKutsuzawa1

    Oct. 15, 2017
  • takutoitami

    Sep. 19, 2017
  • taroakabane3

    May. 20, 2017
  • motokazutsuno

    May. 18, 2017
  • onsemy

    May. 18, 2017
  • shingoimota

    May. 17, 2017

講演者:河合 宜文(株式会社グラニ) こんな人におすすめ ・C#大統一理論について興味のある方 ・UniRxを使ったことがある/使ってみたい方 受講者が得られる知見 ・C#で統一したプロジェクトの作り方 ・UniRxの活用法、メリットとデメリット 講演動画:https://youtu.be/Lvbs22iZFPk

Views

Total views

169,358

On Slideshare

0

From embeds

0

Number of embeds

148,558

Actions

Downloads

170

Shares

0

Comments

0

Likes

50

×