CN105354040A - 双引擎游戏内置工具栏的方法、装置及终端 - Google Patents
双引擎游戏内置工具栏的方法、装置及终端 Download PDFInfo
- Publication number
- CN105354040A CN105354040A CN201510919421.9A CN201510919421A CN105354040A CN 105354040 A CN105354040 A CN 105354040A CN 201510919421 A CN201510919421 A CN 201510919421A CN 105354040 A CN105354040 A CN 105354040A
- Authority
- CN
- China
- Prior art keywords
- game
- picture
- toolbar
- drafting
- engine
- 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.)
- Granted
Links
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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种双引擎游戏内置工具栏的方法,包括:在游戏进程运行时,实时检测工具栏进程的当前状态;当检测到当前工具栏画面已保存到游戏进程的共享内存时,从所述共享内存中读取所述当前工具栏画面到读写缓存模块中;其中,所述当前工具栏画面为通过工具栏进程渲染后,通过进程间通信方式进入游戏进程的读写缓存交换模块,从而写入所述共享内存中的;根据当前运行为2D游戏引擎或3D游戏引擎,调用对应的2D游戏引擎贴图流程或3D游戏引擎贴图流程,以将所述读写缓存模块中的当前工具栏画面绘制到当前游戏画面上。本发明还公开了一种双引擎游戏内置工具栏的装置及终端。
Description
技术领域
本发明涉及游戏显示处理技术领域,尤其涉及一种双引擎游戏内置工具栏的方法、装置以及终端。
背景技术
直播内置工具栏是一种由外部直播客户端注入到游戏进程内,将工具栏界面显示在游戏画面上,方便玩家在游戏过程中控制直播,查看直播信息的直播技术。
发明内容
经工程测试研究发现,目前业界的直播内置工具栏都是内置于单引擎架构的游戏中。但是对于日渐流行的双引擎架构的游戏来说,目前还没有对应的双引擎游戏内置工具栏的技术,能够使游戏在两个游戏引擎之间切换时,工具栏也可以和游戏一样平滑切换,使玩家的操作不会受切换过程的影响,也不会感觉到工具栏发生变化。
为实现在双引擎架构的游戏中内置直播工具栏,我们提出了一种双引擎游戏内置工具栏的技术,当游戏在两个游戏引擎之间切换时,工具栏也可以和游戏一样平滑切换,使玩家的操作不会受切换过程的影响,也不会感觉到工具栏发生变化。
为实现上述目的,本发明提供一种双引擎游戏内置工具栏的方法、装置及终端,能够将工具栏内置到双引擎架构的游戏中,并且当游戏在两个游戏引擎之间切换时,工具栏也可以和游戏一样平滑切换。
本发明实施例提供了一种双引擎游戏内置工具栏的方法,包括:
在游戏进程运行时,实时检测工具栏进程的当前状态;
当检测到当前工具栏画面已保存到游戏进程的共享内存时,从所述共享内存中读取所述当前工具栏画面到读写缓存模块中;其中,所述当前工具栏画面为通过工具栏进程渲染后,通过进程间通信方式进入游戏进程的读写缓存交换模块,从而写入所述共享内存中的;
根据当前运行为2D游戏引擎或3D游戏引擎,调用对应的2D游戏引擎贴图流程或3D游戏引擎贴图流程,以将所述读写缓存模块中的当前工具栏画面绘制到当前游戏画面上。
作为上述方案的改进,所述在游戏进程运行时,实时检测工具栏进程的当前状态具体为:
在游戏进程运行时,通过实时检测游戏进程与工具栏进程之间创建的匿名管道中的状态ID来确定工具栏进程的当前状态;其中,所述状态ID由工具栏进程生成并送入所述匿名管道中。
作为上述方案的改进,若工具栏启动,所述工具栏进程生成的状态ID为1;
若当前工具栏画面生成并写入所述共享内存中,所述工具栏进程生成的状态ID为2;
若工具栏关闭,所述工具栏进程生成的状态ID为3。
作为上述方案的改进,若实时检测所述匿名管道中的状态ID为1时,则对2D游戏引擎贴图流程和3D游戏引擎贴图流程进行初始化。
作为上述方案的改进,对2D游戏引擎贴图流程进行初始化具体包括:
通过APIHOOK技术,对2D游戏引擎原绘制流程进行修改,在绘制游戏画面前先跳转到执行工具栏画面的绘制,并在工具栏画面绘制完毕后再跳转回去执行游戏画面的绘制,从而得到所述2D游戏引擎贴图流程。
作为上述方案的改进,对3D游戏引擎绘图流程进行初始化具体包括:
通过APIHOOK技术,对3D游戏引擎原绘制流程进行修改,在绘制游戏画面前先跳转到执行工具栏画面的绘制,并在工具栏画面绘制完毕后再跳转回去执行游戏画面的绘制,从而得到所述3D游戏引擎贴图流程。
作为上述方案的改进,所述2D游戏引擎原绘图流程通过IDirectDrawSurface7::Unlock函数来实现游戏画面的绘制;
所述3D游戏引擎原绘图流程通过IDirect3DDevice9::Present函数来实现游戏画面的绘制。
作为上述方案的改进,若当前调用的函数为IDirectDrawSurface7::Unlock,则判断当前运行为2D游戏引擎;
若当前调用的函数为IDirect3DDevice9::Present,则判断当前运行为3D游戏引擎。
作为上述方案的改进,若实时检测所述匿名管道中的状态ID为2时,则从所述共享内存中读取所述当前工具栏画面到读写缓存模块中。
作为上述方案的改进,若实时检测所述匿名管道中的状态ID为3时,则清理所述写缓存模块中的工具栏画面。
作为上述方案的改进,将当前工具栏画面绘制到当前游戏画面上具体为:
将所述当前工具栏画面进行透视化处理后呈现在所述当前游戏画面上。
作为上述方案的改进,所述工具栏进程为直播工具栏进程。
作为上述方案的改进,所述在游戏进程运行时,实时检测工具栏进程的当前状态具体为:
在游戏进程运行时,以预设频率实时检测工具栏进程的当前状态。
本发明实施例对应提供了一种双引擎游戏内置工具栏的装置,包括:
检测模块,用于在游戏进程运行时,实时检测工具栏进程的当前状态;
工具栏画面读取模块,用于当检测模块检测到当前工具栏画面已保存到游戏进程的共享内存时,从所述共享内存中读取所述当前工具栏画面到读写缓存模块中;其中,所述当前工具栏画面为通过工具栏进程渲染后,通过进程间通信方式进入游戏进程的读写缓存交换模块,从而写入所述共享内存中的;
工具栏画面绘制模块,用于根据当前运行为2D游戏引擎或3D游戏引擎,调用对应的2D游戏引擎贴图流程或3D游戏引擎贴图流程,以将所述读写缓存模块中的当前工具栏画面绘制到当前游戏画面上。
作为上述方案的改进,所述检测模块进一步用于:
在游戏进程运行时,通过实时检测游戏进程与工具栏进程之间创建的匿名管道中的状态ID来确定工具栏进程的当前状态;其中,所述状态ID由工具栏进程生成并送入所述匿名管道中。
作为上述方案的改进,所述工具栏进程生成的状态ID为1时表示工具栏启动;
所述工具栏进程生成的状态ID为2时表示当前工具栏画面生成并写入所述共享内存中;
所述工具栏进程生成的状态ID为3时表示工具栏关闭。
作为上述方案的改进,所述装置还包括初始化模块,用于若所述检测模块实时检测游戏进程的输入管道中的状态ID为1时,则对2D游戏引擎贴图流程和3D游戏引擎贴图流程进行初始化。
作为上述方案的改进,所述初始化模块对2D游戏引擎贴图流程进行初始化操作包括:
通过APIHOOK技术,对2D游戏引擎原绘制流程进行修改,在绘制游戏画面前先跳转到执行工具栏画面的绘制,并在工具栏画面绘制完毕后再跳转回去执行游戏画面的绘制,从而得到所述2D游戏引擎贴图流程。
作为上述方案的改进,所述初始化模块对3D游戏引擎绘图流程进行初始化操作包括:
通过APIHOOK技术,对3D游戏引擎原绘制流程进行修改,在绘制游戏画面前先跳转到执行工具栏画面的绘制,并在工具栏画面绘制完毕后再跳转回去执行游戏画面的绘制,从而得到所述3D游戏引擎贴图流程。
作为上述方案的改进,所述2D游戏引擎原绘图流程通过IDirectDrawSurface7::Unlock函数来实现游戏画面的绘制;
所述3D游戏引擎原绘图流程通过IDirect3DDevice9::Present函数来实现游戏画面的绘制。
作为上述方案的改进,所述装置还包括判断模块,用于:若当前调用的函数为IDirectDrawSurface7::Unlock,则判断当前运行为2D游戏引擎;
若当前调用的函数为IDirect3DDevice9::Present,则判断当前运行为3D游戏引擎。
作为上述方案的改进,若所述检测模块实时检测游戏进程的输入管道中的状态ID为2时,则通知所述工具栏画面读取模块从所述共享内存中读取所述当前工具栏画面到读写缓存模块中。
作为上述方案的改进,还包括工具栏画面清理模块,用于:
若所述检测模块实时检测游戏进程的输入管道中的状态ID为3时,则清理所述写缓存模块中的工具栏画面。
作为上述方案的改进,所述工具栏画面绘制模块进一步用于:
将所述当前工具栏画面进行透视化处理后呈现在所述当前游戏画面上。
作为上述方案的改进,所述工具栏进程为直播工具栏进程。
作为上述方案的改进,所述检测模块进一步用于:在游戏进程运行时,以预设频率实时检测工具栏进程的当前状态。
本发明实施例还提供了一种终端,包括如上所述的双引擎游戏内置工具栏的装置。
与现有技术相比,本发明公开的双引擎游戏内置工具栏的方法、装置以及终端,通过在游戏进程运行中实时检测工具栏进程的当前状态,并在检测到工具栏进程完成当前工具栏画面的渲染且存入游戏进程的共享内存时,将共享内存中的当前工具栏画面读取到读写缓存模块中,并基于当前运行的游戏引擎为2D游戏引擎或3D游戏引擎,调用对应的游戏引擎贴图流程以将所述当前工具栏画面绘制到当前游戏画面上。由于本发明是基于实时(检测频率较大)检测工具栏进程状态的结果,来调用当前游戏引擎对应的贴图技术将当前工具栏画面绘制到当前游戏画面上,若当前游戏引擎发生切换(例如,从2D游戏引擎切换到3D游戏引擎),则会根据实时(检测频率较大)检测工具栏进程状态的结果调用引擎切换后所对应的3D游戏引擎贴图流程,以将当前工具栏画面绘制到当前游戏画面上,从而保证游戏在两个游戏引擎之间切换时,工具栏也和游戏一样平滑切换,使玩家的操作不会受切换过程的影响,也不会感觉到工具栏发生变化。
附图说明
图1是本发明实施例一种双引擎游戏内置工具栏的方法的流程示意图。
图2是本发明实施例一种双引擎游戏内置工具栏的方法中的游戏进程与工具栏进程之间的通信过程示意图。
图3a~图3b分别为本发明实施例中的2D游戏引擎原绘制流程以及初始化后的2D游戏引擎贴图流程的流程示意图。
图4a~图4b分别为本发明实施例中的3D游戏引擎原绘制流程以及初始化后的3D游戏引擎贴图流程的流程示意图。
图5是本发明实施例中一种双引擎游戏内置工具栏的装置的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,是本发明实施例提供的一种双引擎游戏内置工具栏的方法的流程示意图。本实施例是针对于在双引擎游戏中内置工具栏,若游戏在两个游戏引擎之间切换时,工具栏也和游戏一样平滑切换,使玩家的操作不会受切换过程的影响,也不会感觉到工具栏发生变化。如图1所示,本发明实施例提供的一种双引擎游戏内置工具栏的方法包括步骤S101~S103:
S101、在游戏进程运行时,实时检测工具栏进程的当前状态。
其中,本实施的工具栏是由独立于游戏进程的外部工具栏进程来实现的,例如,直播客户端。通过直播客户端的工具栏模块执行工具栏的具体功能(如关闭直播,启动摄像头等)和渲染工具栏画面,将渲染出来的工具栏画面图片通过进程间通讯的方式传送给游戏进程中的内存,然后由游戏进程来读取内存中的工具栏画面并绘制到游戏画面上。因此,游戏进程需要实时监测工具栏进程的状态,根据不同的状态执行相应的操作。
具体的,在游戏进程运行时,通过实时检测游戏进程与工具栏进程之间创建的匿名管道(anonymouspipe)中的状态ID来确定工具栏进程的当前状态;其中,所述状态ID由工具栏进程生成并送入所述匿名管道中:若工具栏启动,所述工具栏进程生成的状态ID为1;若当前工具栏画面生成并写入所述共享内存中,所述工具栏进程生成的状态ID为2;若工具栏关闭,所述工具栏进程生成的状态ID为3。可以理解的,也可以用其他数字在表示不同的状态。
参考图2,在游戏进程和工具栏进程均启动后,两个进程保持通信。具体的,游戏进程通过一定频率实时检测游戏进程与工具栏进程之间创建的匿名管道(anonymouspipe)中的状态ID确定工具栏当前状态。当工具栏进程启动时,会生成状态ID=1并通过所述匿名管道(对于工具栏进程来说,该匿名管道为输出管道)通知游戏进程。而游戏进程若实时检测所述匿名管道(对于游戏进程来说,该匿名管道为输入管道)中的状态ID为1时,则对2D游戏引擎贴图流程和3D游戏引擎贴图流程进行初始化。
请参考图3a~3b,对2D游戏引擎贴图流程进行初始化是指对2D游戏引擎原绘制流程(如图3a所示)进行修改以得到对应的2D游戏引擎贴图流程(如图3b所示)。可以理解的,2D游戏引擎原绘制流程用于绘制没有插入直播工具栏的游戏画面,而2D游戏引擎贴图流程用于绘制插入直播工具栏的游戏画面。初始化过程如下:
通过APIHOOK技术,对2D游戏引擎原绘制流程进行修改,在绘制游戏画面前先跳转到执行工具栏画面的绘制,并在工具栏画面绘制完毕后再跳转回去执行游戏画面的绘制,从而得到所述2D游戏引擎贴图流程。
其中,所述2D游戏引擎原绘图流程通过IDirectDrawSurface7::Unlock(纯虚函数)来实现游戏画面的绘制。而所述2D游戏引擎贴图流程主要通过APIHook技术,在绘制游戏画面(即调用图3a中的Unlock函数,Hook后变为OrigUnlock函数)前先跳转执行工具栏画面的绘制函数(图3b中的MyUnlock函数),待工具栏画面绘制完毕后,再跳转回执行游戏画面的绘制(图3b中的OrigUnlock函数)。相当于在游戏画面绘制前,插入了工具栏画面的绘制操作。
请参考图4a~4b,对3D游戏引擎贴图流程进行初始化是指对3D游戏引擎原绘制流程(如图4a所示)进行修改以得到对应的3D游戏引擎贴图流程(如图4b所示)。可以理解的,3D游戏引擎原绘制流程用于绘制没有插入直播工具栏的游戏画面,而3D游戏引擎贴图流程用于绘制插入直播工具栏的游戏画面。初始化过程如下:
通过APIHOOK技术,对3D游戏引擎原绘制流程进行修改,在绘制游戏画面前先跳转到执行工具栏画面的绘制,并在工具栏画面绘制完毕后再跳转回去执行游戏画面的绘制,从而得到所述3D游戏引擎贴图流程。
所述3D游戏引擎原绘图流程通过IDirect3DDevice9::Present函数来实现游戏画面的绘制。而所述3D游戏引擎贴图流程主要通过APIHook技术,在绘制游戏画面(即调用图4a中的Present函数,Hook后变为OrigPresent函数)前先跳转执行工具栏画面的绘制函数(图4b中的MyPresent函数),待工具栏画面绘制完毕后,再跳转回执行游戏画面的绘制(图4b中的OrigPresent函数)。相当于在游戏画面绘制前,插入了工具栏画面的绘制操作。
需要说明的是,APIHOOK技术是一种用于改变API执行结果的技术。通常实现方式是将原API的代码的前面N个字节,修改为一条JMP指令,跳转到我们自定义的函数,执行完自己需要的操作后,再跳转回原API继续执行。
返回参考图2,在工具栏进程启动后,工具栏进程根据预设规则来完成当前工具栏画面的渲染,并将渲染完成后的当前工具栏画面(图片格式)通过进程间通讯的方式进入读写缓冲交换模块,从而写入游戏进程的共享内存中。其中,工具栏画面的渲染的预设规则可为按照一定频率进行或者在接收到触发事件(例如,玩家发起的聊天等)进行。另外,工具栏进程完成当前工具栏画面的渲染将画面存入游戏进程的共享内存后,会生成状态ID=2并通过所述匿名管道(对于工具栏进程来说,该匿名管道为输出管道)通知游戏进程。而游戏进程若实时检测所述匿名管道(对于游戏进程来说,该匿名管道为输入管道)中的状态ID为2时,则可从所述共享内存中读取所述当前工具栏画面到读写缓存模块中,以更新(替换)读写缓存模块中的图像。可以理解的,为了保持画面更新同步,游戏进程读取工具栏画面的频率与工具栏进程生成工具栏画面的频率基本一致。
继续参考图2,在工具栏关闭(即工具栏进程无需渲染当前工具栏画面给游戏进程)时,工具栏进程会生成状态ID=3并通过所述匿名管道(对于工具栏进程来说,该匿名管道为输出管道)通知游戏进程。而游戏进程若实时检测所述匿名管道(对于游戏进程来说,该匿名管道为输入管道)中的状态ID为3时,即可清理所述写缓存模块中的工具栏画面和相关内存。
S102、当检测到当前工具栏画面已保存到游戏进程的共享内存时,从所述共享内存中读取所述当前工具栏画面到读写缓存模块中;其中,所述当前工具栏画面为通过工具栏进程渲染后,通过进程间通信方式进入游戏进程的读写缓存交换模块,从而写入所述共享内存中的。
具体的,游戏进程若实时检测所述匿名管道(对于游戏进程来说,该匿名管道为输入管道)中的状态ID为2时,即表示当前工具栏画面已保存到游戏进程的共享内存中,因此,游戏进程可从所述共享内存中读取所述当前工具栏画面到读写缓存模块中,以更新(替换)读写缓存模块中的图像,然后将读写缓存模块中的当前工具栏画面绘制到游戏画面上,即执行步骤103。
S103、根据当前运行为2D游戏引擎或3D游戏引擎,调用对应的2D游戏引擎贴图流程或3D游戏引擎贴图流程,以将所述读写缓存模块中的当前工具栏画面绘制到当前游戏画面上。
在游戏进程从所述共享内存中读取所述当前工具栏画面到读写缓存模块中,以更新(替换)读写缓存模块中的图像后,即可将读写缓存模块中的当前工具栏画面绘制到游戏画面上,具体操作过程如下:
首先,判断当前游戏运行的引擎为2D游戏引擎还是3D游戏引擎。具体的,可通过当前调用的游戏画面绘制函数来判断当前执行的游戏引擎:
若当前调用的函数为IDirectDrawSurface7::Unlock,则判断当前运行为2D游戏引擎;
若当前调用的函数为IDirect3DDevice9::Present,则判断当前运行为3D游戏引擎。
当判断当前运行为2D游戏引擎时,则执行对应的2D游戏引擎贴图流程(如图3b所示),从而将所述读写缓存模块中的当前工具栏画面绘制到当前游戏画面上。
当判断当前运行为3D游戏引擎时,则执行对应的3D游戏引擎贴图流程(如图4b所示),从而将所述读写缓存模块中的当前工具栏画面绘制到当前游戏画面上。
优选的,无论当前运行为2D游戏引擎还是3D游戏引擎,均将所述当前工具栏画面进行透视化处理后呈现在所述当前游戏画面上。
可见,本发明公开的双引擎游戏内置工具栏的方法基于实时(检测频率较大)检测工具栏进程状态的结果,来调用当前游戏引擎对应的贴图技术将当前工具栏画面绘制到当前游戏画面上,若当前游戏引擎发生切换(例如,从2D游戏引擎切换到3D游戏引擎),则会根据实时(检测频率较大)检测工具栏进程状态的结果调用引擎切换后所对应的3D游戏引擎贴图流程,以将当前工具栏画面绘制到当前游戏画面上,从而保证游戏在两个游戏引擎之间切换时,工具栏也和游戏一样平滑切换,使玩家的操作不会受切换过程的影响,也不会感觉到工具栏发生变化。
参考图5,是本发明实施例中一种双引擎游戏内置工具栏的装置的结构框图。该装置包括检测模块21、工具栏画面读取模块22和工具栏画面绘制模块23,其中:
检测模块21,用于在游戏进程运行时,实时检测工具栏进程的当前状态;
其中,本实施的工具栏是由独立于游戏进程的外部工具栏进程来实现的,例如,直播客户端。通过直播客户端的工具栏模块执行工具栏的具体功能(如关闭直播,启动摄像头等)和渲染工具栏画面,将渲染出来的工具栏画面图片通过进程间通讯的方式传送给游戏进程中的内存,然后由游戏进程来读取内存中的工具栏画面并绘制到游戏画面上。因此,游戏进程需要实时监测工具栏进程的状态,根据不同的状态执行相应的操作。
具体的,在游戏进程运行时,所述检测模块21通过实时检测游戏进程与工具栏进程之间创建的匿名管道中的状态ID来确定工具栏进程的当前状态;其中,所述状态ID由工具栏进程生成并送入所述匿名管道中。其中,所述状态ID由工具栏进程生成并送入所述匿名管道中:若工具栏启动,所述工具栏进程生成的状态ID为1;若当前工具栏画面生成并写入所述共享内存中,所述工具栏进程生成的状态ID为2;若工具栏关闭,所述工具栏进程生成的状态ID为3。
参考图2,在游戏进程和工具栏进程均启动后,两个进程保持通信。具体的,游戏进程通过一定频率实时检测游戏进程与工具栏进程之间创建的匿名管道(anonymouspipe)中的状态ID确定工具栏当前状态。当工具栏进程启动时,会生成状态ID=1并通过所述匿名管道(对于工具栏进程来说,该匿名管道为输出管道)通知游戏进程。
优选的,本实施例的装置还包括初始化模块,当所述检测模块21实时检测所述匿名管道(对于游戏进程来说,该匿名管道为输入管道)中的状态ID为1时,利用所述初始化模块对2D游戏引擎贴图流程和3D游戏引擎贴图流程进行初始化。
请参考图3a~3b,利用所述初始化模块对2D游戏引擎贴图流程进行初始化是指对2D游戏引擎原绘制流程(如图3a所示)进行修改以得到对应的2D游戏引擎贴图流程(如图3b所示)。可以理解的,2D游戏引擎原绘制流程用于绘制没有插入直播工具栏的游戏画面,而2D游戏引擎贴图流程用于绘制插入直播工具栏的游戏画面。初始化过程如下:
通过APIHOOK技术,对2D游戏引擎原绘制流程进行修改,在绘制游戏画面前先跳转到执行工具栏画面的绘制,并在工具栏画面绘制完毕后再跳转回去执行游戏画面的绘制,从而得到所述2D游戏引擎贴图流程。
其中,所述2D游戏引擎原绘图流程通过IDirectDrawSurface7::Unlock(纯虚函数)来实现游戏画面的绘制。而所述2D游戏引擎贴图流程主要通过APIHook技术,在绘制游戏画面(即调用图3a中的Unlock函数,Hook后变为OrigUnlock函数)前先跳转执行工具栏画面的绘制函数(图3b中的MyUnlock函数),待工具栏画面绘制完毕后,再跳转回执行游戏画面的绘制(图3b中的OrigUnlock函数)。相当于在游戏画面绘制前,插入了工具栏画面的绘制操作。
请参考图4a~4b,利用所述初始化模块对3D游戏引擎贴图流程进行初始化是指对3D游戏引擎原绘制流程(如图4a所示)进行修改以得到对应的3D游戏引擎贴图流程(如图4b所示)。可以理解的,3D游戏引擎原绘制流程用于绘制没有插入直播工具栏的游戏画面,而3D游戏引擎贴图流程用于绘制插入直播工具栏的游戏画面。初始化过程如下:
通过APIHOOK技术,对3D游戏引擎原绘制流程进行修改,在绘制游戏画面前先跳转到执行工具栏画面的绘制,并在工具栏画面绘制完毕后再跳转回去执行游戏画面的绘制,从而得到所述3D游戏引擎贴图流程。
所述3D游戏引擎原绘图流程通过IDirect3DDevice9::Present函数来实现游戏画面的绘制。而所述3D游戏引擎贴图流程主要通过APIHook技术,在绘制游戏画面(即调用图4a中的Present函数,Hook后变为OrigPresent函数)前先跳转执行工具栏画面的绘制函数(图4b中的MyPresent函数),待工具栏画面绘制完毕后,再跳转回执行游戏画面的绘制(图4b中的OrigPresent函数)。相当于在游戏画面绘制前,插入了工具栏画面的绘制操作。
需要说明的是,APIHOOK技术是一种用于改变API执行结果的技术。通常实现方式是将原API的代码的前面N个字节,修改为一条JMP指令,跳转到我们自定义的函数,执行完自己需要的操作后,再跳转回原API继续执行。
返回参考图2,在工具栏进程启动后,工具栏进程根据预设规则来完成当前工具栏画面的渲染,并将渲染完成后的当前工具栏画面(图片格式)通过进程间通讯的方式进入读写缓冲交换模块,从而写入游戏进程的共享内存中。其中,工具栏画面的渲染的预设规则可为按照一定频率进行或者在接收到触发事件(例如,玩家发起的聊天等)进行。另外,工具栏进程完成当前工具栏画面的渲染将画面存入游戏进程的共享内存后,会生成状态ID=2并通过所述匿名管道(对于工具栏进程来说,该匿名管道为输出管道)通知游戏进程。而所述检测模块21若实时检测所述匿名管道(对于游戏进程来说,该匿名管道为输入管道)中的状态ID为2时,则可通知工具栏画面读取模块22从所述共享内存中读取所述当前工具栏画面到读写缓存模块中,以更新(替换)读写缓存模块中的图像。可以理解的,为了保持画面更新同步,游戏进程读取工具栏画面的频率与工具栏进程生成工具栏画面的频率基本一致。
继续参考图2,在工具栏关闭(即工具栏进程无需渲染当前工具栏画面给游戏进程)时,工具栏进程会生成状态ID=3并通过所述匿名管道(对于工具栏进程来说,该匿名管道为输出管道)通知游戏进程。
优选的,本实施例的装置还包括工具栏画面清理模块,用于:
当所述检测模块21实时检测所述匿名管道(对于游戏进程来说,该匿名管道为输入管道)中的状态ID为3时,即可清理所述写缓存模块中的工具栏画面和相关内存。
工具栏画面读取模块22,用于当检测模块检测到当前工具栏画面已保存到游戏进程的共享内存时,从所述共享内存中读取所述当前工具栏画面到读写缓存模块中;其中,所述当前工具栏画面为通过工具栏进程渲染后,通过进程间通信方式进入游戏进程的读写缓存交换模块,从而写入所述共享内存中的;
具体的,若所述检测模块21实时检测所述匿名管道(对于游戏进程来说,该匿名管道为输入管道)中的状态ID为2时,即表示当前工具栏画面已保存到游戏进程的共享内存中,因此,通知工具栏画面读取模块22从所述共享内存中读取所述当前工具栏画面到读写缓存模块中,以更新(替换)读写缓存模块中的图像,然后通过工具栏画面绘制模块23将读写缓存模块中的当前工具栏画面绘制到游戏画面上。
工具栏画面绘制模块23,用于根据当前运行为2D游戏引擎或3D游戏引擎,调用对应的2D游戏引擎贴图流程或3D游戏引擎贴图流程,以将所述读写缓存模块中的当前工具栏画面绘制到当前游戏画面上。
优选的,本实施例的装置还包括判断模块,用于判断当前游戏运行的引擎为2D游戏引擎还是3D游戏引擎。具体的,该判断模块可通过当前调用的游戏画面绘制函数来判断当前执行的游戏引擎:
若当前调用的函数为IDirectDrawSurface7::Unlock,则判断当前运行为2D游戏引擎;
若当前调用的函数为IDirect3DDevice9::Present,则判断当前运行为3D游戏引擎。
当判断模块判断当前运行为2D游戏引擎时,则工具栏画面绘制模块23执行对应的2D游戏引擎贴图流程(如图3b所示),从而将所述读写缓存模块中的当前工具栏画面绘制到当前游戏画面上。
当判断模块判断当前运行为3D游戏引擎时,则工具栏画面绘制模块23执行对应的3D游戏引擎贴图流程(如图4b所示),从而将所述读写缓存模块中的当前工具栏画面绘制到当前游戏画面上。
优选的,无论当前运行为2D游戏引擎还是3D游戏引擎,所述工具栏画面绘制模块23均将所述当前工具栏画面进行透视化处理后呈现在所述当前游戏画面上。
可见,本发明公开的双引擎游戏内置工具栏的装置基于实时(检测频率较大)检测工具栏进程状态的结果,来调用当前游戏引擎对应的贴图技术将当前工具栏画面绘制到当前游戏画面上,若当前游戏引擎发生切换(例如,从2D游戏引擎切换到3D游戏引擎),则会根据实时(检测频率较大)检测工具栏进程状态的结果调用引擎切换后所对应的3D游戏引擎贴图流程,以将当前工具栏画面绘制到当前游戏画面上,从而保证游戏在两个游戏引擎之间切换时,工具栏也和游戏一样平滑切换,使玩家的操作不会受切换过程的影响,也不会感觉到工具栏发生变化。
本发明实施例还提供了一种终端,该终端包括如图5所示的双引擎游戏内置工具栏的装置。
综上所述,本发明公开的双引擎游戏内置工具栏的方法、装置以及终端,通过在游戏进程运行中实时检测工具栏进程的当前状态,并在检测到工具栏进程完成当前工具栏画面的渲染且存入游戏进程的共享内存时,将共享内存中的当前工具栏画面读取到读写缓存模块中,并基于当前运行的游戏引擎为2D游戏引擎或3D游戏引擎,调用对应的游戏引擎贴图流程以将所述当前工具栏画面绘制到当前游戏画面上。由于本发明是基于实时(检测频率较大)检测工具栏进程状态的结果,来调用当前游戏引擎对应的贴图技术将当前工具栏画面绘制到当前游戏画面上,若当前游戏引擎发生切换(例如,从2D游戏引擎切换到3D游戏引擎),则会根据实时(检测频率较大)检测工具栏进程状态的结果调用引擎切换后所对应的3D游戏引擎贴图流程,以将当前工具栏画面绘制到当前游戏画面上,从而保证游戏在两个游戏引擎之间切换时,工具栏也和游戏一样平滑切换,使玩家的操作不会受切换过程的影响,也不会感觉到工具栏发生变化。
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (27)
1.一种双引擎游戏内置工具栏的方法,其特征在于,包括:
在游戏进程运行时,实时检测工具栏进程的当前状态;
当检测到当前工具栏画面已保存到游戏进程的共享内存时,从所述共享内存中读取所述当前工具栏画面到读写缓存模块中;其中,所述当前工具栏画面为通过工具栏进程渲染后,通过进程间通信方式进入游戏进程的读写缓存交换模块,从而写入所述共享内存中的;
根据当前运行为2D游戏引擎或3D游戏引擎,调用对应的2D游戏引擎贴图流程或3D游戏引擎贴图流程,以将所述读写缓存模块中的当前工具栏画面绘制到当前游戏画面上。
2.如权利要求1所述的双引擎游戏内置工具栏的方法,其特征在于,所述在游戏进程运行时,实时检测工具栏进程的当前状态具体为:
在游戏进程运行时,通过实时检测游戏进程与工具栏进程之间创建的匿名管道中的状态ID来确定工具栏进程的当前状态;其中,所述状态ID由工具栏进程生成并送入所述匿名管道中。
3.如权利要求2所述的双引擎游戏内置工具栏的方法,其特征在于:
若工具栏启动,所述工具栏进程生成的状态ID为1;
若当前工具栏画面生成并写入所述共享内存中,所述工具栏进程生成的状态ID为2;
若工具栏关闭,所述工具栏进程生成的状态ID为3。
4.如权利要求3所述的双引擎游戏内置工具栏的方法,其特征在于:
若实时检测所述匿名管道中的状态ID为1时,则对2D游戏引擎贴图流程和3D游戏引擎贴图流程进行初始化。
5.如权利要求4所述的双引擎游戏内置工具栏的方法,其特征在于,对2D游戏引擎贴图流程进行初始化具体包括:
通过APIHOOK技术,对2D游戏引擎原绘制流程进行修改,在绘制游戏画面前先跳转到执行工具栏画面的绘制,并在工具栏画面绘制完毕后再跳转回去执行游戏画面的绘制,从而得到所述2D游戏引擎贴图流程。
6.如权利要求4所述的双引擎游戏内置工具栏的方法,其特征在于,对3D游戏引擎绘图流程进行初始化具体包括:
通过APIHOOK技术,对3D游戏引擎原绘制流程进行修改,在绘制游戏画面前先跳转到执行工具栏画面的绘制,并在工具栏画面绘制完毕后再跳转回去执行游戏画面的绘制,从而得到所述3D游戏引擎贴图流程。
7.如权利要求5或6所述的双引擎游戏内置工具栏的方法,其特征在于,
所述2D游戏引擎原绘图流程通过IDirectDrawSurface7::Unlock函数来实现游戏画面的绘制;
所述3D游戏引擎原绘图流程通过IDirect3DDevice9::Present函数来实现游戏画面的绘制。
8.如权利要求7所述的双引擎游戏内置工具栏的方法,其特征在于:
若当前调用的函数为IDirectDrawSurface7::Unlock,则判断当前运行为2D游戏引擎;
若当前调用的函数为IDirect3DDevice9::Present,则判断当前运行为3D游戏引擎。
9.如权利要求3所述的双引擎游戏内置工具栏的方法,其特征在于:
若实时检测所述匿名管道中的状态ID为2时,则从所述共享内存中读取所述当前工具栏画面到读写缓存模块中。
10.如权利要求3所述的双引擎游戏内置工具栏的方法,其特征在于:
若实时检测所述匿名管道中的状态ID为3时,则清理所述写缓存模块中的工具栏画面。
11.如权利要求1所述的双引擎游戏内置工具栏的方法,其特征在于,将当前工具栏画面绘制到当前游戏画面上具体为:
将所述当前工具栏画面进行透视化处理后呈现在所述当前游戏画面上。
12.如权利要求1所述的双引擎游戏内置工具栏的方法,其特征在于,所述工具栏进程为直播工具栏进程。
13.如权利要求1所述的双引擎游戏内置工具栏的方法,其特征在于,所述在游戏进程运行时,实时检测工具栏进程的当前状态具体为:
在游戏进程运行时,以预设频率实时检测工具栏进程的当前状态。
14.一种双引擎游戏内置工具栏的装置,其特征在于,包括:
检测模块,用于在游戏进程运行时,实时检测工具栏进程的当前状态;
工具栏画面读取模块,用于当检测模块检测到当前工具栏画面已保存到游戏进程的共享内存时,从所述共享内存中读取所述当前工具栏画面到读写缓存模块中;其中,所述当前工具栏画面为通过工具栏进程渲染后,通过进程间通信方式进入游戏进程的读写缓存交换模块,从而写入所述共享内存中的;
工具栏画面绘制模块,用于根据当前运行为2D游戏引擎或3D游戏引擎,调用对应的2D游戏引擎贴图流程或3D游戏引擎贴图流程,以将所述读写缓存模块中的当前工具栏画面绘制到当前游戏画面上。
15.如权利要求14所述的双引擎游戏内置工具栏的装置,其特征在于,所述检测模块进一步用于:
在游戏进程运行时,通过实时检测游戏进程与工具栏进程之间创建的匿名管道中的状态ID来确定工具栏进程的当前状态;其中,所述状态ID由工具栏进程生成并送入所述匿名管道中。
16.如权利要求15所述的双引擎游戏内置工具栏的装置,其特征在于:
所述工具栏进程生成的状态ID为1时表示工具栏启动;
所述工具栏进程生成的状态ID为2时表示当前工具栏画面生成并写入所述共享内存中;
所述工具栏进程生成的状态ID为3时表示工具栏关闭。
17.如权利要求16所述的双引擎游戏内置工具栏的装置,其特征在于,所述装置还包括初始化模块,用于若所述检测模块实时检测游戏进程的输入管道中的状态ID为1时,则对2D游戏引擎贴图流程和3D游戏引擎贴图流程进行初始化。
18.如权利要求16所述的双引擎游戏内置工具栏的装置,其特征在于,所述初始化模块对2D游戏引擎贴图流程进行初始化操作包括:
通过APIHOOK技术,对2D游戏引擎原绘制流程进行修改,在绘制游戏画面前先跳转到执行工具栏画面的绘制,并在工具栏画面绘制完毕后再跳转回去执行游戏画面的绘制,从而得到所述2D游戏引擎贴图流程。
19.如权利要求16所述的双引擎游戏内置工具栏的装置,其特征在于,所述初始化模块对3D游戏引擎绘图流程进行初始化操作包括:
通过APIHOOK技术,对3D游戏引擎原绘制流程进行修改,在绘制游戏画面前先跳转到执行工具栏画面的绘制,并在工具栏画面绘制完毕后再跳转回去执行游戏画面的绘制,从而得到所述3D游戏引擎贴图流程。
20.如权利要求18或19所述的双引擎游戏内置工具栏的装置,其特征在于,
所述2D游戏引擎原绘图流程通过IDirectDrawSurface7::Unlock函数来实现游戏画面的绘制;
所述3D游戏引擎原绘图流程通过IDirect3DDevice9::Present函数来实现游戏画面的绘制。
21.如权利要求19所述的双引擎游戏内置工具栏的装置,其特征在于,所述装置还包括判断模块,用于:若当前调用的函数为IDirectDrawSurface7::Unlock,则判断当前运行为2D游戏引擎;
若当前调用的函数为IDirect3DDevice9::Present,则判断当前运行为3D游戏引擎。
22.如权利要求16所述的双引擎游戏内置工具栏的装置,其特征在于:
若所述检测模块实时检测游戏进程的输入管道中的状态ID为2时,则通知所述工具栏画面读取模块从所述共享内存中读取所述当前工具栏画面到读写缓存模块中。
23.如权利要求16所述的双引擎游戏内置工具栏的装置,其特征在于,还包括工具栏画面清理模块,用于:
若所述检测模块实时检测游戏进程的输入管道中的状态ID为3时,则清理所述写缓存模块中的工具栏画面。
24.如权利要求14所述的双引擎游戏内置工具栏的装置,其特征在于,所述工具栏画面绘制模块进一步用于:
将所述当前工具栏画面进行透视化处理后呈现在所述当前游戏画面上。
25.如权利要求14所述的双引擎游戏内置工具栏的装置,其特征在于,所述工具栏进程为直播工具栏进程。
26.如权利要求14所述的双引擎游戏内置工具栏的装置,其特征在于,所述检测模块进一步用于:在游戏进程运行时,以预设频率实时检测工具栏进程的当前状态。
27.一种终端,其特征在于,包括如权利要求14~26中任一项所述的双引擎游戏内置工具栏的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510919421.9A CN105354040B (zh) | 2015-12-10 | 2015-12-10 | 双引擎游戏内置工具栏的方法、装置及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510919421.9A CN105354040B (zh) | 2015-12-10 | 2015-12-10 | 双引擎游戏内置工具栏的方法、装置及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105354040A true CN105354040A (zh) | 2016-02-24 |
CN105354040B CN105354040B (zh) | 2019-05-17 |
Family
ID=55330016
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510919421.9A Active CN105354040B (zh) | 2015-12-10 | 2015-12-10 | 双引擎游戏内置工具栏的方法、装置及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105354040B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108446146A (zh) * | 2018-03-22 | 2018-08-24 | 北京奇艺世纪科技有限公司 | 一种游戏数据采集方法及装置 |
CN108595178A (zh) * | 2018-05-04 | 2018-09-28 | 武汉极意网络科技有限公司 | 一种基于hook的数据采集方法、装置及设备 |
CN109344126A (zh) * | 2018-09-12 | 2019-02-15 | 网易(杭州)网络有限公司 | 贴图的处理方法、装置、存储介质和电子装置 |
CN109725956A (zh) * | 2017-10-26 | 2019-05-07 | 腾讯科技(深圳)有限公司 | 一种场景渲染的方法以及相关装置 |
CN110691278A (zh) * | 2018-07-05 | 2020-01-14 | 武汉斗鱼网络科技有限公司 | 防止直播时外挂误判的方法、存储介质、电子设备及系统 |
CN112954020A (zh) * | 2021-01-28 | 2021-06-11 | 广州虎牙科技有限公司 | 游戏控制方法、装置、电子设备和计算机可读存储介质 |
CN113975801A (zh) * | 2021-11-09 | 2022-01-28 | 北京字跳网络技术有限公司 | 一种游戏控制方法、终端、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080001960A1 (en) * | 2006-06-29 | 2008-01-03 | Mediatek Inc. | Systems and methods for texture management |
CN103761123A (zh) * | 2013-12-31 | 2014-04-30 | 广州华多网络科技有限公司 | 功能启动方法、装置及终端 |
CN105069831A (zh) * | 2015-07-28 | 2015-11-18 | 广州爱拍网络科技有限公司 | 一种基于Hook技术获取OpenGL渲染画面的方法和系统 |
-
2015
- 2015-12-10 CN CN201510919421.9A patent/CN105354040B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080001960A1 (en) * | 2006-06-29 | 2008-01-03 | Mediatek Inc. | Systems and methods for texture management |
CN103761123A (zh) * | 2013-12-31 | 2014-04-30 | 广州华多网络科技有限公司 | 功能启动方法、装置及终端 |
CN105069831A (zh) * | 2015-07-28 | 2015-11-18 | 广州爱拍网络科技有限公司 | 一种基于Hook技术获取OpenGL渲染画面的方法和系统 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109725956A (zh) * | 2017-10-26 | 2019-05-07 | 腾讯科技(深圳)有限公司 | 一种场景渲染的方法以及相关装置 |
CN109725956B (zh) * | 2017-10-26 | 2022-02-01 | 腾讯科技(深圳)有限公司 | 一种场景渲染的方法以及相关装置 |
CN108446146A (zh) * | 2018-03-22 | 2018-08-24 | 北京奇艺世纪科技有限公司 | 一种游戏数据采集方法及装置 |
CN108446146B (zh) * | 2018-03-22 | 2022-03-08 | 北京奇艺世纪科技有限公司 | 一种游戏数据采集方法及装置 |
CN108595178A (zh) * | 2018-05-04 | 2018-09-28 | 武汉极意网络科技有限公司 | 一种基于hook的数据采集方法、装置及设备 |
CN110691278A (zh) * | 2018-07-05 | 2020-01-14 | 武汉斗鱼网络科技有限公司 | 防止直播时外挂误判的方法、存储介质、电子设备及系统 |
CN110691278B (zh) * | 2018-07-05 | 2022-02-22 | 武汉斗鱼网络科技有限公司 | 防止直播时外挂误判的方法、存储介质、电子设备及系统 |
CN109344126A (zh) * | 2018-09-12 | 2019-02-15 | 网易(杭州)网络有限公司 | 贴图的处理方法、装置、存储介质和电子装置 |
CN109344126B (zh) * | 2018-09-12 | 2021-11-30 | 网易(杭州)网络有限公司 | 贴图的处理方法、装置、存储介质和电子装置 |
CN112954020A (zh) * | 2021-01-28 | 2021-06-11 | 广州虎牙科技有限公司 | 游戏控制方法、装置、电子设备和计算机可读存储介质 |
CN113975801A (zh) * | 2021-11-09 | 2022-01-28 | 北京字跳网络技术有限公司 | 一种游戏控制方法、终端、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105354040B (zh) | 2019-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105354040A (zh) | 双引擎游戏内置工具栏的方法、装置及终端 | |
CN109698771B (zh) | 游戏服务器压力测试方法及装置 | |
CN104503783B (zh) | 一种呈现服务器硬件初始化程度的方法及服务器 | |
US10963365B2 (en) | System for testing command execution latency within an application | |
CN108339270A (zh) | 游戏场景中静态组件的处理方法、渲染方法及装置 | |
US11904238B2 (en) | System for testing command execution latency within a video game | |
CN107506293B (zh) | 一种软件性能数据采集方法和装置 | |
CN108654088B (zh) | 程序调试方法和装置、存储介质及电子装置 | |
CN111068326B (zh) | 一种游戏技能配置方法、装置、服务器及存储介质 | |
CN111714875B (zh) | 用于在视频游戏中测试命令执行延迟的系统 | |
CN111803934A (zh) | 游戏中角色卡牌的控制方法、终端、电子设备及存储介质 | |
WO2020247535A1 (en) | System and methods for generating a platform-agnostic game shortcut to launch a game for cloud gaming | |
KR20180102605A (ko) | 이미지 드로잉 방법, 관련된 디바이스 및 시스템 | |
KR20150036278A (ko) | 복잡한 줄거리을 보여주는 줄거리 명령을 실행하기 위한 방법 및 장치 | |
JP2017055910A (ja) | 情報処理装置、姿勢動作制御方法及び姿勢制御プログラム | |
EP2775414A1 (en) | Role clearing method, device and system for emulator game | |
CN113577766A (zh) | 对象处理方法及装置 | |
CN110141858B (zh) | 游戏中跳字的显示控制方法及装置、存储介质及电子设备 | |
JP2021098149A (ja) | ゲームプログラム、ゲーム方法、および情報処理装置 | |
CN107819947B (zh) | 画面显示方法及装置 | |
CN111617474A (zh) | 信息处理方法及装置 | |
CN111068315A (zh) | 一种帧同步问题的定位方法、装置及电子设备 | |
CN111714879B (zh) | 物理状态的更新方法和装置、存储介质、电子装置 | |
WO2024131264A1 (zh) | 一种图像渲染方法及相关装置 | |
CN112546638B (zh) | 一种虚拟角色切换方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |