游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5315|回复: 1

ProudNet游戏服务器引擎介绍

[复制链接]

29

主题

38

帖子

384

积分

中级会员

Rank: 3Rank: 3

积分
384
QQ
发表于 2016-5-12 10:18:53 | 显示全部楼层 |阅读模式
ProudNet是一个网络游戏开发所需的服务器及引擎。它处理通信量大和同时登录用户数多的问题,是在不同网络环境下能够保持其特有稳定性的高性能引擎。
游戏服务器的开发是一项具有挑战性的任务。即使在发布后,很多公司在维持稳定性等方面遇到不少困难。ProudNet已在大型多人在线角色扮演游戏MMORPG,第一人称射击游戏FPS等不同类型的网络游戏和80多的游戏开发项目中有效解决此类问题。且ProudNet的易用性也可为经验不丰富的开发人员减少负担, 为开发具有稳定性的网络游戏提供帮助。
高性能服务器
ProudNet的服务器处理通信量大和同时登录用户数多的问题。
利用多核CPU
目前开发游戏服务器采用多核编程技术已变成理所当然,但在过去有很多服务器都没有能够有效地利用多核。因此提出的一个方法是运行与服务器CPU相同个数的线程。但在单线程中处理同时登录用户数多等问题时,例如MMORPG游戏世界挤满玩家等,这个方法还是有局限的。
ProudNet在单线程、引擎内部和用户定义函数中都利用了双核,并实现回调。此外,ProudNet还支持单核模式。
最大限度减少内核模式和用户模式的切换次数
服务器操作系统,为处理TCP和UDP数据包,时常会需要切换内核模式和用户模式。切换过程不仅消耗很大处理时间,还降低服务器的性能。
ProudNet在内部设计中极大地减少了模式切换次数,增加了可同时登录用户数。
两种线程池模式
游戏服务器的逻辑循环时间太长可能会引起客户端连接问题。这可能是服务器开发人员的失误,但也很可能是游戏逻辑设计本身问题。
ProudNet提供了两种不同的线程池,分别处理用户例行程序(user routine)和网络输入输出例行程序(network I/O routine)。
自由定义线程池关系
在一个分布式服务器环境中,很难把服务器线程池和服务器实例设计成一对多的关系。但这又很大影响服务器有效性能。如果没有这一关系,可能会导致内核时间过高,降低服务器性能。
ProudNet让开发者根据不同的情况自由的定义两者的关系,在维持最小化内核时间的同时,开发出最高性能的游戏服务器。
自适应网络协议
ProudNet的自适应网络协议(adaptive network protocol)对处理不同的网络条件和用例持有耐性。

尽管ProudNet使用的是低层网络通信协议,但是它采用降低IP数据包包头使用量的技术提高网络流量的处理效率。
稳定的不可靠信息传输协议
众所周知,角色移动或机枪乱射等传输频繁,同步化速度较为重要的数据皆用UDP不可靠传输,其他信息使用TCP可靠传输,这种技术通常都很适用于动作游戏。
UDP协议在套接字应用程序编程接口(socket API)虽使用方便,但也还是比TCP协议不稳定。
换句话说,UDP协议本身在不同网络环境中稳定性较弱且容易受到黑客攻击。但是由于其速度和简单性,UDP协议的不可靠传输在动作游戏中具有独特的魅力和优势。
  • 不可靠传输 : 不保证信息或数据包的抵达顺序或因网络环境的丢失。但传输速度非常快。
  • 可靠传输 : 保证数据传输依然完好,数据包发送顺序与抵达顺序相同。
ProudNet的不可靠信息传输协议比简单的UDP提供更高的稳定性。
  • 1)  为防止DDoS攻击等黑客入侵,许多玩家使用有保安功能的安全设备或软件。然而,这种保安功能在检测中可能将UDP通信中发生的ICMP数据包视为一种威胁,并引起恶意软件的误报,甚至还可能导致发生连接服务器失败的情况。ProudNet的不可靠信息传输协议有内置的机制来防止这种情况的发生。
  • 2)  在中国以及其他一些国家,UDP传输通信量大的时候,有时会使互联网本身变得不稳定。为解决这种情况,ProudNet内置了通信控制功能和数据包头压缩以及其他一些技术。
  • 3)  在中国以及其他一些国家,UDP协议在通过网关的时候,有时会在途中发生复制,损坏等现象。ProudNet也内置了防止此类现象的功能。
引擎阶层的服务质量(QoS)技术
开发通信量过多的游戏 因通信量过多会引起Latency或者连接障碍。 比如MMORPG的魔法师的角色就需要快速的对应, 所以如果通信量过多的话用户当然会有很大的不满。
ProudNet内置服务质量 QoS 或网络节流技术来解决这个问题。
服务质量技术还可以在游戏时的语音聊天中有效地使用。
信息加密技术
对网络游戏而言,黑客攻击是一种常见的威胁,因此对信息加密, 保持数据安全很重要。例如传输顾客账户信息等处理敏感数据时需密钥交换和信息加密过程。
ProudNet内置了这些技术和功能。
  • 对客户端与服务器之间的传输信息和点对点的传输信息的强大加密功能。
  • 数据包嗅探、复制和操作的预防功能。

密钥交换过程只在ProudNet内部进行,开发人员可以直接使用已加密的消息。
强大的P2P通信功能
P2P通信用于语音聊天和同步游戏角色的移动数据,它能降低服务器的负载,提高响应时间。然而,对于游戏服务器开发人员而言,建立一个稳定的P2P连接却并非是一项容易的工作。即使克服了各种不同网络环境的问题,P2P通信的连接、断开连接和服务器中继通信等依然是一个难题。
  • ProudNet提供客户端与服务器之间的通信和P2P通信的应用程序编程接口以便使用。
在处理各种P2P连接,如连接等待,或者检查不稳定网络断开与否时,不再需要编写复杂的程序源代码。
  • ProudNet配备了打洞(hole punching)技术和中继(relay)技术,且服务器中继有关操作只发生在ProudNet内部,开发人员不必另外再实现打洞和中继。
  • ProudNet的P2P通信连接没有等待时间。
因此在游戏大厅可以立刻进行游戏,而且MMORPG游戏中也可以混用客户端与服务器之间的通信和点对点通信,实现世界同步化。这也将一部分客户端作为路由器使用,节省服务器的组播流量。
流量控制功能
P2P通信在良好的宽带互联网环境中是很流畅的,但在中国、东南亚等使用ADSL2+或更低速度回线的地区,因P2P本身的通信速度低,如果处理不好,通信中可能会出现很多问题。
ProudNet 为了防止以上的问题内置了一定的传数量的中继服务器技能和节省packet功能。
支持P2P通信的可靠、不可靠传输信息
一个路由器连接的不同电脑之间,使用UDP会比TCP更容易实现通信。但是,UDP是不可靠通信协议—即用户使用P2P通信聊天时中间可能会丢失一些信息。然而,开发一个面向连接的,既可靠又保障数据传输顺序的协议,如TCP,是一个繁琐的工作,尤其是P2P之间存在大量的流量时,为了预防愚笨窗口综合症的发生,需要复杂的算法。
ProudNet为了提供值得信赖的P2P通信,内置了与TCP方式相似的自动重传请求(ARQ)机制。
打洞连接维持率高
在一个稳定的P2P通信中,打洞只是一个开始。更重要的是,在多数P2P连接和大量的通信量环境中,维持长时间的通信连接。这在网吧以及数百台电脑仅用一个路由器连接的情况下,就会因大量的P2P流量填满路由器的端口映射条目列表,导致网络掉线。 ProudNet提供最好的技术来防止这种情况的发生。
  • ProudNet使用端口复用和just-in-time打洞技术。一些路由器,没有处理好端口映射条目,可能会引发网络连接障碍。
  • ProudNet配备了一个可以避免端口映射条目重复的技术。
  • 基于端口预测的对称型NAT的打洞穿越方法虽是众所周知的,但使用时机不当,可能会导致过多的端口映射,成为网络连接断开的原因。
打洞与中继的自动转换功能
P2P连接时,即使已经打洞,它随时都有可能会因为使用的通信量和路由器的情况不同而消失。处理不当,就会引起游戏中角色突然无法移动等问题。
ProudNet事先检测P2P连接状态,灵活地交换着使用打洞和中继,即使发生打洞消失,在ProudNet开来,也只是短暂的延迟。因此,开发人员在使用ProudNet时,就可以不用考虑P2P连接的稳定性,开发游戏程序。
数据库缓存系统
数据库集成在游戏服务器的开发中是一个难题。与游戏服务器的处理时间相比,需要相对更长时间的数据库访问过程使服务器程序进一步复杂化,且数据库访问频率又很高。(玩家升级,获得道具等时。)
ProudNet提供数据库缓存来提高存取速度。
  • 支持在自定义数据库模式和约束中安全使用缓存。
  • 支持共享式访问数据库。这也保障在免费增值游戏中购买现金项目时,能安全访问数据库中的重要数据。
其他功能
ProudNet还为游戏服务器开发人员提供其他有用的辅助功能。
  • 收集服务器和客户端出现的各种错误操作以帮助调试。
  • 超级节点(Super-peer)(主机)选择机制能在第一人称射击类游戏中有效使用。
  • 在动作游戏中准确判断胜负时可以有效使用主机同步功能。
开发便利性
使用ProudNet的客户端与服务器之间的通信编程示例(类似代码和异常处理代码省略)



ProudNet提供远程方法调用(RMI)功能。这个功能会代替开发人员自动创建网络通信程序,而且相比较下,也不会有性能低下等问题。
考虑到网络游戏通常有成百上千的不同消息类型,这个功能显著减少开发时间并防止因不易发现的小失误造成困扰的情况发生。
ProudNet还提供了客户端和服务器之间的通信模块、分布式服务器通信模块和数据库缓存模块,以便游戏服务器开发人员容易地设置并安装一个自定义服务器。



ProudNet使用手册包含500页的说明。我们会定期更新其内容,以为更好地帮助开发人员使用和理解ProudNet。
分布式服务器处理模块
仅一个服务器不够容纳并处理大量同时登陆用户。因此,分布式服务器系统的建设是必须的。但是配置一个分布式服务器并不容易,尤其在分布式服务器与客户端维持连接的开发过程中容易出现失误。
ProudNet提供服务器与服务器之间的通信模块。类似于游戏服务器,这个模块也利用多核,通过在引擎内部使用多线程,处理用户例行回调。
PC / 手机 / 浏览器支持
ProudNet支持真正意义上的多人游戏平台。使用ProudNet制作的游戏服务器支持PC、智能手机、浏览器等不同客户端的玩家之间同时进行多人游戏。
在使用ProudNet的基础上,再用C++、C#、java和ActionScript等开发出来的游戏,均可在基于Unity的浏览器和智能手机,基于flash的浏览器以及Windows系统电脑上进行多人游戏。
不久,即将推出支持原生iOS和安卓的官方版还计划提供支持Marmalade等其他系统的版本。
已被验证的性能与稳定性
在游戏服务器引擎的自制或采用外部引擎时需慎重。 开发人员的专业知识和经验之多少会很大程度的影响引擎的性能。 ProudNet已积累15年之久的网络游戏开发知识和经验,以下是一些其验证事例。
已在100多个网络游戏开发项目中使用了ProudNet。
服务器正在不同的国家和大陆运行中。 (韩国、中国、日本、美国、新加坡、马来西亚、德国、荷兰 等等。)
支持不同类型的游戏 -大型多人在线角色扮演游戏、第一人称射击游戏、动作游戏、竞速游戏 等等。
代表游戏项目: 洛奇英雄传、 S4超特攻联盟、 仙境传说2、 魔界村 online 等。
应用项目展示
可申请免费试用版3个月 www.ProudNet.com/zh-hans/


29

主题

38

帖子

384

积分

中级会员

Rank: 3Rank: 3

积分
384
QQ
 楼主| 发表于 2016-5-13 14:41:39 | 显示全部楼层
自己顶~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-5-20 08:53

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表