最新版本photon server 价格如何安装

后使用快捷导航没有帐号?
只需一步,快速开始
&加载中...
查看: 10057|回复: 1
unity3d Photon常见问题FAQ
TA的其他好贴
马上注册,加入CGJOY,让你轻松玩转CGJOY。
才可以下载或查看,没有帐号?
Photon引擎是什么?Photon是集产品、服务于一体的网络引擎,也是最快、最灵活、最容易上手的网络引擎,可在PC、Mac、浏览器、移动终端、控制台等多个平台上建立可扩展的MMOG、FPS及任何多人在线网络游戏和应用。
Photon引擎性能怎么样?理论上一个Photon引擎的服务器能承载多少玩家同时在线?Photon引擎是一款高效的网络引擎,内核采用c/c++语言编写;网络底层采用了Windows平台上最高效的完成端口(IOCP)异步网络模型;另外,Photon优化了网络层的协议,采用更高效的可靠UDP传输协议,同时精简了传输数据包的尺寸,优化了封包算法。
可以支持上万人,如World Golf Tour公司利用Photon开发的&世界高尔夫巡回赛&这款游戏,目前有2百万活跃用户,可以支持3万以上的玩家同时在线。
下面是一组测试数据:
- Quad Core XEON
- Windows Server 2008 R2 Web (64bit)
- 1,000 CCU(FPS类游戏可处理每秒每个玩家10次的更新)
- 单台服务器可承载5,000 - 10,000 CCU
- 分布式逻辑运算会承载更多
Photon引擎是一定要部署在windows平台上的吗?Photon应用主要基于.net环境,而不限于具体的操作系统平台,但考虑到目前对于linux下.net虚拟机支持不是太完善,因此建议最好使用windows平台作为生产环境。
Photon引擎是否提供对数据库的支持?Photon引擎本身是不提供对数据库操作接口的,开发者可以自行选择使用目前的诸如:Oracle、MS Sql Server、MySql、DB2等主流的关系型数据库以及NHibernate的ORM技术甚至NoSQL技术等。
Photon引擎和Unity自带的网络功能比,优点有那些呢?Photon不能简单的理解为网络库,除了性能强健的服务器端引擎外Photon支持大部分客户端平台,可开发各种平台上的应用,其中就包含了Unity平台。
Photon引擎底层网络用什么模型?Photon引擎的网络核心主要基于Windows平台下最高效的完成端口(IOCP)异步网络模型。
Photon引擎的服务器能用C++、VB或者其他开发语言吗?目前Photon提供的API是C#语言,我们建议使用C#作为应用层面的开发语言;如果使用C++、VB的话也可以,但需要自行做很多额外的工作。
Phonton引擎提供基于非托管代码的接口么?Photon应用主要由Photon内核加载运行,且基于.NET运行环境,因此不提供非托管代码接口。
Photon引擎需要自己写网络同步算法吗?对于同一个网络连接上Photon是能够保证其顺序,无需同步;但在业务层面的同步还需要开发者自行实现。
Photon引擎详细收费方式?Photon证书分为个人版与企业版,目前价格如下表所示:
个人版:& & 无人数限制,价格为4800元
企业版:& & 500人同时在线 8900元
1000人同时在线 12500元
无人数限制 19600元
备注:个人版、企业版100人同时在线的证书永久免费
Photon个人版证书与企业版证书的区别?使用个人版证书的开发者会有两方面的限制 :
1、被许可人每月收入低于6万人民币
2、被许可人的产品突出显示Photon的LOGO
运行PhotonControl的app 会出现几秒钟内自动停止,这是什么原因?可能的原因有3种:
1、证书校验没有通过:证书过期或者没有连上浮动证书服务器
2、端口被占用:如酷狗占了848端口或者9090端口被占用;
3、某个应用的程序有问题,也会导致Photon引擎启动不了,一般需要检查应用入口类的构造方法以及setup等方法。
如何在Photon3.0环境下调试?在Photon3.0下调试比较特殊,需要2.0的CLR环境,一般我们通过预先修改PhotonServer.config的配置项来设置。
下面是操作步骤:
1. 打开对应平台目录下PhotonServer.config文件,找到Runtime小节,在最后增加CLRVersion=&v2.0&一串保存即可.
Assembly=&PhotonHostRuntime, Culture=neutral&
Type=&PhotonHostRuntime.PhotonDomainManager&
UnhandledExceptionPolicy=&Ignore& CLRVersion=&v2.0&&
2. 用run as application方式启动Photon服务。
3. 在要调试的应用源程序中设置断点,在VS环境中点调试按钮选附加到进程菜单项,在进程列表中选中PhotonSocketServer.exe点附加按钮。
为什么使用迅雷等下载工具获取证书不能正常使用?由于证书生成服务器做了安全校验的缘故,如果使用迅雷等下载工具下载证书文件,则文件内容不正确,从而导致无法正常使用;因此,建议使用另存为方式获取证书文件。
Photon支持哪些客户端平台?目前Photon主要支持:Unity、iOS、Flash、Windows、.NET、Android、Silverlight等。
Photon和Unity之间有什么联系?Photon包含了Unity还是Unity包含了Photon?Photon和Unity是两个较为独立的产品,所专注的技术领域不同,Photon主要提供服务器端引擎功能的支持,同时对各个客户端平台(包括iOS、Android、WinForm、Cocos2D、Flash、SilverLight以及Unity等)提供相关支持,具有执行效率高、开发效率高、开发部署简单以及配置灵活等特点;而Unity则是客户端图形引擎领域的产品。目前Photon和Unity是一种战略合作关系,前者专注于网络和服务器功能,后者专注于客户端图形方面。Photon客户端SDK提供了对Unity平台以及其他平台的支持,而不是Unity的组成部分。同时Photon可以和任意主流客户端平台进行有效结合。
在中国使用Photon引擎是否需要和九城合作?有哪些合作方式?目前 Photon在中国主要由第九城市独家代理,通过从第九城市购买使用证书可以获取相对优惠的价格便利;同时可以在第九城市提供的各个线上渠道获取很直接的免费的技术支持。使用Photon引擎是否还可以提供服务器的业务开发支持?Photon是针对大部分类型的游戏提供的服务器端引擎,封装优化了底层网络封包、传输;提供负载均衡机制;提供了简单易用的使用接口同时提供了诸如房间、大厅以及MMO类型游戏的简单示例demo。同时Photon提供了对各个客户端平台的支持。当然Photon引擎本身专注于底层,而不涉及到上层业务的逻辑,有关游戏逻辑需要开发者根据具体的策划需求自行实现。
Photon目前支持的通信模式是可靠UDP和TCP,对Http的支持如何?有没有采用http的游戏实例?比如web game类的实例?目前Photon主要支持可靠UDP和TCP通信方式,关于http的支持在下一个版本有支持。
Photon的高版本在功能和使用层面是否能够兼容低版本?Photon高版本功能以及在使用方面是向低版本兼容的,但是有部分功能需要稍作调整。
Photon的License是否能够在不同的版本之间通用?比如我购买的是3.0版的License,我是否可以使用2.6版的Photon SDK?Photon证书版本是和对应Photon主版本相对应的:2.0的证书对应所有2.x系列版本的Photon;3.0版本的证书对应所有3.x系列版本的Photon。原文链接:
如何让别人关注你?
本楼回复(<span id="dp_count_)
如何让别人关注你?
Powered by8699人阅读
Photon Server引擎学习
什么是Photon Server呢?
&Photon Server是一款实时的Socket服务器和开发框架,快速、使用方便、容易扩展,服务端架构在Windows系统平台上,采用C#语言编写,Photon
Server发布包括两个部分,Client SDK Release和Server SDK Update,Server SDK的版本是v2.4.5,而Client SDK的版本是v6.2.0。客户端SDK提供了多种平台的开发API,包括DotNet,Unity3D,C/C&#43;&#43;等。SDK就是指可以为第三方开发者提供特定的软件包、软件框架、硬件平台、操作系统等创建应用软件开发工具的集合,并且SDK还能简单的为某个程序设计语言提供应用程序接口API的一些文件。
如何使用Photon Server呢?
首先在/en/OnPremise/Download中下载服务器端SDK,需要登录的,就先注册一个账号吧。
下载后直接解压有四个文件
deploy:主要存放photon的服务器控制程序和服务端Demo
doc:顾名思义,文档
lib:Photon类库,开发服务端需要引用的
src-server:服务端Demo源代码
第一步:配置服务器端
打开deploy文件夹,看到包含了不同平台编译出的Photon目录,以“bin_”为前缀命名目录,选择你的电脑对应的文件夹打开,看到PhotonControl.exe,运行后,可以在windows右下角看到一个图标,点击图标可以看到photon服务器控制菜单;
打开visual stadio,新建项目,选择c# 类库,应用程序名字叫做ChatServer.
完成后,把我们的Class1.cs,改名为ChatServer.cs,作为服务器端主类.然后在当前项目添加引用,链接到刚才提到的lib文件夹目录下,添加以下引用:
ExitGamesLibs.dll,Photon.SocketServer.dll,PhotonHostRuntimeInterfaces.dll三个文件
然后新建一个类:ChatPeer.cs,写法如下:
& & class ChatPeer : PeerBase
& & { & //这个用来跟客户端进行通信
& & & & public ChatPeer(IRpcProtocol protocol, IPhotonPeer peer)
& & & & & & : base(protocol, peer)
& & & & protected override void OnDisconnect(PhotonHostRuntimeInterfaces.DisconnectReason reasonCode, string reasonDetail)
& & & & & & throw new NotImplementedException();
& & & & //当客户端发起请求的时候调用
& & & & protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters)
& & & & ///这个方法用来给客户端响应
& & & & & & Dictionary&byte, object& dict = new Dictionary&byte, object&();
& & & & & & dict.Add(1,&hm&);
& & & &OperationResponse response = new OperationResponse(1,dict);
& & & &SendOperationResponse(response,sendParameters);
ChatServer.cs的写法:
namespace ChatServer
{ & //继承自ApplicationBase的类,是server的入口程序,也是启动程序
& & class ChatServer : ApplicationBase
& & { & //当一个客户端连接到这个server的时候调用
& & & & protected override PeerBase CreatePeer(InitRequest initRequest)
& & & & & & return new ChatPeer(initRequest.Protocol, initRequest.PhotonPeer);
& & & & //当这个server端启动时调用
& & & & protected override void Setup()
& & & & //当这个server端停止时调用
& & & & protected override void TearDown()
完成后,在解决方案资源管理器中选中当前项目,打开属性,选择生成选项卡,把输出路径改成bin\,然后就生成类库
然后文本编辑器打开deploy\bin_Win64\PhotonServer.config配置文件(我的是win7 64位机器,就选择这个),添加以下配置:
Name:项目名字
BaseDirectory:根目录,deploy文件夹下为基础目录
Assembly :是在生成的类库中的bin目录下与我们项目名称相同的.dll文件的名字
Type:是主类的全称,在这里是:ChatServer.ChatServer,一定要包括命名空间
EnableAutoRestart:是否是自动启动,表示当我们替换服务器文件时候,不用停止服务器,替换后photon会自动加载文件
WatchFiles和ExcludeFiles
这段代码放在&Default&&Applications&放这里&/Applications&&/Default&节点下面
完成后保存,运行托盘程序deploy\bin_Win64\PhotonControl.exe,
运行它,如果托盘图标没有变灰,说明服务器运行成功。
下面开始编写客户端代码,首先从官网下载/en/OnPremise/Download
把Photon-Unity3D_v3-0-1-14_SDK\libs\Release\Photon3DotNet导入到Vs中,新建
Program.cs
& & & &//得到服务器的响应
& & & & public void OnOperationResponse(OperationResponse operationResponse)
& & & & & & Dictionary&byte, object& dict = operationResponse.P
& & & & & & object v =
& & & & & & dict.TryGetValue(1,out v);
& & & & & & Console.WriteLine(&Get value from server & &#43; v.ToString());
& & & & public void OnStatusChanged(StatusCode statusCode)
& & & & & & Console.WriteLine(statusCode);
& & & & & & switch(statusCode){
& & & & & & & & case StatusCode.Connect:
& & & & & & & & & & isConnected =
& & & & & & & & & & Console.WriteLine(&Connecting.....&);
& & & & & & & & & &
& & & & & & }
& & class Program
& & & & static void Main(string[] args)
& & & & & & ChatServerListener listener = new ChatServerListener();
& & & & & & PhotonPeer peer = new PhotonPeer(listener,ConnectionProtocol.Tcp);
& & & & & & peer.Connect(&127.0.0.1:4530&, &ChatServer&);//连接服务器
& & & & & & Console.WriteLine(&Connecting.....&#43;&#43;&);
& & & & & & while(listener.isConnected == false)
& & & & & & {
& & & & & & & & peer.Service();
& & & & & & }
& & & & & & Dictionary&byte, object& dict = new Dictionary&byte, object&();
& & & & & & dict.Add(1,&username&);
& & & & & & dict.Add(2,&password&);
& & & & & & peer.OpCustom(1,dict,true);
& & & & & & while(true)
& & & & & & {
& & & & & & & & peer.Service();
& & & & & & }
然后运行查看控制台输出,若全部输出则连接成功(其中重要的一点是你的电脑需要配置好IIS服务,打得开127.0.0.1哦)
另注:使用Unity客户端连接也大同小异了!
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:14032次
排名:千里之外
(2)(4)(3)(1)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'Unity连Photon服务器入门详解
时间: 21:12:28
&&&& 阅读:11189
&&&& 评论:
&&&& 收藏:0
标签:Photon是目前比较好用的游戏服务器。目前网上对于Photon的服务器讲解比较少,最近也对Photon做了初步的了解,做一个极其详细的入门。
首先就是得下载Photon咯
/en/OnPremise/Download 这个是服务器下载。(上传图片的功能崩溃了。。。)
这个服务器是有权限的,免费的有100人上限和30天免费,调试用的话,100人的还是很合算的。
/en/OnPremise/Dashboard& (得注册账号哦。。。)
这里有个比较好的教程 http://download.csdn.net/download/a36547 是免费的,下载就好(CSDN的)
如果你能看懂教程就可以右上角了。
现在开始正题。在服务器的deploy中是配置所有服务器的,会看到有几个启动版本bin_Win32,bin_Win32_xp,根据自己的系统环境来选择。
我系统是win10选的就是bin_Win64 里面有个PhotonControl.exe就是运行服务器。双击启动它。
在你的系统右下角就会发现一个小圆圈,这个就是服务器啦!
右键它你会发现有个Photon instance:下面有个Default就是我们要用的服务器啦,上面的教程中这里是不同的,不过没差多少。
对了,下载下来的权限就放在这个bin文件夹,我的就是bin_Win64,弄完权限记得重启服务器啊。
下面我们就来写一下服务器代码。一个简单的用户登录
Photon用的C#我们就用VS写,我用的是VS2015
首先我们新建一个C#类库我们叫MyServer,让我们引入3个dll,在Photon的lib中
ExitGamesLibs.dll
Photon.SocketServer.dll
PhotonHostRuntimeInterfaces.dll
新建一个C#类我们叫MyPeer,继承PeerBase,然后重写函数,别忘了using
using Photon.SocketS
using PhotonHostRuntimeI
namespace MyServer
using System.C
public class MyPeer : PeerBase
Hashtable userT
public MyPeer(IRpcProtocol protocol,IPhotonPeer photonPeer) : base(protocol, photonPeer)
userTabel = new Hashtable();
userTabel.Add("123", "1234");
protected override void OnDisconnect(DisconnectReason reasonCode, string reasonDetail)
//失去连线时候要处理的事项,例如释放资源
protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters)
//取得Client端传过来的要求加以处理
switch (operationRequest.OperationCode)
case (byte)OpCodeEnum.Login:
string uname = (string)operationRequest.Parameters[(byte)OpKeyEnum.UserName];
string pwd = (string)operationRequest.Parameters[(byte)OpKeyEnum.PassWord];
if (userTabel.ContainsKey(uname) && userTabel[uname].Equals(pwd))
SendOperationResponse(new OperationResponse((byte)OpCodeEnum.LoginSuccess, null), new SendParameters());
SendOperationResponse(new OperationResponse((byte)OpCodeEnum.LoginFailed, null), new SendParameters());
然后我们再建一个C#类叫MyApplication,我们继承AppLicationBase,然后全部重写就好,每个函数的意思我都给出来了
using Photon.SocketS
namespace MyServer
public class MyApplication : ApplicationBase
protected override PeerBase CreatePeer(InitRequest initRequest)
//建立连线并回传给Photon Server
return new MyPeer(initRequest.Protocol, initRequest.PhotonPeer);
protected override void Setup()
//初始化GameServer
protected override void TearDown()
//关闭GameServer并释放资源
还有个Message是用来标识状态的,同样新建一个C#类叫Message
namespace MyServer.Message
enum OpCodeEnum : byte
Login = 1,
LoginSuccess = 2,
LoginFailed = 3,
Create = 250,
Join = 255,
Leave = 254,
RaiseEvent = 253,
SetProperties = 252,
GetProperties = 251
enum OpKeyEnum : byte
RoomId = 251,
UserName = 252,
PassWord = 253
&然后比较重要的一步,在VS中的解决方案中,我们右键我们的MyServer(C#类库名)打开属性,选择生成,把输出中的输出路径改为bin\
因为Photon就读取bin目录中的dll。
然后我们就生成服务器就好啦~~~
然后把我们的服务器MyServer中除了bin文件夹其他都可以删除,然后放到Photon中的deploy文件夹中,然后我们来配置一下Photon
打开deploy目录中的bin目录,我就打开bin_Win64中的PhotonServer.config,用VS打开即可
建议阅读PhotonServer.config文件中的注释,不会英语的可以用有道。很有帮助
我们用的是Udp的传输方式,Photon只有一个接听端口就是5055,所以防火墙不要封这个端口还有843,是Unity和Flash的一个接通端口所以也不要封,防火墙不会开固定端口的见/zh-cn/windows/open-port-windows-firewall#1TC=windows-7
然后我们要加一段代码在&Applications Default="Lite"&下面
&!-- MyServer Application --&
&Application
Name="MyServer"
BaseDirectory="MyServer"
Assembly="MyServer"
Type="MyServer.MyApplication"
ForceAutoRestart="true"
WatchFiles="config"
ExcludeFiles="log4net.config"&
&/Application&
然后保存即可。
这样我们服务器端就配置完成了,现在让我们打开Default中的Start as application,然后打开Open Logs 见到Server is running。。。表面服务器建立成功了。
然后就是Unity端了
我们新建一个工程,然后引入一个dll直接拖到Unity中就行Photon3Unity3D.dll 同样也在lib中。
让我们建一个C# Script 叫hotonSocket,同样在引用中导入Photon3Unity3D.dll
using UnityE
using ExitGames.Client.P
using System.Collections.G
public class PhotonSocket : MonoBehaviour,IPhotonPeerListener {
#region 单例
private static PhotonSocket _I
public static PhotonSocket Instance
get { return _I }
#endregion
private string //最好在Awake或Start中赋值,Unity 小问题,容易造成值不更改,还有最好写成私有
private string S //同上
private PhotonP
public ClientS
void Awake ()
_Instance = this;
address = "localhost:5055";
Server = "MyServer";
state = ClientState.DisC
peer = new PhotonPeer(this, ConnectionProtocol.Udp);
peer.Connect(address, Server);
public void SendMessage(byte Code,Dictionary&byte,object& param)
peer.OpCustom(Code, param,true);
void Update ()
peer.Service();
public void DebugReturn(DebugLevel level, string message)
public void OnEvent(EventData eventData)
public void OnOperationResponse(OperationResponse operationResponse)
switch(operationResponse.OperationCode)
case (byte)OpCodeEnum.LoginSuccess:
Debug.Log("login Success");
state = ClientState.LoginS
case (byte)OpCodeEnum.LoginFailed:
Debug.Log("login Failed");
state = ClientState.LoginF
public void OnStatusChanged(StatusCode statusCode)
switch(statusCode)
case StatusCode.Connect:
Debug.Log("Connect");
case StatusCode.Disconnect:
Debug.Log("DisConnect");
public enum ClientState : byte
DisConnect,
LoginSuccess,
LoginFailed
enum OpCodeEnum : byte
Login = 1,
LoginSuccess = 2,
LoginFailed = 3,
这样Unity的部分也完事了,就可以来测试啦,出现Connect的Debug就表面链接服务器成功,出现LoginSuccess就OK了。
以上的都是我们在教程中都能找到的部分,然后我们来说说教程中没有的Unity部分的address。
如果想局域网联机的就要找到你的本机内网IP,然后让address = 本机IP:5055 这样就OK了,
如果要想要外网链接呢有两种情况,一种你是用路由器的,也有两种方式,一种开DMZ主机,一种开虚拟服务器。
第一种DMZ主机,不建议用这种方式,他会把你的IP完全暴露在外网,不安全, address = 外网IP:5055
第二种虚拟服务器,这种方式就是开放部分端口,比较高端的路由器可以设置端口对端口,不高端的路由器只能指定端口,address = WAN口IP:5055
没有服务器的呢,下一个花生壳软件,他会给你一个免费的域名,然后挂在你的外网IP上然后 address = 花生壳域名:5055
麻烦问下&base(protocol,&photonpeer)这里,他提示错误,说是PeerBase不包含采用2个参数的构造函数是为什么,求解
&&国之画&&&& &&&&chrome插件
版权所有 京ICP备号-2
迷上了代码!photon中文版教程 pdf
photon中文版教程 繁体的,大家凑活着看
要评论请先&或者&
谢谢楼主 分享
非常感谢楼主的分享
感谢分享,也是用xchange 软件做的pdf啊
感谢分享,正在学这个
太有用了^^
感谢分享!!
很不错,终于敢用photon了
已看完,非常不错
感谢分享,也是用xchange 软件做的pdf啊}

我要回帖

更多关于 photon server 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信