Game Engine Architecture by Jason Gregory:1.2 什么是一个游戏

可能我们都会对“什么是一个游戏”有一个直观上的感觉。“游戏”这个术语包含桌上游戏如象棋、monopoly,纸牌游戏如扑克和21点,赌博游戏如轮盘赌和街机,对战游戏,电脑游戏等,它们在少年儿童中很普遍,这个单子还可以列得更长。在学术上,很多代理商为了在一个定义良好的游戏规则下最大化利润下选择产品分类的时候,会之为“游戏理论”. 当我们在谈游戏机或者电脑上的游戏的时候,“游戏”一般指在一个三维的虚拟世界中,有一个虚拟人,或者动物或者车辆,作为主角由玩家来控制的这种类型的软件(为了避免我们中的一些死板的人的抗议,或者它也包含二维的如Pong, Pac-Man, Donkey Kong等游戏)。在<游戏设计中趣味的理论>(A theory of fun for Game Design)这本天才的书中,Raph Koster定义“游戏”是互动的、可以给玩家学习和掌握并带来持续性挑战的一种体验。Koster强调这种活跃的学习和掌控技巧是我们所说的“趣味”的核心所在,它就如同一个笑话只有当你通过了解它所说的而会意的时候才会变得好笑。
因为本书的目标所在,我们将会集中在这种由一个二维或三维的虚拟世界和一定数目玩家(大约在1个到16个左右)构成的游戏上。我们将要学的很多知识也可用于flash游戏,解谜游戏如Telris,大型多人在线游戏上面。但我们的主要的侧重点在于这种第一视角射击游戏,第三视角动作游戏,赛车游戏,格斗游戏仍其它类似的游戏。

1.2.1 电视游戏是一个软性的实时拟真系统
绝大多数2D或3D电视游戏都是这种被计算机科学家称之为“软性的透过代理进行实时交互的计算机拟真”。让我们来看看这句话到底是什么意思。
多数电视游戏,里面的“世界”-假想的世界-是模型化可视化的数学,所以才能被计算机操作。模型是对现实物体的一个近似和简化(即使是一个假想的物体),比如到包含原子或者夸克这种细节明显是不可能的。因此,数字化的模型只是现在或者假想的一个模拟。近似和简化是游戏开发者的两个威力巨大的武器。当使用得好的话,即使一个非常简化了的模型都跟真实的东西让人不能分辨,并且更有趣。
“透过代理”的拟真是指有许多叫做“代理”的实体进行交互。这个描述适合大多数3D电脑游戏,它们中的代理是车辆、人物、火球、能量站等。给这些游戏中代理物体生命的,是用一个面向对象的,或者至少是一个支持松散的对象化的程序语言实现的,应该不会让人感到惊讶。
所有的互动的电视游戏都是“即时拟真”的,意思是游戏世界中的模型是“动态”的-游戏世界的状态会随着事件的发生和故事情节的展开而变化。电视游戏也必须对玩家(现实中的人)不可预测的输入进行响应-“交互性的即时拟真”。最后,大多数电视游戏实时的展开它们的故事情节和响应玩家输入,这就叫“实时交互的拟真”。一个值得注意的例外是回合游戏例如电脑国际象棋这种类型,或者其它非实时的游戏。但是即使这些游戏也都提供了跟玩家交互的实时图形。所以基于本书的目的,我们假设所有的电视游戏都至少有一个“实时”的东西。
所有实时系统的核心是一个叫做“时间期限”的概念。一个显式的例子是在电视游戏中,屏幕必须每秒至少更新24次以提供动画感。(多数游戏以每秒30或60帧的速度渲染,因为这是一个NTSC监视器的更新频率的倍数)。事实上,在电视游戏中还有许多其它类型的时间期限。一个物理的模拟可能需要每秒更新120次才能保证正常。一个人工智能系统可能每隔几秒至少要“思考”一次以便不会显得很傻。音频系统可能需要1/60秒之内至少更新一次,以便填充音频内容不至于发生故障。
一个“软性的”实时系统是指错过时间期限而不会引起大的灾难。因此所有的电视游戏都是软性的实时系统-当画面死掉了,一般来说玩家(人)不会!与之相对的是“硬性的实时系统”,当错过时间期限的话会产生非常严重的伤害甚至造成操作人员死亡。直升机中的电子系统或者核设施车间的控制系统就是这种硬性实时系统的范例。
数学化的模型是指可以被“解析方程化”或者“数学化”。例如,一个在重力加速度影响下的刚体的运动的数学上的解析方程(闭合的)如下:
y(t) = 0.5 * g * t*t + v0 * t + y0; (1.1)
一个解析方程化的模型是可以被计算结果的,不管它的依赖的值是多少,例如上式中的时间t,只要给出初始化的条件v0和y0,还有常量g.如果能找到这种模型的话会很方便。但数学上的很多问题没有这种“闭合的”解决方案。在电视游戏中,由于用户的输入是不可预测的,我们就没有办法把这个解析方程化。
对这个在重力影响下的刚体的数学化模型可能是这样:
y(t+dt) = F(y(t), y'(t), y''(t), ... ); (1.2)
这个是指,这个刚体在将来某一时刻(t+dt)的高度可以通过一个对当前高度和对当前时间派生的第一次、第二次等的计算的方程式来表示。为了确定系统的在每一个时间步上的状态,典型的数学上的模型是通过多次递归计算得出来的,游戏跟这一样。一个主要的“游戏循环”反复运行,在循环的每次重复中,各种各样的游戏系统如人工智能,游戏逻辑,物理拟真,还有其它的东西就有机会去计算,或为下一个时间点更新它们的状态。这个结果最终被通过播放画面进行“渲染”,发出声音,可能还会产生其它输出如在手柄上产生压力感应。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值