CN113703732B - 一种游戏后端多语言开发的实现方法 - Google Patents
一种游戏后端多语言开发的实现方法 Download PDFInfo
- Publication number
- CN113703732B CN113703732B CN202111283682.8A CN202111283682A CN113703732B CN 113703732 B CN113703732 B CN 113703732B CN 202111283682 A CN202111283682 A CN 202111283682A CN 113703732 B CN113703732 B CN 113703732B
- Authority
- CN
- China
- Prior art keywords
- language
- game
- development
- lua
- data structure
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/24—Object-oriented
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种游戏后端多语言开发的实现方法,包括:C++、golang语言、lua语言、python语言、中间文件和第三方SDK,包括如下步骤:用C++嵌入python语言解释器和lua语言解释器,封装成golang的扩展模块,构成C++跨语言协同模块;通过golang语言开发游戏服务器的网络层和web服务;通过中间文件,重新定义游戏服务器数据结构,生成多语言统一的数据结构和事件配置,实现多语言数据结构一致;通过lua语言开发游戏逻辑;调用python语言来处理第三方SDK协同逻辑。不同语言之间的信息传递,均通过C++跨语言协同模块的事件系统来进行交互,使得游戏后端多语言开发更加方便快捷,提高了开发效率,大大的节约开发成本。
Description
技术领域
本发明涉及一种多语言开发的实现方法,尤其涉及一种游戏后端多语言开发的实现方法。
背景技术
一般的大型游戏开发绝不是用某种语言这么单纯的问题,一个大型游戏的开发需要庞大的团队使用各种各样的语言和工具来完成,多语言开发就成了必要手段。多语言开发有着这样的优点:不同开发语言具备不同的特性,能极大的降低特殊领域的开发成本;每种开发语言都有其独特的优势,在不同的需求上采用有针对性的开发语言,可以构建更优秀的技术产品。但是,多语言混合开发也有着这样的缺点:不同开发语言之间,相同的数据结构具有不同的实现方式;不同开发语言之间,存在技术隔离,一种开发语言无法与另外一种开发语言互通;不同开发语言人员,由于掌握技术不同,导致协同工作困难。解决多语言混合开发的基本思路是在不同语言之间搭建一个桥梁,又这个桥梁来转换不同语言之间的障碍。
现有多语言开发解决方案是采用中间件作为不同语言之间的桥梁,一种为数据中间件,比如mysql,redis等,一种为消息中间件,比如kafka,rocketmq等,通过将数据或消息存储进中间件,不同语言的开发人员从中间件去获取相关的数据来进行交互,实现协同;采用多语言rpc作为不同语言之间的桥梁。比如thrift,grpc等,不同语言之间通过统一的rpc接口进行交互,从而实现协同。但是现有多语言开发解决方案存在着这样的缺陷:中间件方案会增加一层双向通信,即开发语言①→中间件→开发语言②,这将降低整个程序的性能,同时由于数据存在在中间件中,当需求变化时,不仅需要调整开发,还要修正中间件中的数据,灵活性较差;多语言rpc方案会增加一层数据转换通信,即开发语言①→RPC格式→开发语言②。
游戏后端多语言开发有着这样的特殊性:游戏后端软件通常要求较高的实时性,对性能要求较高;游戏后端软件需求变化极快,对灵活性要求非常高。
综上所述,当前多语言开发方案并不针对游戏后端软件,无法满足其特殊性,故需要一种新的解决方案来满足游戏后端软件的需求。
发明内容
有鉴于此,本发明的目的在于提供一种游戏后端多语言开发的实现方法,用以解决现有游戏后端多语言开发的各种弊端,减少多语言开发需要转换或者双向通信的性能消耗;提高游戏逻辑的性能;解决不同语言之间数据结构实现不同问题和不同开发人员之间协同问题;提高游戏后端随业务变化带来配置变化的灵活性。
为了实现上述目的,本发明采用如下技术方案:
一种游戏后端多语言开发的实现方法,其特征在于,包括:C++、golang语言、lua语言、python语言、中间文件和第三方SDK,包括如下步骤:
步骤1、用C++嵌入python语言解释器和lua语言解释器,封装成golang的扩展模块,构成C++跨语言协同模块;
步骤2、通过golang语言开发游戏服务器的网络层和web服务,其中游戏服务器包含游戏数据结构和各种事件;
步骤3、通过步骤2中的游戏数据结构和各种事件定义中间文件;
步骤4、通过中间文件,重新定义游戏数据结构,生成多语言统一的数据结构和事件配置,实现多语言数据结构一致;
步骤5、由C++跨语言协同模块管理多语言统一的数据结构和事件配置,并对golang语言、python语言和lua语言提供统一的操作接口;
步骤6、通过C++跨语言协同模块将多语言统一的数据结构和事件配置交由lua语言开发游戏逻辑;
步骤7、lua语言开发的游戏逻辑通过C++跨语言协同模块调用python语言来处理第三方SDK协同逻辑。
进一步的,所述步骤1中C++跨语言协同模块,C++跨语言协同模块需要通过中间文件,作为golang语言、python语言和lua语言的信息传递媒介。
进一步的,所述步骤4中的所有多语言统一的数据结构和事件配置都由所述C++跨语言协同模块持有,并对各种语言提供统一的操作接口,保证golang语言、python语言、lua语言和C++四种开发语言间具备数据一致性,避免不同语言开发人员对数据结构的不同表示。
进一步的,所述步骤7中第三方SDK可选登录SDK和支付SDK。
进一步的,所述C++跨语言协同模块会启动线程来运行python代码和lua代码,其以线程环境启动python语言和lua语言的解释器,保证所有语言运行在一个进程空间之中。
所述多语言之间通过C++跨语言协同模块的事件进行交互。
本发明的有益效果是:
本发明利用C++做底层桥梁,嫁接golang语言、python语言、lua语言三种开发语言,采用单进程多线程方式,在多种开发语言间通过C++实现内存共享,避免了现有多语言开发需要转换或者双向通信的性能消耗。同时本发明可以充分利用golang语言、python语言、lua语言三种语言的特性,比如使用golang语言来构建高性能的网络层和web服务,使用lua语言来实现高性能的游戏逻辑,使用python语言来跟第三方SDK合作协同;
通过中间文件,生成多语言统一的数据结构和事件配置,解决不同语言之间数据结构实现不同问题和不同开发人员之间协同问题;
通过游戏数据结构和各种事件来定义中间文件,提高了游戏后端随业务变化带来配置变化的灵活性。
附图说明
图1为本发明提供的一种游戏后端多语言开发的实现方法的进程图。
图2为本发明提供的一种游戏后端多语言开发的实现方法的交互图。
图3为本发明提供的一种游戏后端多语言开发的实现方法的中间文件的流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
参见图1-图3,本实施例提供了一种游戏后端多语言开发的实现方法,包括C++、golang语言、lua语言、python语言和第三方SDK,包括如下步骤:
一种游戏后端多语言开发的实现方法,其特征在于,包括:C++、golang语言、lua语言、python语言、中间文件和第三方SDK,包括如下步骤:
步骤1、用C++嵌入python语言解释器和lua语言解释器,封装成golang的扩展模块,构成C++跨语言协同模块;
步骤2、通过golang语言开发游戏服务器的网络层和web服务,其中游戏服务器包含游戏数据结构和各种事件;
步骤3、通过步骤2中的游戏数据结构和各种事件定义中间文件;
具体的说,将游戏服务器的游戏数据结构和各种事件存储进中间文件,不同语言的开发人员从中间文件中去获取相关的数据结构来进行交互,实现不同语言之间的协同。
步骤4、通过中间文件,重新定义游戏数据结构,生成多语言统一的数据结构和事件配置,实现多语言数据结构一致;
具体的说,不同编程语言对同一数据结构具有不一样的描述,而中间文件的作用就是把不同编程语言的数据结构进行统一规划,生成多语言统一的数据结构和事件配置,实现多语言数据结构一致。
步骤5、由C++跨语言协同模块管理多语言统一的数据结构和事件配置,并对golang语言、python语言和lua语言提供统一的操作接口;
步骤6、通过C++跨语言协同模块将多语言统一的数据结构和事件配置交由lua语言开发游戏逻辑;
步骤7、lua语言开发的游戏逻辑通过C++跨语言协同模块调用python语言来处理第三方SDK协同逻辑。
具体的说,所述步骤1中C++跨语言协同模块需要通过中间文件,作为golang语言、python语言和lua语言的信息传递媒介。
具体的说,所述步骤4中,所有多语言统一的数据结构和事件配置都由C++跨语言协同模块持有,并对各种语言提供统一的操作接口,保证golang语言、python语言、lua语言、C++ 四种开发语言间具备数据一致性,避免不同语言开发人员对数据结构的不同表示。
具体的说,所述步骤7中第三方SDK可选登录SDK和支付SDK。
具体的说,所述SDK是软件开发工具包的英文缩写,其英文名全称为:SoftwareDevelopment Kit,一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。所述登录SDK,即借助第三方登录游戏,本发明采用QQ登录SDK和微信登录SDK;所述支付SDK,即借助第三方进行支付,本发明采用支付宝支付SDK和微信支付SDK。
具体的说,所述C++跨语言协同模块会启动线程来运行python代码和lua代码,其以线程环境启动python语言和lua语言的解释器,保证所有语言运行在一个进程空间之中。
具体的说,所述多语言之间通过C++跨语言协同模块的事件进行交互。
至此完成了整个方法的流程。
结合具体实施,可以得到本发明的优点是,本发明利用C++做底层桥梁,嫁接golang语言、python语言、lua语言三种开发语言,采用单进程多线程方式,在多种开发语言间通过C++实现内存共享,避免了现有多语言开发需要转换或者双向通信的性能消耗。同时本发明可以充分利用golang语言、python语言、lua语言三种语言的特性,比如使用golang语言来构建高性能的网络层和web服务,使用lua语言来实现高性能的游戏逻辑,使用python语言来跟第三方SDK合作协同;
通过中间文件,生成多语言统一的数据结构和事件配置,解决不同语言之间数据结构实现不同问题和不同开发人员之间协同问题;
通过游戏数据结构和各种事件来定义中间文件,提高了游戏后端随业务变化带来配置变化的灵活性。
本发明未详述之处,均为本领域技术人员的公知技术。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (5)
1.一种游戏后端多语言开发的实现方法,其特征在于,包括:C++、golang语言、lua语言、python语言、中间文件和第三方SDK,包括如下步骤:
步骤1、用C++嵌入python语言解释器和lua语言解释器,封装成golang的扩展模块,构成C++跨语言协同模块;
步骤2、通过golang语言开发游戏服务器的网络层和web服务,其中游戏服务器包含游戏数据结构和各种事件;
步骤3、通过步骤2中的游戏数据结构和各种事件定义中间文件;
步骤4、通过中间文件,重新定义游戏数据结构,生成多语言统一的数据结构和事件配置,实现多语言数据结构一致;
步骤5、由C++跨语言协同模块管理多语言统一的数据结构和事件配置,并对golang语言、python语言和lua语言提供统一的操作接口;
步骤6、通过C++跨语言协同模块将多语言统一的数据结构和事件配置交由lua语言开发游戏逻辑;
步骤7、lua语言开发的游戏逻辑通过C++跨语言协同模块调用python语言来处理第三方SDK协同逻辑;
其中C++跨语言协同模块是利用C++作为底层桥梁,嫁接golang语言、python语言和lua语言这三种开发语言构成的,C++跨语言协同模块需要通过中间文件,作为golang语言、python语言和lua语言的信息传递媒介。
2.如权利要求1所述的一种游戏后端多语言开发的实现方法,其特征在于,所述步骤4中的所有多语言统一的数据结构和事件配置都由C++跨语言协同模块持有,并对各种语言提供统一的操作接口,保证golang语言、python语言、lua语言和C++四种开发语言间具备数据一致性,避免不同语言开发人员对数据结构的不同表示。
3.如权利要求2所述的一种游戏后端多语言开发的实现方法,其特征在于,所述步骤7中第三方SDK选择登录SDK和支付SDK,其中登录SDK包括QQ登录SDK、微信登录SDK和微博登录SDK,支付SDK包括支付宝支付SDK和微信支付SDK。
4.如权利要求3所述的一种游戏后端多语言开发的实现方法,其特征在于,所述C++跨语言协同模块会启动线程来运行python代码和lua代码,其以线程环境启动python语言和lua语言的解释器,保证所有语言运行在一个进程空间之中。
5.如权利要求4所述的一种游戏后端多语言开发的实现方法,其特征在于,多语言之间通过C++跨语言协同模块的事件进行交互。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111283682.8A CN113703732B (zh) | 2021-11-01 | 2021-11-01 | 一种游戏后端多语言开发的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111283682.8A CN113703732B (zh) | 2021-11-01 | 2021-11-01 | 一种游戏后端多语言开发的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113703732A CN113703732A (zh) | 2021-11-26 |
CN113703732B true CN113703732B (zh) | 2022-02-11 |
Family
ID=78647592
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111283682.8A Active CN113703732B (zh) | 2021-11-01 | 2021-11-01 | 一种游戏后端多语言开发的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113703732B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988290A (zh) * | 2019-12-12 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 多语言配置文件的生成方法、页面显示方法、装置及终端 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5242628B2 (ja) * | 2010-05-06 | 2013-07-24 | 株式会社スクウェア・エニックス | ゲーム開発におけるプログラマーの生産性を向上させる高級言語 |
CN102063324B (zh) * | 2010-12-31 | 2014-04-02 | 杭州依赛通信有限公司 | 一种实现自动化编程的方法及系统 |
WO2018226621A1 (en) * | 2017-06-05 | 2018-12-13 | Umajin Inc. | Methods and systems for an application system |
US11188390B2 (en) * | 2017-06-05 | 2021-11-30 | Umajin Inc. | Method for configuring a server kit by a server management system |
FR3087026A1 (fr) * | 2018-10-04 | 2020-04-10 | Movida Production | Procede pour generer une liaison (binding) entre une bibliotheque c/c++ et un langage interprete, et mise en œuvre de ce procede pour la transformation d’un modele tridimensionnel (3d) |
CN111736838A (zh) * | 2019-03-25 | 2020-10-02 | 华为技术有限公司 | 一种跨语言编译方法及设备 |
CN111427547B (zh) * | 2020-03-18 | 2023-03-10 | 成都中科合迅科技有限公司 | 一种基于c++的微服务开发方法和系统 |
-
2021
- 2021-11-01 CN CN202111283682.8A patent/CN113703732B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988290A (zh) * | 2019-12-12 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 多语言配置文件的生成方法、页面显示方法、装置及终端 |
Also Published As
Publication number | Publication date |
---|---|
CN113703732A (zh) | 2021-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102520922B (zh) | 一种协作环境下的远程开发方法及其系统 | |
US8806506B2 (en) | System and method for processing messages using a common interface platform supporting multiple pluggable data formats in a service-oriented pipeline architecture | |
CN110399119A (zh) | 一种组件化构建方法、装置、电子设备及存储介质 | |
CN113902866B (zh) | 一种双引擎驱动的数字孪生系统 | |
CN111158690B (zh) | 桌面应用框架、构建方法、桌面应用运行方法及存储介质 | |
CN102158516B (zh) | 服务组合编译方法及编译器 | |
CN113032166B (zh) | 核间通信的方法、处理器、核间通信系统及计算机可读存储介质 | |
CN105656947B (zh) | 一种交易中间件与第三方系统交互的方法、装置和系统 | |
CN115292020B (zh) | 一种数据处理方法、装置、设备以及介质 | |
US11784946B2 (en) | Method for improving data flow and access for a neural network processor | |
CN115480810A (zh) | 一种基于云原生的低代码平台 | |
CN113703732B (zh) | 一种游戏后端多语言开发的实现方法 | |
CN113485690A (zh) | 一种api接口可视化实体转换方法 | |
Dai | Design and implementation of ESB based on SOA in power system | |
CN101304410A (zh) | 分布式web的智能信息平台 | |
CN113467769A (zh) | 一种基于html5的三层式混合开发系统及其开发方法 | |
CN115774573B (zh) | 应用集成方法、装置、电子设备和存储介质 | |
CN104993906A (zh) | 一种消息传输的方法及系统 | |
CN104615815A (zh) | 一种并行模型的消息传输方法及系统 | |
Kumari et al. | Experience sharing on SOA based heterogeneous systems integration | |
CN112748902A (zh) | 一种逻辑靶场联合试验中可视化靶场规划方法 | |
CN113590137B (zh) | Paas平台能力级的可视化运维管理平台 | |
CN112642157B (zh) | 代理开发控制方法及其相应的装置、设备、介质 | |
CN115988087B (zh) | 基于总线的服务调用方法、装置、电子设备和存储介质 | |
Yalezo et al. | Architecting and Constructing an SOA Bridge for an MVC Platform |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |