Date post: | 14-Apr-2017 |
Category: |
Technology |
Upload: | yoshifumi-kawai |
View: | 1,084 times |
Download: | 0 times |
Work
Unity
Private
https://medium.com/@neuecc http://neue.cc/
@neuecc
https://github.com/neuecc/UniRx
Main feature on Game
Chat and Notification
Support C#!
Can be able to write logic in server
Have many cases in Unity
PUN(Photon Unity Network)
We don’t use PUN,
use Client SDK(with Own Framework)
Getting Started
Photon Server
It is class library
Execution flow
public class Startup : ApplicationBase{
// create connection when connected on serverprotected override PeerBase CreatePeer(InitRequest initRequest){
if (/* from client request */){
return new MyClientPeer(initRequest);}else // from server request{
return new InboundS2SPeer(initRequest);}
}
protected override void Setup(){
// Launching process// Connect to master servervar outboundPeer = new OutboundS2SPeer();outboundPeer.ConnectTcp();
}
protected override void TearDown(){
// Quitting process}
}
public class MyClientPeer : ClientPeer{
public MyClientPeer(InitRequest initRequest): base(initRequest)
{
}
protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters{
// byte: operationRequest.OperationCode// Dictionary<byte, object>: operationRequest.Parameters
// Send response to clientthis.SendOperationResponse(new OperationResponse(), sendParameters);
}
protected override void OnDisconnect(DisconnectReason reasonCode, string reasonDetail){}
}
// 1. from Unity to Servervar peer = new ClientSidePeer(new MyListener());peer.OpCustom(opCode: 10, parameter: new Dictionary<byte, object>());
// 2. Receive on Serverprotected override void OnOperationRequest(OperationRequest operationRequest){
// switch by opCodeswitch (operationRequest.OperationCode){
case 10:// Parameter from dictionary(<byte, object>)var parameter = operationRequest.Parameters;
/* process request */
// 3. Send result to clientthis.SendOperationResponse(new OperationResponse(operationCode: 5));break;
default:break;
}}
// Unity Clientpublic class MyListener : IPhotonPeerListener{
// 4. Received from Serverpublic void OnOperationResponse(OperationResponse operationResponse){
// Return responseswitch (operationResponse.OperationCode){
case 5:// process responsebreak;
}}
}
// 3. Server: Send result to clientthis.SendOperationResponse(new OperationResponse(operationCode: 5), sendParameters);
// switch by opCodeswitch (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:break;
// switch by opCodeswitch (operationRequest.OperationCode){
case 0:break;
case 1:break;
case 2:break;
case 3:break;
case 4:break;
case 5:break;
// switch by opCodeswitch (operationRequest.OperationCode){
case 0:break;
case 1:break;
case 2:break;
case 3:break;
case 4:
Intro to PhotonWire
send byte, Dictionary and switch and switch
Can not track send-receive message
Typed Asynchronous RPC Layerhttps://github.com/neuecc/PhotonWire
Windows Client
Server to Server
Next PhotonWire
DESERIALIZE SPEED
Replacing serializer
(De)serialize is slow in Unity
ScriptableObject > JsonUtility > *** > MsgPack > XxxJSON
New WireFormat which does not Deserialize
Fit to C# and Unity
Will be available soon