`
isiqi
  • 浏览: 16494891 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

关于JAVA开发WEBGAME的架构

阅读更多

Yahle的blog:

http://www.cnblogs.com/yahle/category/122544.html

在yahle的blog看到其对webgame架构的一个构想,假设这个构想要用java来实现的话,有几个方面想请教下大家


以下是yahle的原文:
=========================================================================================
1 体系结构
1.1 传统的网站的架构
传统的网站一般都是以N层结构一般N为3,就是我们常说的三层架构。
3层架构分为数据层、业务逻辑层、页面显示层。
1.2 WebGame的架构
WebGame可以看作是网站和游戏的结合体,因此它具备了这两类系统的特性。我们不但可以把WebGame看作是一个网站,也可以把它看作是一个网络游戏。
的网站是B/S结构,网络游戏则是C/S结构,WebGame则是这两者的结合我们暂且称之为B/C/S结构。既在用户眼里,它是一个通过浏览器范围的网站。在服务器系统里,它又是一个传统的C/S结构的网络游戏。 http://images.cnblogs.com/cnblogs_com/yahle/Web3go/webgame1.PNG

从上图分析,用户通过浏览器访问服务器的时候,首先是访问网页服务器,如windows平台下的IIS,linux下的Apache。在通过网页服务器,以某种特殊的方式(分布式访问,如.net下的remoting)去访问游戏服务器,通知游戏逻辑服务器执行玩家操作,并从游戏逻辑服务器里获得游戏相关的信息,或者直接通过访问数据库而获得游戏数据。

1.2.1 为什么要将服务器分为游戏服务器和网页服务器
网页服务器的特点是触发执行,及当有用户访问网页的时候,才会执行该网页的程序代码。而我们常见的WebGame(Ogame,Travian)这些游戏实际上是需要24 小时不间断执行的,因此网页服务器的执行方式并不适合与游戏。因此我们另外需要一个应用程序来执行这些24小时不间断要做的事情。这也就是我们需要增加一个游戏服务器的原因。
Webgame现在已经开始需要进入大统一服务器时代,每个游戏区域容纳的玩家数量将从现在的几万人发展到几十万人,因此在新的背景下,webgame如何处理大量用户的请求将成为问题。目前一台asp.net做的weggame服务器每秒能处理500~1000个页面请求,按照每个玩家每隔3~5秒做一次页面操作(页面请求),一台服务器能承受2k~4k的玩家在线,对于一个只有几万人的策略游戏来说,已经是足够了。但对于一个未来将承载几十万人的游戏来说远远不够。

通过分析,玩家在游戏过程中,有80%以上的访问仅仅只是查看玩家在游戏里的状态,实际上真正会对游戏运行状态及数据修改的的页面请求不足20%。因此,我们可以将呈现页面和处理游戏逻辑的功能拆分为2组服务器:页面服务器和逻辑服务器。两者之间可以通过remoting的方式进行数据通讯。将服务器分离后,随着页面服务器的增加,页面访问能力能应该能提升4~6倍。在往上逻辑服务器就会出现访问瓶颈。解决方法可以让页面服务器在读取玩家数据时直接访问数据库或者增加一个对象缓存服务器。页面服务器只有在必要的时候(需要进行逻辑运算时)才访问逻辑服务器,而逻辑服务器在玩家数据发生改变后更新对象缓存服务器和数据库。这样就可以大大降低逻辑服务器的访问次数,使页面访问能力进一步提升,轻松突破万人在线。如果访问量还需要继续扩大,可以用httpd做前台负责相应图片以及css等静态文件。

========================================================================================

1, 这里游戏逻辑服务器,是否有存在的必要?还是说和其他web结构一样,在tomcat实例上面部署一个完整的分层结构?
2, Webserver和 逻辑服务器之间,使用remoting来通信是否会成为高并发时的一个瓶颈?内网之间的服务器,能否通过一个其他的高效方式来连接?
3, 如果要用java开发这个游戏逻辑服务器,可否用spring 搭建一个socket server来实现?有什么好的实现方式?

4,假设采用flash作为客户端,纯粹基于http的话,flash可以通过xmlhttp和webserver的jsp进行通信。不要求纯粹的 http的话,也可以用sokcet和webserver进行通信,不过这样的话不如直接和gameServer进行通信,而且socket相对http 端口问题还是存在。如果该webgame主要框架就是大型聊天室的话,不知道采用哪种方式好点?基于纯http的话,就会产生大量的轮询请求,这种构架是否真能做到所谓万人同时在线呢?

分享到:
评论

相关推荐

    arpg webgame

    在"arpg webgame 代码"的描述中,我们推测这可能是一个关于开发ARPG网页游戏的源代码项目。源代码是程序设计的基础,包含了游戏的各种逻辑和功能实现,包括但不限于角色移动、战斗系统、技能释放、道具系统、用户...

    侠域网页游戏WebGame源代码

    【标题】"侠域网页游戏WebGame源代码" 涉及的知识点主要集中在网页游戏开发、PHP编程语言以及Web应用程序架构上。侠域网页游戏是一款基于Web平台的游戏,其源代码的公开提供了深入理解此类游戏开发过程和技术实现的...

    webgame_模拟城市

    6. **Webgame架构**:Webgame通常采用三层架构,包括表现层(如HTML、CSS、JavaScript)、业务逻辑层(PHP或其他后端语言)和数据访问层(MySQL或其他数据库)。这种架构有利于代码复用、系统维护和性能优化。 7. *...

    一个陈旧的WebGame服务端的优化

    首先,我们需要理解WebGame服务端的架构和工作原理。WebGame通常基于B/S(浏览器/服务器)模式,服务器负责处理玩家请求、游戏逻辑计算、数据存储等,而客户端则负责展示游戏画面和接收用户操作。优化服务端主要涉及...

    java,学习计划.pdf

    - **前1个半月**:重点学习Java基础知识,涵盖11个章节的内容,包括语法、数据类型、控制结构、类与对象、异常处理、文件I/O等。同时,通过观看马士兵的视频教程进行深入理解,确保每个知识点都能熟练应用,并做好...

    创娱(网页游戏)Java面试题.pdf

    Java是一种广泛应用于各种领域的编程语言,特别是在网页游戏开发中,Java因其高效、稳定和跨平台的特性而备受青睐。在创娱(网页游戏)的Java面试中,面试者可能会遇到以下一些关键知识点: 1. **MVC模式**:Model-...

    Java俄罗斯方块游戏详解附源码.rar

    在这款俄罗斯方块游戏中,Java的主要优势体现在其面向对象的特性,使得代码结构清晰,易于维护。 其次,我们要关注的是游戏的核心逻辑。俄罗斯方块的基本规则包括方块的生成、旋转、下落和消除。在Java代码中,这些...

    webgame-cloud

    1. **服务器端开发**:Java的Spring Boot框架常用于构建高性能、高可用性的微服务架构,以支撑大规模在线游戏的需求。通过设计和实现RESTful API,服务器可以处理客户端的请求,如玩家登录、角色创建、游戏状态更新...

    网页版斗地主游戏源码.rar

    网页版斗地主游戏源码是一个基于Java技术开发的在线多人竞技游戏,主要涉及Webgame开发、后端服务器处理和前端用户界面设计等多个方面。在这个项目中,开发者使用了Java编程语言来实现游戏的核心逻辑,这包括牌的发...

    Flash网络游戏开发入门经验共享.doc

    首先,AS3对于有Java开发背景的程序员来说是一个理想的选择,因为它的语法和结构与Java相似,特别适合于游戏开发。AS3提供了更强大和高效的编程模型,使得开发者能够创建复杂的交互体验和游戏逻辑。 1. **显示技术*...

    wwwroot_horse179_幻想_webgame_wwwroot_游戏_源码.rar

    标题中的“wwwroot_horse179_幻想_webgame_wwwroot_游戏_源码.rar”揭示了这个压缩包可能包含的是一个Web游戏的源代码,特别提到了“幻想”这个词,暗示这可能是一款以幻想或者虚构世界为背景的在线游戏。...

    web象棋游戏 开源

    1. **B/S结构**:B/S(Browser/Server)结构,也称为浏览器/服务器模式,是现代互联网应用中常见的一种架构模式。用户通过浏览器访问服务器上的应用程序,无需在本地安装客户端软件,降低了用户使用的门槛。 2. **...

    武林onWeb源码

    通过分析和学习《武林onWeb》的源码,开发者不仅可以了解到网页游戏的整体架构,还能掌握具体的编程技巧和实践经验,对提升自身在网页游戏开发领域的技能大有裨益。同时,这个源码也可以作为教学案例,帮助初学者...

    软件实习简历模板(突出专业技能,教育背景).doc

    - 熟练掌握编程语言如C++和Java,以及J2EE平台,这些都是游戏开发中常用的技术栈。 - 对MMORPG(大型多人在线角色扮演游戏)和WEBgame的设计分析有了解,这表明你具备游戏设计的基础知识。 - 熟悉Windows和Linux...

    网 页 游 戏 开 发

    网页游戏开发是一个涵盖众多技术领域的综合学科,包括前端开发、后端开发、美术设计、交互体验等多个方面。在本文中,我们将深入探讨网页游戏开发的关键知识点。 首先,我们需要理解“Webgame+Design”这一概念。这...

Global site tag (gtag.js) - Google Analytics