`
shake863
  • 浏览: 661597 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【转】缺陷与出路—一个游戏开发者的反思 二、项目开发中的混沌和秩序

阅读更多

二、项目开发中的混沌和秩序

       我们可能都听说过这些说法:“你不可能不劳而获”“覆水难收”或“天网恢恢,疏而不漏”。如果这些谚语对你说来不算陌生,而且在日常生活中你也反复有过这 样的亲身体验,那么你就懂得了热力学第一定律和第二定律。

        ——《熵:一种新的世界观》

       在游戏开发过程中,很多人应该有过这样的经历:整个项目的细节越来越多,但没人知道整体是个什么样子;自己做的工作越多,越感到没有信心和无助;不断修 改、修正和返工。其实,这就是热力学第二定律所表述的,整个项目的无序性在增加,如果不加以控制,那么最后的结果就是进入最无序的状态,也就是整个系统的 平衡态,即完全裹足不前的状态。事实上,无论游戏制作人意识到与否,游戏能否正常开发完成、能否达到立案之初的目标,很大程度上取决于游戏团队对抗热力学 第二定律的能力。
之所以熵增原理对游戏开发影响如此之大,是由游戏开发本身的特殊性所决定的。以制造业为对比,制造业发展到现在非常成熟,其整个工程的无序性和不确定性并 不随着规模的增长而质变,原因在于:
1)产品各部件的质量定义非常清晰(目标清晰,需求明确);
2)每道工序对于最终产品的作用易于进行量化评估;
3)成熟的流程管理或过程管理机制;
4)专业化的团队;
5)最重要的,足够的理论指导和经验积累;
以上是使传统制造业免于熵增原理荼毒的几个关键因素,而游戏开发业显然不具备这些因素。结果就是,制造业常规状况下都能完成产品的量产和销售;但只有不足 一半的游戏正常开发完成,而达到立案目标的可能不足2成(仅仅从国内的状况而言可能更少)。

  大型的游戏项目从立案到策划案,到程序架构 设计、底层开发、工具开发、上层逻辑编写,到美术资源制作、到整合、到测试,经历了一个单向资源流动的过程,这个过程类似一条河流在流动过程中不断吸纳支 流,最终汇流入海。在资源传递的过程中,由于传递的层次很多,在语言和文字的表述无法绝对精确的状况下,多次的传递不仅容易产生错误、遗漏,还会不可避免 地出现误解。每个层次资源传递中出现一点的偏差,汇总到最后可能出现若干巨大的错误,这就是“差之毫厘,谬之千里”。

  在缺乏成熟管理机 制的游戏开发业,使得热力学第二定律在这方面有了很大的发挥空间。某些策划懒得写必要的文档,依靠口头说明办事;部分团队没有工作总结;很多策划不知道能 通过非语言手段(图片、拓扑等)表述信息;更多公司从来不写会议纪要和讨论纪要;绝大多数制作人都没有项目关键词定义的概念。

  因此,要 首先重视定义,才能制定有效的沟通机制。

       在论坛里或朋友之间,我们经常能听到某个朋友说:“如果XX游戏这样设计就好了”,或抱怨说:“XX游戏为什么没有继承前一代的某种优点?”在游戏开发 中,我们用“功能模块”来表示玩家所提到的这种乐趣点。一个功能模块往往代表了玩法的一个方面,当足够多的模块被整合之后,玩家所看到的就是我们希望展示 的游戏世界。很多设计者试图堆砌足够多“好玩”的独立系统来形成一个“足够好玩”的游戏。“好玩”的独立系统随着新游戏的推出在不断增加,因此形成一个 “足够好玩”的游戏需要的部件越来越多了。由于每个游戏模块都会通过某些接口来操作游戏属性/游戏进程,从而发生作用,这些操作与其他模块的操作可能产生 相似/互斥的结果,甚至可能改变其他模块的开关状态。因此理论上,每个新模块被整合进入系统时,制作者都必须检查所有与此模块具备公共操作区域的原有模 块,甚至必须检查所有操作可能带来的属性变更对依赖属性的原有模块的影响,这在系统足够大的时候是不可能完成的工作。

  这带来了另外一个 熵增的根源,项目的复杂度随着模块数量的代数递增作几何递增。即制作人对项目的控制力和把握会随着项目规模的加大而迅速降低,当复杂度到达一个临界点时, 制作者追加任何模块,其整合成本对团队都是无力承担的。在这种状态下,依靠堆砌的制作人会在一个阶段之后突然发现,大量问题突然的、集约的出现。

   相对稳妥的做法是:确认核心需求,并围绕核心设计必要的外围需求,从底层构架一个层次分明的需求,避免堆砌大而全的四不象,突出重点。

   熵增原理作用的一个重要来源是缺乏计划性。由于缺乏经验和理论指导,加之相对漫长的开发过程导致市场的快速变化,在开发过程中,游戏制作者经常主动或被 迫频繁地调整策划细节,这种藐视计划性的做法直接导致软件开发目的的不确定性递增。而不确定性反过来作用于游戏团队本身,使开发人员泄气和疲惫,降低工作 效率和主动性,最终没人会相信工作计划,也没人会尽力做好自己的工作,因为这个工作随时会扔进马桶(被新的需求取代)。一种极端的状况是,有些团队连基本 的工作计划和里程碑都没有,每周的工作完全是项目经理来临时安排;另一种状况是,一个既定的计划不会被尊重,开发计划几乎每星期都会推倒修改。很显然,这 两种状况下开发已完全失控,其无序性远远超出了正常范围,开发团队必须付出几倍的预算和时间才能获得一线生机。

  所以,像对待承诺一样信 守你的计划——千万别轻于承诺,但承诺了就要做到。

  以上说的是3个常见的现象,本章我们讨论的热力学第二定律,其实代表了项目开发中混 沌和秩序的对决,而对抗热力学第二定律的实质是,追求设计规范所带来的秩序和控制力,减少无序性和不确定性。

分享到:
评论

相关推荐

    Android3D游戏开发技术详解源代码(各种游戏项目源码)

    这份"Android3D游戏开发技术详解源代码"集合提供了一个全面的学习资源,包含了多种游戏项目的源码,非常适合对3D游戏开发感兴趣或者正在学习这门技术的开发者。下面,我们将深入探讨这些标签所涵盖的关键知识点。 ...

    Unity3D 游戏开发 PDF完整版

    这使得Unity特别适合于需要在多个平台发布游戏的开发者,也正因为这一特性,Unity在移动设备和网页游戏开发中变得越来越流行。 在当前的游戏行业发展中,各种移动平台的智能手机迅速崛起,为游戏开发提供了新的平台...

    C#软件项目开发全程剖析.rar

    《C#软件项目开发全程剖析》是一本针对C#编程语言和软件开发流程深度解析的教程,由清华大学出版社出版。本书旨在帮助读者从基础到高级,全面掌握C#语言在实际项目开发中的应用技巧和实践经验。 C#是微软公司推出的...

    WTL开发者指南 pdf版

    - **定义**: WTL (Windows Template Library) 是一个基于 Win32/64 API 的轻量级模板库,主要针对用户界面(UI)开发。 - **特点**: - 小巧、快速、不具侵入性。 - 支持多线程。 - 不依赖外部 DLLs,最终用户仅需一...

    Android经典项目案例开发实战宝典源码

    "Android经典项目案例开发实战宝典源码"为开发者提供了宝贵的实践资源,包含21个精选的项目案例,覆盖了多个子领域,如移动应用开发、游戏开发等。这些源码是深入理解Android开发技术的宝贵教材,可以帮助开发者巩固...

    QGIS 示例程序,实现QGIS二次开发

    本示例程序旨在帮助开发者了解并实践QGIS的二次开发,利用vc9(Visual Studio 2008)作为开发环境,结合qgis1.6 SDK(软件开发工具包)和qt4.7库,实现对QGIS基本GIS功能的扩展。 QGIS的二次开发通常涉及以下几个...

    Visual C++游戏开发经典案例详解.pdf

    《Visual C++游戏开发经典案例详解》这本书是针对使用Visual C++进行游戏开发的专业指南,旨在帮助读者通过实例学习和掌握C++编程语言在游戏开发中的应用。书中的内容覆盖了从基础到高级的游戏开发技术,包括图形...

    深入体验C#项目开发(全部源代码及其附送源代码)

    在深入体验C#项目开发的过程中,源代码是学习和理解编程思想、设计模式和技术实现的关键。C#作为Microsoft .NET框架的主要编程语言,被广泛应用于桌面应用、Web应用、游戏开发以及移动应用等多个领域。本资源包含了...

    2019-2020 中国开发者调查报告完整版.pdf

    为了更准确的绘制出中国开发者整体图谱,同时也为未来IT行业趋势和人才发展提供指导,CSDN从2004年开始发起中国开发者大调查并发布年度调查报告,报告中的数据已成为众多企业和专家进行相关策略制定和未来趋势判断的...

    股票软件二次开发dll接口及示例源代码

    股票软件的二次开发是金融行业中一个重要的技术领域,它允许程序员根据特定需求定制或扩展现有的股票分析工具。本文将深入探讨“股票软件二次开发dll接口及示例源代码”这一主题,主要关注大智慧、交易师(飞狐交易...

    cocos2dx 游戏开发系列之三 源码

    在游戏开发领域,cocos2dx是一个广泛使用的开源游戏引擎,尤其在跨平台开发中扮演着重要角色。本篇将深入探讨cocos2dx游戏开发系列的第三部分——源码解析和Android工程的创建与迁移。 首先,cocos2dx是基于C++的,...

    人脸识别开发包(免费,可商用,有演示、范例、说明书)完整项目实例源码

    9. **SDK**:软件开发工具包,通常包含库文件、头文件、示例代码和开发文档,是开发人员集成人脸识别功能到自己项目中的基础。 10. **Sample**:样本代码目录,包含了一些示例代码,展示了如何使用SDK中的API,这...

    2D格斗游戏,C语言实现

    在本项目中,我们讨论的是一个使用C语言开发的2D格斗游戏,它具有开源和自由软件的特点,让我们深入探讨这个项目所涉及的关键技术、设计思路以及C语言在游戏开发中的应用。 首先,2D格斗游戏的核心是游戏引擎。尽管...

    C++(qt)游戏实战项目:坦克大战(源代码)

    这个项目的目标是帮助开发者深入理解和运用C++面向对象编程,同时体验游戏开发的乐趣。 首先,我们来看看核心的源码文件: 1. **tank.cpp**:这是坦克类的实现,包含了坦克的移动、射击等基本行为。通过C++的面向...

    使用C#基于海康SDK的二次开发

    在海康SDK的二次开发过程中,开发者可能会遇到以下几个关键知识点: 1. **网络设备通信**:了解如何使用SDK连接海康的网络摄像头或其他设备,包括设备的发现、身份验证和数据传输。 2. **视频流处理**:通过SDK...

    40个安卓小游戏源码

    每个源码都是一个独立的游戏项目,涵盖了不同的游戏类型和编程技术,可以帮助开发者提升技能,理解游戏逻辑、渲染、动画、用户交互、性能优化等关键点。 首先,我们可以从这些源码中学到Android应用程序的基础结构...

    QT程序实例(真实项目)

    总的来说,这个QT程序实例是一个综合性的学习资源,不仅覆盖了QT的基础知识,还包含了实际项目开发中的高级技术,对于想要提升QT编程技能的开发者来说,无疑是一份极具价值的学习资料。通过深入研究和实践这个项目,...

    基于C#.NET的Autocad二次开发范例

    在IT行业中,Autodesk AutoCAD是一款广泛应用于机械、建筑、工程等领域的计算机辅助设计软件,其强大的绘图和设计功能深受专业人士喜爱。然而,仅靠AutoCAD的基本功能往往无法满足所有用户的需求,这时就需要进行二...

    JAVA项目开发文档模板总结

    在Java项目开发中,一套完整的文档模板是确保项目顺利进行的关键。这些文档涵盖了从项目启动到最终交付的全过程,帮助团队成员明确职责、跟踪进度、评估风险并确保满足客户需求。以下是对标题和描述中提到的知识点的...

    《Cocos2d-Js开发之旅-从HTML5到原生手机游戏》完整源码

    6. **游戏逻辑与状态管理**:书中可能包含游戏状态机的设计和实现,展示了如何组织游戏流程,比如菜单、游戏进行、暂停和结束状态。 7. **资源管理**:Cocos2d-Js有内置的资源加载器,用于加载图像、音频、JSON等...

Global site tag (gtag.js) - Google Analytics