2009年7月26日星期日

China GDC 再唠叨一篇

再唠叨一篇笔记吧
(文中串改了讲座的官方名称,以及文中所有观点仅代表我个人,不代表我供职的公司、GameDesignOutside 博客以及水源 GameDesign 版面,某些名词使用可能未经斟酌,见谅)

讲座:下一个时代
Tim Sweeney

一大早来到会场,为了补一些照片,也为了在讲座中占个好位置(事后发现该讲座并没有原先猜想的那样爆满……)。虽然我没有听到本次 CGDC 中所有的讲座,但我还是想说这应该是本次最好最有价值的一个讲座了,没有之一。本以为这是一篇和今年 GDC 美国上同样的 PPT 拿来再讲一遍,结果发现是一份新的想法(Xw.Y: 事后得知这些观点都已经多多少少的发表过,不过我是第一次了解到,所以还是比较惊的)。讲座开篇花了很短的时间简单介绍了一下 Epic 公司以及 Unreal 引擎的发展,然后切入主题。我就不废话了,直接放出笔记,鉴于我不是很熟悉渲染技术,可能有一些错误,若发现还烦请告知:
  • 2008 年的游戏开发规模
    • 战争机器2
    • 15 位程序员
    • 45 为美术
    • 2 年的开发周期
  • 将来硬件的发展方向
    • CPU / GPU 功能的混合
    • 时钟频率继续提高
    • 核的数量继续提高
    • 带宽继续提高(包括标量代码和向量代码)
  • 2012 年到 2020 年
    • 如何控制在多核多线程下的代码开发
      • 人为的理解多线程工作方式,并小心的写代码(很难,程序员之间很难互相理解各自的代码)
      • 建立一种消息机制,或者叫消息协议,用来同步不同的线程(消息协议会相当复杂,并且增加后期调试的成本,甚至无法调试)
      • 使用 Software transactional memory 机制(目前能考虑到的可能的解决方法,类似于数据库中的读写机制,但可能需要在语言层面提供这种功能)
    • Pure Function Programming
      • 尽可能写一些只有输入并返回输出的函数,函数体内无任何数据或者逻辑的修改,避免写回操作可以提高函数级的并行
      • 比如float Sin(float x)
    • 代码的向量化(Vectorization)
      • 旧的向量化,SIMD, SSE
      • 新的向量化,ATI, Nvidia GForce 8系列,Intel Larrabee
  • 2010 年到 2020年图形技术的展望
    • 回归百分百的软件渲染
      • 可能会超越 OpenGL / DirectX 的 API 接口
      • 超越 intel, nvidia, shadow 等各种硬件构架,平台技术
      • 随着当今 CPU 计算速度的提升,不需要借助硬件而纯计算的渲染方式成为可能
    • Raytracing 动态实现成为可能
    • REYES 渲染模型成为可能
      • REYES = Render Everything Your Eyes See
    • 体量化的渲染 (Volumetric Rendering)
    • Software Tiled Rendering (Xw.Y: 感觉有点类似 SLI 分屏的实现方式)
      • 由于运算效率可能会极大超越显存或者内存,导致显存/内存成为瓶颈
      • 将每帧画面(framebuffer)切割成多块,多次送入渲染管线单独渲染,然后合并
    • 混合图形编程
      • CUDA 等技术
      • 同场景下不同技术的混合使用,比如在某个高处往下看,某些部分用raytrace,某些部分用REYES,某些部分用软渲染,某些部分用硬件加速……OMG。
  • Epic 的经验与教训
    • 要重视效率和产能
    • 随着硬件的提高,开发越来越复杂
      • 多线程编程需要普通编程两倍的工作量
      • PS3 开发(Cell x 3)需要五倍的工作量
      • GPGPU(通用显卡变成)需要十倍的工作量
    • 尽早的做计划

会后,开始接受提问,我很想问一下 Tim 对 OnLive 和 Natal 的看法,但是被另外一个同学问了一个 DX9 和 DX11 有什么区别打断了……另外还有一个日本来的记者问他关于 console 的问题,估计是来八卦的……然后,大神就开始被一些同学围观,签名,拍照……我只好躲在角落画圈圈了。整篇讲座相当紧凑,感觉时间一下子就过去了,Tim 在台上隐约 TBBT 中 Sheldon 的影子,非常的投入自己关注的内容,这些应该是他近几年思考的小结。


讲座:Lean Product
Danny Isaac, EA Korean

这位似乎是极品飞车 Most Wanted 和 Underground 的制作人,并且是 FIFA 05 之后的制作人,他谈论了如何在游戏项目中进行 Lean Product (精益开发),他花了太多的时间讲解 Lean Product 在 Toyota 制作业的历史……我觉得完全没必要,然后主要在讲解如何让项目团队做到高效率。感觉总结的还不是很完整,引用一些概念吧。
  • 一下情形都需要避免
    • un-built,尚未开始开发
    • un-tested,已开发完,但未经测试,没有QA验证过
    • un-integrated,已开发,但未经整合,只是单独功能能够工作
    • code not used,已开发,但从来没有使用过(感觉和 un-tested 类似)
    • evaluate incomplete feature,评估一个不完整的 feature,那得出来的结论可能完全不正确。
  • test early, integrate often, fail fast (早测试,多整合,快取消)

总的感觉是这位同学在海外大公司的环境下呆久了,想法自然是很好的,但这种做事方式不完全适合国内游戏行业的现状。


讲座:P2P 在网游中的应用
Gu XinChun, The9

同样,花了大量的时间来介绍 P2P 的技术背景,比如什么网络分布的方式,NAT 的含义,UPnP 的含义,NAT 的穿透等。并讲解了 P2P 技术是如何应用在九城研发项目上的,基本上他们用 P2P 做玩家间的语音视频的连接,以及 Patch 版本的发放。最后他提了一下他们所谓的“副本”也使用 P2P 技术,通过挑选一个性能优良的客户端作为服务器运行,但似乎他没有考虑到游戏性的“主机优势”的问题。这个演讲群众们也很热烈的提问,几乎从一个讲座变成了一个问答。


午饭
又蹭到午饭了,hiahia,谢谢公司的同事主动打电话给我发饭票。由于今天吃了早饭,所以午饭明显没有昨天好吃,但还是不错的,免费的总是不错的。


讲座:如何提升 3D 引擎(渲染)的效率以适应大型 3D MMOG 的需求
Li Yi, Wanmei

主讲人是 3D 引擎总监,他花了四分之三的时间讲了几个用来做 Profile 的枚举定义的含义,比如需要抓一下一共有多少三角形啦,一共有多少贴图啦,切换VertexBuffer的耗时之类的定义,概括来说,就是需要将 3D 渲染分为宏观效率和微观效率,分为计数器和计时器这么四个交叉分类,各自统计结果,但没有说如何调试。最后花了四分之一的时间简介了一下什么是 LOD 技术。讲座中得知,他们有一套自己的引擎,叫做 OverMax (?),第二代已经应用于先用的产品,目前正在开发第三代引擎,也许可能大概会走向游戏机平台。

说起来,CGDC 的听课证也要好几千了吧,居然放这种讲座,这点钱我去买参考书的话估计也能放一面墙了……有同事说我听了这几节课,都值回一台 PS3 了,我要说我真想要 PS3 也不想听枚举定义啊……


讲座:物理引擎在网游中的应用
nvidia, mkz by object, 一舞成名 by QWD1

本来这应该是我个人很有兴趣的一堂,结果发现它是 45 分钟的物理引擎扫盲课,20 分钟的目标软件及 MKZ 游戏广告,及 20 分钟一舞成名间接宣传 unreal3 和 PhyX 广告。最后我很想问 QWD1 的那位老大一个问题,一舞成名会不会被绿坝呢?其实这个讲座中目标的那个对物理引擎在游戏中的解决方案我还是有一些兴趣的,虽然我自己没有答案,但我不认为他们是一个很好很正确的解决方案,总之还是看他们游戏放出后的结果吧。


结束语
总的来说,对这次 CGDC 相当的失望,在我听的课程中,除了大神的讲座,以及萧博士的讲座外,没有太多有价值的东西。也许这也反映的目前国内网游行业的整体水平。当然,可能在我没有听的课程中也许有一些新的有价值的东西,需要等下周和同事们交流。这个周末就这么结束了,相比较宅周末和加班周末,这样的周末还算是不错吧。如果你读到这里,那我要先谢谢你,在抱歉一下容忍我那么多可能不合逻辑的废话,最后放图吧。实在找不到网络上哪里有相关的图片,只好自己动手了……烂相机+烂技术,凑活看吧。


大门

包装袋赞助商:盛大十八基金

黄金赞助桑:crytek,这次他们市场宣传做的好厉害

砖石赞助桑:AMD

九城和复旦有一腿?

大神的讲座

最后的最后,还是期待十月份的正版吧。看这份演讲名单还是很值得期待的(我错了,这份是07年的名单,今年的名单大概还没出)。并且有首届中国独立游戏节。希望广告少一点,科普少一点,质量高一点,体现出正版的价值。

1 条评论:

  1. 不知道啥时候能有视频流出> < 错过大神演讲真失策。。。

    回复删除