客户端如何重复下载(客户端如何重复下载软件)

太平洋在线下载手机版 11 0

  原标题《<魂斗罗>中的角色,趴下的时候总是要「萝莉式屈腿俯卧」》,IT之家编辑酌情修改。

  游戏开发者胜勋作如下解释:

  FC的图形处理器(PPU)有如下的硬件限制:

  1、一帧画面的同一个横轴上,最多同时能渲染8个SPRITE。

  2、一个SPRITE为8x8 Pixel或者8x16 Pixel。

  所以,把角色尽量做成“上下长、左右短”的形状,才可以避免角色的闪烁现象。

  

  另外,“改成下蹲也可以减少活动块儿”,此话甚是啊。

  问题是,魂斗罗需要趴下来躲避横向飞过来的炮弹啊。

  如果把趴下改成下蹲的话,请看下图——

  

  大炮发出的绿色炮弹,能直接打在魂斗罗的脸上,死定了。

  所以魂斗罗必须趴下。要么直腿趴下狂闪烁,要么萝莉趴。

  有网友提到“不对吧,KONAMI的绿色兵团是直腿趴下的?”

  所以我也做了截图,请看下图——

  

  蓝人和红人,同时趴下,横面上又出现了3个小兵。

  蓝人问红人:你的头哪去了?

  红人回答说:FC同轴最多显示8个SPRITE,让我们一起闪烁吧

客户端如何重复下载(客户端如何重复下载软件)-第1张图片-太平洋在线下载

  于是乎,请接着看下面一系列的图——

  

  

  

  蓝人说:哎哟!我的脚哪去了?

  呵呵,这些图是连续的静态画面。

  实际游戏画面里是各个角色一顿轮番闪烁的。

  Thinkraft表示以上胜勋的答案说得不错。要继续补充一些额外信息。

  首先是关于活动块(Sprite)。

  为了最大限度利用资源、提升表现效果,2D卷轴时代的游戏机基本上都是背景+活动块+色盘的设计,我以前在《拳皇中的人物变色是如何实现的?- Thinkraft的回答》中提到过MVS的实现,这里说说FC的。

  由于PPU机能限制,FC每个水平扫描行只能显示8个活动块。

  FC的PPU运行频率是5.36MHz,输出256*240@60Hz画面。具体原理在维基百科中有很详细的介绍,我这里简单总结一下:

  每秒60帧,每帧渲染262行(其中240行输出可见图像,其余空闲时间用于写入显存数据),每渲染一行使用341个PPU cycle。其中每个背景块需要8个cycle处理;每行有32个背景块(256/8),因此光是背景处理就需要256个cycle;此外每个活动块也需要8个cycle处理,再扣掉预读下一行数据的时间,最后结果就是设计上只允许显示8个活动块。

  如果游戏在同一扫描线上存在超过8个活动块,多余的将不会被显示。

  一个可行的解决方案是利用人眼视觉暂留效果,使用Flicker(闪烁),即轮流显示这些活动块——同一帧内的静态图像还是只有8个,动起来就能看到全部了。

  程序员必须手动实现Sprite优先级的调整,以保证游戏效果——如果敌人的子弹总是隐形的,玩家就要摔手柄了。

  除了同屏活动块总数限制(64个)、同扫描行显示限制(8个)之外,还有一个重要限制是Palette(色盘)。

  

  FC定义了64个系统颜色,去掉不可用的和重复的是53个(也有说法是54或55)。所谓色盘,就是从这53个颜色中挑出4个,编上号,供图块使用,也就是说FC的每个色盘只有4色——实际上是3色,因为背景块的0号色必须是通用背景色,而活动块的0号色必须是透明。系统支持4个背景块色盘和4个活动块色盘。

  每个活动块只能使用一个色盘。换句话说, 单个活动块只能显示3种颜色。

  那么,来看看FC魂斗罗的图片吧:

  

  这个趴姿射击的图片,尺寸是32*16,总共用到了8个8*8的活动块(或者4个8*16,这里暂且认为是前者)。你可以清晰地看到,左半的4个活动块和右半使用了不同色盘,导致上臂部分都变色了。

  由于枪伸出太多,光是上半身就占用了一大半宽度。如果把腿放平,最少也要再加一个活动块才可以。

  再看看主角死亡时的图片:

  

  注意裤腰的位置,上半身只占了一小半宽度。于是这次终于有一条腿可以伸平了。另一条腿弯着可能是多少想显得立体一些吧。

客户端如何重复下载(客户端如何重复下载软件)-第2张图片-太平洋在线下载

  总之,我的结论和胜勋是相同的: 就FC魂斗罗而言,趴姿屈腿是为了节省活动块,不蹲是因为蹲下躲不过子弹。

  ——所以你看,这是画风问题(大误)。

  

  然后再说说题主编辑的关于角色尺寸的疑问「测量了一下发现人物卧姿长度有36个像素」。这个追问其实根本就是无效的——我这里严重怀疑题主的模拟器截图精确性,比如不小心拉伸了一下窗口导致画面变形之类的。

  

  续作中重绘了角色动作,下半身的取色也被调整了。然而整体宽度依然是32像素(4*2个活动块)。

  最后,问题并没有完全解决。因为以上说的都是FC版(1988)的情况,而魂斗罗原作是街机游戏(1987)。

  如图,原作中的趴下也是屈腿。

  

  本来想回答得更确切一些,但我并没有找到明确靠谱的关于这个机台的硬件信息。考虑到当年的游戏机画面原理大同小异,只是性能的区别(例如后来的MVS,同一水平线支持96个宽度为16像素的活动块),这个屈腿动作应该也是相同的原因。

  上图中角色的宽度是48像素,正好是8(或16)的整数倍。

  微信搜索“IT之家”关注抢6s大礼!下载IT之家客户端(戳这里)也可参与评论抽楼层大奖!

标签: 客户端如何重复下载

抱歉,评论功能暂时关闭!