出来行,迟早是要还的(篇六):衣带渐宽终不悔

     近期面试,遇到遇到了两件事:
     1、终于有TR问我3D数学相关的了,指导点和面的向量表达方式,怎么求点在面的距离,其实只要代入点的坐标n*Point+d就能求得点到面的距离,但是我都忘记点面关系了。至少明确一点,我必须要在3D开发和3D数学相关深化,决不能回到2D写UI的层次,要不然此次离职才是真正地亏大:钱又无(上线奖金),人又无(多出的个人时间不用来进步,狗都不愿意吃)
     2、不是Set、不是Map(即不是红黑树和hash映射),而是deque。说句实话,目前而言,移动端也越过了内部瓶颈问题,可以明确地进入空间换时间的算法时代;但这不是我忘记deque的实现机制理由。我基本没在实际项目中使用过deque,不知道是怎么回事,我想不起需要使用它的场景;另一方面,list和map比vector带来更多的碎片问题可以考虑用deque来弥补,但是deque也不能有较好的增删性能,基于此发现list和deque一样具有较少的使用场景;也就是说,搞定vector、map(set)、unordered_map就实现container知识使用的80%。但是我们时常自己实现了map映射(map或vector)和数据区的存储(链表或vector),其实这个就是deque,但是有较好的增删改查性能。
     现实是,我们只需要记住:来自侯捷《STL源码解析》
     Deque系由一段一段的定量连续空间构成,一旦有必要在deque的前端和尾端增加新空间,便配置一段定量连续空间,串接在整个deque的头端或尾端。deque的最大任务,便是在这些分段的定量连续空间上,维护其整体连续的假象,并提供随机存取的接口,避开“重新配置,复制、释放”的轮回,代价则是复杂的迭代器架构。

基于deque从中间插入单个数据的较差性能,可以考虑实现插入一个mapNode,被存放插入新数据挤出来的旧数据缺不满足一个mapNode长度(即插入极少量数据不够一个MapNode的情况下),考虑使用单个mapNode来存储,并将结束点指引向下个MapNode。这要求插入或查找时处理断层空间问题。插入时逻辑问题不大:该下表的MapNode还有可存储空间,则进行小范围移动,若没有则申请新的MapNode实现上述逻辑的插入。查找时则丢失了原先的逻辑直接映射,但是问题不大,极限的情况下出现二倍长度问题:即每个满MapNode后面跟随一个仅存储一个数据元素的MapNode。要么进行类似于hash冲突系数的调整,要么进行最优和最次范围进行查找。普通的vector中进行二分法删除元素,变成在原先n的2倍空间进行查找,仅仅多了一次,效率上和旧的deque属于同个数量级,复杂度增加在于新数据结构模拟连续的逻辑处理方式。问题来了,这也散失了下标式直接索引的优势,需要额外记录断层空间的总量感觉上改了还不如不改。最后只能是KISS(keep it simple,stupid)。然后我就基本没用过deque了,希望面试时别问这个啦。
       回到上次的问题,假如大家都不喜欢UI,怎么处理工作分配的问题?如何分配达到一个最高效率?
       尔后,我突发奇想,假如将一个游戏的UI和Icon工作限制在一个游戏开发工作量的30%到40%左右,会怎么样?基于什么原因出现这个念头,首先美术同事们都不愿意画icon(特别是遇到出现修改icon材料的情况下),中级程序不喜欢弄UI,大家都觉得浪费自己的劳动力。我不喜欢听到某个老大说公司花钱请你来就是包括干这个,甚至主要干这个。好吧,好像曾经听到类似言论,我因没有绝对实力,没有去反驳,但进心里了——我一定要有绝对的技术实力不再写UI,如果拿着二三十K月薪写UI我也是醉了,权且当放假吧。故高级程序基本没可能再接触UI,除非主程任务分配及管理工作出现重大的失误。同理理解高级原画和主美。
     当社会的人力成本越来越高时,游戏开发行业也会感受到社会的整体变迁。此时跟开题还没有绝对的相关性。
     跳一下话题:下一款火热游戏类型是什么?卡牌?RPG?MMO?真正的卡牌具有极高的游戏性,基本说就算不再风靡,总有固定的用户群,不能因为游戏热风略过就认为其该进入历史。RPG和MMO,就是当前的东南风,差不多到中国二级阶梯——该停了,还没上市的项目组速度上线,圈点效益回来。下个时代,3D无疑,招聘市场上基本是unity3D,cocos不成气候(主要是2D失败率不低+3D底层开发不成熟+工具流相较差了一个级别,时间点2015年08月07日),不排除行业内的初级客户端人员饱和(#define 告诫 LOG(新手们或实力不够自信的朋友不要在当前节点离职,重要的事要说三遍) for(auto i = 0;i< 3;++i){告诫;})。
     3D也有很多类型,不知道大家是否记得乱西游,可惜现在还没实现玩家间的多人对战,有移动设备和国内运营商瓶颈(流量真心贵,好吧大公司内部会有移动用户调查报告,为什么他们有,因为制作人一个手指头就可以把我这种级别小咖干掉),可能还有一点:网易自研多人即时性对战类产品不多,不排除即时对战的通信分支版本没能通过测试——我乱猜的,别打脸(求私信打脸)。LOL和Dota系列是仍是当下主流之一,但是有个明显的趋势:快节奏。然而设计大神们多次提速游戏数值,企图加快游戏正常的平衡崩溃(决出胜负),一场游戏的有效时长还是没能控制在25分钟内。
     本身Dota类游戏就是基于碎片化时间的产物,很多有正常生活工作的玩家不能长时间投入于RPG形式的游戏(征途和传奇的怀旧系列大卖就明白了有多少玩家回笼了)。虽然结果上大部分玩家触发类Dota的海洛因模式,投入更多更长的时长于游戏时间(基本不比RPG少,如果当年不是我哥在网吧当着我面把我冒险岛online的装备全部丢掉,可能我也会在RPG的死循环中沦陷了)。但是RPG类游戏不停地构建一个个“斯金纳盒”让玩家不停地点击——这个和类dota玩家不断的开始新的一局游戏一样。实际因素和结果会有差别,行为都属于斯金纳盒行为方式,大部分玩家赢够了都会去休息,而人与人的对战总是少于50%的人获得胜利的快感,类dota玩家会在不停地进行50%淘汰在线(即实现下线行为),这点比PRG玩家无法控制自己的下线时间好多了。最后有一部分玩家掉进50%无限循环中,可能触发删游戏或催死还有可能叫个外卖,和新上线的玩家重新开始新一轮的游戏成为获得胜利快感的50%玩家。这里注意到一点,类Dota玩家同时也养成了不断上线的“斯金纳盒”中老鼠不停按钮的行为。最后都变成不停地吸食“电子海洛因”。LOL的低门槛为这场“毒party”构建了一个更大数量即的基数去计算1/2的n次方,点个赞。
     好了重点无非是说明,碎片化时间一直是主流,游戏必须在碎片化时间中开展。这样子就出现了几个流派:
     RPG派:硬生生地培养玩家碎片化行为连续性行为。对玩家的生活和工作经常产生极其负面的影响,但是收益比最高——目前来看,中国的游戏厂商大多数是靠这个起家的,未能确认是时代因素还是游戏类型因素。
     类Dota派:培养固定长度的碎片化行为,从而形成固定周期习惯,保证玩家的有效生命——长期弱化玩家的正常物理活动,封闭社交圈停留在玩家与玩家之间,造成伤害可以使永久性的。不知道是不是我自己的问题,我试过在RPG类型游戏中和其他玩家有其他社交延伸,但是在类Dota中没长期与一个陌生玩家交互过。线下真人从陌生到熟悉不算。
     家机等存档派(还没完全诞生):得看游戏类型,单机读档也会成为上个PC单机时代(据说被破解和外挂毁了),比如家机联网了,然后开发个RPG扔在上面,好吧,家机和移动端版迭代完PC端的历程?这倒不会吧,单机有其魅力,大型制作厂商不会有较大的改变行为——暴雪都出移动端游戏了,我预测不了任何事物,我就是个软件工程师,未来会偶尔侃侃数学和物理学、计算机几何学。
     如何发挥玩家的碎片化时间产生运营效益?要么如上述般培养用户习惯(忽然发现微博、知乎、外卖、打车软件等都TM是同个逻辑导出的产物,太恐怖了!!!个人行为完全被控制了,幸好我有时间思考了这个问题),要么用休闲轻游戏:这些就不说了,真的很多,而且我基本不熟,我定位是游戏引擎方向,轻休闲类的技术目前就物理引擎是我感兴趣的,其他的UI类“斯金纳盒”开发工作是我从业的噩梦。我害怕在这场厂商的赚钱美梦中沉沦,害怕没有实力去引导身边的工作流,我害怕被雇佣来写UI。
     回到原题的某个节点:游戏类型最热将为类Dota。而我能在这场狂欢中出任程序组的什么角色——3D逻辑开发(技能等,场景管理相关问题思考过好多次,锁视角是目前我能直接用的结果,八叉树或个人思考的方体排序均未实现出来),简单shader,寻路(我的寻路仍未完成主干道法和网格导航,但是圆形版的算法可以给出,作为项目的启动模块),物理引擎的使用这块真心不够,多边形相交的原理我都还没学会,怎么感觉这个和导航网格中类似的计算多边形约束有知识重叠。可能我要学学python暂时写基本的UI编辑器、场景编辑器、粒子编辑器等。能力出现真空范畴,如上面推测网易团队的问题:多人即时关键帧数据同步模型,仅在知乎收藏层次。
     再跳回上层话题,人力成本高,需要管理好人的生产力就要处理各种角色之间的矛盾冲突。所以,程序和美术的黑洞:UI和Icon应该控制在一定比例下。而卡牌类游戏的可玩性完全依赖于策划思维的独创性——说实话,想出来大多数都会被全屏copy,投资这些思维还不如投资技术壁垒,比如育碧的IK算法应用于自己的开发团队中(好吧,国内估计没几个会的,所以才是壁垒)、实际点的如3D逻辑实现、物理碰撞、即时网络对战同步、场景资源管理、内存以及效率优化、工具流(unity3D没这个问题,这就是它的优势)等。将程序和美术的工作核心调整至可玩性之后,策划这边就要认真的构建世界观工程以及玩法核心不能停留在点UI上了。这点结局可能促使策划入行门槛瞬间提高——好吧,我对策划工作不熟悉,连个excel都是更多在于浏览而非操作。
     问题来了,哪个制作人会乐意将一个游戏的UI和Icon工作限制在一个游戏开发工作量的30%到40%左右?毕竟付费界面是UI写。所以我的方向应该是将技术难点逐个突破,提供技术支持保证,这样子我的意见会被极大地采纳。甚至是由我来引导游戏世界观的构造——把UI的比重限制了,只能在沙盒红构建更有吸引力的元素来提高游戏的可玩性。
     曾经有人说他的一生注定是抗争的一生。这样子是很奋发,但也太累了,我应该学会在一个友好的环境中低头,而不是将抗争性带入新的环境里面。要时刻记住不能被依赖性和逆反性影响自己的行为,做综合性方向决定是要全面考虑相关的影响因素,做取舍决定时应该剔除环境因素的影响,接着假设完成取舍后,有较低比重的负面环境因素导致取舍结果期望值较低,这个时候应该考虑地是如何避免被负面的环境因素影响,而不是被负面的环境因素决定其他个体的取舍。
     一旦决定了就不可以后悔,坚定地走下去!只有开朗阳光的人才能保证绝佳的创造力。


(类dota其实就是现在的MOBA,至今没拿到offer,难道是入职时间填错了)


你可能感兴趣的:(出来行迟早是要还的,CPP手札)