学好编程游戏引擎编程需要学哪些相关知识?

如何自学游戏引擎的开发_百度知道
如何自学游戏引擎的开发
我有更好的答案
按默认排序
买买书,加个学习群游戏引擎开发估计自学没办法学好,学点皮毛可以看看视频解说,不是我打击你呀
广州完美空间学这个不错的
除非你是神,还自学
其他类似问题
游戏引擎的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁查看: 1711|回复: 17
cocos2dx:学习游戏开发的两个方向 Cocos2d-x 和 Unity 3D/2D,哪个前景更好?
主题帖子积分
学游戏开发, 两个方向 , cocos2d-x ,unity3d/2d , 大家觉得哪个的前景比较好?相对学习难度?将来手机的性能越来越强劲,是不是unity会发展的一点?
---------------------
经提醒,拿两个引擎来比较,可能有欠妥当,按现在的发展势头,对比PC互联网,移动互联网,将来是2D游戏发展的好,还是3D更好一点?3D游戏应该将来是趋势吧?
主题帖子积分
刚好我现在同时在开发两个2D游戏,一个是用Cocos2d-x,一个是用Unity3d。
学习”而言,
Cocos2d-x是比较好理解的。它是传统的OOP结构,对于有编程经验的人来说,是最好不过了。就连Unity3d上,也有一个很火的2D框架,Futile,是模仿Cocos2d-x的架构和代码风格。从Cocos2d-x上手接触一下游戏引擎,是一个不错的选择。
而Unity3d是Component-Based结构,对于OOP背景的程序员来说,一开始会觉得别扭。而且Unity3d有很多针对3d模型、3d动画、优化等等的商用功能,对于初学者来说会有点overwhelming的感觉。而且无论如何使用Unity3d,总需要在editor里进行大量操作,对理解游戏引擎和代码架构来说,并不是一个很好的方式。
然而,从“
开发”的角度来说,
Cocos2d-x正如
@周华 所说,是一个“纯正”的引擎——仅仅只是代码库。虽然可以利用CocosBuilder和其他一些工具进行图形化操作,但效率始终不够Unity3d高。而且暴露过多的底层代码,对于
研究是一件大大的好事,但是对于
创作而言,未必是福音。
而Unity3d则是一个高效的IDE+代码库。它很好地封装了底层代码,提供许多简便的图形操作,还有商业级的高级功能。对于开发而言,我认为是更好地选择。之前大多数开发者对Unity3d的认识还停留在3D开发,但2013年末的2D支持让更多人选择Unity3d进行2D开发。
所以我的结论是,通过Cocos2d-x或者是Unity3d上的Futile框架来入门,熟悉之后再过渡到Unity3d进行开发。:)
主题帖子积分
我推荐cocos2d-x 现在手机游戏市场前10位有7位都是cocos2d-x开发, 开源、跨平台、MIT许可等等,当然适合2d游戏,3d游戏还是用unity;我重点介绍cocos2d-x
Window平台下 C++语言用 Visual Studio ,官方有UI编辑器CocoStudio,苹果系统不太熟
-------------其他独立的工具----------
位图字体工具Bitmap Font Tools
BMFont (Windows)
Fonteditor
Glyph Designer
LabelAtlasCreator
粒子编辑工具Particle Editing Tools
ParticleCreator
Particle Designer
物理编辑工具Physics Editing Tools
PhysicsBench
PhysicsEditor
VertexHelper
场景编辑工具Scene Editing Tools
CocosBuilder
LevelHelper
纹理地图集工具Texture Atlas Tools
DarkFunction Editor
SpriteHelper
TexturePacker
瓦片地图编辑工具Tilemap Editing Tools
Tiled Map Editor
声音特效编辑工具Audio Effect Editing Tools
背景音乐编辑工具Background Music Editing Tools
GarageBand (MAC 系统自带)
BOX2D多边形定义工具VertexHelper
VertexHelper
GIF动画帧导出工具Ulead GIF Animator
UleadGifAnimator
如果开发者熟悉javascript ,lua编程语言,推荐cocos2d-x editor;我在网上查资料无意间找到的,不得不承认高手在民间,我现在在使用,确实强大,可惜人气还是少了点,希望工具开发者更新更多例子和教程。下面是工具创造者写的简介,我就直接贴在下面了,尽量看原文吧,我很懒,不想一张一张贴图片,麻烦。
原文csdn地址:cocos2d-x editor
& &笔者学java ,android,javascript出身,近期开始学习手机游戏开发,由于手游开发是多平台,所以深思熟虑选择cocos2d-x作为开发游戏引擎。
& &但遇到如下一些问题,
& &其一,cocos2d-x开发平台很多是ios系统上完成的,笔者熟悉window系统,不熟悉ios;
& &其二, window系统上主流是使用开发语言c++完成,而且要使用烦人的visual studio,速度卡的半死;
& &其三,cocos2d-x场景代码编辑是分开的,其他动画,字体,粒子,物理,地图等等都是独立的作为一个工具存在,而且调试模拟不方便
& &其四,cocos2d-x 对于javascript脚本语言开发没有很好的集成开发工具
& &经过大量的资料寻找都没有找到很好的选择方案,最终决定自己开发制作一套有效的集成游戏开发工具。根据我的条件,满足window系统上,javascript脚本语言,基于cocos2d-x跨平台游戏引擎, 集合代码编辑,场景设计,动画制作,字体设计,还有粒子,物理系统,地图等等的,而且调试方便,和实时模拟器。
& &功夫不负有心人,经过几个月的努力,终于这套游戏开发工具初见雏形,我给他命名为 cocos2d-x editor ,简称 CE,经过不断的提升和尝试,我用这套工具开发了各种手机游戏,有跑酷,消除,益智,塔防,格斗等等游戏,运行于各大手游平台,让开发游戏更加快捷方便。开发一款小型的游戏,在设计素材具备的条件下,笔者曾经保持一个礼拜开发一款游戏的记录。
& &上面也说过,笔者出身android ,以前使用开发android的工具是intellij idea,就地取物,这套工具是基于idea上的插件存在,工具免费。
& &工具特色:
1. 支持跨平台,IDEA是用JAVA开发的开发工具,可运行在各种主流操作系统上,目前CE在Windows上经过了大量的可用测试,接下来会针对Mac,Linux系统进行测试完善。
2.支持CCB的所有功能,可进行场景,界面,动画编辑。
3.支持Javascript,Lua脚本开发
4.支持集成贴图制作功能
5.支持字体编辑功能
6 支持粒子系统
7 支持tieldmap地图
8.支持Javascript调试
9.支持本地运行,可以实时看到开发的效果
10,支持游戏简单框架
主题帖子积分
unity更好学。集成开发环境,脚本写代码。
cocos2d-x是让人头大的c++,也没有集成开发环境,需要自己寻找各种编辑器。
----------------
都是免费的呀,只是一个开源一个不开源而已。
至于脚本,服务器开发也用各种脚本语言呀,RoR,JS,干嘛要用c++?
我两者都在工作中用过。
主题帖子积分
把这两个东西放在一起比即使不严格说也是没有办法说的。Cocos2d-x是个渲染引擎,专注2D游戏(即使内部利用3D的很多技术)。而Unity是个解决方案,不单是渲染引擎,早先专注于3D应用的开发;最近因为它一个2D插件(用来帮助开发者制作2D游戏)在用户需求中还是比较强烈的,战略性的官方开始把这个插件的功能官方化(官方开始制作2D功能的模块),因此可以说由把Cocos2d-x的功能也在融合进来。这个是概念上的澄清。
基于概念回到问题,学习这两个东西,并不是两个技术的方向,而是两个游戏开发类型的方向。因为Unity如果弄得很通,Cocos2d-x就是个子集(仅负责渲染管理)。我只能说,对于刚入门的,如果你不是只想专注于2D游戏,那么,完全可以从Unity入手,理由:
1、完整的解决方案,学好一个,其他的东西上手非常快;
2、海量的学习资料;
3、没有C++的繁琐,完全可以专注于技术点的学习;
学习难度的话,我想C++如果好的话,Cocos2d-x相对小一点,涉及功能少很多,所以,相对简单;但是C++如果不会或者不好,则另当别论。
主题帖子积分
cocos2d-x和unity3d要真的在技术选型的时候比较, 其他还真是各有千秋, 我觉得主要还是根据团队的性质和要开发游戏的类型吧. 一般情况下, 我感觉是倾向于unity3d, 特别是在最近的unity3d中, 已经有了官方的2d模块, 开发起来会更爽, 开发工具的配合也更加强大, 开发效率也更高一些.
但是cocos2d-x这种开源的引擎也仍然还是有前途, 毕竟源代码都在自己手中, 虽然各类工具的组合, 选择可能会挺麻烦的, 但是假如游戏本身是一个比较奇特的类型, 想要更多的定制, 或者游戏本身想更进一步的压榨平台的性能或者非常强化的利用某个平台的新特性, 这个时候cocos2d-x几乎是唯一的选择.
主题帖子积分
楼主问的是“学习那种技术更好”,而不是“我现在有个项目应该用unity还是cocos2d”,这就不是简单的一个“开发2D游戏用cocos2d,开发3D游戏用unity”的能够回答的问题,这涉及到技术选型。不管是对于技术人员还是初创公司,技术选型就是技术投资,应该予以重视。
所以我先回答题主原本应该如何选型的问题,在谈一下后来题主补充的关于2D、3D游戏发展前景的看法。
一般来说选择一个技术学习和投入,需要考虑清楚这几个问题:
1. 技术的适用范围(别到时候有了新的需求,解决不了)
2. 学习曲线
3. 技术支持怎么样?社区是否活跃?
4. 目前发展态势怎么样?(开源项目别今后没人管,商业产品公司不能倒闭了)
5. 扩展性如何?是否利于团队合作?(有的技术入门简单但拿来做大项目就是个灾难)
在这几个方面,虽然技术层面unity和cocos2d是完全不同的东西,但是作为目前开发手游所采用最为普遍的两种技术方案,是具有可比性的。
这个很多之前的回答都已经说了,主要区别是unity是一个完全的的解决方案,cocos2d是一个类库。适用领域unity要广很多。cocos2d就是为手机游戏而生的。而unity除了开发2D,3D游戏,能发布到WP,Mac, Console等cocos2d不涉及的平台,unity还被广泛才用于虚拟现实项目。在我最开始接触unity还是1.x版本的时候,QQ群里面几乎全是讨论虚拟现实项目的。甚至即便到现在我感觉身边(重庆)用unity做教育软件和3D漫游的都远多于做游戏的。也就是说如果你将来不开发手游,cocos2d就用不上了,unity还能搞点其他的。
上手当然unity更简单。如果更极端一点,不会编程,借助一些可视化编程中间件,设计师都可以完成unity游戏开发。前阵子网上有cocos2d一天复制flappy bird的教材,如果换unity+playmaker来做估计花不了我一个小时。当然如果面向本来就会c++的开发人员,cocos2d入门可能更加直观,不会要接触新的开发工具。不过对于普通人来说还是unity的方式更加容易入门,连代码都不用写。
技术支持和社区
这方面cocos2d胜出,国内社区的情况unity方面掌握都还比较初级,有深度的技术问题基本上都要去官方论坛交流。当然如果你英文读写无障碍,这个情况就倒过来了。
cocos2d目前在“开源的2D手游开发框架”领域基本上是没有什么竞争,这也注定了开源社区也不会有什么动力扩展到新的领域。而unity则是一直开扩展其开发覆盖面,unity就是“一统浆糊”的意思嘛。最开始是作为一个“让人人都能开发游戏”进入人们视野的引擎,而最近的新版本一直在强调AAA游戏开发,将出的5.0版本基本上都是面向画质上面的提升。实际上也对UE,CE等造成了一定压力,现在UE对个人的授权费比unity还便宜了。但是unity对于一些普遍认为烂得不行的功能却一直没有什么动力修改,比如GUI系统和内置网络部分,一般也是要借助第三方完成开发,这点初学者需谨慎,不要学习这些没用的东西。
扩展性方面的问题
这点cocos2d胜出。由于unity采用了易于新手和无编程人员的组件模式,在开发大型项目时候非常容易进入架构上的陷阱。开发太容易了,犯错也容易。而cocos2d不是说就不会犯这些架构问题了,而是本身基于cocoa框架,能够开发的人本身已经具有了一定的编程规范,开发app所用到的软件架构仍然适用。而且unity就是另外一套体系了,初学者开发了一些简单项目以后一定要有有经验的人带,了解一套MVC这样的架构体系以后再开发商业项目,否则只会在组件化模式的歧途上越走越远。
在扩展性方面,unity的其他问题也还有很多:假设苹果出了一个新的设备iTV, 用cocos2D的话你可以在beta版本放出的时候就开始根据官方的文档开发集成,在正式设备发布的时候就第一时间支持,使用unity的话恐怕必须等unity发补丁更新;需要两次编译,令人头大的JIT错误;很多国内广告和支付平台都不支持unity,SDK集成需要自己做插件等等。
总结一下:
1. 如果你编程基础一般,想快速做出一款游戏而不纠结于技术,选unity
2. 开发app或者其他软件已经有一定经验,希望转到手游领域做一款商业化产品,同时个人或者团队的资金实力一般,选cocos2d
3. 想学习业界主流的游戏开发流程,不想局限于某个游戏平台或者2D还是3D,选unity
4. 不属于上面3种情况的,建议都上手试验再做判断
关于2D和3D游戏前景的问题,我的看法是在手游领域3年内2D游戏都一定是主流,占据多的份额。至于为什么,码字太累了,等我歇下后续再补充。
主题帖子积分
决定游戏优劣的绝不是他是2d还是3d,而应该是游戏性。尤其是对移动端来说。
主题帖子积分
cocos虽然可以做3d 但是初级。 u3d可以做2d 但肯定不是初级。 而且相对入门的来说 js和c#更亲民
主题帖子积分
从技术上和商业性上来看,还是推荐Unity3d吧, google用C++开发安卓,结果很长一段时间内还不支持C++的APP,可见在性能过剩的年代,直接调用内存的C++优势实在不大。 另外从技术上来说,C++难度不是一般大,会遇到很多莫名其妙的未知错误。 而.NET无疑更快更高效,很合适游戏的商业化。
不过话又说回来,如果是PC端,高效的C,C++语言,还是游戏引擎的首选。
如果从前景来说, Cocos2d-x 和 Unity 3D/2D 都不足以让你做一辈子。 1 你身体吃不消,2 也会有更新更好的技术出现,所以不必太纠结选择哪个。
总结,无论是精通 Cocos2d-x 还是 Unity 3D/2D 都足以让你找份不错工作。 但是你很难做一辈子。... &extra=page%3D1
《如何学好游戏3D引擎编程》
此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才能攀登到游戏技术的最高峰
——阿哲VS自己 QQ多希望大家一起交流与沟通
这篇文章是我一年半前,找工作时候写的,那时是发到学校的BBS上。现在我工作了,想法和以前也有不同,但对游戏引擎编程理念还是基本差不多。在我没遇到U3以前,一直研究WILDMAGIC,可以说是GAMEBRYO的前身吧,他们基本框架都差不多,是完全面向对象,代码容易读,但它发展存在严重的弊端,这个也是它为什么不是牛B引擎的原因。但从渲染和动画方面来看,U3的 MATERIAL TREE 和 ANIM TREEE 是2个飞跃的,当我对我自己引擎渲染材质和光照一筹莫展的时候,MATERIAL TREE带来的希望。对比
zfx (wildmagic)gamebryo 和ogre 还有U3,各有优缺点,而且你可以看到一个引擎发展,从一个以多边形为渲染单元,变成以mesh做为渲染单元(现在很少有引擎场景管理分割多边形来做的 我始终喜欢zfx引擎,它是00-02之间的引擎,完全让你可以理解那时候显卡不是很强的时候,一个引擎应该具备的特征。对于架构来讲,(wildmagic)gamebryo 和ogre 做的很好,u3的特点就是架构乱,没有什么可读性的技术文档,研究起来十分吃力。做为一个商业引擎,对于渲染方面,我认为(wildmagic)gamebryo
输给了ogre,框架设计还有弊端,ogre确实是一个好引擎。而U3对于渲染过程,光照,阴影,就是一帧的渲染过程,处理的十分得当。动态生成shader是一个引擎的发展的必然趋势,而往往动态生成最多的,也就是材质和光照,它们不能分开,分开谈无意义,MATERIAL TREE 我始终认为是个太好的想法了,任何特效不需要程序员过多参与,美术可以搞定一切,什么水,反射,折射,这些效果,编写起来易如反掌,还可以实时光看效果。其他动态生成,也就是根据配置不同,来做处理,动态编译shader弊端太大,不能做到所有,而且不灵活,如果动态生成和动态编译合起来,简直牛B透顶了。现在我的引擎已经有了MATERIAL
TREE这个功能,ANIM TREEE在制作中。
这里面我重点谈的是图形方面,略带些动画方面,一个引擎最基本的是内核,包含内存管理,文件读写,资源管理等等吧,也十分重要,我的引擎这些写的都很简单,基本都是wildmagic里面的。
我总结3D引擎编程的4个阶段
第一阶段是了解3D原理和数学基础,大学里面学的线性代数,概率统计和高等数学完全足够,在3D中都有充分体现。最好自己能做一个软引擎,这样整个3D流水线自己完全可以掌控,然后在学DX之类的API很容易。
第二阶段不要看引擎,还是应该以实现各种效果和基本算法为基础,包括各种图形特效,场景管理,剪裁算法,各种动画算法,等等,所有那些单一的算法,如果这些都不是了解很好,那么做引擎时引擎框架的接口也不会设计好!再添加这些算法和效果时 会很困难,效率也不会很高。
第三阶段,就是看大量的引擎,对引擎有很深刻的概念,3D引擎只是引擎的一部分,引擎主要是框架,如果框架搭建好了,那么引擎的效率是很显著的,其他底层细节优化,也会有明显的优势体现。
第四阶段,再好的引擎没有成功的游戏支撑都是白费,你不仅仅是做引擎,而是做的有开发价值的引擎,可以很好的为游戏服务的引擎。
下面这段话写于一年半前~~
本人不才,姑且以自己经验来谈如何学游戏编程,这个话题我酝酿了很久,它确实很难写,因为我也不是资深高手,才刚刚登堂入室,游戏编程大师功力一般都十几年左右,所以让我这样的小卒写的深入浅出更何谈容易,错误出现并不奇怪,高手见笑也在所难免,请大家指正,我会欣然笑纳。但这几年走过的路,让我知道这么学是正确的,大体过程经验告诉我,这样做是对的,高手的指引告诉我,这样做是对的。
这篇文章主要讨论如何学习游戏图形编程和游戏引擎编程,告诉没有接触游戏过编程或者现在关于怎么学好游戏编程还迷惑的PEOPLE所要走的方向,完全抛开技术和代码实现进行谈论。至于游戏逻辑这几年重点没有发到这个上面上,很难总结。
经验的限制,对于如何编写一个好的引擎(至于“好”这个词都是相对而言,能做的满意就是我所期望的),至今为止我还没有这个能力,但我相信经过我的努力,不久的将来,我会实现这个愿望,因为我的一个愿望就是实现一个好的引擎。
我从下面几个方面来说明如果学习,记住只是如何学习,要想学好就要靠你自己。
1。 你真的喜欢游戏编程吗?
2。 要了解游戏编程
3。 学会读书,自学与思考,交流与合作
4。 游戏编程需要的基础知识
5。 2D游戏编程
6。 3D游戏编程
7。 游戏引擎编程
8。浅谈游戏物理和AI
一。游戏编程,你真的爱她吗?
当你听完我的介绍后,你就要决定游戏编程是否适合你。
游戏编程可简单可复杂,简单的2D 《蛇吃豆》,复杂的现在流行的3D游戏。咱们不说简单的,因为你不想学习游戏编程就为了做一个简单的游戏。确实每个人对他所向往的东西都想彻底了解清楚,可是我给你的第一个警告,复杂的3D游戏,复杂到难以想象。
1 你思想需要改变吗?
打开话题,游戏是一个结合体,她是一个音乐,美术,技术,创意相结合的艺术品,你要用艺术的眼光去欣赏的,因为好的游戏是用艺术的眼光来设计,除了某国的网游不算外,很多经典的游戏流芳百世,成为真正游戏玩家佳话。
中国的游戏为什么这么落后,你要联想下,当年中国为什么会被八国联军所侵略。腐朽的思想是根本原因,从而导致了腐朽的社会制度。游戏行业也是这样,看待游戏的中国人,始终带着眼镜,用腐朽思想看待游戏,所以现在出现腐朽的游戏行业,导致中国游戏发展缓慢,有人曾经说中国游戏不久就赶超日本和美国,我认为是扯淡,而且不是一般的扯淡,具体原因后面我会详细说明。
从小的时候,国外的电子游戏产品就跑进了我的空间,废寝忘食的玩个没玩,因为耽误学习,从此电子游戏被老师和家长全部封杀,任何事物都有利有弊,鲁迅的《拿来主义》曾说过“去其糟粕,取其精华”。在中国,电子游戏被视为过街老鼠。确实要承认电子游戏有负面影响,但这些负面影响是谁产生的,本质上是我们自己,最后本来是精华的东西从我们身边擦肩而过,从小霸王以后的国外游戏机没有任何仿造,导致了游戏机技术从此断代,现在却又想起来赶超。
而现在,国人知道努力了,国家看到有钱可赚开始支持了,腐朽的游戏思想却还在蔓延,网络游戏就是这样环境下成长的新生儿,国内网络游戏每年要大批量生产,但存活的基本没几个。不能否定,没有利益的事情没人干,但你还不能否定,有些事情即使没有利益,但还是有人干,哪怕知道自己并不能得到什么。国内的人,很少是第2种人,他们把游戏做为赚钱工具,垃圾游戏隔三差五的纷纷涌出。相比来讲,我只拿日本举例子,虽然小日本和咱们有愁,但我们不得不承认小日本在游戏这方面思想层次完完全全超越我们,他们有严格游戏教育背景,他们做一款游戏,要按照严格的流程,从设计到编程,以至最后的测试,都有着干一行敬一行的精神,否则《生化危机》这样游戏你是永远看不到的。
所以你要改变自己的思想,游戏是一种艺术品,你要有一种艺术境界来去欣赏她。
2 你有毅力爱她爱到底吗?
也许我上面的话,你还能接受,残酷的在下面,以我的经验告诉我,如果你编程和游戏理论起步是零,你要对游戏编程达到略有小成的水平最少要4到5年,我比较蠢,花了6年。这6年来,几乎每天平均学习4-5个小时左右,当然假期都要算上。头3年半基本学习计算机基础知识,包括数学,数据结构,计算机体系结构,人工智能,汇编,编译原理,操作系统,网络,软件工程,离散数学,算法分析。我们大学4年基本就学这东西,这些都是基础,游戏编程都需要,还有一个就高等物理我没有学,导致我现在对于一些物理微积分方程很难理解,当然这里并不一定是问题,只要你肯努力,没有学不会的。完全把这些学好,花4年时间真的不容易。我曾经抱怨自己没保研而痛苦的经历考研,现在我却认为是值得的,我很难有时间在集中精力的复习这些专业课了,尤其是数学。
在游戏编程中,上面的基本知识都可以用到,所以我说游戏编程很复杂一点不假。就拿游戏中最难的部分——一个好的游戏引擎来说(这里说的好引擎),世界上能把她做出来的人很少,中国更是寥寥无几。
上面只是理论基础,要走进游戏编程最基本的。过硬的编程技能更是需要的,其实这些理论学习可以和编程相结合,在编程中学习理论,为了学习理论而增长编程经验。
有了基础,你才能进一步学习游戏编程,2D游戏和3D游戏理论都要学,这又要花费很长时间,这个是我下面要详细说的。
看完我写的,你可能心惊胆寒,所以你要爱她,深深的爱她,否则你承受痛苦的时候享受不到暗含的乐趣。
3 爱她请从游戏开始。
很多人可能不解,游戏编程为什么要从游戏开始,玩游戏时,有很多潜移默化的东西影响着我们编写游戏程序,很多灵感确实从游戏中得来。一般的游戏编程高手,都是从小由于游戏对他们巨大吸引,从而走上游戏道路,虽然不是绝对,但按统计学角度讲可以说是一个事实。一个不爱玩游戏的人,爱上游戏编程的几率是很小的。其实很多人小的时候都爱玩游戏,他们都是从游戏厅张大,只有一少部分,走向了游戏开发这个行业,他们之间有着明显不同,走向游戏开发的人,是真的被游戏背后那种神秘东西所吸引,并想要揭开它,而另一些人,则是完全迎合了游戏开发的需要——玩的高兴。
我想说的是,一个游戏编程高手,必定是一个游戏玩家,他们都是从玩游戏而爱上游戏,从而走上游戏编程道路。这条路充满了荆棘,不是一般人能走到最后的。所以你一定要爱她!
当然任何事情都不绝对的,你可能就是那不爱游戏但爱游戏编程(或者和游戏性无关的那部分编程)小概率的人。
二。游戏编程,你真的了解她吗?
游戏编程,这个概念包含了很多深层次的东西。
1.广义上,我给的定义是,游戏引擎开发和游戏逻辑开发。
游戏逻辑开发是集中力量只开发游戏中剧情部分,你只需要做的是什么时候显示什么,什么时候放出什么声音,什么时候通过网络传输什么数据,什么时候这个物体或者人物做什么动作。至于底层怎么显示,声音如何处理,网络如何传输,物体动作怎么实现的,你不用关心,关心这些的是游戏引擎。所以说游戏引擎负责技术方面,而游戏逻辑负责游戏文化内涵。
成功的游戏是以好的游戏逻辑为基础的,而游戏引擎并不是成功游戏主要条件,但好的游戏配上好的游戏引擎,确实会给人一种震撼,相比同样的游戏逻辑,好的游戏引擎显示效果会给人一种全新视觉和听觉感受。
至于游戏逻辑我不想过多解释,但并不是说游戏逻辑简单,游戏逻辑也可以复杂的要命,这取决与游戏复杂程度和游戏引擎与这个游戏的关联程度。为了解释这句话,我不得不从游戏引擎解释开始。
早期的游戏是没有游戏引擎这个概念,都是一个游戏一套代码,随着游戏越来越多,大家发现开发有些游戏中,有很多可重用的代码,逐渐把这些重用代码封状起来,这就是早期的引擎。对于引擎没有明确的概念,只有好坏和适应程度之分,所谓的好坏,就是引擎支持功能和显示特性等是否strong,而适应程度是指一个引擎是否适合开发这个游戏,开发这个游戏是否要自己再编写一些额外的代码。
我举个例子
如果我用开发混斗罗的引擎(假如它有引擎)来开发RPG,和开发RPG游戏的“RPG游戏开发大师”相比,我们还要做很多工作,才能完成玩法功能一样的游戏。
所以说很难有明确的界限划分这一堆代码是否是游戏引擎,但游戏引擎的任务是不用质疑的,它的任务就是尽量不用负责底层处理,而专心到游戏逻辑上来。
2.从狭义上分,我只分解游戏引擎部分,基本包括(1)游戏图形引擎(2)声音引擎(3)网络引擎(4)脚本引擎(5)GUI(6)人工智能引擎(7)物理引擎。
(6)(7)两个不是必须的,而前5个是一个好的游戏引擎要基本具备的,其实每个游戏引擎中都具备物理引擎,只不过很多游戏对于物理要求不是很高,所以就集成到了图形引擎中或者游戏逻辑中。
图形引擎是引擎中最难的,它基本要处理游戏引擎中70-80%的工作量,它的主要任务是负责图形高效显示,包括速度和精度。后面我会集中并详细解释。至于声音和网络引擎大家通过字面就可以知道它干什么。本人对声音处理和网络传输知道甚少,说出来只能误人子弟。
至于脚本我还略有研究,我想解释下什么是脚本,游戏中为什么用脚本。脚本有时很难给出一个定义,但大家都知道那些是脚本语言,我给出的解释是用软件CPU(虚拟CPU)来运行的编程语言就是脚本语言,软件CPU和所说硬件CPU是对立的,也就是说脚本运行与否先是关联到这个虚拟CPU,在虚拟CPU上运行,然后再又映射到真正CPU,来真正运行。这个过程很抽象,我觉2个例子,第一个就是JAVA语言,它有一个虚拟机,这个虚拟机就是软件CPU。再举一个例子,我现在要编写这样一个指令、
PRINT S 这个指令表示打印S
S代表一个万能类型。
为了实现这个指令,你首先要有一个函数来负责处理打印
比如是这样的函数
void print(S)
这里只是伪代码,只是表示这个意思。
你首先要找出PRINT这个单词,读入到一个buffer1,然后把参数读入buffer2
if(buffer1 == PRINT)
print(buffer2);
这里段代码其实就是一个软件CPU,它负责虚拟运行PRINT S 这个指令。
那么游戏中为什么要用脚本呢!最简单解释就是灵活性好。拿一个RPG游戏例子来说,游戏中有大量物品,每个物品有大量的属性,如果我把这些属性值直接写到游戏中,每一个小小的改变就要编译整个游戏,花费很多时间,灵活性很差。
如果我把这些写到一个文件中,用脚本语言来编辑,只需要编译脚本文件就可以了,当然如果你脚本是解释型的语言,不用编译直接可以运行。
当然脚本还有很多好处,主要目的还是方便性和灵活性。
其实GUI(图形用户接口)是一个重要部分。3D游戏中,出现的是大量的3D模型,这些模型是先用文件的形式存放好的,而文件里面包括的是3D数据和这些数据的组织方式。
至于数据怎么组织是你引擎要规定好的,这样也方便读取,最后把3D数据加载到内存。现在问题是3D数据上,我们怎么能有效的得到这些3D模型的数据,手工写进文本里?我靠,那是奴隶社会,SB的做法。我想你不会这么做。人类很聪明,这就是为什么人把其他动物关进笼子里,而不是其他动物把人关进笼子里的原因。既然我们很聪明,就要想一个办法快速的定义3D数据,然后保存成文件。这样一个3D编辑器就产生了。3D编辑器就是类似于3DMAX那种,但引擎中的编辑器是有特殊目的的,使用者要按照引擎指定要求编辑3D数据,这样引擎高效的显示和处理数据比较容易,至于3D数据是怎么组织的,是一个设计上的问题,由你引擎来决定,设计好坏,决定你引擎加载数据是否容易,关系到最后渲染。所以一般好的游戏引擎都有自己GUI,但你也可以用3DMAX这样的软件,然后读3DMAX文件变成自己可以利用的数据形式。
说到这里,不知道上面的概念大家是否理解,我想如果你没接触过引擎,可能真的不理解。其实我很难用简短的语言把这么复杂的问题说清楚,如果有一天你把3D学的融会贯通,你发现我说的是对的。我不知道大家是否发现一个共性的问题,有时你读一本书,无论你怎么认真把它看完一遍,你都很难掌握里面的知识,当你再认真看第二遍的时候,你突然觉得这本书没有第一次看那么晦涩难懂。有些知识都是前后呼应的,它们之间相互联系,要想完整的理解它们缺一不可。游戏编程的知识也是这样。我前面介绍的如果你看懂了,那你perfect,如果你没有看懂,也不要灰心,这里介绍的只是一个大纲,让你对游戏编程有一个了解,最基础层面的了解。
三。游戏编程,你准备好了吗?
这个部分讲解如果你想开始游戏编程应该具备那些基础知识,这样你才能接下来游戏编程学习,当然下面的有些知识,我开始学习游戏编程时,也不是都具备,但这些知识都是很容易学的知识,如果你基础好,在游戏编程中随时学就可以,不耽误你学习游戏编程的进度。我在这段最后会指出那些是必须掌握的,因为这些知识如果你在游戏编程时学习再学,时间上真的不允许。
1。书,永远是你的好朋友!
书,是你了解她最直接途径,当然我说的书还包括所有游戏编程资料。书,有好有坏,想要深刻了解她,你必须挑选精妙的好书,而且还有循序渐进的,合理次序的去读它们。游戏编程书籍大量风起云涌的出现是在2000年以后,当然2000以前也有,只是很少一部分,从2000或者以前开始就研究3D游戏的中国大哥们,现在可以说是现在中国游戏行业的鼎梁支柱。现在出版有关游戏方面的书籍大约有200左右本,中国人自己原著的书几乎没有,大多数都是翻译国外的,就有几本翻译的质量很好(翻译大哥大姐确实很辛苦,我承认这点,但拜托你们翻译前要看懂再翻译,否则望文生义,不如让我们自己看英文原版)要么自己写的也是东挪西凑的,写出来估计是想骗钱,谁叫中国人这么老实,这么好欺负了。其中大部分书籍是3D游戏的,3D游戏确实要比2D游戏难一个数量级别,如果你足够聪明,其实这些书看个几十本,写出一个在中国可以立足的3D引擎足够了。但好象这样聪明的人真的很少,有黄金的这个地方大家都知道,可是前往这块宝地的道路太荆棘,很少有人走下来。
书,大家从出生时就接触,学会读书,这四个字,很少有人能领会,你看一本书,要么否定,要么肯定,如果你还是很迷糊,要么是书写的不好,要么就是你知识水平层次有限,要么就是你根本没学会读书。我在这里只说一句话“要读好书,思而不学则罔,学而不思则怠,温故而知新”,我想高手很容易体会这句话。
想要学好游戏编程,学会读书是你要掌握的,也是你获取知识最快的途径,开始时,建议还是读一些中文的游戏编程书,因为游戏编程中充斥大量术语和名词,没有任何游戏编程概念的人,直接看英文,即使你是老外,我估计你看一会就会爬在书上,眼皮一关,口水把它淹没了。
看书后,代码一定要仔细读,而且对于初学者一定要亲自去实现,这样你才能加深理解,有时看书看不懂,一看代码就全明白了。“纸上得来终觉浅,觉知此事必躬行”,我始终坚信这句话,只有你经历了,你才能感受,就象你没有失去过,就不会知道珍惜是什么东西。
我相信既然你都看到这里了,就应该知道我上面为什么给你打好的警钟。看完书,就要写代码,最好不要一味的效仿,要有你自己的独道之处,这样才说明你认真考虑了这个问题,你也真正了解了,这个问题是什么,应该怎么解决,怎么解决最有效果。
E文书,以后就要是你老婆(同性恋除外),天天都要见面,除非你离婚了,也就是游戏编程这个爱情你不想要了,你提前离开了这个努力走到最后才能见到美好果实的幸福家庭。中文翻译一般都很慢,中文翻译出来,国外这个技术基本过时了,而且有能力翻译的人本来就少,有时间干这事的说他有病,也不足为奇,因为翻译一本太浪费时间了。所以要适应去看E文,现在没钱,就看电子的,很多国外新书,没有电子的,但电子的够我们初学的人玩很长时间,等有钱了,就直接去买国外正中的洋版,然后弄到家中,天天啃,工作时也啃,人家都会说你很有激情的。看电子的如果闲麻烦,就打印下来,打印下来还是花不了几个钢币的,和买一本中文差不多(大家不要哭穷,一本好书100元我认为很值得,里面技术如果你掌握了,你想想,大把大把的票子就进你口袋里,很多人买来不看,天天还抱怨书贵。)
这几年来,我读过很多游戏编程方面的书,中文的基本都读过了,现在我一直在读E文书,有时到觉得看中文有些不适应,还有好多好书,我还没有读。读E文书时,如果没读懂,自己一定要去网上查查相关资料,然后集中精力把它弄懂,现在很少有看不懂的E文游戏编程书(知道我6级没过的,别用砖仍我),有些还是看不懂,确实自己水平有限,但不是因为英语问题,关于高深而复杂数学问题,即使翻译成中文,我也很难看明白。
我在后面会把所有好的游戏编程书籍都列出来,告诉大家那些可以买到,那些只有电子的。不好的书,我就不列出来了,只会浪费大家以后的时间。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:12561次
排名:千里之外
原创:10篇
转载:38篇
(1)(1)(1)(16)(3)(1)(6)(6)(2)(2)(8)(2)}

我要回帖

更多关于 学好编程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信