概述
对于大型的网游,由于架构的需要, 根据分而治之的方法论, 需要我们为不同功能的操作, 划分为多台服务器,甚至数十台, 方能完成整个系统的完美运作. 所以普遍存在多台服务器的共同协作, 也是网络游戏系统必然的现象. 玩家作为一个游戏平台内, Use Cases的主要Actor. 由于后台管理的需要, 以及抽像世界的数据更新频繁, 导致经常有出现玩家的个人数据, 需要在后台管理终端进行相应的操作玩家的数据, 以及来自于当前那台和玩家数据有关系的游戏服务器, 同时如果有多人在一个场景, 还要考虑游戏服务器对该场景的客户端进行多播服务... 一切的一切, 最终, 为了达到实现数据同步的目的, 为了更好地控制和简化服务器之间的相互依赖性. 我们需要专设一台仅用于内部服务器使用的player data center(just memory database only), 这个服务器将专注于维护玩家数据的独立服务器,该服务器主要负责对玩家的数据管理. 它主要的使命职责如下:
1) 内存Cache每一个角色的重要玩家数值数据;
2) 服务器一启动, 将开始初始化服务器状态, 并等待远程玩家登陆系统, 只要一旦有需求, 服务器将对物理数据库进行Read操作, 读入内存map方式的玩家数据结构中, 然后将随着不断的外部接口操作数据的更新, 服务器将一直进行保持物理I/O的同步方式控制内存的cache数据, 以队列的方式更新到持久性数据库系统中;
3) 提供一个投注/输赢分数的网络协议接口给玩家数据操作服务器,所有的玩家数据管理仅仅该服务器完全控制,永久保持最新的数据,其它的服务器(后台管理、游戏服务器仅仅用于对玩家的数据进行增/删,并不具有玩家数据的控制权)。
这样一来,就可保证玩家随时登陆游戏,进行获取的数据是最新的,不会产生数据不同步的现象, 另外, 由于内存数据库的关系, 所以又能确保后台数据库的最大并发性问题。
当然这只是一种简单的实现方式, 具体的操作和扩展或是实现, 都要根据实际的应用和需求来决定的. ^_^
最后
以上就是迅速雪碧为你收集整理的网络游戏中,玩家数据同步的一种简单实现的全部内容,希望文章能够帮你解决网络游戏中,玩家数据同步的一种简单实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复