战魂小筑

讨论群:309800774 知乎关注:http://zhihu.com/people/sunicdavy 开源项目:https://github.com/davyxu

   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  257 随笔 :: 0 文章 :: 506 评论 :: 0 Trackbacks

    《洞穴Portal》是一款以HL2引擎制作的FPS游戏,该作与其他FPS在游戏方法上有很大不同,以往的FPS都是以使用各种武器屠杀敌人为主,而《洞穴Portal》在游戏方式上显得非常聪明,他不追求杀戮的快感,也不追求画面的华丽。游戏的关键在于利用空间传送,打开空间入口,完成各种迷题。

    本作强调解迷,挑战玩家们的逻辑思维能力。在游戏中,主角的武器就是一把可以打开通往任意空间入口的传送枪,传送枪不但可以打开空间入口,还可以挪动地上的物品攻击敌人,空间将再也无法束缚你的脚步,能神不知鬼不觉的消灭敌人!

    Valve还宣布,Valve将随PC版《半条命2:第二章》、PS3和X360版《半条命2》一起推出这款全新的单人游戏。

 

先来熟悉下Portal游戏怎么玩

http://v.youku.com/v_show/id_XODk3MTMwOA==.html

 

现在讨论3d实现方法,看图

GK}TW)$ESO4C{UDNS(PUBQA

图中,圆圈代表玩家,方块代表2个门,从圆圈发出的直线代表玩家行进方向,重力向下,侧向图

这个图表示在地面打开2个门,玩家从一个门进入,进入到另外一个世界

要实现这个图,需要建立4个世界

 

]DT4$O[HUJ1F04ZS_SMDEYS

这是更加复杂的例子,注意看左上角,玩家在墙上和地上分别打了洞。从墙上的洞进入,会从地面上出来

要实现图,需要建立4个世界

 

 

]RVSNZKH19@I89__9KKUENS

这是一个特例,玩家在世界的平台上打洞,和在世界边缘打了个洞。虽然是建立2个世界,但是左边的世界明显和右边的世界不是等大的

 

其实Portal的原理,我们早在叮当(现在叫多啦A梦)的任意门就实现了,但是打开门的世界与进入前的世界处于2个地方。当在同一个地方开2个洞,就是portal的实现

 

要实现Port有几个难题

1. 怎么进入到另外一个世界

看到另外一个世界很简单,通过另外一个Camera渲染出来做成贴图即可

但是要能进入,那必须是几何空间是通透的


 

2. 到底构建几个世界?

其实根据在游戏中的分析与一些资料的透露,建立2个世界即可

 

3. 切换到另外一个世界时,我(摄像机)不需要更换?

实际看下来可以是,我进入到另外一个世界,而另外一个世界进入到我的世界

 

4. 怎样处理世界递归?

这是个有趣的话题,现实世界也存在这样的问题,比如说,你用2面镜子对着,眼睛从当中的一面看另外一面,就会形成视觉递归,只不过你不能进入到那个世界而已

类似于本文开头的递归世界图片,这个在Portal游戏中是有设置递归层级的,应该是受到渲染限制的,因此世界创建的个数应该与递归层级有关系。

posted on 2009-07-16 11:40 战魂小筑 阅读(581) 评论(1)  编辑 收藏 引用 所属分类: 游戏开发技术

评论

# re: Portal游戏的实现理论分析 2010-05-02 16:28 rSkip
在我看来:
当两个洞都创建好的时候 就可以通过位置关系求得两个变换矩阵,只需要创造出通过变换矩阵变换之后的另两个个自己,在和世界进行交互时同时用三个自己进行判断。(当然要判断是否是穿过洞进行交互的)
我对HLSL并没有什么了解 不过我还是比较相信利用光线追踪一类的技术可以实现世界递归。如果当前像素显示的是穿过洞的图像 就把射线按照变换矩阵变换 继续向前 直到显示的不是洞或者当前射线长度达到一定值停止。

这样的话:
1 维护好三个自己的关系 保证一个是真实的自己 另两个是穿过洞的自己 穿过洞的时候适时删除旧的 创建新的 在游戏系统方面只需要一层递归应该就够用了
2 按照上面的说法 1个世界就够用了
3 利用光线追踪一类的技术就可以 在射线穿过洞的时候进行变换
4 同3  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理