PhotonServer游戏服务器端(一)

1,先去PhotonServer官网下载 PhotonServer https://www.photonengine.com/en/sdks

2,下载后解压在一个文件夹 找到 该文件夹内的deploy 中的bin_Win64  找到PhotonControl.exe  打开后右下角会出现一个小圆圈,这时候就已经打开。

3,新建一个类库文件 配置一下VS环境 Bin目录设置在解压文件内的deploy 新建MyGameServer,点击保存 然后添加引用 找到解压文件中的lib文件夹找到 EXitGamesLibs.dll,Photon.SocketServer.dll ,PhotoHostRunTimeInterfaces.dll ,log4net.dll,ExitGamees.Logging.Log4Net.dll然后添加,右键工程添加新类PhotonServer类命名空间也是PhotonServer 谁知为public  让这个PhotonServer类继承至ApplicationBase  代码如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Photon.SocketServer;
using ExitGames.Logging;

namespace MyGameServer
{
    //所有的Server端 主类都要集成自Applicationbase 
    //我们使用peerbase,表示和一个客户的的连接
    public class MyGameServer : ApplicationBase
    {
        //当一个客户端连接
        protected override PeerBase CreatePeer(InitRequest initRequest)
        {
            return new ClientPeer(initRequest);
        }
        //初始化
        protected override void Setup() 
        {
           
        }
        //Server端关闭的时候 做一些关闭的处理
        protected override void TearDown()
        {
            
        }
    }
}
接着新建类ClientPeer继承自:Photon.SocketServer.ClientPeer  代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Photon.SocketServer;
using PhotonHostRuntimeInterfaces;

namespace MyGameServer
{
    public class ClientPeer : Photon.SocketServer.ClientPeer
    {
        public ClientPeer(InitRequest initRequest) : base(initRequest)
        {
        }
        //断开连接 清理工作
        protected override void OnDisconnect(DisconnectReason reasonCode, string reasonDetail)
        {
        }
        //处理客户端发起请求
        protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters)
        {
        }
    }
}


4,配置PhotonServer.Config  找到deploy下的bin_win64  找到PhotonServer.Config   打开后复制 MMoDemo 保存 格式为UTF-8 无标签  代码如下:





	
    
	

		
		
		
			
			
			
			
			
		
		
				
		
			
			
			
			
			
			
			
			
			
			
		
		
		
		
		  
		  
		  
		  
		  
		

		
		
		
			
			
			
			
			
			
		

		
		
		

		
		
				
			
			
			
			
			
			
			
				
		
		
	
	
	
	
	
		
		
		
		
			
			
		
    
		
		
		 
		
			
			
		

		
		
		  
		  
		  
		  
		  
		

		
		
			
			
		

		
		
		
				

		
		
		
		
			 
			
			

			
			
				

		
	
  
  

    
    
    
      
      
    

    
    
    
    
      
      
    


    
    
    


    
    
    

      
      
      
    
  
 

5,配置log4net   因为我们在上一步导入的有 log4net.dll, ExitGamees.Logging.Log4Net.dll引用 ,然后就找到Photon-OnPremise-Server-SDK_v4-0-29-11263\src-server\Mmo\Photon.MmoDemo.Server 下的log4net.config 文件复制在工程中选择 始终复制,打开后做个简单的修改 只是改个名字代码如下:




  
    
    
    
    
    
      
    
  

  
    
      
    
    
      
      
    
  

  
  
    
    
    
  

  
    
  


然后用代码实现该类 我标记有注释 代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Photon.SocketServer;
using ExitGames.Logging;
using ExitGames.Logging.Log4Net;
using System.IO;
using log4net.Config;

namespace MyGameServer
{
        //所有的Server端 主类都要集成自Applicationbase 
    //我们使用peerbase,表示和一个客户的的连接
    public class MyGameServer : ApplicationBase
    {
        // log4net日志 先声明一个log对象
        private static readonly ILogger log = LogManager.GetCurrentClassLogger();




        //当一个客户端连接
        protected override PeerBase CreatePeer(InitRequest initRequest)
        {
            log.Info("一个客户的连接过来了。。。");
            return new ClientPeer(initRequest);
        }
        //初始化
        protected override void Setup() 
        {


            //设置log输出的目录位置 ApplicationRootPath 可以哟来那个来获取PhotonServer 应用的根目录 就是 deploy
            log4net.GlobalContext.Properties["Photon:ApplicationLogPath"] = Path.Combine(Path.Combine(this.ApplicationRootPath, "bin_Win64"),"log");




            //日志的初始化 连接相对路径和文件名就是配置文件
            FileInfo configFileInfo = new FileInfo(Path.Combine(this.BinaryPath, "log4net.config"));
            if (configFileInfo.Exists)
            {
                //设置一下 日志的工厂
                LogManager.SetLoggerFactory(Log4NetLoggerFactory.Instance); //让photon知道我们使用的那个日志插件
                //利用Config进行读取
                XmlConfigurator.ConfigureAndWatch(configFileInfo); //让Log4Net读取配置文件
            }
            log.Info("Setup Completed!"+"哈哈哈哈我成功啦");//初始化完成   再次启动服务器 发现 log目录下有个txt文件


        }
        //Server端关闭的时候 做一些关闭的处理
        protected override void TearDown()
        {
            log.Info("服务器应用关闭了。。");
        }
    }
}



最后的输出目录中的 三个txt文件最有用配置出错看 PhotonCLR 启动出现异常看Photon-MyGameInstance ,如果逻辑出错了就看刚才配置的MyGame.Server

你可能感兴趣的:(C#)