公开/公告号CN101021884A
专利类型发明专利
公开/公告日2007-08-22
原文格式PDF
申请/专利权人 成都金山互动娱乐科技有限公司;
申请/专利号CN200710048745.5
申请日2007-03-28
分类号G06F19/00(20060101);G06F9/52(20060101);H04L29/06(20060101);
代理机构成都天嘉专利事务所;
代理人徐丰
地址 610041 四川省成都市高新区天府大道南沿线成都高新孵化园科技财富中心3层
入库时间 2023-12-17 19:03:16
法律状态公告日
法律状态信息
法律状态
2010-10-13
授权
授权
2007-10-17
实质审查的生效
实质审查的生效
2007-08-22
公开
公开
技术领域
本发明涉及网络游戏服务器领域,特别是一种网络游戏服务器中动态加载配置档和脚本的方法。
背景技术
随着网络游戏的发展,往往游戏玩家有时候并不满足游戏本身单一的操作,因此需要换一些设定值,这些都是频繁更改的部分,所以在网络游戏服务器中提供了一些配置档和涉及到游戏玩法的逻辑处理脚本。其中配置档包括怪物,道具的数值设定等,逻辑处理脚本包括npc(游戏中非玩家的角色)的事件处理,任务系统等。
配置档和脚本是提供给游戏策划者们设计的,这些是经常改动的部分,如果配置档和脚本不停的改动,就会需要服务器重新启动并加载,这样就会带来诸多不便,如更多的等待时间,许多游戏逻辑错误无法重现,也不便于策划者们立即去对比改动前后的效果。
传统的方法就是通过服务器重新启动,在服务器初始化的时候加载,服务器加载配置档的本质就是把配置档以一定格式存储于服务器内存中,在游戏的主循环中需要的时候访问这部分内存,加载脚本的本质就是脚本引擎执行这些脚本代码片断。这种方法的在游戏开发阶段缺点是耗费相对比较多的时间,带来的就是策划者们人工等待的成本;在运营阶段带来的缺点就是服务器程序必须关闭后重新启动,玩家被迫下线,带来玩家体验感的下降。
发明内容
本发明为解决上述问题提供了一种网络游戏服务器中动态加载配置档和脚本的方法,可以简单快速地在网络游戏服务器中加载配置档和脚本文件。
本发明的技术方案如下:
一种动态加载配置档和脚本的方法,其特征在于为:首先由服务器监听是否收到客户端发送的重新加载命令,当服务器的主线程收到客户端工具发送的重新加载的指令后,暂停主循环,重新执行加载命令来加载配置档和脚本。
所述客户端主动向服务器进程发送消息,游戏客户端与服务器端的进程间通讯采用Socket方式。
所述重新执行加载命令是指:对于配置档,就是把配置档文件在重新加载之前对应的系统内存块数据清除,再把配置档文件重新读进系统内存;对于脚本,就是由脚本引擎调用读取脚本文件的特殊函数接口按顺序重新读取和执行脚本。
所述主线程是指负责处理整个游戏世界逻辑的线程,包括游戏世界里面的npc,怪物的人工智能的模拟,玩家动作的处理等。
所述Socket是TCP/IP网络的函数接口。
所述服务器采用单线程,在加载命令执行时,主线程的游戏世界的逻辑处理必须暂停,加载完毕,主循环再继续。因为服务器采用单线程,加载命令会影响主线程,所以必须将主线程的逻辑处理暂停。
所述服务器采用多线程,加载命令在另外的加载工作线程执行,当加载线程进行时,主线程等待加载线程,加载完成后,主线程通过信号量被告知是否继续。
所述信号量是一种同步机制,信号量用于保护两个或两个以上关键代码段,这些关键代码段不能并发调用,在进入一个关键代码段之前,线程必须获取一个信号量。
所述脚本指游戏玩法包括战斗公式,任务等设计的代码片断文件;所述配置档表示道具,怪物,技能等的数值设定。
本发明的有益效果如下:
本发明的客户端与服务器端的进程间通讯采用Socket方式,通过重新加载的方法可以降低成本,包括人力和时间成本,也可以降低在游戏产品设计过程中错误的出现几率,不会经常重启服务器,可以增加玩家的体验感。
附图说明
图1为本发明的进程流程图
图2为本发明采用单线程的流程图
具体实施方式
实施例1
一种动态加载配置档和脚本的方法,首先由服务器监听是否收到客户端发送的重新加载命令,当服务器的主线程收到客户端工具发送的重新加载的指令后,暂停主循环,重新执行加载命令来加载配置档和脚本。
所述客户端主动向服务器进程发送消息,游戏客户端与服务器端的进程间通讯采用Socket方式。
所述重新执行加载命令是指:对于配置档,就是把配置档文件在重新加载之前对应的系统内存块数据清除,再把配置档文件重新读进系统内存;对于脚本,就是由脚本引擎调用读取脚本文件的特殊函数接口按顺序重新读取和执行脚本。
所述主线程是指负责处理整个游戏世界逻辑的线程,包括游戏世界里面的npc,怪物的人工智能的模拟,玩家动作的处理等。
所述Socket是TCP/IP网络的函数接口。
所述服务器采用单线程,在加载命令执行时,主线程的游戏世界的逻辑处理必须暂停,加载完毕,主循环再继续。因为服务器采用单线程,加载命令会影响主线程,所以必须将主线程的逻辑处理暂停。
所述服务器采用多线程,加载命令在另外的加载工作线程执行,当加载线程进行时,主线程等待加载线程,加载完成后,主线程通过信号量被告知是否继续。
所述信号量是一种同步机制,信号量用于保护两个或两个以上关键代码段,这些关键代码段不能并发调用,在进入一个关键代码段之前,线程必须获取一个信号量。
所述脚本指游戏玩法包括战斗公式,任务等设计的代码片断文件;所述配置档表示道具,怪物,技能等的数值设定。
实施例2
如图2所示,服务器采用单线程的时候,动态加载游戏中道具价格表的具体实例,某一道具初始价格为a,重新加载后价格为b。
机译: 在客户端上动态加载服务器代码以支持客户端/服务器应用程序中多个版本的客户端和服务器的方法和系统
机译: 一种在客户端从Web服务器标识脚本(脚本)的适当引用的方法。
机译: 用于在网络浏览器和服务器之间进行交互式通信的方法,其中使用独立的脚本服务器可以动态配置网页以匹配用户所属的用户组