App Game Kit(AGK)是开发C++游戏的商业编程工具,提供了支持标准游戏程序结构的编程模板。
AGK是英国软件公司Game Creators开发的商业编程环境,除了能开发Windows游戏,还支持为多种智能手机和平板设备开发游戏(其中包括ios、android、Windows、MacOS、Linux、html5和树莓派,详情可以访问官网:https://www.appgamekit.com/)。安装完App Game Kit的文件结构如下(AGK的版本为当前[10:02 AM 10/13/2018]最新的Win版本):
The Game Creator:
|—AGK2Trial
_____|—Projects
_____|—Tier1
_____|—Tier2
_____|—AGK2
_____|—uninstall.exe
这里只是列出了整个程序的一级目录,可以看出App Game Kit分为以下两个部分:
其它文件:
这里我们使用visual studio 2013 Tier2提供的C++库。虽然AGK是商业产品,但也有免费试用版本(即我们这里所使用的)但会在屏幕上显示水印。个人感觉AGK相对于其他可以使用C++开发游戏的引擎来说(如:Unreal、cocos2d-x和ORGE等)更轻量,并且更容易上手。下面我们先列出了工具清单,以避免因为工具版本不匹配的问题而瞎忙活,然后开始我们AGK的FirstProject!
1,操作系统Windows10
2,AGK [AppGameKitTrial-V2017.02.28-Windows]
3,IDE:visual studio 2013
首先我们需要使用AGK已经提供好的模板工程,然后在模板工程的基础上进行开发,在当前版本的AGK中,官方提供了的模板如下:
这里我们使用对应vs2013的工程模板。
然后我们执行下面的操作步骤:
1,将template_windows_vs2013这个工程文件拷贝一个副本作为自己的开发工程。
2,可以根据需要给此文件夹合适的命名,如这里我们使用FirstProject。
打开FirstProject的结构视图如下:
template_windows_vs2013:
|—Final
------|—(null)
|—Core.cpp
|—resource.h
|—template.cpp
|—template.h
|—Template.sln
|—Template.vcxproj
其中Final文件夹会存放最终生成的可执行程序(exe),其他的都是C++的模板代码,而我们自己的代码主要嵌入在template.cpp文件中。
3,用vs2013打开此工程,看起来会是下面这个样子:
4,将解决方案配置修改成Release。(一般默认是Debug,为什么需要修改成Release,我理解的是,在配置库目录的时候,当前版本只提供了Release版本的Lib,所以必须保持一致),可以参考下面的截图:
5,配置AGK模板工程所需要的包含目录和库目录,这里需要注意一点,我这里的路径只针对我AGK所下载的路径(也是AGK的默认下载路径,如果你在安装时修改的路径,那么这里所选择的路径也需要做出适当的修改以使编译器可以找到相应的头文件和库)
(1) 在选中当前工程的状态下,依次:项目->xxx属性->VC++目录。
(2) 在包含目录中下拉列表中选择编辑,添加如下目录:
C:\Program Files (x86)\The Game Creators\AGK2Trial\Tier 2\bullet
C:\Program Files (x86)\The Game Creators\AGK2Trial\Tier 2\common\include
(3) 同样在库目录中添加如下目录:
C:\Program Files (x86)\The Game Creators\AGK2Trial\Tier 2\platform\windows\Lib\VS2013\Release
(4) 至此,可以成功编译并运行项目,运行效果如下:
打印出了当前游戏程序的刷新帧速的FPS(frame per second)和一个试用版水印。
(5)如果在配置过程中遇到其他问题,可以在下面留言讨论。
1,典型游戏程序结构
几乎所有的游戏程序都包含以下三个阶段:
2,理解现有代码
有了上面典型游戏代码结构的知识,可以大致浏览一下template.cpp和template.h中的代码。抛开具体的细节可知,模板提供给我们的游戏框架如下:
而这些框架函数都是由一个程序对象管理。
3,嵌入自己的代码
通过上面的框架代码和游戏执行的流程,接下来我们尝试着添加自己的代码,你也许会说:Oh!这就开始coding了吗?我还没有学过,我连接本的API名称都不知道!不用担心我们可以边学边记,另外文章后面也会提供一些必要的资料。
我们也许会这样想,用户启动我们的游戏程序,我们的代码会像上面流程展示的那样:
begin------>loop(contuine…)-------->end
而在loop中,我们会一直渲染屏幕上的图像然后展示给玩家,如果现在我们想在屏幕上展示一些文本或者加载一个精灵图像,那也应该在loop中实现,毕竟我们不想让我们展示的内容一闪而过。
所以我们在loop中添加如下代码:
agk::Print("Hello App Game Kit!");
正如我们所想,我们的游戏程序会不断的在屏幕上渲染这行文本:
对于一个游戏程序,只有文本可远远不够,或许来个精灵是不错的主意:
agk::LoadSprite(1, "Sprites\\Monsters.png"); // 图片的位置FirstProject\Final\Sprites(Sprites为自己建立的文件夹,方便游戏中资源的统一管理
这次看起来才有些样子:
当然,这仅仅是AGK的冰山一角,大量有趣的游戏可以用AGK和C++创作,而且它们的性能也令人感到欣慰。希望这篇博客可以解决大家FirstProject中遇到的一些问题。
1,AGK的官网:https://www.appgamekit.com/
2,AGK试用版下载地址:https://www.appgamekit.com/trial
[注:此处填写邮箱,会收到下载链接,可能需要使用代理才可以下载]
3,AGK文档:https://www.appgamekit.com/documentation/home.html
4,《C++图形与游戏编程基础》配套资源:http://transbot.ys168.com/
5,我的下载链接[不需要代理]:
链接:https://pan.baidu.com/s/1meZHnAPTmtkoBllRRBN1Ww 密码:sa3q
structure:
resource.zip:
|—resource
--------|—FirstProject // 第一个工程
---------------|—Final
---------------|—xxxxx.h
---------------|—xxxxx.cpp
---------------|—……
--------|—install
---------------|—AppGameKitTrial-V2017.02.28-Windows.exe // AGK安装包
--------|—bookSourceCode.rar
--------|—C++游戏与图形编程基础 第二版.pdf
[注:图片及代码均来源于网络,仅供学习使用,商用请尊重正版!]
1,《C++图形与游戏编程基础》(第二版) Tony Gaddis
2,https://www.appgamekit.com/documentation/guides/20_windows.htm