📄 g10.htm
字号:
<html>
<head>
<title>游戏制作</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">
<!--
body { font-size: 14px}
td { font-size: 14px}
a:active { text-decoration: none}
a:link { text-decoration: none}
a:visited { color: #FFFFFF; text-decoration: none}
a:hover { text-decoration: underline}
-->
</style>
</head>
<body bgcolor="#e8ffe8">
<br>
<table width="85%" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td>行军算法 <br>
我们在制作<官渡>时没有给士兵以一套完整的行军算法,让它去寻找一条到达目的地最 <br>
近的路线,而在<赤壁>里想做一下尝试。就自制了这样一套算法。首先找到一条直线,然 <br>
后围绕挡住这条直线的障碍物搜索一条可以行走的路线。说起来简单,做起来可很困难。 <br>
这部分代码写了大约有四五个月。 <br>
当然它也仍然有缺点,比如如果在路上的障碍物内部有空洞,那么就会卡住。但好在它 <br>
的速度还算可以,一百个人同时走路时才会感觉到一点停顿。 <br>
本来我们打算在<荆州>里有所改变的,我们采用了世界上比较流行的行军算法:A*算法 <br>
。并且为它专门制作了一套底层,使它可以挂在任何一个地图结构里。 <br>
有关内容请详见March_n.cpp。 <br>
<br>
为什么有数量限制 <br>
又回到了老生常谈的话题。编程序的人一看就可以知道,对士兵数量进行限止的唯一理 <br>
由就是没有使用链表。的确是我胆小的缘故。我没有在游戏的核心数据结构中使用链表, <br>
原因很简单,怕出错。我为每个游戏者开了200个单元的空间,也就是说每方游戏者都可 <br>
以制造200个士兵和建筑。我想这个数量应该是够了,因为如果真的每个游戏者都生产出 <br>
这么多数量的单元,游戏也跑不动了。 <br>
使用数组不仅出错的机会少一些,而且它对于查错也很有帮助。在我们的早期测试版中 <br>
,我让游戏每隔10轮就自动存一次盘。存盘的内容就是简单的把这些数组内的内容写到文 <br>
件中。如果程序跳出,马上调出存盘很快就会跟踪出错误的位置。后来,在<赤壁>标准版 <br>
发行后,也有玩家反映有异常退出的错误,我就让他们把存盘文件寄给我,我就能很快发 <br>
现问题。如果使用指针链表恐怕就没那么容易了,但也有一个好处。如果玩家玩出一个错 <br>
误,只要他再重新玩很可能这个错误就不出现了。 <br>
有关内容请详见CBCtrl.cpp。 <br>
<br>
镂空贴图 <br>
我估计有不少初学编游戏的人都会有这个疑问,如何让一个人出现在地形上而身上没有 <br>
黑边。要知道计算机的显示一般都是以矩形为单位的,一个边界不规则的图形该如何显示 <br>
呢? <br>
假如我们按点去操作,那么就可以判断如果人的图像上是黑色则跳过去,否则显示到背 <br>
景上。但是谁都知道这样是很慢的。于是我们想到了使用逻辑操作来贴图。我们有一个真 <br>
人的图像,边界是黑色的,我们叫源码。然后我们制作一个掩码,人的内部是黑色的实心 <br>
,外部是白色。然后我们做两次逻辑操作,先把人的掩码与背景做“与”操作,这样背景 <br>
就被扣出了一个黑色的轮廓,然后把人的源码与背景作“或”操作,人就呆在背景里了。 <br>
<br>
如果你看到我们的地图编辑器,就会发现我们就是这样做的。这是<官渡>的做法,在编 <br>
写编辑器时我还不会使用DirectDraw呢。但是在DirectDraw环境下,我想大家就可以省事 <br>
很多了,只要一个ColorKey的变量设置,DirectDraw就可以替你完成镂空贴图的操作。 <br>
从这里你也可以看到我们也许不会一开始就把游戏做好,但只要坚持下去,我们一定会 <br>
越做越好。 <br>
有关内容请详见DDApi.cpp。 <br>
<br>
<br>
2.5 希望 <br>
<br>
有人说即时战略游戏已经过时了,或者已经做到头了。我的观点截然相反。 <br>
我认为它是目前唯一能够胜任大规模集团作战的游戏类型,它所能够带给人的东西我 <br>
们还远远没有做到。我是很喜欢看电影的,尤其是战争电影,那些电影里的场面和效果在 <br>
游戏里出现了么?有,但是还远远不够。 <br>
我承认我们的制作能力与国外的水平还有很大的差距,但是即时战略依然会有它的发 <br>
展。 <br>
比如,即时战略已经开始慢慢向战棋式的战略游戏靠拢,采用多层战略地图,多级控 <br>
制的方式。这就是一个可能的发展方向。即时战略也可以不采用采矿的方式,而利用其它 <br>
(比如经营)方式来获得资源,这也是一个可能的发展方向。 <br>
我总是觉得,制作游戏就是在创造世界,虽然我们的这个世界还无法与真实的世界相 <br>
比。但是,只要我们做了,就会有进步,就会离梦想近一点,也许我等不到那一天,可是 <br>
也许某个看到我的文章的人等得到那一天,这我已经很高兴了。制作游戏的路刚刚开始, <br>
对于我们而言,我们希望能够继续做下去,可是上帝毕竟是广大的玩家,如果大家不认可 <br>
,那我们还是趁早改行为好。但我总是有些不死心,总希望能够有人坚持下来,如果这个 <br>
人不是我。我真心地希望能有更多的人了解游戏的制作,了解制作游戏的人,也希望有更 <br>
多的人加入到这个充满了艰辛的事业来。因为美好的明天需要我们去创造,我们为游戏付 <br>
出了很多,它也会同样地回报我们的。 <br>
<br>
<br>
<br>
以上内容仅是我个人的观点,如果有任何异议请与我联系,但是我不会与各位争论什 <br>
么,因为只有做才是最重要的。如果有什么问题,也可以来信,但是我可能不会很快或很 <br>
详细地回答,因为我现在正忙于制作新的游戏。 <br>
<br>
我的E-mail地址是liu-gang@263。net。 <br>
<br>
假如你已经整装待发,那么就开始吧,不要犹豫,人的一生只有一次,只要去生活就 <br>
是了。 </td>
</tr>
</table>
<p align="center"> </p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -