【任天堂】超级马力欧64专利 US6139433(节选)

【任天堂】超级马力欧64专利 US6139433(节选)
文章末尾附该超级马力欧64相关专利US6139433原文和附图
《超级马力欧64》在游戏史上的地位如何?
https://www.zhihu.com/question/56000001?utm_id=0《超级马力欧64》1996年开发者访谈
【英】https://shmuplations.com/mario64/
【中】https://zhuanlan.zhihu.com/p/261712273

Random: This Japanese Super Mario 64 Guide Book Is Simply Adorable
https://www.nintendolife.com/news/2016/05/random_this_japanese_super_mario_64_guide_book_is_simply_adorable

任天堂与 Super Mario 64 和 Nintendo 64 相关的该US6139433号专利被引用数多达61,此份专利曾被世嘉、索尼互娱、科乐美、南梦宫、史克威尔·艾尼克斯、微软、三星、迪士尼、Zynga、Autodesk、AT&T、惠普(Hewlett Packard Enterprise)、美光科技(Micron Technology)等全世界众多行业的多家知名公司所引用。




该任天堂US6139433号专利,优先权日为1995年11月22日,过期日为2015年11月22日。

任天堂US6139433号专利的国际专利分类:
A63F 9/22
A63F 13/02
A63F 13/06
A63F 13/10
G05G 9/00
G05G 9/047
G06F 3/033
G06F 3/038
G06F 3/048
G06F 19/00
G06T 15/10
CPC分类(Cooperative Patent Classification)
A63F 13/5255
A63F 13/42
A63F 13/55
A63F 13/95
A63F 2300/1018
A63F 2300/201
A63F 2300/206
A63F 2300/636
A63F 2300/64
A63F 2300/6653
A63F 2300/6661
A63F 2300/6669
A63F 2300/6676
A63F 2300/6684
A63F 2300/807
G05G 9/047
G05G 2009/0474
G05G 2009/04759
G06F 3/038
G06F 3/0383
G06F 3/04815
G06F 21/31
G06F 21/51
G06F 21/79
G06F 21/85
G06F 2203/0382
G06F 2221/2109
G06T 15/10

Video game system and method with enhanced three-dimensional character and background control due to environmental conditions
受环境条件影响、具有增强的三维角色和背景控制功能的视频游戏系统和方法
ABSTRACT
本发明涉及一种视频游戏系统,它包括一个可插入主机的游戏卡带,主机具有主处理器、3D图形生成协处理器、可扩展的主内存和玩家控制器。该系统还包括一个多功能外围处理子系统,它可以执行处理玩家控制器输入/输出的命令,从而减轻图形处理子系统的负担。该视频游戏方法涉及游戏级别组织特征、摄像机视角或视点控制特征,以及广泛的动画和角色控制特征。该系统根据各种条件和玩家操作的多个不同控制键/按钮/开关,自动改变“摄像机”角度(即三维世界中显示的视点)。该视频游戏系统和方法还具有一个独特的玩家控制器,它允许玩家以前所未有的程度控制角色在三维世界中的探索。玩家控制的角色可以通过组合操纵杆和/或十字开关和/或控制键来以多种不同的方式进行控制,并且生成了广泛的动画效果。
FIELD OF THE INVENTION
这篇专利的发明领域部分是关于一种提供增强交互式三维角色和背景屏幕效果以及玩家控制能力的视频游戏设备和方法。更具体地说,该发明涉及一种视频游戏系统,包括基于操纵杆的多功能玩家控制器和独特的视频游戏方法,具有开放级别的视频游戏组织、自动和用户控制的摄像机视角修改功能以及广泛的角色控制和动画特性,为视频游戏带来了新时代。
BACKGROUND AND SUMMARY OF THE INVENTION
基于微处理器的家庭视频游戏系统,如任天堂娱乐系统( Nintendo Entertainment System)和超级任天堂娱乐系统( Super Nintendo Entertainment System),部分原因是它们可以交互式地产生涉及许多动画移动对象的令人兴奋的视频图形,因此取得了巨大的成功。这里描述的视频游戏系统和方法允许进行涉及具有远超这些和其他已知视频游戏系统的深度和真实感的三维图像的游戏玩法。视频游戏系统具有独特的玩家控制器,它允许在前所未有的程度上控制角色对三维世界的探索。
本发明提供了视频游戏方法,标志着视频游戏玩法的新时代。根据本发明的视频游戏方法涉及游戏级别组织特性、摄像机视角或视点控制特性,以及广泛的动画和角色控制特性。
根据本发明的一个示例性视频游戏实施例,该实施例目前由发明人的受让人以"Super Mario 64"的名字销售,用于在Nintendo 64视频游戏系统上玩,一座城堡作为进入许多不同目标或级别的入口。一旦进入给定的目标或级别,玩家试图完成一组独立的目标,如找回隐藏在整个目标中的一组星星。通常,在现有技术的视频游戏中,一旦玩家完成了特定级别的要求,玩家就会自动提升到下一个级别。根据一个示例性实施例,一旦玩家积累足够的星星提升到下一个级别,玩家不会被自动推进到下一个级别。相反,玩家可以继续在当前级别玩,或者退出并返回到公共城堡区域。然后,玩家可以在城堡内选择一条路径重新进入与已经达到的级别相关联的已经完成的目标,或者选择探索城堡区域。实际上,本发明的视频游戏方法将所有已经完成的目标纳入开放级别环境。
根据一个示例性实施例,玩家不必完成所有目标(例如,在目标中积累所有可能的星星),就可以进入更深层次的目标。因此,可以退出第一目标,转移到不同目标,然后返回第一目标寻找更多隐藏的星星。在特定阶段或目标中没有固定顺序让玩家完成预定目标(如收集星星)。此外,两个不同玩家通过完成完全不同或基本不同的目标可能会晋升到更高阶段。
在这里描述的示例性实施例中,用户进入一个三维城堡,在城堡门提供通往有画作挂在城堡墙上的房间。玩家通过跳进画作并进入画作描绘出来的三维世界来进入目标。根据本发明的一个实施例,画作区域(例如,由高度定义)中玩家控制角色(例如Mario)跳跃进去会影响目标环境(例如显示出来目标水平取决于Mario跳跃进去画作区域)。
本视频游戏方法允许用户通过激活多个不同的控制器键/按钮/开关(例如,在示例实施中的四个"C"按钮)来操纵"摄像机"角度(即,三维世界中显示的视点)。控制键允许用户随时拉近以获得特写镜头,或拉远以获得广角视图,或向左右平移摄像机以改变视角。这种用户启动的摄像机操纵允许玩家更好地判断跳跃或更准确地确定物体相对于玩家控制的角色的位置。例如,一个摄像机视角控制按钮允许用户切换到一个调整为直接在玩家控制的角色后面的视角。这样,游戏中需要穿越非常狭窄的平台或封闭空间的部分可能会更成功地穿越。射击方向可以通过操作独特控制器的操纵杆来改变角色头部的方向,从而平滑地控制玩家想要看到的方向转换。通过利用切换三维显示视角的能力,玩家可以有利地增强游戏成功率,获得更好的攻击跳跃、导航狭窄边缘或发现角落里有什么的角度。因此,玩家可以通过明智地改变摄像机角度获得比其他方式可能的更高分数。
根据本发明的一个示例实施方式,本视频游戏系统会根据被控角色的情况自动改变摄像机的移动方向或修改视角,例如,他是在城堡内部、城堡外部、房间内部、奔跑、飞行、游泳等。在游戏处理器检测到例如存在墙壁在例如玩家控制的角色和摄像机视点之间时,会计算出防止摄像机的摄像头和可操作对象之间产生阻碍所需的摄像机移动。然后根据计算出的移动角度将摄像机移动到新位置。根据角色的情况自动改变摄像机视角以选择最佳摄像机角度,使玩家可以享受在三维世界中体验到的视觉效果。
根据本发明的示例实施方式,视频方法考虑了广泛的动画效果和角色控制技术。例如,可以通过轻微的控制器操纵杆移动或通过更大的操纵杆角位移来改变被控角色的步伐,同时控制角色在三维世界中的移动方向超过360度。玩家控制的角色的移动也作为他所站立的表面地形的函数进行控制。例如,角色的移动速度会根据角色是否站在水平向上或向下倾斜的平面上而改变。速度变化也是作为表面摩擦系数函数进行控制的,例如,表面摩擦力小,如冰或雪,或表面摩擦力大,如草地。玩家控制的角色可以通过使用操纵杆和/或十字开关和/或控制键的组合以多种不同的方式进行控制。对于按下特定控制键的解释取决于角色在三维世界中的状态和位置。例如,如果Mario处于静止或静态状态,通过操纵操纵杆,角色将被控制为奔跑。然而,如果在操纵杆被操作之前按下一个被称为"Z"按钮的控制键,角色将显示为蹲下。进一步的操纵杆操作将使角色看起来像是在爬行。如果Z按钮不是从静止位置按下,而是在Mario被控制跳跃后由于按下A按钮而按下,则Mario会砸地面而不是像上面描述的那样蹲下。
玩家控制的角色可以被控制进行连续跳跃、连续踢腿、后空翻、长跳等。此外,角色会对环境条件做出反应,如风、有害气体的存在(会触发咳嗽序列)以及许多其他模拟真实环境反应的效果。通过控制玩家控制的角色在运动中的身体方向,进一步模拟了真实的动画。例如,如果角色正在快速奔跑,角色的上半身会向前倾斜。另一方面,如果角色正在向一个方向或另一个方向转弯,角色的上半身会显示为向转弯的方向倾斜。
根据本发明的另一个实施方式,根据角色的移动速度修改用于显示玩家控制的角色的多边形数量,其中在更高速度时减少多边形数量。在低级速度下,用预定数量的多边形绘制角色,在高级速度下,用减少数量的多边形绘制角色,除了用于绘制脸部的多边形与第一级速度相同。以这种方式,角色被模拟成一种设计为对用户最真实的方式,用户在动画角色运动过程中更可能关注角色脸部,而不是身体。
BRIEF DESCRIPTION OF THE DRAWINGS
通过参考以下详细描述的当前优选的示例实施方式以及与图纸的连接,可以更好地和更完全地理解本发明的这些和其他特性和优点,其中:
图1是根据本发明的一个示例实施方式的视频游戏系统的透视图;
图2是图1中显示的视频游戏控制台和游戏卡带的方框图;
图3A、3B和3C是视频游戏控制台和卡带的示例,更详细的实现,如图2中的方框图所示;
图4A-F显示了使用本文所述系统可以实现的示例3D屏幕效果;
图5是图2中显示的外设接口的方框图;
图6是首选控制器顶部的外部透视图;
图7是图6控制器底部的外部透视图;
图8是控制器操纵杆的示例实施方式的内部结构;
图9是图6控制器的方框图;
图10是描述一个示例通用游戏程序流程和组织的流程图;
图11A是关于标题屏幕处理的流程图; 图11B显示了一个示例动画对象和跟踪对象的摄像机路径显现轨迹,与图11A流程图相关;
图11C、D、E、F和G显示了示例标题屏幕显示;
图12是描述涉及城堡外处理操作一般顺序的流程图;
图13A和13B是一个流程图和概念性图表,用于解释跟踪玩家达成目标情况的操作序列;
图14A描绘了涉及目标进步相关门开启处理程序中涉及的事件序列;
图14B示意性地演示了一个说明性和示例性的开启城堡门并前进的标准;
图15A和15B是描述城堡一楼处理的流程图;
图15C示意性地描绘了城堡布局,包括一楼、地下室、阳台、二楼、三楼和城堡外的庭院;
图15D显示了一个示例目标入口相关屏幕显示;
图16是一个流程图,显示了角色的目标入口方式对目标状态的影响;
图17是关于暂停模式处理的流程图;
图18是关于暂停模式摄像机处理的流程图;
图19A和19B显示了改变摄像机视角相关处理;
图20A-20H是用于解释图19A和19B处理的摄像机处理相关图表;
图21和22是描述摄像机模式处理的流程图;
图23A-23E描绘了示例摄像机模式;
图23F-L举例说明了玩家通过激活其中一个图6控制键来启动改变摄像机视角可能生成的屏幕显示效果;
图24A和24B是一个流程图,指示如何根据检测到的Mario的条件,或者在检测到Mario处于特定情况时,自动控制改变摄像机模式;
图25A-C显示了一个玩家控制的角色在具有不同坡度的表面上;
图26A和B描绘了示例地形表面和相关摄像机模式;
图27A和27B是流程图,指示玩家控制的角色,例如Mario,是如何被控制的;
图27C-27J显示了各种示例玩家控制器启动的动画效果;
图28A、28B和28C是流程图和图表,描述了控制显示角色速度的例程;
图29是关于选择用于生成角色的多边形数量的流程图;
图30是一个流程图,举例说明了角色如何响应环境条件;
图31是一个流程图,指示如何在跑步或角度运动期间控制角色的身体方向;
图32是一个流程图,指示环境或时间对Mario的影响;
图33A和33B是与控制器操纵杆在坐标系统中的物理倾斜量相关的图表;
图34A和34B举例说明了与操纵杆重置相关的屏幕效果。
DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENT
......
本发明针对的是一种新时代的视频游戏方法,其中玩家可以完全与使用上述视频游戏系统显示的复杂三维环境进行交互。本发明针对的是具有独特的游戏级别组织特性、动画/角色控制特性和多个“摄像机”角度特性的视频游戏方法。本发明的一个特别优选的实施例是用于在受让人的Nintendo 64视频游戏系统上玩Super Mario 64游戏,该游戏已在上文中部分描述。
图10是一个流程图,描述了本方法的一般游戏程序流程和组织。首先概括描述图10流程图中表示的处理的各种独特和/或重要方面,然后结合下面的其他图形详细讨论。例如,在将包含本发明实施例(如Super Mario 64游戏卡带)的程序的游戏卡带插入控制台52并打开电源后,开始标题屏幕处理(802, 804)。独特的标题处理提供了一种机制,允许用户在开始游戏前熟悉控制器56,如图6至9所示。如下面将进一步描述,标题处理程序生成Mario的脸部显示,同时允许用户使用各种控制键和例如控制器操纵杆45按需要扭曲脸部。此外,标题屏幕处理允许用户改变查看Mario的“摄像机角度”。
通过按下控制器开始键,然后显示选择文件屏幕,在其中可以选择四个游戏文件中的一个。玩家的进度被保存到选定的文件中。此外,玩家可以选择立体声、单声道或耳机音频模式。选择文件屏幕还允许查看每个保存文件的分数,并允许将显示切换到玩家的分数和迄今为止的最高分数之间。用户可以通过选择文件屏幕将一个保存文件的内容复制到另一个文件中,以便用户可以玩其他人保存的游戏而不影响其他玩家保存的数据。此外,还提供了删除选定文件中保存数据的选项,以便从游戏开始时开始游戏。当玩家再次按下开始键时,游戏开始。
在本示例实施例中,游戏以“Mario”角色探索围绕图4A-4F中描绘的城堡展开的三维世界为特色。启动一个城堡外处理程序(806),该程序允许用户控制角色Mario在城堡地面上漫步,并通过城堡周围的护城河游泳,以获得使用控制器操纵杆45和其他控制键可用于玩家的许多角色控制技术。
通过控制Mario进入城堡门(最好在图4E中显示),启动一个目标前城堡内部程序(810)。一旦进入城堡,玩家就有自由来控制Mario穿过城堡中的各个房间,而不是立即进入例如十五个三维目标之一,这些目标可以通过各种城堡房间进入,如下面将进一步解释。
通常,玩家通过控制Mario跳过一幅画,进入世界(这个世界可能由挂在城堡房间墙上的画所代表)。进入十五个目标中的一个会启动目标或级别处理程序(812)。十五个目标中的每一个都有预定数量的独立目标,例如7个,需要在其中完成。通常,目标是触摸目标中的七颗星中的一颗。玩家可以自愿退出目标,也可以被敌人击败。
玩家可以选择重新进入相同的目标或尝试进入另一个目标(814),如果是这样,程序就会回到块(812)的目标级别处理。如果没有选择相同或其他目标,那么用户就可以控制角色在城堡内部移动(816),因此程序可能会回到目标前,城堡内部处理(810)。或者,玩家可以选择城堡外部处理(818)。如果选择了城堡外部处理,那么程序就会回到城堡外部处理程序(806)。本质上,流程图块814、816和818描述了用户选择不同的三维世界目标或选择在城堡内部或外部漫游的自由。
如上所述,进入Super Mario 64的十五个目标或级别之一,是通过玩家跳入挂在城堡房间墙上的画来实现的。玩家能否进入一幅画取决于他或她能否打开通向目标的门。通过收集星星来获得通向门和其相关目标的访问权限。每个目标中都隐藏着七颗星。通过完成目标目标并触摸目标上的星星,可以获得六颗星。通过收集散布在目标各处的预定数量的硬币,可以获得第七颗星。玩家不必获得特定目标中所有的星星就可以进入下一个目标。此外,玩家可以退出一个目标,并在以后的时间点重新进入以获取以前未获得的星星。
图11A是一个与标题屏幕处理相关的流程图。然而,该流程图也适用于游戏结束的演示或其他希望允许玩家操纵显示字符的演示。图11B显示了一个动画对象和“摄像机”路径(显示的视点)的轨迹,这个路径似乎在跟随对象。在这样的标题和游戏结束演示中,摄像机的位置是时间函数。在给定的时间“N”,如图11B所示,摄像机有一个相关的摄像机位置角度,显示的角色有相关的位置和动画数据。在演示中,如在标题屏幕处理过程中,玩家的随机控制器操作影响了明显的“摄像机”位置。玩家可以将摄像机向上、向下或向不同的方向移动。
如图11A所示,在演示开始时,时间N被设置为零(825),然后,游戏处理器从内存中的数据表访问时间N处的摄像机位置和其角度(826)。然后在827处进行检查,以确定是否操作了控制器的“摄像机”控制“C”按钮。如果是这样,那么摄像机的位置和角度将相应地改变,这种方式将在下面(828)描述。如果在块827处的检查表明没有操作摄像机控制键,那么就启动对象位置控制,使得游戏程序处理系统从内存中的数据表访问时间N处的对象位置和动画数据(829)。然后进行检查,以确定是否操作了图6中的对象控制键/操纵杆(830)。如果操作了对象控制键或操纵杆,则根据玩家控制输入改变对象位置和其动画(831)。在831处进行处理后,其中改变了对象位置和动画数据,或者如果没有操作对象控制键或操纵杆,则根据先前获得的摄像机位置和角度显示对象(832)。然后,在相关计数器中增加时间N(833),并将程序分支回到块826,以反复继续标题屏幕处理或其他演示处理,直到例如,在标题屏幕处理中,玩家选择开始游戏。
图11C、D、E和F显示了一个示例标题屏幕显示序列。在图11C中,在开屏幕上出现Mario的脸。用户可以通过按A按钮来显示一个手形光标来移动Mario并玩弄他的脸。参见例如图11D。用户能够“捏”Mario的脸。使用图6中显示的操纵杆控制器,可以将显示的光标移动到各种位置,并使用A按钮来捏显示的角色。通过按住A按钮移动光标,可以拉伸Mario的脸。释放A按钮后,脸部恢复正常。在释放A按钮之前,如果用户按住R按钮,则可以捏更多区域的Mario的脸,并且脸会保持其扭曲形状,如图11D所示。通过按B按钮,可以使Mario的脸缩放和缩放,如图11E所示。通过操纵上下“C”按钮,如图11F所示,可以旋转Mario的脸。通过使用左右“C”控制键,如图11G所示,可以左右旋转Mario的脸。
图12显示了与图10的块806中先前描述的城堡外部处理相关的操作的一般序列。在标题屏幕处理之后,开始城堡外部处理,其中玩家可以控制Mario在城堡外部自由移动(835, 836),从而允许用户使用图6-9中显示的控制器56获得本文中描述的许多角色控制技术的经验。然后在块837处进行检查,以确定Mario是否触摸了城堡门。如果Mario没有触摸城堡门,那么程序就会回到块836,Mario继续在城堡地面上自由移动,并根据玩家的愿望在城堡周围的护城河中游泳。如果Mario触摸了城堡门,那么就启动城堡门打开过程(838),允许Mario进入城堡。当Mario进入城堡时,他继续到达城堡的第一层(839),程序分支到图10的块810的目标前,城堡内部处理程序,该程序在图15A和15B中详细描述。
在描述城堡内部处理程序之前,首先描述目标达成和目标或级别进展。图13A描绘了跟踪玩家达成目标的操作序列,例如,在游戏目标或级别中取得进展。目标检查处理开始时,首先确定Mario是否成功获得了一个硬币(875, 877)。如果Mario获得了一个硬币,那么就更新Mario在目标中获得的硬币数量。如果Mario没有获得硬币,那么程序就会分支到块887进行进一步处理。如果Mario获得了一个硬币,那么就更新Mario获得的硬币数量(879),然后检查是否Mario已经获得了超过一百个硬币(881)。如果当前获得的硬币数量少于一百个,那么程序就会分支到887进行进一步处理。如果Mario已经获得了一百个或更多的硬币,那么就检查883处是否已经显示了第七颗星。根据本示例实施例,每个目标最初都有六颗星与之相关联,玩家可以访问这些星。一旦玩家积累了一百个硬币,那么就会出现第七颗星,如果它还没有被显示出来(885)。以这种方式,第七颗星在积累了一百个硬币之前有效地被隐藏起来。如果在块883处的检查表明第七颗星已经被显示出来,那么处理就会分支到块887。在块887处进行检查,以确定Mario是否在目标处理过程中获得了任何星星。如果Mario没有获得星星,则程序分支到块893返回到主游戏处理程序。如果Mario获得了一个星星,则将玩家获得的星星数量增加1(889),并将当前总共获得的星星数量存储在内存中。在下面与图14A相关联的门处理过程中检查存储的星星数量。增加星数后,启动一个目标达成显示序列,在该序列中显示例如给出胜利或和平标志的Mario,在庆祝动画序列中(891),并将程序分支回到主程序(893)。如图13B所示,在概念上表示一旦玩家开始一个目标(如S所表示),玩家可以达成预定数量的独立目标G。在说明性实施例中,通过完成预定的任务或以其他方式发现目标中隐藏的星星,达成目标G。根据说明性实施例,获得一颗星并不是获得另一颗星的先决条件。
图14A描绘了与目标进展相关的门开启处理程序涉及的事件序列。门开启处理程序(900)最初检测玩家控制角色,即Mario,是否撞到门(902)。然后,访问需要打开撞到的门的星星数量(904)。然后进行检查,以确定打开撞到的门所需的星星数量是否等于或小于玩家当前获得的星星数量,这些星星数量是如图13A所述先前存储的。如果在块906处的检查表明已经获得了所需数量的星星,那么就开始处理生成显示帧,模拟打开门以允许角色进入并探索相关的城堡房间。如果没有获得所需数量的星星,那么如块910所示,生成一条消息,表示已经达到的星星数量不足以打开撞到的门。门处理程序在步骤908的门开启处理或步骤910的消息生成步骤之后退出,并分支回到主处理程序。玩家可以通过获取门钥匙来获得某些城堡门的访问权限。应该理解,访问一个门及其相关目标或目标并不限于获得任何预定的必需目标,如星星。
在先前艺术中的视频游戏中,为了完成特定目标或级别并进入下一个级别,通常需要完成一整套目标目标或目标。根据本发明,每个目标或级别都有一套独立目标,如图13B所示。例如,在Super Mario 64中,每个目标都有一个目标,即获取七颗星,其中一颗是通过在目标中获取预定数量的硬币来获得。如图14A中块906所示,进行检查以确定玩家获得的星星数量是否超过了打开门所需的星星数量。
图14B示意性地展示了根据本发明一个说明性实施例中打开城堡门和进步的示例标准,例如,在其中表示了十五个目标中的九个。如上所述,在说明性实施例中,每个级别或目标都有一个预定目标,例如获取七颗星。图14B示意性地表示了城堡各层上的九扇门,这些门通向城堡中预定的九个目标。虽然图14B中表示了九个目标,但这个数字仅用于说明目的(本发明的一个示例实施例Super Mario 64包括15个目标)。
如图14B所示,与其中表示的九个级别相关联的是获得七颗星。在图14B中显示的例子中,玩家可以自由地进入1-3级。通常,当进入一个目标时,会给出关于获取一个或多个星星的目标的线索。如果需要,玩家可以随时退出目标并稍后重新进入以获取新的线索。然而,为了进入例如4、5或6级,玩家需要获得二十一颗可能的星星中的预定数量。例如,可能需要十颗星才能打开通向4、5或6级的门。同样,为了让玩家进入7、8或9级,玩家必须已经获得了四十二颗可能的星星中的二十颗。以这种方式,玩家不必在每个级别中获得最大数量的星星就可以继续前进,并且允许玩家稍后重新进入目标以获取在初次尝试时未达到的额外星星。此外,还有一些星星是在不被认为是常规目标的区域中找到的。一些额外的星星是通过进入城堡中的一个隐藏区域获得的。在这样的隐藏区域中,通过发现隐藏区域中预定数量的硬币可以获得一颗星。此外,如果玩家在特定区域超过预定速度,可能会被授予星星。此外,玩家可能会通过与预定角色互动而获得一颗星。如图14B所示,两个不同的玩家玩游戏可能会在1、2和3级达成完全不同的目标集合,例如星星,然而只要他们在前三个级别中获得了所需数量的总星数,两个玩家都被允许访问4、5和6级。
转到图15A,当Mario进入城堡第一层(925)时,开始城堡内部处理,并显示城堡第一层(927)。程序允许Mario在城堡内部自由漫游。图15C示意性地描绘了城堡布局,包括第一层、地下室、阳台、二楼、三楼以及城堡外部的庭院。城堡本身和这个城堡布局仅仅是作为例子。应该理解,本方法设想了可以用作目标或级别入口点的各种建筑和地理布局。在本示例说明性实施例中,有十五个主要目标和几个小目标。要进入大多数目标,玩家进入一个城堡房间并跳入挂在城堡墙上的画中,在三维显示序列中如图15D所示。这些图片作为进入各种目标的入口点,并通常代表了玩家控制角色可以跳入其中的世界。
回到图15A,在块929处进行检查,以确定Mario是否触摸了通向城堡外部的城堡门。如果Mario接触了通向城堡外部的门,则Mario退出城堡以探索例如图15C所示的庭院,并且程序分支到城堡外部处理如933所示以重新进入图12城堡外部处理程序。
如图14B所示,与其中表示的九个级别相关联的是获得七颗星。在图14B中显示的例子中,玩家可以自由地进入1-3级。通常,当进入一个目标时,会给出关于获取一个或多个星星的目标的线索。如果需要,玩家可以随时退出目标并稍后重新进入以获取新的线索。然而,为了进入例如4、5或6级,玩家需要获得二十一颗可能的星星中的预定数量。例如,可能需要十颗星才能打开通向4、5或6级的门。同样,为了让玩家进入7、8或9级,玩家必须已经获得了四十二颗可能的星星中的二十颗。以这种方式,玩家不必在每个级别中获得最大数量的星星就可以继续前进,并且允许玩家稍后重新进入目标以获取在初次尝试时未达到的额外星星。此外,还有一些星星是在不被认为是常规目标的区域中找到的。一些额外的星星是通过进入城堡中的一个隐藏区域获得的。在这样的隐藏区域中,通过发现隐藏区域中预定数量的硬币可以获得一颗星。此外,如果玩家在特定区域超过预定速度,可能会被授予星星。此外,玩家可能会通过与预定角色互动而获得一颗星。如图14B所示,两个不同的玩家玩游戏可能会在1、2和3级达成完全不同的目标集合,例如星星,然而只要他们在前三个级别中获得了所需数量的总星数,两个玩家都被允许访问4、5和6级。
转到图15A,当Mario进入城堡第一层(925)时,开始城堡内部处理,并显示城堡第一层(927)。程序允许Mario在城堡内部自由漫游。图15C示意性地描绘了城堡布局,包括第一层、地下室、阳台、二楼、三楼以及城堡外部的庭院。城堡本身和这个城堡布局仅仅是作为例子。应该理解,本方法设想了可以用作目标或级别入口点的各种建筑和地理布局。在本示例说明性实施例中,有十五个主要目标和几个小目标。要进入大多数目标,玩家进入一个城堡房间并跳入挂在城堡墙上的画中,在三维显示序列中如图15D所示。这些图片作为进入各种目标的入口点,并通常代表了玩家控制角色可以跳入其中的世界。
回到图15A,在块929处进行检查,以确定Mario是否触摸了通向城堡外部的城堡门。如果Mario接触了通向城堡外部的门,则Mario退出城堡以探索例如图15C所示的庭院,并且程序分支到城堡外部处理如933所示以重新进入图12城堡外部处理程序。
如果Mario没有触摸通向城堡外部的门,则在块935处进行检查,以确定Mario是否触摸了通向地下室(如图15C所示)的门。如果Mario触摸了通向地下室的门,则在块937处进行进一步检查以确定Mario是否有打开地下室门的钥匙。这个序列说明,除了基于达成预定目标的门(即,访问预定数量的星星)之外,还有一些门是不能没有钥匙就打开的(地下室的门就是这些门之一)。玩家可能需要完成预定任务才能找到钥匙。如果Mario确实有打开地下室门的钥匙,那么Mario就被允许进入并在地下室中漫游(939),并且程序分支到地下室处理程序(941)。如果在937处的检查确定Mario没有打开地下室门的钥匙,那么程序就会回到块927进行进一步的城堡一楼处理。
如果在块935处的检查显示Mario没有触摸通向地下室的门,那么在943处进行检查,以确定Mario是否触摸了通向二楼的门,如图15C所示。如果Mario确实触摸了通向城堡二楼的门,那么进行进一步检查以确定Mario是否有打开二楼门的钥匙(945)。如果Mario确实有打开二楼门的钥匙,那么Mario被允许去二楼,然后显示Mario在二楼漫游(947),并且程序分支到二楼处理程序(949)。如果在块945处的检查显示Mario没有打开二楼门的钥匙,则程序分支回到块927进行进一步的城堡一楼处理。
如果在943处的检查显示Mario没有触摸通向第二扇门,那么如图15B所示,进行检查以确定Mario是否触摸了一楼的门1。如果Mario碰到了门1,那么Mario被允许通过跳过目标1的图片进入目标1,而不需要任何目标达成要求。完成或退出目标1后(953),程序分支回到块927,允许Mario在城堡一楼自由漫游。如果Mario没有碰到门1,那么在块955处进行检查,以确定Mario是否触摸了门2。在图15B中显示的说明性实施例中,如果Mario碰到了门2,那么进行检查以确定Mario是否获得了超过一个星星(957)。在这个说明性实施例中,如果Mario获得了超过一个星星,那么Mario被允许通过跳过与目标2相关的图片进入目标2。如果Mario没有达成进入目标2的目标,则程序分支回到块927进行进一步的城堡一楼内部处理。图15B中表示的与门相关的步骤,例如由块955、957、959表示的门2,是图14A中表示的与门/目标达成处理相关联的简化版本,图14A详细显示了与开门相关联的处理。如果在955处的检查表明Mario没有碰到门2,那么在961处进行检查以确定Mario是否碰到了门3。如果Mario没有碰到门3,则程序分支回到块927如前所述。如果Mario碰到了门3,则进行检查以确定Mario是否达成了进入目标3的目标。例如,在块963处进行检查以确定Mario是否获得了超过三颗星。如果Mario达成了进入目标3的目标,则打开门3并允许Mario通过跳过图1SD类型图片进入目标3(965)。完成或退出目标3后,程序分支回到块927进行城堡一楼处理。
如图15D所述,通常情况下,玩家通过控制Mario跳过挂在三维城堡墙上的画来进入目标。根据本发明的视频游戏方法在一个示例性实施例中,目标的状态会根据进入目标的方式而改变。仅举一个例子,在本发明的一个实施例中,Mario跳入图片进入目标的高度被用来控制,例如,在目标中显示的水体的水位。水的高度或水位可能反过来影响玩家达成预定目标目标的能力。与跳入图片进入目标相反,根据本发明的一个示例性实施例,可以使用时钟或其他任何人、地点或事物的表示。在使用时钟的情况下,Mario跳入时钟的位置或时间,即,Mario的进入与时钟的小时或分钟指针位置之间的关系,可以用来控制进入的目标的状态。
这种目标状态处理如图16所示,在首先进行检查以确定玩家是否以条件A进入了一个目标,其中条件A可能是例如角色通过时钟的小时指针在10点钟位置进入。如果满足这个条件,那么目标被设置为与10点钟进入相关联的预定状态X(967)。
如果在块966处的检查表明没有通过条件A进行进入,那么在967处进行检查以确定是否通过条件B进行了进入,其中条件B可能是小时指针在12点钟。如果通过条件B进行了进入,则将进入的阶段或目标设置为另一个状态Y(969)。如果在块968处的检查表明没有通过条件B进行进入,则在970处进行检查以确定是否以条件C进行了进入,这可能是例如分钟指针在6。如果通过条件C进行了进入,则将进入的目标或阶段设置为另一个不同的状态Z。如果在970处的检查确定没有以条件C进行进入,则将阶段或目标以其正常状态进行进入。如果目标不是以其正常状态进行进入,则在设置了目标到状态X、Y或Z(例如,将显示的水位改变到三个水平之一)之后,就开始进入目标,并继续游戏。应该理解,在本发明中可以使用多于或少于三个条件来设置目标状态。
如图17流程图所示,本发明的视频游戏方法设想了广泛的暂停模式特性。本发明示例性实施例使用了三种不同类型的暂停特性。最初,在暂停处理程序中,进行检查以确定是否已经启动暂停模式(975, 977)。如果系统不在暂停模式中,则进行检查以确定玩家是否按下了图6控制器56上的开始按钮(993)。如果按下了开始按钮,则将系统置于暂停模式,即设置暂停标志(995)。如果玩家没有按开始按钮或者在设置了暂停模式之后,程序继续在977处,开始图18暂停摄像机模式处理。
如果Mario没有触摸通向城堡外部的门,则在块935处进行检查,以确定Mario是否触摸了通向地下室(如图15C所示)的门。如果Mario触摸了通向地下室的门,则在块937处进行进一步检查以确定Mario是否有打开地下室门的钥匙。这个序列说明,在基于达成预定目标打开门(即访问预定数量星星)之外,还有一些门不能没有钥匙就打开(地下室门就是这些门之一)。玩家可能需要完成预定任务才能找到钥匙。如果Mario确实有打开地下室门的钥匙,那么Mario就被允许进入并在地下室中漫游(939),并且程序分支到地下室处理程序(941)。如果在937处的检查确定Mario没有打开地下室门的钥匙,那么程序就会回到块927进行进一步的城堡一楼处理。
如果在块935处的检查显示Mario没有触摸通向地下室的门,那么在943处进行检查,以确定Mario是否触摸了通向二楼的门,如图15C所示。如果Mario确实触摸了通向城堡二楼的门,那么进行进一步检查以确定Mario是否有打开二楼门的钥匙(945)。如果Mario确实有打开二楼门的钥匙,那么Mario被允许去二楼,然后显示Mario在二楼漫游(947),并且程序分支到二楼处理程序(949)。如果在块945处的检查显示Mario没有打开二楼门的钥匙,则程序分支回到块927进行进一步的城堡一楼处理。
如果在943处的检查显示Mario没有触摸通向第二扇门,那么如图15B所示,进行检查以确定Mario是否触摸了一楼的门1。如果Mario碰到了门1,那么Mario被允许通过跳过目标1的图片进入目标1,而不需要任何目标达成要求。完成或退出目标1后(953),程序分支回到块927,允许Mario在城堡一楼自由漫游。如果Mario没有碰到门1,那么在块955处进行检查,以确定Mario是否触摸了门2。在图15B中显示的说明性实施例中,如果Mario碰到了门2,那么进行检查以确定Mario是否获得了超过一个星星(957)。在这个说明性实施例中,如果Mario获得了超过一个星星,那么Mario被允许通过跳过与目标2相关的图片进入目标2。如果Mario没有达成进入目标2的目标,则程序分支回到块927进行进一步的城堡一楼内部处理。图15B中表示的与门相关的步骤,例如由块955、957、959表示的门2,是图14A中表示的与门/目标达成处理相关联的简化版本,图14A详细显示了与开门相关联的处理。如果在955处的检查表明Mario没有碰到门2,那么在961处进行检查以确定Mario是否碰到了门3。如果Mario没有碰到门3,则程序分支回到块927如前所述。如果Mario碰到了门3,则进行检查以确定Mario是否达成了进入目标3的目标。例如,在块963处进行检查以确定Mario是否获得了超过三颗星。如果Mario达成了进入目标3的目标,则打开门3并允许Mario通过跳过图1SD类型图片进入目标3(965)。完成或退出目标3后,程序分支回到块927进行城堡一楼处理。
如上文所述,如果系统处于暂停模式,那么首先进行检查以确定Mario是否在许多三维世界目标中的一个内部(975, 977)。如果Mario不在目标内部,而是在城堡内,例如,那么如985所示,在这种情况下,暂停模式显示在暂停时间时每个目标中获得的星星数量。因此,当Mario不在特定目标内部时,系统可以例如显示在游戏的多个目标或级别中达成的星星数量或其他目标。
如果在块979处的检查显示Mario在目标内部,那么进行检查以确定Mario是否在移动或静止(981)。如果Mario不是静止的,那么暂停屏幕显示目标的名称和当前得分(983)。如果Mario在暂停时是静止的,那么显示目标的名称、得分和退出菜单以退出目标(987)。如果Mario在移动时不生成退出菜单,因为允许玩家在移动条件下退出会让玩家能够避免因错误控制Mario跑下悬崖等错误而受到的惩罚,例如死亡。在987、983或985的处理之后,进行检查以确定玩家是否按下了开始按钮(989)。如果是这样,那么取消暂停模式(991)。如果没有,那么程序分支到块997、999和暂停例程退出返回到主游戏处理例程。一旦每帧调用暂停处理例程,就会连续检查暂停模式,例如通过检查存储在RAM中的暂停模式指示标志。
在989、991、993或995的处理之后,开始图18所示的暂停模式相机处理。首先进行检查以确定是否通过检查暂停模式标志(1001)来操作暂停模式。在给定目标的暂停模式下,可能希望显示目标的更远视图以显示周围地形区域。然而,如果当玩家在城堡内部或者在小房间或地牢内启动暂停时,这样的视图是不合适的。如果1001处的检查表明没有设置暂停,则使用游戏的正常相机处理(1007),暂停处理结束(999图17),并返回到主游戏处理例程。如果1001处的检查表明已经启动了暂停模式,则进行检查以确定是否应该使用增加距离相机处理来描绘从其中进入暂停模式的当前目标。如果1003处的检查表明当前目标不应该用增加距离相机处理来描绘,则暂停处理在图17的999处退出。如果根据1003处的检查确定需要增加距离处理,则开始增加距离相机处理(1005),然后在图17的999处退出暂停处理例程。
本发明允许玩家控制游戏角色(例如Mario)探索广泛的3-D环境,使得玩家有多种“相机”视角或视点。与典型的3-D游戏相比,在典型的3-D游戏中,相机视角是固定的,因此可能很难适当地判断最理想的移动方式,本发明允许玩家从许多不同角度和距离范围观看游戏。游戏策略要求用户切换视角,使得目标中关键部分出现在用户视野中。
本发明允许用户操纵“相机角度”。如下所述,一些相机角度的调整是自动进行的。其他相机角度的调整优选地由用户按下图6和7中显示的控制键404C-405F(“C”按钮)来控制。相机控制键的数量可以根据游戏设计师的需要进行修改。
现在对在三维空间中改变相机视角(视点)进行解释。也就是说,通常在传统的3D游戏中,当一个物体(例如,墙壁或敌人角色)存在于相机和玩家控制的物体(例如,Mario)之间时,如图20A所示,玩家控制的物体(或Mario)不能被相机“拍摄”或查看。相比之下,根据本发明,可以通过实际上将相机围绕Mario转到其侧面,如图20A所示,使Mario始终能够连续显示。
简单地说,当物体位于如图20B所示的位置时,确定与从Mario的侧面延伸出来的地形多边形之间可能发生碰撞,在Mario和相机之间的直线上的几个点上。在这个场合,检查一个从每个点开始到半径R内垂直于XZ平面的多边形。在确定为碰撞的多边形P上执行转动相机的过程。墙面P由平面方程表示,如方程(1)所给出。
Ax+By+Cz+D=0. (1)
通过将“相机”与这个平面P平行移动来进行“相机”位置的修正。顺便说一下,与平面平行的Y轴的角度是通过相同的平面方程来计算的。
结合图19A的流程图,详细解释一下,首先在第一步S101中初始化要进行碰撞确定的多边形的编号n(n=1)。在下一步S102中,确定要检查的多边形数量N和多边形编号n是否相等,即是否已经对所有必要的多边形进行了碰撞确定。如果在步骤S102中的检查表明需要检查更多的多边形,那么在步骤S103中进行碰撞确定。
图19B详细显示了步骤S103,即一个说明性的碰撞确定例程。在解释这个碰撞确定例程之前,参考图20C和图20D,它们显示了要进行碰撞确定的示例墙数据。也就是说,墙数据如图20C所示,其中三角形多边形如图20D所示聚集在一起。这些各个多边形被存储为内存中墙多边形列表。
在图19B中的第一步S201中,输入一个点Q(Xg, Yg, Zg)和一个半径R。顺便说一下,点Q是要检查的点,半径R是被认为是碰撞的距离。然后在步骤S202中重置墙碰撞标志。在步骤S203中,确定是否在内存中存储了上述墙多边形列表。如果存在一个墙多边形列表,那么在下一步S204中确定考虑的多边形是否是一个通过转动相机来处理的多边形。如果是这样,那么进程进入步骤S205。
在步骤S205中,根据方程(2)计算点Q和墙多边形平面之间的距离(dR)。
dRR=Axg+Byg+Czg+D (2)
然后在步骤S206中确定在步骤S205中计算的距离dR是否小于半径R。当距离dR大于半径R时,Mario和墙之间没有碰撞,因此程序分支回到步骤S203。
如果步骤S206表明|dR|<R,那么在步骤S207中根据方程(3)计算点Q'(图20F)的位置坐标(Xg', Yg', Zg'),点Q'是从点Q垂直到墙多边形P的直线与墙多边形平面的交点。
Xg'=Xg+A×dR
Yg'=Yg+B×dR
Zg'=Zg+C×dR (3)
然后在步骤S208中,确定点Q’是否在多边形的内侧(范围内)。在步骤S208中,根据墙的方向(值A)确定要投影到哪个平面。也就是说,当A<-0.707或A>0.707时,投影到图20E所示的YZ平面。否则,投影到XY平面。如果投影到YZ平面,那么确定图20F中的点Q’是否在多边形P1的内侧。
同时,如果投影到XY平面,那么根据图20G中的点Q’和多边形P1的顶点确定逆时针交叉积的值是正还是负。也就是说,当多边形平面方程中的C满足C≧0时,如果每个得到的交叉积都是0或负数,那么判断点Q’在多边形P的内侧。
(Y1-Yq)×(X2-X1)-(X1-Xq)×(Y2-Y1)≦0
(Y2-Yq)×(X3-X2)-(X2-Xq)×(Y3-Y2)≦0
(Y3-Yq)×(X1-X3)-(X3-Xq)×(Y1-Y3)≦0 (4)
同时,当C<0时,如果每个得到的交叉积都是0或正数,那么判断点Q'在多边形P的内侧。
(Y1-Yq)×(X2-X1)-(X1-Xq)×(Y2-Y1)≧0
(Y2-Yq)×(X3-X2)-(X2-Xq)×(Y3-Y2)≧0
(Y3-Yq)×(X1-X3)-(X3-Xq)×(Y1-Y3)≧0 (5)
以这种方式,在步骤S208中检查点Q’是否在多边形的内侧,因此在范围内。基于此步骤S209的检查,确定点Q’是否在多边形的内侧。如果在此步骤S209中为“是”,则在前述步骤S202中重置的墙碰撞标志被设置(步骤S210)。然后,过程返回到图19A。
注意,上述的碰撞确定只是一个例子,应该认识到,碰撞确定也可以通过其他方法进行,这些方法对于本领域的技术人员来说是可以理解的。
回到图19A,在步骤S103的碰撞确定之后,在步骤S104中确定是否设置了墙碰撞标志。如果在此步骤SI 04中为“否”,则不需要进行转动处理,因此在步骤S105中增加要检查的点的编号n,并将例程分支回到步骤S102。
如果步骤S104表明墙碰撞标志被设置,则在步骤S106和步骤S107中确定它是否在墙的背面。也就是说,确定多边形的方向性。通过检查法向量N和图20H中的眼(视点)向量V的点积的符号,可以确定多边形是否朝向相机(视点)。因此,条件表达式由方程6给出。
A=V·N=VxNx+VyNy+VzNz (6)
根据方程(6),可以分别确定,如果A≧0,墙面朝向相机(前向),而如果A<0,相机朝向墙的背面。如果存在于相机和Mario之间的平面相对于相机是前向的,那么不进行图20A中的相机转动。在这种情况下,在步骤S105中增加点的编号n,并将过程分支回到步骤S102。
如果相机和Mario之间的平面是后向的,那么在S107处的检查结果为“是”,并在后续步骤S108和S109中进行转动处理。在步骤S108中,改变相机(拍摄位置)位置的移动角度基于墙的平面方程。也就是说,关于平面方程上的三个点P1(X1,Y1,Z1),P2(X2,Y2,Z2),P3(X3,Y3,Z3)的平面方程由多项式方程表示,如方程(7)所示。
Ax+By+Cz+D=0
在此,
A=Y1(Z2-Z3)+Y2(Z3-Z1)+Y3(Z1-Z2)
B=Z1(X2-X3)+Z2(X3-X1)+Z3(X1-X2)
C=X1(Y2-Y3)+X2(Y3-Y1)+X3(Y1-Y2)
D=X1(Y2Z3-Z2Y3)+Y1(Z2X3-X2Z3)+Z1(X2Y3-Y2X3). (7)
关于法向量相对于Y轴的角度Ry由方程(8)给出
Ry=tan.sup.-1 (A/C) (8)
因此,相机的转动角度是Ry+90°或Ry-90°。也就是说,在步骤S109中,相机围绕Mario或可操作对象旋转移动,方向是Ry+90°或Ry-90°。具体来说,移动到的位置更接近当前的相机位置(如图20B中的C)。
本方法优点在于提供了广泛的相机模式,包括自动和用户控制的模式。例如,一个相机控制键会自动从位于玩家控制角色(例如,Mario)上方和后方的相机的视角显示三维世界。根据障碍物的位置或特定房间的大小,相机可能无法直接在Mario后面。如下面将更详细地解释的那样,玩家可以控制移动以进行特写或拉远以获得更远的视图。此外,可以移动相机左右改变角度,使玩家能够看到Mario当前所在目标的更多内容。对于玩家来说,操纵相机控制键以更好地判断跳跃或更准确地确定物体相对于Mario的位置是非常有用的。通过按下预定的控制按钮,可以切换到始终调整为在Mario后面的视角。这种模式在非常窄的平台和封闭空间中很有用。可以在广角和特写之间切换,并可以向左或右平移,但最终相机会返回到Mario后面的这种相机模式。固定视角相机模式允许用户在Mario跳跃过程中有一个客观视图,而不是从Mario的视角看到的主观视图。如果相机放置在一个地方,Mario可能会很快跑出视线。在查看周围相机模式中,玩家可以进行极端特写,并使用控制操纵杆移动Mario的头部来扫描整个周围环境。这种查看周围的相机模式允许用户查看所有地方,包括向上看以看到关卡有多大或者向下看过崖以看到是否有之前无法看到的物体,或者向远处看以发现硬币。本方法通过提供用户选择相机角度的能力,使用户能够在游戏中表现得更好。通过将相机向后移动,可以更好地感知前方情况。通过左右平移,用户可以获得更好的攻击跳跃、导航狭窄岩架或查看拐角处情况的角度。通过改变Mario的视角,可以增加可获得的敏捷度和精确度。如果与Mario当前位置相关联的是一个悬崖或高塔,那么通过改变相机角度向下和向侧面看,例如,可以查看之前无法查看到的目标方面。
图21和22是一个流程图,描述了在相机模式处理期间执行的操作序列。如块1500所示,设置一个初始相机模式。设置的初始相机模式可能会根据游戏开始时的特定游戏状态而变化。因此,可以根据例如进入哪个目标或级别来修改初始相机模式,从而将相机模式设置为在初始化后恢复游戏的特定部分时最好的可用自动相机模式。如块1502所示,然后执行其他游戏程序处理,除了相机模式控制,如生成显示、计算获得的星星和硬币数量等。然后在块1504进行检查以确定相机模式是否是主观模式,例如通过主观模式标志的状态来指示。主观相机模式表示相机模式视角是从玩家控制角色的主观视点,例如从Mario头部后方直接看。如果当前的相机模式是主观模式,那么例程分支执行其他对象处理1512,从而跳过Mario的移动处理,因为在主观模式中Mario不显示为移动或其他。
如果当前的相机模式不是主观模式,那么进行检查以确定当前的相机模式是否处于事件拍摄模式(1506)。事件拍摄模式是一种相机模式,在这种模式中,例如生成一系列显示帧来描绘玩家发现星星的情况。这种模式也包括与游戏标题屏幕和结束屏幕演示相关联的显示序列。事件拍摄模式可以由任何预定的游戏事件触发。如果相机模式是事件拍摄模式,那么停止Mario的移动(即玩家控制对象)和“敌人角色”的移动,从而在事件检测前保持Mario和敌人之间的相对位置(1510)。此外,在事件拍摄模式中,根据检测到的事件生成不同的移动对象,例如星星生成和庆祝显示序列。
如果1506处的检查表明系统不处于事件拍摄模式,则进行正常游戏处理Mario和其他对象的移动(1508, 1512)。因此,根据1508, 1512处的处理,正常游戏玩法控制Mario和敌人的移动。
在1512中进行对象处理后,程序进入到一个改变相机模式的操作序列。首先,在步骤S1516中搜索Mario的状态以确定Mario是否处于跳跃、游泳、飞行等状态。有三个基本条件决定了改变相机模式:(1)Mario的状态;(2)需要改变相机模式的Mario位置;(3)地形或地面条件,由Mario脚下位置检测到的地形信息决定。
回到块1516,搜索确定Mario的当前状态后,检查块1518确定是否需要更改相机模式。与角色Mario相关联的是一个存储的指示,表示物体当前的状态,例如,跑步10,飞行13等。根据检测到的Mario的状态,确定这样的状态是否需要改变相机模式。例如,如果Mario正在游泳,相机模式会切换以优化水域地形的视图。如果块1518处的检查表明由于Mario的状态需要更改相机模式,则相应地更改相机模式(1520)。
在1520处更改相机模式后,或者如果根据1518处的判断不需要更改相机模式,则搜索Mario的显示位置。与角色Mario相关联的是一个存储的指示,表示他在当前显示帧中的坐标位置。基于对Mario在显示屏上位置的检查,如下面将进一步解释的那样,确定Mario当前位置是否表明应该更改相机模式(1524)。如果当前位置检查表明应该更改相机模式,则如块1526所示,更改相机模式。参见图25A-C、26A和26B以及下面给出的相关相机模式描述。
然后游戏程序开始搜索与Mario关联的地图代码(1528)。地图代码指示与Mario脚下相关联的当前地形,例如,表示Mario是否在滑坡上或在水下等。然后进行检查以确定当前地图代码是否需要更改相机模式(1530)。如果当前地图代码检查表明需要更改相机模式,则启动此类更改(1532)。
转到图22,在确定是否正在进行预定重要游戏事件(1534)。如果确定已经发生了预定重要事件,则将模式切换到事件模式(1536)。如果没有检测到已经发生预定重要事件,则例程分支到块1538,在那里检查例程是否处于事件拍摄模式。如果相机模式处于事件拍摄模式,则启动事件的相机处理(1542),并且例程分支到块1562,在那里根据预定事件显示Mario和其他对象。
如果块1538处的检查表明例程不处于事件拍摄模式,则在块1540处进行检查以确定当前相机模式是否处于主观模式。如果相机模式处于主观模式,则如前所述,修改相机拍摄方向为从Mario的个人视角(1544)。在主观模式中,操纵控制器操纵杆会导致转动Mario的头部,并相应地改变拍摄方向(1546)。在块1548处进行检查以确定主观模式是否结束。如果是这样,结束主观模式,关闭主观模式标志,并继续处理显示Mario和其他对象(1562)。
如果块1540处的检查表明当前的相机模式不是主观模式,那么进行检查以确定控制器上的C按钮是否被按下。如前所述,控制器C按钮在图6中显示为按钮404 C-F。如果按下了一个C按钮,那么在块1554处进行检查以确定是否需要切换到主观模式。如果C按钮的压下表明应该切换到主观模式,那么就启动这样的切换(1558),并且例程根据当前活动的相机模式在1562处显示Mario和其他对象。如果根据块1554处的检查没有改变到主观模式,那么根据按下的特定“C”按钮改变相机的方向和表面物理位置(1556)。在完成了改变到新相机视角的相机处理后(1560),根据新视点显示Mario和其他对象(1562)。按下特定C按钮会修改相机和Mario之间的表面距离和/或角度关系。
在块1560中进行相机处理后,并根据本文中描述的各种相机模式,根据特定相机模式显示Mario和其他对象,例程分支回到图21中的块1502进行正常游戏程序处理,并且相机模式处理继续按照前述方法进行。
在正常相机处理中,如块1560所示,视频游戏系统被编程生成九种相机模式模式,其中程序控制从一种模式切换到另一种模式取决于在三维世界目标中检测到的Mario的条件或位置。虽然下面描述了九种相机位置模式或模式,但应该理解,给出相机位置模式数量只是作为一个例子,并不应被理解为以任何方式限制。图23A-23E视觉描绘了根据本方法的九种相机位置模式中的五种。当玩家处于如图26A和26B所示的目标位置时,这些各种模式会自动调用。应该理解,相机的描绘表示在创建特定相机位置模式的显示帧时用于处理计算的显示三维世界中的视点。在特定模式中,通过按下图6中显示的控制器上的C按钮,玩家可以进一步修改相机视角,如下面所述。例如,图23A描绘了相机模式图案1(称为塔摄像机模式),其中带圈“M”表示Mario,其移动由图23A中的虚线表示。从第一个指示位置到第二个指示位置,随着Mario的移动,表面相机视角发生变化,第一和第二位置的视线在标识的原点处交叉。当Mario位于图23A中箭头指示的点时,如果按下左C按钮,则相机向Mario中心左侧旋转60度。同样,如果按下右C按钮,则相机向Mario中心右侧旋转60度。如果按下C向上按钮,则相机靠近Mario;如果按下C向下按钮,则相机离开Mario。
如果块1540处的检查表明当前的相机模式不是主观模式,则进行检查以确定控制器上是否有任何C按钮被按下。如前所述,在图6中显示为按钮404 C-F的控制器C按钮。如果有一个C按钮被按下,则在块1554处进行检查以确定是否需要切换到主观模式。如果C按钮压下表示应该切换到主观模式,则启动这样一个更改(1558),并且例程根据当前活动的摄像头模式在1562处显示Mario和其他对象。如果在块1554处的检查表明没有切换到主观模式,则根据按下的特定“C”按钮改变相机的方向和表面物理位置(1556)。在完成了改变到新相机视角的相机处理后(1560),根据新视点显示Mario和其他对象(1562)。按下特定C按钮会修改相机和Mario之间的表面距离和/或角度关系。
在块1560中进行相机处理后,并根据本文中描述的各种相机模式,根据特定相机模式显示Mario和其他对象,例程分支回到图21中的块1502进行正常游戏程序处理,并且相机模式处理继续按照前述方法进行。
在正常相机处理中,如块1560所示,视频游戏系统被编程生成九种相机模式模式,其中程序控制从一种模式切换到另一种模式取决于在三维世界目标中检测到的Mario的条件或位置。虽然下面描述了九种相机位置模式或模式,但应该理解,给出相机位置模式数量只是作为一个例子,并不应被理解为以任何方式限制。图23A-23E视觉描绘了根据本方法的九种相机位置模式中的五种。当玩家处于如图26A和26B所示的目标位置时,这些各种模式会自动调用。应该理解,相机的描绘表示在创建特定相机位置模式的显示帧时用于处理计算的显示三维世界中的视点。在特定模式中,通过按下图6中显示的控制器上的C按钮,玩家可以进一步修改相机视角,如下面所述。例如,图23A描绘了相机模式图案1(称为塔摄像机模式),其中带圈“M”表示Mario,其移动由图23A中的虚线表示。从第一个指示位置到第二个指示位置,随着Mario的移动,表面相机视角发生变化,第一和第二位置的视线在标识的原点处交叉。当Mario位于图23A中箭头指示的点时,如果按下左C按钮,则相机向Mario中心左侧旋转60度。同样,如果按下右C按钮,则相机向Mario中心右侧旋转60度。如果按下C向上按钮,则相机靠近Mario;如果按下C向下按钮,则相机离开Mario。
图23B显示了第二种相机模式(相机模式2),称为地牢相机模式。在这种模式下,当被控制的角色,例如Mario,移动时,显示的相机视图似乎在追逐Mario。如果Mario超过相机的固定距离,相机会移动以跟随Mario。如果没有使用操纵杆控制Mario,相机视图似乎会自动环绕到Mario的后面。在图23B中,带箭头的实线表示Mario的运动轨迹,虚线表示相机的轨迹,“小1”表示相机和Mario之间的最大距离。相机模式3是滑动相机模式,其中相机始终位于Mario的后面。在这种模式下,Mario只能向一个方向行进,通常不能反向行进。
相机模式4被称为“平行跟踪”模式,如图23C所示,相机始终与目标平行移动。当Mario深入目标时,相机会平行追逐Mario。如果Mario超过了与相机的固定距离,那么相机就会移动以跟随Mario。如果没有使用操纵杆控制Mario,那么相机视图似乎会自动环绕到Mario的后面。在图23B中,带箭头的实线表示Mario的运动轨迹,虚线表示相机的轨迹,“小1”表示相机和Mario之间的最大距离。相机模式3是滑动相机模式,在这种模式下,相机始终位于Mario的后面。在这种模式下,Mario只能向一个方向行进,通常不能反向行进。
相机模式4被称为“平行跟踪”模式,并且如图23C所示,相机始终与目标平行移动。当Mario深入目标时,相机以与目标平行的方式追逐Mario。如果检测到Mario正在穿越狭窄的桥梁,则可能会切换到平行跟踪相机模式4。
图23D中显示的相机模式5被称为“固定”相机模式。在这种模式下,相机移动到指示原点和Mario之间的中点。固定摄像头模式提供了更广角的目标视图,以确保玩家控制的角色不会从场景中丢失。
相机模式6是水下摄像头模式。这种模式类似于上述描述的地牢模式即摄像头模式2。然而,当马里奥游泳上升时,摄像头向上看马里奥;当马里奥游泳下沉时,摄像头向下看马里奥。在水下摄像头模式下,当马里奥停止时,摄像头自动环绕到马里奥的后面。
摄像头模式7被称为VS摄像头模式。这种模式与图23C中显示的平行摄像头跟踪模式4是一样的。然而,当两个角色分开时,摄像头从两个角色身上拉开以在屏幕上显示它们。当两个角色接近时,摄像头靠近它们。
图23E中显示的摄像头模式8被称为反塔摄像头模式。这种模式原则上类似于塔摄像头模式1。如图23E所示,摄像头和马里奥之间的距离保持固定距离L。第九种摄像头模式被称为飞行摄像头模式。这种模式类似于水下摄像头模式6。
图26A和B描绘了两个显示屏的部分,并显示了根据马里奥检测到的位置将切换的关联摄像头模式。例如,如果检测到Mario在塔顶,如图26A中的“1”所示,那么就生成塔摄像头模式视角。如果检测到Mario在表示狭窄岩架的多边形上,那么就切换到平行跟踪摄像头模式4,如图26A所示。如果Mario在空中飞行,那么就切换到飞行摄像头模式9。
在每种模式1-9中,如上所述,玩家可以通过按下C按钮在主观模式和客观模式之间切换视点。随着目标的变化,模式也会切换。例如,当Mario通过一扇门,或者跳入水中,模式会自动切换。图24A和24B是一个流程图,表示如何根据检测到的Mario的条件,或者检测到Mario处于特定情况下,自动控制相机模式的更改。相机模式更改例程开始检查Mario的条件或情况是否需要相机模式1。如果是这样,相机处理自动切换到从相机模式1的视角生成显示。完成相机模式1处理后,例程分支回到调用例程。如果Mario的条件不需要相机模式1,那么进行检查以确定Mario的条件是否需要相机模式2。如果是这样,那么例程按照上述方式生成符合相机模式2的显示。对于每种相机模式都重复这个过程。每次检查时,例程确定Mario的条件是否需要九种相机模式中的一种,这些检查反复进行。因此,根据图24处理,在检测到用户已经控制Mario处于水下情况时,相机模式自动控制以产生相机模式4操作。
关于图24A和24B,是否需要根据Mario的条件切换到特定的相机模式是通过监视存储的Mario的条件或状态,并确定这样的存储条件或状态是否表示启动九种相机模式中的一种所需的条件或状态来确定的。如与图21一起解释的那样,关于Mario状态和地形的存储信息被用来控制切换到一个自动相机模式。特定应用程序可能会选择用于切换到特定模式的精确条件。此外,在自动程序控制相机模式视角之上,用户有灵活性通过按下图6中显示的四个C按钮来改变相机视角,如上文与图23A一起描述的那样。
如上文详细描述的那样,在玩家控制和自动程序控制下都有各种各样的相机视角选项可供选择。图23F-L举例说明了玩家通过操作图6中显示的一个控制键来启动改变相机视角可能生成的显示。图23F显示了角色Mario位于三维场景的中心。通过按下箭头指示对应于图6中404F和404E的左右键,生成图23H和23J中的显示,以模拟围绕Mario左右旋转。如果操作404C和404D键(向上和向下箭头键),则生成图23I和23G中显示的显示,这些显示模拟了摄像头角度或视点似乎从Mario拉开或靠近Mario的效果。聚焦在图23G上,如果从显示出来的特写视点操作操纵杆,则马里奥头部转动,并且视点跟随马里奥视线移动,如图23L和23K所示。通过“环顾四周”并以这种方式操纵马里奥头部,可以观察到否则无法看到的物体以增强玩家实现目标的能力。
在游戏过程中,根据场景,相机模式会自动切换到最佳视图,如上所述。如果玩家按下“R”按钮,可能会切换到特殊的相机模式。在暂停处理描述期间,可以从暂停屏幕设置两种可选的相机模式。在暂停屏幕上,玩家可以选择两种可选模式中的一种。通过按下“R”按钮,玩家可以在这些相机模式之间切换。在这些模式下操作时,可以使用与图23F-23L一起描述的相同控制。在本发明的一个实施例中,显示Mario当前位置和相机之间的距离。如果玩家按住“R”按钮以停止相机移动,相机位置将被固定,这在不希望相机跟随Mario时非常有用。释放“R”按钮后,相机模式将恢复到正常状态。
图25A-C显示了Mario穿越具有三种不同坡度的地形,即,相对于Mario的运动方向向上倾斜的地形、水平表面和相对于Mario的运动方向向下倾斜的地形。如图25A-C所示,每个标识的地形都与Super Mario的脚接触的多边形相关联。如果需要,这样的多边形可能具有关联的期望相机模式指示器存储。在这种情况下,当检测到Mario处于这样一个多边形边界地形上时,启动一个相机模式切换,如前文与图21一起描述的那样。
本发明还利用了广泛的角色控制和动画技术来真实地显示三维世界中的角色。图6至9所示的玩家控制器允许用户控制角色精确地执行各种各样的跳跃,如墙壁跳跃、长跳、三连跳、后翻等,并控制飞行、游泳、爬行和许多其他模拟动作。
图27A和27B是流程图,表示如何控制玩家控制角色,例如Mario。转到图27A,在电源启动和初始化例程完成后,程序检查是否操作了任何控制键/按键/开关或模拟操纵杆(1602)。如果没有操作这些控制部件、键或开关,则在其当前位置显示角色(1604),继续其他游戏处理(1606),并将例程分支回到块1602,在那里再次检查键操作。如果确定已经操作了控制键/开关/操纵杆,则检测玩家控制角色及其在三维世界中的位置(1608)。根据在3D世界中检测到的Mario的状态和位置,决定Mario期望的下一个显示位置和状态(1610)。然后根据块1604处的处理显示处于期望状态的Mario。
图27B是一个状态图,示例了角色的下一个状态是如何基于其当前状态和特定控制机制的激活的。如图27B所示,如果检测到Mario处于静止状态(1618),并且按下“A”按钮(图6,404A),则控制Mario跳跃(1620)。如果在Mario着陆时再次按下A按钮,那么就启动第二次跳跃(1622,是1624),从而启动一系列连续跳跃,如图27C所示。如果在初始跳跃后按下Z按钮(图7,407),则控制Mario砸地(1626)。回到节点1618,如果在Mario静止时按下Z按钮,Mario被控制蹲下(1628)。然后如果按下A键,则控制后空翻,如图27D所示。如果在检测到Mario处于蹲姿时使用3D操纵杆,则控制Mario爬行或滑行,如图27E所示。
回到节点1618,如果在Mario静止时按下B按钮(图6,404B),则控制Mario抓住“敌人”(1634),如果旋转3D操纵杆,则Mario摇摆敌人(1636),如图27F所示。再次按下B按钮,敌人被扔出去。3D操纵杆旋转得越快,Mario扔出敌人的距离就越远。
回到节点1618,如果在Mario静止时操作3D操纵杆,则控制Mario跑步或走路,这将在下面进一步解释。如果操纵杆转180度,则控制U形转弯(1640)。然后如果按下A按钮,则通过倾斜控制杆使Mario沿着墙壁移动的方向来控制侧身贴墙(1642),如图27G所示。
本发明还考虑了许多其他控制技术,包括控制角色向操纵杆倾斜的方向游泳,并控制蛙泳和/或踢腿动作,如图27H所示。当检测到Mario的脸在水面上方时,通过按下A按钮并向前拉动操纵杆,可以控制Mario看起来像是从水中跳出来。本发明还考虑了许多其他角色动作,包括通过向墙壁跳跃并通过按下A按钮使角色在撞击墙壁时再次跳跃来控制墙壁踢动作,如图271所示。通过操作操纵杆然后连续按下Z按钮蹲下并滑行以及按下A按钮跳跃来控制长跳,如图27J所示。跳跃的距离取决于角色被控制运行的速度。通过操作控制按钮可以控制各种各样的冲击和踢动作,例如只有冲击是通过按下B按钮来控制的,如果反复按下B按钮则可以控制踢动作,并且如果在跳跃时按下B按钮则可以控制跳踢动作,这是通过击打A按钮来控制的。使用A和Z按钮可以使角色被控制砸地,并且通过按下Z按钮蹲下然后在蹲下时按B按钮可以控制绊倒操作。通过使用操纵杆然后使用Z和B按钮可以控制滑行踢,并且通过使用操纵杆然后使用B按钮可以控制滑行。
图28A和28B是一个流程图,显示了如何根据操纵杆操作和Mario正在穿越的表面的斜度来控制显示的角色(例如,Mario)的速度。如图28A所示,游戏开始后,显示一个角色,例如Mario,在显示屏上(1675,1677)。然后进行检查以确定是否已经移动了图6中的控制器操纵杆的原点位置(1679)。如果没有,则例程反复检查操纵杆位置的变化。如何检测图8中操纵杆的角度旋转,在申请人的受让人的正在审查的PCT申请序列号PCT/JP96/02726(FNP-225)中披露,该申请题为“三维图像处理系统”,于1996年9月20日提交,该申请在此通过引用并入。
如果操纵杆位置已经改变,则在块1681处进行检查以确定改变的量是否大于预定量X。图28C显示了一个示例性的三种状态,这些状态是根据操纵杆角度旋转的量来显示的:1)行走动作,2)低速跑步动作,3)高速跑步动作。关于图28C中显示的x轴,操纵杆改变量为零表示没有从其原点位置操作操纵杆。图6中的操纵杆允许的最大角度旋转已被赋予32个单位的值。因此,在图28C中表示了从无变化(零)到最大角度旋转(32)的32个角度旋转单位。
当Mario正在加速时,如果操纵杆改变量为8个单位或更少,则显示Mario正在行走。如果操纵杆改变量在9到22之间,则显示Mario以低速跑步,如果操纵杆改变量超过23,则显示Mario以高速跑步。在减速模式下,如果操纵杆改变量大于或等于18,则显示Mario以高速跑步。如果减速模式下的操纵杆改变量在5到17个单位之间,则显示Mario以低速跑步,如果操纵杆改变量小于4,则显示Mario正在行走。通过包括加速和减速模式对于上述三种Mario状态和操纵杆改变量之间的不同关系,可以生成更自然真实的动画屏幕效果。
回到图28A,如果检测到的改变量(1681)高于上述图28C中指示的值,则显示Mario正在跑步(1683),如果该值低于预定值,则显示Mario正在行走(1685)。根据块1687处处理控制Mario的速度。虽然在图28中的流程图中没有明确指出,但是跑步控制最好基于图28C中描绘的多种速度跑步模式。因此,可以利用操纵杆机制作为控制双重功能,例如,不仅定义角色要移动的向量,而且定义沿着这样的向量进行物体运动的速度。
如上所述,在块1687处,根据检测到的操纵杆改变量确定Mario的移动速度。Mario的移动速度S1是通过将检测到的操纵杆改变量的平方乘以一个预定的最大速度来确定的,例如,可以是每帧32厘米。在当前的示例实施例中,一厘米等于一个像素或点。然后在块1689处进行检查以确定Mario的前一帧速度是否等于期望的当前速度。如果是,则速度保持不变,并且例程分支到图28B,块1697。
如果不是,则在块1691处进行检查以确定前一帧速度是否大于当前速度,以确定是要进行加速还是减速。这个判断是基于操纵杆的倾斜角度来做出的。如果前一帧速度大于期望的当前帧速度,则需要进行减速,否则需要进行加速。如果需要进行减速,则根据在1693处的处理,将当前速度设置为等于前一帧速度减去B。其中B等于2,这是一个减速因子。如果S1小于S,则根据在1695处的处理进行加速。根据在1695处的处理,将当前速度设置为等于前一帧速度加上一个加速因子A,其中A等于1.1-(S1÷43.0)。在1695或1693处进行加速或减速计算后,或者如果保持相同的速度,则继续在1697处处理。
在图28B,块1697处进行检查以确定Mario行走的路径是否在任何倾斜表面上,如图25A、C和图26A所示。确定Mario是否在倾斜表面上是通过检测Mario当前正在穿越哪个多边形来部分确定的。每个多边形,例如三角形,都包括多边形数据ax+by+cz+d=0。每个多边形都有例如参数a、b、c和d作为与其关联的地形数据。例如,如果知道x和z的值,则可以计算y来找到位置的高度。上面标识的参数b等于倾斜角的余弦。参数a、b和c之间有关系,即a2 +b2 +c2 的平方根等于1。
如上所述,在块1687处,根据检测到的操纵杆改变量确定Mario的移动速度。Mario的移动速度S1是通过将检测到的操纵杆改变量的平方乘以一个预定的最大速度来确定的,例如,可以是每帧32厘米。在当前的示例实施例中,一厘米等于一个像素或点。然后在块1689处进行检查以确定Mario的前一帧速度是否等于期望的当前速度。如果是,则速度保持不变,并且例程分支到图28B,块1697。
如果不是,则在块1691处进行检查以确定前一帧速度是否大于当前速度,以确定是要进行加速还是减速。这个判断是基于操纵杆的倾斜角度来做出的。如果前一帧速度大于期望的当前帧速度,则需要进行减速,否则需要进行加速。如果需要进行减速,则根据在1693处的处理,将当前速度设置为等于前一帧速度减去B。其中B等于2,这是一个减速因子。如果S1小于S,则根据在1695处的处理进行加速。根据在1695处的处理,将当前速度设置为等于前一帧速度加上一个加速因子A,其中A等于1.1-(S1÷43.0)。在1695或1693处进行加速或减速计算后,或者如果保持相同的速度,则继续在1697处处理。
在图28B,块1697处进行检查以确定Mario行走的路径是否在任何倾斜表面上,如图25A、C和图26A所示。确定Mario是否在倾斜表面上是通过检测Mario当前正在穿越哪个多边形来部分确定的。每个多边形,例如三角形,都包括多边形数据ax+by+cz+d=0。每个多边形都有例如参数a、b、c和d作为与其关联的地形数据。例如,如果知道x和z的值,则可以计算y来找到位置的高度。上面标识的参数b等于倾斜角的余弦。参数a、b和c之间有关系,即a2 +b2 +c2 的平方根等于1。
转到图29,游戏程序启动并完成初始处理后,游戏开始并且程序检测操纵杆的倾斜角度(1725,1727)。如前所述,根据操纵杆的倾斜角度,确定角色速度(1729)。然后在块1731处进行检查,以确定角色的速度是否处于第一级别,这表明没有运动或以慢速行驶。如果Mario以预定的第一慢速移动,Mario将用预定数量的多边形绘制,例如800(1732),并且其他游戏处理将继续进行,因为该例程分支到块1739。因此,在这种慢速下,角色以高分辨率绘制。
如果角色的移动速度高于预定的第一级别,则在1733处进行检查,以确定Mario的速度是否以预定但适中的更高速度移动。如果Mario以预定的更高第二级速度移动,则角色将用减少的多边形数量绘制,例如500,但是面部将用与绘制静态或第一级速度时使用的相同数量的多边形绘制。如果检测到角色速度高于适中的预定第二级速度,则角色将用200个多边形绘制,并且用于绘制面部的多边形数量也会减少(1737)。在块1732、1735或1737处绘制角色后,其他游戏处理将继续进行(1739),并且例程分支回到检测操纵杆倾斜步骤(1727)。
图30是一个流程图,说明了角色Mario如何响应环境条件。流程图应被理解为仅说明了这个概念,并没有详尽地处理可能需要考虑的环境条件。环境条件处理例程开始时,检测Mario是否处于跳跃动作中(1800, 1802)。
如果Mario正在跳跃,如块1802处的检查所确定,则根据已知的物理定律(包括重力定律)控制Mario的运动(1806)。然后在块1808处进行检查,以确定Mario是否处于向上风流中。如果检测到Mario处于向上风流中,则控制Mario的运动使其被风流吹向风流方向(1810)。当受重力控制的运动等于向上吹动的风流力时,显示出Mario似乎在漂浮。风处理完成后,例程分支回到主例程(1826)。
如果块1802处的检查显示Mario没有在跳跃,则进行检查以确定Mario是否正在奔跑(1804)。如果Mario没有奔跑,则例程分支回到主例程(1826)。如果检测到Mario正在奔跑,则像前面描述的那样控制Mario的速度(1812)。然后进行检查以确定Mario是否从悬崖或任何其他预定有界表面上摔下来(1814)。如果Mario没有从悬崖或其他有界表面上摔下来,在块1816处进行检查以确定是否有侧风吹过。如果有侧风吹过,则控制Mario的运动使其看起来像是被风适当地推动(1818),然后例程分支回到主例程(1826)。如果块1816处的检查显示没有侧风吹过,则例程分支回到主例程(1826)。
如果在块1814处的检查显示Mario确实从悬崖上掉下来,那么将进行检查以确定Mario的速度是否小于每帧10像素。如果Mario的速度小于每帧10像素,那么将控制Mario,使他显示为挂在悬崖上(1824)。如果Mario的速度等于或大于每帧10像素,那么将显示Mario从悬崖上掉下来(1822)。Mario可以被描绘为奔跑的最快速度是每帧32个点或像素。在1818、1822或1824处的处理之后,例程分支回到主例程(1826)。
图31是一个流程图,说明了在跑步或角运动期间如何控制Mario的身体方向。在身体方向处理过程中,首先进行检查以确定Mario是否正在奔跑(1840, 1842)。如果Mario没有奔跑,那么就没有模拟上半身运动。Mario的“上半身”被定义为腰部以上的身体部分。如果检测到Mario正在奔跑,那么将对Mario进行动画处理以模拟奔跑(1844)。在奔跑处理过程中,根据Mario的移动速度将Mario的上半身向前倾斜(1846)。检测到Mario奔跑得越快,Mario的上半身就倾斜得越多。此后,进行检查以确定Mario是否正在向右转(1848)。如果检测到Mario正在向右转,则显示Mario的上半身向右倾斜,倾斜程度基于Mario的旋转速度(1852),然后例程分支回到主例程(1856)。在以上述方式对Mario进行奔跑动画处理时,使用腰部矩阵、关节矩阵和上半身矩阵进行倾斜角度计算,以模拟真实的倾斜运动,这是Mario转弯速度的函数。如果基于1848处的检查发现Mario没有向右转,那么将进行检查以确定Mario是否正在向左转(1850)。如果Mario正在向左转,则根据Mario的旋转速度显示Mario的上半身向左倾斜(1854),然后例程分支回到主例程(1856)。
图32是一个流程图,说明环境或时间对Mario的影响。当环境处理开始时,进行检查以确定是否有任何玩家输入到控制器(1875, 1877)。通过这种方式,确保了Mario处于静态位置,并且没有移动。如果玩家通过玩家控制器以任何方式控制了Mario,使得有运动发生,则例程分支到块1905,并且回到主例程。
如果没有输入到控制器,则进行检查以确定Mario的腿是否正在沉入沙地地形(1879)。如果块1879处的检查表明Mario正在沉入沙子中,则显示出一个挣扎动画序列中的Mario(1881),然后例程分支回到主例程。如果Mario的腿没有沉入沙子中,则在1883处进行检查以确定Mario是否处于充满有毒气体的环境中。如果是这样,则显示出一个咳嗽动画序列中的Mario,并可能也产生音频咳嗽声音(1887)。
如果在块1885处的检查显示Mario不在充满气体的环境中,那么将进行检查以确定与Mario相关的功率因子是否小于3,从而表示Mario的能量水平相对较低。如果是这样,那么将显示出一个动画序列中的Mario,表示他喘不过气来并深深地呼吸。如果Mario的功率不小于3,那么将进行检查以确定自Mario处于静止位置以来是否已经过去了时间T1或更长时间。如果没有,那么将显示Mario正在四处看(1895)。如果是这样,将进行检查以确定Mario是否在雪中(1893)。如果Mario在雪中,那么将显示出一个动画序列中的Mario,他正在揉搓双手看起来很冷(1899)。如果Mario不在雪中,那么将进行检查以确定自Mario停止以来是否已经过去了时间T2或更长时间(1897),其中T2被设置为比T1更长的时间。如果时间小于T2,那么将显示Mario坐着打盹(1901)。如果时间是T2或更长,那么将显示出一个睡眠动画序列中的Mario(1903)。在1901、1903、1899、1895、1891、1887或1881处的处理之后,环境/时间影响处理结束,并且例程分支回到主例程。
根据本发明的进一步实施例,使用控制器56(和此处描述的系统)可以生成额外的独特屏幕效果。图33A中的图形表示操作成员在坐标系统中的物理倾斜量。中心画的圆表示操作员未操作它时操作成员45的位置(图8操作成员451处于垂直于外壳的状态)。如果操作成员451向上倾斜,如操作员所见,则圆沿Y轴正方向移动,而如果操作451向下倾斜,则圆沿Y轴负方向移动。同样,如果操作成员451向右倾斜,如操作员所见,则圆沿X轴正方向移动,而如果操作成员451向左倾斜,则圆沿Y轴负方向移动。
图33B中的图形显示了一个示例性的视频游戏显示屏幕,在该屏幕上,通过将操作成员倾斜到前、后、左和右,使瞄准器上下左右移动,从而使瞄准器与敌人34对齐。云31、山32和建筑33是变化的背景图像,敌人34是在屏幕上自由移动的对象。例如,如果敌人34如图所示出现在屏幕的右上角,则操作员会将操作成员451向右和向前倾斜。当这样做时,控制器56、X计数器444X(参见图9)及其计数值增加。计数值数据被发送到视频处理设备52。视频处理设备52使用这些额外的计数值数据来改变瞄准器35的显示位置。结果,瞄准器35和敌人34变得重叠。当它们重叠时,如果按下按钮如按钮404A等,则这样的开关数据也像前述额外数量值数据一样被发送到视频处理设备52。结果,视频处理设备52生成视频信号,在屏幕上显示导弹(未示出)等,并显示敌人34被击中。
接下来,我们将结合图34A和34B解释操作成员451移动(倾斜)偏离中心并重置的示例。当X计数器444X和Y计数器444Y在图34左图中实心圆所示的坐标位置被重置时,如果操作员从操作成员451上移开手,操作成员将返回到坐标中心位置(由虚线圆所示的位置)。在这种情况下,视频显示的变化使用图34B来解释。首先,当X计数器444X和Y计数器444Y被重置时,瞄准器35显示在实心圆的位置,就像在图33B的图中一样。这是因为X计数器444X和Y计数器444Y的计数值为0,这与初始值的计数值相同。接下来,当操作员从操作成员451上移开手并且操作成员451返回到坐标的中心位置时,X计数器444X增加并且其计数值增加,Y计数器444Y减少并且其计数值减少。这些计数值数据被发送到视频处理设备52。视频处理设备使用这些额外的计数值数据来改变瞄准器35的显示位置(将其改变为虚线瞄准器35的位置)。
例如,当操作员预测敌人34将出现的位置是图34右图中虚线瞄准器35的位置时,会执行这种重置。在这种情况下,操作员希望在敌人34出现的瞬间将瞄准器35与虚线瞄准器的位置对齐。然而,持续将瞄准器35保持在虚线瞄准器35的位置会妨碍游戏玩法,并且如果敌人34从意想不到的地方出现,操作员可能无法应对。因此,使用上述重置功能使操作员能够将瞄准器35对齐到其他位置。更具体地说,首先,使用实心瞄准器35作为参考,操作员倾斜操作成员451使得瞄准器35显示在预期位置,即预测敌人34将出现的位置(虚线瞄准器35的位置)。此时,操作成员451的物理坐标位于图34A图中实心圆的位置。此时,操作员同时按下三个按钮406L、406R和405。当这样做时,X计数器444x和Y计数器444Y被重置,并且瞄准器35显示在实心瞄准器35的位置。然后,操作员自由移动瞄准器35并等待敌人34出现。如果敌人34出现在虚线瞄准器35的位置,则操作员从操作成员451上移开手。当发生这种情况时,操作成员451返回到图34B图中虚线圈所示的物理坐标位置。当操作员精确地将瞄准器35与敌人34对齐并按下开关(例如按钮404A等)时,在屏幕上显示导弹(未示出)等,并击中敌人34。
此外,如果像上述那样执行重置,则可以将操作成员451显著地移动到右下方。例如,当操作员希望将操作成员451向右下方移动很远时,这是有效的。
应该认识到,根据本发明,操纵杆45可以以多种不同的方式使用,无论是与方向开关403一起使用,还是作为玩家可利用的基本对象运动控制机制。因此,操纵杆45不仅可以被有利地用于移动对象,如上述示例中的瞄准器35,而且同时方向开关403也可以用于控制移动对象的运动。
通过使用控制器56,本发明所设想的特定移动对象控制可能性和由此产生的屏幕效果只有一部分已在上述详细描述。例如,方向开关403也可以被玩家用来控制对象的运动,就像传统的视频游戏控制器一样,同时,操纵杆机构45可以被玩家用来操纵在屏幕上飞来飞去的目标。例如,目标可以被控制在屏幕上的任何地方飞行,在任何角度飞行,速度变化很大。在驾驶游戏的背景下,操纵杆机构可以被用作加速器、刹车和转向机构的组合。在这样的游戏中,视频处理设备52检测操纵杆机构被操作的前后程度,以确定显示的车辆加速或刹车的速度。例如,可以使用操纵杆45偏离左或右的量来确定车辆将怎样急转弯。
本发明上述描述的原点重置特性,在应用于使用上述并入申请Ser. No. 08/562,288中描述的系统生成的三维类型显示时,可以在游戏中有利地用于改变“摄像机角度”,从而修改观察场景的视点。例如,如果敌人朝着建筑物的一侧飞出屏幕,那么可以使用操纵杆机构45来改变透视视图,使得玩家实际上确定了场景观察角度。因此,例如,如果敌人藏在建筑物后面并且从当前视点看不见,那么可以使用操纵杆机构45来改变原点位置以移动“摄像机角度”,使得即使角色没有移动也能从侧面看到建筑物。因此,即使敌人没有直接看到玩家的角色,并且反之亦然,由于被建筑物阻挡,摄像机角度也可以改变,使得玩家既能看到敌人又能看到被控制的角色。
由于具有方向开关403和操纵杆机构45,玩家具有独特的能力,即同时使用左手和右手移动对象和操作目标。因此,开关403可以用来移动角色,而操纵杆机构45可以用来将火力机构对准特定方向以允许正确对准射击目标。
以上说明只是一个示例性实施例。例如,只要涉及到通过操作操作成员来改变视频图像的视频处理,就可以将本申请中的发明应用于任何类型的视频处理。
虽然已经描述了与目前被认为是最实用和最优选实施例相关联的发明,但应理解发明并不限于公开的实施例,而是打算涵盖包含在所附权利要求精神和范围内的各种修改和等效安排。



图1是根据本发明的一个示例实施方式的视频游戏系统的透视图;

图2是图1中显示的视频游戏控制台和游戏卡带的方框图;

图3A、3B和3C是视频游戏控制台和卡带的示例,更详细的实现,如图2中的方框图所示;
图3A

图3B

图3C

图4A-F显示了使用本文所述系统可以实现的示例3D屏幕效果;
图4A-B

图4C-D

图4E-F

图5是图2中显示的外设接口的方框图;

图6是首选控制器顶部的外部透视图;
图7是图6控制器底部的外部透视图;

图8是控制器操纵杆的示例实施方式的内部结构;

图9是图6控制器的方框图;

图10是描述一个示例通用游戏程序流程和组织的流程图;

图11A是关于标题屏幕处理的流程图;

图11B显示了一个示例动画对象和跟踪对象的摄像机路径显现轨迹,与图11A流程图相关;

图11C、D、E、F和G显示了示例标题屏幕显示;

图12是描述涉及城堡外处理操作一般顺序的流程图;

图13A和13B是一个流程图和概念性图表,用于解释跟踪玩家达成目标情况的操作序列;

图14A描绘了涉及目标进步相关门开启处理程序中涉及的事件序列;
图14B示意性地演示了一个说明性和示例性的开启城堡门并前进的标准;

图15A和15B是描述城堡一楼处理的流程图;
图15A

图15B

图15C示意性地描绘了城堡布局,包括一楼、地下室、阳台、二楼、三楼和城堡外的庭院;
图15D显示了一个示例目标入口相关屏幕显示;


图16是一个流程图,显示了角色的目标入口方式对目标状态的影响;

图17是关于暂停模式处理的流程图;

图18是关于暂停模式摄像机处理的流程图;

图19A和19B显示了改变摄像机视角相关处理;
图19A

图19B

图20A-20H是用于解释图19A和19B处理的摄像机处理相关图表;
图20A-20B

图20C

图20D

图20E

图20F-20G

图20H

图21和22是描述摄像机模式处理的流程图;
图21

图22

图23A-23E描绘了示例摄像机模式;
图23A

图23B-C

图23D-E

图23F-L举例说明了玩家通过激活其中一个图6控制键来启动改变摄像机视角可能生成的屏幕显示效果;
图23F-L

图24A和24B是一个流程图,指示如何根据检测到的Mario的条件,或者在检测到Mario处于特定情况时,自动控制改变摄像机模式;
图24A

图24B

图25A-C显示了一个玩家控制的角色在具有不同坡度的表面上;
图25A-C

图26A和B描绘了示例地形表面和相关摄像机模式;
图26A

图26B



图27A和27B是流程图,指示玩家控制的角色,例如Mario,是如何被控制的;

图27C-27J显示了各种示例玩家控制器启动的动画效果;
图27E-27F

图27G-27H

图27I-27J

图28A、28B和28C是流程图和图表,描述了控制显示角色速度的例程;
图28A

图28B

图28C

图29是关于选择用于生成角色的多边形数量的流程图;

图30是一个流程图,举例说明了角色如何响应环境条件;

图31是一个流程图,指示如何在跑步或角度运动期间控制角色的身体方向;

图32是一个流程图,指示环境或时间对Mario的影响;

图33A和33B是与控制器操纵杆在坐标系统中的物理倾斜量相关的图表;
图34A和34B举例说明了与操纵杆重置相关的屏幕效果。


























