现在的bleo et violette官网0 07 平台官 网上是否能玩街机移植过来的游戏的吗?

&figure&&img src=&https://pic1.zhimg.com/v2-d9cabecdd92bd9fac735101cbd20b03b_b.jpg& data-rawwidth=&818& data-rawheight=&525& class=&origin_image zh-lightbox-thumb& width=&818& data-original=&https://pic1.zhimg.com/v2-d9cabecdd92bd9fac735101cbd20b03b_r.jpg&&&/figure&&p&&/p&&p&最近在油管上发现一位很有意思的视频博主,名叫“&b&Squirrel Monkey&/b&”。其对上世纪八九十年代的计算机软件风蜜汁钟爱,于是模仿那个年代的风格自制了一档视频节目:&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-df2c15e35a203dcbf53debc5_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&500& data-rawheight=&334& data-thumbnail=&https://pic1.zhimg.com/v2-df2c15e35a203dcbf53debc5_b.jpg& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&https://pic1.zhimg.com/v2-df2c15e35a203dcbf53debc5_r.jpg&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&&b&然后每期节目会肆意畅想如果&u&维基百科、脸书、油管、Pinterest等当下热门的互联网产品&/u&生在那个年代,会被设计成什么模样:&/b&&/p&&p&&br&&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-5146018dac743e4d07518_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&610& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic4.zhimg.com/v2-5146018dac743e4d07518_r.jpg&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&&b&比如愤怒的小鸟。&/b&&/p&&p&大概会从扁平风变为大颗粒像素:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-757a28a026ad_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&500& data-rawheight=&315& data-thumbnail=&https://pic4.zhimg.com/v2-757a28a026ad_b.jpg& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&https://pic4.zhimg.com/v2-757a28a026ad_r.jpg&&&/figure&&figure&&img src=&https://pic4.zhimg.com/v2-16646fd3eec1805f5baae9f3d511ccc6_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&500& data-rawheight=&313& data-thumbnail=&https://pic4.zhimg.com/v2-16646fd3eec1805f5baae9f3d511ccc6_b.jpg& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&https://pic4.zhimg.com/v2-16646fd3eec1805f5baae9f3d511ccc6_r.jpg&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&庆祝“干的漂亮”时一定要闪瞎双眼:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-50b60d72cee380fc6cfe408cae950e56_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&500& data-rawheight=&309& data-thumbnail=&https://pic1.zhimg.com/v2-50b60d72cee380fc6cfe408cae950e56_b.jpg& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&https://pic1.zhimg.com/v2-50b60d72cee380fc6cfe408cae950e56_r.jpg&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&&b&比如Facebook。&/b&&/p&&p&开篇一定要解释下“地球村”的概念:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-1493aed0f1ebc9423ecc_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&500& data-rawheight=&312& data-thumbnail=&https://pic1.zhimg.com/v2-1493aed0f1ebc9423ecc_b.jpg& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&https://pic1.zhimg.com/v2-1493aed0f1ebc9423ecc_r.jpg&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&简单的个人主页总觉得“加载待完成”:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-74eddabfe43eec78d952ba_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&500& data-rawheight=&330& data-thumbnail=&https://pic3.zhimg.com/v2-74eddabfe43eec78d952ba_b.jpg& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&https://pic3.zhimg.com/v2-74eddabfe43eec78d952ba_r.jpg&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&&b&比如维基百科。&/b&&/p&&p&如今依然简陋的Wiki,那时更“磕碜”:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-49f799a3d750dd7badc714d2_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&500& data-rawheight=&311& data-thumbnail=&https://pic2.zhimg.com/v2-49f799a3d750dd7badc714d2_b.jpg& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&https://pic2.zhimg.com/v2-49f799a3d750dd7badc714d2_r.jpg&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&&b&比如比特币。&/b&&/p&&p&既然是币,那形象一定要有魔性金属感:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-ed1cfeef83c38c44398bc41e_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&500& data-rawheight=&309& data-thumbnail=&https://pic1.zhimg.com/v2-ed1cfeef83c38c44398bc41e_b.jpg& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&https://pic1.zhimg.com/v2-ed1cfeef83c38c44398bc41e_r.jpg&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&讲解新新事物,要有那年代独有的PPT风:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-efa02a99dda9edb98e46b2a728f8393c_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&500& data-rawheight=&385& data-thumbnail=&https://pic1.zhimg.com/v2-efa02a99dda9edb98e46b2a728f8393c_b.jpg& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&https://pic1.zhimg.com/v2-efa02a99dda9edb98e46b2a728f8393c_r.jpg&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&Squirrel Monkey就像一位穿越到21世纪的“怀旧型产品经理”。两周前,其发布了新作品,这次脑洞的是&b&《20世纪80年代的Siri》&/b&:&/p&&p&&br&&/p&&a class=&video-box& href=&https://link.zhihu.com/?target=https%3A//www.zhihu.com/video/902976& target=&_blank& data-video-id=&& data-video-playable=&true& data-name=&& data-poster=&https://pic1.zhimg.com/80/v2-35e12fd15a6ea011cc740c_b.jpg& data-lens-id=&902976&&
&img class=&thumbnail& src=&https://pic1.zhimg.com/80/v2-35e12fd15a6ea011cc740c_b.jpg&&&span class=&content&&
&span class=&title&&&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://www.zhihu.com/video/902976&/span&
&p&&br&&/p&&p&视频中的Siri似乎被刻画成了女性形象,只是选择的示范音一点也不志玲姐姐...&/p&&p&&br&&/p&&p&倒是...很...志伟风...&/p&&p&&br&&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-e4ef49b3dc1bb_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&466& data-rawheight=&204& data-thumbnail=&https://pic3.zhimg.com/v2-e4ef49b3dc1bb_b.jpg& class=&origin_image zh-lightbox-thumb& width=&466& data-original=&https://pic3.zhimg.com/v2-e4ef49b3dc1bb_r.jpg&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&不过,作为一个六年只更新了36个视频的博主(且上一次更新是十个月前),为何这次推了Siri呢?咳咳,其实Siri君相当有故事!趁此机会小编给大家八一八。&/p&&p&&br&&/p&&p&&br&&/p&&p&&b&Siri的真声究竟是谁?&/b&&/p&&p&&br&&/p&&p&初代Siri的确是一名女性。&/p&&p&&br&&/p&&p&故事要从2005年的夏天说起...&/p&&p&&br&&/p&&p&当时,美国女配音员Susan Bennett因机缘巧合参与了ScanSoft公司的一个录音项目,每天会花四个多小时来完成录音任务,例如不断、反复、流畅的朗读英文短语和句子等。&/p&&p&&br&&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-edfcbe5a0da4_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&300& data-rawheight=&300& class=&content_image& width=&300&&&/figure&&p&&br&&/p&&p&据说是Susan Bennett年轻时的照片&/p&&p&&br&&/p&&p&本以为只是一个小项目,Susan当时倒也没放在心上,直到2013年9月,&i&The Verge &/i&网站的一篇文章爆料:“Siri其实是有真人原声的,出自一位名叫Allison Dufty的女配音员”,才让人们关注起#Siri真声#这个话题。&/p&&p&&br&&/p&&p&但Allison很快便在个人博客上进行了澄清:“自己真的不是Siri的配音员”。&/p&&p&&br&&/p&&p&后来,一封来自好友的邮件让Susan惊讶的发现:&b&自己多年前的录音,竟成了大名鼎鼎的Siri&/b&!于是,在乌龙报道后不久,Susan接受了媒体的采访,公开承认:I'm the original voice of Siri。&/p&&p&&br&&/p&&p&虽然苹果方面没有回应,不过音频取证专家Ed Primeau经过对音频进行比对和分析后,倒也确认了Susan百分之百就是Siri本Si了。&/p&&p&&br&&/p&&p&自此,Susan Bennett成了美国人公认的“&b&美版Siri原声&/b&”。放段视频,感受下Siri的问候:&/p&&p&&br&&/p&&a class=&video-box& href=&https://link.zhihu.com/?target=https%3A//www.zhihu.com/video/504192& target=&_blank& data-video-id=&& data-video-playable=&true& data-name=&& data-poster=&https://pic2.zhimg.com/80/v2-eb27e6c2b27c667eb0d5eb251f670e25_b.jpg& data-lens-id=&504192&&
&img class=&thumbnail& src=&https://pic2.zhimg.com/80/v2-eb27e6c2b27c667eb0d5eb251f670e25_b.jpg&&&span class=&content&&
&span class=&title&&&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://www.zhihu.com/video/504192&/span&
&p&&br&&/p&&p&当然,后续增加的多种语言(及方言)版本,也是在不同配音员的协助下完成的。&/p&&p&&br&&/p&&p&&br&&/p&&p&&b&蠢哭你的Siri,其实大有来头!&/b&&/p&&p&&br&&/p&&p&为什么苹果当时没有对Susan的声明做回应?大概是因为...自己也不知道吧,毕竟Siri项目并非苹果公司的“亲儿子”,而是后期收购。 &/p&&p&&br&&/p&&p&尽管多数人都吐槽过Siri并不好用,甚至将其从“人工智能”贬为“人工智障”,但实际上早期Siri的研发,可谓是大有来头,别的姑且不说,那给它投钱的大佬,可是&b&美国国防部&/b&!&/p&&p&&br&&/p&&p&额,确切的说,是美国防部下属的“高级研究计划局”:Defense Advanced Research Projects Agency(简称“DARPA”),主要负责研发用于军事用途的高新科技。&/p&&p&&br&&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-9b66c222ff8c68cc3bfc5f64aa3e5045_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&300& data-rawheight=&165& class=&content_image& width=&300&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&除科研外,DARPA也会选择一些有潜力的项目进行投资。2003年,非盈利性研究机构SRI International(斯坦福国际研究所)被DARPA看中。这家公司成立仅五年,拥有数百名员工,且其中一个研发项目做的是虚拟助理(virtual assistant)。而美国政府当时也正有此意,希望虚拟助理未来可以帮助军队指挥官处理超负荷的信息和工作量。&/p&&p&&br&&/p&&p&这就意味着,大把大把的科研经费来了!&/p&&p&&br&&/p&&p&当时DARPA在资助一个名为PAL (Personal Assistant that Learns&学习型个人助理”)的项目,在发现SRI的潜力后,便开启了所谓的“&b&CALO计划&/b&”,即一个“基于人工智能技术以实现智能助手”的计划,作为PAL项目的一部分,签署五年合同,&b&由SRI负责主导&/b&,研发时间从2003年5月一直持续到2008年。&/p&&p&&br&&/p&&p&“CALO计划”为时五年,汇集了来自不同高校和商业科研机构的贤才达士,据说总计有500+研究员参与过这个项目,其也被称为“历史上规模最大的人工智能计划”。&/p&&p&&br&&/p&&p&DARPA 和 SRI合作发起的“CALO计划”,有人才、有平台、有经费,可谓天时地利人和。于是,在技术研发成熟之际(也就是CALO计划接近尾声的年),&b&因此项目结缘的挪威企业家Dag kittlaus、工程师Adam Cheyer及Tom Gruber创办了Siri Inc.公司。而这,便是Siri的前身,三位创始人后来也被人们称为“Siri之父”。&/b&&/p&&p&&br&&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-8ca6edb73b7f505e7a791d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&570& data-rawheight=&427& class=&origin_image zh-lightbox-thumb& width=&570& data-original=&https://pic4.zhimg.com/v2-8ca6edb73b7f505e7a791d_r.jpg&&&/figure&&p&&br&&/p&&p&一张老照片:左一左二是SRI董事。左三是Dag Kittlaus,右一是Adam Cheyer。右二是Didier Guzzoni(Cheyer当时带的博士生)&/p&&p&&br&&/p&&p&&b&不过,Siri为什么叫Siri呢?&/b&据说是因为Dag Kittlaus来自挪威,Siri是一个挪威女名,有“beautiful victorious counselor(美丽的胜利辅佐)”之意。出于骨子里的挪威情结,Dag本想给自己的第一个孩子取名为Siri,不想孩儿出世后竟是个大胖小子,于是Dag便将自己倾注心血研发的数字助理取名为Siri。&/p&&p&&br&&/p&&p&&br&&/p&&p&&b&Siri:曾让乔布斯亲自打Call的应用&/b&&/p&&p&&br&&/p&&p&2010年2月,Siri作为一款支持ios操作系统的独立应用程序被正式发布。虽然如今的Siri是苹果设备的内置程序,但当时的开发者其实已经在筹备Android和黑莓版本的发布了。不曾想2个月后,Siri被苹果收购了。&/p&&p&&br&&/p&&p&原来,在苹果商店上架后的Siri一炮而红,迅速成为了生活服务类的人气应用,甚至惊动了乔布斯,亲自致电Dag Kittlaus以表收购诚意。&/p&&p&&br&&/p&&p&喏,下图便是2010年上架的独立应用Siri,据说触达40+网页服务,比现在好用多了。&/p&&p&&br&&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-7b93cf2648291_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&570& data-rawheight=&360& class=&origin_image zh-lightbox-thumb& width=&570& data-original=&https://pic4.zhimg.com/v2-7b93cf2648291_r.jpg&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&接到乔帮主的电话让Dag颇为激动,但想到刚刚上线的心血之作要被收购,还是有些不忍。后来,乔布斯承诺会将Siri作为苹果手机的核心应用重点开发,Dag几经考虑后,最终还是同意了。据称收购成交价为1.5~2.5亿美元。&/p&&p&&br&&/p&&p&有意思的是,初代Siri是个会“怼人”的数字助手,甚至会冒出脏字打头的回复。纳入苹果公司后,Siri的“人设”乖巧了不少,并开始了“多才多艺的修行”,例如从原先不会发声的Siri升级为了真正的“语音助手”,从单一语言升级为了支持多种语言等。&/p&&p&&br&&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-81fc43b70d94ec946bcf487_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&400& data-rawheight=&300& class=&content_image& width=&400&&&/figure&&p&&br&&/p&&p&&br&&/p&&p&2011年10月,苹果在发布会上首次向世人介绍了自带测试版Siri的iphone 4S,你可以用它帮助安排会议、回复邮件、查询天气等,颇为惊艳。当然,早前在APP Store上发布的独立应用Siri自然是要被下架的。&/p&&p&&br&&/p&&p&后来乔帮主离世,Siri早期的创始团队也陆续从苹果离职。Adam曾坦言:“Steve去世后,苹果发生了一些变化,如果他还在的话,我应该不会离开”。&/p&&p&&br&&/p&&p&&br&&/p&&b&&figure&&img src=&https://pic1.zhimg.com/v2-7f24ae2ef615bac9328a30_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&600& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic1.zhimg.com/v2-7f24ae2ef615bac9328a30_r.jpg&&&/figure&&/b&&p&&br&&/p&&p&&br&&/p&&p&&b&再后来,Adam 和 Dag 在2016年5月推出了一个创业项目,一款名叫Viv的AI助手问世。&/b&一样的产品定位,一样的创始团队,Viv可以说是Siri的亲弟弟/妹妹了,只是Viv Labs在2017时被三星收购了。&/p&&p&&br&&/p&&p&如今的Siri已不再是一枝独秀,各路小助手俨然是百花齐放的局面:微软小冰、亚马逊Alexa等等。也许多数世人并不知Siri背后的那些奇闻旧事,只是闲来无事时,调戏之以打发时间,或者只是简单的让Siri帮设闹钟。&/p&&p&&br&&/p&&p&而了解一二的人,大概会为之惋惜:我们亲爱的Siri,明明领先了起跑,却错过了追赶...&/p&&p&&br&&/p&&p&&br&&/p&&p&&b&【推荐阅读】&/b&&/p&&p&&u&&a href=&https://link.zhihu.com/?target=http%3A//mp.weixin.qq.com/s%3F__biz%3DMzU1MDA0OTEyMA%3D%3D%26mid%3D%26idx%3D1%26sn%3D62cdfc4dc485b30eced5c13ca35cce70%26chksm%3Dfba7d4c3ccd05dd527db0da92ea8f9fbbe97d4e768dbc04b9907ef41fec8b8e1e81%26scene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&iPhone X的对手来了!&/a&&/u&&/p&&p&&u&&a href=&https://link.zhihu.com/?target=http%3A//mp.weixin.qq.com/s%3F__biz%3DMzU1MDA0OTEyMA%3D%3D%26mid%3D%26idx%3D1%26sn%3D9b8b81bfdcfce0d1a1effc5%26chksm%3Dfba7d461ccd05d77a4f4f1f25e30e4a0e10b8d18d5a5c04f3da37db6fd2b545c2be%26scene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&害怕!这两只狗都成精了!&/a&&/u&&/p&&p&&u&&a href=&https://link.zhihu.com/?target=http%3A//mp.weixin.qq.com/s%3F__biz%3DMzU1MDA0OTEyMA%3D%3D%26mid%3D%26idx%3D2%26sn%3Df9fdbcb9bb36d71%26chksm%3Dfba7d4c3ccd05ddcccccd8eaa90d83da7fbc7221df3ea%26scene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&俄罗斯入侵冬奥会,嫁祸朝鲜&/a&&/u& &/p&&p&&u&&a href=&https://link.zhihu.com/?target=http%3A//mp.weixin.qq.com/s%3F__biz%3DMzU1MDA0OTEyMA%3D%3D%26mid%3D%26idx%3D1%26sn%3Dcf696e7fe839achksm%3Dfba7d4adccd05dbb8a6f7a70adf4ab306bfae45fbb993eff%26scene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&亚马逊云计算要被黑客攻陷?&/a&&/u&&/p&&p&&u&&a href=&https://link.zhihu.com/?target=http%3A//mp.weixin.qq.com/s%3F__biz%3DMzU1MDA0OTEyMA%3D%3D%26mid%3D%26idx%3D2%26sn%3D5ccbb04e74701%26chksm%3Dfba7d4adccd05dbb12eb9f1b9f2e7f7282c4bac687c2b108da592a81c44a7f2d08%26scene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&胆小勿入!这是....AR版贞子?&/a&&/u&&/p&&p&&u&&a href=&https://link.zhihu.com/?target=http%3A//mp.weixin.qq.com/s%3F__biz%3DMzU1MDA0OTEyMA%3D%3D%26mid%3D%26idx%3D2%26sn%3Dc3e5a236e9383abdfc4b7ab916cae622%26chksm%3Dfba7d475ccd05d63bd496abad627fdc78fce1dfd6fbfb223ae8b87e%26scene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&盖茨要客串《生活大爆炸》了!&/a&&/u&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-91bf569ea585eae0808b0_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&600& data-rawheight=&368& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic4.zhimg.com/v2-91bf569ea585eae0808b0_r.jpg&&&/figure&&p&欢迎关注我们:&/p&&p&&a href=&https://www.zhihu.com/people/e4b4cee7b4c9afd105e527d& class=&internal&&@W-Pwn&/a&&/p&
最近在油管上发现一位很有意思的视频博主,名叫“Squirrel Monkey”。其对上世纪八九十年代的计算机软件风蜜汁钟爱,于是模仿那个年代的风格自制了一档视频节目: 然后每期节目会肆意畅想如果维基百科、脸书、油管、Pinterest等当下热门的互联网产品生在那…
&figure&&img src=&https://pic3.zhimg.com/v2-cada3d475f5af6_b.jpg& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&https://pic3.zhimg.com/v2-cada3d475f5af6_r.jpg&&&/figure&&blockquote&&b&&i&乔布斯说:“这是当前全世界人气最高的游戏机,如果我们也能玩一些他们的游戏,你不觉得很棒吗?”&/i&&/b&&/blockquote&&p&&br&&/p&&p&&b&文 / 夜语&/b&&/p&&p&虽然时至今日,模拟器依然处于法律的灰色地带,但很多人已经将其当成游戏业常见的一个组成部分,也不同程度使用过一些模拟器。模拟器的开发团队只要不做得太过火,一般不至于招来官司。&/p&&p&但在上世纪90年代,模拟器的法律边界要模糊得得多。第三方做的&b&商业模拟器&/b&不仅能以50美元的价格公开贩卖,还能参展E3,演示索尼的游戏,发售模拟器专用版的零售游戏光盘。时任苹果CEO的&b&乔布斯&/b&甚至在1999年的一次发布会上展示了一款PS模拟器,迎来台下的观众各种欢呼与掌声。&/p&&p&因此,模拟器在当时引起的争议也要大得多,索尼曾与两款模拟器软件——VGS和Bleem数次对簿公堂——但悉数败下阵来,最后通过使用其他手段才战胜这两个对手。&/p&&p&VGS和Bleem虽然遭遇了失败,却也从根本上改变了模拟器的命运。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-a3b39ab11f2cadaaaa18a_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&694& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic3.zhimg.com/v2-a3b39ab11f2cadaaaa18a_r.jpg&&&/figure&&p&近日,YouTube播主诺曼·卡鲁索(Norman Caruso)和EuroGamer等媒体详细梳理了这段历史,让我们在近20年后能首度了解到整个事件的原貌。 &/p&&p&早期的模拟器软件都是免费的,当时各种模拟器新闻通过论坛、网站和报刊杂志等方式快速传播着,至于这玩意儿是不是合法,谁也说不好。&/p&&p&1994年,索尼推出了首款游戏主机PS,几年时间后,PS成为了市面上最流行的游戏主机;1997年,网上出现了两款名为PSemu Pro和Psyke的PS模拟器软件,但这两款软件兼容性问题严重,且更新很慢,所以并没有在玩家中掀起太大波澜。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-b46cb39f79e948ae5c3b2_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&557& data-rawheight=&272& class=&origin_image zh-lightbox-thumb& width=&557& data-original=&https://pic3.zhimg.com/v2-b46cb39f79e948ae5c3b2_r.jpg&&&/figure&&p&然而在1999年,VGS和Bleem两款商业的模拟器软件出现之后,一切都变了。&/p&&p&&br&&/p&&h2&&b&VGS&/b&&/h2&&p&我们先来说说Connectix VGS:Connectix成立于1988年,最早是制作苹果Mac上的各种工具软件,他们曾推出市面上首个商业网络摄像头软件QuickCam,并于后来卖给了罗技。&/p&&p&但公司最著名的软件还是Virtual PC,这款软件可以让你在Mac上运行Windows系统,实质上是一款虚拟机,也是模拟器。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-bef18a7f5d2a2b_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&690& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic2.zhimg.com/v2-bef18a7f5d2a2b_r.jpg&&&/figure&&p&1998年,天才程序员亚伦·贾尔斯(Aaron Giles)加入Connectix的Virtual PC团队,贾尔斯曾经帮卢卡斯艺术往Mac上移植过多款游戏,是一名模拟器的狂热爱好者,平均每周都花费20小时在街机模拟器MAME之上,加入Virtual PC团队对他来说是如鱼得水,再适合不过的事情。&/p&&p&在一次与上级的午餐时,贾尔斯说自己在网上发现了一堆PS模拟器,其中就包括PSemu Pro,他突发奇想能不能也在Mac上开发一款。&/p&&p&上级同意了贾尔斯这个提案,因为一款成功的模拟器软件是能赚大钱的:在那个年代,Mac上的游戏软件少得可怜,而模拟器就是一个突破点。&/p&&p&贾尔斯随即开始了VGS的开发,他在网上研究了PS协处理器运行原理文档,甚至还找到了一份PS的BIOS文件。&/p&&p&仅用几周时间,Connectix就完成了模拟器的首个原型版本,这是模拟器史上首款商用模拟器软件,并且还是模拟当时最受欢迎的游戏主机。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-49aeb4d253209_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&362& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic2.zhimg.com/v2-49aeb4d253209_r.jpg&&&/figure&&p&不过VGS想进入市场,必须要走合法的途径:&b&Connectix于是联络上索尼,想获得PS BIOS文件的使用授权。&/b&&/p&&p&随后团队驱车来到索尼电脑娱乐位于加州的分部,在会晤中,Connectix用VGS演示了当时PS上的动作游戏《古惑狼》,在场的一名索尼高管提问,软件能否可以运行所有的PS游戏。虽然并没有测试过,但为了给对方留下一个好印象,贾尔斯拍着胸脯吹牛说“当然可以!”&/p&&p&索尼方面拿出了早已经准备好的PS游戏盘包,随机拿了一款游戏进行测试。可能是天助Connectix,选中是南梦宫的《山脊赛车》,这是当时VGS原型可以完美支持的少数游戏之一。&/p&&p&会晤的气氛看上去似乎不错,但看到电脑上的模拟画面,索尼的人脸上的神色却越来越严峻。在离开索尼时,贾尔斯等人心中都有着不好的预感。果然,在1998年10月,Connectix得到了正式的答复:索尼不允许他们使用PS的BIOS。&/p&&p&不过这点困难显然难不倒Connectix的技术人员,他们的解决方案很简单:那就是完全跳过PS的BIOS。贾尔斯的团队早已经完全摸清了其功能和工作原理,并用C语言重新写了一份。不仅如此,重写的BIOS文件在模拟器上的运行速度甚至比原版更快。&/p&&p&Connectix觉得他们已经完全绕开了法律风险,于是拿着VGS参加了1999年的MacWorld展。在展前发布会上,苹果CEO乔布斯亲自为大家展示了这款软件:当时舞台的大屏幕上出现一张PS主机的图片,&b&乔布斯说:“这是当前全世界人气最高的游戏机,如果我们也能玩一些他们的游戏,你不觉得很棒吗?”&/b&台下观众随即发出一阵会意的笑声和掌声。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-14fadaaaf7c4fef_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1502& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1502& data-original=&https://pic4.zhimg.com/v2-14fadaaaf7c4fef_r.jpg&&&/figure&&p&乔布斯接着说:“这就是我们今天要公布的,由Connectix带来的‘VGS’,一款软件……”他的话音未落,就已经被台下激动的观众的欢呼声和掌声所打断。&/p&&p&VGS的初次公开亮相大获成功:在MacWorld展首日,软件就卖出3000份以上,平均每30秒钟卖出一份。以每份价格50美元计算,当天Connectix的收入就达15万美元。&/p&&p&VGS有着当时市面上所有PS模拟器中最好的兼容性,随后Connectix仍不断发布兼容更新,并小心谨慎,尽量避开法律风险:&b&首先,玩家须要有正版PS游戏光盘,模拟器才能运行;其次,软件还锁区。然而,很快网上就有人破解了这些限制,VGS沦为了盗版游戏的帮凶。&/b&&/p&&p&VGS如此高调的亮相自然不可能逃脱索尼的眼睛:在MacWorld展当天,就有索尼法务人员到Connectix展位前调查取证。&/p&&p&三周后,索尼以版权及专利侵犯、商标淡化等9项指控将Connectix告上法庭。Connectix方面则发表声明否则了索尼的所有指控,并开始着手Windows版VGS软件的开发。&/p&&p&&b&索尼向美国联邦法院提出销售禁令,但禁令随后遭到法院驳回,Connectix首战获胜&/b&。VGS继续在市面上大行其道,销量达到6万份,为公司赚得300万美元。&/p&&p&事态看上去在向着有利于Connectix的方向发展,然而在1999年初,贾尔斯和他的同事忽然被Connectix免职,并被要求交出逆向工程研究成果,包含索尼处理器资料、BIOS源代码等所有文件。&/p&&p&同年4月22日,美国联邦法院法官查尔斯·雷格(Charles Legge)&b&批准了索尼的销售禁令申请。&/b&雷格认为,Connectix对索尼BIOS的逆向工程行为属于不合理使用范畴,VGS也使得PS商标的商誉受损。&/p&&p&法院判决,Connectix必须立即停止VGS软件的销售。Connectix立即对此判决提出了上诉,此时市面上大家开始寻找VGS的替代品,盗版软件也开始在网上传播,令其损失不少。&/p&&p&&b&日,上诉法院上演了一出“逆转裁判”:不但取消了销售禁令,还确认了模拟器的合法化。&/b&&/p&&p&上诉法院的主审法官威廉·坎拜(William Canby)认为,Connectix对索尼PS进行逆向工程的行为,是其了解主机系统中不受法律保护元素的必要手段;此外前者并未直接拷贝后者任何代码,所以这次逆向工程属于合理使用范畴。&/p&&p&坎拜也推翻了雷格法官认定VGS使得PS商标的商誉受损判决:他声称,谁主张谁举证,索尼如果坚持自己的观点,就必须拿出实在证据,证明PS商标的商誉确实因此受到了实质的损失。&/p&&p&由于索尼方面当庭拿不出相关证据,因此坎拜法官认为这项指控证据不足,予以驳回。&/p&&p&&b&此次判决对整个模拟业界来说都是一件大事:美国联邦法院确定了对游戏主机进行逆向工程是合理行为,这意味着模拟器的身份被合法化了。&/b&&/p&&p&判决生效后,Connectix的模拟器软件重新上架,还推出了Windows版。当时的各个主流科技和游戏媒体纷纷对此次判决进行了报道,模拟器软件首次正大光明地进入了普通大众的视线。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-ae62f6ccdce810e9b28cd_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&690& data-rawheight=&503& class=&origin_image zh-lightbox-thumb& width=&690& data-original=&https://pic2.zhimg.com/v2-ae62f6ccdce810e9b28cd_r.jpg&&&/figure&&p&此后,Connectix方面好消息不断:三个月后,曾批准销售禁令的雷格法官也站到了他们这一边,驳回了索尼9项指控中的7项。&/p&&p&索尼方面最后的希望是美国联邦最高法院支持对Connectix不公平竞争和侵犯商业机密的指控,然而最高法院却拒绝审理此案。&/p&&p&&b&在这种情况之下,索尼使出了杀手锏:2001年的3月,以未公布的金额买下了Connectix的VGS,后者将所有软件和开发用的硬件交给索尼,并删除了保存在自家服务器上的备份。&/b&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-22eb7a632a1bcc0c863ef7_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&440& data-rawheight=&270& class=&origin_image zh-lightbox-thumb& width=&440& data-original=&https://pic4.zhimg.com/v2-22eb7a632a1bcc0c863ef7_r.jpg&&&/figure&&p&索尼在获得VGS后,就立即停止了相关软件的销。Connectix方面对这个结果也感到非常满意:因为当时PS已经走到其生命周期的末期,玩家开始期待PS2的上市,VGS的销量因此跟着直线下滑;但软件在这几年的总销量相当不错,早已经为公司赚足了钞票。&/p&&p&在收购完成后,贾尔斯重返Virtual PC团队。2003年,此项目和团队都被微软收购,贾尔斯跟随团队到微软工作至今。&/p&&p&贾尔斯对自己参与开发的VGS感到自豪,并说开发PS模拟器是他职业生涯中最开心的时光。虽然对因此引发的法庭大战稍微感到一些不快,但他认为索尼在之后的产品中应用到了他们开发的模拟技术,是他帮助索尼在技术上取得进步。&/p&&p&当然索尼后来是否真正有用到了贾尔斯他们开发的技术,就是一个谜了。&/p&&p&&br&&/p&&h2&&b&Bleem&/b&&/h2&&p&Connectix和索尼的官司为模拟器的合法化奠定了基础,但真正为模拟器带来公众影响力的还是Bleem。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-d5ccf8df333f9527cbcd938_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&497& data-rawheight=&400& class=&origin_image zh-lightbox-thumb& width=&497& data-original=&https://pic1.zhimg.com/v2-d5ccf8df333f9527cbcd938_r.jpg&&&/figure&&p&Bleem的出现时间比VGS要稍微晚一些:1998年年末的时候,网上忽然开始流传一张新PS模拟器的PC版截图,运行的游戏是《小龙斯派罗》。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-ba9735f9fdaee9d28c301_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&808& data-rawheight=&426& class=&origin_image zh-lightbox-thumb& width=&808& data-original=&https://pic2.zhimg.com/v2-ba9735f9fdaee9d28c301_r.jpg&&&/figure&&p&通过截图网友发现:该款新PS模拟器首度提供了画质增强功能,也就是说,用模拟器运行的游戏画面比PS主机上的原版画面还要更好。&/p&&p&这就是Bleem的首次亮相,软件由程序员兰迪·林登(Randy Linden)和工程师大卫·赫博斯海姆(David Herpolsheimer)等人开发,名字来自于“Best little emulator ever made”&b&(史上最佳小模拟器)&/b&的首字母缩写。&/p&&p&林登对游戏开发和模拟器都非常有经验,早在1988年时就曾开发过模拟器软件,后来又将《毁灭战士》移植到SFC之上;而赫博斯海姆则是一位软硬件高手,曾经在IBM、柯达和苹果等大型IT公司工作过。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-a912e232e81d4d418cc0c_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1067& data-rawheight=&558& class=&origin_image zh-lightbox-thumb& width=&1067& data-original=&https://pic2.zhimg.com/v2-a912e232e81d4d418cc0c_r.jpg&&&/figure&&p&由于截图中展示的游戏画面实在是太好,以至于很多玩家认为截图是伪造的。而且据公布的资料显示,Bleem对PC硬件的要求相当低:最低只需英特尔奔腾166MMX CPU即可运行,要知道,这是一颗2年前上市的处理器;最低内存也只需16MB,推荐内存32MB,而当时的主流PC内存容量已经到64MB了。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-6a928daf5b2d9de517fd44c9cb73f89d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&691& data-rawheight=&266& class=&origin_image zh-lightbox-thumb& width=&691& data-original=&https://pic2.zhimg.com/v2-6a928daf5b2d9de517fd44c9cb73f89d_r.jpg&&&/figure&&p&模拟器还附带硬件加速功能,能通过电脑显卡提升游戏的分辨率和材质纹理质量等方面,相对于320x240的PS原始画面,Bleem的画面要好上不少。&/p&&p&1999年初,当Bleem的Beta版在网上泄露之后,所有的质疑声音都消失了。一时间,关于这款模拟器的消息就如野火一样在网上流传。&/p&&p&同年3月21日,Bleem发布了演示版,并开启了官网预售,游戏网站IGN曾对赫博斯海姆进行了专访,问其是否已经准备好应付索尼的法务部门,因为当时索尼正和Connectix在法庭上打得不可开交,赫博斯海姆自信的表示不怕,并给出了自己的理由。&/p&&p&赫博斯海姆说:“首先,Bleem是一款完全自主开发的软件,早在开发之前,我们就已经完成了对索尼PS的逆向工程研究;其次,用户必须拥有正版的游戏光盘才能模拟,因此Bleem不会滋生游戏盗版。”&/p&&p&当然,索尼方面完全不认同Bleem的观点:日,也就是在软件开启预售的两周之后,索尼将其告上法院,指责前者侵犯了自己的知识产权和版权,并要求要求法院将模拟器禁售。&/p&&p&和Connectix一样,Bleem也来自于加州,不过与前者不同的是,Bleem是一家只有几名员工的创业公司,与索尼比起来,就好像小虾米对抗大鲸鱼一样,因此外界普遍不看好这场官司。&/p&&p&但出乎所有人意料的是,Bleem胜诉了,法院没有支持索尼方面的禁售申请;同年8月,索尼发起第二次禁售申请,同样遭受败诉。&/p&&p&&b&在1999年的E3上,Bleem开始了正式发售,他们在现场演示用模拟器运行《GT赛车》&/b&,很快,索尼的人来到了其展台,双方发生大声争执,场面失去控制。&/p&&p&此时大会主办方站出来要求Bleem停止产品演示,但似乎他们的宣传目的已经达到了:上市首月,软件就大卖50万份,按每份零售价30美元计算,给公司带来了&b&1500万美元&/b&的收入。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-b52a415dbdbb_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&799& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic4.zhimg.com/v2-b52a415dbdbb_r.jpg&&&/figure&&p&在接下来的时间里,Bleem好运连连:1999年7月,&b&软件上架沃尔玛、百思买和巴诺书店等大型连锁渠道;&/b&8月,查尔斯·雷格法官驳回了索尼的禁售申请,这位雷格法官,正是之前审理过Connectix官司那位。&/p&&p&不过法官表示,Bleem不能再使用PS游戏截图对比来宣传自己:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-47c670e7750c44a60449c_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&718& data-rawheight=&303& class=&origin_image zh-lightbox-thumb& width=&718& data-original=&https://pic1.zhimg.com/v2-47c670e7750c44a60449c_r.jpg&&&/figure&&p&按理说这次Bleem大获全胜,应该见好就收,没想到他们仍不满足,对此进行了上诉:12月,公司将索尼告上法院,指控其违反市场竞争和滥用知识产权。&/p&&p&日,Bleem再次在法庭取得胜利:上诉法院驳回了雷格法官关于禁止使用PS截图对比来进行宣传的判决,达尔姆德·奥斯康兰(Diarmuid O'Scannlain)法官认为,只要在截图对比的宣传中不涉及伪造和虚假行为,那么对于消费者而言就是一个重要的信息,属于合理使用范畴。 &/p&&p&&b&奥斯康兰法官称:“如果索尼的主机销量下滑,那是因为Bleem的模拟器技术优于PS主机,而不是因为其使用了几张屏幕截图对比导致的。”&/b&&/p&&p&5月1日,Bleem宣布将推出在世嘉DC上运行的版本,支持400款新PS游戏,兼容性则通过更新补丁兼容包来实现,100个游戏的兼容包售价20美元。所有游戏画面都以640x480分辨率、反锯齿和双线过滤运行。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-369af933a489c63d1a1fcb9306ce9afc_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&600& data-rawheight=&322& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic1.zhimg.com/v2-369af933a489c63d1a1fcb9306ce9afc_r.jpg&&&/figure&&p&由于DC的手柄按键少于PS,在2000年的E3上,Bleem甚至还展出了一款名为“BleemPod”的外设,不过成品最后没有上市。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-71ce08fc1aa3f8f705db53_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&800& data-rawheight=&234& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&https://pic4.zhimg.com/v2-71ce08fc1aa3f8f705db53_r.jpg&&&/figure&&p&同年5月9日,索尼再次起诉Bleem,这次的指控是专利侵权。时间进入2001年,Bleem遇到了和VGS同样的问题:由于玩家期待PS2上市导致软件销量大降,而大量的开发问题和索尼长期不断的诉讼也让DC版Bleem发售延期。&/p&&p&最后,Bleem不得不改变策略,将DC版本的软件改名为BleemCast,并且针对每个游戏单发售,首批支持的游戏也减少到三款:《GT赛车2》《铁拳3》和《合金装备》。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-2cbb6c07d819d_b.jpg& data-size=&normal& data-rawwidth=&1080& data-rawheight=&608& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic2.zhimg.com/v2-2cbb6c07d819d_r.jpg&&&figcaption&模拟器专用版的零售游戏光盘&/figcaption&&/figure&&p&这时索尼也想到了其他的办法,他们威胁说,若哪家零售商上架BleemCast就将遭遇起诉或中断产品供货。&/p&&p&面对如此压力,零售商们权衡之后只得乖乖听命,光GameStop连锁店一家的软件退货就超过7000套,这成为了压倒Bleem的最后一根稻草。&/p&&p&PC版本销量下滑、DC版本又遭到渠道商大规模退货,再加上与索尼官司庞大的诉讼费用,这家小创业公司再也扛不下去了:2001年11月,Bleem在其官网上宣布倒闭,&b&并放了一张索尼克在墓碑旁哭泣的图片,&/b&墓碑上写着:“Bleem,生于1999年4月,死于2001年11月”。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-46a38bed847d872e686635e_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&560& data-rawheight=&300& class=&origin_image zh-lightbox-thumb& width=&560& data-original=&https://pic3.zhimg.com/v2-46a38bed847d872e686635e_r.jpg&&&/figure&&p&但由于索尼克的形象版权归属于世嘉,或许是怕再惹上官司,Bleem很快从官网上移走了这张图片。&/p&&p&&br&&/p&&h2&&b&尾声&/b&&/h2&&p&在Bleem倒闭后,林登被索尼聘请为顾问,负责向对方公开模拟器的技术和工作原理;赫博斯海姆则因为伤心和失望,彻底退出了软件行业;Bleem的市场公关负责人也去了索尼,&b&担任索尼在线娱乐的公关负责人一职。&/b&&/p&&p&而Connectix在把VGS卖给索尼之后,又于2003年把当家产品Virtual PC卖给了微软,然后关门大吉。&/p&&p&如今,虽然模拟器依然很常见,但最近几年,模拟器在主流玩家生活所占的比重已经越来越小了。这一方面要归功于跨平台游戏的增多,一方面也要归功于娱乐方式的多样化。玩家们很少会像过去十几年那样,为了某个玩不到的主机或街机游戏,在PC上自行折腾各种模拟器了。即便这些年国内出现了自带ROM的商业模拟器平台(这也造成了更加直接的侵权行为),这个市场也不可避免地在缩小,未来将彻底沦为小众需求。&/p&&p&但无论怎么说,曾经如火如荼的模拟器圈子,是电子游戏发展历史中不可磨灭的一道印记。&/p&&p&&br&&/p&&p&&b&关注公众号“游戏研究社”(yysaag),发送以下关键词,可看到更多精彩内容:&/b&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-ae738cfde5bada74855f_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&348& data-rawheight=&357& class=&content_image& width=&348&&&/figure&&p&&b&我们需要优秀的内容(文字/视频)创作者共同合作,有意者可以投稿至tougao@dj.sina.cn&/b&&/p&&p&&b&如果你想加入游研社,也欢迎将简历和个人介绍发往我们的招聘邮箱hr@dj.sina.cn&/b&&/p&&p&&/p&
乔布斯说:“这是当前全世界人气最高的游戏机,如果我们也能玩一些他们的游戏,你不觉得很棒吗?” 文 / 夜语虽然时至今日,模拟器依然处于法律的灰色地带,但很多人已经将其当成游戏业常见的一个组成部分,也不同程度使用过一些模拟器。模拟器的开发团队只…
谢邀=w=&br&&br&这个其实看它的behavior就很容易猜出程序是怎么写的了&br&S抢的发射逻辑是,一枪发射前方扇形5颗子弹,屏幕上最多不超过10颗子弹&br&两枪之间并没有最小发射间隔(连射键是我们“中华FC”后加的功能,那时候谁tm能想到玩家能连续每秒15次20次的速度输入啊)&br&如果超过10颗,无法发射,如果这枪发射后多于10颗,那么多出来的部分就无法发射&br&本来按照街机的逻辑,五颗五颗应该是分组的,前五颗彻底飞出屏幕之后才应该能再发射五颗,但是可能负责移植的程序员懒还是怎么地,并没有如此判断&br&其实L枪也一样,本应该是飞出屏幕之后才能射第二枪,结果并没有判断,而是第二枪覆盖第一枪的数据,于是你可以连射变成短棍……&br&扇形嘛,肯定有先飞出去的和后飞出去的,或者打倒敌人消失的,10个槽位(可以这么想象)有空出来了,就可以发射补上了,但是总体不能超过10个啊,于是就只能吞掉扇形上下两边的子弹了&br&于是就变成长条了&br&&br&用C代码写大概他们是写成了这样:&br&&br&&div class=&highlight&&&pre&&code class=&language-c&&&span class=&k&&typedef&/span& &span class=&k&&struct&/span& &span class=&n&&_SPREADGUNBULLET&/span& &span class=&p&&{&/span&
&span class=&kt&&unsigned&/span& &span class=&kt&&char&/span& &span class=&n&&available&/span&&span class=&p&&;&/span&
&span class=&kt&&unsigned&/span& &span class=&kt&&char&/span& &span class=&n&&x&/span&&span class=&p&&;&/span&
&span class=&kt&&unsigned&/span& &span class=&kt&&char&/span& &span class=&n&&y&/span&&span class=&p&&;&/span&
&span class=&kt&&unsigned&/span& &span class=&kt&&char&/span& &span class=&n&&deltax&/span&&span class=&p&&;&/span&
&span class=&kt&&unsigned&/span& &span class=&kt&&char&/span& &span class=&n&&deltay&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span& &span class=&n&&SPREADGUNBULLET&/span&&span class=&p&&;&/span&
&span class=&n&&SPREADGUNBULLET&/span& &span class=&n&&sbullet&/span&&span class=&p&&[&/span&&span class=&mi&&10&/span&&span class=&p&&];&/span&
&span class=&kt&&char&/span& &span class=&nf&&getSBullet&/span&&span class=&p&&()&/span& &span class=&p&&{&/span&
&span class=&kt&&int&/span& &span class=&n&&i&/span&&span class=&p&&;&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&i&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&p&&;&/span& &span class=&n&&i&/span& &span class=&o&&&&/span& &span class=&mi&&10&/span&&span class=&p&&;&/span& &span class=&n&&i&/span&&span class=&o&&++&/span&&span class=&p&&)&/span& &span class=&p&&{&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&sbullet&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&].&/span&&span class=&n&&available&/span&&span class=&p&&)&/span&
&span class=&k&&return&/span& &span class=&n&&i&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&k&&return&/span& &span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&kt&&void&/span& &span class=&nf&&shotSpreadGun&/span&&span class=&p&&()&/span& &span class=&p&&{&/span&
&span class=&kt&&int&/span& &span class=&n&&i&/span&&span class=&p&&;&/span&
&span class=&k&&const&/span& &span class=&k&&static&/span& &span class=&kt&&char&/span& &span class=&n&&dListX&/span& &span class=&o&&=&/span& &span class=&p&&{&/span& &span class=&mi&&8&/span&&span class=&p&&,&/span& &span class=&mi&&6&/span&&span class=&p&&,&/span& &span class=&mi&&6&/span&&span class=&p&&,&/span& &span class=&mi&&4&/span&&span class=&p&&,&/span& &span class=&mi&&4&/span& &span class=&p&&}&/span& &span class=&p&&;&/span& &span class=&c1&&// 这数字我瞎写的&/span&
&span class=&k&&const&/span& &span class=&k&&static&/span& &span class=&kt&&char&/span& &span class=&n&&dListY&/span& &span class=&o&&=&/span& &span class=&p&&{&/span& &span class=&mi&&0&/span&&span class=&p&&,&/span& &span class=&o&&-&/span&&span class=&mi&&2&/span&&span class=&p&&,&/span& &span class=&mi&&2&/span&&span class=&p&&,&/span& &span class=&o&&-&/span&&span class=&mi&&4&/span&&span class=&p&&,&/span& &span class=&mi&&4&/span& &span class=&p&&}&/span& &span class=&p&&;&/span& &span class=&c1&&// 总之是扇形……&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&i&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&p&&;&/span& &span class=&n&&i&/span& &span class=&o&&&&/span& &span class=&mi&&5&/span&&span class=&p&&;&/span& &span class=&n&&i&/span&&span class=&o&&++&/span&&span class=&p&&)&/span& &span class=&p&&{&/span&
&span class=&kt&&char&/span& &span class=&n&&slot&/span& &span class=&o&&=&/span& &span class=&n&&getSBullet&/span&&span class=&p&&();&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&slot&/span& &span class=&o&&==&/span& &span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&)&/span&
&span class=&k&&break&/span&&span class=&p&&;&/span&
&span class=&n&&sbullet&/span&&span class=&p&&[&/span&&span class=&n&&slot&/span&&span class=&p&&].&/span&&span class=&n&&available&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&p&&;&/span&
&span class=&n&&sbullet&/span&&span class=&p&&[&/span&&span class=&n&&slot&/span&&span class=&p&&].&/span&&span class=&n&&x&/span& &span class=&o&&=&/span& &span class=&n&&player&/span&&span class=&p&&.&/span&&span class=&n&&x&/span& &span class=&o&&+&/span& &span class=&p&&(&/span&&span class=&n&&player&/span&&span class=&p&&.&/span&&span class=&n&&direction&/span& &span class=&o&&?&/span& &span class=&mi&&8&/span& &span class=&o&&:&/span& &span class=&o&&-&/span&&span class=&mi&&8&/span&&span class=&p&&);&/span&
&span class=&n&&sbullet&/span&&span class=&p&&[&/span&&span class=&n&&slot&/span&&span class=&p&&].&/span&&span class=&n&&y&/span& &span class=&o&&=&/span& &span class=&n&&player&/span&&span class=&p&&.&/span&&span class=&n&&y&/span&&span class=&p&&;&/span&
&span class=&n&&sbullet&/span&&span class=&p&&[&/span&&span class=&n&&slot&/span&&span class=&p&&].&/span&&span class=&n&&deltax&/span& &span class=&o&&=&/span& &span class=&n&&player&/span&&span class=&p&&.&/span&&span class=&n&&direction&/span& &span class=&o&&?&/span& &span class=&n&&dListX&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&]&/span& &span class=&o&&:&/span& &span class=&o&&-&/span&&span class=&n&&dListX&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&];&/span&
&span class=&n&&sbullet&/span&&span class=&p&&[&/span&&span class=&n&&slot&/span&&span class=&p&&].&/span&&span class=&n&&deltay&/span& &span class=&o&&=&/span& &span class=&n&&dListY&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&];&/span&
&span class=&p&&}&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&&br&准备给S枪子弹的位置一共10个,然后子弹或是飞出屏幕或是打倒敌人,某available变成1,我觉得接下来的东西都可以想象了……&br&&br&评论区中出现了一位原教旨主义者( &a data-hash=&745d015c4b6be2ccf125e93& href=&//www.zhihu.com/people/745d015c4b6be2ccf125e93& class=&member_mention& data-editable=&true& data-title=&@Applebloom& data-hovercard=&p$b$745d015c4b6be2ccf125e93&&@Applebloom&/a& ,现在又多了一位 &a data-hash=&33bdf5b24aeeecbd76be9bf7& href=&//www.zhihu.com/people/33bdf5b24aeeecbd76be9bf7& class=&member_mention& data-hovercard=&p$b$33bdf5b24aeeecbd76be9bf7&&@blue dark&/a& ),认为魂斗罗是用6502汇编写成的,所以我应该用6502汇编写出上面的程序,所以我决定现查6502指令集手册,写一个等同于上面C代码的6502汇编……没条件测试,我现在也很困,不确定100%正确,而且这个代码应该对理解本答案没有任何帮助……没兴趣的人可以无视,这是我第一次写6502汇编,如果有高手发现错误轻喷……&br&&div class=&highlight&&&pre&&code class=&language-text&&; typedef struct _SPREADGUNBULLET {
; } SPREADGUNBULLET;
; typedef struct _PLAYER {
; } PLAYER;
; 假设已经定义S弹内存地址为SBULLET,对应SPREADGUNBULLET构造体
; 假设已经定义1P数据为PLY1,对应PLAYER构造体
; 直接访问PLY1构造体变量的各种宏也已定义
; 发射S弹的子程序为SHOTSBUL
; X计数器45(5字节一组,对应SPREADGUNBULLET构造体,[9]~[0])
LOOPGETSBUL LDA (SBULLET),X
; 读取SBULLET[X/5].available
BNE ENDSBUL
; 如果非0,结束循环
; X寄存器不能直接做数学运算……
; 计数器-5
BPL LOOPSBUL
; 如果大于0(也就是还没到10组子弹的范围)则循环
ENDGETSBUL RTS
SHOTSBUL LDY #4
; Y计数器4,对应5发子弹[4]~[0]
SETSHOTSBUL JSR GETSBUL
; 获取空余子弹槽位
BMI ENDSHOTSBUL
; 如果结果小于0(也就是没有剩余)则结束
; .available = 0
STA (SBULLET),X
; X现在指向.x
LDA (PLY1DIR)
; 发射方向向玩家面朝方向平移8像素,对准枪口
BEQ SHOTSRIGHT
; 如果为0则朝右
JMP SHOTSXSET
SHOTSRIGHT LDA #8
SHOTSXSET ADC (PLY1X)
STA (SBULLET),X
; .x = PLY1.x + (PLY1.direction ? 8 : -8)
; X现在指向.y
LDA (PLY1Y)
STA (SBULLET),X
; .y = PLY1.y
; X现在指向.deltax
LDA (PLY1DIR)
BEQ SHOTSDRIGHT
; 如果为0则朝右
LDA (DLISTX),Y
; 因为朝左,所以取反
JMP SHOTSDXSET
SHOTSDRIGHT LDA (DLISTX),Y
SHOTSDXSET STA (SBULLET),X
; .deltax = PLY1.direction ? dListX[Y] : -dListX[Y]
; X现在指向.deltaY
LDA (DLISTY),Y
STA (SBULLET),X
; .deltay = dListY[Y]
BPL SETSHOTSBUL
; 如果Y大于0(还没到5个一组),则继续循环
ENDSHOTSBUL RTS
&/code&&/pre&&/div&
谢邀=w= 这个其实看它的behavior就很容易猜出程序是怎么写的了 S抢的发射逻辑是,一枪发射前方扇形5颗子弹,屏幕上最多不超过10颗子弹 两枪之间并没有最小发射间隔(连射键是我们“中华FC”后加的功能,那时候谁tm能想到玩家能连续每秒15次20次的速度输入啊…
----------------------------&br&&br&本文同时发在我的 Blog,在那里或可获得更好的阅读体验:&br&&a href=&//link.zhihu.com/?target=http%3A//gulu-dev.com/post/-open-world& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&[知乎] 开放世界游戏中的大地图背后有哪些实现技术?&/a&&br&&br&----------------------------&br&&br&首先肯定一下,这是一个非常有趣的问题。在这个答案里,我将尝试先回答主干问题,再对补充说明里的几个问题简单说一下。&br&&br&下面是本文将涉及到的一些相关技术的列表,(需要说明的是,这些技术单独来看并不复杂,实际动手实现并理解各种取舍以后,在项目当中针对具体的需求去设计和搭配才是关窍之所在)&br&&br&----------------------------&br&&br&&b&一、程序技术篇:算法和架构(Programming Algorithms & Architecture)&/b&&br&1. 无限循环的平铺地图(Infinite Tiling)&br&2. 可预测随机数和无限宇宙(Predictable Random)&br&3. 精度问题解决方案(Precision Problem Solving)&br&4. 超大地形的处理 (Terrain Visualization)&br&
4.1 古典算法(从 GeoMipMapping,Progressive Mesh 到 ROAM) &br&
4.2 层次的艺术(Quadtree 和 Chunked LOD)&br&
4.3 以GPU为主的技术(Paging,Clipmap 到 GPU Terrain)&br&5. id tech 5 的 megatexture (超大地表上的非重复性海量贴图)&br&6. 过程式内容生成 (Procedural Content Generation)&br&
6.1 过程式纹理(Procedural Texturing)&br&
6.2 过程式建模(Procedural Modeling)&br&&br&&b&二、内容制作篇:设计和创造(Content Design & Creation)&/b&&br&1. 随机地图类游戏 (Diablo II) 中地图的拼接&br&2. 无缝大世界 (World of Warcraft) 中区域地图的拼接&br&3. 卫星地质数据的导入,规整化和再加工(一些飞行模拟类游戏)&br&4. 超大地图的协同编辑:并行操作,数据同步,手动和自动锁的运用&br&&br&&b&三、异次元篇:我们的征途是星辰大海&/b&&br&1. 终极沙盒(EVE):当规模大到一定程度——宇宙级别的混沌理论与蝴蝶效应&br&2. 打通两个宇宙(EVE & Dust):发现更广阔的世界——宇宙沙盒游戏和行星射击游戏联动&br&&br&----------------------------&br&&br&## 一、程序技术篇:算法和架构(Programming Algorithms & Architecture)&br&&br&### 1. 无限循环的平铺地图(Infinite Tiling)&br&&br&我们就从最平淡无奇的无限循环平铺地图说起吧。这应该是最原始,也是最没有技术含量的开放世界构筑方式了。&br&&br&技术上由于过于朴素,也没什么好说的,就是在同一个坐标系内像铺地砖那样展开,坐标对齐即可,就是接头处需要注意一下,不要穿帮就行。但是千万别因为简单就小看这个技术哟,上面列表里面的不少技术都是在循环平铺的基础上发展起来的,下面我们就来瞧一瞧吧。&br&&br&按照维度的不同,循环平铺有下面三大类:&br&&br&a. 在一维方向上扩展的横版卷轴游戏(以动作类游戏为主)和纵版卷轴游戏(以射击类游戏为主)。这些类型的游戏里,为了避免循环平铺给玩家带来的重复的疲劳,卷轴游戏会添加一些随机或动态的元素,比如超级玛丽里的背景上云朵的位置,分出多个层次以不同速率卷动的背景层,等等。&br&&br&&figure&&img src=&https://pic2.zhimg.com/ba1ab15421cdadd00a30dd3c736e997d_b.jpg& data-rawwidth=&392& data-rawheight=&220& class=&content_image& width=&392&&&/figure&&br&&br&&br&b. 在二维方向上循环平铺的固定视角2D游戏。这一类游戏里,比较典型的就是 Diablo。暗黑中的随机地图生成,在本质上,就是叠加了一定的随机性,约束和边界条件的循环平铺效果。&br&&br&&figure&&img src=&https://pic3.zhimg.com/47a0c8c78f1adf3afcee_b.jpg& data-rawwidth=&550& data-rawheight=&413& class=&origin_image zh-lightbox-thumb& width=&550& data-original=&https://pic3.zhimg.com/47a0c8c78f1adf3afcee_r.jpg&&&/figure&&br&&br&&br&c. 在 3D 游戏里循环平铺高度图,形成连绵不断的地形效果。这在早期的模拟飞行射击类游戏里比较常见,现在已经很难搜到图了,我在上大学的时候写的第一个地形渲染 demo 就是平铺的,可惜刚刚翻硬盘已经找不到了555。这一类游戏,在平铺时适当地辅以一些贴图的变化,可以在很省内存的条件下,做出非常不错的效果。&br&&br&找不到游戏内的图,拿下面这个高度图来凑数吧。请大家脑补一下,把下面这个灰度图立体化之后,一块一块像地砖一样循环平铺以后,3D渲染出来的连绵起伏的直抵地平线(好吧,直抵远裁剪面)的山脉的壮观效果吧。&br&&br&&figure&&img src=&https://pic2.zhimg.com/b9c4ebfd28bccc8475ac1d_b.jpg& data-rawwidth=&512& data-rawheight=&512& class=&origin_image zh-lightbox-thumb& width=&512& data-original=&https://pic2.zhimg.com/b9c4ebfd28bccc8475ac1d_r.jpg&&&/figure&&br&&br&----------------------------&br&&br&### 2. 可预测随机数和无限宇宙(Predictable Random)&br&&br&(本节内的描述和算法,部分参考了《Game Programming Gems I》 [“2.0 Predictable Random Numbers”](&a href=&//link.zhihu.com/?target=http%3A//www.gameenginegems.net/gemsdb/article.php%3Fid%3D75& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Graphics and Game Gems Database&/a&) 一文,请感兴趣的同学自行查找原文通读)&br&&br&有个传说中的游戏叫 Elite ,不知道有没有同学玩到过。据说这游戏运行在32K内存的机器上,其中16K还是只读的ROM。这游戏据说拥有难以匹敌的游戏深度:近乎无限个行星,每一个都有各自的名字和特征。&br&&br&可预测随机数本身是游戏内运用非常广泛的一个技术,这里我们着重谈一下它在为游戏提供(微观上)更丰富的细节和(宏观上)更广阔的世界的作用。这一技术的最重要原则是,为了在一个游戏世界中给出无限空间的幻觉,我们需要满足两个分解条件,可以把它们成为宏无限(macro-infinite)和微无限(micro-infinite)”。前者涉及到问题的空间规模,后者则任意一个对象所支持的最小细节层次级别。&br&&br&----------------------------&br&&br&从实现上来说,如何设定随机种子是这个技术的核心。由于给定一个随机种子,生成的随机序列是完全可预测的,那么根据游戏内的一些时空的设定,通过对随机种子进行一些定制,得到在游戏内任意某个时刻和某个空间点上完全可预测的行为就是可行的了。&br&&br&最简单的是使用以下几个元素与随机种子配合计算:&br&1. 世界坐标(即 X Y Z 值,既可以表示空间中的某个点,也可以表示某个区域)&br&2. 系统时间(可以用真实时间,也可以用游戏内设计者定义的时间,如果是前者的话需要考虑离线时的处理)&br&3. 正态分布(在游戏里建一个查找表即可,这是最廉价的方案)&br&&br&这些因素加上对应的随机序列,已经可以营造出宏观上比较有深度的一个宇宙空间了。理论上,如果所有的随机性都是由给定的随机种子产生,而这些随机种子要么是游戏定义的常量,要么是查表得到,要么是均匀流逝,要么是由更高层次的随机种子生成,那么这样一层一层上溯到尽头的话,任何一个游戏内的宇宙,都可以归因到一个初始的种子,这个种子,就是决定论中经典物理学的所谓的&b&第一推动&/b&吧。其实如果真做到了这一点,我们大可以把这个种子交给玩家,在首次进入游戏的时候掷一个 2^64 骰子。这是真正的上帝创世的感觉,想象一下,上帝说,要有光,于是掷出了骰子,第一推动怦然落地,整个时空的巨大齿轮开始运转,在不同的时间点和空间点上,更多的随机序列被生成出来...&br&&br&&figure&&img src=&https://pic1.zhimg.com/50bde2249146cce4ea9c_b.jpg& data-rawwidth=&640& data-rawheight=&517& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic1.zhimg.com/50bde2249146cce4ea9c_r.jpg&&&/figure&&br&&br&&br&这幅图来自于游戏 Frontier:Elite II(出自[这篇文章](&a href=&//link.zhihu.com/?target=http%3A//rakanalysis.wordpress.com//from-the-archive-frontier-elite-ii-a-retrospective-review/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&rakanalysis.wordpress.com&/span&&span class=&invisible&&//from-the-archive-frontier-elite-ii-a-retrospective-review/&/span&&span class=&ellipsis&&&/span&&/a&)),下面配的字样是:&b&“This picture doesn't even begin to show the scale of the universe.”&/b& 大家感受一下。&br&&br&----------------------------&br&&br&微观上本质上也是一样的,只是把发散的过程倒过来,变成了逐级收敛的过程。为了在某一个点上放大时,能得到尽可能细致,准确和一致的表现,我们需要对较低层次的世界定义更丰富的规则和约束,比如黑洞对周围的影响情况,双星体系的轨道,恒星的种类与行星个数之间的对应关系,不同恒星系结构下行星表面的大气构成,等等。这样才能较好地平衡多样性和独特性,带来更真实的模拟效果和更令人信服的游戏体验。&br&&br&----------------------------&br&&br&### 3. 精度问题解决方案&br&&br&当足够大尺度的世界被创建出来时,就会自然而然地遇到精度的问题。同时这也是补充说明中提到的一个问题,这里我们简单介绍一下几种实践中的解决方案。&br&&br&先描述一下问题吧,我们知道,IEEE754 中规定的32位浮点数中,有23位是用来表示尾数的。也就是说,对于接近1的浮点数,可能会带来 2E-24 左右的误差(大约是 0.)以现实单位计算的话,如果游戏世界是边长为100km的正方形,那么在这个正方形的最远角落里,我们的最小空间单位是约 7.8 毫米;而如果是中国这么大的面积的话,空间误差将达**半米**左右。那么可以想象一下,如果是宇宙级别的游戏,采用32位浮点数作为全地图精度,那么实际误差可能会有多么大。&br&&br&在实践中,这种误差可能会带来以下这些影响:&br&&br&1. &b&无法将相邻的对象对齐&/b&。这种情况,场景美术(关卡设计师)应该会比较头疼,这对于游戏的编辑器来说是大问题了。物件没法在引擎编辑器里对齐;在不同的平台上,对齐也不一样;甚至不同的编译器,同一个编译器的不同版本编出来的引擎;对齐都不一样 ... 所以说处女座不要做 LD :P。&br&2. &b&模型间的穿插和裂缝&/b& 本来封闭的墙角可能漏个洞,本来放在地上的石头变成了悬浮在空中。这实际上是上一种的变种。&br&3. &b&骨骼动画的抖动&/b& 由于世界矩阵往往参与骨骼动画的运算,误差可能会被逐级放大,在那些最远离根骨骼的骨头上(也是玩家最容易注意到的地方),抖动可能会发生得非常剧烈。&br&4. &b&物理模拟失真&/b& 一些柔体的模拟可能会直接失败,而刚体也可能会产生怪异的运动。碰撞系统也可能无法正常工作。&br&&br&所有这些一旦发生,都是很容易觉察的。一旦你发现在一个很大的坐标上有这些问题,而接近原点处问题却消失了,那么很有可能就是精度在作怪。而需要注意的是,出现这种问题,只和游戏中出现的数字的规模和跨度有关,和游戏选择了什么样的长度单位(如用毫米还是公里做单位)无关。&br&&br&----------------------------&br&&br&那么怎样使用有限的坐标精度来描述较大尺度的世界呢?&br&&br&最直接的方案是 &b&使用双精度浮点数 &/b&(64 位),如果这是可接受的选择,那么就不必费心引入后面讨论的复杂度了。&br&&br&其次是 &b&区域划分法&/b& 。我看到 &a data-hash=&1e2cccc3ce33& href=&//www.zhihu.com/people/1e2cccc3ce33& class=&member_mention& data-editable=&true& data-title=&@Milo Yip& data-hovercard=&p$b$1e2cccc3ce33&&@Milo Yip&/a&
同学已提到,不过这里出于完整性的考虑,再简单说一下。正如 Milo 同学所说,“把世界划分成不同的区域,在区域内的计算使用其局部坐标系统。”相对应的跨区访问,需要对应的“本地A -& 世界 -& 本地B”的坐标转换。&br&&br&还有一个方案是 &b&节点中转法&/b&。正如移动电话的基站用来承载和协调整个通信网络那样,我们在游戏的给定活动区域使用静态信标,所有的逻辑上与之相关的单位,都以该信标的坐标作为参考单位,这样也可以做到把数据访问局部化。相距足够远的两个物体(相当于上面的跨区访问)交互总是通过静态信标来完成(正如移动电话网络中发生的那样),这样的好处是相关的复杂度可以隔绝在这个中转系统的内部。&br&&br&此外
&a data-hash=&9a5b0b946e064a3a170f04c2d3563a78& href=&//www.zhihu.com/people/9a5b0b946e064a3a170f04c2d3563a78& class=&member_mention& data-editable=&true& data-title=&@凯丁& data-hovercard=&p$b$9a5b0b946e064a3a170f04c2d3563a78&&@凯丁&/a&
同学提到了一个&b&坐标转换法&/b&,“所有位置信息都以角色位置为中心做一次转换”。这正是 《Game Programming Gems IV》 [“4.0 Solving Accuracy Problems in Large World Coordinates”](&a href=&//link.zhihu.com/?target=http%3A//www.gameenginegems.net/gemsdb/article.php%3Fid%3D280& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Graphics and Game Gems Database&/a&) 文中的方案。这个方案可以解决部分问题(主要是渲染相关的问题),但是仍有一些问题需要考虑,比如:1. (上面提到的)编辑器内操作的物体,在序列化到文件中时,精度丢失的问题。2. 大部分物理模拟通常需要一个角色无关,摄像机无关的全局坐标系。等等。&br&&br&----------------------------&br&&br&### 4. 超大地形的处理 (Terrain Visualization)&br&&br&终于说到对超大地形的处理了。可以说从上世纪九十年代起,超大地形的可视化,一直是3D游戏领域热门的话题。今天我们就借着这个机会,把相关的算法和实现理一理吧。&br&&br&考虑到篇幅太长的话,俺的手指头招架不住,再一个不少对这个话题感兴趣的同学可能压根就不是程序员,一些实现细节可能我就只是简单提一下,贴代码什么的还是算了,尽量保证整篇文章的信息浓度适中吧。&br&&br&----------------------------&br&&br&总的来说,这十多年来,地形渲染技术的发展史就是一部生动的对现代GPU的开发,利用和改进史。整个过程大致可以分成三个阶段:一开始,GPU处理顶点能力很弱,这个时期的各种精巧算法(如一些VDPM和后期的ROAM),**尽力在用CPU来降低顶点的总量**,避免一不留神压垮图形系统;后来,图形系统的能力上去了,人们开始更多地考虑到**把地形系统融入到通用的场景管理**中去,如四叉树八叉树什么的就是在这个阶段被广泛应用的;再往后,GPU已经很强大了,CPU由于要承担更复杂的游戏逻辑,越来越成了整个系统的瓶颈,这个阶段,人们琢磨的更多的是,怎么**利用GPU给CPU减负**了,一直到如今,由 GPGPU 带动起来的异构计算,也都是这个路数。&br&&br&----------------------------&br&&br&由于内容比较杂,超大地形这个段落,按上面的描述,咱们分为三个小段分开来讲吧。让俺先沏上一杯碧螺春,为客官一一道来。&br&&br&#### 4.1 古典算法(从 GeoMipMapping,Progressive Mesh 到 ROAM) &br&&br&&b&GeoMipMapping&/b& 是从纹理的 MipMapping 技术演化来的一个地表处理技术,原理上是根据任何一小块地形在屏幕上显示的实际尺寸(主要跟与摄像机的距离和起伏程度有关)来选择对应密度的网格,然后把不同分辨率的网格之间以某种方式拼接起来(没有这一步的话就会有裂缝),本质上是一种比较粗糙的区域 LOD 算法。顺便说一下,由于那时候针对顶点级的处理很多,导致这种T型裂缝很常见,以至于有个专门的名字叫“T-Junction”,针对这个的处理在当时也有很多方案。&br&&br&&figure&&img src=&https://pic2.zhimg.com/a009ae667fd9_b.jpg& data-rawwidth=&551& data-rawheight=&398& class=&origin_image zh-lightbox-thumb& width=&551& data-original=&https://pic2.zhimg.com/a009ae667fd9_r.jpg&&&/figure&&br&&br&这是俺刚刚到老硬盘里刨出来的大三时写的 GeoMipMapping 代码,编了一下居然还能跑起来。有点土,别介意:P 可以看到不同的 MipMap 级别是用不同的颜色渲染的,也可以看到接头处 T 型裂缝的处理。唉,这代码勾起了俺的青葱回忆啊,那就顺便再来两张 T 型裂缝的示意图和消除过程吧。&br&&br&&figure&&img src=&https://pic3.zhimg.com/14d993ba8c1bdde03a2e_b.jpg& data-rawwidth=&522& data-rawheight=&535& class=&origin_image zh-lightbox-thumb& width=&522& data-original=&https://pic3.zhimg.com/14d993ba8c1bdde03a2e_r.jpg&&&/figure&&br&&br&----------------------------&br&&br&&figure&&img src=&https://pic1.zhimg.com/cd4ebdf412bfe4538a6ddd1fb7b2a3fc_b.jpg& data-rawwidth=&612& data-rawheight=&495& class=&origin_image zh-lightbox-thumb& width=&612& data-original=&https://pic1.zhimg.com/cd4ebdf412bfe4538a6ddd1fb7b2a3fc_r.jpg&&&/figure&&br&&br&----------------------------&br&&br&&b&Progressive Mesh&/b& 是后来很流行的技术 Simplygon 的前身,原理上基本也是一致的,就是以某种方式渐变性地化简某个给定的 Mesh。&br&&br&渐进式网格有两种:视点无关的 (View-Independent Progressive Mesh,VIPM) 和视点相关的 (View-Dependent Progressive Mesh,VDPM)。两者的区别就是,前者预先离线生成好所有的渐变过程,运行时直接用就行(也是后来 Simplygon 采用的方案),而后者随着摄像机的位置和角度的变化,生成对应的简化模型。两相对比,VIPM的好处是运行时运算开销低,简化模型的效果好,缺点是费内存(因为数据都存下来了,当然后来增量的方式能省一些),而VDPM在当时是不错的选择,因为跟VIPM相比不用费额外的内存,而且对于视点(就是摄像机)变化不剧烈的应用,不需要每帧处理和更新对应的简化模型(普通的MMO类的一般一秒一次就够了),此外由于一些简单的遮挡剔除和背面剔除,能够比VIPM裁掉多得多的顶点(一般能多裁1/3到一半吧,在当时这可是头等大事)。&br&&br&总的来说,至少在当时,两者的应用都比较广泛,而到了后来,显存越来越大,总线却越来越紧张,VDPM这种典型的刷顶点的算法(比较费总线带宽)就逐渐失去了市场,这是后话了。&br&&br&大家可以在[这里](&a href=&//link.zhihu.com/?target=http%3A//www.cbloom.com/3d/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&3d Page (www.cbloom.com/3d)&/a&)看到一些 PM 在地形渲染上的应用。图咱就不上了,大家可以到 Simplygon 的网站上去看。&br&&br&----------------------------&br&&br&&b&ROAM&/b& 可算作是上面提到的 VDPM 更进一步了。这个算法实际上借鉴了当时主流引擎的标配BSP的思路,想利用二叉树这个最简洁的空间描述数据结构,把(CPU端的)顶点消减发挥到极致。整个地表被组织成一个巨大的二叉树,有两个队列,一个是分割队列,一个是合并队列,分别用于处理摄像机移动时,增加进入视野的区域细节和消减退出视野的区域细节。精心设计的 ROAM 效果非常华丽(尤其是在线框模式下),你会看到在各种因素的影响(包括局部坡度,与摄像机的夹角,遮挡情况等等)下,各种三角形像魔术般的不断地变幻,生成和擦除超多的细节,效果非常魔幻。我印象很深的是当时连续打Quake3两个小时完全无感的我,调试这玩意的时候,每每不到十分钟眼就花了。&br&&br&网上找了两张比较典型的 ROAM 大家感受一下吧。&br&&br&&figure&&img src=&https://pic2.zhimg.com/07be8d1e331b9b1b7ebae1_b.jpg& data-rawwidth=&1003& data-rawheight=&749& class=&origin_image zh-lightbox-thumb& width=&1003& data-original=&https://pic2.zhimg.com/07be8d1e331b9b1b7ebae1_r.jpg&&&/figure&&br&&br&----------------------------&br&&br&&figure&&img src=&https://pic3.zhimg.com/d276affe4ed461cb33408e_b.jpg& data-rawwidth=&636& data-rawheight=&398& class=&origin_image zh-lightbox-thumb& width=&636& data-original=&https://pic3.zhimg.com/d276affe4ed461cb33408e_r.jpg&&&/figure&&br&&br&----------------------------&br&&br&&br&#### 4.2 层次的艺术(Quadtree 和 Chunked LOD)&br&&br&其实用于空间管理的树状结构有四叉树和八叉树(还有上面的二叉树),但地表通常以前者居多。是因为,从小范围来看,变化剧烈的地形是3D的,适合八叉树在xyz三个方向上扩展;但当尺度大到一定规模之后,地形通常退化为相对扁平的2D空间,就像摊平了的地球表面那样,在竖直的Z方向上变化相对不大,而XY平面则是可能无限延伸的。&br&&br&&b&Quadtree&/b& 四叉树很直白,具体的细节我就不讲了。值得一提的是四叉树往往也同时用于场景管理的快速剔除和查找,从理论上来讲,四叉树是一个平面上最迅速的用于剔除空间,定位一个物体,内存开销也是相对较低的数据结构。当用于地形渲染时,顶点剔除的效率也很高,我印象中仅次于高度优化的 ROAM。内存开销低主要是因为四叉树是可以完美展开到一个位数组里的,这样的话意味着整个树的利用率达到了百分之百——所有的空间都用来存储数据而不是维持结构。&br&&br&不过四叉树也不是啥都好,T型裂缝就比 GeoMipMapping 难处理,因为存在跨级的多段 T 缝,如下图:&br&&br&&figure&&img src=&https://pic2.zhimg.com/1b93ffaf7dfefee85af1_b.jpg& data-rawwidth=&326& data-rawheight=&311& class=&content_image& width=&326&&&/figure&&br&&br&&br&除此之外还有一些细节问题,这里就不一一说明了,地形的四叉树渲染还是有很多细节需要细心处理的,此处暂且放下不表。&br&&br&----------------------------&br&&br&&b&Chunked LOD&/b& 是一种杂合改良的 LOD,其实糅合了上面说的不少细节,本质上是一种分区块地消减细节的技术。所谓 Chunk 是批量处理的一种方式,只是一种粒度划分的单位而已,跟现在 Java 的 GC 里分区回收概念上差不多。&br&&br&下面是典型的 Chunked LOD 后的效果:&br&&br&&figure&&img src=&https://pic3.zhimg.com/f061aa7fd657ea01a4fbb4b5b7579c7a_b.jpg& data-rawwidth=&1015& data-rawheight=&378& class=&origin_image zh-lightbox-thumb& width=&1015& data-original=&https://pic3.zhimg.com/f061aa7fd657ea01a4fbb4b5b7579c7a_r.jpg&&&/figure&&br&&br&顶点多次过滤优化后的效果:&br&&br&&figure&&img src=&https://pic2.zhimg.com/fcaffd00ee8d67b93aa2701_b.jpg& data-rawwidth=&901& data-rawheight=&439& class=&origin_image zh-lightbox-thumb& width=&901& data-original=&https://pic2.zhimg.com/fcaffd00ee8d67b93aa2701_r.jpg&&&/figure&&br&&br&&br&效果在当时还是很惊艳的。通常不到50k的渲染数据量已经能有非常逼真的效果了。&br&&br&----------------------------&br&&br&#### 4.3 以GPU为主的技术(从 Paging,Clipmap 到 GPU Terrain)&br&&br&上面的基本上都是传统方案,这一节我们将逐渐过渡并挨个介绍一下以 GPU 为运算主体的算法。&br&&br&----------------------------&br&&br&所谓&b&分页&/b&(Paging)实际上是仿效虚拟内存的运行机制的一种方法。由于地表的顶点数据都是静态数据,适合常驻显存。当世界尺度较大时,显存没法一次放入所有数据,那么系统就像虚拟内存那样,把那些暂时没有用到的数据交换出去。随着游戏的进行,Paging In/Out 也在不断进行,辅以一定的异步机制,加载到显存的延迟可以被很好地掩盖。玩家的直观感受就是:哇,海量的细节。&br&&br&&figure&&img src=&https://pic1.zhimg.com/ea740fdbaed05c5102354_b.jpg& data-rawwidth=&996& data-rawheight=&798& class=&origin_image zh-lightbox-thumb& width=&996& data-original=&https://pic1.zhimg.com/ea740fdbaed05c5102354_r.jpg&&&/figure&&br&&br&----------------------------&br&&br&而 &b&Clipmap &/b&则比 Paging 更进一步,以金字塔的形式逐级把数据排列好,直接整体更新和渲染。从这里也可以看出 GPU 时代人们的思维方式的逐步变迁。从以前顶点级别(Vertex Level)的“锱铢必较”,到后来的一次多塞一点也无所谓,只要批次(Batch)少就 OK。下图可以看出 Clipmap 的基本思路。&br&&br&&figure&&img src=&https://pic2.zhimg.com/811bdc0e3fb8be4ab928d5_b.jpg& data-rawwidth=&1071& data-rawheight=&467& class=&origin_image zh-lightbox-thumb& width=&1071& data-original=&https://pic2.zhimg.com/811bdc0e3fb8be4ab928d5_r.jpg&&&/figure&&br&&br&----------------------------&br&&br&所谓的 &b&GPU Terrain Rendering&/b& 就是把高度图从内存里经由 2D Vertex Texture 搬到 VS 里去生成三角面,这样的好处是 CPU 和内存就被彻底解放出来了。只是访问上有一些限制,不像直接处理内存那样方便。具体的细节可以看这里:[GPU Gems 2: Terrain Rendering Using GPU-Based Geometry Clipmaps](&a href=&//link.zhihu.com/?target=http%3A//http.developer.nvidia.com/GPUGems2/gpugems2_chapter02.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GPU Gems - Chapter 2. Terrain Rendering Using GPU-Based Geometry Clipmaps&/a&)&br&&br&在 GPU 上做还有个巨大的好处是可以借助 Gaussian Noise 即时生成更多的细节了。直接拿一小块预生成的高斯噪点图在需要的时候叠加一下,就能在没太大额外开销的情况下,增加各种细节。如下图所示:&br&&br&&figure&&img src=&https://pic3.zhimg.com/fba8d154a04fe4c1e3a8c24e4d8645fe_b.jpg& data-rawwidth=&418& data-rawheight=&194& class=&content_image& width=&418&&&/figure&&br&&br&----------------------------&br&&br&随着大家对 GPU 理解的深入,地形的处理又有很多的小技巧可以做,尤其是在 PS 里面,比如法线生成,动态uv展开,光照按需叠加/衰减什么的。不过呢据我所知没有什么非常别具一格的架构上的新思路了,所以就不再深入了。&br&&br&### 5. id tech 5 的 megatexture (超大地表上的非重复性海量贴图)&br&&br&&b&megatexture &/b&在当年(2007)是一个非常值得一提的技术。在这个技术出现之前,几乎所有的地表渲染用到的贴图都是若干张 blend 到一起后,以 tiling 的形式重复平铺在地表上的(包括比较典型的魔兽世界也是如此),这样的直接后果是图片的种类用多了耗资源,用少了又很容易感到单调和重复。而 megatexture 则是一张全局的超大贴图,从根本上避免了重复这个问题,理论上(实践上也是)能够生成非常壮丽和独特的地质风貌,是传统的刷地表无法创作出的效果。可以说这个技术让&b&真正的全景地貌&/b&成为可能。&br&&br&----------------------------&br&&br&技术上的细节puzzy老师写过一个 pdf,强烈推荐感兴趣的同学搜来看一下(可以搜“ **ID Tech 5 中&Megatexture&针对地形的D3D9
基本实现原理 - 姚勇**”),珠玉在前,我就不啰嗦了。就来一张效果图吧(好吧我知道能坚持看到这儿的同学,这图基本上肯定都看过了)&br&&br&&figure&&img src=&https://pic4.zhimg.com/cbca123634bdd402a1b1f_b.jpg& data-rawwidth=&845& data-rawh

我要回帖

更多关于 et官网 的文章

 

随机推荐