CN103180827A - 游戏服务器中的任务文件执行装置以及方法 - Google Patents
游戏服务器中的任务文件执行装置以及方法 Download PDFInfo
- Publication number
- CN103180827A CN103180827A CN2012800007885A CN201280000788A CN103180827A CN 103180827 A CN103180827 A CN 103180827A CN 2012800007885 A CN2012800007885 A CN 2012800007885A CN 201280000788 A CN201280000788 A CN 201280000788A CN 103180827 A CN103180827 A CN 103180827A
- Authority
- CN
- China
- Prior art keywords
- script
- file
- task
- assignment file
- scheduler
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
- G06F9/45512—Command shells
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/468—Specific access rights for resources, e.g. using capability register
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供文件执行以及管理技术,通过此技术,在任务期间不受限制地进行代码修改成为可能,且不受限制地进行与用不同语言实施的另一服务器的通信成为可能。根据本发明的实施例的游戏服务器的任务文件执行与管理装置包含:调度器,其使用应用编程语言来实施以传输有关待处理的任务文件的信息;脚本开发模块,其存储用脚本语言开发的多个文件;以及脚本转译模块,其通过使用从所述调度器传输的有关所述任务文件的所述信息从所述脚本开发模块选择且接收待处理的所述任务文件,且调用所述任务文件的源代码中的函数以及参数以便执行所述任务文件。
Description
技术领域
本发明涉及用于执行以及管理游戏服务器中的计划任务文件的技术。更详细来说,本发明涉及用于实现增强的可用性以及可扩展性的文件执行与管理技术,其中在编辑以及执行为开发游戏服务器而创建的文件的同时,无限制修改成为可能,且不受限制地进行与另一游戏服务器的通信。
背景技术
关于用于执行网页游戏(web board game)的游戏服务器的操作,需要根据任务来开发游戏服务器的操作所需的多种执行文件。用以开发游戏服务器的操作所必需的执行文件的编程语言为诸如C++的典型的应用编程语言。
应用编程语言也被称为编译语言。原因在于,在程序源代码编写好之后,其通过编译而转换为汇编语言的二进制文件且接着被执行。应用编程语言仅在计算机的处理器以及操作系统准备好时在编译之后立即执行,且其执行速度为快速的。
在游戏服务器的开发以及管理方面,为了获得执行速度,通常使用应用编程语言。然而,如上文所述,由于应用编程语言需要经历将源代码转换为二进制代码的编译过程才能被执行,因此如果文件内容需要修改,那么需要操作二进制文件来重新启动以便修改源代码。
此外,除了用于编写代码的典型的应用编程语言之外,还存在脚本语言。由于脚本语言是由另一应用程序而非由计算机处理器转译以及执行,因此不存在执行文件。尽管脚本语言的编写可快于典型的应用编程语言,但其与经编译的程序相比花费较长的时间来执行。
此外,文件内容可能需要在游戏服务器操作期间实时地进行修改。举例而言,在有限时间内开放或出售游戏中的特定物品以及推出新年的特殊事件需要实施于游戏服务器中。通常,在此些状况下,修改文件内容以便在临时维护或例行维护时间期间执行相应事件,这通常可在游戏中看到。当修改文件内容时,插入指明开放或出售物品或者发生事件的时刻的计时器,使得在计时器达到此时刻时,文件被执行以运行事件。
在此状况下,由于事件需要对应于服务器维护时间来规划,因此游戏开发者被迫以服务器维护时间为基础来对事件进行安排。因此,难以快速地对游戏服务器操作作出反应。此外,即使事件结束,由于对应于此事件的代码保留于文件内容中直到下一次维护为止,因此在文件内容中存在不必保留的代码。
发明内容
技术问题
本发明提供游戏服务器的任务文件执行与管理技术,此技术同时执行游戏服务器的操作所必需的文件且通过无限制修改来有效地执行各种任务。另外,本发明提供用于以与使用另一语言的外部游戏服务器的无限制链接在服务器操作方面进行扩展的技术。
技术解决方案
根据本发明的一方面,一种游戏服务器的任务文件执行与管理装置包含:调度器,其使用应用编程语言来实施以传输有关待处理的任务文件的信息;脚本开发模块,其存储用脚本语言开发的多个文件;以及脚本转译模块,其通过使用从所述调度器传输的有关所述待处理的任务文件的所述信息从所述脚本开发模块选择且接收所述任务文件,且调用所述任务文件的源代码中的函数以及参数以便执行所述任务文件。
所述调度器可包含:计时器,其周期性地产生用于确认是否存在待处理的任务的信号;执行任务确认单元,其从预先存储的设置文件确定是否存在所述待处理的任务,且提取有关对应于所述待处理的任务的任务文件的信息;以及脚本调用接口,其将有关所述任务文件的所述所提取信息传输到所述脚本转译模块。
有关所述任务文件的所述信息可包含有关以下各者的信息中的至少一者:任务的名称、任务开始时间、任务重复执行周期、任务文件的名称,以及用于执行任务的逻辑实施于所述任务文件的所述源代码中的函数的名称。
所述任务文件执行与管理装置可还包含脚本扩展模块,所述脚本扩展模块通过所述调度器请求与外部游戏服务器的通信,且将通信结果传回到所述脚本转译模块。
所述脚本转译模块以及所述脚本扩展模块可用所述应用编程语言实施,藉此与所述调度器链接。
所述脚本转译模块以及所述脚本扩展模块可用动态链接库(Dynamic Linking Library;DLL)文件实施。
所述脚本转译模块可包含:转译应用程序,其调用将用在所述应用编程语言的所述函数以及所述参数;以及内部编译器,其执行编译以执行所述所调用的函数以及参数。
当在所述函数以及所述参数的执行期间确定在所述外部游戏服务器中存在待处理的任务时,所述脚本扩展模块可向所述调度器请求到所述外部游戏服务器的用于任务执行的通信。
根据本发明的另一方面,一种执行以及管理游戏者服务器的任务文件的方法包含:通过经由调度器加载预先存储的设置文件来分析当前是否存在待处理的任务,所述调度器是使用应用编程语言来实施的;从所述设置文件提取有关对应于所述待处理的任务的任务文件的信息且通过所述调度器传输所述所提取信息;通过脚本转译模块根据有关所述任务文件的所述信息从脚本开发模块选择所述任务文件,所述脚本开发模块存储用脚本语言开发的多个任务文件;以及通过所述脚本转译模块调用且执行所述所选择任务文件的源代码中的函数以及参数。
是否存在待处理的任务的所述分析可包含通过执行任务确认单元从所述设置文件确定是否存在所述待处理的任务,所述执行任务确认单元接收周期性地从计时器产生的处理任务确认信号。
有关所述任务文件的所述信息可包含有关以下各者的信息中的至少一者:任务的名称、任务开始时间、任务重复执行周期、任务文件的名称,以及用于执行任务的逻辑实施于所述任务文件的所述源代码中的函数的名称。
所述方法可还包含通过脚本扩展模块,通过所述调度器请求与外部游戏服务器的通信,且将通信结果传回到所述脚本转译模块。
所述脚本转译模块以及所述脚本扩展模块可用所述应用编程语言实施,藉此与所述调度器链接。
所述函数以及所述参数的所述执行可包含:通过转译应用程序调用将用在所述应用编程语言的所述函数以及所述参数;以及通过内部编译器执行编译以执行所述所调用的函数以及参数。
如果确定在所述外部游戏服务器中存在待处理的任务同时所述经编译的函数以及参数处于执行中,那么所述通信结果的所述传回可得以执行。
有益效果
根据本发明,用不需要编译的脚本语言开发的任务文件可执行于调度器、脚本转译模块以及脚本扩展模块中,此三者是使用编译语言来实施的。因此,在不需要编译的任务文件修改期间,由于所修改任务在任务文件修改之后在不重新启动文件的情况下立即反映在服务器上,因此需要实时运行的诸如游戏中的事件的任务操作变得更便利。此外,由于与用另一语言实施的外部游戏服务器不受限制地进行通信,因此即使在任务文件是用脚本语言实施时,功能使用方面的扩展仍不受限制。
附图说明
图1为根据本发明的实施例的游戏服务器的任务文件执行与管理装置的结构图。
图2为游戏服务器的任务文件执行与管理装置的实施语言分类图。
图3为说明调度器的详细结构的框图。
图4为说明在脚本文件的类型改变时的配置改变的示意图。
图5为说明脚本转译模块的详细结构的框图。
图6为说明通过脚本扩展模块实现的外部函数调用功能的示意图。
图7为根据本发明的实施例的游戏服务器的任务文件执行与管理方法的流程图。
具体实施方式
根据本发明的一方面,一种游戏服务器的任务文件执行与管理装置包含:调度器,其使用应用编程语言来实施以传输有关待处理的任务文件的信息;脚本开发模块,其存储用脚本语言开发的多个文件;以及脚本转译模块,其通过使用从所述调度器传输的有关所述待处理的任务文件的所述信息从所述脚本开发模块选择且接收所述任务文件,且调用所述任务文件的源代码中的函数以及参数以便执行所述任务文件。
所述调度器可包含:计时器,其周期性地产生用于确认是否存在待处理的任务的信号;执行任务确认单元,其从预先存储的设置文件确定是否存在所述待处理的任务,且提取有关对应于所述待处理的任务的任务文件的信息;以及脚本调用接口,其将有关所述任务文件的所述所提取信息传输到所述脚本转译模块。
有关所述任务文件的所述信息可包含有关以下各者的信息中的至少一者:任务的名称、任务开始时间、任务重复执行周期、任务文件的名称,以及用于执行任务的逻辑实施于所述任务文件的所述源代码中的函数的名称。
所述任务文件执行与管理装置可还包含脚本扩展模块,所述脚本扩展模块通过所述调度器请求与外部游戏服务器的通信,且将通信结果传回到所述脚本转译模块。
所述脚本转译模块以及所述脚本扩展模块可用所述应用编程语言实施,藉此与所述调度器链接。
所述脚本转译模块以及所述脚本扩展模块可用动态链接库(DLL)文件实施。
所述脚本转译模块可包含:转译应用程序,其调用将用在所述应用编程语言的所述函数以及所述参数;以及内部编译器,其执行编译以执行所述所调用的函数以及参数。
当在所述函数以及所述参数的执行期间确定在所述外部游戏服务器中存在待处理的任务时,所述脚本扩展模块可向所述调度器请求到所述外部游戏服务器的用于任务执行的通信。
根据本发明的另一方面,一种执行以及管理游戏者服务器的任务文件的方法包含:通过经由调度器加载预先存储的设置文件来分析当前是否存在待处理的任务,所述调度器是使用应用编程语言来实施的;从所述设置文件提取有关对应于所述待处理的任务的任务文件的信息且通过所述调度器传输所述所提取信息;通过脚本转译模块根据有关所述任务文件的所述信息从脚本开发模块选择所述任务文件,所述脚本开发模块存储用脚本语言开发的多个任务文件;以及通过所述脚本转译模块调用且执行所述所选择任务文件的源代码中的函数以及参数。
是否存在待处理的任务的所述分析可包含通过执行任务确认单元从所述设置文件确定是否存在所述待处理的任务,所述执行任务确认单元接收周期性地从计时器产生的处理任务确认信号。
有关所述任务文件的所述信息可包含有关以下各者的信息中的至少一者:任务的名称、任务开始时间、任务重复执行周期、任务文件的名称,以及用于执行任务的逻辑实施于所述任务文件的所述源代码中的函数的名称。
所述方法可还包含通过脚本扩展模块,通过所述调度器请求与外部游戏服务器的通信,且将通信结果传回到所述脚本转译模块。
所述脚本转译模块以及所述脚本扩展模块可用所述应用编程语言实施,藉此与所述调度器链接。
所述函数以及所述参数的所述执行可包含:通过转译应用程序调用将用在所述应用编程语言的所述函数以及所述参数;以及通过内部编译器执行编译以执行所述所调用的函数以及参数。
如果确定在所述外部游戏服务器中存在待处理的任务同时所述经编译的函数以及参数处于执行中,那么所述通信结果的所述传回可得以执行。
用于本发明的模式
下文中,将参看附图更详细地描述根据本发明的实施例的游戏服务器的任务文件执行与管理装置以及方法。在下文的描述中,每一实施例并不限制权利要求书的范畴,且由此,其它等效实施例也为可能的。
此外,将排除与众所周知的功能或配置相关的详细描述,以便不会不必要地混淆本发明的标的。另外,相似参考数字指代相似组件。
图1为根据本发明的实施例的游戏服务器的任务文件执行与管理装置的结构图。
参看图1,根据本发明的实施例的游戏服务器的任务文件执行与管理装置100包含脚本开发模块110、脚本转译模块120、脚本扩展模块130以及调度器140。
游戏服务器的任务文件执行与管理装置100通过脚本转译模块120执行设置为在调度140指明的时间执行的任务文件,且允许调度器140在必要时在任务文件执行期间通过脚本扩展模块130与外部游戏服务器300通信。
脚本开发模块110通过任务单元来存储脚本文件,此脚本文件为调度器140通过脚本转译模块120执行的任务文件。脚本文件创建于脚本语言开发高(development tall)中,且在调试之后存储于脚本开发模块110中。
由于脚本文件不需要编译且本发明中所执行的任务文件为脚本文件,因此开发者通过开发终端200访问脚本开发模块110,且接着在任务文件执行期间不受限制地编辑脚本文件的代码。即,在编辑脚本文件的同时,游戏服务器的任务文件执行与管理装置100的操作可继续。
存储于脚本开发模块110中的任务文件由调度器140在预定时间处理。根据本发明,用脚本语言开发的一个脚本文件为一个任务文件。如果脚本文件为用于区别任务的方式,那么在一个脚本文件中可存在多个任务文件,或在一个任务文件中可存在多个脚本文件。
根据本发明的实施例,用于脚本开发模块110中的脚本语言可包含Python。作为面向对象的编程语言的Python在程序语句中具有缩进(indentation)以便改良可读性,且容易与另一语言链接。然而,除了Python之外,诸如JavaScript的脚本语言也用于本发明中。
调度器140为用应用编程模块(例如,C++)创建的文件执行模块。将参看图3描述调度器140的功能。
调度器140基本上执行用于将有关待处理的任务文件的信息传输到脚本转译模块120的功能。另外,调度器140可包含用于输出由脚本转译模块120处理的任务文件的执行结果的功能。
调度器140读取在启动初始化期间预先存储的设置文件,以便管理多个任务文件。设置文件为具有xml扩展名的文件,且包含有关以下各者的信息作为有关任务文件的信息:待执行的任务的名称、任务开始时间、用于重复任务的执行周期以及计数、对应于任务的任务文件的名称,以及具有用以执行任务文件的源代码中的任务的逻辑的函数的名称。
调度器140可包含用于周期性地确认当前是否存在待执行的任务的构件。是否存在待执行的任务可通过比较设置文件中的任务的开始时间与作为任务文件的信息的当前检查时间来确定。如果存在任务,那么调度器140将有关任务文件的信息移交到脚本转译模块120,且接着,脚本转译模块120执行任务文件。
本发明的游戏服务器的任务文件执行与管理装置100包含用需要编译的应用编程语言(例如,C++)开发的配置以及用脚本语言(例如,Python)开发的任务文件的配置。因此,需要负责在不同语言之间的转译以及执行的组件。根据本发明,用于彼功能的组件可单独作为具有DLL文件的模块来提供。
为了通过调度器140的执行来执行任务文件,需要转译与文件执行构件,以便用应用编程语言执行基于脚本语言的任务文件。脚本转译模块120为用于执行上文的功能的组件。
脚本转译模块120从调度器140接收有关对应于待执行的任务的任务文件的信息,且通过使用所接收信息从脚本开发模块1选择待处理的任务文件。接着,脚本转译模块120在内部编译所选择任务文件的源代码以便产生字节代码,且执行此些代码。通过进行此操作,由于任务文件如上文所述容易进行编辑,且同时经历编译过程,因此,如同基于应用编程的文件,执行速度从第二执行变得较快。
更详细来说,脚本转译模块120是以应用编程语言为基础使用从脚本语言提供的转译应用程序来开发的。脚本转译模块120调用任务文件的源代码中的函数以及参数。
用于本发明中的脚本语言Python使用Mutex(即,全局解译器锁(Global Interpreter Lock;GIL))以便支持多线程,且需要在多线程环境中在脚本转译模块120中操作。因此,需要在调用Python所提供的应用程序(例如,转译应用程序)之前在属于多线程的所有阈值中获得GIL。如果并非如此,那么转译应用程序可能不会恰当地操作,且所获得的GIL应在应用程序得到使用之后得以释放。
在内部,在任务文件得到执行的同时,脚本转译模块120周期性地将过程分配到另一线程。即,Python以如下方式支持多线程:执行任务的预定字节,且接着将控制移交到另一线程。此时,Python在每一线程上单独地存储信息,以便维持每一线程的状态。
在执行上文的功能的同时,脚本转译模块120读取且执行任务文件。脚本转译模块120是用动态链接库(DLL)文件来实施的。用于不同语言转译以及执行的模块与调度器140分离。这是为了链接,当稍后有必要执行用另一脚本语言开发的任务文件且调度器140需要与另一脚本语言链接时,链接仅通过在不编辑调度器140中的文件的源代码的情况下替换不同语言的另一脚本转译模块120而成为可能。
脚本转译模块120包含取得继承任务文件的接口的对象的指针的功能,以及终止且去除对象的指针的功能。
当执行编译语言时,脚本语言可通过脚本转译模块120来使用。因此,开发者可实施文件的内容,作为在不重新起动游戏服务器的情况下实时地执行游戏所必需的事件执行。因此,与事件内容在文件内容仅在维护期间得到编辑之后插入到文件中或从文件去除的状况相比,可防止不必要的代码保留。因此,服务器操作的效率可得到改进。
另外,关于在游戏服务器操作期间规划特定事件,基于每一者并非服务器维护时间而规划事件。因此,事件可实时地反映在文件内容上,有可能对事件规划快速地作出反应。
另外,当游戏服务器仅用编译语言操作时,与游戏服务器的常规功能相关的程序代码可能在有关另一事件执行的文件内容得到编辑的同时异常地操作。因此,如果需要实时地编辑的与事件有关的文件是用脚本语言创建且得到执行,而编辑任务是在这段时间执行,那么错写负责重要常规功能的代码的可能性可降低。因此,可防止与操作服务器有关的故障。
根据本发明的实施例的游戏服务器的任务文件执行与管理装置100可包含脚本扩展模块130。脚本扩展模块130向调度器140请求外部游戏服务器通信,且将通信结果传回到脚本转译模块120。
在执行基于脚本语言开发的任务文件的同时,可能需要除了从脚本语言自身提供的功能以及外部游戏服务器300中的任务执行之外的额外功能。举例而言,应用编程语言的库可用于任务文件中。另外,在执行任务文件的同时,有必要与另一外部游戏服务器300通信与链接。
脚本扩展模块130调用调度器140的导出函数。即,调度器140与外部游戏服务器300通信且将任务结果通知给脚本转译模块120。
根据本发明的实施例,脚本转译模块120以及脚本扩展模块130可通过脚本语言所提供的应用程序用应用编程语言开发。
脚本转译模块130也可用DLL文件来实施。此是为了在不同脚本语言之间容易与调度器140链接,如同脚本转译模块120。
脚本扩展模块130向调度器140导出函数,此函数用以与另一游戏服务器通信。由于导出函数可仅在任务文件内调用,因此其可用不同脚本语言创建以及使用单独原型(proto type)。
当通过调用任务文件的源代码中的函数以及参数而确定在外部游戏服务器300中存在待执行的任务同时脚本转译模块120在执行中时,脚本扩展模块130与外部游戏服务器300通信。此时,脚本扩展模块130向调度器140请求与外部游戏服务器300的任务执行有关的通信。
举例而言,如上文所述,当存在与外部游戏服务器300链接的待处理的任务或外部游戏服务器300执行编程语言功能当中的必要功能时,进行通信请求。
另外,尽管上文描述脚本转译模块120以及脚本扩展模块130具有DLL文件格式,但用于本发明中的脚本语言为Python。因此,根据本发明,用于执行脚本转译模块120以及脚本扩展模块130的功能的文件扩展名为pyd。Python脚本仅读取以及使用pyd文件。
图2为游戏服务器的任务文件执行与管理装置的实施语言分类图。在下文的描述中,在图1与图2的描述之间的重叠将被省略。
参看图2,存储于脚本开发模块110中的脚本文件(即,任务文件)是用脚本语言实施的。另外,运行以用于执行服务器中的任务文件的调度器140是用应用编程语言(即,编译语言)实施的。
为了对其进行链接,脚本转译模块120以及脚本扩展模块130可通过脚本语言(例如,Python)所提供的应用程序用应用编程语言(例如,C++)来实施。因此,调度器140执行脚本文件111的相同效应可得以达成,且脚本文件111的替换可在所有游戏服务器操作的同时不受限制地进行。
图3为说明调度器的详细结构的框图。
参看图3,调度器包含计时器141、执行任务确认单元142、设置文件存储单元143、脚本调用接口144以及设置修改单元145。
计时器141周期性地产生确认当前是否存在待处理的任务的信号。当在根据本发明的游戏服务器的任务文件执行与管理装置100的初始化期间读取设置文件时,可设置计时器141产生信号的时间以及周期。
执行任务确认单元142通过在信号从计时器141产生时使用存储于设置文件存储单元143中的设置文件来确定当前是否存在待处理的任务,且接着,从设置文件提取有关对应于待处理的任务的任务文件的信息。
当从执行任务确认单元142接收有关任务文件的所提取信息时,脚本调用接口144将所接收信息传输到脚本转译模块120以便执行任务文件。
设置修改单元145为用于在任务文件执行期间修改设置文件的组件。当设置文件上的内容(即,有关任务文件的信息)改变时,调度器140自动地检测改变且读取新的设置文件以便更新任务执行计划。
另外,调度器140可还包含用于与外部游戏服务器300通信的通信单元(未图示)。通信单元通过网络或代码链接连接到外部游戏服务器300,使得其在任务文件执行期间响应于来自脚本扩展模块130的请求在必要时执行通信以及任务。
图4为说明在脚本文件的类型改变时的配置改变的示意图。
根据本发明,尽管Python(即,脚本语言)用作任务文件的实施语言,但诸如Java Script的不同脚本语言可用作任务文件的植入语言。在图4的描述中,当前使用的脚本语言表示为S 1且不同脚本语言表示为S2。因此,在图4中所示的两对脚本转译模块以及脚本扩展模块当中,在用S 1所指示的区块中的模块分别表示为第一脚本转译模块120以及第一脚本扩展模块130,且在用S2所指示的区块中的模块分别表示为第二脚本转译模块121以及第二脚本扩展模块131。
为了执行用不同脚本语言实施的脚本文件112,第一脚本转译模块120以及第一脚本扩展模块130需要用以不同脚本语言实施的第二脚本转译模块121以及第二脚本扩展模块131来替换。
如上文所述,与调度器140分离,第一脚本转译模块120以及第二脚本扩展模块130是以DLL文件格式来实施的。因此,在无调度器140的修改的情况下,用应用编程语言实施的第二脚本转译模块121以及第二脚本扩展模块131可通过不同脚本语言S2所提供的应用程序来容易地替换以及使用。这样,可不管脚本语言而不受限制地使用服务。
图5为说明脚本转译模块的详细结构的框图。在下文的描述中,在图1至图4的描述之间的重叠将被省略。
参看图5,脚本转译模块120包含:转译应用程序122,其用于调用将用在应用编程语言的函数以及参数;以及内部编译器123,其用于在内部编译任务文件以执行所调用的函数以及参数。
脚本转译模块120可另外包含文件执行单元124,其用于通过使用经编译任务文件的源代码中的函数以及参数来执行任务文件。
一旦任务文件(即,脚本文件111)的函数以及参数通过脚本转译模块120来调用,则任务通过内部编译器123以及文件执行单元124来执行。另外,文件的执行结果可通过调度器140输出到开发者终端200。
图6为说明通过脚本扩展模块实现的外部函数调用功能的示意图。在下文的描述中,在图1至图5的描述之间的重叠将被省略。
参看图6,在任务文件执行于脚本转译模块120的文件执行单元124中的同时,如果外部游戏服务器300中的函数被调用,那么用于调用外部函数的功能返回到脚本扩展模块130。当脚本扩展模块130向调度器140请求与外部游戏服务器300的通信时,调度器140通过与外部游戏服务器300的通信调用函数且传回结果。调度器140顺序地将所传回结果递送到文件执行单元124,使得任务文件连续地执行于文件执行单元124中。
图7为根据本发明的实施例的游戏服务器的任务文件执行与管理方法的流程图。在下文的描述中,在图1至图6的描述之间的重叠将被省略。
图7为游戏服务器的任务文件执行与管理装置的实施语言分类图。
首先,在操作S 10中,调度器140在过程开始的同时分析设置文件。设置文件包含计时器141产生任务确认信号的时间以及周期。另外,设置文件包含每次待处理的任务文件(即,脚本文件)以及文件中的函数名称,使得调度器140在操作S20中对其进行读取且每次设置任务。
接着,在操作S30中,调度器140与脚本转译模块120链接而初始化脚本转译模块120的操作,且开始执行以便执行任务文件。
在操作S30之后,任务在每当脚本转译模块120周期性地确认任务文件时得以执行,直到所有任务终止为止。
在任务文件执行期间,连续地执行在操作S40中确定与外部服务器(例如,外部游戏服务器)的通信是否为必要的。如果确定与外部服务器(例如,外部游戏服务器)的通信为必要的,那么在操作S70中,脚本转译模块120从脚本扩展模块130调用用于请求与外部游戏服务器300的通信的函数。在此状况下,在操作S 80中,通过脚本扩展模块130以及调度器140执行与外部游戏服务器300的通信以及任务。
连续地重复包含操作S40、S70以及S80的任务文件执行操作,直到在操作S50中根据脚本转译模块120以及调度器140的设置文件终止操作为止。
当终止所有任务文件的执行时,在操作S60中,在脚本转译模块中清除所列出以及所调用的函数。
必要时,当改变实施任务文件的脚本语言或任务文件的设置文件时,可再次执行操作S 10或S30。然而,在此状况中并不包含用于修改调度器140中的源代码的操作。即,由于存在用需要编译的应用编程语言实施的调度器140中的源代码未经修改的调度器140,以及包含单独文件的脚本转译模块120以及脚本扩展模块130,因此使用者可在不重新启动调度器140的情况下修改以及转换任务。
详细地说,脚本转译模块120执行任务文件的操作S30包含通过调度器140分析设置文件以确定是否存在待处理的任务,以及从设置文件提取有关对应于调度器140分析的待处理的任务的任务文件的信息以便将所提取信息传输到脚本转译模块120。
接着,根据有关任务文件的信息,脚本转译模块从存储多个任务文件的脚本开发模块选择用脚本语言实施的任务文件。所选择任务文件是通过调用任务文件的源代码中的函数以及参数而执行于脚本转译模块120中。
Claims (15)
1.一种游戏服务器的任务文件执行与管理装置,其包括:
调度器,其使用应用编程语言来实施以传输有关待处理的任务文件的信息;
脚本开发模块,其存储用脚本语言开发的多个文件;以及
脚本转译模块,其通过使用从所述调度器传输的有关所述任务文件的所述信息从所述脚本开发模块选择且接收待处理的所述任务文件,且调用所述任务文件的源代码中的函数以及参数以便执行所述任务文件。
2.根据权利要求1所述的任务文件执行与管理装置,其特征在于所述调度器包括:
计时器,其周期性地产生用于确认是否存在待处理的任务的信号;
执行任务确认单元,其从预先存储的设置文件确定是否存在所述待处理的任务,且提取有关对应于所述待处理的任务的任务文件的信息;以及
脚本调用接口,其将有关所述任务文件的所述所提取信息传输到所述脚本转译模块。
3.根据权利要求2所述的任务文件执行与管理装置,其特征在于有关所述任务文件的所述信息包括有关以下各者的信息中的至少一者:任务的名称、任务开始时间、任务重复执行周期、任务文件的名称,以及用于执行任务的逻辑实施于所述任务文件的所述源代码中的函数的名称。
4.根据权利要求1所述的任务文件执行与管理装置,其还包括脚本扩展模块,所述脚本扩展模块通过所述调度器请求与外部游戏服务器的通信,且将通信结果传回到所述脚本转译模块。
5.根据权利要求4所述的任务文件执行与管理装置,其特征在于所述脚本转译模块以及所述脚本扩展模块是用所述应用编程语言实施,藉此与所述调度器链接。
6.根据权利要求4所述的任务文件执行与管理装置,其特征在于所述脚本转译模块以及所述脚本扩展模块是用动态链接库(DLL)文件实施。
7.根据权利要求5所述的任务文件执行与管理装置,其特征在于所述脚本转译模块包括:
转译应用程序,其调用将用在所述应用编程语言的所述函数以及所述参数;以及
内部编译器,其执行编译以执行所述所调用的函数以及参数。
8.根据权利要求4所述的任务文件执行与管理装置,其特征在于,当在所述函数以及所述参数的执行期间确定在所述外部游戏服务器中存在待处理的任务时,所述脚本扩展模块向所述调度器请求到所述外部游戏服务器的用于任务执行的通信。
9.一种执行以及管理游戏者服务器的任务文件的方法,所述方法包括:
通过经由调度器加载预先存储的设置文件来分析当前是否存在待处理的任务,所述调度器是使用应用编程语言来实施的;
从所述设置文件提取有关对应于所述待处理的任务的任务文件的信息且通过所述调度器传输所述所提取信息;
通过脚本转译模块根据有关所述任务文件的所述信息从脚本开发模块选择所述任务文件,所述脚本开发模块存储用脚本语言开发的多个任务文件;以及
通过所述脚本转译模块调用且执行所述所选择任务文件的源代码中的函数以及参数。
10.根据权利要求9所述的方法,其特征在于是否存在待处理的任务的所述分析包括通过执行任务确认单元从所述设置文件确定是否存在所述待处理的任务,所述执行任务确认单元接收周期性地从计时器产生的处理任务确认信号。
11.根据权利要求9所述的方法,其特征在于有关所述任务文件的所述信息包括有关以下各者的信息中的至少一者:任务的名称、任务开始时间、任务重复执行周期、任务文件的名称,以及用于执行任务的逻辑实施于所述任务文件的所述源代码中的函数的名称。
12.根据权利要求9所述的方法,其还包括通过脚本扩展模块,通过所述调度器请求与外部游戏服务器的通信,且将通信结果传回到所述脚本转译模块。
13.根据权利要求12所述的方法,其特征在于所述脚本转译模块以及所述脚本扩展模块是用所述应用编程语言实施,藉此与所述调度器链接。
14.根据权利要求13所述的方法,其特征在于所述函数以及所述参数的所述执行包括:
通过转译应用程序调用将用在所述应用编程语言的所述函数以及所述参数;以及
通过内部编译器执行编译以执行所述所调用的函数以及参数。
15.根据权利要求14所述的方法,其特征在于,如果确定在所述外部游戏服务器中存在待处理的任务同时所述经编译的函数以及参数处于执行中,那么所述通信结果的所述传回得以执行。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110059193A KR101264615B1 (ko) | 2011-06-17 | 2011-06-17 | 게임 서버의 작업 파일 실행 장치 및 방법 |
KR10-2011-0059193 | 2011-06-17 | ||
PCT/KR2012/004482 WO2012173355A2 (ko) | 2011-06-17 | 2012-06-07 | 게임 서버의 작업 파일 실행 장치 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103180827A true CN103180827A (zh) | 2013-06-26 |
Family
ID=47357575
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012800007885A Pending CN103180827A (zh) | 2011-06-17 | 2012-06-07 | 游戏服务器中的任务文件执行装置以及方法 |
Country Status (3)
Country | Link |
---|---|
KR (1) | KR101264615B1 (zh) |
CN (1) | CN103180827A (zh) |
WO (1) | WO2012173355A2 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104679489A (zh) * | 2013-12-02 | 2015-06-03 | 厦门极致互动网络技术有限公司 | 一种在网络游戏客户端中内置网络浏览器的系统及方法 |
CN107315576A (zh) * | 2016-04-26 | 2017-11-03 | 中兴通讯股份有限公司 | 一种动态扩展软件流程的方法和系统 |
CN108512688A (zh) * | 2017-11-29 | 2018-09-07 | 中国平安人寿保险股份有限公司 | 网络节点配置方法和终端 |
CN109597618A (zh) * | 2018-10-23 | 2019-04-09 | 深圳微迅信息科技有限公司 | 程序开发方法、装置、计算机设备及存储介质 |
CN111803950A (zh) * | 2019-04-26 | 2020-10-23 | 厦门雅基软件有限公司 | 网页游戏的数据处理方法、装置、电子设备及存储介质 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105556504A (zh) | 2013-06-24 | 2016-05-04 | 惠普发展公司,有限责任合伙企业 | 从物理流生成逻辑表示 |
KR101860642B1 (ko) * | 2016-10-14 | 2018-05-23 | 한국전력공사 | 소스코드 변경 영향 평가를 이용한 불법 행위 감시 장치 및 그 방법 |
CN110083358B (zh) * | 2019-04-29 | 2023-06-20 | 南京国电南自轨道交通工程有限公司 | 基于脚本语言的修改牵引自投装置开关编号的工具 |
WO2022032476A1 (zh) * | 2020-08-11 | 2022-02-17 | 厦门雅基软件有限公司 | 网页游戏的数据处理方法、装置、电子设备及计算机可读存储介质 |
KR102649690B1 (ko) * | 2023-02-02 | 2024-03-21 | 쿠팡 주식회사 | 전자 장치 및 그의 작업 스케줄 관리 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1527195A (zh) * | 2003-03-07 | 2004-09-08 | 珠海市西山居软件有限公司 | 应用于电脑游戏的脚本执行方法 |
CN1738307A (zh) * | 2004-08-20 | 2006-02-22 | 中兴通讯股份有限公司 | 一种集成系统中子系统调度和驱动的装置及方法 |
CN101739277A (zh) * | 2009-12-08 | 2010-06-16 | 南京联创科技集团股份有限公司 | 基于自定义脚本方式管理业务监控系统的方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06236349A (ja) * | 1993-02-10 | 1994-08-23 | Matsushita Electric Ind Co Ltd | コマンドスクリプト解釈処理装置 |
JP2004086890A (ja) | 2003-08-19 | 2004-03-18 | Hitachi Ltd | アプリケーションプログラムの供給方法、スマートカード、スクリプト供給方法、端末装置およびアプリケーションプログラムを有する記憶媒体 |
JP2005275522A (ja) * | 2004-03-23 | 2005-10-06 | Nomura Research Institute Ltd | バッチ処理システム |
US20080244514A1 (en) * | 2007-03-29 | 2008-10-02 | Microsoft Corporation | Scriptable object model for network based services |
-
2011
- 2011-06-17 KR KR1020110059193A patent/KR101264615B1/ko not_active IP Right Cessation
-
2012
- 2012-06-07 WO PCT/KR2012/004482 patent/WO2012173355A2/ko active Application Filing
- 2012-06-07 CN CN2012800007885A patent/CN103180827A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1527195A (zh) * | 2003-03-07 | 2004-09-08 | 珠海市西山居软件有限公司 | 应用于电脑游戏的脚本执行方法 |
CN1738307A (zh) * | 2004-08-20 | 2006-02-22 | 中兴通讯股份有限公司 | 一种集成系统中子系统调度和驱动的装置及方法 |
CN101739277A (zh) * | 2009-12-08 | 2010-06-16 | 南京联创科技集团股份有限公司 | 基于自定义脚本方式管理业务监控系统的方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104679489A (zh) * | 2013-12-02 | 2015-06-03 | 厦门极致互动网络技术有限公司 | 一种在网络游戏客户端中内置网络浏览器的系统及方法 |
CN107315576A (zh) * | 2016-04-26 | 2017-11-03 | 中兴通讯股份有限公司 | 一种动态扩展软件流程的方法和系统 |
CN108512688A (zh) * | 2017-11-29 | 2018-09-07 | 中国平安人寿保险股份有限公司 | 网络节点配置方法和终端 |
CN109597618A (zh) * | 2018-10-23 | 2019-04-09 | 深圳微迅信息科技有限公司 | 程序开发方法、装置、计算机设备及存储介质 |
CN111803950A (zh) * | 2019-04-26 | 2020-10-23 | 厦门雅基软件有限公司 | 网页游戏的数据处理方法、装置、电子设备及存储介质 |
CN111803950B (zh) * | 2019-04-26 | 2022-08-16 | 厦门雅基软件有限公司 | 网页游戏的数据处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
KR20120139403A (ko) | 2012-12-27 |
WO2012173355A3 (ko) | 2013-03-28 |
WO2012173355A2 (ko) | 2012-12-20 |
KR101264615B1 (ko) | 2013-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103180827A (zh) | 游戏服务器中的任务文件执行装置以及方法 | |
CN110603527B (zh) | 用于服务器侧生产代码的条件调试的方法、系统和设备 | |
CN106250178A (zh) | 通过多语言云编译实现系统动态功能在线拦截扩展的方法 | |
CN106293808A (zh) | 多语言云编译实现系统功能动态拦截扩展的方法及系统 | |
US20080104096A1 (en) | Software development system | |
US20130227528A1 (en) | Paradigm for concurrency testcase generation | |
CN106293863A (zh) | 多语言云编译实现系统功能动态扩展替换的方法及系统 | |
US20180032320A1 (en) | Computer-implemented method for allowing modification of a region of original code | |
US20110126179A1 (en) | Method and System for Dynamic Patching Software Using Source Code | |
CN103649907A (zh) | 高度并发处理任务的记录和执行 | |
CN106250179A (zh) | 通过多语言云编译实现系统动态功能拦截扩展的方法 | |
CN114818565A (zh) | 基于python的仿真环境管理平台、方法、设备及介质 | |
CN109558318A (zh) | 一种代码管理方法和代码仓库分布式系统 | |
US7788659B1 (en) | Method of converting computer program with loops to one without loops | |
EP3380899B1 (en) | Program randomization for cyber-attack resilient control in programmable logic controllers | |
Bouraqadi et al. | Test-driven development for generated portable Javascript apps | |
CN102004648A (zh) | 程序定制方法和装置 | |
Bilgin | Mastering Cross-Platform Development with Xamarin | |
CN111208991B (zh) | 基于工作流的程序开发方法、电子设备及存储介质 | |
EP3619612B1 (en) | Temporary de-optimization of target functions in a cloud debugger | |
Schulz-Rosengarten et al. | Modal reactors | |
Watanabe et al. | iArch-U: interface-centric integrated uncertainty-aware development environment | |
Masud et al. | Automatic inference of task parallelism in task-graph-based actor models | |
CN109947476B (zh) | 一种运行时栈空间的统计方法及系统 | |
Wojszczyk et al. | Performance analysis of extracting object structure from source code |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130626 |