CN116880842A - 一种游戏代码的翻译方法、装置、设备及存储介质 - Google Patents
一种游戏代码的翻译方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN116880842A CN116880842A CN202310959292.0A CN202310959292A CN116880842A CN 116880842 A CN116880842 A CN 116880842A CN 202310959292 A CN202310959292 A CN 202310959292A CN 116880842 A CN116880842 A CN 116880842A
- Authority
- CN
- China
- Prior art keywords
- language
- conforming
- code file
- code
- typescript
- 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
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000013519 translation Methods 0.000 title abstract description 13
- 238000006243 chemical reaction Methods 0.000 claims abstract description 57
- 230000006870 function Effects 0.000 claims abstract description 51
- 238000011161 development Methods 0.000 claims abstract description 34
- 238000013461 design Methods 0.000 claims abstract description 15
- 238000004590 computer program Methods 0.000 claims description 22
- 230000014509 gene expression Effects 0.000 claims description 14
- 230000006835 compression Effects 0.000 claims description 13
- 238000007906 compression Methods 0.000 claims description 13
- 230000009466 transformation Effects 0.000 claims description 3
- 238000009954 braiding Methods 0.000 abstract description 5
- 238000007689 inspection Methods 0.000 abstract description 3
- 238000004891 communication Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000012423 maintenance Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005034 decoration Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- 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/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种游戏代码的翻译方法、装置、设备及存储介质,该方法包括:接收对游戏开发设计的用户界面;对用户界面生成符合TypeScript语言的第一代码文件;确定TypeScript语言与Lua语言之间的转换关系;依据转换关系将第一代码文件转换为符合Lua语言的第二代码文件。既利用了Lua语言方便热更新的特性,同时也整合了TypeScript语言的强类型检查等优点。自动化编在大多数情况下,开箱即用译,对游戏的开发人员来讲也是无感的,开发人员可以更加关注具体业务开发。游戏的业务逻辑功能采用TypeScript语言进行开发,技术门槛低,开发人员可简单学习、轻松上手,TypeScript语言是强类型语言,并且有众多IDE的开发环境支持,便于游戏开发人员编写代码,大大地提高了开发工作效率。
Description
技术领域
本发明涉及游戏开发的技术领域,尤其涉及一种游戏代码的翻译方法、装置、设备及存储介质。
背景技术
在游戏开发中,选择合适的开发语言方便游戏更新,利于开发人员维护。
目前,许多游戏研发公司基本采用Lua语言作为游戏业务逻辑的开发语言,但是,Lua语言存在弱类型语言的一些缺点,例如,没有强类型检查,不方便重构,等等。
发明内容
本发明提供了一种游戏代码的翻译方法、装置、设备及存储介质,以解决如何克服使用Lua语言开发游戏时存在弱类型语言的缺点的问题。
根据本发明的一方面,提供了一种游戏代码的翻译方法,包括:
接收对游戏开发设计的用户界面;
对所述用户界面生成符合TypeScript语言的第一代码文件;
确定TypeScript语言与Lua语言之间的转换关系;
依据所述转换关系将所述第一代码文件转换为符合Lua语言的第二代码文件。
根据本发明的另一方面,提供了一种游戏代码的翻译装置,包括:
用户界面接收模块,用于接收对游戏开发设计的用户界面;
第一代码文件生成模块,用于对所述用户界面生成符合TypeScript语言的第一代码文件;
转换关系确定模块,用于确定TypeScript语言与Lua语言之间的转换关系;
第二代码文件生成模块,用于依据所述转换关系将所述第一代码文件转换为符合Lua语言的第二代码文件。
根据本发明的另一方面,提供了一种电子设备,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的游戏代码的翻译方法。
根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序用于使处理器执行时实现本发明任一实施例所述的游戏代码的翻译方法。
在本实施例中,接收对游戏开发设计的用户界面;对用户界面生成符合TypeScript语言的第一代码文件;确定TypeScript语言与Lua语言之间的转换关系;依据转换关系将第一代码文件转换为符合Lua语言的第二代码文件。本实施例实现了全自动化编,在大多数情况下,开箱即用译。既利用了Lua语言方便热更新的特性,同时也整合了TypeScript语言的强类型检查等优点。自动化编在大多数情况下,开箱即用译,对游戏的开发人员来讲也是无感的,开发人员可以更加关注具体业务开发。游戏的业务逻辑功能采用TypeScript语言进行开发,技术门槛低,开发人员可简单学习、轻松上手,TypeScript语言是强类型语言,并且有众多IDE的开发环境支持,便于游戏开发人员编写代码,大大地提高了开发工作效率。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例一提供的一种游戏代码的翻译方法的流程图;
图2是根据本发明实施例一提供的一种用户界面的示例图;
图3是根据本发明实施例二提供的一种游戏代码的翻译装置的结构示意图;
图4是根据本发明实施例三提供的一种电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例一
图1为本发明实施例一提供的一种游戏代码的翻译方法的流程图,本实施例可适用于以TypeScript语言开发游戏的用户界面并将其翻译为Lua语言的情况,该方法可以由游戏代码的翻译装置来执行,该游戏代码的翻译装置可以采用硬件和/或软件的形式实现,该游戏代码的翻译装置可配置于电子设备中。如图1所示,该方法包括:
步骤101、接收对游戏开发设计的用户界面。
在实际应用中,本实施例提供的方法可以集成在一组件中,并将该组件嵌入到开发游戏的项目中,为该项目提供游戏开发的辅助服务。
开发人员(尤其为美术设计师)按照游戏的业务需求设计完游戏的用户界面(UserInterface,UI),并提交给该组件。
步骤102、对用户界面生成符合TypeScript语言的第一代码文件。
在开发人员(尤其为美术设计师)按照游戏的业务需求设计完游戏的用户界面(User Interface,UI)后,开发人员无需预先开发UI的窗口框架代码、无需预先开发UI的业务逻辑功能,该组件会自动在后台使用TypeScript语言生成UI的代码,记为第一代码文件,可以大大方便开发人员,节省了大量的开发时间。
并且,如果对项目的UI进行调整,重新生成TypeScript语言的第一代码文件后,开发人员也可以在第一代码文件中快速定位到待修改的代码片段,进行功能优化。
其中,TypeScript语言是JavaScript语言的一个严格超集,并添加了可选的静态类型和基于类的面向对象编程。相对于Lua语言,TypeScript语言会在编译期执行静态类型检查,能帮忙开发人员排查简单的语法问题,以及因为UI组件或配置调整所带来的代码问题。
开发人员也可以在快速迭代中,高效地找到调整的代码段进行修改,以便应对瞬息万变的产品调整需求,大大地减轻了开发人员的开发强度和维护成本。
目前大多数IDE(集成开发环境,如ESLint、Prettier、Visual Studio code、WebStorm等)中已经支持TypeScript的智能提示、自动补全、代码导航等功能,并能在编写时实时反馈类型错误并提供准确的建议。同在在重构时,能更加快速地修改接口定义,调整代码结构,减少书写错误和代码bug(漏洞)。TypeScript还支持接口、抽象类、枚举等面向对象语言的特性,支持更好地实现一些设计模式。
而且,TypeScript语言是基于JavaScript语言的强类型编程语言,在接受Lua语言的开发环境中基本都良好运行,使得开发人员可以在同一开发环境中使用TypeScript语言与Lua语言,并不需要切换开发环境,可提高开发游戏的效率。
并且,TypeScript能够用更少的代码量实现同样的功能需求。够通过组合扩展,将服务应用于各种模块,得到更多的第三方库支持。
在本发明的一个实施例中,步骤102可以包括如下步骤:
步骤1021、对用户界面的组件生成符合TypeScript语言的代码,作为组件代码。
步骤1022、创建窗口类。
步骤1023、在窗口类中继承组件代码,获得第一代码文件。
UI的业务逻辑功能主要集中在各个组件上,在开发人员(尤其为美术设计师)按照游戏的业务需求设计完游戏的UI后,开发人员无需预先开发UI组件的业务逻辑功能,该组件会自动在后台使用TypeScript语言生成UI的组件代码。
此外,可以创建一个窗口类,该窗口类用于实现组件的业务逻辑功能。
在窗口类中继承组件代码,获得第一代码文件,通过继承的方式,可以直接在窗口类中获取并使用UI组件,从而开发相应的业务逻辑功能,对于开发而言,高效易用。
示例性地,如图2所示的、在创建角色的用户界面中具有三个组件,分别为角色名输入框、姓别按钮、提交按钮,对其生成的代码如下:
开发人员可以设计一个创建角色的窗口类来继承它,就可以在类中获取到该用户面的组件,从而开发相应的业务逻辑功能。
至此,该组件生成第一代码文件。
在本发明的另一个实施例中,步骤102还可以包括如下步骤:
步骤1024、按照预设的接口定义语言生成符合TypeScript语言的描述声明文件。
步骤1025、依据描述声明文件对第一代码文件的代码进行检查。
步骤1026、若检查第一代码文件的代码出现错误,则对第一代码文件的代码生成警报信息。
在本实施例中,可以根据项目的特性,使用接口定义语言(IDL)生成符合Typescript语言的描述声明文件,描述声明文件不会生成实际的运行代码,不仅不会增加游戏安装包的大小,而且可以减低了开发难度、提高了开发效率。
TypeScript是一门强类型语言,它的变量在使用前会声明类型。TypeScript可以将大量变量的类型声明统一提取到单独的文件,此类文件被称为描述声明文件(又称声明文件),它的文件扩展名是.d.ts,它可以被TypeScript的解释器读取,并且能直观地表示出各种变量的使用方式。
如果第一代码文件中的代码传输的类型错误,会导致编译期间的错误,根据Typescript语言的描述声明文件,可以对第一代码文件的代码进行检查,在检查到第一代码文件的代码出现错误,则对第一代码文件中出现错误的代码生成警报信息,从而实现对出现错误的代码进行定位,使得该组件能够有效的进行代码书写过程中的代码提示,并且能够安全的进行类型检查。
由于IDE和编译结果都可以对类型等传递错误,相对于查协议的说明,这个特性可提升写代码的效率。另外,在项目的长期维护中,在代码长期堆叠的情况下,得到IDL和描述声明文件的支持下,可以快速定位待修改的协议,减少漏改、错改的情况,有效降低维护的成本。
示例性地,针对如图2所示的用户界面,
依据描述声明文件对第一代码文件中的代码进行检查,发现test_msg.MapValue[1]="cc"出现错误。
在本发明的又一个实施例中,步骤102还可以包括如下步骤:
步骤1027、若查找到用于记录游戏的配置数据的表格,则将表格写入第一代码文件中。
在项目中,某些开发人员可能会使用Excel等形式的表格设置游戏的配置数据,因此,该组件可以查找用于记录游戏的配置数据的表格,如果查找到,则将该配置数据(即表格)自动化生成代码,写入到第一代码文件中,那么开发人员可以在实际业务的代码中直接使用。
步骤1028、若配置数据之间存在关联性,则对表格标记关联性。
在本实施例中,该组件可以对配置数据进行关联检查,如果检测到某些配置数据之间存在关联性,则可以对表格标记关联性,方便开发人员使用。
步骤1029、若表格符合预设的压缩条件,则对表格进行压缩。
在本实施例中,该组件可以对表格进行压缩检查,如果发现该表格符合预设的压缩条件,则可以使用对该压缩条件配置的压缩方式对表格进行压缩,减少第一代码文件的体积大小。
在一个示例中,若表格中存在数字(压缩条件),则可以使用Varint等编码方法对表格中的数字进行变长字节编码,节省数字占用空间的大小。
在另一个示例中,若表格中存在标定的字段(压缩条件),则可以对表格中的该字段进行压缩、直至表格的体积小于预设的阈值。
进一步地,可以在协议层面对表格中的该字段进行压缩,如果打包之后该字段的数据大于阈值,则可以在底层对该字段的数据进行压缩,以降低I/O(input/output,输入/输出)或网络传输的压力。
步骤103、确定TypeScript语言与Lua语言之间的转换关系。
在本实施例中,可以预先对定TypeScript语言的规范与Lua语言的规范进行分析,寻找TypeScript语言的规范与Lua语言的规范之间的差异,依据该差异建立将TypeScript语言转换至Lua语言的转换关系。
步骤104、依据转换关系将第一代码文件转换为符合Lua语言的第二代码文件。
在开发人员开发完游戏的功能并进行保存时,该组件可以自动将第一代码文件进行编译,快速生成符合Lua语言的第二代码文件,这个过程对开发人员是无感的,使得开发人员可以随时在游戏中验证新的功能,功能验收后便可打包更新。
在编译的过程中,该组件遍历第一代码文件,在第一代码文件中查找符合依据转换关系的代码,并按照该转换关系将该代码进行调整,从而得到符合Lua语言的第二代码文件。
在本发明的一个实施例中,步骤104可以包括如下步骤:
步骤1041、对第一代码文件生成令牌。
在本实施例中,该组件可使用词法分析器对第一代码文件文件进行词法分析,将第一代码文件的代码划分为一系列的令牌token。
其中,令牌token可以根据开发人员设定的关键词,特殊符号,标识符,字面量生成。
步骤1042、使用令牌生成符合TypeScript语言的抽象语法树。
在本实施例中,该组件可使用各个令牌生成符合TypeScript语言的抽象语法树(Abstract Syntax Tree,AST),在JavaScript中,任何一个对象(变量、函数、表达式等)都可以转化为一个抽象语法树的形式,抽象语法树本质就是一个树形结构的对象,用于表示代码的结构与语义。
步骤1043、依据转换关系对抽象语法树进行调整。
在本实施例中,该组件可以遍历抽象语法树,依据转换关系对抽象语法树上的相关节点进行调整。
在一个示例中,转换关系为转换数组下表,由于Lua语言的数组下标是从1开始,而TypeScript语言的数组下标是从0开始,因此,该组件在调整AST时,自动识别数组下标,并将抽象语法树中的数组下标累加一(即+1),作为符合Lua语言的数组下标。
例如,TypeScript语言的代码如下:
翻译为Lua语言的代码如下:
在另一个示例中,转换关系为转换运算符,Lua语言的字符串使用运算符“..”进行连接,而TypeScript语言的字符串使用运算符“+”连接,因此,该组件在调整AST时,自动识别运算符,并将抽象语法树中的运算符(即“+”)转换为符合Lua语言的运算符(即“..”)。
例如,TypeScript语言的代码如下:
翻译为Lua语言的代码如下:
在另一个示例中,转换关系为转换数组长度,Lua语言取数组长度时使用#arr,TypeScritp语言有自己的属性,可调用arr.length取数组长度,因此,该组件在调整AST时,自动识别数组长度,并将抽象语法树中的数组长度(即arr.length)转换为符合Lua语言的数组长度(即#arr)。
例如,TypeScript语言的代码如下:
翻译为Lua语言的代码如下:
在另一个示例中,转换关系为转换数组增加元素,Lua语言的数组增加元素的函数为table.insert,TypeScritp语言的数组增加元素的函数为push,因此,该组件在调整AST时,自动识别数组增加元素,并将抽象语法树中的数组增加元素(即push)调用转换为符合Lua语言的数组增加元素调用(即table.insert)。
例如,TypeScript语言的代码如下:
翻译为Lua语言的代码如下:
在另一个示例中,转换关系为转换自增和/或自减的运算符,由于Lua语言中并没有自增的运算符、自减的运算符,TypeScritp语言存在自增的运算符、自减的运算符,因此,该组件在调整AST时,自动识别自增和/或自减的运算符,并将抽象语法树中的自增和/或自减的运算符转换为符合Lua语言的运算表达式,例如,对于自增的运算符a++,可转换为a=a+1。
例如,TypeScript语言的代码如下:
翻译为Lua语言的代码如下:
在另一个示例中,转换关系为转换三元表达式,Lua语言的三元表达式为(a and{b}or{c})[1],TypeScritp语言的三元表达式为a?b:c,因此,该组件在调整AST时,自动识别三元表达式,并将抽象语法树中的三元表达式(即a?b:c)转换为符合Lua语言的三元表达式(即(a and{b}or{c})[1])。
例如,TypeScript语言的代码如下:
翻译为Lua语言的代码如下:
在另一个示例中,转换关系为转换接口,由于Lua语言中并没有类型的概念,TypeScritp语言存在类型的概念,因此,该组件在调整AST时,自动识别接口,若抽象语法树中存在接口,则忽略该接口,并不生成对应的Lua语言的代码。
在另一个示例中,转换关系为转换this参数,该组件在调整AST时,自动识别this参数,若抽象语法树中存在this参数,则使用预设的第一装饰器(/**@noSelf*/)实现符合Lua语言的函数中this参数的隐藏调用。
例如,设置了@noSelf的TypeScript语言的代码如下:
翻译为Lua语言的代码如下:
没有设置@noSelf的TypeScript语言的代码如下:
翻译为Lua语言的代码如下:
从中可以看到,第一装饰器有效地改变了函数参数是否带有self,更加灵活贴合Lua语言的使用。
在另一个示例中,转换关系为转换函数返回,该组件在调整AST时,自动识别函数,在抽象语法树中,使用预设的第二装饰器(/**@tupleReturn*/)实现符合Lua语言的函数返回多个函数值。
此外,转换关系为转换对象,该组件在调整AST时,该组件可以依据转换关系对抽象语法树中符合TypeScript语言的第一对象转换为符合Lua语言的第二对象。
对第二对象中的每个值均配置符合Lua语言的元表(即Lua表),其中,元表的键key表示事件名、元表的值value表示元方法,使得元表可用于原始的值在特定操作下的行为,如果想改变一个值在特定操作下的行为,则可以在它的元表中设置对应的域,如果能找到该域,则可以调用相应的函数来完成加操作。
在元表设置为类时,在抽象语法树中将类设置为返回函数index,进一步地,返回函数index被设定在未匹配上元表的键key时触发,利用这个特性,可以实现Lua的面向对象机制。
具体而言,类是对象的元表,在访问不到对象的字段时,会触发类的返回函数index,而返回函数index可以设为类自己,这样就变成访问类的字段。
一般情况下,把对象的功能函数放在类中,让该类的所有对象都共享一套函数。类的元表为了实现继承,类也找不到字段时,会触发类的元表的返回函数index,这里会取出父类并继续访问,如此循环,一直到父类为空为止。
其中,对象是一个普通的表格table,把它的元表设为指定的类,那么它就被称为该类的对象。
步骤1044、若完成调整,将抽象语法树输出为符合Lua语言的第二代码文件。
在完成调整AST时,可以将调整之后的AST输出为符合Lua语言的第二代码文件。
除了当前开发游戏的项目外,还可以查找其他用于编写符合TypeScript语言的项目(又称工程),将第二代码文件(含声明文件)写入用于项目中,在其他符合TypeScript语言的项目的类型定义文件中引用第二代码文件的函数,提高了第二代码文件的兼容性。
在本实施例中,接收对游戏开发设计的用户界面;对用户界面生成符合TypeScript语言的第一代码文件;确定TypeScript语言与Lua语言之间的转换关系;依据转换关系将第一代码文件转换为符合Lua语言的第二代码文件。本实施例实现了全自动化编,在大多数情况下,开箱即用译。既利用了Lua语言方便热更新的特性,同时也整合了TypeScript语言的强类型检查等优点。自动化编在大多数情况下,开箱即用译,对游戏的开发人员来讲也是无感的,开发人员可以更加关注具体业务开发。游戏的业务逻辑功能采用TypeScript语言进行开发,技术门槛低,开发人员可简单学习、轻松上手,TypeScript语言是强类型语言,并且有众多IDE的开发环境支持,便于游戏开发人员编写代码,大大地提高了开发工作效率。
实施例二
图3为本发明实施例二提供的一种游戏代码的翻译装置的结构示意图。如图3所示,该装置包括:
用户界面接收模块301,用于接收对游戏开发设计的用户界面;
第一代码文件生成模块302,用于对所述用户界面生成符合TypeScript语言的第一代码文件;
转换关系确定模块303,用于确定TypeScript语言与Lua语言之间的转换关系;
第二代码文件生成模块304,用于依据所述转换关系将所述第一代码文件转换为符合Lua语言的第二代码文件。
在本发明的一个实施例中,所述第一代码文件生成模块302包括:
组件代码生成模块,用于对所述用户界面的组件生成符合TypeScript语言的代码,作为组件代码;
窗口类创建模块,用于创建窗口类,所述窗口类用于实现所述组件的业务逻辑功能;
组件代码继承模块,用于在所述窗口类中继承所述组件代码,获得第一代码文件。
在本发明的另一个实施例中,所述第一代码文件生成模块302还包括:
描述声明文件生成模块,用于按照预设的接口定义语言生成符合TypeScript语言的描述声明文件;
代码检查模块,用于依据所述描述声明文件对所述第一代码文件的代码进行检查;
警报信息生成模块,用于若检查所述第一代码文件的代码出现错误,则对所述第一代码文件的代码生成警报信息。
在本发明的又一个实施例中,所述第一代码文件生成模块302还包括:
表格查找模块,用于若查找到用于记录所述游戏的配置数据的表格,则将所述表格写入所述第一代码文件中;
关联性标记模块,用于若所述配置数据之间存在关联性,则对所述表格标记所述关联性;
表格压缩模块,用于若所述表格符合预设的压缩条件,则对所述表格进行压缩。
在本发明的一个实施例中,所述表格压缩模块包括:
数字压缩模块,用于若所述表格中存在数字,则对所述表格中的所述数字进行变长字节编码;
字段压缩模块,用于若所述表格中存在标定的字段,则对所述表格中的所述字段进行压缩、直至所述表格的体积小于预设的阈值。
在本发明的一个实施例中,所述第二代码文件生成模块304包括:
令牌生成模块,用于对所述第一代码文件生成令牌;
抽象语法树生成模块,用于使用所述令牌生成符合TypeScript语言的抽象语法树;
抽象语法树调整模块,用于依据所述转换关系对所述抽象语法树进行调整;
第二代码文件输出模块,用于若完成调整,将所述抽象语法树输出为符合Lua语言的第二代码文件。
在本发明的一个实施例中,所述抽象语法树调整模块包括:
第一转换模块,用于将所述抽象语法树中的数组下标累加一,作为符合Lua语言的数组下标;
第二转换模块,用于将所述抽象语法树中的运算符转换为符合Lua语言的运算符;
第三转换模块,用于将所述抽象语法树中的数组长度转换为符合Lua语言的数组长度;
第四转换模块,用于将所述抽象语法树中的数组增加元素调用转换为符合Lua语言的数组增加元素调用;
第五转换模块,用于将所述抽象语法树中的自增和/或自减的运算符转换为符合Lua语言的运算表达式;
第六转换模块,用于将所述抽象语法树中的三元表达式转换为符合Lua语言的三元表达式;
接口忽略模块,用于若所述抽象语法树中存在接口,则忽略所述接口;
第一装饰模块,用于若所述抽象语法树中存在this参数,则使用预设的第一装饰器实现符合Lua语言的函数中this参数的隐藏调用;
第二装饰模块,用于在所述抽象语法树中,使用预设的第二装饰器实现符合Lua语言的函数返回多个函数值。
在本发明的零一个实施例中,所述抽象语法树调整模块包括:
对象转换模块,用于依据所述转换关系对所述抽象语法树中符合TypeScript语言的第一对象转换为符合Lua语言的第二对象;
元表配置模块,用于对所述第二对象中的每个值均配置符合Lua语言的元表,所述元表的键表示事件名、所述元表的值表示元方法;
返回函数设置模块,用于在所述元表设置为类时,在所述抽象语法树中将所述类设置为返回函数,所述返回函数在未匹配上所述元表的键时触发。
在本发明的零一个实施例中,还包括:
项目查找模块,用于查找用于编写符合TypeScript语言的项目;
代码文件写入模块,用于将所述第二代码文件写入用于所述项目中;
函数引用模块,用于在所述项目的类型定义文件中引用所述第二代码文件的函数。
本发明实施例所提供的游戏代码的翻译装置可执行本发明任意实施例所提供的游戏代码的翻译方法,具备执行游戏代码的翻译方法相应的功能模块和有益效果。
实施例三
图4示出了可以用来实施本发明的实施例的电子设备10的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图4所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM 13中,还可存储电子设备10操作所需的各种程序和数据。处理器11、ROM 12以及RAM 13通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。
电子设备10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,如游戏代码的翻译方法。
在一些实施例中,游戏代码的翻译方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM 12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到RAM 13并由处理器11执行时,可以执行上文描述的游戏代码的翻译方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行游戏代码的翻译方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
实施例四
本发明实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序在被处理器执行时实现如本发明任一实施例所提供的游戏代码的翻译方法。
计算机程序产品在实现的过程中,可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言,诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (12)
1.一种游戏代码的翻译方法,其特征在于,包括:
接收对游戏开发设计的用户界面;
对所述用户界面生成符合TypeScript语言的第一代码文件;
确定TypeScript语言与Lua语言之间的转换关系;
依据所述转换关系将所述第一代码文件转换为符合Lua语言的第二代码文件。
2.根据权利要求1所述的方法,其特征在于,所述对所述用户界面生成符合TypeScript语言的第一代码文件,包括:
对所述用户界面的组件生成符合TypeScript语言的代码,作为组件代码;
创建窗口类,所述窗口类用于实现所述组件的业务逻辑功能;
在所述窗口类中继承所述组件代码,获得第一代码文件。
3.根据权利要求2所述的方法,其特征在于,所述对所述用户界面生成符合TypeScript语言的第一代码文件,还包括:
按照预设的接口定义语言生成符合TypeScript语言的描述声明文件;
依据所述描述声明文件对所述第一代码文件的代码进行检查;
若检查所述第一代码文件的代码出现错误,则对所述第一代码文件的代码生成警报信息。
4.根据权利要求2所述的方法,其特征在于,所述对所述用户界面生成符合TypeScript语言的第一代码文件,还包括:
若查找到用于记录所述游戏的配置数据的表格,则将所述表格写入所述第一代码文件中;
若所述配置数据之间存在关联性,则对所述表格标记所述关联性;
若所述表格符合预设的压缩条件,则对所述表格进行压缩。
5.根据权利要求4所述的方法,其特征在于,所述对所述表格进行压缩,包括:
若所述表格中存在数字,则对所述表格中的所述数字进行变长字节编码;
若所述表格中存在标定的字段,则对所述表格中的所述字段进行压缩、直至所述表格的体积小于预设的阈值。
6.根据权利要求1-5中任一项所述的方法,其特征在于,所述依据所述转换关系将所述第一代码文件转换为符合Lua语言的第二代码文件,包括:
对所述第一代码文件生成令牌;
使用所述令牌生成符合TypeScript语言的抽象语法树;
依据所述转换关系对所述抽象语法树进行调整;
若完成调整,将所述抽象语法树输出为符合Lua语言的第二代码文件。
7.根据权利要求6所述的方法,其特征在于,所述依据所述转换关系对所述抽象语法树进行调整,包括:
将所述抽象语法树中的数组下标累加一,作为符合Lua语言的数组下标;
将所述抽象语法树中的运算符转换为符合Lua语言的运算符;
将所述抽象语法树中的数组长度转换为符合Lua语言的数组长度;
将所述抽象语法树中的数组增加元素调用转换为符合Lua语言的数组增加元素调用;
将所述抽象语法树中的自增和/或自减的运算符转换为符合Lua语言的运算表达式;
将所述抽象语法树中的三元表达式转换为符合Lua语言的三元表达式;
若所述抽象语法树中存在接口,则忽略所述接口;
若所述抽象语法树中存在this参数,则使用预设的第一装饰器实现符合Lua语言的函数中this参数的隐藏调用;
在所述抽象语法树中,使用预设的第二装饰器实现符合Lua语言的函数返回多个函数值。
8.根据权利要求6所述的方法,其特征在于,所述依据所述转换关系对所述抽象语法树进行调整,包括:
依据所述转换关系对所述抽象语法树中符合TypeScript语言的第一对象转换为符合Lua语言的第二对象;
对所述第二对象中的每个值均配置符合Lua语言的元表,所述元表的键表示事件名、所述元表的值表示元方法;
在所述元表设置为类时,在所述抽象语法树中将所述类设置为返回函数,所述返回函数在未匹配上所述元表的键时触发。
9.根据权利要求1-5、7-8中任一项所述的方法,其特征在于,还包括:
查找用于编写符合TypeScript语言的项目;
将所述第二代码文件写入用于所述项目中;
在所述项目的类型定义文件中引用所述第二代码文件的函数。
10.一种游戏代码的翻译装置,其特征在于,包括:
用户界面接收模块,用于接收对游戏开发设计的用户界面;
第一代码文件生成模块,用于对所述用户界面生成符合TypeScript语言的第一代码文件;
转换关系确定模块,用于确定TypeScript语言与Lua语言之间的转换关系;
第二代码文件生成模块,用于依据所述转换关系将所述第一代码文件转换为符合Lua语言的第二代码文件。
11.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-9中任一项所述的游戏代码的翻译方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序用于使处理器执行时实现权利要求1-9中任一项所述的游戏代码的翻译方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310959292.0A CN116880842A (zh) | 2023-08-01 | 2023-08-01 | 一种游戏代码的翻译方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310959292.0A CN116880842A (zh) | 2023-08-01 | 2023-08-01 | 一种游戏代码的翻译方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116880842A true CN116880842A (zh) | 2023-10-13 |
Family
ID=88262911
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310959292.0A Pending CN116880842A (zh) | 2023-08-01 | 2023-08-01 | 一种游戏代码的翻译方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116880842A (zh) |
-
2023
- 2023-08-01 CN CN202310959292.0A patent/CN116880842A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111708539B (zh) | 一种应用程序代码转换方法、装置、电子设备和存储介质 | |
US11741293B2 (en) | Systems and methods of a script generation engine | |
US7174533B2 (en) | Method, system, and program for translating a class schema in a source language to a target language | |
US9058360B2 (en) | Extensible language framework using data cartridges | |
US8997070B2 (en) | Extension mechanism for scripting language compiler | |
CN114841326B (zh) | 深度学习框架的算子处理方法、装置、设备和存储介质 | |
JP5123291B2 (ja) | プログラミング言語における式ツリーの深い埋め込みのためのジェネリックインターフェイス | |
US9311077B2 (en) | Identification of code changes using language syntax and changeset data | |
CN116028028B (zh) | 请求函数生成方法、装置、设备及存储介质 | |
CN103136100A (zh) | 一种Android测试的方法和系统 | |
CN116755669A (zh) | 一种基于dsl语言操作模型的低代码开发方法和工具 | |
CN110737431A (zh) | 软件开发方法、开发平台、终端设备及存储介质 | |
US10606569B2 (en) | Declarative configuration elements | |
US10540157B2 (en) | Systems to remove object relational mappings from a software project | |
US11550556B1 (en) | Efficient semantic analysis of program code | |
CN116880842A (zh) | 一种游戏代码的翻译方法、装置、设备及存储介质 | |
CN114371886A (zh) | 前端框架组件转换方法、装置、计算机设备及存储介质 | |
CN114115908A (zh) | 一种指令集生成、程序解析方法装置、设备以及存储介质 | |
Lu et al. | DATAM: A model‐based tool for dependability analysis | |
US20240086163A1 (en) | Iterative and interactive method for code conversion | |
CN117667112A (zh) | 一种基于babel的前端开发文档自适应生成方法 | |
KR20230128567A (ko) | 딥러닝 프레임워크의 연산자 처리 방법, 장치, 전자 기기, 저장 매체 및 컴퓨터 프로그램 | |
CN118409756A (zh) | 深度学习模型的编译方法、装置、电子设备和存储介质 | |
CN118070536A (zh) | 异构模型转换方法、装置、电子设备及存储介质 | |
CN114168144A (zh) | Es-jdbc连接sql-dml的实现方法及系统 |
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 |