游戏帮手开发平台是在对游戏辅助工具的特点和需求深入研究之后设计开发的,它的基本框架和应用模型可以很好的胜任目前绝大多数游戏辅助工具的需求,而可扩展可配置的特点也确保了它能很好的适应将来对辅助工具的新的需求。
在介绍游戏帮手的基本概念和组成之前,首先介绍一下对辅助工具的一般需求。
游戏辅助工具可能与其它普通程序有些不同。一般来说,它不能算是一个独立的程序,假如脱离了目标程序,即使它能独立运行,也似乎变得毫无意义。因为游戏辅助工具的目标基本上是依附于目标程序来工作的。
简单来说,游戏辅助工具的输入和输出对象都是游戏进程。
如果我们希望辅助工具代替重复的手工操作,如:鼠标点击和按键。辅助工具可以调用系统底层接口模拟按键或鼠标点击,也可以制造假的鼠标键盘事件输出给游戏。
举个例子:想象一个打怪的情景,假如F1是某个技能的快捷键,我们希望每2秒钟按一次F1施放该技能。这种情况下,辅助工具只需启动一个2秒钟的Timer,每次Timer到时,发出F1按键事件给游戏进程,游戏进程就会把施放该技能的命令帧发送给服务器,经过服务器处理后施放出技能。
但是,这个例子中的需求是非常简单的,它只要求间隔2秒无条件的按F1键。实际情况可能远比这个要复杂。例如,当人物的血量低于某个值时需要补血或者逃跑,当没有怪物时需要重新选怪或者停止打怪。这时,辅助工具就需要适时获取当前的游戏数据或状态,然后根据不同的状态,生成相应的策略,再对游戏进行操作和控制。
综上所述,游戏辅助工具需要攫取游戏进程(目标进程)的数据或状态,根据这些数据或状态,生成某种策略,从而对游戏进行控制和操作。
在图1的游戏帮手平台装配示意图中,描绘了GameBs开发平台的核心组件:

图1:GameBs平台装配示意图
对于图1,介绍几个GameBs开发平台的重要概念:
游戏帮手的一个重要特征就是可配置性和可扩展性。主控容器和嵌入容器可以通过安装不同的引擎扩展和定制功能。不同引擎之间是独立的,在平台层,并不要求一个引擎的运行需要另一个引擎的支持。
在GameBs开发平台中,主控容器和嵌入容器具有可装配性,运行在它们之上的引擎都是可以动态安装和卸载的。那么在一个具体的产品中如何配置平台所安装的引擎呢?
这个配置工作由GameBsPlatform.xml来完成,它是GameBs开发平台的配置文件。在这个文件中会指定:
每个基于GameBs开发的辅助工具都需要一个平台配置文件,在平台安装阶段,会使用这个文件装配主控容器,嵌入容器和相应的引擎。
下面的配置文件是在示例程序EngineCommDemo中使用的,
<?xml version="1.0" encoding="UTF-8" ?>
<Game-Baby-Sitter>
<Platform name="PlatformXXX" enable="true">
<HostContainer file="GmbsHostContainer.dll">
<Engine name="CollisionEngineA" file="CollisionEngineA.dll" autoinstall="true" />
</HostContainer><EmbedContainer file="GmbsEmbedContainer.dll">
<Engine name="CollisionEngineB" file="CollisionEngineB.dll" autoinstall="true" />
</EmbedContainer></Platform>
</Game-Baby-Sitter>
可以在这个文件中配置多个平台,但只能有一个激活平台,使用enable=true来指定。
引擎需要通过autoinstall=true配置为自动安装,否则即使配置到容器中,也不会在平台安装阶段自动安装该引擎。
在示例程序EngineCommDemo中装配的平台,引擎CollisionEngineA将会安装到主控容器中,而引擎CollisionEngineB则安装到嵌入容器中。