CN113082721B - 集成游戏模块的应用程序的资源管理方法、装置、电子设备及存储介质 - Google Patents
集成游戏模块的应用程序的资源管理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113082721B CN113082721B CN202110509495.0A CN202110509495A CN113082721B CN 113082721 B CN113082721 B CN 113082721B CN 202110509495 A CN202110509495 A CN 202110509495A CN 113082721 B CN113082721 B CN 113082721B
- Authority
- CN
- China
- Prior art keywords
- game
- page
- cocos2d
- engine
- subsystem
- 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
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/60—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/77—Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- General Business, Economics & Management (AREA)
- User Interface Of Digital Computer (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请公开一种集成游戏模块的应用程序的资源管理方法及装置,该方法包括响应于用户点击所述应用程序的第一页面中的访问按钮,载入所述应用程序的第二页面,其中所述第二页面为基于经改写的Cocos2d游戏引擎实现的游戏页面;响应于所述第二页面的载入,在所述第二页面中执行游戏画面的渲染;响应于用户点击所述第二页面中的退出按钮,设置游戏停止渲染的标记位;基于在所述经改写的Cocos2d游戏引擎的多个关键代码段中对所述标记位的判断,终止所述多个关键代码段的执行;在所述多个关键代码段终止执行后,回收所述应用程序的进程中与所述第二页面相关的内存。本申请还公开一种电子设备和存储介质。
Description
技术领域
本公开涉及计算机技术领域,具体地涉及一种集成游戏模块的应用程序的资源管理方法和装置。本公开还涉及相关的电子设备及存储介质。
背景技术
当前,电子游戏、比如移动终端中的电子游戏得到了广泛的普及。通常,这样电子游戏基于不同的游戏编辑器或游戏框架进行开发。当前有许多电子游戏是基于开源的跨平台游戏框架Cocos2d进行开发的,属于目前最流行的游戏引擎之一,其功能侧重于原生移动平台,并且是为了开发独立的游戏而设计的框架,诸如保卫萝卜2、开心消消乐等。换言之,原生Cocos2d框架总体是以纯粹地运行游戏而设计的,并未考虑移动终端中的应用程序(App)、如非游戏类APP集成多个小游戏的场景。由此,基于原生Cocos2d框架开发的游戏无法提供在应用程序、如非游戏类应用程序内的反复再入能力。
然而,随着移动互联网技术的发展,用户也希望在移动终端中的不同类型的应用程序中也能享受便捷的娱乐服务,尤其是在这些应用程序中能够以便捷的方式享受小游戏,而无需下载并进入专门的游戏应用。
进一步地,应用程序提供商也希望其应用程序中的相关应用数据、用户数据能够以安全的方式向应用程序中集成的游戏开放,以便提高游戏的娱乐性和互动性。然而,原生Cocos2d框架提供的接口有限,对此进一步的需求更是无能为力。
本背景技术描述的内容仅为了便于了解本领域的相关技术,不视作对现有技术的承认。
发明内容
因此,本发明实施例意图提供一种集成游戏模块的应用程序的资源管理方法和装置以及相关的电子设备和存储介质,其能为应用程序中集成的游戏、特别是小游戏提供反复再入的能力,而不会引起应用程序及相关的游戏页面和非游戏页面的崩溃和黑屏、花屏等显示错误的现象。
在第一方面,提供一种集成游戏模块的应用程序的资源管理方法,其可包括:
响应于用户点击所述应用程序的第一页面中的访问按钮,载入所述应用程序的第二页面,其中所述第二页面为基于经改写的Cocos2d游戏引擎实现的游戏页面;
响应于所述第二页面的载入,在所述第二页面中执行游戏画面的渲染;
响应于用户点击所述第二页面中的退出按钮,设置游戏停止渲染的标记位;
基于在所述经改写的Cocos2d游戏引擎的多个关键代码段中对所述标记位的判断,终止所述多个关键代码段的执行,其中所述多个关键代码段包括与游戏渲染逻辑执行相关的代码段;
在所述多个关键代码段终止执行后,回收所述应用程序的进程中与所述第二页面相关的内存。
在第二方面,提供一种集成游戏模块的应用程序的资源管理装置,其可包括:
加载单元,配置成响应于用户点击所述应用程序的第一页面中的访问按钮,载入所述应用程序的第二页面,其中所述第二页面为基于经改写的Cocos2d游戏引擎实现的游戏页面;
渲染执行单元,配置成响应于所述第二页面的载入,在所述第二页面中执行游戏画面的渲染;
标记位设置单元,配置成响应于用户点击所述第二页面中的退出按钮,设置游戏停止渲染的标记位;
终止单元,配置成基于在所述经改写的Cocos2d游戏引擎的多个关键代码段中对所述标记位的判断,终止所述多个关键代码段的执行,其中所述多个关键代码段包括与游戏渲染逻辑执行相关的代码段;
回收单元,配置成在所述多个关键代码段终止执行后,回收所述应用程序的进程中与所述第二页面相关的内存。
在第三方面,提供另一种集成游戏模块的应用程序的资源管理方法,其可包括:
响应于用户点击所述应用程序的第一页面中的访问按钮,载入所述应用程序的第二页面,其中所述第二页面为基于游戏引擎实现的游戏页面;
响应于所述第二页面的载入,在所述第二页面中执行游戏画面的渲染;
响应于用户点击所述第二页面中的退出按钮,退出所述第二页面。
在一些实施例中,所述在所述第二页面中执行游戏画面的渲染,可包括:
所述游戏引擎经由一个或多个音乐数据接口向所述应用程序中独立于所述游戏引擎的歌曲引擎发送歌曲信息请求;
响应于所述歌曲信息请求,所述歌曲引擎从服务器或本地缓存获取歌曲信息;
基于所获取的所述歌曲信息,所述歌曲引擎处理所述所获取的歌曲信息,以及/或者,所述游戏引擎经所述一个或多个音乐数据接口接收所述所获取的歌曲信息。
在一些实施例中,所述在所述第二页面中执行游戏画面的渲染,可包括:
所述游戏引擎经由一个或多个音乐数据接口向所述应用程序中独立于所述游戏引擎的歌唱引擎发送用户歌唱信息请求;
响应于用户歌唱信息请求,所述歌唱引擎获取并处理用户歌唱的音频,以生成用户歌唱信息;
所述游戏引擎经所述一个或多个音乐数据接口接收所生成的所述用户歌唱信息;
基于所接收的所述用户歌唱信息,触发所述游戏引擎的至少一个子系统及其元素的执行,所述子系统选自场景子系统、节点子系统、动作子系统、物理和碰撞子系统、粒子子系统、瓦片地图子系统、音乐和音效子系统中的至少一个。
可选地,所述第二页面是基于经改写的Cocos2d游戏引擎实现的。
在第四方面,还提供另一种集成游戏模块的应用程序的资源管理装置,其可包括:
加载单元,配置成响应于用户点击所述应用程序的第一页面中的访问按钮,载入所述应用程序的第二页面,其中所述第二页面为基于游戏引擎实现的游戏页面;
渲染执行单元,配置成响应于所述第二页面的载入,在所述第二页面中执行游戏画面的渲染;
退出单元,配置成响应于用户点击所述第二页面中的退出按钮,退出所述第二页面。
在第五方面,还提供一种基于集成游戏模块的应用程序的资源管理系统,包括:歌曲引擎、歌唱引擎和游戏引擎,其中所述游戏引擎基于一个或多个第一音乐数据接口与所述歌曲引擎对接,所述游戏引擎基于一个或多个第二音乐数据接口与所述歌唱引擎对接。
在第六方面,提供一种电子设备,其可包括:处理器和存储有计算机程序的存储器,所述处理器被配置为在运行计算机程序时执行任一本发明实施例的方法。
在第七方面,提供一种存储介质,存储有计算机程序,所述计算机程序配置成被运行时执行任一本发明实施例的方法。
在本发明的实施例中,通过改写原生的Cocos2d游戏引擎,尤其是通过设置游戏停止渲染的标记位,并且在关键代码段中设置标记位判断来终止代码段的执行,尤其通过终止执行与游戏渲染逻辑相关的代码段,能允许与游戏页面相关的内存能够被正确回收,实现在集成的游戏、如小游戏在应用程序界面内可重复关闭和再入的可重入能力,从而实现在APP使用生命周期内多次运行相同或不同的游戏。由于对原生Cocos2d框架的可重入能力的补齐,使得应用程序(APP)产品可内嵌游戏,极大地丰富了APP的内有生态,拓展了APP的现有玩法。
在本发明进一步的实施例中,上述游戏停止渲染的标记位是基于跟随屏幕刷新频率的定时器的停止和销毁来实现的,由此实现了以非常简单的可靠方式提供关键代码终止执行的触发。
在本发明进一步的实施例中,一方面通过对某些单例对象、尤其是骨骼资源类中的单例对象改写实例属性,另一方面针对文件系统控制管理类、渲染控制类中的单例对象在退出游戏时重置(置空)状态值,不仅能够更好地回收内存,以避免内存泄漏问题,而且更重要的是避免了原生Cocos2d框架下重入时可能偶发性出现的屏幕显示不正常的问题,例如体现为游戏画面和龙骨动画渲染错乱等问题。所以Cocos2d框架中没有关闭游戏的接口,也没有对应的回收资源、置空状态值等的设计,从而更好地实现在在应用程序界面中的游戏、如小游戏的再入能力。
在本发明进一步的实施例中,可以通过本方案解决了现有技术的痛点,在基础玩法与接口的基础上,拓展了录歌演唱、歌曲曲库、实时打分等个性化的接口,也支持拓展其他所需的接口。同时对Cocos2d框架进行深度改造,改造之后使其支持游戏退出时内存的回收,避免出现内存泄露;同时修复因为Cocos2d框架本身不支持游戏重入导致重入时游戏画面黑屏、龙骨动画渲染错乱等问题,从而实现游戏大厅的玩法。
在本发明的一些实施例中,本发明人创新地将非游戏类应用程序、如音乐应用程序、例如K歌应用程序的主功能模块的数据和/或功能、如强音乐属性的数据和/或功能可选地以安全、可靠的方式开放给游戏侧,为该应用程序的游戏带来新的可能。
在本发明进一步的实施例中,基于改写的Cocos2d游戏引擎,尤其是基于改写的Cocos2d游戏引擎与音乐APP、如K歌APP的歌曲引擎的一个或多个音乐数据接口以及相关的数据传输,音乐APP、如K歌APP的主功能模块能够获取游戏侧对歌曲信息(包括歌曲信息、曲库信息等)的需求,并可选地以可安全校验的方式处理所需求的歌曲信息或返回所需求的歌曲信息。
在本发明进一步实施例中,基于改写的Cocos2d游戏引擎,尤其是基于改写的Cocos2d游戏引擎与音乐APP、如K歌APP的用户歌唱引擎的一个或多个音乐数据接口以及相关的数据传输,音乐APP、如K歌APP的主功能模块能够获取游戏侧对用户歌唱信息(包括演唱录歌、用户歌唱属性值、实时打分等)的需求,并返回所需求的歌曲信息。
在本发明更进一步的实施例中,游戏侧能够基于所返回的歌曲信息和/用户歌唱信息,能够给该音乐APP、如K歌APP中集成的游戏、小游戏的玩法提供更大的空间,例如能够用于实现游戏引擎的相关子系统的执行、如游戏元素/特征的操作。在本发明更进一步的实施例中,游戏侧基于所返回的用户歌唱信息尤其可以实现更加丰富的精灵动作,给相关游戏、小游戏的玩法带来更大的娱乐性和互动性。
本发明实施例的其他可选特征和技术效果一部分在下文描述,一部分可通过阅读本文而明白。
附图说明
以下,结合附图来详细说明本发明的实施例,所示出的元件不受附图所显示的比例限制,附图中相同或相似的附图标记表示相同或类似的元件,其中:
图1示出了根据本发明实施例的方法的示意性流程图;
图2A和图2B示出了根据本发明实施例的方法的两个示意性流程图;
图3示出了根据本发明实施例的方法的示意性流程图;
图4示出了根据本发明实施例的方法的示意性流程图;
图5示出了根据本发明实施例的方法的示意性流程图;
图6示出了根据本发明实施例的方法的示意性流程图;
图7示出了实施了根据本发明实施例方法的应用程序界面示例图;
图8A和图8B示出了实施了根据本发明实施例方法的应用程序界面示例图;
图9示出了可根据本发明实施例的方法的相关系统的模块架构图;
图10示出了根据本发明实施例的装置的结构示意图;
图11示出了根据本发明实施例的电子设备的硬件结构示意图;
图12A示出了根据本发明实施例的电子设备的操作系统示意图;
图12B示出了根据本发明实施例的电子设备的操作系统示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合具体实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
在本文中所述的“游戏”涉及电子游戏(Video Games),是指依托于电子设备而运行的交互游戏。在本发明的一些实施例中,所述“游戏”可以在移动终端中实施从而形成与玩家(用户)的互动。尤其是,在本发明的一些实施例中,所述“游戏”可以在电子设备、如移动终端的应用程序(APP)中集成并实施从而形成与玩家(用户)的互动。
在本文中所述的“小游戏(Minigame)”涉及小型的电子游戏,其通常嵌套在另一个电子游戏或者应用程序中。如,在本发明的一些实施例中,应用程序如非游戏类应用程序中可集成有小游戏模块,由此用户可以在该应用程序的界面或页面中玩一个或多个小游戏。
在本文中所述的“游戏引擎”是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件,游戏引擎往往可包括渲染引擎(子系统)、物理和碰撞引擎(子系统)等。在本发明的多个实施例中,“游戏引擎”所支持的操作系统平台不受发明的限制。例如,在一些实施例中,游戏引擎可以支持iOS平台、Android平台及其改写平台、Linux平台、Mac OS平台、Windows平台等;在一些优选的实施例中,游戏引擎可以支持移动操作平台,如iOS平台、Android平台及其改写平台。在本发明实施例中,“游戏引擎”和“游戏框架”可以互换使用。
在本文所述的Cocos2d是在MIT许可证下发布的跨平台开源游戏引擎家族(http://www.cocos2d.org/index.html)。最初的Cocos2d框架(Cocos2d(Python))是使用Python编写的,基于pyglet(页面存档备份,存于互联网档案馆)开发;目前Cocos2d框架已经被移植到了多种语言和平台上。作为举例而非限制地,Cocos2d框架可包括Cocos2d-x、Cocos2d-iphone\Cocos2d-Swift、Cocos2d-android、Cocos2d-JS(javascript)、Cocos2d-html5、Cocos2d-XNA等。其中,Cocos2d-x是基于Cocos2d for iPhone并使用C++语言实现的多平台版本,兼容iOS,Android,Windows,Marmalade,Linux,Bada,Blackberry-QNX等平台,同时还有Lua和JavaScript脚本实现;Cocos2d for iPhone是原框架在iOS和Mac OS X上的Objective-C移植,Cocos2d-Swift是原框架在iOS和Mac OS X上的Swift移植;Cocos2d-android是Java实现的运行于Android平台的版本;Cocos2d-JS(javascript)是Cocos2d的JavaScript实现;Cocos2d-html5是基于Cocos2d-x的运行于网页中的JavaScript实现;Cocos2d-XNA是基于Cocos2d-x的运行于微软XNA平台上的C#实现。
在本发明的多个具体实施例中描述的方法、装置、电子设备或存储介质是基于Cocos2d-x游戏框架实施的,但可以想到根据本发明的思想和特征可以应用于不同的Cocos2d框架。
在本发明实施例中,所述的“原生”Cocos2d是指由Cocos.org发布的,如发布至Github的未经发布者之外的其他开发者修改的原始版本的框架、程序代码、组件、模块等(https://github.com/cocos2d/cocos2d-x/releases)。Cocos2d(家族)是一个开源的游戏框架,发布者之外的开发者可以在符合一定规范的情况下对其进行改写(modification)。由此,在本发明实施例中,所述的“经改写的”Cocos2d涉及经发布者之外的其他开发者对原始版本的框架、程序代码、组件和模块等进行了改写或修改,由此可以实现原生Cocos2d所不能实现或支持的功能。在本发明的一些具体实施例中具体描述了Cocos2d的改写内容及相关功能,这将在下文进一步说明。
本发明实施例提供一种资源管理方法,其总体涉及集成游戏模块、如小游戏模块的应用程序相关的资源管理方法。所述方法可以在电子设备、优选在移动终端中实施。
此外,本发明实施例还相应地涉及相关的装置以及实施上述方法的电子设备和存储有被执行时可实现上述方法的程序的存储介质。在一些实施例中,装置、组件、单元或模块可以由软件实现,但在一些实施例中,所述装置、组件、单元或模块可由硬件或软硬件结合实现。
在下文中,将进一步参考附图描述根据本发明的方法及相关装置、电子设备存储介质的多个实施例的实施或实现。
参考图1,示出了根据本发明实施例的一种集成游戏模块、如小游戏模块的应用程序的资源管理方法。
在本发明实施例中,可以通过在应用程序(包)中集成游戏引擎/框架、如Cocos2d游戏引擎/框架、例如经改写的Cocos2d游戏引擎/框架而实现(小)游戏模块的集成。例如,在一个实施例中,应用程序、如音乐APP、例如K歌APP的源代码集成了(经改写的)Cocos2d的源代码,由此,音乐APP、例如K歌APP打包之后内部即继承了(经改写的)Cocos2d游戏框架。
在图1所示的实施例中,所述方法可包括:
S101:响应于用户点击所述应用程序的第一页面中的访问按钮,载入所述应用程序的第二页面,其中所述第二页面为基于经改写的Cocos2d游戏引擎实现的游戏页面;
参考图7所示的实施例,示出了在移动终端700中运行的应用程序、如非游戏应用程序、例如音乐应用程序的显示界面。在所示的实施例中,此界面当前正呈现(小)游戏中心页面。在一些实施例中,所述第一页面包括该小游戏中心页面。
在本发明的一些实施例中,应用程序中除第二页面之外的其他页面、如第一页面不是基于经改写的Cocos2d游戏引擎实现的游戏页面。在本发明的一些实施例中,应用程序中除第二页面之外的其他页面、如第一页面(前端和后端)可以基于非Cocos2d的其他框架实现。
在本发明的一些实施例中,应用程序的第一页面是基于Hippy开发框架实现的。在本发明的一些实施例中,应用程序的第一页面的用户界面(UI)是基于UIKit框架实现的。
继续参考图7,用户可以在该游戏重心页面中点击任意一款游戏的访问按钮701、711、721(包括游戏图标本身和单独设置的按钮),从而启动游戏并进入第二页面、即游戏页面(如图8A和图8B示意性示出的),由此用户可以自由地进行游戏。
在所示的实施例中,所述Cocos2d游戏引擎例如可以为Cocos2d-x游戏引擎。由此,所述经改写的Cocos2d游戏引擎例如可以为经改写的Cocos2d-x游戏引擎。
S102:响应于所述第二页面的载入,在所述第二页面中执行游戏画面的渲染;
进一步地,参考图2A所示的实施例,所述步骤S102可以具体包括:
S1021:响应于所述第二页面的载入,开启定时器的周期性计时,所述周期性计时对应于应用程序界面的刷新频率;
在一些实施例中,所述定时器可以是由游戏(框架)开启的符合预设的屏幕(页面)刷新周期而运行的定时器。
S1022:基于所述定时器的周期性计时,在所述第二页面中周期性地渲染所述游戏画面。
S103:响应于用户点击所述第二页面中的退出按钮,设置游戏停止渲染的标记位;
进一步地,在结合图2A和图2B所示的实施例中,所述步骤S103可具体包括:
S1031:响应于用户点击所述第二页面中的退出按钮,停止所述定时器的所述周期性计时,并销毁所述定时器;
在图1所示的实施例中,定时器停止之后可相应地不会再定时执行游戏画面的渲染。
S1032:响应于所述定时器的销毁,设置所述游戏停止渲染的标记位。
此外,基于定时器停止及销毁,引入了一个游戏停止渲染的标记位。
在一些实施例中,用户可在游戏页面中点击右上角胶囊位关闭按钮(如图8A和图8B所示的关闭按钮890)退出游戏,然后可以进入对经改写的Cocos2d框架的相关处理。
在图1所示的实施例中,所述经改写的Cocos2d框架包括在多个关键代码段加入对所述标记位的判断。
S104:基于在所述经改写的Cocos2d游戏引擎的多个关键代码段中对所述标记位的判断,终止所述多个关键代码段的执行;
在一些实施例中,所述多个关键代码段包括与游戏渲染逻辑执行相关的代码段。
在进一步的实施例中,所述多个关键代码段还可包括但不限于游戏JS(JavaScript)方法执行相关的代码段。
在这些实施例中,通过在框架的多处关键代码处添加对这个标记位的判断,在已标记游戏已经停止渲染时,将终止这些关键代码的执行,从而确保在游戏关闭的过程中不会因为后续释放游戏(框架)所申请的内存而引起应用程序的崩溃。
S105:在所述多个关键代码段终止执行后,回收所述应用程序的进程中与所述第二页面相关的内存。
在这些实施例中,此时游戏进入结束状态,用户可以点击任意一款游戏再次启动游戏或者在其他非游戏页面继续浏览和使用应用程序。例如,本实施例可应用于K歌APP,在(小)游戏中心任意选择一款游戏进入游戏,可以游戏过程中可以关闭当前游戏,关闭游戏之后可以再次选择一款游戏进入。
在本发明的实施例中,可以通过安全地将游戏过程所申请的内存回收,而释放内存空间,避免内存泄露。在本发明的实施例中,可以采用多种常规的手段回收内存和/或采用根据本发明进一步实施例的手段回收经改写的Cocos2d框架及其组件的内存(如下文进一步说明)。
例如,在本发明的一些实施例中,所述在所述多个关键代码段终止执行后,回收所述应用程序的进程中与所述第二页面相关的内存,可包括:
A1:销毁(如析构)所述经改写的Cocos2d游戏引擎的游戏控制类及其持有的实例属性,其中所述实例属性包括由原生Cocos2d游戏引擎的多个第一单例对象改写而成的实例属性。
在一些实施例中,所述原生Cocos2d游戏引擎的第一单例对象可包括骨骼动画资源类中的单例对象。在一个具体的实施例中,所述骨骼动画资源类可以包括Spine骨骼动画资源类和/或DragonBones骨骼动画资源类。
作为解释而非限制地,原生Cocos2d游戏框架中有大量的单例对象,这些单例对象的内存不会随着游戏的结束而被回收,在本发明实施例中可以将部分单例对象、如骨骼动画资源类中的单例对象改写成实例属性并由上层的游戏控制类所持有。由此,当游戏控制类例如通过析构函数销毁时,这些改写后的实例属性会随之析构,从而实现了内存回收,避免内存泄露导致应用程序因为内存溢出而被系统杀死。
在本发明的一些实施例中,所述在所述多个关键代码段终止执行后,回收所述应用程序的进程中与所述第二页面相关的内存,可包括:
B1:使所述经改写的Cocos2d游戏引擎的音乐和音效子系统停止播放,销毁(如析构)所述经改写的Cocos2d游戏引擎的音频控制类及其持有的实例属性。
在这些实施例中,可以在游戏退出的时候主动让音频和音效子系统(引擎)停止播放,以停止游戏声音。相应地,再将音频控制类实例进行销毁,内收其内存,由此可停止音频控制事件的接收与处理;
在本发明的一些实施例中,所述资源管理方法还可包括:
C1:响应于用户点击所述第二页面中的退出按钮,重置所述经改写的Cocos2d游戏引擎游戏中多个第二单例对象的值。
在这些实施例中,所述多个第二单例对象可包括文件管理类和渲染控制类的单例对象。
本发明人发现,有些单例对象不适合改写,诸如文件系统管理类、渲染控制类中的单例对象等。因此,在一些实施例中,可以在游戏结束时将这些单例对象的状态值设置回游戏开始前的值。由此,在这些实施例中“置空/或重置”涉及将状态值恢复为游戏开始前的值。
在本发明的进一步实施例中,还可以想到借助于对Cocos2d游戏框架的改写,在音乐APP、尤其是K歌APP中深度结合音乐类产品、如K歌类产品的特性,包括其功能和/或数据。由此,在一些实施例中,可以将诸如歌曲/曲库能力、歌词伴奏、实时打分及其相关数据等音乐类、如K歌类应用程序产品的核心能力以一种不可反向推导、安全合理的方式供应给游戏侧(如游戏合作方)。
例如,在一些实施例中,借助于所述改写可以给到游戏合作方的经过筛选的、安全的歌曲/曲库列表及其他相关允许游戏合作方获取的歌曲信息,并使其不能获取应用程序提供者不打算让游戏合作方获取到的其他歌曲信息。在一些实施例中,借助于所述改写,还可能支持其他接口能力的拓展。
例如,参考图3的实施例,所述响应于所述第二页面的载入,在所述第二页面中执行游戏画面的渲染,可包括:
S301:所述经改写的Cocos2d游戏引擎经由一个或多个音乐数据接口向所述应用程序中独立于所述经改写的Cocos2d游戏引擎的歌曲引擎发送歌曲信息请求;
在一些实施例中,所述歌曲信息可以作广义解释,包括一首或多首歌曲信息,也可以包括歌单或专辑及其歌曲的信息和/或曲库及其歌曲的信息。例如,在一些实施例中,歌曲信息可以选自歌曲ID、歌曲名、歌曲时长、歌曲音频、歌曲伴奏、歌词(及其切分)、歌单/专辑/曲库ID、歌单名/专辑名/曲库名、歌单/专辑/曲库歌手中的至少一种。
S302:响应于所述歌曲信息请求,所述歌曲引擎从服务器或本地缓存获取歌曲信息。
在一些实施例中,所述资源管理方法可包括对游戏引擎请求的歌曲信息进行筛选、校验的环节。
例如,在一个实施例中,所述响应于所述歌曲信息请求,所述歌曲引擎从服务器或本地缓存获取歌曲信息,包括:
D1:所述歌曲引擎检查所请求的所述歌曲信息;
D2:所述歌曲引擎从服务器或本地缓存获取经检查的歌曲信息。
在本发明的一些实施例中,所述歌曲信息的筛选、校验和检查可以包括对歌曲/歌单/专辑/曲库本身的筛选、校验和检查和/或所要求的信息的筛选、校验和检查。例如,在一些实施例中,可以筛选出对游戏侧开放的歌曲/歌单/专辑/曲库;在另一些实施例中,可以筛选出对游戏侧开放的歌曲/歌单/专辑/曲库中的哪些信息。
在如图3所示的实施例中,所述响应于所述第二页面的载入,在所述第二页面中执行游戏画面的渲染,还可以包括:
S303:基于所获取的所述歌曲信息,所述歌曲引擎处理所述所获取的歌曲信息。
作为替代或补充,在如图3所示的实施例中,所述响应于所述第二页面的载入,在所述第二页面中执行游戏画面的渲染,还可以包括:
S304:所述经改写的Cocos2d游戏引擎经所述一个或多个音乐数据接口接收所述所获取的歌曲信息。
在一些实施例中,可以择一执行步骤S303和S304(及可选的E1),也可以并行执行步骤S303和S304。例如在图8A和图8B所示的实施例中,例如可以基于独立于游戏引擎的歌曲引擎播放伴奏,与此同时,游戏引擎可通过接口从歌曲引擎接收歌曲信息,例如为歌词信息,尤其可以在应用程序的游戏页面中滚动呈现歌词820。
在进一步的实施例中,所述响应于所述第二页面的载入,在所述第二页面中执行游戏画面的渲染,还包括:
E1:基于经所述一个或多个音乐数据接口接收的所述歌曲信息,触发所述经改写的Cocos2d的至少一个子系统及其元素的执行。
在一些实施例中,游戏引擎、如Cocos2d游戏引擎可包括多种不同的子系统(子引擎),用于实现不同的功能,例如可包括但不限于场景子系统、节点子系统、精灵子系统、动作子系统、物理和碰撞子系统(子引擎)、粒子子系统、瓦片地图子系统、音乐和音效子系统。根据本发明实施例所述的子系统可以选择上述的子系统(子引擎)中的至少一个。
在一些实施例中,游戏引擎、如Cocos2d游戏引擎的场景(Scene)是一个容器,可以用于容纳游戏中的各个元素,如精灵,标签,节点对象;负责着游戏的运行逻辑,用于以帧为单位渲染内容。
在一些实施例中,游戏引擎、如Cocos2d游戏引擎的节点(Node)涉及在场景下呈现的不同元素,作为承载各种组件(Component)的实体。节点的例子可以包括标签(Label)等。另外,还有可能包括特殊的节点,例如但不限于精灵和粒子。鉴于精灵(子系统)和粒子(子系统)在游戏框架中的重要性,在本发明所述的实施例中,如未特殊说明,所述的节点可以仅指普通的节点。
在一些实施例中,游戏引擎、如Cocos2d游戏引擎的精灵(Sprite)涉及在人机交互接口、如屏幕中能被如玩家控制的可移动对象,例如玩家所玩的游戏角色可能为一个精灵,其不同于无法控制的普通节点。在一些实施例中,所述的精灵可以包括多边形精灵。
在一些实施例中,游戏引擎、如Cocos2d游戏引擎的动作(Action)指,可通过改变节点(包括特殊节点、尤其是精灵)对象的属性,而让其表现出某种动作。在Cocos2d游戏引擎中,可以通过By指令实现相对位置的动作,通过To指令实现绝对位置的动作。在一些实施例中,所述动作可包括移动(平移)、旋转、缩放、淡入淡出、色彩混合和帧动画中的至少一种。在一些实施例中,所述动作可以包括多个同一或不同动作的组合。在一个示例性实施例中,所述动作可包括动作序列(Sequence),即封装多个(单独)动作的对象,当这个对象执行时被封装的动作会顺序执行。在一个示例性实施例中,所述动作可包括动作繁衍(Spawn),其与序列相似,但区别是繁衍同时执行所有的动作。在本发明实施例中,所述动作可以为匀速动作或变速动作或其组合。在一些实施例中,变速动作可以让节点(包括特殊节点、尤其是精灵)对象具有加速度,产生平滑同时相对复杂的动作,其例如可以以不同的动作(变速)曲线执行动作。
在一些实施例中,游戏引擎、如Cocos2d游戏引擎还可以具有物理和碰撞子引擎,借助于物理和碰撞子引擎可以确定多个对象是否有碰撞。在一些实施例中,物理和碰撞子引擎还可以包括元件、如刚体内部系统的其他物理场景模拟和编辑,包括但不限于物理单位到世界坐标系的转换、物理重力等。在不同实施例中,物理和碰撞子引擎可以是分别设置的,也可以是集成设置的。
在一些实施例中,游戏引擎、如Cocos2d游戏引擎的粒子子系统是指计算机图形学中模拟特定颗粒物现象的模块,由此可以呈现一定的粒子弥漫特效,包括但不限于爆炸、烟花、水流等真实自然而又带有随机性的效果。
在一些实施例中,游戏引擎、如Cocos2d游戏引擎中可以提供瓦片式地图,以使得一张大的世界地图或者背景图可以由几种地形来表示,每种地形对应一张小的的图片,这些小的地形图片可称为瓦片。
在一些实施例中,游戏引擎、如Cocos2d游戏引擎可内置音乐和音效子系统以便支持游戏内的音乐和音效,可以被用来增加背景音乐,控制游戏音效。需要说明的是,在本发明实施例中,尤其是在音乐类APP中,所述游戏引擎的音乐和音效子系统不同于且独立于APP主功能模块(非游戏框架)中设置的任何与音乐处理相关的单元、模块、子引擎和/或子系统。在不同实施例中,音乐和音效子系统可以是分别设置的,也可以是集成设置的。
在另一些实施例中,借助于所述改写可以给游戏合作方提供允许获取的用户歌唱信息。在进一步的实施例中,通过所述改写还可以利用所获取的用户歌唱信息来促成经改写的Cocos2d游戏引擎的子系统的多种操作,答复提高了游戏、如小游戏的娱乐性和互动性。
在本发明实施例中,尤其是在音乐类APP中,借助于歌曲引擎的强大音乐属性和数据,能够为游戏框架下运行的(小)游戏提供更多、更丰富的音乐相关内容和玩法,进一步提升了游戏的娱乐性。
例如,在图4所示的另一个实施例中,所述响应于所述第二页面的载入,在所述第二页面中执行游戏画面的渲染,可包括:
S401:所述经改写的Cocos2d游戏引擎经由一个或多个音乐数据接口向所述应用程序中独立于所述经改写的Cocos2d游戏引擎的歌唱引擎发送用户歌唱信息请求;
S402:响应于用户歌唱信息请求,所述歌唱引擎获取并处理用户歌唱的音频,以生成用户歌唱信息;
S403:所述经改写的Cocos2d游戏引擎经所述一个或多个音乐数据接口接收所生成的所述用户歌唱信息;
S404:基于所接收的所述用户歌唱信息,触发所述经改写的Cocos2d游戏引擎的至少一个子系统及其元素的执行。
在一些实施例中,所述子系统选自场景子系统、节点子系统、精灵子系统、动作子系统、物理和碰撞子系统(子引擎)、粒子子系统、瓦片地图子系统、音乐和音效子系统中的至少一个。
在本发明的优选实施例中,尤其可借助于接收到的用户歌唱信息,促成精灵的多种动作的实现,相比于当前小游戏大幅度提升了可玩性,而且耗费资源极低,特别是避免小游戏(框架)低效地耗费大量宝贵的内存资源。
在一个实施例中,所述所接收的用户歌唱信息可包括用户歌唱特征值。
在该实施例中,如图5所示,所述基于所接收的所述用户歌唱信息,触发所述经改写的Cocos2d游戏引擎的至少一个子系统及其元素的执行,可包括:
S501:响应于接收的第一用户歌唱特征值,所述动作子系统触发所述精灵子系统中的第一精灵以第一动作值执行第一动作;
S502:响应于接收的不同于第一用户歌唱特征值的第二用户歌唱特征值,所述动作子系统触发所述精灵子系统中的第二精灵以第二动作值执行第二动作。
在本发明的不同实施例中,所述用户歌唱特征值可包括用户歌唱属性值或打分值,其例如是基于所述歌唱引擎、如基于人工智能、例如机器学习的歌唱引擎处理而得的。在本发明实施例中,示例性的用户歌唱属性可包括曲调、音高、音强、音长、音色中的至少一种。在本发明实施例中,所述打分值例如可以是由歌唱引擎按照各种标准所确定的分值,用于表征在不同维度下用户歌唱水平的高低。
在一些实施例中,所述第一精灵不同于所述第二精灵。在一些实施例中,例如可以基于不同的用户歌唱特征值使得不同的一个或多个精灵执行动作。例如,可以基于不同的音色使不同的精灵执行动作。
在一些实施例中,所述第一动作值不等于所述第二动作值。在一些实施例中,例如可以基于不同的用户歌唱特征值、如音高使得相同或不同的一个或多个精灵以不同的动作值(动作幅度)执行相同或不同的一个或多个动作。例如参考图8A和图8B所示的实施例,其中示出了在移动终端800中呈现的应用程序中的(小)游戏界面。在图8A中,当接收到用户歌唱歌曲的第一音高值时,精灵例如执行了从初始的第一位置810至第二位置811的第一动作,例如为移动,具有第一动作值(动作幅度)851;在图8B中,当接收到用户歌唱歌曲的第二音高值时,精灵例如执行了从初始的第一位置810至第二位置812的第二动作,例如为移动,具有第二动作值(动作幅度)852。如图8A和图8B所示,第二动作值(动作幅度)852大于第一动作值851。
在一些实施例中,所述第一动作的动作类型不同于所述第二动作的动作类型。在一些实施例中,例如可以基于不同的用户歌唱特征值、如曲调或音色使得相同或不同的一个或多个精灵以相同或不同的动作值(动作幅度)执行不同的一个或多个动作。例如,基于不同的曲调或音色,可以使得同一个精灵执行不同的动作,例如移动和旋转。
在一些实施例中,可以实现前述三种情况的任意结合,这落入本发明的范围内。
该实施例是尤为有利的,游戏侧基于所返回的不同的用户歌唱特征值来实现特别丰富的精灵动作,给相关游戏、小游戏的玩法带来更大的娱乐性和互动性。
在另外的实施例中,如图6所示,所述基于所接收的所述用户歌唱信息,触发所述经改写的Cocos2d游戏引擎的至少一个子系统及其元素的执行,可包括:
S601:基于接收的多个或连续的用户歌唱特征值,构建动作曲线;
S602:所述动作子系统触发所述精灵子系统中的至少一个精灵基于所述动作曲线执行变速运动。
在一些实施例中,可以将接收的多个用户歌唱特征值进行拟合,以构建所述动作曲线。
在一些实施例中,可以将接收的连续的用户歌唱特征值(曲线),直接构建或间接构建(例如经过各种变换)所述动作曲线。
该实施例是尤为有利的,游戏侧基于所返回的多个或连续的用户歌唱特征值来实现的精灵动作更有趣味且能拓展更多的互动和想象空间,给相关游戏、小游戏的玩法带来更大的娱乐性和互动性。
在本发明的一些实施例中,图3、图4、图5和图6所示的实施例以及相关特征可以以不矛盾的方式结合以获得新的实施例。尤其是,图5和图6所示的实施例可以明确结合而得新的实施例,例如图5所示的实施例中的第一和第二用户歌唱特征值均可分别为多个或连续的特征值。
在本文的另外的实施例中,尽管未示出,还提出了实现了将音乐APP、如K歌APP的强音乐属性数据和/或功能提供给APP集成的游戏的解决方案。在给实施例中,一种集成游戏模块的应用程序的资源管理方法,可包括:
F1:响应于用户点击所述应用程序的第一页面中的访问按钮,载入所述应用程序的第二页面,其中所述第二页面为基于游戏引擎实现的游戏页面;
F2:响应于所述第二页面的载入,在所述第二页面中执行游戏画面的渲染;
F3:响应于用户点击所述第二页面中的退出按钮,退出所述第二页面。
其中所述的游戏引擎可以为经改写的Cocos2d游戏引擎。这些实施例可以结合之前关于Cocos2的实施例及其特征。
在一些实施例中,所述步骤F2可包括:
F21:所述游戏引擎经由一个或多个音乐数据接口向所述应用程序中独立于所述游戏引擎的歌曲引擎发送歌曲信息请求;
F22:响应于所述歌曲信息请求,所述歌曲引擎从服务器或本地缓存获取歌曲信息;
F23:基于所获取的所述歌曲信息,所述歌曲引擎处理所述所获取的歌曲信息,以及/或者,所述游戏引擎经所述一个或多个音乐数据接口接收所述所获取的歌曲信息。
在一些实施例中,所述步骤F2可包括:
F21’:所述游戏引擎经由一个或多个音乐数据接口向所述应用程序中独立于所述游戏引擎的歌唱引擎发送用户歌唱信息请求;
F22’:响应于用户歌唱信息请求,所述歌唱引擎获取并处理用户歌唱的音频,以生成用户歌唱信息;
F23’:所述游戏引擎经所述一个或多个音乐数据接口接收所生成的所述用户歌唱信息;
F24’:基于所接收的所述用户歌唱信息,触发所述游戏引擎的至少一个子系统及其元素的执行。
其中,所述子系统选自场景子系统、节点子系统、动作子系统、动画子系统、物理引擎、粒子子系统、视差子系统、瓦片地图子系统、音乐和音效子系统中的至少一个。
在一些实施例中,包含步骤F21-F23的实施例可以与包含步骤F21’-F23’的实施例相结合。如前所述地,所述实施例可以结合之前还可以结合之前关于Cocos2d的实施例及其特征。
在一些实施例中,还可以提供对应于前述实施例的另一种集成游戏模块的应用程序的资源管理装置,其例如可包括:加载单元,配置成响应于用户点击所述应用程序的第一页面中的访问按钮,载入所述应用程序的第二页面,其中所述第二页面为基于游戏引擎实现的游戏页面;渲染执行单元,配置成响应于所述第二页面的载入,在所述第二页面中执行游戏画面的渲染;退出单元,配置成响应于用户点击所述第二页面中的退出按钮,退出所述第二页面。
在本发明的一些实施例中,还可以涵盖例如能实现根据本发明实施例方法的系统架构。如图9所示,在这些实施例中还可提供一种基于集成游戏模块的应用程序的资源管理系统900,其可包括:歌曲引擎、歌唱引擎和游戏引擎(如经改写的Cocos2d游戏引擎),其中所述游戏引擎基于一个或多个第一音乐数据接口与所述歌曲引擎对接,所述游戏引擎基于一个或多个第二音乐数据接口与所述歌唱引擎对接。这些实施例可以以不矛盾的方式结合其他实施例中所述的特征以获得新的实施例。
在本发明的一些实施例中,如图10所示,还提供一种集成游戏模块的应用程序的资源管理装置1000,其包括加载单元1001,配置成响应于用户点击所述应用程序的第一页面中的访问按钮,载入所述应用程序的第二页面,其中所述第二页面为基于经改写的Cocos2d游戏引擎实现的游戏页面;渲染执行单元1002,配置成响应于所述第二页面的载入,在所述第二页面中执行游戏画面的渲染;标记位设置单元1003,配置成响应于用户点击所述第二页面中的退出按钮,设置游戏停止渲染的标记位;终止单元1004,配置成基于在所述经改写的Cocos2d游戏引擎的多个关键代码段中对所述标记位的判断,终止所述多个关键代码段的执行,其中所述多个关键代码段包括与游戏渲染逻辑执行相关的代码段;回收单元1005,配置成在所述多个关键代码段终止执行后,回收所述应用程序的进程中与所述第二页面相关的内存
本领域技术人员将明白,在不引起矛盾的情况下,本实施例的装置可以结合其他实施例所述的方法特征,反之亦然。
在本发明的实施例中还提供了一种电子设备。在本发明的一个优选实施例中,所述电子设备可以为终端,如移动终端,优选可以为手机或平板。仅作为示例性的实现方案,图11示出了如移动终端1100的一个具体实施例的硬件结构示意图;而图12A和图12B示出了移动终端的一个具体实施例的操作系统结构示意图。
在所示出的实施例中,移动终端1100可以包括处理器1101、外部存储器接口1112、内部存储器1110、通用串行总线(USB)接口1113、充电管理模块1114、电源管理模块1115、电池1116、移动通信模块1140、无线通信模块1142、天线1139和1141、音频模块1134、扬声器1135、受话器1136、麦克风1137、耳机接口1138、按键1109、马达11011、指示器1107、用户标识模块(SIM)卡接口1111、显示屏1105、摄像装置1106,以及传感器模块1120等。
可以理解的是,本申请实施例示意的结构并不构成对移动终端1100的具体限定。在本申请另一些实施例中,移动终端1100可以包括比图示更多或更少的组件,或者组合某些组件,或者拆分某些组件,或者不同的组件布置。图示的组件可以以硬件,软件或软件和硬件的组合实现。
在一些实施例中,处理器1101可以包括一个或一个以上处理单元。在一些实施例中,处理器1101可以包括以下之一或以下至少两种的组合:应用处理器(AP)、调制解调处理器、基带处理器、图形处理器(GPU)、图像信号处理器(ISP)、控制器、存储器、视频编解码器、数字信号处理器(DSP)、基带处理器、神经网络处理器(NPU)等。不同的处理单元可以是独立的器件,也可以集成在一个或一个以上处理器中。
控制器可以是移动终端1100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器中的存储器为高速缓冲存储器。该存储器可以保存处理器刚用过或循环使用的指令或数据。如果处理器需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器1101的等待时间,因而提高了系统的效率。
NPU为神经网络(NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断地自学习。
GPU为图像处理的微处理器,连接显示屏和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
数字信号处理器(ISP)用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。
在一些实施例中,处理器1101可以包括一个或一个接口。接口可以包括集成电路(I2C)接口、集成电路内置音频(I2S)接口、脉冲编码调制(PCM)接口、通用异步收发传输器(UART)接口、移动产业处理器接口(MIPI)、通用输入输出(GPIO)接口、用户标识模块(SIM)接口、通用串行总线(USB)接口等。
可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对移动终端的结构限定。在本申请另一些实施例中,移动终端也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
移动终端1100的无线通信功能可以通过天线1139和1141、移动通信模块1140、无线通信模块1142、调制解调处理器或基带处理器等实现。
移动终端1100可以通过音频模块1134、扬声器1135、受话器1136、麦克风1137、耳机接口1138,以及应用处理器等实现音频功能,例如音乐播放,录音等。
音频模块1134用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。
麦克风1137用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风发声,将声音信号输入到麦克风。
传感器模块1120可包括下述传感器中的一个或多个:
压力传感器1123配置为感受压力信号,将压力信号转换成电信号。
气压传感器1124用于测量气压。
磁传感器1125包括霍尔传感器。
陀螺仪传感器1127可以用于确定移动终端1100的运动姿态。
加速度传感器1128可检测移动终端1100在各个方向上加速度大小。
距离传感器1129可配置为测量距离。
接近光传感器1121可以包括例如发光二极管(LED)和光检测器,例如光电二极管。
环境光传感器1122用于感知环境光亮度。
指纹传感器1131可配置为采集指纹。
触摸传感器1132可以设置于显示屏,由触摸传感器与显示屏组成触摸屏,也称“触控屏”。触摸传感器用于检测作用于其上或附近的触摸操作。
骨传导传感器1133可以获取振动信号。
电子设备(计算机)、如移动终端的软件操作系统可以采用分层架构、事件驱动架构、微核架构、微服务架构或云架构。
本文所示的实施例以分层架构的分别以iOS和安卓操作系统平台为例,示例性说明移动终端的软件结构。但可以想到,本文的实施例可以在不同的软件操作系统中实施。
在图12A所示的实施例中,本发明实施例的方案可以采用iOS操作系统。iOS操作系统采用四层架构,由上到下依次为可触摸层(Cocoa Touch layer)1210、媒体层(Medialayer)1220、核心服务层(Core Services layer)1230以及核心操作系统层(Core OSlayer)1240。触摸层1210为应用程序开发提供了各种常用的框架并且大部分框架与界面有关,其负责用户在iOS设备上的触摸交互操作。媒体层提供应用中视听方面的技术,如图形图像、声音技术、视频以及音视频传输相关的框架等。核心服务层提供给应用所需要的基础的系统服务。核心操作系统层包含大多数低级别接近硬件的功能。
在本发明实施例中,UIKit是可触摸层1210的用户界面框架。在一些实施例中,其例如用于第一页面的用户界面的构造。
图12B是安卓(Android)操作系统结构示意图,本发明实施例的方案可以采用安卓操作系统。分层架构将软件分成若干个层,层间通过软件接口通信。在一些实施例中,将安卓系统分为四层,从上至下分别为应用程序层1210’、应用程序框架层1220’、安卓运行时(Runtime)和系统库1230’、以及内核层1240’。
应用程序层1210’可以包括一系列应用程序包。
应用程序框架层1220’为应用程序层的应用程序提供应用编程接口(API)和编程框架。应用程序框架层包括一些预先定义的函数。
窗口管理器用于管理窗口程序。
内容提供器用来存放和获取数据,使这些数据可以被应用程序访问。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供移动终端的通信功能。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。
安卓Runtime(运行时)包括核心库和虚拟机,安卓Runtime负责安卓系统的调度和管理。核心库包含两部分:一部分是java语言要调用的功能函数,另一部分是安卓的核心库。应用程序层和框架层运行在虚拟机中。
系统库可以包括多个功能模块。表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。
内核层1240’是硬件和软件之间的层。内核层可包含显示驱动、摄像头驱动、音频接口、传感器驱动、电源管理和GPS接口。在本发明的一些实施例中,帧动画的显示可以调用显示驱动。
在本发明上述或下述实施例阐明的系统、装置、模块或单元,可以由计算机或其关联部件实现。根据具体情况,计算机例如可以为移动终端、智能电话、个人计算机(PC)、膝上型计算机、车载人机交互设备、个人数字助理、媒体播放器、导航设备、游戏控制台、平板电脑、可穿戴设备、智能电视、物联网系统、智能家居、工业计算机、服务器或者其组合。
在本发明的一些实施例中,还可以提供一种存储介质。在一些实施例中,所述存储介质存储有计算机程序,所述计算机程序配置成被运行时执行任一本发明实施例所述的方法。
在本发明的实施例的存储介质包括永久性和非永久性、可移动和非可移动的可以由任何方法或技术来实现信息存储的物品。存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
在本发明的实施例的方法、程序、系统、装置等,可以在单个或多个连网的计算机中执行或实现,也可以在分布式计算环境中实践。在本说明书实施例中,在这些分布式计算环境中,可以由通过通信网络而被连接的远程处理设备来执行任务。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本领域技术人员可想到,上述实施例阐明的功能模块/单元或控制器以及相关方法步骤的实现,可以用软件、硬件和软/硬件结合的方式实现。
除非明确指出,根据本发明实施例记载的方法、程序的动作或步骤并不必须按照特定的顺序来执行并且仍然可以实现期望的结果。在某些实施方式中,各步骤的多任务处理和并行/合并处理也是可以的或者可能是有利的。
在本文中,“第一”、“第二”是用于在同一实施例中区分不同的元件,不指代顺序或相对重要性。
在本文中,针对本发明的多个实施例进行了描述,但为简明起见,各实施例的描述并不是详尽的,各个实施例之间相同或相似的特征或部分可能会被省略。在本文中,“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”意指适用于根据本发明的至少一个实施例或示例中,而非所有实施例。上述术语并不必然意味着指代相同的实施例或示例。在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
已参考上述实施例具体示出并描述了本发明的示例性系统及方法,其仅为实施本系统及方法的最佳模式的示例。本领域的技术人员可以理解的是可以在实施本系统及/或方法时对这里描述的系统及方法的实施例做各种改变而不脱离界定在所附权利要求中的本发明的精神及范围。
Claims (15)
1.一种集成游戏模块的应用程序的资源管理方法,其特征在于,包括:
响应于用户点击所述应用程序的第一页面中的访问按钮,载入所述应用程序的第二页面,其中所述第二页面为基于经改写的Cocos2d游戏引擎实现的游戏页面;
响应于所述第二页面的载入,在所述第二页面中执行游戏画面的渲染;
响应于用户点击所述第二页面中的退出按钮,设置游戏停止渲染的标记位,进入对经改写的Cocos2d框架的相关处理;
在所述框架的多处关键代码处添加对所述标记的判断,基于在所述经改写的Cocos2d游戏引擎的多个关键代码段中对所述标记位的判断,终止所述多个关键代码段的执行,其中所述多个关键代码段包括与游戏渲染逻辑执行相关的代码段;
在所述多个关键代码段终止执行后,回收所述应用程序的进程中与所述第二页面相关的内存。
2.根据权利要求1所述的资源管理方法,其特征在于,所述响应于所述第二页面的载入,在所述第二页面中执行游戏画面的渲染,包括:
响应于所述第二页面的载入,开启定时器的周期性计时,所述周期性计时对应于应用程序界面的刷新频率;
基于所述定时器的周期性计时,在所述第二页面中周期性地渲染所述游戏画面;
所述响应于用户点击所述第二页面中的退出按钮,设置游戏停止渲染的标记位,包括:
响应于用户点击所述第二页面中的退出按钮,停止所述定时器的所述周期性计时,并销毁所述定时器;
响应于所述定时器的销毁,设置所述游戏停止渲染的标记位。
3.根据权利要求2所述的资源管理方法,其特征在于,所述在所述多个关键代码段终止执行后,回收所述应用程序的进程中与所述第二页面相关的内存,包括:
销毁所述经改写的Cocos2d游戏引擎的游戏控制类及其持有的实例属性,其中所述实例属性包括由原生Cocos2d游戏引擎的多个第一单例对象改写而成的实例属性。
4.根据权利要求3所述的资源管理方法,其特征在于,所述原生Cocos2d游戏引擎的多个第一单例对象包括骨骼动画资源类的单例对象。
5.根据权利要求1所述的资源管理方法,其特征在于,所述在所述多个关键代码段终止执行后,回收所述应用程序的进程中与所述第二页面相关的内存,包括:
使所述经改写的Cocos2d游戏引擎的音乐和音效子系统停止播放,销毁所述经改写的Cocos2d游戏引擎的音频控制类及其持有的实例属性。
6.根据权利要求1所述的资源管理方法,其特征在于,还包括:
响应于用户点击所述第二页面中的退出按钮,重置所述经改写的Cocos2d游戏引擎游戏中多个第二单例对象的值,所述多个第二单例对象包括文件管理类和渲染控制类的单例对象。
7.根据权利要求1至6中任一项所述的资源管理方法,其特征在于,
所述响应于所述第二页面的载入,在所述第二页面中执行游戏画面的渲染,包括:
所述经改写的Cocos2d游戏引擎经由一个或多个音乐数据接口向所述应用程序中独立于所述经改写的Cocos2d游戏引擎的歌曲引擎发送歌曲信息请求;
响应于所述歌曲信息请求,所述歌曲引擎从服务器或本地缓存获取歌曲信息;
基于所获取的所述歌曲信息,所述歌曲引擎处理所述所获取的歌曲信息,以及/或者,所述经改写的Cocos2d游戏引擎经所述一个或多个音乐数据接口接收所述所获取的歌曲信息。
8.根据权利要求7所述的资源管理方法,其特征在于,所述响应于所述歌曲信息请求,所述歌曲引擎从服务器或本地缓存获取歌曲信息,包括:
所述歌曲引擎检查所请求的所述歌曲信息;
所述歌曲引擎从服务器或本地缓存获取经检查的歌曲信息。
9.根据权利要求7所述的资源管理方法,其特征在于,所述响应于所述第二页面的载入,在所述第二页面中执行游戏画面的渲染,还包括:
基于经所述一个或多个音乐数据接口接收的所述歌曲信息,触发所述经改写的Cocos2d的至少一个子系统及其元素的执行,所述子系统选自场景子系统、节点子系统、动作子系统、物理和碰撞子系统、粒子子系统、瓦片地图子系统、音乐和音效子系统中的至少一个。
10.根据权利要求1至6中任一项所述的资源管理方法,其特征在于,
所述响应于所述第二页面的载入,在所述第二页面中执行游戏画面的渲染,包括:
所述经改写的Cocos2d游戏引擎经由一个或多个音乐数据接口向所述应用程序中独立于所述经改写的Cocos2d游戏引擎的歌唱引擎发送用户歌唱信息请求;
响应于用户歌唱信息请求,所述歌唱引擎获取并处理用户歌唱的音频,以生成用户歌唱信息;
所述经改写的Cocos2d游戏引擎经所述一个或多个音乐数据接口接收所生成的所述用户歌唱信息;
基于所接收的所述用户歌唱信息,触发所述经改写的Cocos2d游戏引擎的至少一个子系统及其元素的执行,所述子系统选自场景子系统、节点子系统、动作子系统、物理和碰撞子系统、粒子子系统、瓦片地图子系统、音乐和音效子系统中的至少一个。
11.根据权利要求10所述的资源管理方法,其特征在于,所述所接收的用户歌唱信息包括用户歌唱特征值;
所述基于所接收的所述用户歌唱信息,触发所述经改写的Cocos2d游戏引擎的至少一个子系统及其元素的执行,包括:
响应于接收的第一用户歌唱特征值,所述动作子系统触发精灵子系统中的第一精灵以第一动作值执行第一动作;
响应于接收的不同于第一用户歌唱特征值的第二用户歌唱特征值,所述动作子系统触发所述精灵子系统中的第二精灵以第二动作值执行第二动作,其中所述第一精灵不同于所述第二精灵和/或所述第一动作值不等于所述第二动作值和/或所述第一动作的动作类型不同于所述第二动作的动作类型。
12.根据权利要求10所述的资源管理方法,其特征在于,所述所接收的用户歌唱信息包括用户歌唱特征值;
所述基于所接收的所述用户歌唱信息,触发所述经改写的Cocos2d游戏引擎的至少一个子系统及其元素的执行,包括:
基于接收的多个或连续的用户歌唱特征值,构建动作曲线;
所述动作子系统触发精灵子系统中的至少一个精灵基于所述动作曲线执行变速动作。
13.一种集成游戏模块的应用程序的资源管理装置,其特征在于,包括:
加载单元,配置成响应于用户点击所述应用程序的第一页面中的访问按钮,载入所述应用程序的第二页面,其中所述第二页面为基于经改写的Cocos2d游戏引擎实现的游戏页面;
渲染执行单元,配置成响应于所述第二页面的载入,在所述第二页面中执行游戏画面的渲染;
标记位设置单元,配置成响应于用户点击所述第二页面中的退出按钮,设置游戏停止渲染的标记位,进入对经改写的Cocos2d框架的相关处理;
终止单元,配置成在所述框架的多处关键代码处添加对所述标记的判断,基于在所述经改写的Cocos2d游戏引擎的多个关键代码段中对所述标记位的判断,终止所述多个关键代码段的执行,其中所述多个关键代码段包括与游戏渲染逻辑执行相关的代码段;
回收单元,配置成在所述多个关键代码段终止执行后,回收所述应用程序的进程中与所述第二页面相关的内存。
14.一种电子设备,其包括:处理器和存储有计算机程序的存储器,所述处理器被配置为在运行所述计算机程序时实现权利要求1至12中任一项所述的资源管理方法。
15.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序配置成被运行时实现权利要求1至12中任一项所述的资源管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110509495.0A CN113082721B (zh) | 2021-05-11 | 2021-05-11 | 集成游戏模块的应用程序的资源管理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110509495.0A CN113082721B (zh) | 2021-05-11 | 2021-05-11 | 集成游戏模块的应用程序的资源管理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113082721A CN113082721A (zh) | 2021-07-09 |
CN113082721B true CN113082721B (zh) | 2022-09-27 |
Family
ID=76664935
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110509495.0A Active CN113082721B (zh) | 2021-05-11 | 2021-05-11 | 集成游戏模块的应用程序的资源管理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113082721B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113655999B (zh) * | 2021-08-05 | 2024-01-09 | 上海硬通网络科技有限公司 | 一种页面控件的渲染方法、装置、设备及存储介质 |
CN113641437B (zh) * | 2021-08-16 | 2023-06-16 | 深圳技德智能科技研究院有限公司 | 一种Linux兼容Android的应用界面旋转方法及装置 |
CN114797101A (zh) * | 2022-04-11 | 2022-07-29 | 平安科技(深圳)有限公司 | 一种培训游戏资源的发布方法、装置、设备及存储介质 |
CN115604506B (zh) * | 2022-12-01 | 2023-02-17 | 北京数原数字化城市研究中心 | 一种云渲染数据同步处理方法、装置及设备 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006127493A2 (en) * | 2005-05-26 | 2006-11-30 | United Parcel Service Of America, Inc. | Software process monitor |
CN104951372B (zh) * | 2015-06-16 | 2018-07-31 | 北京工业大学 | 一种基于预测的Map/Reduce数据处理平台内存资源动态分配方法 |
CN108319483B (zh) * | 2018-01-30 | 2021-07-09 | 腾讯科技(深圳)有限公司 | 网页处理方法、装置、终端及存储介质 |
CN112698983A (zh) * | 2019-10-18 | 2021-04-23 | 腾讯科技(深圳)有限公司 | 一种数据处理方法和相关装置 |
CN110968508B (zh) * | 2019-11-21 | 2021-05-14 | 腾讯科技(深圳)有限公司 | 一种小程序的加载时间确定方法、装置、终端及存储介质 |
CN111767503B (zh) * | 2020-07-29 | 2024-05-28 | 腾讯科技(深圳)有限公司 | 一种游戏数据处理方法、装置、计算机及可读存储介质 |
CN112416455B (zh) * | 2020-11-18 | 2022-09-06 | 北京字跳网络技术有限公司 | 数据处理方法、装置、终端和存储介质 |
-
2021
- 2021-05-11 CN CN202110509495.0A patent/CN113082721B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113082721A (zh) | 2021-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113082721B (zh) | 集成游戏模块的应用程序的资源管理方法、装置、电子设备及存储介质 | |
JP7476292B2 (ja) | 複合現実システムにおいて仮想コンテンツを管理および表示する方法およびシステム | |
Zechner et al. | Beginning Android 4 games development | |
US20240137417A1 (en) | Methods, systems, and computer program products for implementing cross-platform mixed-reality applications with a scripting framework | |
Membrey et al. | Learn Raspberry Pi with Linux | |
Jackson et al. | Android apps for absolute beginners | |
US9348488B1 (en) | Methods for blatant auxiliary activation inputs, initial and second individual real-time directions, and personally moving, interactive experiences and presentations | |
Slany | Catroid: a mobile visual programming system for children | |
Peters | Foundation ActionScript Animation: making things move! | |
Davison | Pro Java 6 3D Game Development: Java 3D, JOGL, JInput and JOAL APIs | |
Robinson | Game Audio with FMOD and Unity | |
Márquez et al. | Libgdx Cross-platform Game Development Cookbook | |
Manzur et al. | Godot Engine Game Development in 24 Hours, Sams Teach Yourself: The Official Guide to Godot 3.0 | |
Keene | Google Daydream VR Cookbook: Building Games and Apps with Google Daydream and Unity | |
Pupius | SFML Game Development By Example | |
Odom | HoloLens Beginner's Guide | |
Van der Spuy | AdvancED Game Design with Flash | |
Morrison | Beginning mobile phone game programming | |
Strougo et al. | Learning Cocos2D: a hands-on guide to building iOS games with Cocos2D, Box2D, and Chipmunk | |
Haller et al. | SFML Game Development | |
Teale | Building Games with Flutter: The ultimate guide to creating multiplatform games using the Flame engine in Flutter 3 | |
Itterheim et al. | Learn cocos2D game development with iOS 5 | |
US20240009560A1 (en) | 3D Image Implementation | |
Thorn | Unity 5. x by Example | |
Zirkle et al. | iPhone game development: developing 2D & 3D games in Objective-C |
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 |