设为首页 加入收藏 网站搜索 繁體中文 中国建站网 — 站长资源分享平台

[翻译]Flash区块游戏开发

来源:136z.Com 作者:佚名 时间:2006-03-14 11:47:36

TileBased Game Develop 区块游戏开发

原文地址: www.tonypa.pri.ee/tbw/index.html


作者: Tony
翻译: MoonFun.qhwa

欢迎

这是用Macromedia Flash制作区块游戏(tile based games)的教程。这些教程很大部分是在OutsideOfSociety的基础上写的,有时间就去看看吧,他们是你能找到的最好的教程之一。

这些教程需要你知道一些actionscript和Macromedia Flash的知识。如果你以前没有做过任何游戏的话,可能看起来有些吃力。而且由于我的英语不是很好,可能会有些错误,或者某些地方解释得不是很清楚。很抱歉,我尽力了。如果你找到一些bug或者错误,请告诉我。

我使用Flash 5制作代码和源文件,主要是我习惯了Flash 5,顺手罢了。这些代码和源文件在Flash MX(6)中也可以很好地运行,没有问题。Flash MX 2004(7)和as2不兼容旧的actionscript,所以代码可能会出错,也有可能会很好,但是通常来说,如果你真的使用AS2,你应该自己利用OOP重新一遍代码。这些原理,当然了,你仍然可以使用,所以这些教程还是值得一看的。

这里用到的实例代码和源文件都是免费的。你可以任意修改,按你自己的意思使用。

希望有人可以从这些教程中得到帮助
谢谢
为什么用方块?

在开始埋头编写代码之前,让我们稍微谈谈区块/方块游戏(tile based games)。为什么要使用方块?是区块游戏更容易制作吗?或许还是他们比基于艺术的游戏(art based games)更复杂?Flash适合区块游戏吗?

在很久很久以前,方块技术已经被应用到游戏制作中。那时候,电脑还没有上GHz的cpu,没有上百MB的内存。缓慢的速度、有限的内存意味着,游戏制作者不得不使用他们的脑子来发明聪明的办法,让游戏看起来更棒,而且更快。

比如,你想在你的游戏中加入漂亮的背景,但是图片太大了,而且使得你的游戏变得很慢。怎么办?把图片切成方块!

click for full size

在上图中,你可以看到图片的某些部分是完全一样的。1和4是一模一样的,2和3是一样的,5到9都是完全一样的。如果你把图片切割开来,重复使用相同的部分,你就已经在应用方块了。这个大图片比方块的文件大小大多了。实际上,你用4块不同的方块就可以画出了这个图片。

方块还有其他一些不错的特性,当你想要替换部分背景,那么你不需要重新绘制所有的东西,你只要改变1个方块就行了。你还可以重复使用方块,创建不同的对象。比如,你可能有草地的方块,还有花的方块,当你需要在草地的背景上放几朵花时,只需要把原来地方的草换成花就行了。

Flash 和方块

我们都知道,Flash是基于矢量的,所以Flash生成的文件体积更小,而且可以无限缩放。因此,我们一点都不需要方块来制作游戏吗?好吧,用Flash你可以很容易地做一个基于艺术的游戏(art based games),但是当你的游戏区域增大时,或者你想要更多的特性时,你可能会遇到麻烦。许多东西用区块游戏来做是如此简单(立体视角,寻找路径和深度排序)。不要忘记,区块游戏已经存在了很长一段时间,许多理论对于Flash来说依然适用。

用Flash做区块游戏也有不太舒服的地方,我们用不上许多绘图功能和时间线的部分,我们的游戏是通过actionscripot制作的,基本上,我们要写大量的代码来创建、移动、修改舞台上的图片。

用位图作为区块也是一个好主意。是的,我们可以在Flash中绘制所有的东西,用矢量图也可以,但是当游戏运行的时候,播放器需要计算屏幕上的矢量数据,我们可不希望有什么东西弄慢了我们的游戏。位图在播放以前是预先渲染的,而且通常情况下他们更好看。如果你想在Flash中导入位图作为方块,通常最好的做法是把图像存为带透明背景的GIF文件(用于各种对象,比如花等)
枯燥的讲话到此结束,让我们做点东西吧
首先,我们来看看怎样存储我们的地图。

地图的格式

我们将用Flash提供给我们的一个美妙的格式表示地图:数组。如果你不知道什么是数组,打开Flash的帮助,先看看。

二维数组



我们需要一个二维数组表示地图,不,他不是什么空间、时间的维数,它是说一个数组的每一个元素还是数组。迷惑了?让我们来看看。

通常,这是大家经常看到的简单的数组:
myArray=["a", "b", "c", "d"];

这很简单。你可以用myArray[0]得到第一个元素,就是”a”,用myArray[1]得到第二个元素”b”,等等。
现在换个聪明的法子! 如果我们不用”a”,”b”和”c”放在数组中,但是我们把另外的数组放进去呢?是的,我们可以这么做的。看这里,让我们做个这样的数组:
a=["a1", "a2", "a3"];b=["b1", "b2", "b3"];c=["c1", "c2", "c3"];myArray=[a, b, c];

现在我们已经定义了一个数组,而且他的每一个元素都是数组。那么,myArray[0]的值现在就是一个数组 [“a1”,”a2”,”a3”],第二个元素值就是 [“b1”,”b2”,”b3”],等等。如果你这样写:
myVar=myArray[2];

那么myVar得到的值是 ["c1", "c2", "c3"].
OK,那又怎么样?现在你也许会问。我们不会停止在这里的。如果你这样写
myVar=myArray[2][0];

那么他得到的值就是myArray第三个元素的第一个元素的值”c1”。
让我们试试更多的。
myVar=myArray[0][1]

取得myArray的第一个元素(a)的第二个元素(”a2”)。
myVar=myArray[1][0] 得到值”b1”
你想得到整个图片? 继续看……

创建地图

首先我们写出这个地图的数组,这个数组包含了每个方块的信息

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15]  下一页

Tags:

  • 好的评价 如果您觉得好,就请您
      0%(0)
  • 差的评价 如果您觉得差,就请您
      0%(0)
  • 相关文章
    广告赞助

    文章随便看看 设计素材 建站学院 网页模板 视频教程

    网友评论

    共有 0 位网友发表了评论,得分 0 分,平均 0 分    查看完整评论

    用户名: 查看更多评论

    分 值:100分 85分 70分 55分 40分 25分 10分 1分

    内 容:

             通知管理员 验证码: