随笔 - 34, 文章 - 0, 评论 - 2162, 阅读 - 17万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

愤怒的小鸟的究竟有没有很高的技术含量?

Posted on   栖山  阅读(7380)  评论(56编辑  收藏  举报
 在我第一次看到愤怒的小鸟这个游戏的时候,就对它物理模拟的效果赞叹不已。在一次园子中的评论中,几位园友对小鸟的技术不屑一顾。实在看不下去了,当时我谈了一些自己的看法,但也没有深究下去。今天看到一条新闻,就顺藤摸瓜做了一下调查研究,下面把一些调查结果和大家分享一下。
这是新闻的链接http://www.cnbeta.com/articles/136109.htm)

  让我很吃惊的是,小鸟的物理引擎不是小鸟游戏开发公司的原创,而是一个开源的物理引擎,名叫Box2D

  这个引擎起源于2006年的GDC大会上的一个物理碰撞的教程,随后发布为开源项目。最初的演示就是一堆箱子。(这里是一个项目原型的截图,http://www.box2d.org/screenshots.html)
  看到这些图,我真的很吃惊,这几乎就是一个小鸟游戏的很粗略的示意图。难怪Box2D的作者会对小鸟公司表示不满。
  在2008年3月6日,2.0版正式引入“持续碰撞检测”(continuous collision detection)。这是我最欣赏的一个特性,而小鸟游戏的开发是在2009年。也就是说这个2.0版本让小鸟游戏直接成为了可能。
  同时这个引擎也被移植到了XNA平台,这样在Windows Phone 7上,小鸟也可以运行了。

  下面是Box2D的全部特性。

(有几个个特性看上去非常有技术含量。我不是做游戏的,很多特性我也不知道什么意思)

Collision
    * Continuous collision detection
    * Contact callbacks: begin, end, pre-solve, post-solve(接触回调函数)
    * Convex polyons and circles.
    * Multiple shapes per body(多形状实体)
    * One-shot contact manifolds (击打接触,是为小鸟设计的?)
    * Dynamic tree broadphase
    * Efficient pair management
    * Fast broadphase AABB queries(这个是什么?)
    * Collision groups and categories

Physics

    * Continuous physics with time of impact solver
    * Persistent body-joint-contact graph
    * Island solution and sleep management
    * Contact, friction, and restitution
    * Stable stacking with a linear-time solver (这个是什么?)
    * Revolute, prismatic, distance, pulley, gear, mouse joint, and other joint types
    * Joint limits, motors, and friction
    * Momentum decoupled position correction
    * Fairly accurate reaction forces/impulses (比较精确的力反馈)

System

    * Small block and stack allocators
    * Centralized tuning parameters
    * Highly portable C++ with no use of STL containers

结论:

  1,愤怒的小鸟是一个非常有技术含量的游戏,不过这个技术含量更多来源于它的开源物理引擎,当然小鸟的创意也是成功非常重要的因素。
  2,开源里面有大量等待发掘的金矿,只要我们勇于探索,也许有一天我们也能有非常有创意的产品出现。
  3,虽然我是用我的经验和审美来直觉体验小鸟的深刻技术内涵,不过多一点调查总是有好处的。可以收获更多的知识和经验
  4,如果我们使用了开源项目,应该表示出对原作者足够的尊重, 而愤怒的小鸟在这一个点上显然做得不够好。

 

编辑推荐:
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
点击右上角即可分享
微信分享提示