亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

游戲服務(wù)器中的任務(wù)文件執(zhí)行裝置以及方法

文檔序號:6396968閱讀:214來源:國知局
專利名稱:游戲服務(wù)器中的任務(wù)文件執(zhí)行裝置以及方法
技術(shù)領(lǐng)域
本發(fā)明涉及用于執(zhí)行以及管理游戲服務(wù)器中的計劃任務(wù)文件的技術(shù)。更詳細(xì)來說,本發(fā)明涉及用于實現(xiàn)增強的可用性以及可擴展性的文件執(zhí)行與管理技術(shù),其中在編輯以及執(zhí)行為開發(fā)游戲服務(wù)器而創(chuàng)建的文件的同時,無限制修改成為可能,且不受限制地進行與另一游戲服務(wù)器的通信。
背景技術(shù)
關(guān)于用于執(zhí)行網(wǎng)頁游戲(web board game)的游戲服務(wù)器的操作,需要根據(jù)任務(wù)來開發(fā)游戲服務(wù)器的操作所需的多種執(zhí)行文件。用以開發(fā)游戲服務(wù)器的操作所必需的執(zhí)行文件的編程語目為諸如C++的典型的應(yīng)用編程語目。應(yīng)用編程語言也被稱為編譯語言。原因在于,在程序源代碼編寫好之后,其通過編譯而轉(zhuǎn)換為匯編語言的二進制文件且接著被執(zhí)行。應(yīng)用編程語言僅在計算機的處理器以及操作系統(tǒng)準(zhǔn)備好時在編譯之后立即執(zhí)行,且其執(zhí)行速度為快速的。在游戲服務(wù)器的開發(fā)以及管理方面,為了獲得執(zhí)行速度,通常使用應(yīng)用編程語言。然而,如上文所述,由于應(yīng)用編程語言需要經(jīng)歷將源代碼轉(zhuǎn)換為二進制代碼的編譯過程才能被執(zhí)行,因此如果文件內(nèi)容需要修改,那么需要操作二進制文件來重新啟動以便修改源代碼。此外,除了用于編寫代碼的典型的應(yīng)用編程語言之外,還存在腳本語言。由于腳本語言是由另一應(yīng)用程序而非由計算機處理器轉(zhuǎn)譯以及執(zhí)行,因此不存在執(zhí)行文件。盡管腳本語言的編寫可快于典型的應(yīng)用編程語言,但其與經(jīng)編譯的程序相比花費較長的時間來執(zhí)行。此外,文件內(nèi)容可能需要在游戲服務(wù)器操作期間實時地進行修改。舉例而言,在有限時間內(nèi)開放或出售游戲中的特定物品以及推出新年的特殊事件需要實施于游戲服務(wù)器中。通常,在此些狀況下,修改文件內(nèi)容以便在臨時維護或例行維護時間期間執(zhí)行相應(yīng)事件,這通??稍谟螒蛑锌吹?。當(dāng)修改文件內(nèi)容時,插入指明開放或出售物品或者發(fā)生事件的時刻的計時器,使得在計時器達(dá)到此時刻時,文件被執(zhí)行以運行事件。在此狀況下,由于事件需要對應(yīng)于服務(wù)器維護時間來規(guī)劃,因此游戲開發(fā)者被迫以服務(wù)器維護時間為基礎(chǔ)來對事件進行安排。因此,難以快速地對游戲服務(wù)器操作作出反應(yīng)。此外,即使事件結(jié)束,由于對應(yīng)于此事件的代碼保留于文件內(nèi)容中直到下一次維護為止,因此在文件內(nèi)容中存在不必保留的代碼。

發(fā)明內(nèi)容
技術(shù)問題本發(fā)明提供游戲服務(wù)器的任務(wù)文件執(zhí)行與管理技術(shù),此技術(shù)同時執(zhí)行游戲服務(wù)器的操作所必需的文件且通過無限制修改來有效地執(zhí)行各種任務(wù)。另外,本發(fā)明提供用于以與使用另一語言的外部游戲服務(wù)器的無限制鏈接在服務(wù)器操作方面進行擴展的技術(shù)。
技術(shù)解決方案根據(jù)本發(fā)明的一方面,一種游戲服務(wù)器的任務(wù)文件執(zhí)行與管理裝置包含:調(diào)度器,其使用應(yīng)用編程語言來實施以傳輸有關(guān)待處理的任務(wù)文件的信息;腳本開發(fā)模塊,其存儲用腳本語言開發(fā)的多個文件;以及腳本轉(zhuǎn)譯模塊,其通過使用從所述調(diào)度器傳輸?shù)挠嘘P(guān)所述待處理的任務(wù)文件的所述信息從所述腳本開發(fā)模塊選擇且接收所述任務(wù)文件,且調(diào)用所述任務(wù)文件的源代碼中的函數(shù)以及參數(shù)以便執(zhí)行所述任務(wù)文件。所述調(diào)度器可包含:計時器,其周期性地產(chǎn)生用于確認(rèn)是否存在待處理的任務(wù)的信號;執(zhí)行任務(wù)確認(rèn)單元,其從預(yù)先存儲的設(shè)置文件確定是否存在所述待處理的任務(wù),且提取有關(guān)對應(yīng)于所述待處理的任務(wù)的任務(wù)文件的信息;以及腳本調(diào)用接口,其將有關(guān)所述任務(wù)文件的所述所提取信息傳輸?shù)剿瞿_本轉(zhuǎn)譯模塊。有關(guān)所述任務(wù)文件的所述信息可包含有關(guān)以下各者的信息中的至少一者:任務(wù)的名稱、任務(wù)開始時間、任務(wù)重復(fù)執(zhí)行周期、任務(wù)文件的名稱,以及用于執(zhí)行任務(wù)的邏輯實施于所述任務(wù)文件的所述源代碼中的函數(shù)的名稱。所述任務(wù)文件執(zhí)行與管理裝置可還包含腳本擴展模塊,所述腳本擴展模塊通過所述調(diào)度器請求與外部游戲服務(wù)器的通信,且將通信結(jié)果傳回到所述腳本轉(zhuǎn)譯模塊。所述腳本轉(zhuǎn)譯模塊以及所述腳本擴展模塊可用所述應(yīng)用編程語言實施,藉此與所述調(diào)度器鏈接。所述腳本轉(zhuǎn)譯模塊以及所述腳本擴展模塊可用動態(tài)鏈接庫(Dynamic LinkingLibrary ;DLL)文件實施。所述腳本轉(zhuǎn)譯模塊可包含:轉(zhuǎn)譯應(yīng)用程序,其調(diào)用將用在所述應(yīng)用編程語言的所述函數(shù)以及所述參數(shù);以及內(nèi)部編譯器,其執(zhí)行編譯以執(zhí)行所述所調(diào)用的函數(shù)以及參數(shù)。當(dāng)在所述函數(shù)以及所述參數(shù)的執(zhí)行期間確定在所述外部游戲服務(wù)器中存在待處理的任務(wù)時,所述腳本擴展模塊可向所述調(diào)度器請求到所述外部游戲服務(wù)器的用于任務(wù)執(zhí)行的通信。根據(jù)本發(fā)明的另一方面,一種執(zhí)行以及管理游戲者服務(wù)器的任務(wù)文件的方法包含:通過經(jīng)由調(diào)度器加載預(yù)先存儲的設(shè)置文件來分析當(dāng)前是否存在待處理的任務(wù),所述調(diào)度器是使用應(yīng)用編程語言來實施的;從所述設(shè)置文件提取有關(guān)對應(yīng)于所述待處理的任務(wù)的任務(wù)文件的信息且通過所述調(diào)度器傳輸所述所提取信息;通過腳本轉(zhuǎn)譯模塊根據(jù)有關(guān)所述任務(wù)文件的所述信息從腳本開發(fā)模塊選擇所述任務(wù)文件,所述腳本開發(fā)模塊存儲用腳本語言開發(fā)的多個任務(wù)文件;以及通過所述腳本轉(zhuǎn)譯模塊調(diào)用且執(zhí)行所述所選擇任務(wù)文件的源代碼中的函數(shù)以及參數(shù)。是否存在待處理的任務(wù)的所述分析可包含通過執(zhí)行任務(wù)確認(rèn)單元從所述設(shè)置文件確定是否存在所述待處理的任務(wù),所述執(zhí)行任務(wù)確認(rèn)單元接收周期性地從計時器產(chǎn)生的處理任務(wù)確認(rèn)/[目號。有關(guān)所述任務(wù)文件的所述信息可包含有關(guān)以下各者的信息中的至少一者:任務(wù)的名稱、任務(wù)開始時間、任務(wù)重復(fù)執(zhí)行周期、任務(wù)文件的名稱,以及用于執(zhí)行任務(wù)的邏輯實施于所述任務(wù)文件的所述源代碼中的函數(shù)的名稱。所述方法可還包含通過腳本擴展模塊,通過所述調(diào)度器請求與外部游戲服務(wù)器的通信,且將通信結(jié)果傳回到所述腳本轉(zhuǎn)譯模塊。
所述腳本轉(zhuǎn)譯模塊以及所述腳本擴展模塊可用所述應(yīng)用編程語言實施,藉此與所述調(diào)度器鏈接。所述函數(shù)以及所述參數(shù)的所述執(zhí)行可包含:通過轉(zhuǎn)譯應(yīng)用程序調(diào)用將用在所述應(yīng)用編程語言的所述函數(shù)以及所述參數(shù);以及通過內(nèi)部編譯器執(zhí)行編譯以執(zhí)行所述所調(diào)用的函數(shù)以及參數(shù)。如果確定在所述外部游戲服務(wù)器中存在待處理的任務(wù)同時所述經(jīng)編譯的函數(shù)以及參數(shù)處于執(zhí)行中,那么所述通信結(jié)果的所述傳回可得以執(zhí)行。有益效果根據(jù)本發(fā)明,用不需要編譯的腳本語言開發(fā)的任務(wù)文件可執(zhí)行于調(diào)度器、腳本轉(zhuǎn)譯模塊以及腳本擴展模塊中,此三者是使用編譯語言來實施的。因此,在不需要編譯的任務(wù)文件修改期間,由于所修改任務(wù)在任務(wù)文件修改之后在不重新啟動文件的情況下立即反映在服務(wù)器上,因此需要實時運行的諸如游戲中的事件的任務(wù)操作變得更便利。此外,由于與用另一語言實施的外部游戲服務(wù)器不受限制地進行通信,因此即使在任務(wù)文件是用腳本語言實施時,功能使用方面的擴展仍不受限制。


圖1為根據(jù)本發(fā)明的實施例的游戲服務(wù)器的任務(wù)文件執(zhí)行與管理裝置的結(jié)構(gòu)圖。圖2為游戲服務(wù)器的任務(wù)文件執(zhí)行與管理裝置的實施語言分類圖。圖3為說明調(diào)度器的詳細(xì)結(jié)構(gòu)的框圖。圖4為說明在腳本文件的類型改變時的配置改變的示意圖。圖5為說明腳本轉(zhuǎn)譯模塊的詳細(xì)結(jié)構(gòu)的框圖。圖6為說明通過腳本擴展模塊實現(xiàn)的外部函數(shù)調(diào)用功能的示意圖。圖7為根據(jù)本發(fā)明的實施例的游戲服務(wù)器的任務(wù)文件執(zhí)行與管理方法的流程圖。
具體實施例方式根據(jù)本發(fā)明的一方面,一種游戲服務(wù)器的任務(wù)文件執(zhí)行與管理裝置包含:調(diào)度器,其使用應(yīng)用編程語言來實施以傳輸有關(guān)待處理的任務(wù)文件的信息;腳本開發(fā)模塊,其存儲用腳本語言開發(fā)的多個文件;以及腳本轉(zhuǎn)譯模塊,其通過使用從所述調(diào)度器傳輸?shù)挠嘘P(guān)所述待處理的任務(wù)文件的所述信息從所述腳本開發(fā)模塊選擇且接收所述任務(wù)文件,且調(diào)用所述任務(wù)文件的源代碼中的函數(shù)以及參數(shù)以便執(zhí)行所述任務(wù)文件。所述調(diào)度器可包含:計時器,其周期性地產(chǎn)生用于確認(rèn)是否存在待處理的任務(wù)的信號;執(zhí)行任務(wù)確認(rèn)單元,其從預(yù)先存儲的設(shè)置文件確定是否存在所述待處理的任務(wù),且提取有關(guān)對應(yīng)于所述待處理的任務(wù)的任務(wù)文件的信息;以及腳本調(diào)用接口,其將有關(guān)所述任務(wù)文件的所述所提取信息傳輸?shù)剿瞿_本轉(zhuǎn)譯模塊。有關(guān)所述任務(wù)文件的所述信息可包含有關(guān)以下各者的信息中的至少一者:任務(wù)的名稱、任務(wù)開始時間、任務(wù)重復(fù)執(zhí)行周期、任務(wù)文件的名稱,以及用于執(zhí)行任務(wù)的邏輯實施于所述任務(wù)文件的所述源代碼中的函數(shù)的名稱。所述任務(wù)文件執(zhí)行與管理裝置可還包含腳本擴展模塊,所述腳本擴展模塊通過所述調(diào)度器請求與外部游戲服務(wù)器的通信,且將通信結(jié)果傳回到所述腳本轉(zhuǎn)譯模塊。
所述腳本轉(zhuǎn)譯模塊以及所述腳本擴展模塊可用所述應(yīng)用編程語言實施,藉此與所述調(diào)度器鏈接。所述腳本轉(zhuǎn)譯模塊以及所述腳本擴展模塊可用動態(tài)鏈接庫(DLL)文件實施。所述腳本轉(zhuǎn)譯模塊可包含:轉(zhuǎn)譯應(yīng)用程序,其調(diào)用將用在所述應(yīng)用編程語言的所述函數(shù)以及所述參數(shù);以及內(nèi)部編譯器,其執(zhí)行編譯以執(zhí)行所述所調(diào)用的函數(shù)以及參數(shù)。當(dāng)在所述函數(shù)以及所述參數(shù)的執(zhí)行期間確定在所述外部游戲服務(wù)器中存在待處理的任務(wù)時,所述腳本擴展模塊可向所述調(diào)度器請求到所述外部游戲服務(wù)器的用于任務(wù)執(zhí)行的通信。根據(jù)本發(fā)明的另一方面,一種執(zhí)行以及管理游戲者服務(wù)器的任務(wù)文件的方法包含:通過經(jīng)由調(diào)度器加載預(yù)先存儲的設(shè)置文件來分析當(dāng)前是否存在待處理的任務(wù),所述調(diào)度器是使用應(yīng)用編程語言來實施的;從所述設(shè)置文件提取有關(guān)對應(yīng)于所述待處理的任務(wù)的任務(wù)文件的信息且通過所述調(diào)度器傳輸所述所提取信息;通過腳本轉(zhuǎn)譯模塊根據(jù)有關(guān)所述任務(wù)文件的所述信息從腳本開發(fā)模塊選擇所述任務(wù)文件,所述腳本開發(fā)模塊存儲用腳本語言開發(fā)的多個任務(wù)文件;以及通過所述腳本轉(zhuǎn)譯模塊調(diào)用且執(zhí)行所述所選擇任務(wù)文件的源代碼中的函數(shù)以及參數(shù)。是否存在待處理的任務(wù)的所述分析可包含通過執(zhí)行任務(wù)確認(rèn)單元從所述設(shè)置文件確定是否存在所述待處理的任務(wù),所述執(zhí)行任務(wù)確認(rèn)單元接收周期性地從計時器產(chǎn)生的處理任務(wù)確認(rèn)/[目號。有關(guān)所述任務(wù)文件的所述信息可包含有關(guān)以下各者的信息中的至少一者:任務(wù)的名稱、任務(wù)開始時間、任務(wù)重復(fù)執(zhí)行周期、任務(wù)文件的名稱,以及用于執(zhí)行任務(wù)的邏輯實施于所述任務(wù)文件的所述源代碼中的函數(shù)的名稱。所述方法可還包含通過腳本擴展模塊,通過所述調(diào)度器請求與外部游戲服務(wù)器的通信,且將通信結(jié)果傳回到所述腳本轉(zhuǎn)譯模塊。所述腳本轉(zhuǎn)譯模塊以及所述腳本擴展模塊可用所述應(yīng)用編程語言實施,藉此與所述調(diào)度器鏈接。所述函數(shù)以及所述參數(shù)的所述執(zhí)行可包含:通過轉(zhuǎn)譯應(yīng)用程序調(diào)用將用在所述應(yīng)用編程語言的所述函數(shù)以及所述參數(shù);以及通過內(nèi)部編譯器執(zhí)行編譯以執(zhí)行所述所調(diào)用的函數(shù)以及參數(shù)。如果確定在所述外部游戲服務(wù)器中存在待處理的任務(wù)同時所述經(jīng)編譯的函數(shù)以及參數(shù)處于執(zhí)行中,那么所述通信結(jié)果的所述傳回可得以執(zhí)行。用于本發(fā)明的模式下文中,將參看附圖更詳細(xì)地描述根據(jù)本發(fā)明的實施例的游戲服務(wù)器的任務(wù)文件執(zhí)行與管理裝置以及方法。在下文的描述中,每一實施例并不限制權(quán)利要求書的范疇,且由此,其它等效實施例也為可能的。此外,將排除與眾所周知的功能或配置相關(guān)的詳細(xì)描述,以便不會不必要地混淆本發(fā)明的標(biāo)的。另外,相似參考數(shù)字指代相似組件。圖1為根據(jù)本發(fā)明的實施例的游戲服務(wù)器的任務(wù)文件執(zhí)行與管理裝置的結(jié)構(gòu)圖。參看圖1,根據(jù)本發(fā)明的實施例的游戲服務(wù)器的任務(wù)文件執(zhí)行與管理裝置100包含腳本開發(fā)模塊110、腳本轉(zhuǎn)譯模塊120、腳本擴展模塊130以及調(diào)度器140。
游戲服務(wù)器的任務(wù)文件執(zhí)行與管理裝置100通過腳本轉(zhuǎn)譯模塊120執(zhí)行設(shè)置為在調(diào)度140指明的時間執(zhí)行的任務(wù)文件,且允許調(diào)度器140在必要時在任務(wù)文件執(zhí)行期間通過腳本擴展模塊130與外部游戲服務(wù)器300通信。腳本開發(fā)模塊110通過任務(wù)單元來存儲腳本文件,此腳本文件為調(diào)度器140通過腳本轉(zhuǎn)譯模塊120執(zhí)行的任務(wù)文件。腳本文件創(chuàng)建于腳本語言開發(fā)高(development tall)中,且在調(diào)試之后存儲于腳本開發(fā)模塊110中。由于腳本文件不需要編譯且本發(fā)明中所執(zhí)行的任務(wù)文件為腳本文件,因此開發(fā)者通過開發(fā)終端200訪問腳本開發(fā)模塊110,且接著在任務(wù)文件執(zhí)行期間不受限制地編輯腳本文件的代碼。即,在編輯腳本文件的同時,游戲服務(wù)器的任務(wù)文件執(zhí)行與管理裝置100的操作可繼續(xù)。存儲于腳本開發(fā)模塊110中的任務(wù)文件由調(diào)度器140在預(yù)定時間處理。根據(jù)本發(fā)明,用腳本語言開發(fā)的一個腳本文件為一個任務(wù)文件。如果腳本文件為用于區(qū)別任務(wù)的方式,那么在一個腳本文件中可存在多個任務(wù)文件,或在一個任務(wù)文件中可存在多個腳本文件。根據(jù)本發(fā)明的實施例,用于腳本開發(fā)模塊110中的腳本語言可包含Python。作為面向?qū)ο蟮木幊陶Z言的Python在程序語句中具有縮進(indentation)以便改良可讀性,且容易與另一語言鏈接。然而,除了 Python之外,諸如JavaScript的腳本語言也用于本發(fā)明中。調(diào)度器140為用應(yīng)用編程模塊(例如,C++)創(chuàng)建的文件執(zhí)行模塊。將參看圖3描述調(diào)度器140的功能。調(diào)度器140基本上執(zhí)行用于將有關(guān)待處理的任務(wù)文件的信息傳輸?shù)侥_本轉(zhuǎn)譯模塊120的功能。另外,調(diào)度器140可包含用于輸出由腳本轉(zhuǎn)譯模塊120處理的任務(wù)文件的執(zhí)行結(jié)果的功能。調(diào)度器140讀取在啟動初始化期間預(yù)先存儲的設(shè)置文件,以便管理多個任務(wù)文件。設(shè)置文件為具有xml擴展名的文件,且包含有關(guān)以下各者的信息作為有關(guān)任務(wù)文件的信息:待執(zhí)行的任務(wù)的名稱、任務(wù)開始時間、用于重復(fù)任務(wù)的執(zhí)行周期以及計數(shù)、對應(yīng)于任務(wù)的任務(wù)文件的名稱,以及具有用以執(zhí)行任務(wù)文件的源代碼中的任務(wù)的邏輯的函數(shù)的名稱。調(diào)度器140可包含用于周期性地確認(rèn)當(dāng)前是否存在待執(zhí)行的任務(wù)的構(gòu)件。是否存在待執(zhí)行的任務(wù)可通過比較設(shè)置文件中的任務(wù)的開始時間與作為任務(wù)文件的信息的當(dāng)前檢查時間來確定。如果存在任務(wù),那么調(diào)度器140將有關(guān)任務(wù)文件的信息移交到腳本轉(zhuǎn)譯模塊120,且接著,腳本轉(zhuǎn)譯模塊120執(zhí)行任務(wù)文件。本發(fā)明的游戲服務(wù)器的任務(wù)文件執(zhí)行與管理裝置100包含用需要編譯的應(yīng)用編程語言(例如,C++)開發(fā)的配置以及用腳本語言(例如,Python)開發(fā)的任務(wù)文件的配置。因此,需要負(fù)責(zé)在不同語言之間的轉(zhuǎn)譯以及執(zhí)行的組件。根據(jù)本發(fā)明,用于彼功能的組件可單獨作為具有DLL文件的模塊來提供。為了通過調(diào)度器140的執(zhí)行來執(zhí)行任務(wù)文件,需要轉(zhuǎn)譯與文件執(zhí)行構(gòu)件,以便用應(yīng)用編程語言執(zhí)行基于腳本語言的任務(wù)文件。腳本轉(zhuǎn)譯模塊120為用于執(zhí)行上文的功能的組件。
腳本轉(zhuǎn)譯模塊120從調(diào)度器140接收有關(guān)對應(yīng)于待執(zhí)行的任務(wù)的任務(wù)文件的信息,且通過使用所接收信息從腳本開發(fā)模塊I選擇待處理的任務(wù)文件。接著,腳本轉(zhuǎn)譯模塊120在內(nèi)部編譯所選擇任務(wù)文件的源代碼以便產(chǎn)生字節(jié)代碼,且執(zhí)行此些代碼。通過進行此操作,由于任務(wù)文件如上文所述容易進行編輯,且同時經(jīng)歷編譯過程,因此,如同基于應(yīng)用編程的文件,執(zhí)行速度從第二執(zhí)行變得較快。更詳細(xì)來說,腳本轉(zhuǎn)譯模塊120是以應(yīng)用編程語言為基礎(chǔ)使用從腳本語言提供的轉(zhuǎn)譯應(yīng)用程序來開發(fā)的。腳本轉(zhuǎn)譯模塊120調(diào)用任務(wù)文件的源代碼中的函數(shù)以及參數(shù)。用于本發(fā)明中的腳本語言Python使用Mutex ( g卩,全局解譯器鎖(GlobalInterpreter Lock5GIL))以便支持多線程,且需要在多線程環(huán)境中在腳本轉(zhuǎn)譯模塊120中操作。因此,需要在調(diào)用Python所提供的應(yīng)用程序(例如,轉(zhuǎn)譯應(yīng)用程序)之前在屬于多線程的所有閾值中獲得GIL。如果并非如此,那么轉(zhuǎn)譯應(yīng)用程序可能不會恰當(dāng)?shù)夭僮?,且所獲得的GIL應(yīng)在應(yīng)用程序得到使用之后得以釋放。在內(nèi)部,在任務(wù)文件得到執(zhí)行的同時,腳本轉(zhuǎn)譯模塊120周期性地將過程分配到另一線程。即,Python以如下方式支持多線程:執(zhí)行任務(wù)的預(yù)定字節(jié),且接著將控制移交到另一線程。此時,Python在每一線程上單獨地存儲信息,以便維持每一線程的狀態(tài)。在執(zhí)行上文的功能的同時,腳本轉(zhuǎn)譯模塊120讀取且執(zhí)行任務(wù)文件。腳本轉(zhuǎn)譯模塊120是用動態(tài)鏈接庫(DLL)文件來實施的。用于不同語言轉(zhuǎn)譯以及執(zhí)行的模塊與調(diào)度器140分離。這是為了鏈接,當(dāng)稍后有必要執(zhí)行用另一腳本語言開發(fā)的任務(wù)文件且調(diào)度器140需要與另一腳本語言鏈接時,鏈接僅通過在不編輯調(diào)度器140中的文件的源代碼的情況下替換不同語言的另一腳本轉(zhuǎn)譯模塊120而成為可能。腳本轉(zhuǎn)譯模塊120包含取得繼承任務(wù)文件的接口的對象的指針的功能,以及終止且去除對象的指針的功能。當(dāng)執(zhí)行編譯語言時,腳本語言可通過腳本轉(zhuǎn)譯模塊120來使用。因此,開發(fā)者可實施文件的內(nèi)容,作為在不重新起動游戲服務(wù)器的情況下實時地執(zhí)行游戲所必需的事件執(zhí)行。因此,與事件內(nèi)容在文件內(nèi)容僅在維護期間得到編輯之后插入到文件中或從文件去除的狀況相比,可防止不必要的代碼保留。因此,服務(wù)器操作的效率可得到改進。另外,關(guān)于在游戲服務(wù)器操作期間規(guī)劃特定事件,基于每一者并非服務(wù)器維護時間而規(guī)劃事件。因此,事件可實時地反映在文件內(nèi)容上,有可能對事件規(guī)劃快速地作出反應(yīng)。另外,當(dāng)游戲服務(wù)器僅用編譯語言操作時,與游戲服務(wù)器的常規(guī)功能相關(guān)的程序代碼可能在有關(guān)另一事件執(zhí)行的文件內(nèi)容得到編輯的同時異常地操作。因此,如果需要實時地編輯的與事件有關(guān)的文件是用腳本語言創(chuàng)建且得到執(zhí)行,而編輯任務(wù)是在這段時間執(zhí)行,那么錯寫負(fù)責(zé)重要常規(guī)功能的代碼的可能性可降低。因此,可防止與操作服務(wù)器有關(guān)的故障。根據(jù)本發(fā)明的實施例的游戲服務(wù)器的任務(wù)文件執(zhí)行與管理裝置100可包含腳本擴展模塊130。腳本擴展模塊130向調(diào)度器140請求外部游戲服務(wù)器通信,且將通信結(jié)果傳回到腳本轉(zhuǎn)譯模塊120。在執(zhí)行基于腳本語言開發(fā)的任務(wù)文件的同時,可能需要除了從腳本語言自身提供的功能以及外部游戲服務(wù)器300中的任務(wù)執(zhí)行之外的額外功能。舉例而言,應(yīng)用編程語言的庫可用于任務(wù)文件中。另外,在執(zhí)行任務(wù)文件的同時,有必要與另一外部游戲服務(wù)器300通信與鏈接。腳本擴展模塊I30調(diào)用調(diào)度器140的導(dǎo)出函數(shù)。即,調(diào)度器140與外部游戲服務(wù)器300通信且將任務(wù)結(jié)果通知給腳本轉(zhuǎn)譯模塊120。根據(jù)本發(fā)明的實施例,腳本轉(zhuǎn)譯模塊120以及腳本擴展模塊130可通過腳本語言所提供的應(yīng)用程序用應(yīng)用編程語言開發(fā)。腳本轉(zhuǎn)譯模塊130也可用DLL文件來實施。此是為了在不同腳本語言之間容易與調(diào)度器140鏈接,如同腳本轉(zhuǎn)譯模塊120。腳本擴展模塊130向調(diào)度器140導(dǎo)出函數(shù),此函數(shù)用以與另一游戲服務(wù)器通信。由于導(dǎo)出函數(shù)可僅在任務(wù)文件內(nèi)調(diào)用,因此其可用不同腳本語言創(chuàng)建以及使用單獨原型(proto type)。當(dāng)通過調(diào)用任務(wù)文件的源代碼中的函數(shù)以及參數(shù)而確定在外部游戲服務(wù)器300中存在待執(zhí)行的任務(wù)同時腳本轉(zhuǎn)譯模塊120在執(zhí)行中時,腳本擴展模塊130與外部游戲服務(wù)器300通信。此時,腳本擴展模塊130向調(diào)度器140請求與外部游戲服務(wù)器300的任務(wù)執(zhí)行有關(guān)的通信。舉例而言,如上文所述,當(dāng)存在與外部游戲服務(wù)器300鏈接的待處理的任務(wù)或外部游戲服務(wù)器300執(zhí)行編程語言功能當(dāng)中的必要功能時,進行通信請求。另外,盡管上文描述腳本轉(zhuǎn)譯模塊120以及腳本擴展模塊130具有DLL文件格式,但用于本發(fā)明中的腳本語言為Python。因此,根據(jù)本發(fā)明,用于執(zhí)行腳本轉(zhuǎn)譯模塊120以及腳本擴展模塊130的功能的文件擴展名為pyd。Python腳本僅讀取以及使用pyd文件。圖2為游戲服務(wù)器的任務(wù)文件執(zhí)行與管理裝置的實施語言分類圖。在下文的描述中,在圖1與圖2的描述之間的重疊將被省略。參看圖2,存儲于腳本開發(fā)模塊110中的腳本文件(即,任務(wù)文件)是用腳本語言實施的。另外,運行以用于執(zhí)行服務(wù)器中的任務(wù)文件的調(diào)度器140是用應(yīng)用編程語言(即,編譯語言)實施的。為了對其進行鏈接,腳本轉(zhuǎn)譯模塊120以及腳本擴展模塊130可通過腳本語言(例如,Python)所提供的應(yīng)用程序用應(yīng)用編程語言(例如,C++)來實施。因此,調(diào)度器140執(zhí)行腳本文件111的相同效應(yīng)可得以達(dá)成,且腳本文件111的替換可在所有游戲服務(wù)器操作的同時不受限制地進行。圖3為說明調(diào)度器的詳細(xì)結(jié)構(gòu)的框圖。參看圖3,調(diào)度器包含計時器141、執(zhí)行任務(wù)確認(rèn)單元142、設(shè)置文件存儲單元143、腳本調(diào)用接口 144以及設(shè)置修改單元145。計時器141周期性地產(chǎn)生確認(rèn)當(dāng)前是否存在待處理的任務(wù)的信號。當(dāng)在根據(jù)本發(fā)明的游戲服務(wù)器的任務(wù)文件執(zhí)行與管理裝置100的初始化期間讀取設(shè)置文件時,可設(shè)置計時器141產(chǎn)生信號的時間以及周期。執(zhí)行任務(wù)確認(rèn)單元142通過在信號從計時器141產(chǎn)生時使用存儲于設(shè)置文件存儲單元143中的設(shè)置文件來確定當(dāng)前是否存在待處理的任務(wù),且接著,從設(shè)置文件提取有關(guān)對應(yīng)于待處理的任務(wù)的任務(wù)文件的信息。當(dāng)從執(zhí)行任務(wù)確認(rèn)單元142接收有關(guān)任務(wù)文件的所提取信息時,腳本調(diào)用接口144將所接收信息傳輸?shù)侥_本轉(zhuǎn)譯模塊120以便執(zhí)行任務(wù)文件。設(shè)置修改單元145為用于在任務(wù)文件執(zhí)行期間修改設(shè)置文件的組件。當(dāng)設(shè)置文件上的內(nèi)容(即,有關(guān)任務(wù)文件的信息)改變時,調(diào)度器140自動地檢測改變且讀取新的設(shè)置文件以便更新任務(wù)執(zhí)行計劃。另外,調(diào)度器140可還包含用于與外部游戲服務(wù)器300通信的通信單元(未圖示)。通信單元通過網(wǎng)絡(luò)或代碼鏈接連接到外部游戲服務(wù)器300,使得其在任務(wù)文件執(zhí)行期間響應(yīng)于來自腳本擴展模塊130的請求在必要時執(zhí)行通信以及任務(wù)。圖4為說明在腳本文件的類型改變時的配置改變的示意圖。根據(jù)本發(fā)明,盡管Python(即,腳本語言)用作任務(wù)文件的實施語言,但諸如JavaScript的不同腳本語言可用作任務(wù)文件的植入語言。在圖4的描述中,當(dāng)前使用的腳本語言表示為S I且不同腳本語言表示為S2。因此,在圖4中所示的兩對腳本轉(zhuǎn)譯模塊以及腳本擴展模塊當(dāng)中,在用S I所指示的區(qū)塊中的模塊分別表示為第一腳本轉(zhuǎn)譯模塊120以及第一腳本擴展模塊130,且在用S2所指示的區(qū)塊中的模塊分別表示為第二腳本轉(zhuǎn)譯模塊121以及第二腳本擴展模塊131。為了執(zhí)行用不同腳本語言實施的腳本文件112,第一腳本轉(zhuǎn)譯模塊120以及第一腳本擴展模塊130需要用以不同腳本語言實施的第二腳本轉(zhuǎn)譯模塊121以及第二腳本擴展模塊131來替換。如上文所述,與調(diào)度器140分離,第一腳本轉(zhuǎn)譯模塊120以及第二腳本擴展模塊130是以DLL文件格式來實施的。因此,在無調(diào)度器140的修改的情況下,用應(yīng)用編程語言實施的第二腳本轉(zhuǎn)譯模塊121以及第二腳本擴展模塊131可通過不同腳本語言S2所提供的應(yīng)用程序來容易地替換以及使用。這樣,可不管腳本語言而不受限制地使用服務(wù)。圖5為說明腳本轉(zhuǎn)譯模塊的詳細(xì)結(jié)構(gòu)的框圖。在下文的描述中,在圖1至圖4的描述之間的重疊將被省略。參看圖5,腳本轉(zhuǎn)譯模塊120包含:轉(zhuǎn)譯應(yīng)用程序122,其用于調(diào)用將用在應(yīng)用編程語言的函數(shù)以及參數(shù);以及內(nèi)部編譯器123,其用于在內(nèi)部編譯任務(wù)文件以執(zhí)行所調(diào)用的函數(shù)以及參數(shù)。腳本轉(zhuǎn)譯模塊120可另外包含文件執(zhí)行單元124,其用于通過使用經(jīng)編譯任務(wù)文件的源代碼中的函數(shù)以及參數(shù)來執(zhí)行任務(wù)文件。一旦任務(wù)文件(即,腳本文件111)的函數(shù)以及參數(shù)通過腳本轉(zhuǎn)譯模塊120來調(diào)用,則任務(wù)通過內(nèi)部編譯器123以及文件執(zhí)行單元124來執(zhí)行。另外,文件的執(zhí)行結(jié)果可通過調(diào)度器140輸出到開發(fā)者終端200。圖6為說明通過腳本擴展模塊實現(xiàn)的外部函數(shù)調(diào)用功能的示意圖。在下文的描述中,在圖1至圖5的描述之間的重疊將被省略。參看圖6,在任務(wù)文件執(zhí)行于腳本轉(zhuǎn)譯模塊120的文件執(zhí)行單元124中的同時,如果外部游戲服務(wù)器300中的函數(shù)被調(diào)用,那么用于調(diào)用外部函數(shù)的功能返回到腳本擴展模塊130。當(dāng)腳本擴展模塊130向調(diào)度器140請求與外部游戲服務(wù)器300的通信時,調(diào)度器140通過與外部游戲服務(wù)器300的通信調(diào)用函數(shù)且傳回結(jié)果。調(diào)度器140順序地將所傳回結(jié)果遞送到文件執(zhí)行單元124,使得任務(wù)文件連續(xù)地執(zhí)行于文件執(zhí)行單元124中。圖7為根據(jù)本發(fā)明的實施例的游戲服務(wù)器的任務(wù)文件執(zhí)行與管理方法的流程圖。在下文的描述中,在圖1至圖6的描述之間的重疊將被省略。圖7為游戲服務(wù)器的任務(wù)文件執(zhí)行與管理裝置的實施語言分類圖。首先,在操作S 10中,調(diào)度器140在過程開始的同時分析設(shè)置文件。設(shè)置文件包含計時器141產(chǎn)生任務(wù)確認(rèn)信號的時間以及周期。另外,設(shè)置文件包含每次待處理的任務(wù)文件(即,腳本文件)以及文件中的函數(shù)名稱,使得調(diào)度器140在操作S20中對其進行讀取且每次設(shè)置任務(wù)。接著,在操作S30中,調(diào)度器140與腳本轉(zhuǎn)譯模塊120鏈接而初始化腳本轉(zhuǎn)譯模塊120的操作,且開始執(zhí)行以便執(zhí)行任務(wù)文件。在操作S30之后,任務(wù)在每當(dāng)腳本轉(zhuǎn)譯模塊120周期性地確認(rèn)任務(wù)文件時得以執(zhí)行,直到所有任務(wù)終止為止。在任務(wù)文件執(zhí)行期間,連續(xù)地執(zhí)行在操作S40中確定與外部服務(wù)器(例如,外部游戲服務(wù)器)的通信是否為必要的。如果確定與外部服務(wù)器(例如,外部游戲服務(wù)器)的通信為必要的,那么在操作S70中,腳本轉(zhuǎn)譯模塊120從腳本擴展模塊130調(diào)用用于請求與外部游戲服務(wù)器300的通信的函數(shù)。在此狀況下,在操作S 80中,通過腳本擴展模塊130以及調(diào)度器140執(zhí)行與外部游戲服務(wù)器300的通信以及任務(wù)。連續(xù)地重復(fù)包含操作S40、S70以及S80的任務(wù)文件執(zhí)行操作,直到在操作S50中根據(jù)腳本轉(zhuǎn)譯模塊120以及調(diào)度器140的設(shè)置文件終止操作為止。當(dāng)終止所有任務(wù)文件的執(zhí)行時,在操作S60中,在腳本轉(zhuǎn)譯模塊中清除所列出以及所調(diào)用的函數(shù)。必要時,當(dāng)改變實施任務(wù)文件的腳本語言或任務(wù)文件的設(shè)置文件時,可再次執(zhí)行操作S 10或S30。然而,在此狀況中并不包含用于修改調(diào)度器140中的源代碼的操作。即,由于存在用需要編譯的應(yīng)用編程語言實施的調(diào)度器140中的源代碼未經(jīng)修改的調(diào)度器140,以及包含單獨文件的腳本轉(zhuǎn)譯模塊120以及腳本擴展模塊130,因此使用者可在不重新啟動調(diào)度器140的情況下修改以及轉(zhuǎn)換任務(wù)。詳細(xì)地說,腳本轉(zhuǎn)譯模塊120執(zhí)行任務(wù)文件的操作S30包含通過調(diào)度器140分析設(shè)置文件以確定是否存在待處理的任務(wù),以及從設(shè)置文件提取有關(guān)對應(yīng)于調(diào)度器140分析的待處理的任務(wù)的任務(wù)文件的信息以便將所提取信息傳輸?shù)侥_本轉(zhuǎn)譯模塊120。接著,根據(jù)有關(guān)任務(wù)文件的信息,腳本轉(zhuǎn)譯模塊從存儲多個任務(wù)文件的腳本開發(fā)模塊選擇用腳本語言實施的任務(wù)文件。所選擇任務(wù)文件是通過調(diào)用任務(wù)文件的源代碼中的函數(shù)以及參數(shù)而執(zhí)行于腳本轉(zhuǎn)譯模塊120中。
權(quán)利要求
1.一種游戲服務(wù)器的任務(wù)文件執(zhí)行與管理裝置,其包括: 調(diào)度器,其使用應(yīng)用編程語言來實施以傳輸有關(guān)待處理的任務(wù)文件的信息; 腳本開發(fā)模塊,其存儲用腳本語言開發(fā)的多個文件;以及 腳本轉(zhuǎn)譯模塊,其通過使用從所述調(diào)度器傳輸?shù)挠嘘P(guān)所述任務(wù)文件的所述信息從所述腳本開發(fā)模塊選擇且接收待處理的所述任務(wù)文件,且調(diào)用所述任務(wù)文件的源代碼中的函數(shù)以及參數(shù)以便執(zhí)行所述任務(wù)文件。
2.根據(jù)權(quán)利要求1所述的任務(wù)文件執(zhí)行與管理裝置,其特征在于所述調(diào)度器包括: 計時器,其周期性地產(chǎn)生用于確認(rèn)是否存在待處理的任務(wù)的信號; 執(zhí)行任務(wù)確認(rèn)單元,其從預(yù)先存儲的設(shè)置文件確定是否存在所述待處理的任務(wù),且提取有關(guān)對應(yīng)于所述待處理的任務(wù)的任務(wù)文件的信息;以及 腳本調(diào)用接口,其將有關(guān)所述任務(wù)文件的所述所提取信息傳輸?shù)剿瞿_本轉(zhuǎn)譯模塊。
3.根據(jù)權(quán)利要求2所述的任務(wù)文件執(zhí)行與管理裝置,其特征在于有關(guān)所述任務(wù)文件的所述信息包括有關(guān)以下各者的信息中的至少一者:任務(wù)的名稱、任務(wù)開始時間、任務(wù)重復(fù)執(zhí)行周期、任務(wù)文件的名稱,以及用于執(zhí)行任務(wù)的邏輯實施于所述任務(wù)文件的所述源代碼中的函數(shù)的名稱。
4.根據(jù)權(quán)利要求1所述的任務(wù)文件執(zhí)行與管理裝置,其還包括腳本擴展模塊,所述腳本擴展模塊通過所述調(diào)度器請求與外部游戲服務(wù)器的通信,且將通信結(jié)果傳回到所述腳本轉(zhuǎn)譯模塊。
5.根據(jù)權(quán)利要求4所述的任務(wù)文件執(zhí)行與管理裝置,其特征在于所述腳本轉(zhuǎn)譯模塊以及所述腳本擴展模塊是用所述應(yīng)用編程語言實施,藉此與所述調(diào)度器鏈接。
6.根據(jù)權(quán)利要求4所述的任務(wù)文件執(zhí)行與管理裝置,其特征在于所述腳本轉(zhuǎn)譯模塊以及所述腳本擴展模塊是用動態(tài)鏈接庫(DLL)文件實施。
7.根據(jù)權(quán)利要求5所述的任務(wù)文件執(zhí)行與管理裝置,其特征在于所述腳本轉(zhuǎn)譯模塊包括: 轉(zhuǎn)譯應(yīng)用程序,其調(diào)用將用在所述應(yīng)用編程語言的所述函數(shù)以及所述參數(shù);以及 內(nèi)部編譯器,其執(zhí)行編譯以執(zhí)行所述所調(diào)用的函數(shù)以及參數(shù)。
8.根據(jù)權(quán)利要求4所述的任務(wù)文件執(zhí)行與管理裝置,其特征在于,當(dāng)在所述函數(shù)以及所述參數(shù)的執(zhí)行期間確定在所述外部游戲服務(wù)器中存在待處理的任務(wù)時,所述腳本擴展模塊向所述調(diào)度器請求到所述外部游戲服務(wù)器的用于任務(wù)執(zhí)行的通信。
9.一種執(zhí)行以及管理游戲者服務(wù)器的任務(wù)文件的方法,所述方法包括: 通過經(jīng)由調(diào)度器加載預(yù)先存儲的設(shè)置文件來分析當(dāng)前是否存在待處理的任務(wù),所述調(diào)度器是使用應(yīng)用編程語言來實施的; 從所述設(shè)置文件提取有關(guān)對應(yīng)于所述待處理的任務(wù)的任務(wù)文件的信息且通過所述調(diào)度器傳輸所述所提取信息; 通過腳本轉(zhuǎn)譯模塊根據(jù)有關(guān)所述任務(wù)文件的所述信息從腳本開發(fā)模塊選擇所述任務(wù)文件,所述腳本開發(fā)模塊存儲用腳本語言開發(fā)的多個任務(wù)文件;以及 通過所述腳本轉(zhuǎn)譯模塊調(diào)用且執(zhí)行所述所選擇任務(wù)文件的源代碼中的函數(shù)以及參數(shù)。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于是否存在待處理的任務(wù)的所述分析包括通過執(zhí)行任務(wù)確認(rèn)單元從所述設(shè)置文件確定是否存在所述待處理的任務(wù),所述執(zhí)行任務(wù)確認(rèn)單元接收周期性地從計時器產(chǎn)生的處理任務(wù)確認(rèn)信號。
11.根據(jù)權(quán)利要求9所述的方法,其特征在于有關(guān)所述任務(wù)文件的所述信息包括有關(guān)以下各者的信息中的至少一者:任務(wù)的名稱、任務(wù)開始時間、任務(wù)重復(fù)執(zhí)行周期、任務(wù)文件的名稱,以及用于執(zhí)行任務(wù)的邏輯實施于所述任務(wù)文件的所述源代碼中的函數(shù)的名稱。
12.根據(jù)權(quán)利要求9所述的方法,其還包括通過腳本擴展模塊,通過所述調(diào)度器請求與外部游戲服務(wù)器的通信,且將通信結(jié)果傳回到所述腳本轉(zhuǎn)譯模塊。
13.根據(jù)權(quán)利要求12所述的方法,其特征在于所述腳本轉(zhuǎn)譯模塊以及所述腳本擴展模塊是用所述應(yīng)用編程語言實施,藉此與所述調(diào)度器鏈接。
14.根據(jù)權(quán)利要求13所述的方法,其特征在于所述函數(shù)以及所述參數(shù)的所述執(zhí)行包括: 通過轉(zhuǎn)譯應(yīng)用程序調(diào)用將用在所述應(yīng)用編程語言的所述函數(shù)以及所述參數(shù);以及 通過內(nèi)部編譯器執(zhí)行編譯以執(zhí)行所述所調(diào)用的函數(shù)以及參數(shù)。
15.根據(jù)權(quán)利要求14所述的方法,其特征在于,如果確定在所述外部游戲服務(wù)器中存在待處理的任務(wù)同時所述經(jīng)編譯的函數(shù)以及參數(shù)處于執(zhí)行中,那么所述通信結(jié)果的所述傳回得以執(zhí) 行。
全文摘要
本發(fā)明提供文件執(zhí)行以及管理技術(shù),通過此技術(shù),在任務(wù)期間不受限制地進行代碼修改成為可能,且不受限制地進行與用不同語言實施的另一服務(wù)器的通信成為可能。根據(jù)本發(fā)明的實施例的游戲服務(wù)器的任務(wù)文件執(zhí)行與管理裝置包含調(diào)度器,其使用應(yīng)用編程語言來實施以傳輸有關(guān)待處理的任務(wù)文件的信息;腳本開發(fā)模塊,其存儲用腳本語言開發(fā)的多個文件;以及腳本轉(zhuǎn)譯模塊,其通過使用從所述調(diào)度器傳輸?shù)挠嘘P(guān)所述任務(wù)文件的所述信息從所述腳本開發(fā)模塊選擇且接收待處理的所述任務(wù)文件,且調(diào)用所述任務(wù)文件的源代碼中的函數(shù)以及參數(shù)以便執(zhí)行所述任務(wù)文件。
文檔編號G06F9/45GK103180827SQ201280000788
公開日2013年6月26日 申請日期2012年6月7日 優(yōu)先權(quán)日2011年6月17日
發(fā)明者金南姬, 崔仁坤 申請人:新游網(wǎng)絡(luò)科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1