网络游戏程序员新手入门 [转]

原文地址: http://job.17173.com/content/2008-12-15/20081215172107441,1.shtml

游戏开发流程和部分分工

    流程:调研 -- 开发 -- 测试 -- 运营(我们公司的情况分析)

    公司类型介绍:游戏开发公司、游戏运营公司、游戏开发运营公司


开发部门构成:

策划(灵魂)8-10人

    主策划、执行策划、脚本策划、文案策划、关卡策划、数值策划、界面策划

程序(骨肉)8-10人

    主程、客户端引擎、服务器端引擎、逻辑程序员、3D程序、AI程序、物理程序、脚本程序、数据库程序、编辑器|工具程序员

美术(皮肤)20-30人

    人物原画、人物建模美术、材质贴图美术、人物动作美术、场景原画、场景建模美术、UI界面,图标平面美术、动画CG术、特效美术、音乐音效


其他管理部门

    1.开发组长(部门协调);2.项目经理(项目整体把控)


通常开发流程是:

    项目经理(产品经理):立项。(前期预估项目成本,风险,市场情况。中期重新评估)

    主策划:游戏原型策划。(消费群体,能力,产品定位,游戏风格。)

    执行策划:写初部策划案。(将主策的想法具体的细节实现,提前3-4月)

    美术,程序:实现(基本是同时动工)

1.主要构架,测试主逻辑,测试引擎。

2.主功能,(图形,脚本,AI,数据库,网络的测试)

3.主逻辑模块,(战斗,聊天,换线,任务)

4. 附逻辑模块,(好友,队伍,小地图等等)

5.游戏整和调试,(关卡串联,置入音效,策划数值调整)

    宣传。(游戏官网以及周边的游戏功略说明书,游戏截图宣传等)

    技术测试:白盒内部测试。代码效率,可扩展性,DEBUG功能移除,封包,加密测试。

a测试:黑盒测试部测试。游戏内部测试(功能性测试)

b测试:黑盒BEBUG测试。主要进行各种不合常理的行为操作的测试,和GM功能测试。

内测:重点测试服务器压力。

公测:获取用户群的信息表,已确定游戏的一些商业运营方式

当代游戏的特点以及技术概述

整体行业近况:

    1、运营成本增加,盈利模式趋同。
    由于国内游戏开发环境已经逐步完善,游戏与游戏之间,游戏公司与游戏公司之间的竞争加剧,游戏的商业化运营更加正式,做为游戏的重要的宣传手段,运营的投入也大幅增加,于是便分化出了游戏运营商和开发商。根据Ireasch的2007年报告来说,中国67%游戏已经是PayToPlay转化为FreeToPlay,典型的有盛大的招牌《传奇》,都转为免费游戏+收费道具。

    2、产品老化严重,用户忠诚度很低。
    用户:蝗虫族。2/3以上玩家兼玩2种或2种以上的不同类型游戏。平均蜜月期不足1年半,国外玩家平均蜜月期为3年3月。新的网游很多,但是能够冲破 WOW,传奇,西游 三大霸主的地位难度还是很大。很多游戏是热门抄作期一过,就完了。

    3、游戏产品类型五分天下,玩家群分化严重。
    回合制MMORPG:大话,梦幻,问道,水浒Q传
    2D ARPG:传奇,征途
    3D ARPG:魔兽。热血江湖,RF,天堂2,天龙八部
    休闲游戏:跑跑卡丁车,劲舞团,街头篮球
    棋牌类:QQ游戏,联众

    4、跨行业合作性强。
    可口可乐,康师傅,百事可乐均进入游戏合作推广,游戏作为一种宣传媒体,这种宣传模式越来越被认可)


    5、整体来说:中国网络游戏行业,面临机会和挑战并存。
    一部分厂商凭借稳固高质量的游戏产品和务实的运营开始崭露头角,一部分则因为产品运营原因,关门大吉。网游市场多极化发展,用户拥有了广泛的选择,对产品质量和用户氛围也越加注重,游戏公司必须和市场一起成熟起来,才能适应今后的发展。

 

游戏程序发展方向:

1.代码重用性。出现引擎。

2.OO思想和效率的兼顾。C++语言的流行。

3.游戏可扩展性,灵活性。脚本语言的流行。

4.硬件的发展。3D将成为主流,虚拟现实VR,Web3D也大肆发展。

5.网络的发展。网络游戏的适用范围越来越大。分布式服务器的流行。(EVE)

6.AI,物理在游戏中占的比例越来越大。

1:引擎的作用。

    将不同游戏的共同功能抽象出来,做为核心底层的封装的代码就是引擎。

    最底层大致包括:计时器,内存管理,错误处理,输入设备处理,网络通讯,IO输入,基本的数据结构,取随机数大小值等基本数学方法函数,不同格式的文件数据类型读取。

    稍高一层大致包括:音效管理,网络通讯管理,UI管理,对象管理,寻路,场景管理,渲染器管理,脚本管理,物理模拟库,AI状态机,数据库管理,图形管线,角色对象管理系统等。

    若是3D游戏的话,在图形图象部分还要多出一些部分:Shader,粒子系统,渲染对象管理,2D精灵系统,地形,BSP树拣选,八叉树拣选,包围盒,摄象机,动态模糊,动态光照,碰撞检测,鼠标拣选,HDR等。


2:C++语言的发展。

    相对C来说,OO思想更符合现在大型项目的开发思路,在效率上C++较之JAVA,C#等语言效率很高,可方便的嵌入汇编优化。

    汇编:快,超快又小巧。要是天才汇编程序员,比其他语言程序员做出的程序强大的多的多。可以学习起来极难,编写一个程序,需要极多的代码。完全没有任何移植性可言。我们不可能用它来做一个游戏,但是,局部可以汇编优化。MMX指令集。

    VB:容易上手和学习,但是没有由于照抄BASIC,丝毫没有结构感,OO表现难度过大。即时编辑和良好的插件还是很不错。但是应用系统太大,运行时间过长,运行时还需要一个1.4M左右的运行库,另外,支持且仅支持Windows,他是完全基于WindowsAPI开发。

    JAVA:强大。J2EE的企业级开发库支持的细节是非常强大的。但是做中小型项目又实在没有必要,J2SE的功能又凌杂的有些可怜。纯粹且完全的OO语言,使得非面向对象的思想完全活不下去。正因为JAVA的强大细节把握性,导致JAVA代码通常很冗长,没有做到轻便化。而且!最重要的是,不支持操作符重载,实在非常烦人。所谓的平台无关性也是一种说法而已,它本身就需要一个JVM运行环境,环境本身就是一个平台。JAVA的设计目的是安全性,可移植性,于是对内存地址访问被CUT了,所以在性能上容易有一些损失。总之一句话,它很象一个对C++的封装。

    C#类似JAVA不重复多说。


3:脚本语言。

    工作流程:脚本 -- 行处理器(词法分析,语法分析) -- 字节码流 – 解释器

    特点:容易学习,代码可维护性强。

    Lua,Pyth,Ruby,Perl各有优势,但Lua以轻量化,与C结合紧密出众,获得亲睐。

    Ruby:慢, Debug难度较大,没有成熟的作品(RM特殊),在日本流行度较高。

    Lua:轻量化,与C结合紧密。但教程极少,接口设计不够巧妙,也没有对大型应用设计出良好的支持。但游戏开发已经足够了。WOW,大话梦幻等。

    Python: 老的脚本语言了。强大,有极高的阅读性,很好的扩展性,开发人员可以用C++等语言对Python本身进行扩展。当我们进行比较大型项目,将其拆分为大量单元,交由多数人进行开发时,阅读性,高效性,可维护性是脚本语言比较重视的部分,Python在这里做的很好,所以,Google,微软,Nokia都用Python.


4:3D成为主流。

    3D的画面表现力比2D强,仿真性强,给人带来的代入感好,随着硬件的更新,3D是一种不可抗拒的趋势。


5:分布式服务器结构。

    单服务器结构,开发效率快,逻辑简单,但是容量小,随着网络的发展,已经被抛弃。1500-2000

    多服务器结构,可分为按地图划分服务器和按功能划分服务器。

    按地图划分为服务器,大致会分为 世界服务器,地图服务器,网关服务器。当负责分配的世界服务器出现鼓掌,将使所有的地图服务器失效,因为数据是依照地图独立存储的,当某一地图服务器挂掉,将可能失去大量的数据。

    按功能划分服务器是符合OO思想的一种设计,将一些密集型的功能分离开来,单独由一个服务器进行控制,这样的话,当一个服务器出现问题时,不会影响其他模块的运行,而且扩充性也比较优秀简单。

    分布式服务器构架:支持远程对象调用,动态的分布节点吞吐,保证服务器受压平衡。但是在开发难度上较大。


6:AI,物理模拟在国内网络游戏开发中并没有过多的使用该功能。带过


    补充:该系列文档为某志为公司新人准备的培训底稿,因为是计划自己查看,以便口头讲述,所以写的并不充分,仅做为提纲提示自己使用,若有不清或错误,欢迎指出。

 

新人程序员应当熟悉的资料

    我们来谈一下,需要大致了解的东西。

    【3D Graphics API 】
    DirectX 9.0 SDK - Direct3D 
     OpenGL 2.0 
    【2D API】 
    DirectX 9.0 SDK - DirectMedia 
    Win32 GDI 
    【Input Device】 
    DirectX 9.0 SDK - DirectInput 
    【Audio】 
    DirectX 9.0 SDK - DirectSound / Direct3DSound / DirectMedia 
    OpenAL 
    【OS API】 
    Win32 SDK 
    MFC 
    【Network】 
    DirectX 9.0 SDK - DirectPlay 
    Socket library

    注意,Lib库和引擎和API库是不同的。

    Lib重点是拿来用它的接口的,大部分内部结构和命名比较糟糕,不推荐学习,有兴趣的话可以学习其中的算法。

    API库重点是拿来用它的接口函数,对于内部结构,相当多的都被封装了,结构性和命名更加糟糕,例如,”_”是底层库专用,”__”是编译器专用。建议熟悉API的大致功能即可,对于其中的参数和API名称,没必要死记。

    引擎是最值得研究的,它的重点是设计思想,对于项目开发来说,需要把作者的设计思路,和接口设计完全弄清楚才算合格。

posted @ 2008-12-27 13:34  麒麟子MrKylin  阅读(642)  评论(0编辑  收藏  举报