三个多月前,我对 Isometric 的引擎有了些想法,当时在这里写了点点东东.(见 7月9日的 从 Isometric 谈开去) 关于传统的 Isometric 的文章一直没有写完,断断续续的想了很多,最近把我超越 Isometric 的构想理清了思路,发到清华大学BBS的游戏设计版 和中文游戏设计的 Mailist(这里订阅) 不少朋友给了我很好的建议.为了让更多的朋友一起来考虑这个问题,我把当时的原文附在下面, 至于朋友们的讨论,请去上面提到的相关位置可以查询到.近期我在实现这个引擎, 完成后在系统整理资料 ;-)




   From: Cloud <cloudwu@263.net>

     To: ch_gamedev@egroups.com

Subject: [ch_gamedev] Beyond Isometric Tile Engine

最近我一直在思考如何超越 Tile Engine 的问题. 这封信可能是我第三次公开讨论这个问题, 希望有人也对此感兴趣, 最好能解决我遇到的问题.

不能相信,现在许多的 RPG 还在使用矩形的 Tile Engine, 而我认为, Isometric 的视觉效果要好的多, 更接近 3D 视觉, 而不必使用象 3D 多边形,贴图,这些 3D 技术,从而是比较低档的机器上也能 有好的效果. 可以将省下来的 CPU 时间做更多 RPG 应该做的事 (比如增强 AI,或简单的使用软件 Alpha 混合增强视觉效果) 当然,另一个我不明白的时是, 新出的"西风狂诗曲"采用的并不高明的 Engine 却那么的慢,如果只因为它使用了一些 Alpha 混合技术和 64K 真彩的因素, 那么,在这个速度级别上,我下面讨论的超越 Tile engine 的想法,可能还不能在现在的机器上使用,当然,我想如果是我来设计上面那个游戏 的 Engine, 速度应该比现有的快 2 倍以上

下面进入正题

使用 Tile Engine 最大的毛病就是,屏幕物体都是一块一块以直角相连的, 无论你做的多精美,都和真实世界有很大的差距, Isometric 的要好点,他是 45 度角斜视的,但如果我们将其所表现的 map 从上往下看,还是 tile 的 比如,一个迷宫可能是这样的:

传统的 Tile Engine 中的地图 多死板呀, 如果不是迷宫,而是自然场景,那些房子,树,等都规矩的排放着,也太 假了吧?

为什么我们的场景不能是这样的呢? 自然的地图 一个由无规则的*凸*多边形组成的,由一个无规则的多边形包围着 (这里强调*凸*是为了减少设计的复杂度,使这个 Engine 不必用太多 3D 设计)

我的想法是,不用一个 2D 矩阵来存放场景,而用一个个物体本身的坐标的存放 由于物体的俯视图都是凸多边形的,就不会出现一个物体挡住另一个物体一半的情况 比如:

凹多边形的交错 这样我们就不能简单的先画墙,或先画物体,来得到正确的视野 当然这个问题是可以解决的 比如我们把半圆的墙分成两部分 凹多边形的切割 两个都是凸的,中间就可以夹个矩形了, 当然,靠墙的部分不能放物体

使用这样一个引擎,我们不必去以多边形为单位来画场景,只许多用位图就可以 而且可以获得较真实的视觉效果. 只需要在游戏制作中将所有的物体用 3D 方法制作成位图 (最好做俯视和45度斜视两个位图,一个用于游戏中,一个用于制作中) (如果用手绘可能难以把握)

游戏运行时不必处理许多多边形了 而且精灵的运动是任意方向的,不用局限在一个个格子里(这时,需要为 每个精灵设计好至少 8 个方向的运动画面)

我现在的问题是,还早不到一个好的方法,决定那个游戏表现的最终视角 上没个物体的先后次序, 我不想使用 BSP 树, 毕竟不用将每个物体的边界分解成一条条直线, 而且我说过,物体的边缘将是不规则的 而且我们也不必从任何视角观察物体,物体之间也是不相交或包含的 这个先后次序可以先算好,并最好将 XX 物体挡住了那些物体也算好,这样最终 处理,我想是很快的

云风 于1998.10.26


云风 草书于1998.10.29