,技术理论   工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛,技术理论
您的位置:Yesky > 软件 > 开发者网络 > 正文
游戏开发新手入门之游戏的结构
[文章信息]
作者:ant3000
时间:2005-05-16
出处:编程论坛
责任编辑:方舟
[文章导读]
们最后拿出一点儿时间来学习一下游戏的结构,看看一个游戏最终是怎样由各个部分组成的
advertisement
热点推荐
· 图文详解:黑客入侵方式演示
· Java异常处理的陋习展播
· 多媒体系列教程:网页设计制作
· Powerpoint动画演示教程连载
· 光盘刻录手册:禁忌与技巧(下)
[正文]

1 2  下一页

  简介

  上一章的结尾,我曾经承诺将在本章教你写一个小的游戏引擎。但在结束上一章,然后我在考虑怎样更好的完成这个系列教程时,我感到这并不是一个好主意。让我告诉你我的真实想法。

  有几次,我曾经间接或直接的提到你不能象在DOS模式下一样编写你的Windows程序,你必须组织好每一件事。因为全部的主循环在每一帧至少要被执行一次,所以你千万不能漏掉对Windows发给你的每一个请求的跟踪。

  现在,你可能对我以前给你的Demo代码了解了一些,但你可能还没有把它扩充为一个大个儿的游戏程序,或者你还没有开始根据本教程系列编写自己的游戏,太好了!?现在,在我教你具体怎样编程前,我得出了一个结论,就是——现在,我们最后拿出一点儿时间来学习一下游戏的结构,看看一个游戏最终是怎样由各个部分组成的。

  本章不同于以往,你将很少看到程序代码,所以,哈哈,如果你对前几章关于DirectDraw的部分还不是很明白,或者还有一些其它的事不是很清楚,不要紧,因为我们要先暂停一下前面的部分,开始一个新的话题。你只需要了解一些Windows编程的知识,所以看过或了解第一、二章的内容就可以了。

  还有一件事情我要说一下:对于本章以及后面的一些章节,我都将以Terran(地球人)这个小游戏为蓝本讲解,所以你最好下载这个Demo来更好的理解我所要讲的。目前的版本一,可能不能满足所有的显示卡,版本二出来后可能会好些(已经完成)。废话不说了,让我们开始吧

  概览

  在开始编程前,你应该对你的游戏逻辑和具体操作方式有一个详细的方案。这将保证你在实施代码编辑时,不会出大的过错。否则,随着代码的编写,你本来清晰的思路会被意料外的问题和更新的创意搞得乱七八糟,最后使你自己都迷失在自己的代码中了。相信我,我是有惨痛教训的。

  你应该从WinMain()函数着手,它是程序开始的地方。这一点你可能认为理所应当,但是很多人从编写退出程序,或者从编写冲突检测函数,或者一些其它的细节处入手,而不是从WinMain()处开始,这是一种倒序的编程方法。对于初学者,理想的顺序还是从头到尾的正序方式。你首先应该从主函数开始,然后在主函数里调用每一个子函数,以及处理一些其它的事情。这样做,至少有两个理由:

  第一, 每一件事情都可以立竿见影。如果你从细节函数开始编写,你很难检测和实时演示这些函数的功能,因为你的主环境还没有构造好(编写好)。另一方面,如果你按照从头到尾的正序编写程序,你可以随时随地检测你编写的结果。先有主干,再一步一步的添枝加叶,完善程序,你的游戏就会从开始走向完成。

  第二, 有步骤的完善你的游戏。如果你先从细节函数着手,很有可能在稍后你有了新的想法或又想添加一点儿功能,于是,你又写了另一个细节函数,最终,乱糟糟的一堆函数,你都分不清应该先调用哪个,后调用哪个。所以,最好的办法是,从简单到复杂一步一步的添加,条理清晰。我想你已经理解我的意思了,就不多说了。

  我在Terran中所做的是先把主程序分成五个部分,然后每一个部分按照从头到尾的方式设计。其中四个是实际的游戏内容:卷轴引擎,脚本引擎,战斗引擎和菜单系统。第五部分就是利用Windows和DirectX使它们按照我的想法运转起来,这包括初始化、退出和从全屏模式变为Windows模式。游戏的四个部分的每一个部分都由多种函数完成,我将稍后详细介绍它们,所以你可以清楚的看到每一部分是怎样有机的组合的。希望真正的给你启迪,并且我将尽量说得清楚详细,使你更好的理解。

  实例:Terran

  从Initialization(初始化)开始,也就是WinMain()中首先要调用的部分。当然,现在表中的描述很简单,实际上有好多函数会在初始化阶段被调用。我没有详细的列出所有的函数,原因是那样做后,你将根本无法看明白。^_^ 你当然已经很熟悉这些DirectX和Windows的函数——它们建立窗口,还要用到DirectX的接口。还有很多接口我们还没有学习到,但是这对于本章并不重要,我们将随用随学。这个Load Game Data(读取游戏数据)部分将从外部文件读取所有的有用信息,包括:游戏中可利用的分类数据,脚本引擎要操作的数据,图形系统数据,等等。

  初始化部分的最后一件事情,调用一个游戏真正开始的脚本。Terran中,几乎每一部分都是由脚本引擎操控的。我将稍后详细介绍它。我将会在本系列教程安排一章来专心介绍怎样为你的游戏创建一个基础的,十分有用的脚本引擎。

  初始化完成后,程序进入主循环(Main Loop)。主循环将在你玩儿完游戏或你退出游戏后停止。在表中,你可以看到每一次循环都经历4个基本步骤。

  第一步,启动输入设备驱动程序。在Terran中,有两种输入设备(也就是操纵游戏的工具),键盘和游戏棒。它们都具有同样的两种功能,一个是检测当前的移动状态,一个是检测是否有即时的按键按下。第一种是持续的按键,例如人物在地图上的移动,第二种检测是否有突发的事件,例如进入了菜单选项。

  第二步,主循环装载音乐平台。基本上,载入音乐平台所做的就是在游戏进程没有结束前,播放音乐,然后根据不同的场景,选择相应的音乐。不用担心具体的细节——我们将会对音乐部分有一个专题讲解。

  第三步是最重要的一步:主循环在此被分成了五个部分,地图部分、菜单系统、战斗系统、脚本和结束部分。字面上你可以大概的了解每一部分的功能。在图标中你可以看出,只有结束部分(Shutdown)是单独存在的,没有其它的子系统,一旦它被调用,ok,一切都将结束。其它的四个部分还需要费一点儿口舌。

  这四个部分都有自己的子部分,在图上你一眼就能看出来。每一部分【例如:WorldMapMain()】都先完成该部分的通用功能,然后就进入分支子部分,完成具体的功能。有些时候,这些子功能通过if或switch就可以实现,但有些时候必须把子功能做成相应的函数来调用。


1 2  下一页

发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
,技术理论相关内容,技术理论焦点新闻
  • 游戏开发新手入门之位图化图形
  • 游戏开发新手入门之DirectX入门
  • 游戏开发新手入门之跟踪窗口和使用GDI
  • 游戏开发新手入门之Win32程序资源
  • 初学者的福音:游戏开发新手入门指南
  • FVD刺激高清碟机加速商业化 抢占商机最重要
  • 3家搜索引擎集体诉讼8848 吕春维未敢出席
  • 杨元庆:没有准备不会获批的备用方案
  • 军队信息化诞生新领域 电子军务呼之欲出
  • 世界经济论坛公布信息化程度全球最新排名
  • 2004政务绩效评估:政府门户尚处于发展阶段
  • 甲骨文出资5.15亿美元 意图收购RetekInc
  • 技术并购:帮你突破传统增长的“天花板”
  • ,技术理论Advertisement

    天极无线
    经典名曲 华语流行 欧美风情 人声音效 原声大碟
    你好周杰伦-安又琪
    直线-张韶涵
    天边-张韶涵
    看我72变-蔡依林
    乱世佳人-Twins
    全世界下雨-张娜拉
    我们的爱-飞儿乐队
    分手快乐-梁静茹
    爱在西元前-周杰伦
    三万英尺-迪克牛仔
    爱如潮水-张信哲
    爱情宣言-齐秦
    寻找玛依拉-刀郎
    驼铃-刀郎
    老鼠爱大米-杨臣刚
    功夫主题曲
    仙剑主题曲杀破狼
    天下无贼片尾曲
    冲动的惩罚-刀郎
    情人-刀郎
    爱情-莫文蔚
    挪威的森林-伍佰
    奔跑 - 羽泉
    因为爱 - 羽泉
      ·时尚女人圈
    ·经典影视专集
    ·美女秀场
    ·美丽大自然专题
    ·流行金曲
    ·科幻电影特区
    | 最新推荐
    ·你好周杰伦
    ·杀破狼
    ·寻找玛依拉
    ·孤单公园
    ·男人海洋
    | 魔术铃声
    ·少女丰胸
    ·少妇丰胸
    ·减肥魔铃
    ·增高魔铃
    ·美容魔铃

    今日报价查询 更多报价