Photon服務器引擎入門

Photon是個好東西,可是網上的入門教程太少了,特別是中文版的。小弟就本身琢磨吧,下面一系列是對Photon的研究過程,若有哪一個地方寫的有誤,望請前輩指教。html

首先去PhotonServer SDK下載服務器端SDK,須要登陸的,就先註冊一個帳號吧.
c#

解壓出來是四個文件windows

deploy:主要存放photon的服務器控制程序和服務端Demo服務器

doc:顧名思義,文檔編輯器

lib:Photon類庫,開發服務端須要引用的ide

src-server:服務端Demo源代碼this


今天搞一個客戶端鏈接服務器最簡單的程序,也算是hello world吧spa

客戶端以Unity3d 爲基礎,hello world包括配置服務器,客戶端,客戶端鏈接服務器,客戶端狀態改變。.net

第一步:配置服務器端3d

打開deploy文件夾,看到包含了不一樣平臺編譯出的Photon目錄,以「bin_」爲前綴命名目錄,選擇你的電腦對應的文件夾打開,看到PhotonControl.exe,運行後,能夠在windows右下角看到一個圖標,點擊圖標能夠看到photon服務器控制菜單,這個之後再作詳細介紹.


打開visual stadio,新建項目,選擇c# 類庫,應用程序名字叫作MyServer.

完成後,把咱們的Class1.cs,更名爲MyApplication.cs,做爲服務器端主類.而後在當前項目添加引用,連接到剛纔提到的lib文件夾目錄下,添加如下引用:

ExitGamesLibs.dll,Photon.SocketServer.dll,PhotonHostRuntimeInterfaces.dll

而後新建一個類:MyPeer.cs,寫法以下:

[csharp]  view plain copy print ?
  1. using System;  
  2. using System.Collections.Generic;  
  3. using Photon.SocketServer;  
  4. using PhotonHostRuntimeInterfaces;  
  5.   
  6. namespace MyServer  
  7. {  
  8.     public class MyPeer : PeerBase  
  9.     {  
  10.   
  11.         public  MyPeer(IRpcProtocol protocol,IPhotonPeer photonPeer)  
  12.             : base(protocol, photonPeer)  
  13.         {   
  14.               
  15.         }  
  16.   
  17.         protected override void OnDisconnect(PhotonHostRuntimeInterfaces.DisconnectReason reasonCode, string reasonDetail)  
  18.         {  
  19.               
  20.         }  
  21.   
  22.         protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters)  
  23.         {  
  24.               
  25.         }  
  26.     }  
  27. }  

接上,MyApplication.cs類這樣寫:

[csharp]  view plain copy print ?
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using Photon.SocketServer;  
  6.   
  7. namespace MyServer  
  8. {  
  9.     public class MyApplication : ApplicationBase  
  10.     {  
  11.   
  12.         protected override PeerBase CreatePeer(InitRequest initRequest)  
  13.         {  
  14.             return new MyPeer(initRequest.Protocol, initRequest.PhotonPeer);  
  15.         }  
  16.   
  17.         protected override void Setup()  
  18.         {  
  19.               
  20.         }  
  21.   
  22.         protected override void TearDown()  
  23.         {  
  24.               
  25.         }  
  26.     }  
  27. }  


完成後,在解決方案資源管理器中選中當前項目,打開屬性,選擇生成選項卡,把輸出路徑改爲bin\,而後就生成類庫吧

複製當前項目下MyServer文件夾到deploy文件夾下,刪除除了bin文件夾之外其餘全部文件和文件夾,而後文本編輯器打開deploy\bin_Win64\PhotonServer.config配置文件(個人是win7 64位機器,就選擇這個),添加如下配置:


[html]  view plain copy print ?
  1. <Application  
  2.                 Name="MyServer"  
  3.                 BaseDirectory="MyServer"  
  4.                 Assembly="MyServer"  
  5.                 Type="MyServer.MyApplication"  
  6.                 EnableAutoRestart="true"  
  7.                 WatchFiles="dll;config"  
  8.                 ExcludeFiles="log4net.config">  
Name:項目名字

BaseDirectory:根目錄,deploy文件夾下爲基礎目錄

Assembly :是在生成的類庫中的bin目錄下與咱們項目名稱相同的.dll文件的名字

Type:是主類的全稱,在這裏是:MyServer.MyApplication,必定要包括命名空間

EnableAutoRestart:是不是自動啓動,表示當咱們替換服務器文件時候,不用中止服務器,替換後photon會自動加載文件

WatchFiles和ExcludeFiles

這段代碼放在<Default><Applications>放這裏</Applications></Default>節點下面

完成後保存,運行托盤程序deploy\bin_Win64\PhotonControl.exe,

運行它,若是托盤圖標沒有變灰,說明服務器運行成功。



下面開始編寫客戶端代碼,首先從官網下載Unity SDK

打開Unity3d編輯器,首先把Photon-Unity3D_v3-0-1-14_SDK\libs\Release\Photon3Unity3D.dll導入到Unity中,新建腳本TestConnection.cs,腳本代碼以下:

[csharp]  view plain copy print ?
  1. using UnityEngine;  
  2. using System.Collections;  
  3.   
  4. using ExitGames.Client.Photon;  
  5.   
  6. public class TestConnection : MonoBehaviour,IPhotonPeerListener {  
  7.     public PhotonPeer peer;  
  8.     // Use this for initialization  
  9.     void Start () {  
  10.         peer = new PhotonPeer(this,ConnectionProtocol.Udp);  
  11.     }  
  12.       
  13.     // Update is called once per frame  
  14.     void Update () {  
  15.         peer.Service();  
  16.     }  
  17.       
  18.     void OnGUI(){  
  19.         if(GUI.Button(new Rect(Screen.width/2,Screen.height/2,200,100),"Connect")){  
  20.             peer.Connect("localhost:5055","MyServer");  
  21.         }  
  22.     }  
  23.  
  24.     #region IPhotonPeerListener implementation  
  25.     public void DebugReturn (DebugLevel level, string message)  
  26.     {  
  27.           
  28.     }  
  29.   
  30.     public void OnOperationResponse (OperationResponse operationResponse)  
  31.     {  
  32.           
  33.     }  
  34.   
  35.     public void OnStatusChanged (StatusCode statusCode)  
  36.     {  
  37.         switch(statusCode){  
  38.         case StatusCode.Connect:  
  39.             Debug.Log("Connect Success!");  
  40.             break;  
  41.         case StatusCode.Disconnect:  
  42.             Debug.Log("Disconnect!");  
  43.             break;  
  44.         }  
  45.     }  
  46.   
  47.     public void OnEvent (EventData eventData)  
  48.     {  
  49.           
  50.     }  
  51.     #endregion  
  52. }  

把腳本綁定到場景中物體上,運行後能夠看到一個按鈕,點擊鏈接,若是鏈接成功會打印"Connect Success!".

Unity客戶端例子到這裏下載

相關文章
相關標籤/搜索