CN101021884B - 一种网络游戏服务器中动态加载配置档和脚本的方法 - Google Patents
一种网络游戏服务器中动态加载配置档和脚本的方法 Download PDFInfo
- Publication number
- CN101021884B CN101021884B CN2007100487455A CN200710048745A CN101021884B CN 101021884 B CN101021884 B CN 101021884B CN 2007100487455 A CN2007100487455 A CN 2007100487455A CN 200710048745 A CN200710048745 A CN 200710048745A CN 101021884 B CN101021884 B CN 101021884B
- Authority
- CN
- China
- Prior art keywords
- script
- configuration files
- loading
- server
- thread
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供了一种动态加载配置档和脚本的方法,其特征在于为:首先由服务器监听是否收到客户端发送的重新加载命令,当服务器的主线程收到客户端工具发送的重新加载命令后,暂停主循环,重新执行加载命令来加载配置档和脚本;本发明的客户端与服务器端的进程间通讯采用Socket方式,通过重新加载的方法可以降低成本,包括人力和时间成本,也可以降低在游戏产品设计过程中错误的出现几率,不会经常重启服务器,可以增加玩家的体验感。
Description
技术领域
本发明涉及网络游戏服务器领域,特别是一种网络游戏服务器中动态加载配置档和脚本的方法。
背景技术
随着网络游戏的发展,往往游戏玩家有时候并不满足游戏本身单一的操作,因此需要换一些设定值,这些都是频繁更改的部分,所以在网络游戏服务器中提供了一些配置档和涉及到游戏玩法的逻辑处理脚本。其中配置档包括怪物,道具的数值设定等,逻辑处理脚本包括npc(游戏中非玩家的角色)的事件处理,任务系统等。
配置档和脚本是提供给游戏策划者们设计的,这些是经常改动的部分,如果配置档和脚本不停的改动,就会需要服务器重新启动并加载,这样就会带来诸多不便,如更多的等待时间,许多游戏逻辑错误无法重现,也不便于策划者们立即去对比改动前后的效果。
传统的方法就是通过服务器重新启动,在服务器初始化的时候加载,服务器加载配置档的本质就是把配置档以一定格式存储于服务器内存中,在游戏的主循环中需要的时候访问这部分内存,加载脚本的本质就是脚本引擎执行这些脚本代码片断。这种方法的在游戏开发阶段缺点是耗费相对比较多的时间,带来的就是策划者们人工等待的成本;在运营阶段带来的缺点就是服务器程序必须关闭后重新启动,玩家被迫下线,带来玩家体验感的下降。
发明内容
本发明为解决上述问题提供了一种网络游戏服务器中动态加载配置档和脚本的方法,可以简单快速地在网络游戏服务器中加载配置档和脚本文件。
本发明的技术方案如下:
一种动态加载配置档和脚本的方法,其特征在于为:首先由服务器监听是否收到客户端发送的重新加载命令,当服务器的主线程收到客户端工具发送的重新加载命令后,暂停主循环,重新执行加载命令来加载配置档和脚本。
所述客户端主动向服务器进程发送消息,游戏客户端与服务器端的进程间通讯采用Socket方式。
所述重新执行加载命令是指:对于配置档,就是把配置档文件在重新加载之前对应的系统内存块数据清除,再把配置档文件重新读进系统内存;对于脚本,就是由脚本引擎调用读取脚本文件的函数接口按顺序重新读取和执行脚本。
所述主线程是指负责处理整个游戏世界逻辑的线程,包括游戏世界里面的npc,怪物的人工智能的模拟,玩家动作的处理等。
所述Socket是TCP/IP网络的函数接口。
所述服务器采用单线程,在加载命令执行时,主线程的游戏世界的逻辑处理必须暂停,加载完毕,主循环再继续。因为服务器采用单线程,加载命令会影响主线程,所以必须将主线程的逻辑处理暂停。
所述服务器采用多线程,加载命令在加载线程执行,当加载线程进行时,主线程等待加载线程,加载完成后,主线程通过信号量被告知是否继续。
所述信号量是一种同步机制,信号量用于保护两个或两个以上关键代码段,这些关键代码段不能并发调用,在进入一个关键代码段之前,线程必须获取一个信号量。
所述脚本指游戏玩法包括战斗公式,任务等设计的代码片断文件;所述配置档表示道具,怪物,技能等的数值设定。
本发明的有益效果如下:
本发明的客户端与服务器端的进程间通讯采用Socket方式,通过重新加载的方法可以降低成本,包括人力和时间成本,也可以降低在游戏产品设计过程中错误的出现几率,不会经常重启服务器,可以增加玩家的体验感。
附图说明
图1为本发明的进程流程图
图2为本发明采用单线程的流程图
具体实施方式
实施例1
一种动态加载配置档和脚本的方法,首先由服务器监听是否收到客户端发送的重新加载命令,当服务器的主线程收到客户端工具发送的重新加载命令,暂停主循环,重新执行加载命令来加载配置档和脚本。
所述客户端主动向服务器进程发送消息,游戏客户端与服务器端的进程间通讯采用Socket方式。
所述重新执行加载命令是指:对于配置档,就是把配置档文件在重新加载之前对应的系统内存块数据清除,再把配置档文件重新读进系统内存;对于脚本,就是由脚本引擎调用读取脚本文件的函数接口按顺序重新读取和执行脚本。
所述主线程是指负责处理整个游戏世界逻辑的线程,包括游戏世界里面的npc,怪物的人工智能的模拟,玩家动作的处理等。
所述Socket是TCP/IP网络的函数接口。
所述服务器采用单线程,在加载命令执行时,主线程的游戏世界的逻辑处理必须暂停,加载完毕,主循环再继续。因为服务器采用单线程,加载命令会影响主线程,所以必须将主线程的逻辑处理暂停。
所述服务器采用多线程,加载命令在加载线程执行,当加载线程进行时,主线程等待加载线程,加载完成后,主线程通过信号量被告知是否继续。
所述信号量是一种同步机制,信号量用于保护两个或两个以上关键代码段,这些关键代码段不能并发调用,在进入一个关键代码段之前,线程必须获取一个信号量。
所述脚本指游戏玩法包括战斗公式,任务等设计的代码片断文件;所述配置档表示道具,怪物,技能等的数值设定。
实施例2
如图2所示,服务器采用单线程的时候,动态加载游戏中道具价格表的具体实例,某一道具初始价格为a,重新加载后价格为b。
Claims (6)
1.一种动态加载配置档和脚本的方法,其特征在于为:首先由服务器监听是否收到客户端发送的重新加载命令,当服务器的主线程收到客户端工具发送的重新加载命令后,暂停主循环,重新执行加载命令来加载配置档和脚本;所述重新执行加载命令是指对于配置档,就是把配置档文件在重新加载之前对应的系统内存块数据清除,再把配置档文件重新读进系统内存;对于脚本,就是由脚本引擎调用读取脚本文件的函数接口按顺序重新读取和执行脚本。
2.根据权利要求1所述的一种动态加载配置档和脚本的方法,其特征在于:所述客户端主动向服务器进程发送消息,客户端与服务器端的进程间通讯采用Socket方式。
3.根据权利要求1所述的一种动态加载配置档和脚本的方法,其特征在于:所述主线程是指负责处理整个游戏世界逻辑的线程。
4.根据权利要求2所述的一种动态加载配置档和脚本的方法,其特征在于:所述Socket是TCP/IP网络的函数接口。
5.根据权利要求1所述的一种动态加载配置档和脚本的方法,其特征在于:所述服务器采用单线程,在加载命令执行时,主线程的游戏世界的逻辑处理必须暂停,加载完毕,主循环再继续;或者所述服务器采用多线程,加载命令在加载线程执行,当加载线程进行时,主线程等待加载线程,加载完成后,主线程通过信号量被告知是否继续。
6.根据权利要求5所述的一种动态加载配置档和脚本的方法,其特征在于:所述信号量是一种同步机制,信号量用于保护两个或两个以上关键代码段,这些关键代码段不能并发调用,在进入一个关键代码段之前,线程必须获取一个信号量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007100487455A CN101021884B (zh) | 2007-03-28 | 2007-03-28 | 一种网络游戏服务器中动态加载配置档和脚本的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007100487455A CN101021884B (zh) | 2007-03-28 | 2007-03-28 | 一种网络游戏服务器中动态加载配置档和脚本的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101021884A CN101021884A (zh) | 2007-08-22 |
CN101021884B true CN101021884B (zh) | 2010-10-13 |
Family
ID=38709646
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007100487455A Active CN101021884B (zh) | 2007-03-28 | 2007-03-28 | 一种网络游戏服务器中动态加载配置档和脚本的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101021884B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101369227B (zh) * | 2008-06-16 | 2012-04-25 | 腾讯数码(深圳)有限公司 | 一种游戏虚拟机及其实现的游戏开发系统和方法 |
CN101634940B (zh) * | 2008-07-25 | 2012-07-04 | 苏州蜗牛数字科技股份有限公司 | 通过脚本开发电脑游戏的方法 |
CN104679489A (zh) * | 2013-12-02 | 2015-06-03 | 厦门极致互动网络技术有限公司 | 一种在网络游戏客户端中内置网络浏览器的系统及方法 |
CN106775623A (zh) * | 2016-11-17 | 2017-05-31 | 网易(杭州)网络有限公司 | 策划配置表的处理方法及装置 |
CN108686373B (zh) * | 2018-03-30 | 2021-07-23 | 武汉斗鱼网络科技有限公司 | 一种消息锁处理方法及装置 |
CN108762904B (zh) * | 2018-05-23 | 2021-08-20 | 武汉山骁科技有限公司 | 一种可配置的回合制游戏框架实现方法 |
CN111111198B (zh) * | 2019-12-25 | 2024-03-12 | 上海米哈游网络科技股份有限公司 | 一种逻辑代码执行方法、装置、服务器和介质 |
-
2007
- 2007-03-28 CN CN2007100487455A patent/CN101021884B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN101021884A (zh) | 2007-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101021884B (zh) | 一种网络游戏服务器中动态加载配置档和脚本的方法 | |
US7583268B2 (en) | Graphics pipeline precise interrupt method and apparatus | |
US7545381B2 (en) | Interruptible GPU and method for context saving and restoring | |
KR100962531B1 (ko) | 동적 로드 밸런싱을 지원하는 멀티 쓰레딩 프레임워크를 수행하는 장치 및 이를 이용한 프로세싱 방법 | |
CN102890643B (zh) | 基于应用效果即时反馈的显卡虚拟化下的资源调度系统 | |
CN104205109B (zh) | 持续性和弹性的工作者进程 | |
US7580040B2 (en) | Interruptible GPU and method for processing multiple contexts and runlists | |
CN101615067B (zh) | 经协调的链路功率管理 | |
EP2333666B1 (en) | Patching method and patching device under multi-core environment | |
CN100561433C (zh) | 嵌入式系统及其升级方法 | |
WO2018028055A1 (zh) | 在Windows系统上运行Android应用程序的方法及装置 | |
CN108701040A (zh) | 用户级别线程暂停的方法、设备、和指令 | |
US7770050B2 (en) | Method and apparatus for resolving clock management issues in emulation involving both interpreted and translated code | |
US7773090B1 (en) | Kernel mode graphics driver for dual-core computer system | |
US20090150888A1 (en) | Embedded operating system of smart card and the method for processing the task | |
CN101335916A (zh) | 一种通用的手机角色扮演(rpg)网络游戏引擎 | |
CN110795254A (zh) | 一种基于php处理高并发io的方法 | |
CN106462395A (zh) | 多线程处理器架构中的线程等待 | |
CN110443742A (zh) | 数据处理系统 | |
CN112286656A (zh) | 小程序模拟方法、装置、电子设备和计算机可读存储介质 | |
CN107102935A (zh) | 一种服务器压力测试方法及装置 | |
CN109656868B (zh) | 一种cpu与gpu之间的内存数据转移方法 | |
CN116414464A (zh) | 调度任务的方法和装置、电子设备和计算机可读介质 | |
CN103176808B (zh) | 一体成型桌上型电脑的开机方法 | |
CN105653495B (zh) | 双处理器电子装置及其快速开机启动的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |