本文介绍在windows环境下使用C++编程语言,采用了MFC编程、HGE引擎等相关的核心技术,在网络环境下的美式8球游戏的设计思想和基于HGE引擎的实现方法。
0 引言
随着国内外的游戏产业的发展,3D游戏渐渐的成为游戏市场中的主流,但2D游戏基于自己的自身特点并没有推出游戏市场,反而在休闲游戏、网页游戏等领域广泛的发展。
台球又称桌球,传入中国后,伴随着经济建设的迅速发展,台球也和其他运动一样得到普及发展,游戏相对比较休闲且容易上手,是一个很适合年轻人和中老年人的休闲运动。因此,将台球实现为一款休闲网络游戏,则可以让更多人通过网络也可以感受到台球的趣味和魅力。
一、 系统分析与设计
(一)游戏规则分析
1. 球的种类
美式落袋的游戏中总共有 16 个球,分为两组,一组为全色球( 1~7 号),一组花色球( 9~15 号),以及一个黑色 8 号和一个主球。
2. 基本规则
每轮游戏开始后由投币决定哪方玩家开球,开球后,玩家轮流击球,第一个击入球的玩家所击入的球的种类决定了以后游戏中他所要击的球。当一个玩家把属于自己的一组球全部击入之后,并把黑色 8 号击入,则算胜利。8号球必须是最后打,如果不小心在本组的其他彩球全部打进前打进了8号球,那么这局游戏就算输了。
3. 自由击球权
若确定好了每个玩家要击球的花色后,若玩家击球时没有击打自己花色的球或自己花色的球已全部落袋未击打黑8时,玩家 属于击球犯规,另一玩家享有自由击球权,即可以将主球放置在台桌左边线内的任意位置击球。
(二)游戏整体设计
对于基于平台的游戏,将游戏整体设计为4个模块,每个模块协调运作从而实现和完成游戏的整体功能,具体的模块划分如下图:
图1.1 游戏整体设计的模块划分图
A.服务器客户端通信
作为基于游戏平台的网络游戏,多个客户端之间的信息传递是通过客户端与服务器通信完成的,服务器作为客户端之间的桥梁和控制中心,控制和协调客户端的工作和运行。
B.HGE引擎机制
游戏采用HGE引擎机制设计,就必须知道如何和怎样更好的将HGE加入到游戏框架中。
C.碰撞问题算法设计
作为一款台球游戏,关键的游戏运作机理和算法问题在于解决碰撞问题,同时这也是整个游戏设计的难点和重点。
D.图形界面渲染
在完成游戏逻辑设计的基础上,良好的图形界面渲染可以展示非常漂亮的游戏画面,使游戏更具有色彩效果和趣味。
二、系统实现中HGE引擎机制的分析和设计
在MFC应用程序中加入HGE引擎机制的流程图如下:
图2.1 MFC中加入HGE所需步骤的流程图
通过这几个步骤之后,就可以很好的运动HGE引擎机制,HGE提供了两个非常重要的函数,FrameView函数和RenderView函数,通过FrameView可以针对每一帧进行逻辑分析和处理,利用RenderView可以对每一次FrameView处理之后的逻辑帧进行渲染,完成漂亮的游戏界面显示。
客户端要加入HGE机制,首先必须通过客户端主窗口CGameClientDlg的初始化函数InitGameFrame来对HE进行初始化;
m_GameClientView.InitHge(m_hWnd);
该语句调用了m_GameClientView成员的的InitHge函数,通过InitHge函数来对HGE作具体的初始化;
m_pHge = hgeCreate(HGE_VERSION);
m_pHge->System_SetState(HGE_FRAMEFUNC, FrameView);
m_pHge->System_SetState(HGE_RENDERFUNC, RenderView);
m_pHge->System_SetState(HGE_SCREENBPP, 32);
m_pHge->System_SetState(HGE_HWNDPARENT, hWnd);
m_pHge->System_SetState(HGE_USESOUND, true);
m_pHge->System_SetState(HGE_FPS, 100);
m_pHge->System_SetState(HGE_HIDEMOUSE, false);
m_pHge->System_SetState(HGE_SHOWSPLASH, false);
if(m_pHge->System_Initiate())
{
m_pBtMgr = new CHgeButtonMgr(this);
m_pHgeSound = new CHgeSound(this);
OnInitHge();
m_pHge->System_Start();
//此处将HGE嵌入到MFC程序,通过定时器不停地启动HGE来实现HGE机制
SetTimer(1, 20, NULL);
}
这些代码实现了HGE指针的创建,并使用HGE指针通过System_SetState设置运行状态,接着调用了System_Initiate进行了初始化,最后启动了HGE并设置了定时器,通过定时器消息处理来不停地启动HGE引擎从而实现HGE即时帧渲染机制;
public:
// 绘制函数
bool RenderViewEx(void);
// 绘制函数
bool FrameViewEx(void);
通过CGameClientView中的FrameViewEx函数和RenderViewEx函数就可以对逻辑帧进行处理和对图形进行渲染了。
三、结束语
在中国游戏市场的反应来看, 2D游戏表现形式上休闲、轻松、愉快,并且对硬件和系统的要求低,适合大量的喜欢交友,休闲娱乐的人。因此,2D休闲游戏在中国的发展前景是良好的,为此2D休闲游戏开发技术是我们值得关注和思考的问题。本文论述了基于HGE引擎的美式8球游戏的设计与开发,重点讨论了HGE引擎机制在游戏设计中的运用问题。