数据库的划分
在游戏里数据交互最频繁的还是玩家的数据,他的访问量是一台服务器所不能解决的,因此我们考虑将这部分数据分担到多台服务器里。分担的方法还是做水平切割,但这次不使用数据库自身的切割功能,而是在应用逻辑层上对数据库进行切割。根据用户的ID取模后写入对应的服务器里。
……
预计每台服务器能提供6k~8k的在线用户访问,预计一共需要16台服务器。考虑到服务器的进一步扩容问题,在初期规划时,建议规划为32个数据库,每台服务器可以先放3~5个数据库,等服务器用户人数上来后,再将数据库拆分到不同的服务器里。
用户数据库各个模块的设计
玩家基地里的建筑物,资源,物品,英雄等相关表,基本上都是玩家独立拥有的,不存在和其他玩家交互的情况,因此这些表的设计继续沿用之前的设计就可以了。
军事模块
军事模块分为部队表,部队创建事件表和战斗事件表。部队表和部队创建事件都是玩家自己内部的事情,把相关的数据和玩家其他数据放在一个数据库里就行了,但是战斗事件表则会设计到两位或者多为玩家则会比较复杂一些。
战斗事件表通常记录的是A玩家(城池)对B玩家(城池)的攻击,里面有攻击部队,到达时间等信息。这个条记录和A放在一起,那么B在查询自己被攻击的记录时,就需要访问32个数据库,反之,和B放在一起,这A查询自己部队的攻击情况时,就需要遍历32个数据库。如果和用户表一样单独把这张表拿出来,用单独的一个服务器来处理,则会导致表过大,查询会变慢以及战斗服务器的压力过大。
在之前的项目,战斗服务器处理每场战斗大约是100ms,也就是每秒能处理10场战斗。当然你也许说可以用多线程来进行,但是使用多线程后,战斗事件的顺序可能会点到,影响用户的战术安排。
在这里,我设想,将一个表设计改为2个表:攻击事件表和被攻击事件表。这两个表的结构一样。加入A玩家发起对B玩家的攻击,那么将攻击事件加入A玩家所在服务器里的攻击事件表,在B玩家服务器里,将数据插入被攻击事件表。然后每个数据库对应一个战斗服务器程序,这个程序在已被攻击事件表为依据,进行攻击计算。在计算完成后,在同时删除2个表里的数据。
好友模块
好友表本身就可以分为2个表,已某位玩家ID为主键和对应玩家放在同一个数据库里。但是好友申请则需要另外考虑了。如果申请的申请方不可见自己发出的申请,则只需把申请记录和被申请玩家放在一个数据里。但如果需要可见,则会麻烦一些,一种方法是参考战斗表的设计思路,分为申请表和被申请表。还有一种方法就是把申请表独立出来,所用用户的申请都放在这张表里。作为我个人,我倾向于后面的一种方法。
用户邮件表设计
用户邮件虽然是属于2位用户之间的交互数据,但从整个系统的角度上来说,用单一的一张表放在单独的服务器里会更简单一些。因为邮件表的内容基本为只读内容,只存在插入和读取功能,并且用户访问的频率不是很高,可以很方便的在逻辑层和web层作缓存。
分享到:
相关推荐
- **数据库设计**:合理的数据库设计对于Webgame来说至关重要,需要考虑到性能优化、数据安全等因素。 - **前端技术**: - **AJAX**:异步JavaScript和XML的缩写,可以实现局部刷新页面,提升用户体验。 - **...
### Webgame开发简明教程知识点总结 #### 一、Webgame概述 - **定义与特点**:Webgame,即网页游戏,是一种通过浏览器即可运行的游戏形式。它无需安装客户端,玩家可以直接通过网络浏览器进行游戏体验。这类游戏...
通过对父类Message、通信连接类Connection、VO身份识别配置类VOIdentifyMap以及Socket命令类SocketCommands的详细介绍,旨在为Webgame开发者提供一种高效、可靠的通信VO设计思路。此外,还提出了具体的使用流程和...
项目文件"WebGame-master"很可能包含了以下结构: - `server.js`: 主服务器文件,包含Node.js应用的启动代码,可能还包括数据库连接和路由配置。 - `models/`: 存放与MongoDB交互的模型文件,定义了数据的结构和操作...
【数据库管理】在网页游戏中起着至关重要的作用,存储玩家信息、游戏进度、道具等数据。MySQL是常见的关系型数据库管理系统,可能会被用于存储侠域游戏的数据。源代码中可能包含了数据库设计、SQL查询优化以及事务...
《最终幻想webgame(access)》是一款基于网页的在线游戏,其源码可供学习和研究。这款游戏使用了big5编码,这是一种繁体中文字符编码,主要用于处理台湾、香港等地的中文文本。通过分析这款网页游戏的源码,我们...
【标题】"Webgame ASP JavaScript在线游戏源代码"揭示了这是一个使用ASP(Active Server Pages)技术和JavaScript编程语言构建的在线游戏平台的源码资源。ASP是微软开发的一种服务器端脚本环境,常用于动态网页的...
【标题】"Webgame 在线棒球赛"是一款基于网页平台的体育竞技游戏,它将传统的棒球运动搬到网络上,让玩家可以在浏览器中体验到棒球比赛的乐趣。这款在线游戏充分利用了Web技术,使用户无需下载安装客户端,只需通过...
《Webgame部落争霸》是一款基于PHP开发的在线游戏,它展现了Webgame的魅力,结合了策略、竞技等元素,为玩家提供了丰富的游戏体验。本资源包含了游戏的主要源代码,位于压缩包内的"htdocs"目录,这通常代表了Web...
在当今数字化时代,网络游戏已经成为娱乐产业的重要组成部分,而Webgame,即基于Web浏览器的游戏,更是以其便捷性深受玩家喜爱。"博伊斯网络游戏"是一个利用Python语言开发的Webgame项目,它展示了Python在游戏开发...
标签中的"webgame"是一个宽泛的概念,涵盖所有基于Web的在线游戏。这类游戏通常通过浏览器访问,无需安装客户端,体现了Web技术的便利性。开发Web游戏时,通常需要考虑性能优化、用户交互设计、网络通信以及数据同步...
3. **数据库操作**:Travian的数据库设计是源码的关键部分,它存储了玩家信息、游戏状态等关键数据。源码中的SQL查询和ORM(对象关系映射)层展示了如何高效地读写数据库,以支持大量并发玩家的游戏环境。 4. **...
通过对《龙与地下城Webgame》的源码研究,开发者不仅可以深入了解D&D规则的编程实现,还可以学习到Webgame开发中的各种技术,如前端框架、服务器架构、数据库设计和网络编程。这是一次难得的学习机会,对于提升游戏...
7. 游戏功能实现:文档举例说明了一个webgame的基本功能,如玩家登录、角色升级、战斗系统、建筑和物品的买卖等,并提及每个功能对应至少一个或多个数据表。通过具体的功能实现,展现了游戏开发的实际应用过程。 8....
2. **数据库设计**:通常包括SQL脚本,用于创建玩家表、游戏世界表、物品表等,以及相关的数据模型类,负责与数据库进行交互。 3. **游戏逻辑**:包括用户注册、登录系统、游戏进程控制、角色移动、战斗逻辑等,...
在战争策略类Webgame的设计测试中,首要任务是理解和分析这类游戏的独特性。由于市场上的高度同质化,设计出独特且成功的Webgame变得愈发困难。在缺乏明确设计原则的情况下,开发者和策划者需要在开发过程中寻找减少...
以一个简单的webgame为例,我们可以进一步探讨其设计思路: #### 1. **数据库设计** - **玩家表**:存储玩家基本信息。 - **地图表**:存储游戏世界中的地图信息。 - **城市表**:存储游戏中城市的详细信息。 - **...
《三国类型的webgame》是基于ASP.NET技术开发的一款网络在线游戏,它将中国历史上著名的三国时期作为背景,融合策略、角色扮演以及社交互动等多种元素,为玩家提供了丰富的游戏体验。在这款游戏中,玩家可以扮演三国...
【标题解析】:“webgame_模拟城市...综上所述,“webgame_模拟城市”是一个结合了PHP编程、MySQL数据库管理和Flash互动体验的在线游戏项目,涉及了Web开发的多个层面,从后端逻辑到前端展示,再到数据存储和安全管理。
《航海时代webgame》是一款基于Web平台的角色扮演游戏(RPG),它将玩家带入一个充满探索与冒险的海洋世界。这款游戏的独特之处在于它利用PHP技术构建,PHP是一种广泛使用的开源服务器端脚本语言,尤其适合于Web开发...