📄 游戏开发中心----游戏实验室 - 博客园.htm
字号:
<BR> case WM_SETCURSOR:
<BR>
SetCursor(NULL); </FONT><FONT face=宋体
color=#808080>// 设定鼠标为不显示 </FONT><FONT face=宋体
color=#99ccff><BR> return TRUE;
<BR> case WM_KEYDOWN:
<BR> switch(wParam)
<BR>
{<BR> case
VK_ESCAPE: </FONT><FONT face=宋体
color=#808080> // 处理按下 ESC 键的反应 </FONT><FONT face=宋体
color=#99ccff><BR>
PostMessage(hWnd, WM_CLOSE, 0, 0); </FONT><FONT face=宋体
color=#808080>// 发送一个关闭窗口的命令 </FONT><FONT face=宋体
color=#99ccff><BR>
break; <BR>
}<BR> break;
<BR> case
WM_DESTROY: </FONT><FONT
face=宋体 color=#808080>// 在窗口即将销毁时的反应 </FONT><FONT face=宋体
color=#99ccff><BR>
PostQuitMessage(0); </FONT><FONT face=宋体 color=#808080>//
发送一个结束的消息,必须的! </FONT><FONT face=宋体
color=#99ccff><BR>
break;<BR> } <BR> return
DefWindowProc(hWnd, message, wParam, lParam); </FONT><FONT face=宋体
color=#808080>// 一些没有像上面一样具体定义的消息的处理 </FONT><FONT face=宋体
color=#99ccff><BR>} </FONT><FONT face=Arial><BR><BR> 这个函数就是用来处理 Windows
的消息的,是一个标准程序必要的。
<BR><BR> 再来最后一个重要的函数。不好意思哦,实在是不想这么写,但是想想,在这个函数结束后,你就可以实现一个具体的窗口了哦:)
<BR><BR></FONT><FONT face=宋体 color=#99ccff>int PASCAL WinMain(HINSTANCE
hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow)<BR>{
<BR> MSG msg; </FONT><FONT face=宋体 color=#808080>//
定义一个消息的对象 </FONT><FONT face=宋体 color=#99ccff><BR><BR>
if(!Init(hInst, nCmdShow)) return
FALSE;
</FONT><FONT face=宋体 color=#808080>// 还记得上面的那个函数吗?</FONT><FONT face=宋体
color=#99ccff> <BR><BR> while(1) </FONT><FONT face=宋体
color=#808080>// 程序的循环 </FONT><FONT face=宋体
color=#99ccff><BR> {
<BR> if(PeekMessage(&msg,
NULL, 0, 0, PM_NOREMOVE)) </FONT><FONT face=宋体 color=#808080>// 不要特别注意的
</FONT><FONT face=宋体
color=#99ccff><BR> {
<BR>
if(!GetMessage(&msg, NULL, 0, 0 ))
<BR>
return msg.wParam;
<BR>
TranslateMessage(&msg);
<BR>
DispatchMessage(&msg); <BR>
} <BR> else
if(bActive) </FONT><FONT face=宋体 color=#808080>//
就是上面的“程序是否激活”的变量判断 </FONT><FONT face=宋体
color=#99ccff><BR> {
<BR>
ShowThePic(); </FONT><FONT face=宋体 color=#808080>//
显示人物图片的函数,上节的内容,就是整合在这儿的! </FONT><FONT face=宋体
color=#99ccff><BR> }
<BR> else WaitMessage();
</FONT><FONT face=宋体 color=#808080>// 没有消息时,就等消息:) </FONT><FONT face=宋体
color=#99ccff><BR> } <BR>} </FONT><FONT
face=宋体><BR></FONT><FONT
face=Arial><BR> 其实到这儿,一个简单的程序已经可以出炉了:)编译,运行,你将看到一个黑色的窗口。这个窗口不同于一般的窗口,它没有平常的标题栏,这个才是适合我们游戏的。我在这儿给出完整的代码,但是,无法将上节的内容以程序的形式表现出来,因为涉及到了
DirectDraw 。我不想过多在教程中涉及未讲的知识,因为那样会影响对现有知识的理解。 <BR><BR> 下章教程,我将开始介绍
DirectDraw 了,以便能尽快将显示的内容整合,同时我会保持教程和代码的详尽。
<BR><BR>注:<BR> 本范例在以下环境中通过:VC6.0、DirectX 7.0/8.1 SDK、Win2000/WinXP
<BR><BR>附件:<BR> 说明 [<A
href="http://dev.gameres.com/Program/Abstract/Thinking/gpBase_sample1.zip">本篇的代码下载</A>]<BR></FONT></FONT><FONT
face=Arial><FONT face=Arial><FONT face=Arial
size=2><BR><BR></FONT></FONT><B><A name="四、游戏制作利器: 引擎 的选择">四、游戏制作利器: 引擎
的选择</A></B><FONT
size=2><BR><BR> 真的很高兴能够继续我们的教程。大家也一定等了许久了,怪我太懒。<BR><BR> 上次,我们讲到了窗口的建立,并且附带了源代码,不知道大家有没有编译和运行。不是当老师的唠叨哦,大家一定要试试的,因为电脑这个东西,尤其是编程,要不断地实践才能掌握的。<BR><BR> 今天,我们来点轻松的,不涉及代码,我们来一次“纸上谈兵”。我今天是要大家选择适合自己的游戏引擎。曾经有很多网友问我:“引擎
”到底是什么东西?我也回答过许多遍了,但是,我从没有嫌烦过,因为我也是这么过来的。之所以取名叫“引擎”,他就像汽车之类的 Automobile
一样,得有一个家伙驱使他工作。而游戏引擎呢,他就负责接受用户输入,交付自己的内部工作机构,处理,并最终以声音、图像等形式表现出来。<BR><BR> 现在大家在网络上可以看到、并且下载到许多免费的游戏引擎,其中有2D的,也有时下流行的3D。国内有许多网站也在制作各自的引擎,有个别的的确有很高的效率,而且使用很方便,比如
云风 的 “风魂游戏开发库”。这些引擎都是将我们今后会碰到的 DirectDraw、DirectInput、DirectPlay 等等
DirectX
部件整合,封装,使其便于使用。像我其实自己也在使用别人的引擎来开发自己的游戏制作库,那么,你该选择怎么样的引擎呢?我觉得这个完全取决于你对游戏开发的耐心及专研。<BR><BR> 现在,DirectX
已经发展到了 9.0 ,而且,在 8.1 的开发库中,我们很高兴的看到,微软也已经封装了以前繁琐的步骤,因此,DirectX 8.1b
的开发库,不失为一个比较好的基层函数库。为什么说他还只是一个基层的呢?因为他还没有像著名的 CDX 那样有比较高级的效果封装在里头。CDX
是我比较喜欢的封装库,他不仅使用简便,而且可以实现使用频率比较高的功能,比如 Alpha
混合,虽然他不像其他的引擎来得功能强大,但是,他用于自己的研究和扩充是很好的,通过使用 CDX ,你对 DirectX
可以有个比较理性的认识。<BR><BR> 到这儿,大家应该发现了,我们以前公布的教程目录和今天的对不上号,因为我发现现在其实有好多网站都有关于
DirectDraw 编程的辅导,而且,资源丰富。我相信,大家通过好好的分析这些代码,然后,大量的实践,就会打造你比较坚固的 DirectDraw
编程的基础了。<BR><BR> 我们今后的教程往哪个方向走,我正在考虑,我也很想看到大家的好建议,作为一个游戏编程入门者,你最想看到怎么样的文章?哪怕是一个不明白的地方,都可以提出来,我可以做专题来给大家讲解一下。DirectDraw
方面的,专题在近期是不会出现了,还请大家见谅!<BR><BR> 最后,告诉大家一个可能算是比较好的消息,我们的教程游戏,还在更新和完善之中哦...<BR><BR><BR>待续……</FONT></FONT></P></TD></TR></TBODY></TABLE></DIV>
<DIV class=postFoot>posted @ <A title=permalink
href="http://www.cnblogs.com/3vgame/archive/2006/04/10/371780.html">2006-04-10
23:47</A> 3vgame 阅读(1545) | <A title="comments, pingbacks, trackbacks"
href="http://www.cnblogs.com/3vgame/archive/2006/04/10/371780.html#FeedBack">评论
(9)</A> | <A
href="http://www.cnblogs.com/3vgame/admin/EditPosts.aspx?postid=371780">编辑</A>
</DIV></DIV><BR>
<DIV class=post>
<DIV class=postTitle><A
id=homepage1_HomePageDays_DaysList_ctl00_DayItem_DayList_ctl02_TitleUrl
href="http://www.cnblogs.com/3vgame/archive/2006/04/10/371779.html">角色扮演游戏引擎的设计原理
</A></DIV>
<DIV class=postText>角色扮演游戏引擎的设计原理<B><SPAN> </SPAN></B>
<P><SPAN><SPAN><B>
</B><B>郑州</B></SPAN><B> <SPAN>赵旺</SPAN></B></SPAN><B><SPAN> </SPAN></B></P>
<P><SPAN>角色扮演游戏</SPAN><SPAN>(RPG)</SPAN><SPAN>是深受广大游戏迷们喜爱的一种游戏</SPAN><SPAN>,</SPAN><SPAN>
</SPAN><SPAN>它以独特的</SPAN><SPAN>互动性</SPAN><SPAN>和故事性吸引了无数的玩家。它</SPAN><SPAN>向人们提供了超出现实生活的广阔的虚拟世界,使人们能够尝试扮演不同的角色,去经历和体验各种不同的人生旅程或奇幻经历。这些体验都是在现实生活中无法实现的。在玩过许多游戏后,许多玩家都不再仅仅满足于一个游戏玩家的身份,而会思考游戏是如何制作的,并且打算制作一个自己的游戏,网上的各种游戏制作小组更是如雨后春笋般涌现。下面我就给大家介绍一下角色扮演游戏引擎的原理与制作,希望能对游戏制作爱好者有所帮助。</SPAN></P>
<P><SPAN>一</SPAN> <SPAN>游戏引擎的原理</SPAN></P>
<P><SPAN>说到引擎,游戏迷们都很熟悉。游戏引擎是一个为运行某一类游戏的机器设计的能够被机器识别的代码(指令)集合。它象一个发动机,控制着游戏的运行。一个游戏作品可以分为游戏引擎和游戏资源两大部分。游戏资源包括图象,声音,动画等部分,列一个公式就是:游戏</SPAN><SPAN>=</SPAN><SPAN>引擎(程序代码)</SPAN><SPAN>+</SPAN><SPAN>资源(图象,声音,动画等)。游戏引擎则是按游戏设计的要求顺序的调用这些资源。</SPAN></P>
<P><SPAN>二</SPAN> <SPAN>角色扮演游戏的制作</SPAN></P>
<P><SPAN>一个完整的角色扮演游戏的制作从大的分工来说可以分为:策划,程序设计,美工,音乐制作以及项目管理</SPAN><SPAN>,</SPAN><SPAN>后期的测试</SPAN><SPAN>等。</SPAN></P>
<P><SPAN>策划主要任务是设计游戏的剧情,类型以及模式等,并分析游戏的复杂性有多大,内容有多少,策划的进度要多快等因素。</SPAN></P>
<P><SPAN>程序设计的任务是用某种编程语言来完成游戏的设计,并与策划配合,达到预期的目的。</SPAN></P>
<P><SPAN>美工主要是根据游戏的时代背景与主题设计游戏的场景及各种角色的图象。</SPAN></P>
<P><SPAN>音乐制作是根据游戏的剧情和背景制作游戏的音乐与音效。</SPAN></P>
<P><SPAN>项目管理主要是控制游戏制作的进程,充分利用现有的资源(人员,资金,设备等),以达到用尽量少的资金实现最大的收益。</SPAN></P>
<P><SPAN>后期的测试也是非常重要的一个环节,对于一个几十人花费几个月甚至是几年时间制作的游戏,测试往往能找到许多问题,只有改进程序才能确保游戏的安全发行。</SPAN><SPAN>
</SPAN></P>
<P><SPAN>由于文章主要是讲解游戏程序的制作的,所以</SPAN><SPAN>策划,美工,音乐制作等方面请读者参考其它文章,下面我就讲讲游戏程序的设计。</SPAN></P>
<P><SPAN>(一)<SPAN> </SPAN></SPAN><SPAN>开发工具与主要技术</SPAN></P>
<P><SPAN>1.</SPAN><SPAN>件开发工具</SPAN></P>
<P><SPAN>游戏程序开发工具有很多,在不同游戏平台上有不同的开发工具。在个人计算机上,可以用目前流性的软件开发工具,比如:</SPAN><SPAN>C</SPAN><SPAN>,</SPAN><SPAN>C++</SPAN><SPAN>,</SPAN><SPAN>VC++</SPAN><SPAN>,</SPAN><SPAN>Delphi</SPAN><SPAN>,</SPAN><SPAN>C++
Builder</SPAN><SPAN>等。由于</SPAN><SPAN>Windows</SPAN><SPAN>操作系统的普及和其强大的多媒体功能,越来越多的游戏支持</SPAN><SPAN>Windows</SPAN><SPAN>操作系统。由于</SPAN><SPAN>VC</SPAN><SPAN>是微软的产品,用它来编写</SPAN><SPAN>Windows</SPAN><SPAN>程序有强大的程序接口和丰富的开发资源的支持,加之</SPAN><SPAN>VC</SPAN><SPAN>严谨的内存管理,在堆栈上良好的分配处理,生成代码的体积小,稳定性高的优点,所以</SPAN><SPAN>VC++</SPAN><SPAN>就成为目前游戏的主流开发工具。</SPAN></P>
<P><SPAN>2.DirectX</SPAN><SPAN>组件的知识</SPAN></P>
<P><SPAN>谈到</SPAN><SPAN>Windows</SPAN><SPAN>系统下的游戏开发,我们就要说一下微软的</SPAN><SPAN>DirectX
SDK</SPAN><SPAN>。</SPAN></P>
<P><SPAN>Windows</SPAN><SPAN>系统有一个主要优点是应用程序和设备之间的独立性。然而应用程序的设备无关性是通过牺牲部分速度和效率的到的,</SPAN><SPAN>Windows</SPAN><SPAN>在硬件和软件间添加了中间抽象层,通过这些中间层我们的应用程序才能在不同的硬件上游刃有余。但是,我们因此而不能完全利用硬件的特征来获取最大限度的运算和显示速度。这一点在编写</SPAN><SPAN>Windows</SPAN><SPAN>游戏时是致命的,</SPAN><SPAN>DirectX</SPAN><SPAN>便是为解决这个问题而设计的。</SPAN><SPAN>DirectX</SPAN><SPAN>由快速的底层库组成并且没有给游戏设计添加过多的约束。微软的</SPAN><SPAN>DirectX</SPAN><SPAN>软件开发工具包(</SPAN><SPAN>SDK</SPAN><SPAN>)提供了一套优秀的应用程序编程接口(</SPAN><SPAN>APIs</SPAN><SPAN>),这个编程接口可以提供给你开发高质量、实时的应用程序所需要的各种资源。</SPAN></P>
<P><SPAN>DirectX</SPAN><SPAN>的</SPAN><SPAN>6</SPAN><SPAN>个组件分别是:</SPAN></P>
<P><SPAN>DirectDraw</SPAN><SPAN>:</SPAN>
<SPAN>使用页面切换的方法实现动画,它不仅可以访问系统内存,还可以访问显示内存。</SPAN></P>
<P><SPAN>Direct3D</SPAN><SPAN>:</SPAN><SPAN>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -