游戏框架的示例,我确实不知如何写才能引人入胜,因为它实在是一些框框条条的东西,并不像图形引擎哪样注重效果的表现,所以,希望读者能耐心地看完所有示例介绍,望能从中找到你需要的功能。
注:以下每个示例均基于上一示例基础上修改,为此,相同部分不再重复。
Sample01
简介:
Hello World!
该例范展示了OGF框架的最基本架构及如何基于OGF创建你的游戏项目,运行后会在屏幕中心显示一段经典的"Hello World!"字样。
1.创建一个window项目.
2.设置项目引用以下库文件(项目->属性->链接器->输入->附加依赖项),路径改为您的OGF目录下的LIB目录
../../lib/hge.lib
../../lib/hgehelp.lib
../../lib/ObjectComD.lib
../../lib/FrameComD.lib
../../lib/GameFrameD.lib
../../lib/ServiceEnginerD.lib
3.创建一个GameFrame类,使该类基于CGameFrameDlg类.(以后可重载该类的方法,以改变OGF框架的属性及流程)
4.创建一个MyGameBody类,使该类基于CGameBody类(此为您的游戏执行主体)
5.重载OnInitialize()方法(原型:bool __cdecl OnInitialize();)
6.在OnInitialize()方法内加入如下内容:
//如果没有自定义的流程规划,则系统需调用以下语句:
__super::OnInitialize();
//创建文本对象
CGameObjectText* pGOText = new CGameObjectText();
SIZE siSize;
POINT piPos;
siSize.cx = siSize.cy = 300;
piPos.x = 350;piPos.y = 300;
pGOText->Create("Text", siSize, "font1.fnt");
pGOText->SetText("Hello World!");
pGOText->MoveTo(piPos);
//添加文本对象至指定环节下的默认视图的默认场景的默认层下
m_pCurrentSection->GetGameView()->GetBy("default")->GetBy("default")->Add((IGameObject*)pGOText->QueryInterface(IID_IGameObject, VER_IGameObject), "Text");
return true;
7.在WinMain函数之上定义OGF框架的全局变量:theGame
extern GAME_FRAME_CLASS CGameFrameDlg* theGame;
8.在WinMain函数体内添加如下代码:(必须引用OGF框架的GameFrame.h和MyGameBody.h文件)
//创建GameFrame对象
theGame = new CGameFrame();
//创建自定义的游戏主体
CMyGameBody* pGameBody = new CMyGameBody();
//设置游戏主体的回调钩子
theGame->SetGameBodySink((IGameBody *)pGameBody->QueryInterface(IID_IGameBody, VER_IGameBody));
//启动框架
theGame->GameStart();
//注销框架(连带框架内管理的所有对象一起注销,所以游戏主体的指针不需要使用delete删除)
delete theGame;
return 0;
9.运行前确保拷贝以下DLL至项目输出目录
hge.dll
bass.dll
ObjectComD.dll
FrameCom.dll
ServiceEnginer.dll
ServiceEnginerD.dll
GameFrame.dll
10.确保以下资源文件在输出目录中
font1.fnt
font1.png
10.编译并运行项目
运行结果: