回到这个论坛的时候,我带来了一种说法,可能当时没有人很在意,那就是——cocos2dx并不适合游戏研发。可能当时大家只当笑话一看,可是时至今日(其实也没几个月),物是人非,cocos2dx的用户已经大幅度减少,无数人转投了unity的怀抱,不论原先是用air的、还是starling的或者本身就用cocos2d(x)的,都选择了unity。那就竟是什么导致了这样的格局呢?其实深入思考的话,其中有很多问题,我们可以将他们举一反三、反思到游戏项目研发和设计思想中去。

1、好的内核与好的产品间有着巨大的鸿沟

  无可否认,cocos2d和unity都有很不错的内核,不论是渲染还是内存管理(这点说的有点心虚……)上都是很不错的,我甚至敢说这两者旗鼓相当。但是为什么大家更多的愿意选择unity,核心原因之一是,unity在开发上有一个非常友善的环境。我个人没有使用过unity是真的,但是我知道unity在开发游戏ui,和一些动画机制上,其便捷性远高于cocos2d。我们要知道当你用cocos2d去写一个界面的时候,那种痛苦简直是无法承受的,虽然他们提供了一些编辑器,但毕竟编辑器能适应的只是做一个网页,而作为一个追求高品质的ios游戏,你的界面必须是“动起来”的,而不能像也有一样,要么开启要么关闭,都是一瞬间,连个动画过程都没有。因此在实际开发过程中,unity占据了绝对的上风,虽然他们开发出来的东西,效率上几乎是相当的。

  由此,我们必须反思——游戏研发和设计中也有类似的问题,很多时候我们的游戏有了一个良好的内核,在玩法规则上可能非常棒,但是游戏产品成绩却很糟糕,其实问题的关键在于那些非内核的工作上。你要明白,一个好的游戏想法实现出来成为游戏内核后,那只是游戏的10%,可能都还不到,也许外行或者玩家会觉得一个游戏产品,只要“好玩”就够了,大道理没错,可是好玩不能排除的因素太多了,除了规则好玩,你还要注意很多用户友好度,所谓用户友好度,不是说让你顺着玩家心里去设计规则,而是顺着玩家习惯去设计用法,比如Ios游戏中,竖屏相对横屏会有巨大的优势,竖屏中你还要考虑如何兼容或者解决左右手使用习惯的人群等等等等,你的界面是否能在最少的点击次数、最短的时间、最顺畅的流程下达到用户期望的结果?你的游戏体验是否第一时间能够通过操作等传达给用户?这些问题都是决定胜败的!正如cocos2d最后败给(好吧,没人承认也没人宣布,我们只看大潮风向)了unity的关键所在。

  好的游戏产品,内核(核心玩法)很重要,没错,但是内核以外的东西更加重要,所以做游戏研发工作,千万不要抱有“想法至上——我能设计的好玩就是一定是个好游戏”的玩家思想,做产品,有太多的东西值得去探索去品味。“台上一分钟、台下十年功”很多时候你看到的一个表现还不错的界面,短短几秒钟你都没有在意但确实觉得至少没什么不好的地方,这几秒钟背后可能是策划、程序、美术几个小时的共同努力换来的。

2、只有聪明人才能玩的游戏也许是好游戏,但不会是普及的游戏

  cocos2dx的研发思路是传统的oop,而unity则使用了一种component驱动的逻辑,我的老大也自创了一套entity system结合了2者的优点,尤其是Component驱动的思路,设计了一套entity system,因此虽然我没有使用过unity,但是大概还是了解了Unity的思路和我们现在的做法是非常相似的。

  对于游戏策划来说,如果你有一点基础的程序知识,深入的想一下,你就明白,oop对于程序的要求其实是非常高的,如果在初期没有想清楚结构,或者遭到策划的一再变更开始无尽的修改,整个项目的代码立即就失控了,最后你可以看到很多“WriteDie”(这个词我们用来描述一些为了特殊需求而写死的代码)的垃圾,而这些垃圾又往往会引申处无数的magic number(一些带有极其特殊含义的数字,当你改变他们值的时候,你的程序也许突然就崩溃了),最后整个游戏程序一发不可收拾,成了包装精良的大便。而unity(或者说我们正在用的entity system)的思路很清晰(我就用我们的entity system来说,unity我真没深入的了解过),system就是指挥中心,指挥所有士兵(entity)运行,而每个士兵有很多的标签(component),记录了他的属性和成为他归属于哪个司令部管理的象征,在你编写程序的时候会非常容易的添加和维护一些东西,你不用过于担心新追加的需求,也不用过于在意初期没有想好的东西(但是你必须还是要先有个大概的框架,这个必须是由策划一起组建的逻辑框架,不然项目到后来是会越做问题越多的,任何项目都是)。

  这样一来你不难看出,其实cocos2d对于程序的要求是“更聪明”,因此他遭到了弃用。在游戏设计中,我们也应该反思,我们的很多设计是否过于要求玩家“太聪明”,这与要求玩家skillful(我不知道用中文表达这个词汇是多么麻烦的事情,所以直接用了这个英文单词)是截然不同的,skillful的出发点是玩家具备一定的熟练度和技巧性,然后合理的运用、尽量避免失误;而要求玩家“更聪明”,则是从概念上出发,需要玩家具有太高的抽象能力、空间想象能力。Eve受到冷落的原因有很多,很多人归纳是题材(星球大战)、很多人归纳是规则残酷(事实上比起金庸OL死一次掉1级最高武功、甚至因此成了残废,有学点的打不过,打得过的没学点,几十级的账号彻底玩不下去了,练1级可能几天,死一次1秒,所以当时开始有了“秒杀”这个词汇,来说要“仁慈”多了),但事实上Eve的很多地方过于要求玩家的抽象能力,过得了这个层面的玩家很好理解这个游戏,过不了的就是玩不了,包括EQ也是,并不是系统复杂这么简单,更多的是因为一些概念需要玩家的空间想象力。而要求玩家“更聪明”的另外一个直接表现就是我曾经在写一个SLG的AI时候犯过的错误,一些AI的行为聪明到玩家无法直接理解,需要经过好几个回合才能发现妙处,不够直观的聪明、超过人类太多的聪明、超越人类普遍的思维能力等都是要求玩家“更聪明”的表现,请不要在你的游戏中去挑战玩家的智商,这是自寻死路。降低这些难度也是降低游戏门槛,做到“上手容易”的关键所在。

3、传承性或者可复用性是楼梯边的扶手

  有一个有趣的说法——现实生活中,你在爬楼梯的时候,你对于楼梯边的扶手熟视无睹,你甚至不会去使用它,但当把扶手拆除的时候,你在楼梯上的心情就大不一样了,虽然还是不会有任何危险。虽然这个说法更多讲述的是心理方面的问题,更多的是人在不同环境下不同的心态之类的,但是你也可以看到,一些熟视无睹的东西会多么重要,就像楼梯的扶手,你不能不造它,虽然从逻辑出发他根本没有什么意义(就像1中所说的,核心功能就是能上下楼,没错,功能完美,但他不是好的产品,因为它需要扶手来确保他看起来更安全,虽然安全性并没有本质地得到提高)。

  事实上我们换一个思考角度去看这个扶手问题,在游戏开发中,包括编写程序时,我们都会忽视一个问题——那就是项目的传承性和可复用性。cocos2dx用的是oop思路,虽然你从书本知识上可以得到很多关于oop的好处,包括他的精髓是继承之类看似很有可复用性的地方,可是现实是残酷的,没有一个oop的项目到了“2代”不是从头写过的,哪怕设计上完全一致的东西。最初我们认为这是程序员缺乏项目经验,可是长久以来并不是程序员没有长进,而是游戏的变化太多太快,如果你不在开始就像可复用的东西,oop下就很难再沿用了。但是Unity(或者说我们的entity system)则不一样,当项目完了之后,我们可以回头再拆分component和system(这里是要求策划加入Coding的),分析出一些可服用的环节产生出template,来大幅度降低一个游戏开发的时间。最初我们用cocos2dx写一个塔防游戏,纯研发阶段逻辑用4小时完全完成,界面我们要用上20天左右完成,毕竟我们做的是产品,不是做个看起来能玩的东西就完事儿了;几个项目之后,我们做一个植物大战僵尸类似的游戏,逻辑还是用4小时,界面还是用了20多天。但是转战entity system之后,最初一个横板动作游戏(忍者龙剑传3FC版)类似的游戏,逻辑用了3天,其他方面包括界面用了1个半月;而现在我们做一个类似的游戏,逻辑只需要3小时,界面什么的制作如果从我们的“库”里能够找到,那基本上也是几天就能搞定。

  可见,游戏研发中的可复用性是会带来巨大经济效应的。那么反思到游戏设计当中,我们也必须思考好很多可以复用的设计,这样才会造福团队(这也是策划的核心价值之一,不然你一个策划没有程序员工资高那是理所当然的),最典型的可复用的甚至可以提高到可传承(不仅你自己可以复用,全行业都可以沿用)的就是一些数学公式,但是可惜的是,整个行业内现在传承的是神仙道、是打孔、镶钻、升星、附魔(这个几乎没有,因为存在“技术难度”)。

总结

  游戏研发没有这么学科,因为他至今才短短数十载,且得不到人们的认同,在影视等其他娱乐手段的“威胁”下生存是很艰难的,因此我们没有太多可以直接阅读后学习的心法,我们只能去其他领域寻找经验,生活中有很多范例暗示着我们如何搞好游戏,一个策划要学会观察和分析事物,用于研发工作中,为团队创造价值,这是策划相比设计师要担起的更高的责任。

从cocos2d-x到unity看游戏研发、设计中一些要点相关推荐

  1. Unity 3D 环境特效||Unity 3D 游戏场景设计实例

    Unity 3D 环境特效 一般情况下,要在游戏场景中添加雾特效和水特效较为困难,因为需要开发人员懂得着色器语言且能够熟练地使用它进行编程. Unity 3D 游戏开发引擎为了能够简单地还原真实世界中 ...

  2. Unity 3D 游戏编程设计g03

    1.1游戏对象运动的本质是什么 游戏对象运动的本质是游戏对象随着动画帧的变化而产生的游戏对象的坐标以及角度的变化.通过平移.旋转.缩放的方式改变游戏对象的transform属性. 1.2抛物线运动 ( ...

  3. Unity 3D 游戏编程设计g04

    unity-3d/Priests and Devils g04 at main · Mike0006/unity-3d (github.com)

  4. 看懂架构设计中的服务隔离

    前言 我们在做系统架构设计的时候,经常离不开的一个话题就是进行服务的隔离设计. 那什么是「服务隔离」呢? 顾名思义,它是指将系统按照一定的原则划分为若干个服务模块,各个模块之间相对独立,无强依赖.当有 ...

  5. 游戏交互设计中的114条原则

    1.游戏中的交互界面设计不是凭空猜测.要符合用户习惯. 2.用户界面应该基于用户的心里模型,而不是基于实现模型. 3.目标导向的交互反映了用户的心理模型. 4.用户不理解布尔逻辑.他们不管为什么,只要 ...

  6. 演讲实录!谷得技术总监陈镇洪教你打造游戏研发流水线

    本文来自网易云社区. 7月31日,2018云创大会游戏论坛在杭州国际博览中心103B圆满举行.本场游戏论坛聚焦探讨了可能对游戏行业发展有重大推动的新技术.新实践,如AR.区块链.安全.大数据等. 谷得 ...

  7. 雨松MOMO《Unity 3D游戏开发》源码公布

    原创文章如需转载请注明:转载自雨松MOMO程序研究院 本文链接地址:雨松MOMO<Unity 3D游戏开发>源码公布 下载源码时,首先大家请登陆图灵社区找到<Unity 3D游戏开发 ...

  8. 【Unity 3D 学习】 《Unity 3D 游戏开发》(第二版 宣雨凇著) 书中一些名字注解

    前言 在学习<Unity 3D 游戏开发>这本书的过程中碰到了一些术语,比如序列化.反序列化.反射等,这些基本都是常见的程序员行话,但是感觉自己对这些术语总是一知半解,为了让自己更清楚地知 ...

  9. 转行游戏公司却无从下手,游戏美术设计这个岗位再不了解就晚了!

    网络游戏设计师.游戏美术设计师,这些听起来很新鲜,感觉起来还有些"不务正业"的职业. 什么是游戏美术设计 游戏美术设计师是指负责网络游戏页面设计制作和网页的美术创意设计等人员. 常 ...

  10. 游戏网页设计:拟物还是扁平?

    游戏网页设计的扁平化设计从13年的设计潮流发展到如今的设计趋势,在网页设计中已经应用广泛.相比于曾经成为主流的质感化网页,这两者之间带给用户的体验变化究竟有哪些?以下我们来谈一谈. 扁平化设计为何如此 ...

最新文章

  1. 干货丨大数据最核心的关键技术:32个算法
  2. 如何卸载Exchange Server 2010
  3. 解决JQuery AutoComplete在IE9下出错的问题
  4. faststone 注册码
  5. 潍坊理工的计算机专业怎么样,潍坊理工学院教育学专业怎么样
  6. KODExplorer 简介
  7. 04-mysql常见命令,语法规范,
  8. ubuntu14.04修改limits.conf后链接限制仍然不生效
  9. main函数argc,argv操作
  10. 推理集 —— 物品与动物
  11. php替代换行符号,php换行符号替换与过滤例子
  12. 企业架构之道(三)之企业架构框架概述
  13. Extjs EditorGridPanel
  14. Linux 2.6内核配置说明(10----Device Drivers设备驱动程序)
  15. 词干提取(stemming)和词形还原(lemmatization)
  16. 今日头条、抖音推荐算法原理全文详解!
  17. 定位及overflow
  18. 2.HTML+CSS制作一闪一闪亮晶晶的星星(stars)
  19. linux aux是什么命令,Linux查看所有进程ps -aux命令介绍
  20. Photoshop CS2 9.0算号器

热门文章

  1. 正弦波形多波形叠加的音频文件生成工具v1.0使用说明
  2. 中国土地市场销售规模状况与投资战略研究报告2022版
  3. stn专线和otn有什么区别_stn云专线是什么意思?
  4. ASP.NET全套视频教程
  5. 有意思、值得思考的文章记录
  6. 抢占氢能产业发展风口,上海重塑能源集团股份有限公司助推行业发展
  7. BCH分叉是一次站队博弈
  8. ccxprocess用不用自启_你电脑上开机自启的软件都有哪些?
  9. Reflection conclusion
  10. 位运算实现求一个数的相反数