求助,一进游戏就是离线,根本不登陆wampserver服务器离线

一个不分服的游戏服务器设计问题?
最近自己想设计一个游戏,类似coc或者海盗骑兵,玩家不用选择服务器。&br&游戏主要需求:&br&整个游戏世界有很多村落组成,村落里是若干玩家(比如上线10人)组成,若干村落组成国家。&br&战斗包括整个村落和村落打,及玩家和玩家打,还有玩家和系统设定的npc打,玩家之间可以相互组队去打副本。&br&所有玩家之间都可以加好友,聊天,组队聊天,世界聊天等。&br&游戏中没有场景的概念,不是mmorpg。&br&玩家之间的战斗可以在双方同时在线下进行,不像海盗骑兵只能打离线玩家。&br&&br&由于玩家可能比较多,单服的架构不合适,要做到较强的扩展(不需要理论上的无限扩展)。设计上玩家上线是1000万,同时在线是10w。&br&语言可以先不考虑(本人熟悉java,nodejs以及lua也可以考虑)&br&&br&我的设计:&br&&img src=&/2ae390b08358dafa78e1c4f311e1c1ac_b.jpg& data-rawwidth=&715& data-rawheight=&800& class=&origin_image zh-lightbox-thumb& width=&715& data-original=&/2ae390b08358dafa78e1c4f311e1c1ac_r.jpg&&当新玩家登录的时候会分配一个游戏服,并在游戏服上创建初始数据。一个游戏服玩家上线假定10万。登录用http协议。&br&每个游戏服对应单独一个数据库。这样数据库不用去专门分库分表,当然也可能用mongodb,不过比较耗硬盘和内存。&br&&br&问题:&br&1:我这样设计靠谱不?本人没有从0设计游戏服的经验,以前的游戏是单服的,所有功能一个服务器中,是分服型手游戏。&br&&br&2:如果按我的设计来,玩家和玩家之间战斗,聊天,组队等基本上都需要去路由查询玩家所在的服务器,再做数据转发,很多时候还要复制玩家数据,效率是不是太低了?而且逻辑代码写起来可能很不简洁。&br&&br&3:需不需要网关服?现在游戏服中有点网关的功能。如果要,网关服需要做负载均衡,感觉玩家到网关服的路由怎么解决?uid做哈希?&br&&br&4:村落,国家是不是放在世界服上合适,世界服上可能还有组队副本等玩法,这样世界服会不会有单点风险?怎么解决?&br&&br&5:缓存,我理解的缓存作用是保存玩家主要数据:玩家对象,玩家的背包数据,技能等。当玩家退出游戏一段时间后把数据刷到缓存中,并删除游戏服中的对象。如果玩家退出游戏后过一小段时间(假设1小时内)后再登录可直接读缓存,超过时间阀值则清除缓存。不知道大家是不是这样做的?&br&&br&6:玩家数据同步,比如我战胜了玩家A,我会抢他资源,他也在线刚好也通过战斗获取了资源。这样资源的增减操作需要加锁。有没有别的办法?&br&&br&先问这么多吧,不知道有没有人有空看这么长的问题,先说声谢谢了。&br&本人游戏界新手,干了一年多翻皮的活,现在辞职想写点有意思的,望各位不吝赐教。
最近自己想设计一个游戏,类似coc或者海盗骑兵,玩家不用选择服务器。游戏主要需求:整个游戏世界有很多村落组成,村落里是若干玩家(比如上线10人)组成,若干村落组成国家。战斗包括整个村落和村落打,及玩家和玩家打,还有玩家和系统设定的npc打,玩家之间可以相互组队去打副本。所有玩家之间都可以加好友,聊天,组队聊天,世界聊天等。游戏中没有场景的概念,不是mmorpg。玩家之间的战斗可以在双方同时在线下进行,不像海盗骑兵只能打离线玩家。由于玩家可能比较多,单服的架构不合适,要做到较强的扩展(不需要理论上的无限扩展)。设计上玩家上线是1000万,同时在线是10w。语言可以先不考虑(本人熟悉java,nodejs以及lua也可以考虑)我的设计:…
需求层面先要确定的一个事情,是否需要显示地图版面资源占用情况,这个涉及到全局数据,如果存在,对于版面的信息更新频度问题,如果说存在,那么显然一个全局服务器可能不太好适应,如果没有,一切都好解决。1.设计是否靠谱,需要测试你的各类服务器对于承载是否能够达到预期。全局服务器不可忽视的一个问题就是广播消息,拿你的聊天服来说,如果说,全服共用一个聊天服,考虑下在用户同时在线峰值时消息转发会带来多大的压力,虽然消息转发的逻辑处理简单,承载也高,但是更多是些无意义的需求,所以还是基于有效需求做一些划分,比如以国家为基础单位加载至聊天服,保证国家内成员处于同一聊天服。2.当你的所有服务器组都处于内网之中时,服务器组的通信的效率基本上不需要担心。3. 建议还是添加网关服,用于管理客户端连接,而你的游戏服,可以看做是业务逻辑计算结点,世界服就是一个中心服务器,管理一些状态,不做过多的逻辑计算。至于玩家对网关的选择,先让玩家请求网关负载均衡服(可以是一个web页面),然后告之玩家可连接的网关,至于分配方式粗略的可以直接基于网关的承载(如果你的业务逻辑计算结点所有数据都是从数据中心拉取)。通信消耗,游戏的类型及需求决定了游戏不是需要高响应的,同时手游通信环境的影响,这点内网通信消耗我觉得还是能够容忍的。4.同3所说,世界服不做过多的逻辑,减少单点故障可能性,国家之类的,根据具体情况分析了,尽量是放在逻辑计算结点上来进行。始终会存在不可抗因素,所以单点故障的可能性始终存在,如果真的需要,那么粗略的考虑就是做主从,主服务器挂了,立马转接到从服务器。5.基本上是这样,已修改数据定时回写。玩家离线不清除,主要解决在大量玩家重复上下线操作的问题。6.资源争夺这里麻烦最多,最好的办法是任何会改变共享资源的操作都为同步操作,这样保证数据不会出现问题,我记得COC里面好像是不能攻击在线玩家,这样就从根源上解决了问题,如果需求执意要对在线玩家也可做操作,那么只好把操作理清楚了根据情况做限制。=================================================================以上只是粗略的想法,如有问题,还望指正。
其实没有你想的那么难,现在日本的大多数手游都不分服了(对玩家而言),国内迟早也是这个趋势。因为手游的用户行为不适合做强在线交互,所以不分服在玩法设计上能提供很大的空间。那么具体怎么做?具体的你得自己去研究。我说一个大致的思路。 实现上其实是分布式的服务器,不分布计算的话就谈不上可扩展性了。当然结构搭好了,要不要扩展完全可以根据产品的实际运营情况来定那么既然游戏服务器是分布式的话,怎么让玩家感觉不分服呢?很简单,入口是唯一的就可以了。这个唯一的意思可以是唯一的登录服务器,也可以是唯一的游戏服务器连接机制。那么既然玩家散落在各个游戏服务器里面,怎么能够让他们象在一个世界里那样产生交互呢?这个是实现里面比较难的地方。在规模有限的情况下,只要保持有一个高效的数据持久层通信机制(在小规模下 redis 就够了)就可以解决90% 的问题。当规模上去了以后,可以考虑 阿里云 或者 腾讯云提供的服务。
1.需要网关2.游戏服跟一个库对应起来不靠谱,没法做伸缩3.资源问题可以在被打的那个玩家所在的服务器计算4.游戏服模型最好采用actor模型
只想知道到2年后的今天,题主的游戏能跑起来了吗?
我实现了一个不分服的架构,gate,logic,db都可以平行扩展,内部用多个redis做状态同步,自己做过测试,是可行的
聊天和世界要支持分布式
关键还是在架构上,完全可以实现单一服。?个单一服其实就是一个路由服。后面是各个分布式的集群。
可以统一出口网关,用LVS做TCP端口均衡负载,这样可以扩展足够多的接口服务器去满足在线人数需求。(技术人员少的话可以直接用青云、阿里云的均衡负载服务)一些热数据或者经常更改的数据,例如你说的“我战胜了玩家A,我会抢他资源”:全部写入redis集群,定期将redis数据同步到数据库中。为了避免单点可以在架构和后台服务编写上“标记服务某个用户的reds服务器”并记录到数据库中,并且做到可用脚本热切换。尽量将mongodb或者mysql等数据库作为数据仓库,使用纯内存数据库作为后端服务器读写目标、架构上动态调整用户资源分配,这样就能比较好的解决读写锁的问题。
对于计算机世界而言,一个问题如果你觉得太复杂,那么就拆分它,拆分到随便思考一下就能写出用例/函数/处理过程为止。想要不分服,那么首先,10W连接单一Socket和单一服务器是很吃不消的,你需要很多入口网管和一个导游服务:来来来,这边服务器空了,那边服务器在排队,等等信息告诉客户端。网关服务器同时完成解密、Session记录等工作,默默的把玩家请求解包解析后,递交给游戏服务器,再默默的等待玩家离线或者游戏服务器甩锅过来:“把这数据交给玩家!”后打包加密传输,此外不做其它事情。游戏服务器就略繁忙了,它要把每个岛上的每个战役都记录在案,玩家的每次操作都要鉴定和反馈,玩家获胜or失败的判定,超时判定,聊天记录,好友系统,金币,钱权交易,OP开后门等都要接管,此时按照你的具体游戏需求,把每个服务都单独编写,然后设定好数据流和数据接口,跟着动就好!然后,如果想要详细的如何***和制作这么一个游戏服务器?请付工资,感谢。
已有帐号?
无法登录?
社交帐号登录后使用快捷导航没有帐号?
查看: 613|回复: 9
我进不去英雄联盟了 怎么回事&&登陆了游戏 选了服务器就自动消失了....求解决啊!
新人欢迎积分0 阅读权限1积分0精华0UID帖子金钱10 威望0
Lv.0, 积分 0, 距离下一级还需 5 积分
UID帖子威望0 多玩草0 草
你网速太卡了
jashmilyace
新人欢迎积分1 阅读权限40积分571精华0UID帖子金钱2024 威望0
Lv.4, 积分 571, 距离下一级还需 429 积分
UID帖子威望0 多玩草10 草
正常啊&&我4m狂带 有时候打死进不去
重登也进不去
新人欢迎积分1 阅读权限20积分20精华0UID帖子金钱236 威望0
Lv.2, 积分 20, 距离下一级还需 30 积分
UID帖子威望0 多玩草0 草
出现什么样的
新人欢迎积分1 阅读权限20积分29精华0UID帖子金钱102 威望0
Lv.2, 积分 29, 距离下一级还需 21 积分
UID帖子威望0 多玩草0 草
删除 从新下载
需要金钱:1100
手机盒子客户端点击或扫描下载
Powered by

参考资料

 

随机推荐