网络游戏中,玩家数据同步的一种简单实现
2009-04-24 10:48
337 查看
对于大型的网游,由于架构的需要, 根据分而治之的方法论, 需要我们为不同功能的操作, 划分为多台服务器,甚至数十台, 方能完成整个系统的完美运作. 所以普遍存在多台服务器的共同协作, 也是网络游戏系统必然的现象. 玩家作为一个游戏平台内, Use Cases的主要Actor. 由于后台管理的需要, 以及抽像世界的数据更新频繁, 导致经常有出现玩家的个人数据, 需要在后台管理终端进行相应的操作玩家的数据, 以及来自于当前那台和玩家数据有关系的游戏服务器, 同时如果有多人在一个场景, 还要考虑游戏服务器对该场景的客户端进行多播服务... 一切的一切, 最终, 为了达到实现数据同步的目的, 为了更好地控制和简化服务器之间的相互依赖性. 我们需要专设一台仅用于内部服务器使用的player data center(just memory database only), 这个服务器将专注于维护玩家数据的独立服务器,该服务器主要负责对玩家的数据管理. 它主要的使命职责如下:
1) 内存Cache每一个角色的重要玩家数值数据;
2) 服务器一启动, 将开始初始化服务器状态, 并等待远程玩家登陆系统, 只要一旦有需求, 服务器将对物理数据库进行Read操作, 读入内存map方式的玩家数据结构中, 然后将随着不断的外部接口操作数据的更新, 服务器将一直进行保持物理I/O的同步方式控制内存的cache数据, 以队列的方式更新到持久性数据库系统中;
3) 提供一个投注/输赢分数的网络协议接口给玩家数据操作服务器,所有的玩家数据管理仅仅该服务器完全控制,永久保持最新的数据,其它的服务器(后台管理、游戏服务器仅仅用于对玩家的数据进行增/删,并不具有玩家数据的控制权)。
这样一来,就可保证玩家随时登陆游戏,进行获取的数据是最新的,不会产生数据不同步的现象, 另外, 由于内存数据库的关系, 所以又能确保后台数据库的最大并发性问题。
当然这只是一种简单的实现方式, 具体的操作和扩展或是实现, 都要根据实际的应用和需求来决定的. ^_^
1) 内存Cache每一个角色的重要玩家数值数据;
2) 服务器一启动, 将开始初始化服务器状态, 并等待远程玩家登陆系统, 只要一旦有需求, 服务器将对物理数据库进行Read操作, 读入内存map方式的玩家数据结构中, 然后将随着不断的外部接口操作数据的更新, 服务器将一直进行保持物理I/O的同步方式控制内存的cache数据, 以队列的方式更新到持久性数据库系统中;
3) 提供一个投注/输赢分数的网络协议接口给玩家数据操作服务器,所有的玩家数据管理仅仅该服务器完全控制,永久保持最新的数据,其它的服务器(后台管理、游戏服务器仅仅用于对玩家的数据进行增/删,并不具有玩家数据的控制权)。
这样一来,就可保证玩家随时登陆游戏,进行获取的数据是最新的,不会产生数据不同步的现象, 另外, 由于内存数据库的关系, 所以又能确保后台数据库的最大并发性问题。
当然这只是一种简单的实现方式, 具体的操作和扩展或是实现, 都要根据实际的应用和需求来决定的. ^_^
相关文章推荐
- XNA Game Studio是一套有着强大功能和简单界面的游戏制作平台,游戏开发商和游戏玩家都可以使用这套工具开发针对Windows XP以及Xbox360的游戏,XNA Game Studio分为两种版本,一种是面向初学者的EXPRESS版本,还有一种是面向专业用户的专业版。用户使用EXPRESS版本开发游戏完全免费,并且可以随意在PC上发行,不过用该工具开发的游戏若是在360上网络发行,就需要交纳99美元的年费。
- 用python简单实现mysql数据同步到ElasticSearch
- 采用用同步编程的方式实现跨进程异步获取数据[二]-创建玩家账号和获取角色列表
- Android无网络状态下使用GPS定位到省市县的一种简单实现方式
- 【Android 网络数据解析实现一个简单的新闻实例(一)】
- 【Android 网络数据解析实现一个简单的新闻实例(一)】
- 用python简单实现mysql数据同步到ElasticSearch的教程
- SwiftJson 实现网络数据的加载与解析并实现简单的轮播
- Android上实现一个简单的天气预报APP(三) 获取网络数据
- oracle 一种简单的数据同步方式
- 网络游戏剧情副本的一种实现方式(上)
- 网络游戏剧情副本的一种实现方式(中)
- 分享一个简单的unityAI框架,基于神经网络和遗传算法,可以简单的实现自成长的游戏对象
- 网络游戏剧情副本的一种实现方式(上)
- go实现一个简单的游戏服务器框架(lotou)网络通信
- 简单实现一种经典的数据传输模型
- Redis改造,一种异构系统Redis的数据同步方案实现
- 网络游戏剧情副本的一种实现方式(中)
- 使用基于Android网络通信的OkHttp库实现Get和Post方式简单操作服务器JSON格式数据
- 一种常见的数据挖掘的算法SPRINT算法的简单实现