分享

透过项目看程序

 勤奋不止 2012-07-16
程序员的重要性,决定了我们的钱途
    程序应该是美术画风和策划创意的完美实现,是游戏开发的基石。对项目的成败起至关重要的作用,尤其是在小公司。就这两三年有很多游戏死掉了,有的死于外挂;有的死于大量BUG;有的干脆就做不来东西。项目成败有很多因素,就程序而言,在游戏稳定性,流畅性,游戏感和性能等方面,起关键作用。游戏团队非常注重程序团队能力。

项目中的技术搭配,决定了有我们一席之地
    项目在制作过程中,选取技术的方针,简单说:
    1:选用主流技术
    2:满足项目需求,难度越低越好
    3:有难度的技术,范围越小越好
    以这3点可以看出, 平常论坛上讨论最热烈的就是我们需要学的,因为交流多,说明这项技术是主流普遍的。 因为在项目中有难度较大的工作,范围比较小,大部分的工作,并不是大家所想象的那么困难。所以对于新手来说也是有用武之地的。

项目开发中,程序员该如何成长(C++为例)

  第一阶段, 学习C++基础, 主要可以参考的书籍(已有比较好的基础跳过):
  1、<<C++ Primer>>不需要别人解释就能看懂,最大的障碍就是始终如一的耐心
  2、<<Effective C++>>、<<more Effective C++>>,这2个书中的知识都是C++开发中的普遍共识,是程序员间的默契,得真的读懂, C++的坑太多了。上面的知识领悟后,日常开发的需要,一般超不过这个范畴。再深入的C++学习,可以再以后的工作中,根据需要选修。 其他书还有如<<exceptional c++>>, <<more exceptional c++>>, <<insied the c++ object model>> <<the c++ standard library>>等等,在这个阶段,还需要有意识需要培养的能力有,调试问题的能力, 快速阅读英文的能力,发现问题,解决问题的能力。
    从刚入门到这个阶段完后,程序员的基本素质和良好的基础都已练就。加上有些许项目经验。往往薪水也会有不同程度的提升。 很多人在这个阶段就尝试跳槽改变自己的待遇,对于这一点,发表下自己的看法,供大家参考,先明确一个目标,是为以后自己长远升值或者找些好的搭档,做一个比较好的规划,而不是为了图新鲜,换个团队试试看。所以需要明确一些因素:
    1、技术在这个时候,对你来说重要性还很大,如果入门了,我也能按照自己的方式一步步,完善自己的知识体系。如果没有,那么可能还是两眼摸黑。 如果您在的团队给予了你这种方向感,那么它大概还是不错的,千瓦不要随意离开。
    2、团队的价值方向跟自己的是不是一样,现如今大家的生活压力都较大,游戏行业本身又是文化创新产业,时刻诞生着奇迹。很多公司的奖励制度,都是包含项目奖等诱人因素。但是这些东西,说实在能一下让你少奋斗多年;说不且实际,芸芸众多游戏公司,又有多少暴富的呢。再者公司成功了,你跟对老板和上司了吗。打算走这招,还是要跟对人。
    3、团队的氛围是不是适合, 如果同事关系不够和睦,那还是有机会,选择一个更适合自己发挥的地方掌握这些,基础好的,几个月到1年,稍微差点的,努力下2年也该不错了。

  第二阶段,在基础上扩大知识面
    游戏开发分很多种类,比如pc单机,页游,手游和端游(大网游)。他们用的技术不太一样。所以这阶段选择自己的优先学习范围很重要。
    先拿端游为例,说下工种分类有:2d/3d引擎程序员,其他高级模块引擎程序员(数据库,网络,寻路,脚本殷勤等各类复用度很高的模块),高级游戏逻辑程序员,初级游戏逻辑程序员(脚本程序员)
    页游,跟端游的模式差不多,只是客户端运行的方式不一样。
    而手游,也分在线和非在线。 在线的就会有网络,数据库等开发。非在线的则和单机游戏类似,主要是客户端图形渲染,物理模块,游戏逻辑开发。
    咱们大概分几类用到的技术:
    1:多线程  
    推荐阅读《Win32 多线程程序设计》,虽然已经步入64位时代,但是技术是一样的,读懂这个就够了。
    2:网络    
    看看《tcp ip协议详解》。了解协议后在window下,再看《windows 网络编程》尝试各种socket模型的练习,试试tcp是不是可靠的。为什么大家都说tcp是可靠的,我写的怎么会丢包,包颠倒等问题。实践出真知。尝试一下,就知道其中的奥秘。开发网络程序推荐一款抓包程序(winpacp),可以帮助你分析协议内容,网卡上通过的内容,它都能截获。
    3:数据库  
    服务器大都采用的是linux服务器,因此采用的数据库80%都是mysql,推荐看《高性能mysql》。再者mysql,oracle,sqlserver等关系数据库,大同小异,看这个书相当值,傻瓜式入门。不怕你不会,就怕你不看。
    以上3部分,也是普通软件行业,知识必备。所以有志于在程序方面有较好发展的,还是需要都掌握较好
    4:图形引擎开发  
    这块比较大,引用《如何学好游戏3D引擎编程》http://www.cnblogs.com/lai3d/archive/2011/05/07/2040090.html
    5:游戏逻辑开发  
    这块看似没有技术含量啊,但是这块最是吃功夫,看一个人对行业认识程度。比如商店系统,能方便单商品打折,能多整店打折,能热销现实,能实时方便修改价格等,看似简单,实在牵连到的细节太多,只能感叹,有经验的和没经验的,那就是不一样啊。再比如现在网络上流传的天龙源代码,看看技能系统,有多灵活与复杂,您就清楚这个是不是难度,有挑战了。
     6:其他各类模块  
     比如脚本系统,物理系统,AI系统,界面系统(如cegui)等,同样推荐大家找来天龙的源代码看看。
    在这部分,主要跟大家探讨的是根据自己的情况,选择技术侧重方向。咱们再从工作职责方面看,工种的分配不同的团队,会有些许差异,我尽量将大家见到的工种都列下:
    服务器程序员:多线程, 网络,数据库,游戏逻辑,脚本, AI,负责游戏服务器的架构搭建,实现各类服务器游戏逻辑功能,这个职位,最好还学习下Linux
    客户端程序员:多线程,脚本,界面,游戏逻辑, 负责客户端的架构搭建,实现各类客户端游戏逻辑功能
    3d引擎程序员:图形渲染,界面编辑,场景编辑器等客户端开发辅助工具
    工具程序员:  客服,策划,测试等提供相关辅助工具   
    脚本程序员: 在现有游戏架构下,开发脚本逻辑,可以实现,打怪做任务,节日活动等。
    注:有的公司逻辑是客户端和服务器分开开发,有的公司逻辑是客户端和服务器由一个人来开发,上面的分工也不见得都一样,不过所用技术都差不多

  第三阶段,用知识改变命运
    到现阶段,我们的技术储备,基本足以在团队中谋得一席之地,甚至于是技术的擎天博玉柱。所以该是创造收获的时候。但是一个人的力量是渺小的,找到适合自己发挥的归宿很重要。因此积累人脉,结交朋友.在日常工作中,我们只要做到以诚待人,认真对事,慢慢自己就会接触到,值得信赖的朋友和老板。
    祝大家在游戏业内,做出值得自己骄傲的产品。
    感叹游戏界,人才匮乏,一将难求,特将一些心得发布于此。为方便后来人学习,特把上面所提的书籍电子版,整理成册,放于QQ群共享内,欢迎大家加入,相互探讨。  QQ群:249837428

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多