回顾创业三年多来公司客户端技术发展

   三年前智能机游戏爆发,我跟几个朋友也一起加入这个时代的创业大军!所幸现在我们还活着,后面都不知倒闭了多少像我们这种小公司,深刻体会到市场竞争的惨烈!背景简单说一下,下面直入主题。

第一年 :

三年前的手机游戏引擎选择真的太少了,基本就是cocos2d-x跟unity,但对于当时的硬件条件来说,unity还是有点慢,而且我们当初第一款想做2D游戏(第一款产品不敢乱来),所以就只剩下cocos了。但看了cocos的代码之后,还是觉得不是太合心意,主要是因为:

1、渲染写得不够好,连最基本的材质系统都没有,渲染流程也写得很死

2、跨平台代码不统一,WP平台竟然是独立一份,维护底层不是要搞死

3、没配套工具

4、风格等各种不喜欢 -_-

(PS:这里也不是说cocos坏话,当初还不够成熟,或许是不适合我们吧,现在发展成怎么样就不太清楚,3.2之后就没有关注了)

正好我之前参与过引擎的开发,也经常关注一些开源的引擎(顺便推荐下:Urho3D很不错),虽然当时开发的引擎没有成功,但写个2D跨平台引擎应该也不是什么问题。最后也很快就把核心写完了(这里还得感谢cocos和黑莓的gameplay,帮忙解决了很多平台相关的问题),底层用C++,上层用lua,也搞了简单的材质系统,参考unity把hlsl通过工具转成glsl。这也是我们第一次做lua绑定(按游戏编程精粹7那篇文章改装过来的),感觉还是挺大胆的>-<,用lua的目的主要有两个:

1、动态更新,在运营阶段发挥了很大的作用,动态添加功能、fix bug

2、降低开发成本,不是每个人都能很好掌握c++,搞不好会失控

工具方面就取了一点巧,场景跟动画就直接解析flash文件然后转化成引擎内部格式,UI编辑器用了SONY PSM的开发套件,跟flash一样的处理思路,虽然没有集成环境那么好用,但也还凑合。其他还做了一些周边的功能,比如用breakpad来收集用户的崩溃报告等。

有些地方也没有做好,比如战斗设计,有些地方过于依赖填表;比如AI也没有做好,当初是很想用行为树的,但由于没能想清楚整体怎么弄最终还是用了状态机。整体来说对于第一个产品,技术方面还算基本达标吧!

show一下我们整个工程的目录结构,工程量还是不小,回想当初没日没夜地干,还是蛮拼的,自己都差点被感动到了 : )

  

第二年 :

由于时空猎人、格斗江湖等格斗产品的成功,我们也跟风搞了一款!

由于要做格斗类型,技术要求比以前的横版rpg上高了一些,感觉如果没有个像样的编辑器配合开发会比较难搞。那就面临是继续开发以前的引擎还是找别的工具的问题。自己开发的话,想要搞得好用估计要花很多时间,也没有找到合适的第三方工具,而且第三方工具太多了也麻烦,他们之间无法配合编辑;再者就是手机硬件发展特别快,按我们的预计很快3D就会成为主流,那自己再深化开发引擎必然会拖公司的后腿。各种权衡之后选择了unity,这款产品就当做为以后的产品打技术基础(虽然还是保守选择了2D项目)。

unity编辑器确实很强大,做得好可以很好改进整个开发流程,这也是坚定了以后我们一直会用unity的决心!不过虽然上手容易,但就是坑很多,或者说有些东西不熟悉会比较花时间。

由于有了第一个项目的lua经验,也尝到了lua在运营过程中能灵活对应需求变化所带来的好处,所以决定在unity中嵌入lua。很长一段时间都没有找到合适的解决方案,直到ulua的出现才得以缓和,主要是性能问题。AI方面也终于对行为树做了尝试,但可能是理解问题,运用起来还是遇到很多问题,主要是跟动画相关这块处理得不太好,更傻B的是unity这么多行为树插件不用,非要自己搞个外部的开源工具。总之可能是一开始接触这种组件化的引擎,思维还没完全转过来,设计上走了一些弯路!所以也就没啥可说的了!万幸的是,游戏终归还是做了出来,成功上线了。^_^

第三年:

虽然第二个项目开发周期不长,但运营维护占据了将近半年时间,新项目又迟迟不能开始。虽然新项目没有开始,当时的市场3D游戏已经满地开花了,所以没有意外我们下一个项目也是3D,还好当初英明的决定,哈哈。

刚好这时候有部分同事的时间空余了出来,我们决定对unity和以前的技术重新梳理一遍,改进开发流程。最终我们得出了一个重要的结论:要像开发单机一样开发网游!为什么这么说呢,总结一下我们在项目过程中遇到的麻烦:

1、由于技术、美术、策划完全分开(目的是为了方便美术、策划开发、工程保密),导致全部东西的整合必须靠技术,就算是策划把人物属性从10调到100,或者美术修改了一张贴图,最终都靠技术把东西导进去才能生效。这就导致了迭代慢、周期长,而且也没有调动策划的主动性等各种诟病。

2、毕竟lua还是有些性能问题(一般写UI逻辑都OK,但写核心战斗还是得好好规划下),但又希望能动态更新逻辑,两者相互矛盾。

问题最大的还是第一个,主要是很大影响了开发进度。最后我们的解决方案是:所有专业用同一工程,技术不再担任功能的最终实现者,由策划来做,技术提供策划想实现其想法的各种工具,然后让策划来弄,充分发挥策划的创造力! 以前的流程是:策划提需求->技术实现策划需求->策划验收;现在的流程是:策划提需求->技术提供工具->策划借助工具实现其需求。这个最明显的体现就在于:关卡、技能、AI、任务等系统,工具实现好之后策划基本想做什么就能做什么,不用再问技术,减少了沟通成本的同时也提高了产品的创新力。凡事都有两面性,首先需要策划有一定的逻辑能力(实践下来,只要策划是有心想做的,这根本不是问题,反而他们会很高兴);其次要划分好哪些是策划做的、哪些是技术做的;再者就是要在技术层面上控制好策划犯错,不然会乱。

总体实践下来还是令人满意的,这里也介绍下我们最底层的工具。其实就是借鉴了虚幻kismet、playermaker、uscript、cryengine3 flowgraph等工具,制作一个在unity平台上适合于我们自己的可视化脚步工具。那为什么要重新制作一个呢,第一个就是像uscript太复杂,playermaker不够强大,数据驱动不够方便(希望能动态更新,代替部分lua的功能)。有图有真相,以下是我们AI编辑的截图

有机会再详细介绍一下,就到这里吧。

欢迎大家共同探讨游戏开发问题,QQ:277911234

时间: 12-06

回顾创业三年多来公司客户端技术发展的相关文章

创业三年,离开公司,请各位看一下我的简历,指点一下未来的路

大家来帮我看一看我这个简历能找到什么样的工作.工资啊福利啊大约会是什么样子,请各位给我指点一下未来的道路吧. 首先大概说一下我的情况吧,我和朋友于2011年创业.和几个小伙伴一起建立了公司.终于将于2014年7月底离开公司,这一路创业走过来.辛酸苦乐.仅仅有自己知吧.感慨良多,但终于仅仅能说,天下无不散之宴席吧. 再大概说一下我的工作. 我是2010年中南大学计算机毕业.保送到本校读研,于2013年研究生毕业,但公司是2011年创立,从那时起就一直在公司上班,得到自己导师的观赏和非常多的帮助.我

从程序员的角度谈创业三年

  摘要:在创业三年时间里作为联合创始人,虽然拿着大家均等的股份,我始终是没有什么话语权的,但是,这也给了我从旁观者的角度看清整个局面的机会.创业公司的成败绝大程度取决于技术大牛和公司 Leader,这两个人最好能在性格上形成互补,而遗憾的是我们公司是同一人. 关于决定是否创业 2012年4月,正好三年前整,在深圳能源正混的郁郁不得志的时候,大学的好兄弟找到我一起创业,他们有钱.有 idea,就是差人,当时的我还是技术菜鸟,本科学的也不是计算机,看着移动互联网蓬勃的发展羡慕不已.很快就答应了一起

从程序员的角度谈创业三年(转)

  摘要:在创业三年时间里作为联合创始人,虽然拿着大家均等的股份,我始终是没有什么话语权的,但是,这也给了我从旁观者的角度看清整个局面的机会.创业公司的成败绝大程度取决于技术大牛和公司 Leader,这两个人最好能在性格上形成互补,而遗憾的是我们公司是同一人. 关于决定是否创业 2012年4月,正好三年前整,在深圳能源正混的郁郁不得志的时候,大学的好兄弟找到我一起创业,他们有钱.有 idea,就是差人,当时的我还是技术菜鸟,本科学的也不是计算机,看着移动互联网蓬勃的发展羡慕不已.很快就答应了一起

客户端技术:Cookie 服务端技术:HttpSession

客户端技术:Cookie 服务端技术:HttpSession 07. 五 / android基础 / 没有评论 一.会话技术1.什么是会话:客户打开浏览器访问一个网站,访问完毕之后,关闭浏览器.这个过程称之为一个会话.就如同打电话.2.会话在编程中主要解决的问题是:保存各个用户的数据信息.3.保存用户各自数据的主要技术:客户端技术:Cookie服务端技术:HttpSession 二.Cookie1.获取Cookie采用request.getCookies()2.设置Cookie采用respons

淘宝技术发展

转载 http://blog.csdn.net/kobejayandy/article/details/8685271 目录 一.引言 二.个人网站 三.Oracle/支付宝/旺旺 四.淘宝技术发展(Java时代:脱胎换骨) 五.淘宝技术发展(Java时代:坚若磐石) 六.淘宝技术发展(Java时代:创造技术-TFS) 七.淘宝技术发展(分布式时代:服务化) 作者:赵超 一.引言 光棍节的狂欢 “时间到,开抢!”坐在电脑前早已等待多时的小美一看时间已到 2011 年 11 月 11 日零时,便迫

Web开发技术发展历史

Web开发技术发展历史 来自:天码营 原文:http://www.tianmaying.com/tutorial/web-history Web的诞生 提到Web,不得不提一个词就是"互联网".Web是World Wide Web的简称,中文译为万维网."万维网"和我们经常说的"互联网"是两个联系极其紧密但却不尽相同的概念.今天"互联网"三个字已经承载了太多的内涵,提到互联网,我们通常想到的一种战略思维,或者是一种颠覆传统的商

正确处理好工作任务和自身技术发展的关系

工作有3年有余,周围接触了不少的同事.总的来说,我周围的同事分为两类:工作踏实型和技术热爱型. 我周围有的同事十分踏实,分配下来的工作总是匆匆完成,平时也不见空闲,总是在不停的敲写代码,这种勤奋工作的热情常常令我自叹不如,所以我常常以此类同事为榜样,希望自己也像他们一样做到专注.后来,通过深入的了解,我发现这类同事对自己的评价总是"技术不太行",虽然有自谦的成分,但是从我自己的观察来看,这类同事往往对JAVA技术谈不上热爱,没有追逐新技术的热情.除了按时按质的完成任务,他们并没有更高的

~~ 近十年WEB技术发展历程 ~~

ajax 03年的时候我上六年级,那时候网吧刚在小县城的角落萌生.传奇,大话西游第一代网游一时风靡.我抱着试一试的心态给了网吧老板两块钱想申请个号玩玩,然后接下来的一个小时我一直在,注,册,账,号. 彼时网吧用的512k的带宽,注册的时候,填了一堆信息,提交,页面跳转,嘣,"您填写的信息有误,请重填".然后跳转回注册页面,以此循环.我现在时常想,如果当时ajax能普及开来,我就可以省2块钱了. 那么ajax是什么? 首先ajax是一种技术.以往的网页交互方式,用户在点击一个按钮后,比如

十年WEB技术发展历程

一个小分享,知识有限,列了几个我觉得颠覆性的发展,抛砖引玉. ajax 03年的时候我上六年级,那时候网吧刚在小县城的角落萌生.传奇,大话西游第一代网游一时风靡.我抱着试一试的心态给了网吧老板两块钱想申请个号玩玩,然后接下来的一个小时我一直在,注,册,账,号. 彼时网吧用的512k的带宽,注册的时候,填了一堆信息,提交,页面跳转,嘣,"您填写的信息有误,请重填".然后跳转回注册页面,以此循环.我现在时常想,如果当时ajax能普及开来,我就可以省2块钱了. 那么ajax是什么? 首先aj