[go: up one dir, main page]

CN116585715A - 一种游戏开发框架的实现方法、游戏开发框架、设备及介质 - Google Patents

一种游戏开发框架的实现方法、游戏开发框架、设备及介质 Download PDF

Info

Publication number
CN116585715A
CN116585715A CN202310584940.9A CN202310584940A CN116585715A CN 116585715 A CN116585715 A CN 116585715A CN 202310584940 A CN202310584940 A CN 202310584940A CN 116585715 A CN116585715 A CN 116585715A
Authority
CN
China
Prior art keywords
component
components
module
configuration
basic
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
Application number
CN202310584940.9A
Other languages
English (en)
Inventor
洪宏中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Sanqi Jimeng Network Technology Co ltd
Original Assignee
Guangzhou Sanqi Jimeng Network Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangzhou Sanqi Jimeng Network Technology Co ltd filed Critical Guangzhou Sanqi Jimeng Network Technology Co ltd
Priority to CN202310584940.9A priority Critical patent/CN116585715A/zh
Publication of CN116585715A publication Critical patent/CN116585715A/zh
Pending legal-status Critical Current

Links

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/77Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及游戏设计开发技术领域,尤其涉及一种游戏开发框架的实现方法、游戏开发框架、设备及介质,所述方法具体包括:选择SpringBoot作为基础组件框架;使用maven搭建模块化工程,得到基础组件;使用SpringBoot‑Starter风格对至少一个所述基础组件进行二次封装得到模块组件,所述模块组件支持各种配置的默认实现;使用Nexus搭建Maven私服。本发明通过合理选择开发工具实现细颗粒的组件开发,将组件设置为支持各种配置的默认实现,通过二次封装、构建私服等手段使得组件以第三方依赖的形式提供给项目应用程序,配置灵活,降低开发难度、时间和成本。

Description

一种游戏开发框架的实现方法、游戏开发框架、设备及介质
技术领域
本发明涉及游戏人工智能技术领域,尤其涉及一种游戏开发框架的实现方法、游戏开发框架、设备及介质。
背景技术
游戏服务器程序由各种组件组成,包含基础组件以及业务组件,负责处理游戏中玩家的各种网络操作,并将玩家的数据进行持久化。对于游戏服务器开发而言,绝大部份基础组件都是可以重复利用的。例如socket网络节点,业务线程模型,读取配置文件的数据仓库等等。这些组件一般开发一次之后就可以打包成第三方依赖,供其他项目共享。
目前游戏项目开发中经常将基础框架代码与业务代码融为一体,后期很难对组件进行自由组合,也很难被别的项目组进行重复利用,从而使得开发过程存在重复研发行为,人力和时间成本较高;且由于基础框架代码和业务代码难以区分,不利于跨项目服使用。同时,开发人员不仅需要在业务层次上进行开发,还需要关注基础组件的搭建,增大开发难度。
发明内容
本发明的目的在于提供一种游戏开发框架的实现方法、游戏开发框架、设备及介质,通过合理地组件搭建封装和私服设置来实现游戏开发框架,以解决上述现有问题的至少之一。
本发明提供了一种游戏开发框架的实现方法,所述方法具体包括:
选择SpringBoot作为基础组件框架;
使用maven搭建模块化工程,得到基础组件;
使用SpringBoot-Starter风格对至少一个所述基础组件进行二次封装得到模块组件,所述模块组件支持各种配置的默认实现;
使用Nexus搭建Maven私服。
进一步的,使用SpringBoot-Starter风格对至少一个所述基础组件进行二次封装得到模块组件,具体包括:
引入所述模块组件所需的相关jar包;
自动配置各自模块组件所需的基础组件。
更进一步的,所述使用maven搭建模块化工程,得到基础组件,具体包括:构建消息解析组件,所述消息解析组件能够实现多种编解码方案,当应用程序引入所述消息解析组件依赖后,获取所述消息解析组件;所述消息解析组件的默认解析方式为基于java反射实现,应用程序能够通过参数配置来切换编解码方案。
更进一步的,所述使用maven搭建模块化工程,得到基础组件,具体包括:引入Netty和Mina两个网络IO库构建网络组件,所述网络组件能够通过参数配置选择使用何种IO库;所述网络组件设置IdSession接口,将所述Netty和Mina统一封装为所述IdSession接口。
更进一步的,所述使用SpringBoot-Starter风格对至少一个所述基础组件进行二次封装得到模块组件,具体包括:把所述网络组件和所述消息解析组件组合封装前置独立网关,所述前置独立网关至少为2个,每个所述前置独立网关与至少一个游戏服链接,所述前置独立网关之间通信链接。
更进一步的,所述使用maven搭建模块化工程,得到基础组件,具体包括:构建配置读取仓库组件,使用一个数据仓库集中保存所有数据表与对应的第一数据载体容器的映射关系,当进行数据表热更新时,创建第二数据载体容器,并在加载数据后替换所述第一数据载体容器;所述配置读取仓库组件支持多种数据访问,以及提供多种配置格式的解析。
更进一步的,所述配置读取仓库组件支持多种配置格式解析,包括json格式、Excel格式和CSV格式,所述CSV格式为默认格式。
本发明还提供了一种游戏开发框架,具体包括:
基础组件框架,所述基础组件框架为SpringBoot;
基础组件搭建模块,用于使用maven搭建模块化工程,得到基础组件;
封装模块,用于使用SpringBoot-Starter风格对至少一个所述基础组件进行二次封装得到模块组件,所述模块组件支持各种配置的默认实现;
私服搭建模块,用于使用Nexus搭建Maven私服。
本发明还提供了一种计算机设备,包括:存储器和处理器及存储在存储器上的计算机程序,当所述计算机程序在处理器上被执行时,实现如上述方法中任一项所述的游戏开发框架的实现方法。
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,实现如上述方法中任一项所述的游戏开发框架的实现方法。
与现有技术相比,本发明具有以下技术效果的至少之一:
1、合理选择开发工具实现细颗粒的组件开发,得到独立包装的基础组件,配置灵活,降低开发难度、时间和成本。
2、将组件设置为支持各种配置的默认实现,通过二次封装,可实现以第三方依赖的形式提供给项目应用程序,从而实现简便地开箱即用和重复利用,降低开发难度、时间和成本。
3、通过构建私服,方便公司内部开发人员无需联网就可以共享下载依赖,简单方便且安全地实现开发共享。
附图说明
是为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种游戏开发框架的实新方法方法的示意图;
图2是本发明实施例提供的网关组件的链接示意图;
图3是本发明实施例提供游戏开发框架的示意图;
图4是本发明实施例提供的一种计算机设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
游戏服务器程序由各种组件组成,包含基础组件以及业务组件,负责处理游戏中玩家的各种网络操作,并将玩家的数据进行持久化。对于游戏服务器开发而言,绝大部份基础组件都是可以重复利用的。例如socket网络节点,业务线程模型,读取配置文件的数据仓库等等。这些组件一般开发一次之后就可以打包成第三方依赖,供其他项目共享。
目前游戏项目开发中经常将基础框架代码与业务代码融为一体,后期很难对组件进行自由组合,也很难被别的项目组进行重复利用,从而使得开发过程存在重复研发行为,人力和时间成本较高;且由于基础框架代码和业务代码难以区分,不利于跨项目服使用。同时,开发人员不仅需要在业务层次上进行开发,还需要关注基础组件的搭建,增大开发难度。即使将基础功能封装成独立模块,模块粒度也不够细分,很难将模块进行二次组合。并且没有做到组件的开箱即用,需要手动把组件注入到项目里去。
参照图1,本发明实施例提供了一种游戏开发框架的实现方法,实施该方法是为了能够尽量重用代码,减少重复的人力研发工作,降低间成本。让开展的新项目更关注于业务层次上的开发,而不用过度关注基础组建的搭建。新的游戏项目只需要引入对应的组件依赖,无须xml配置,应用程序即可自动装配各种基础组件。
所述方法具体包括:
S100,选择SpringBoot作为基础组件框架。
本实施例中的游戏开发框架的基本构思为实现组件化的开发框架。组件化类似于搭积木,每一块积木可以看成一个组件,既独立又统一。因为独立,所以它可以自由组合,也可以随意替换和删除其中一个组件,并不会影响整体。同时,每个组件统一于整体,便于配置和设置依赖。可以理解为,一个游戏开发项目是由很多个独立的组件搭建起来。组件化的工作方式信奉独立、完整、自由组合。目标就是尽可能把设计与开发中的元素独立化,使它具备完整的局部功能,通过自由组合来构成整个项目。基于组件化思想游戏框架设计,能够以最低的开发成本搭建游戏服务器框架,并且做到组件模块化,使用简单,配置灵活,自主选择性高。
尤其是针对MMORPG游戏,其功能强大,同时在线玩家较多,在游戏项目开发时就需要考虑开发过程中的成本、灵活、更新等问题。选择何种基础组件框架对游戏项目开发的影响较大。比如,以Spring作为基础组件框架。由于游戏业务非常复杂,需要引入的Spring第三方依赖非常多,导致xml配置非常雍容。比如游戏接受后台管理命令采用的是http方式,项目引入了SpringMVC框架。为此,程序不得不手动引入一大堆第三方依赖包,并进行各种复杂的xml配置,非常繁琐。本实施例中为了解决配置复杂的问题,引入了SpringBoot框架,用来简化开发过程。SpringBoot框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。SpringBoot所具备的特征有:
内嵌Tomcat或Jetty等Servlet容器;
提供自动配置的“starter”项目对象模型以简化Maven配置;
尽可能自动配置Spring容器;;
提供指标监控、运行状况检查和外部化配置;
绝对没有代码生成,不需要XML配置。
因此,本申请实施例通过选择SpringBoot框架作为基础组件框架,简化了Spring各种配置和依赖声明,提高了开发性能。
所述方法还包括:
S200,使用maven搭建模块化工程,得到基础组件。
本实施例中使用maven搭建模块化工程。比如网关组件,缓存组件都是单独一个模块。使用多组件的思想,可以统一管理各种通用第三方依赖的版本及打包参数,也可以使每个组件“高内聚”,组件间“低耦合”,保持组件模块自己的完整性及独立性。每个组件模块设计的原则是组件尽可能功能单一,体积小,功能完整,便于将组件进行二次组合,形成完善的功能模块。可以通过将基础的底层代码提取出来封装成一个个基础组件,其他功能都依赖于基础组件;同时还支持将多个基础组件进行二次组合,合成一个功能完整的模块组件,易堆积,易扩展。
具体地,本实施例中,所述方法还包括:
S300,使用SpringBoot-Starter风格对至少一个所述基础组件进行二次封装得到模块组件,所述模块组件支持各种配置的默认实现。
当游戏开发项目引入网关模块之后,程序仍然需要手动构建网关配置对象及网关服务对象,比较麻烦。为了简化组件手动创建的步骤,支持各种配置的默认实现,使用SpringBoot-Starter风格对模块组件进行二次封装。SpringBoot-Starter其实是一个集成接合器,在一些实施例中,其封装过程包括:
S301,引入所述模块组件所需的相关jar包;
S302,自动配置各自模块组件所需的基础组件。
通过将基础组件以Starter的形式进行二次封装之后,所有基础组件都可以以第三方依赖的形式供其他项目进行重复利用,能够极大提供整个公司的生产力。游戏开发项目只需要引入相应的依赖,即可自动获得相应的模块组件,无须任何xml配置。模块组件的内部代码配置有非常详尽的API文档,可以直接通过文档结合源代码进行理解。遵循“约定优于配置”的原则,对组件提供默认配置。当然,如果想修改模块组件参数,也只需要修改项目配置文件即可,非常方便。通过上述设置可以实现组件的“开箱即用”。
且本实施例所提供的模块组件的自主选择性高,通过模块组件自动配置框架提供了服务器开发所需要的绝大部分组件,游戏项目可以根据自己的需要,选择性引入其中部分组件。
具体地,本实施例中,所述方法还包括:
S400,使用Nexus搭建Maven私服。
私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务。如表1所示,对比了不同私服的。同一公司内部不同开发项目中,可以每个项目独立维护自己的依赖仓库,包括第三方依赖和公司共享组件依赖。但是这样的架构会使得在重用组件时,需要手动拷贝组件依赖以上传到自己项目的依赖仓库,初始项目需要从版本系统下载巨大的依赖文件。还可以共享组件上传到公司公共代码版本库,每个项目独立上传及下载,但是这样的架构下项目成员需要独立开通版本读写权限。本申请实施例使用Nexus部署Maven私服仓库,项目成员无须独立开通版本权限,且通过内网下载依赖时下载速度较快。
Maven默认从中央仓库下载依赖,但公司内部开发可能基于安全策略是无法联网的。搭建Maven私服可以解决这个问题。Maven私服能够从外部网络下载依赖之后,项目组成员直接访问该私服仓库而无需联网。利用私服仓库的特点,项目开发的通用依赖工具库,也可以在公司内部项目进行共享,而不对外开放。
本实施例使用nexus来搭建Maven私服仓库。nexus是一个强大的Maven仓库管理器,它极大的简化了本地内部仓库的维护和外部仓库的访问。它有以下的特点:
开箱即用的系统不需要数据库,使用文件系统加Lucene来组织数据;
使用ExtJS来开发界面,利用Restlet来提供完整的RESTAPIs;
提供强大的仓库管理功能,构件搜索功能,占用较少的内存,基于简单文件系统而非数据库。
在一些实施例中,所述使用maven搭建模块化工程,得到基础组件,具体包括:构建消息解析组件,所述消息解析组件能够实现多种编解码方案,当应用程序引入所述消息解析组件依赖后,获取所述消息解析组件;所述消息解析组件的默认解析方式为基于java反射实现,应用程序能够通过参数配置来切换编解码方案。
网络传输消息依靠的数据载体是字节流,关于字节流与网络消息的互相转化,常用的方式包括Xml、Json、Protobuff、Protostuff几种消息编解码方案。不同方案都有其优缺点,如表1所示。
表1
为了便于拓展,本实施例提供了多种编解码方案以供选择。当项目引入该组件依赖之后,即可获得一个消息解析的组件。默认解析方式为基于java反射实现,如果需要切换解析方案,只需要在项目的配置表切换类型参数即可,真正做到“开箱即用”。
在一些实施例中,所述使用maven搭建模块化工程,得到基础组件,具体包括:引入Netty和Mina两个网络IO库构建网络组件,所述网络组件能够通过参数配置选择使用何种IO库;所述网络组件设置IdSession接口,将所述Netty和Mina统一封装为所述IdSession接口。
本实施例使用Netty作为服务器网关,主要用于管理手机客户端会话(包括建立与移除),负责接收来自手机客户端的请求协议,以及主动推送服务端消息。使用Java编写的服务器在选择通信框架技术上,常常选择Netty或者Mina。为了提高组件的灵活性,本实施例同时引入Netty和Mina两个网络IO库。也就是说,项目可以根据配置参数,自由选择使用哪个IO库,非常方便。Mina框架本身带有IoSession对象,用来表示对应链接的会话,而Netty则没有这样的模型。为了兼容两种网络框架,抽象出IdSession这样的接口,针对Netty和Mina给出两个不同的实现。项目开发时只需要依赖IdSession,而不用跟具体网络实现绑定在一起。
在一些实施例中,所述使用SpringBoot-Starter风格对至少一个所述基础组件进行二次封装得到模块组件,具体包括:把所述网络组件和所述消息解析组件组合封装前置独立网关,所述前置独立网关至少为2个,每个所述前置独立网关与至少一个游戏服链接,所述前置独立网关之间通信链接。
本实施例使用消息解析组件加网络组件进行组合,封装成一个网关组件。现有的很多游戏开发框架都属于单进程项目。也就是说,所有组件都嵌在同一个游戏进程里。这种单点架构开发简单,部署也简单,但很难支持大量玩家同时在线。在单点架构的设计下,游戏只能使用嵌入式网关。嵌入式网关的缺点是每一个玩家都需要有一对一的socket链接。在实现跨服功能的时候,要么通过游戏服把网络协议转发到战斗服;要么让客户端同时建立两条网络链接,一条连接游戏服,一条连接战斗服。
本实施例构建的网关组件是一种前置独立网关。网关不跟游戏服一一对应,也就是说,假设每一台机器部署4个游戏服,那么这台机器只需要一个网关,这4个游戏服链接同一个网关。客户端玩家通过服务器ID绑定具体的游戏服进程。前置网关架构可以实现游戏跨服玩法。如图2所示网关组件的链接关系,游戏服1、2、3与网关1链接,游戏服4、5、6与网关2链接;玩家1、2、3的设备与网关1通信,王家4、5的设备与网关2通信。玩家1、2、3的设备仅需要与网关1通信,玩家4、5的设备仅需要和网关2通信,由于网关1和网关2之间互相链接,就可以实现各个设备之间的相互通信;也就是说,任意一个游戏服都可以发送消息到另外一个游戏服和/或战斗服,玩家客户端的设备请求自始至终都只需要链接自己游戏服所在的网关即可,由此实现了跨服架构。
在一些实施例中,所述使用maven搭建模块化工程,得到基础组件,具体包括:构建配置读取仓库组件,使用一个数据仓库集中保存所有数据表与对应的第一数据载体容器的映射关系,当进行数据表热更新时,创建第二数据载体容器,并在加载数据后替换所述第一数据载体容器;所述配置读取仓库组件支持多种数据访问,以及提供多种配置格式的解析。
游戏策划人员可以采用excel工具来管理游戏里的数值配置,excel内置的公式以及可视化操作,对开发人员来说是非常方便的工具。但对于服务器来说,Excel不是唯一的格式。典型地说,服务器端很少直接将Excel文件作为数据源,服务器设计更喜欢选择将Excel导入数据库,或者将Excel文件转为CSV格式。CSV格式相对于Excel格式来说,它属于纯文本格式,体积小,更方便程序解析。
在生产环境经常需要对配置进行热更新,所以游戏配置读取的时候需要加锁,否则数据完整性就会遭到破坏。但是在设计组件的时候,却希望能做到无锁化访问写入配置。本实施例中,使用一个数据仓库集中保存所有表已经对应的数据载体容器的映射关系,当进行表热更新的时候,直接创建出一个新的数据容器,并在数据加载完毕后直接替换旧的数据容器。当在数据重载的过程中,即使已经有线程在进行读取操作,由于数据仓库保存的仍然是旧容器,读写发生在不同的数据容器,因此不会出现线程问题。作为一个通用的配置读取组件,当外部游戏项目引入本架构下的组件依赖之后,自动获得一个配置数据仓库组件,该组件支持对任意配置文件进行多种模式的数据访问,并且是无锁化读写,同时支持在生产环境上进行热更新。配置读取仓库支持以下几种数据访问:
根据主键读取指定文件的配置数据;
读取指定文件的所有配置数据;
根据索引读取指定文件的配置数据。
同时,为了支持拓展,提供了若干种配置格式的解析。比如json格式,Excel格式,CSV格式等等。具体地,本实施例使用CSV作为默认配置格式,项目则无须写任何配置参数。
配置读取仓库组件的工作原理如下:
引入该组件依赖之后,项目自动注入数据仓库组件及其辅助组件,以及配置组件,根据配置属性自动注入配置解析工具,默认使用CSV格式;
配置仓库组件内保存有各配置文件(即配置表)及其对应的配置容器(即配置表的数据载体容器);配置仓库利用解析工具自动检索所有配置文件,并生成配置文件对应的配置容器,一份配置文件(如一张配置表)对应一个配置容器(即第一数据载体容器),当需要热更新配置的时候,基于热更新重新生成一个新的配置容器(即第二数据载体容器),并替换旧配置容器(即第一数据载体容器),实现数据读写的无锁化;
其中,项目应用程序可以直接获取数据仓库组件对任意配置表进行查询。
本实施例中,把基础的底层代码提取出来封装成一个个组件,其他功能都依赖于组件;支持将多个小组件进行二次组合成一个功能完整的模块,易堆积,易扩展;创造平台用于组件的分享与贡献;游戏项目仅选择性引入需要的组件依赖,开机即用,组合完成之后即可直接进行业务开发流程。在项目开发时,可以更关注于业务层次上的开发,而不用过度关注基础组建的搭建。任何游戏项目只需要引入对应的组件依赖,无须任何xml配置,项目应用程序即可自动装配各种基础组件。游戏项目根据需求对组件库进行组合即可直接进行业务开发流程。
参照图3,本发明实施例还提供了一种游戏开发框架,其特征在于,所述游戏开发框架包括:
基础组件框架310,所述基础组件框架为SpringBoot;
基础组件搭建模块320,用于使用maven搭建模块化工程,得到基础组件;
封装模块330,用于使用SpringBoot-Starter风格对至少一个所述基础组件进行二次封装得到模块组件,所述模块组件支持各种配置的默认实现;
私服搭建模块340,用于使用Nexus搭建Maven私服。
可以理解的是,如图1所示的游戏开发框架的实现方法实施例中的内容均适用于本游戏开发框架实施例中,本游戏开发框架实施例所具体实现的功能与如图1所示的游戏开发框架的实现方法实施例相同,并且达到的有益效果与如图1所示的游戏开发框架的实现方法实施例所达到的有益效果也相同。
需要说明的是,上述框架之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
参照图4,本发明实施例还提供了一种计算机设备4,包括:存储器402和处理器401及存储在存储器402上的计算机程序403,当所述计算机程序403在处理器401上被执行时,实现如上述方法中任一项所述的游戏开发框架的实现方法。
所述计算机设备4可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。该计算机设备4可包括,但不仅限于,处理器401、存储器402。本领域技术人员可以理解,图4仅仅是计算机设备4的举例,并不构成对计算机设备4的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等。
所称处理器401可以是中央处理单元(Central Processing Unit,CPU),该处理器401还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器402在一些实施例中可以是所述计算机设备4的内部存储单元,例如计算机设备4的硬盘或内存。所述存储器402在另一些实施例中也可以是所述计算机设备4的外部存储设备,例如所述计算机设备4上配备的插接式硬盘,智能存储卡(Smart MediaCard,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器402还可以既包括所述计算机设备4的内部存储单元也包括外部存储设备。所述存储器402用于存储操作系统、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器402还可以用于暂时地存储已经输出或者将要输出的数据。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,实现如上述方法中任一项所述的虚拟对象的计分式行为决策方法。
该实施例中,所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所公开的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

Claims (10)

1.一种游戏开发框架的实现方法,其特征在于,所述方法包括:
选择SpringBoot作为基础组件框架;
使用maven搭建模块化工程,得到基础组件;
使用SpringBoot-Starter风格对至少一个所述基础组件进行二次封装得到模块组件,所述模块组件支持各种配置的默认实现;
使用Nexus搭建Maven私服。
2.根据权利要求1所述的方法,其特征在于,使用SpringBoot-Starter风格对至少一个所述基础组件进行二次封装得到模块组件,具体包括:
引入所述模块组件所需的相关jar包;
自动配置各自模块组件所需的基础组件。
3.根据权利要求1-2任一项所述的方法,其特征在于,所述使用maven搭建模块化工程,得到基础组件,具体包括:构建消息解析组件,所述消息解析组件能够实现多种编解码方案,当应用程序引入所述消息解析组件依赖后,获取所述消息解析组件;所述消息解析组件的默认解析方式为基于java反射实现,应用程序能够通过参数配置来切换编解码方案。
4.根据权利要求3所述的方法,其特征在于,所述使用maven搭建模块化工程,得到基础组件,具体包括:引入Netty和Mina两个网络IO库构建网络组件,所述网络组件能够通过参数配置选择使用何种IO库;所述网络组件设置IdSession接口,将所述Netty和Mina统一封装为所述IdSession接口。
5.根据权利要求4所述的方法,其特征在于,所述使用SpringBoot-Starter风格对至少一个所述基础组件进行二次封装得到模块组件,具体包括:把所述网络组件和所述消息解析组件组合封装前置独立网关,所述前置独立网关至少为2个,每个所述前置独立网关与至少一个游戏服链接,所述前置独立网关之间通信链接。
6.根据权利要求1-2任一项所述的方法,其特征在于,所述使用maven搭建模块化工程,得到基础组件,具体包括:构建配置读取仓库组件,使用一个数据仓库集中保存所有数据表与对应的第一数据载体容器的映射关系,当进行数据表热更新时,创建第二数据载体容器,并在加载数据后替换所述第一数据载体容器;所述配置读取仓库组件支持多种数据访问,以及提供多种配置格式的解析。
7.根据权利要求6所述的方法,其特征在于,所述配置读取仓库组件支持多种配置格式解析,包括json格式、Excel格式和CSV格式,所述CSV格式为默认格式。
8.一种游戏开发框架,其特征在于,所述游戏开发框架包括:
基础组件框架,所述基础组件框架为SpringBoot;
基础组件搭建模块,用于使用maven搭建模块化工程,得到基础组件;
封装模块,用于使用SpringBoot-Starter风格对至少一个所述基础组件进行二次封装得到模块组件,所述模块组件支持各种配置的默认实现;
私服搭建模块,用于使用Nexus搭建Maven私服。
9.一种计算机设备,其特征在于,包括:存储器和处理器及存储在存储器上的计算机程序,当所述计算机程序在处理器上被执行时,实现如权利要求1至7中任一项所述的游戏开发框架的实现方法。
10.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,实现如权利要求1至7中任一项所述的游戏开发框架的实现方法。
CN202310584940.9A 2023-05-23 2023-05-23 一种游戏开发框架的实现方法、游戏开发框架、设备及介质 Pending CN116585715A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310584940.9A CN116585715A (zh) 2023-05-23 2023-05-23 一种游戏开发框架的实现方法、游戏开发框架、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310584940.9A CN116585715A (zh) 2023-05-23 2023-05-23 一种游戏开发框架的实现方法、游戏开发框架、设备及介质

Publications (1)

Publication Number Publication Date
CN116585715A true CN116585715A (zh) 2023-08-15

Family

ID=87604225

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310584940.9A Pending CN116585715A (zh) 2023-05-23 2023-05-23 一种游戏开发框架的实现方法、游戏开发框架、设备及介质

Country Status (1)

Country Link
CN (1) CN116585715A (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101854201B1 (ko) * 2016-10-25 2018-05-03 주식회사 디지털쿠키 서버 및 클라이언트 통합형 게임 저작시스템
CN108446111A (zh) * 2018-03-26 2018-08-24 国家电网公司客户服务中心 一种基于Spring cloud的微服务构建方法
CN109597610A (zh) * 2018-12-10 2019-04-09 南京华苏科技有限公司 一种基于微服务架构的应用结构组件化构建方法
CN111190586A (zh) * 2019-12-16 2020-05-22 腾讯科技(深圳)有限公司 软件开发框架的搭建及使用方法、计算设备和存储介质
CN111796834A (zh) * 2020-06-30 2020-10-20 福信富通科技股份有限公司 一种可组合的微服务开发框架的部署方法、装置及设备
CN111813394A (zh) * 2020-05-22 2020-10-23 广州太平洋电脑信息咨询有限公司 一种基于SpringBoot的Zeus框架的开发方法及Zeus框架
CN113849178A (zh) * 2021-09-28 2021-12-28 航天科工网络信息发展有限公司 基于表单驱动结合动态规则引擎的web系统开发框架

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101854201B1 (ko) * 2016-10-25 2018-05-03 주식회사 디지털쿠키 서버 및 클라이언트 통합형 게임 저작시스템
CN108446111A (zh) * 2018-03-26 2018-08-24 国家电网公司客户服务中心 一种基于Spring cloud的微服务构建方法
CN109597610A (zh) * 2018-12-10 2019-04-09 南京华苏科技有限公司 一种基于微服务架构的应用结构组件化构建方法
CN111190586A (zh) * 2019-12-16 2020-05-22 腾讯科技(深圳)有限公司 软件开发框架的搭建及使用方法、计算设备和存储介质
CN111813394A (zh) * 2020-05-22 2020-10-23 广州太平洋电脑信息咨询有限公司 一种基于SpringBoot的Zeus框架的开发方法及Zeus框架
CN111796834A (zh) * 2020-06-30 2020-10-20 福信富通科技股份有限公司 一种可组合的微服务开发框架的部署方法、装置及设备
CN113849178A (zh) * 2021-09-28 2021-12-28 航天科工网络信息发展有限公司 基于表单驱动结合动态规则引擎的web系统开发框架

Similar Documents

Publication Publication Date Title
US10552520B2 (en) System and method for provisioning a mobile software application to a mobile device
US9535669B2 (en) Systems and methods for computing applications
US9465590B2 (en) Code generation framework for application program interface for model
US9823907B2 (en) Extensible device object model
US9182949B2 (en) Systems and methods for controlling branch latency within computing applications
US7735060B2 (en) Method and system for rapidly developing and deploying sensor-enabled software applications
TW202101198A (zh) 實施不同類型的區塊鏈合約的系統和方法
TW202101199A (zh) 用於執行不同類型區塊鏈合約之系統及方法
WO2014138895A1 (en) Systems and methods for partitioning computing applications to optimize deployment resources
TW200839614A (en) Universal schema for representing management policy
CN116627448A (zh) 一种创建微服务的方法及相关设备
CN117149162A (zh) 一种sdk自动生成方法、装置、电子设备及存储介质
CN1866283B (zh) 实现规则系统触发的系统及方法
CN115113898A (zh) 微应用的动态更新方法、装置、计算机设备和存储介质
CA3099814C (en) Distributed ledger platform for computing applications
CN111813836A (zh) 一种提高Ethereum区块链系统扩展性的方法
CN116585715A (zh) 一种游戏开发框架的实现方法、游戏开发框架、设备及介质
Rubin et al. Microsoft. NET Compact Framework: Kick Start
CN112597029A (zh) 一种规范检查系统、方法、设备及介质
CN113821222A (zh) 一种生成原ota包的方法及装置
Vavru et al. Android programming: Complete application programming guide
Shuiskov Microservices with Go
CN118466991A (zh) 节点管理组件升级方法、装置、电子设备及存储介质
CN118069191A (zh) 基于信创操作系统的软件源构建方法、设备及介质
CN118672688A (zh) 数据编译方法、装置及计算机设备、存储介质、产品

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