游戏架构学习篇
目的:
了解游戏架构中经典架构方案,并应用到自己的开发中
资源:
传统游戏架构方案:P2P(Peer to perr 对等网络) 和 C/S(client-server)
C/S:客户端A传送数据到服务器中心,数据中心做相关处理后,同步给客户端B,实现一次通信,或数据同步。
P2P: 相对C/S简单,直接玩家A与玩家B之间的客户端交互来实现通信,或数据同步;
P2P优势:延时性小,不需要服务器
延时性小:
延时就是指信息在从发出到接收整个过程中所需要的时间。
C/S是从一个客户端传输到服务器端,而后再从服务器端传到另一个客户端。但P2P架构则是让信息直接在两个客户端之间交互。P2P架构相对C/S架构约省去了一般传递时间。
不需要服务器:
因P2P架构是让信息在客户端之间交互,因此就没有必要服务器端。对游戏服务商是一件好事,不需要花大量的金钱和精力在游戏运行服务器中央上。
P2P缺点:
游戏的可扩展性比较差:
当游戏的客户端相对较少的情况下,优先考虑P2P架构,因为它延时性小且不需要游戏运行服务器中央。但当游戏客户端比较多(上百或上千个客户端)时,P2P就不适用了。
因为如果客户端有1000个的话,每个客户端接受其他999个客户端发送的数据,且同步数据时需要向其他999个客户端发送数据。还要考虑网络环境:这样每个客户端都需要承受
999*999个连接。如果运行的环境是学校的子网络中,这将使网络不堪负重而瘫痪。如果换在全球互联网上,则根本不会出现问题。
争议性解决机制不健全:
A玩家和B玩家都靠近一瓶体力恢复药水,同事拾起药水,A玩家先发起拾起命令,而B玩家也在相差几毫秒后发起拾起命令,B玩家确两手空空。在遇到这种情况下,两个玩家相争不下。所以,P2P缺点:没有一个中心逻辑策略。
处理此类问题,最好还是采用C/S架构,让游戏运行服务中央来维护游戏运行中的状态,充当逻辑决策争议的逻辑决策者。
C/S优势:
从P2P的缺点中,我们知道p2p在客户端较多时,在一个校园子网中会造成网络不堪负重而瘫痪的情况,而C/S架构放在这样的环境中就不会出现这种情况,因为每个客户端都只需要向服务器发送自己的请求,和接受服务器response而来的数据。不会出现可扩展性差的情况。
C/S缺点:
需要游戏运行服务器,游戏代理商或运行商需要出资购买而且还需要维护这个服务器中央。
总结:
经典的游戏架构P2P和C/S各有优缺吧。至于怎么抉择,要看我们自己的需要。
参考资料:
《ActionScript大型网页游戏开发》
基础才是编程人员应该深入研究的问题,比如:
1)List/Set/Map内部组成原理|区别
2)mysql索引存储结构&如何调优/b-tree特点、计算复杂度及影响复杂度的因素。。。
3)JVM运行组成与原理及调优
4)Java类加载器运行原理
5)Java中GC过程原理|使用的回收算法原理
6)Redis中hash一致性实现及与hash其他区别
7)Java多线程、线程池开发、管理Lock与Synchroined区别
8)Spring IOC/AOP 原理;加载过程的。。。
【+加关注】。