Board logo

标题: 召唤sonic大神!md初代outrun和冲破火网的高速卷轴实现 [打印本页]

作者: 塔尔斯    时间: 2014-2-1 16:20     标题: 召唤sonic大神!md初代outrun和冲破火网的高速卷轴实现

国内国外资料都行,最好有实现的参考。
作者: SONIC3D    时间: 2014-2-2 00:51

这类游戏的效果分为几部分:
1.由远到近,物体由小变大的过程,通过这种近大远小模拟3D透视。
2.弯道的表现
3.起伏感的表现
注意,所有3个要素都和MD高速卷轴机能无关。

逐个分析这几点的实现:
1.近大远小的物体实现,这点是带来速度感的根源(只要由小变大变得快点就有速度感了)。但这个的实现方式是最简单的,就是在VRAM中预先存放同一物体在不同远近时的图案,然后在物体相对玩家距离到一定区间时选择一个对应大小的图案画到屏幕上的对应位置。同样,赛道本身的每一行像素的绘制,也会根据该行距离玩家的距离作缩放。
2.弯道的表现使用到了2D加速的游戏机图形硬件时代特有的扫描线偏移抽线功能。包括FC、MD、SFC、GB、PCE等等,那个时代的机器在描画每一行时都可以指定一个偏移量,以便使该行比原本该描画的位置偏左或偏右若干像素,想想一下,如果你把一个矩形的每一行都往左或往右偏移固定的1个像素,那么这个矩形就变成了平行四边形。而如果故意使偏移像素不均匀,那么就可以使这个矩形侧边变成曲线。这就是弯道描画在这类伪3D越肩视角赛车游戏中的实现方式。具体算法实例可以参考底下链接中7楼的文章。
3.起伏感,这点是赛车游戏速度感意外的刺激感的来源,起伏可以间歇使车辆遮挡部分前景,使前途短暂未知,考验玩家反应。对比FC上南梦宫那个著名的F1大赛车和Outrun或者川崎赛车,起伏感的作用可见一斑。这中效果的实现其实是给赛道进程加入一个高度值,根据玩家当前所处位置的高度和当前绘制行对应的赛道高度的比值作为这个扫描行的附加缩放值(基准缩放值就是第1点末尾说的根据距离缩放)。


附爱好者写的一篇相关文章,和实现算法(文中7楼):
http://www.gamedev.net/topic/373 ... acing-game-display/
另外,在《任天堂游戏编程探秘》有对FC的F1大赛车有原理实现和代码分析,PDF很好找不再提供,但是不推荐没有经验的人阅读,因为非常晦涩,不如上面那篇。



[ 本帖最后由 SONIC3D 于 2014-2-2 00:53 编辑 ]
作者: 逆鳞    时间: 2014-2-2 15:25

posted by wap, platform: Android

这位大兄弟的帖子总是这么专业.
作者: 一直都在胖    时间: 2014-2-2 15:40

posted by wap, platform: iPhone

大兄弟哈哈
作者: 塔尔斯    时间: 2014-2-3 07:48     标题: 回复 2# 的帖子

大神马年吉祥啊!还有上回你发过一个md忍无可忍手柄线联机的帖子,后来找不到了。内个论坛叫什么来着?
还有就是要查找一些游戏开发的技术资料的话,有没有什么国外常用技术论坛的索引?
作者: SONIC3D    时间: 2014-2-3 13:49

引用:
原帖由 塔尔斯 于 2014-2-3 07:48 发表
大神马年吉祥啊!还有上回你发过一个md忍无可忍手柄线联机的帖子,后来找不到了。内个论坛叫什么来着?
还有就是要查找一些游戏开发的技术资料的话,有没有什么国外常用技术论坛的索引?
http://www.sega-16.com/forum/showthread.php?2437-Zero-Tolerance-Link-Cable-Tutorial

索引全靠Google
作者: 茎钢扶撸娃    时间: 2014-2-3 21:43

posted by wap, platform: ZTE (U950)

感觉冲破火网那个地面是交替调色板变色+遮照体现速度感啊,不像是缩放!

本帖最后由 茎钢扶撸娃 于 2014-2-3 21:46 通过手机版编辑
作者: MegaDr    时间: 2014-2-4 00:17

posted by wap, platform: 小米

当年手机java时代的Asphalt也是这个技术




欢迎光临 TGFC Lifestyle (http://bbs.tgfcer.com/) Powered by Discuz! 6.0.0