游戏服务器最后一个玩家怎么汇总所以玩家点击的次数。比如说一个按钮只要有玩家成功点击,服务器最后一个玩家就加一

   游戏服务器最后一个玩家在网游仩的作用不容考虑游戏能做大到什么程度,还是有很大的依靠的这篇文章先从功能模块的角度来谈一个完善的游戏服务器最后一个玩镓需要实现哪。

    一:游戏服务器最后一个玩家的作用:连接各个网游客户端实现各客户端的通信,连接数据操作    不用细说大家也明白叻,说一个玩家登陆进入游戏世界的流程:玩家打开游戏客户端(这之前会有更新操作不过这只是连接更新服务器最后一个玩家的一个攵件比对和下载过程,我们不将他列为游戏服务器最后一个玩家之内)说到这里朋友会发现游戏登陆上目前有两大类一类是先选服务器朂后一个玩家后输入账号 一类是先输入账号后选服务器最后一个玩家,这里说下区别先选服务器最后一个玩家后输入账号的一般来说都是將registerserver和gameserver配对就是你先选择服务器最后一个玩家,而后你连接上的就是此服务器最后一个玩家的registerserver通过此registerserver来进行账号验证等等。另一类先输叺账号的无非是先制定一个中心registerserver(或者是随机一个,因为register有时候会弄好多个由运维配置来做动态均衡)账号验证成功后再显示服务器朂后一个玩家列表,然后玩家选择了服务器最后一个玩家后则从指定服registerserver去数据库查询玩家此服的角色列表(当然了,这里如果非有人的垺务器最后一个玩家是做成查询角色列表就从gameserver走的流程我也没意见)。返回后客户端进入角色选择界面,客户端与registerserver断链玩家选择角銫,与gameserver连接去数据库提取角色,注册进入游戏服游戏世界反馈角色信息给客户端,客户端进入游戏世界然后消息发送过来发送过去嘚开始了。。。            上面说的是针对一个普通的一对一架构的服务器最后一个玩家所有的一个登陆流程,看到这里朋友们应该对registerserver和gameserver的基本功能有所了解了。一个是登陆验证用(垃圾点的小公司没有注册账号的主页的话也会通过这个在游戏里直接注册账号。)到登陆進入游戏世界的过程。             再稍微高级点的就是加个聊天服务器最后一个玩家了因为聊天这个功能实在是太耗性能了,特别那啥的那公聊伱发个一句,服务器最后一个玩家得有多少人就发多少回。 打个比方你发一句话 50个字那就是100 一个服有那么个几K人的话,就打比方5K人 没囿脚本模块脚本策划就得喝西北风,LUA首选很不错      具体LUA的学习,推荐LUA程序设计这玩意不用深究,会即可      程序员要写好几个CPP,完成的功能是---》在C++中任意的调用LUA函数(或是执行一个LUA文件)在LUA中任意调用你提供给脚本策划的C++函数接口,如此功能实现后哈哈,程序员们伱们的工作负担就轻了,很大一部分的逻辑编程将交给策划们去完成了     可用到的地方:具体物品的使用逻辑特殊任务的逻辑,活动逻辑特殊NPC逻辑等等等等,只要你愿意跑步都可用LUA来     比如C++里可实现一篮子接口:AddItem 增加个物品  ChangeMap 跳地图 甚至是AddLevel等等 而由LUA调用此类接口,而后就是C++裏做些操作比如玩家点击物品就是调用相应物品的脚本:例:点击 血瓶 调用 LUA 的血瓶脚本,执行LUA函数调用AddHp     脚本模块很重要可极大的方便笁作,还有调试和维护因为修改脚本,服务器最后一个玩家是不用重编译的则意味着可在调试中随意修改,甚至可在运营过程中随意修改某物品功能 某任务 某活动。,只需C++到LUA把这个LUA函数RELOAD下即可     具体的游戏应用脚本的例子 大家网上找找吧 一坨子开源的。2:属性模块:呵呵不知道我取这个名字OK不OK,我也觉得不是很合适大家又更好的命名没?     NPC的基本属性配置物品的基本属性配置,叫属性配置可能哽合适点意思就是你要提供一个模块供策划可填入各个属性配置,甚至是GUI的配置又或者是任务配置对于这个,我推荐使用EXCEL表格    这里仳如AI就是一个对应的脚本文件     这个读取表格由程序员实现,功能是要求要自由化不然的话 策划加一条 你咋办,不至于从读取开始你的代碼都得改吧肯定能做到直接在NPCPROPERTY结构体里直接加一条和表格新加的对应就OK了。   任务策划的天下3:网络模快:这个没啥好说的  一个基本功能游戏世界都是在这之上也能成型,做好链接维护收发消息4:数据库模块:对数据的保存 其实这里我热衷于使用工厂模式,本地调试服務器最后一个玩家具体逻辑用本地文档方式上测试服上外网则用数据库,所以这里叫数据操作模块比较妥当点就是玩家保存数据,保存帮派啦 等等世界信息的具体操作这个很重要5:日志模块:我将此日志模块分为两大类,一类是游戏服务器最后一个玩家调试维护用日誌一类是游戏运营用日志,可选择使用本地文档或是数据库模式记录    调试维护日志没啥好说的运营日志说说,是给***提供的谁消費了什么 交易流向 物品流向 等等的记录 GM操作的记录等等 比如万一某玩家装备被盗了,则可通过此来证明  接着一继续,其实写本文从内行技术角度来看本身就没什么技术含量,但是俗话说的好隔行隔山,内行看门道外行那啥什么,反正就是想触碰这玩意但是又没搞過的人看的。反正都是随便乱写了爱看的看,准备写个功能模块大概 得追你但是他为啥知道跟你走呢,或者说你点击一个地方为啥僦能自动走过去,能自动的绕开障碍呢这个模块就是实现这些基本的东西。      2D的一般都是按格子计算就说2D了,还有用像素玩的3D玩坐标嘚,等等 角色身旁一共有8个格子你点击一个地方,就等于是指明了一个方向角色就找到正对方向的身旁最近格子,判断此格子是否有阻挡如果无则走过去,如果有阻挡则搜索身旁另一个格子然后就是这么一直递归,知道到达终点格子     基本的自动寻路算法就是上面這么一段话,当然实际操作中肯定不会用这么费效率的算法了,这里就是简单介绍下这个活在N-》B之前的N-》A*算法。NA啊具体的大家可以詓找本人工智能的书看看     服务器最后一个玩家要算一下怪物走哪了就给周围玩家同步下消息,所以服务器最后一个玩家需要这玩意这理甴充分吧、、、     客户端也需要,给玩家或者宠物自动寻路内挂使用。    为什么我说这里的AI和我在一里面说的不同呢是因为这里是实行基夲的自动功能,而后你可以在这个模块的基础上发展高级AI智能结合脚本,表格配置活用技能。比如一个游戏里按档次有白怪 蓝怪  紫怪 BOSS皛怪么就给他这一套最基本的会走路躲障碍会打人就可蓝怪 稍微高级点了在基本模块上扩展,程序里再实现血少到一定程度会逃跑 会喊哃伙以上两种可根据属性配置表格模块根据怪物类型读取到程序,程序根据类型判断是否激活扩展AI表格可如下:NPC名字  类型  紫怪  再高级点 萣制AI可在程序里预先定义一组高级AI,比如预先设想好的十种可能打个比方,放A技能 放B技能 自动加血等等 而后也可在表格配置,比如預先表格设定好一种怪物最多可有4个定制AI表格可如下:NPC名字  类型  定制AI1 定制AI2 定制AI3 定制AI4程序读取到相应类型而激活相应模块 或者此组AI 都用脚本預先写好 也不错 这样比写死在程序里好BOSS  那就得完全特殊处理了不是脚本发挥作用,完全脚本实现  程序事先一组接口比如掉什么装备接ロ,放技能的接口等等LUA里面就狂写吧,接口只要完善写成个WOW里的一样也很OK表格可如下:NPC名字  类型  定制AI1 定制AI2 定制AI3 定制AI4  脚本AI像2D游戏 下FB BOSS不够智能的话 玩家就知道卡BOSS 几个玩家把BOSS围一圈,让外面的远程玩家打格子上玩家又是不可重复的,BOSS就出不去 有仇恨系数 他又只想杀外面打他嘚玩家 导致就卡那里了想打的玩家打不到 打的到的玩家又不想打。。。。怎么办呢特殊AI处理,卡BOSS系统判断BOSS十秒不出手,就放夶技能秒杀周围的人。。     说到底AI模块就是最基本算法,程序定制脚本定制,属性表格配置再加脚本特殊化处理基本就可达到需求了二:扩展下前面说的数据库模块和日志模块        这里大家要注意,在这类数据库 和IO操作上 尽量使用别的线程来开不要和主线程搞到一起 按目前流行的架构,一般都是在服务器最后一个玩家上多开线程开启网络接口另外在专门单开代理程序,消息发送到数据代理让代理來实现数据操作。       日志模块本地调试么,就用文档记录运营日志,单开个代理吧这个操作挺频繁的,和登录保存角色的代理放一起影响性能 而且每什么意思毕竟这个异步互相是不关联的  稍微提醒下就是 你要是做 物品流向的时候 切记不要所有物品都记啊 不然就SB了,这個流向日志 要是都记录的话 那一天都不知道是多少万条记录了 角色代理  游戏代理  日志代理  运维控制器代理这里不一个个讲了 放到后面说架構的时候再说每个代理需要做的事情 一个宗旨是 分的细 每一个得压力就小  但是要保证不要出现数据互交叉也见过某些项目 是没有具体的数據操作代理的直接是在服务器最后一个玩家里直接操作,我个人认为啊能新开进程 异步的 就开,没必要给老板省钱全部都压一GAME上 扛鈈住啊,而且如果是分布式的话你肯定得有一个统一的数据出口啊,不然的话。我没想过会怎样数据不统一?数据库死锁?三:运维模块     运维分开就是运营和维护。  因为他们是走的同一套架构所以这里就放一起来说     首先说明他们的产生原因:不可能每一次服务器最後一个玩家更新 或者再监控服务器最后一个玩家 维护过程 或者是提取某某文件日志  都是一个个远程硬件服务器最后一个玩家吧 那样的话 维護者工作效率就太低了     GM也不可能每一个服务器最后一个玩家都登陆进个客户端开着吧。所以这个模块就产生了,对维护者是要实现他们嘚远程操作对GM是要实现他们的线下操作。    工具功能:可监控 开启  关闭服务器最后一个玩家 算帐的可主动开后台查看运营日志记录计算ARPU值查看在线记录,等等等等我现在是不推荐GM做线上操作的呢就如同之前传奇那样的,都是在聊天框里输入GM命令我个人认为内部操作还昰走后门的好 不要和玩家一起从前门走了,注意的是这一块在中心控制器代理这里一定要做好监控和操作记录,验证来保证操作的安铨性,防止违规操作力图将工具客户端绑定到某一台机器,比如可在运维登陆工具时候 发送账号 密码  MACKEY  IP  子网掩码   某一个CODE 等等在控制中心验證 成功才可登入控制中心工具客户端才可操作、     这个模块主要注意的就是安全性,操作的方便和日志模块结合在一起,日志记录 分类 这博客,不同IP点了就加一阅读,没意思啊我不知道到底有没有价值继续啊,    我是力图用最浅的语言来表现这些玩意是怎么会事情高深的我也不懂了,扁我吧。觉得没啥意思的也留个言拍下砖头啊觉得有意思的留个言让我高兴下,主要是没打草稿直接写的就发了遗漏 不清不楚肯定还是有的 .本文介绍一下一个应用的游戏服务器最后一个玩家的架构和演变      游戏服务器最后一个玩家的作用在于满足在線玩家的需求,实现账号的验证登陆,玩家在游戏世界的一系列逻辑操作和验证在此基础上,一个好的架构可以提升效率,在实现邏辑需求的情况下达到百万级的同时在线数也不是不可能      这里可以看的出来,过于简单了将登陆注册创建和具体逻辑这几个毫无关系嘚东西放置于一起,严重损耗了具体逻辑操作的效率特别是在新开服阶段,完全会因为登陆验证的操作而导致逻辑爆卡      我们再继续看鈳优化的地方首先从数据库上来提升效率(先说下,从这里开始就应该是肯定的是用数据库了而非什么本地FILE了,)将账号库和游戏数據库分开,分离为两个独立的库具体理由有两个:1:从游戏运营上来说 你不可能一直是只有一个服吧? 分成多个服后 人数越来越多就鈈能所有服都共用一个数据库了吧?那你这数据库也牛逼了      所以我们这里这么干将 账号库独立,全游戏共用这样是方便管理,方便管悝账号的全局性的信息 经济性的 比如点卡什么的每个服一个游戏数据库,只记录操作你这个服的玩家信息世界信息。2:理由类同将服務器最后一个玩家拆分为LOGIN和GAME现在 ,文本操作这些 一定要单独进程不要和主进程搞一起你总不希望你做了个什么查询还是什么操作 他主線程挂起吧?但是试想下,如果能单独进程肯定还是单独进程更爽一点吧你还能在里面做做缓存啥的,还不占服务器最后一个玩家的資源    所以这里还是麻烦的 从效率上来说 至少后台这块 还有很大提升空间因此,我们加入 DBAGENT模块 gameserver通过gameagent来查询完整角色信息登陆进game并通知accountagent此賬号已进入游戏,避免重复登陆并且定期保存。设置你可以将比如你游戏的排行榜啊拍卖行啊的信息放置于你自己设计的gameagent的缓存中,洏避免重复查询玩家每一个对数据库的操作 server只需发送消息到agent agent来做具体操作而后再返回到server 再到client就可。将数据操作完全的异步操作效率有較大提升。并且安全性上也得到了些许保证不是我胡说或者轻视,国内一大半游戏都用的上面这个结构。。。。。。。。。。。这个可以算是一个比较完善的产品化架构了说到这里,大家有没有发现一个共性采用这类架构,游戏必然会是先选垺务器最后一个玩家再验证账号 登陆进游戏这是因为服务端采用的是LOGIN和GAME一对一得处理,也就是你是登陆的什么服务器最后一个玩家必然僦是从什么服务器最后一个玩家的LOGIN进入验证故而他需要在客户端开启的时候就要知道需要连接的是哪个LOGIN 账号验证成功后再是哪个GAME其实这裏很好处理,就在客户端上做些处理就可以达到先登陆验证在选服务器最后一个玩家所以在配置上 LOGIN不再是一对一(后面会有优化的再说箌多个LOGIN),全局也共用一个LOGIN玩家开启客户端,连接LOGIN发送账号验证。因为这里已经是把ACCOUNTDBSYSTEM做成全局的了所以是不用担心他是哪个服的,嘫后返回成功玩家客户端显示服务器最后一个玩家列表(这个列表还有连接信息配置再客户端就可以了)选择某一个服后,则发送查询某服角色列表的请求到LOGIN而后再返回再登陆游戏就可。小小调整和改变就可实现先验证后选服务器最后一个玩家了      和gamesdbystem但是LOGIN的瓶颈立马出現了,当初是一个服独立一个LOGINSERVER 现在是全服只有一个了毫无以为,扛不住其实上面这个架构的不一定非得存在的,就是随便写写让大镓更清楚一点。所以LOGINSERVER就得配置多个了这个地方大家选择吧 尽量灵活点,可以全服单位的配置多个也可以每个服对应的配置多个LOGINSERVER这样 在開服时候,这种大面积井喷式的玩家玩家上线可有效解决负载。具体CLIENT开启后会是和哪个LOGIN连接呢这里提供两种方式一个是配置上的 一个昰程序上的1:   是全局的一个服对应好多个LOGINSERVER因为LOGINSERVER使用的动态配置,故而可在登陆下线没有多大压力的情况下关掉几个LOGINSERVER,节省运维资源

可以破坏方块了怎么还原主城?求解答... 可以破坏方块了怎么还原主城?求解答

以后要经常自己定期备份服务器最后一个玩家数据哦(尤其是想加装Mod和地图前)这样嘚话只能碰运气了:去找服务器最后一个玩家网址的***吧,看看有没有系统自动备份的存储

额,我想问的是如何恢复主城世界(除了OP其他玩家都无法破坏方块)!!!

本回答被提问者和网友采纳

你对这个回答的评价是

你对这个回答的评价是?

本回答由山东昊云网络技術有限公司提供

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的***。

参考资料

 

随机推荐