学习游戏开发应该从何入手?

1 条评论


  • 17

    KevinGod青史几番春梦,红尘多少奇才。

    天都峰LinusHongeWilliam 等 17人赞同

    一 平台与编程语言选择

    首先,游戏开发的平台就有很多类型: 

    • 个人主机平台:Windows、Linux、Mac OC;
    • 移动平台:iOS、Android、Windows Phone、BlackBerryOS、Symbian;
    • 专业主机平台:Xbox、PlayStation、Will等。


    如果你想从事移动平台的游戏开发,Android主流JAVA语言,iOS主流Object-C语言,那么你就要去学习这个平台主流的语言,而在个人主机上主流的游戏开发语言现在包括以后很长时间也还是C++。

    但是并不是所不同平台的游戏开发,就毫无共通之处,学了这个到了另一个平台就无用了。不是这样的,编程的世界里你走得越远你会发现很多东西的本质都是相似的,例如你如果扎实地理解了C++的基本语法(而不是死记硬背),日后再转Java语言也不是很难的事情,因为它们本质的面向对象特性还有各种编程语言特性都是相通的。

    所以,如果你想走得远,在学习的时候不能简单流于表面,对于一样知识越深入到底层,你就越能看到其它知识与其的异曲同工之处,因此你将比别人更轻松。但是,当然一开始最好尽可能是贴合自己的专属领域和编程语言,这样能尽快地在这个领域持有一席之地。

    无论你选择哪个平台,游戏开发这个浩大的工程都离不开游戏引擎,所以这里都有二条路线让你选择: 

    • 只使用游戏引擎;
    • 使用游戏引擎并深入学习游戏引擎原理。

    线路一:只使用游戏引擎

    对于第一条路线,游戏引擎的使用并不困难,因此适合想快速上手游戏开发工作的人。我们工作大多数时候也不会自己开发游戏引擎,所以这样对于一般的日常工作也没什么大碍。对于只使用游戏引擎的人来说,入门阶段要做的就是看该引擎的教程(书籍、视频、网上博客、网上教程、官方帮助文档等),并且熟练该教程所使用的编程语言。

    所以你要做的第一件事,就是去了解现在流行的游戏引擎。因为不同平台下的性能不同,支持的编程语言也不尽相同,所以针对不同平台下的流行的游戏引擎也是不同的(方括号里面是特别推荐的,基于开源性、易用性、性能与效果等方面的综合水平推荐):

    • windows或游戏主机:【Unreal】、寒霜、CE3
    • 苹果ios:【unity3D】、【cocos2d-ObjC】、【Unreal】、sparrow、sprite kit。
    • 安卓:【unity3d】、【cocos2d-x】、【Unreal】、AndEngine、libgdx。
    • 网页:【Egret】、【cocos2d-html5】、Fancy3D、unity3d。


    在选择游戏引擎的时候,尽可能选用流行的游戏引擎,因为这个游戏引擎流行意味着官方的功能比较完善和易用,问答社区也比较多人解疑。各个游戏引擎也各有千秋,Unity3d胜在简单易用,对性能要求不高,但是效果不够华丽,因而一般用在移动平台而不会用在电脑或游戏主机。Unreal胜在开源免费,而且效果也很出色,但是对设备要求比较高,因而常常用来开发效果绚丽的大型游戏。cocos2d-x也是开源免费的,在2D领域深有造诣,但是缺点是不可视化开发。另外,如果你想了解游戏引擎原理,那么首要考虑的就是开源的游戏引擎。

    不同游戏引擎使用的编程语言或者脚本语言可能是不一样的,所以当你想要学习某个游戏引擎的时候,也应该留意该游戏引擎所使用的语言。大部分情况是,Windows用的的是C++,同时结合lua或python脚本语言。而ios平台下使用Objective-C或swift,安卓平台下使用Java。但这不是必然的,例如Unity在各个平台下都可以用C#或者javascript脚本语言。

    下面是商业上流行的游戏引擎详细比较:

    1) Unreal4(虚幻4)

    • 适用平台:Microsoft Windows、Mac OS X、iOS、Android、虚拟现实设备(包括但不限于SteamVR/HTC Vive、Morpheus、Oculus Rift及Gear VR)、Linux、SteamOS及 HTML5平台。
    • 编程语言:C++或无需编写代码。
    • 优点:开源免费,画面效果出色,已有多款商业大作经验。同时,它还能跨平台,商店资源丰富,提供了无需编写代码即可制作游戏的强大功能(可视化开发)。
    • 缺点:开发机器配置要求较高。

    2) Unity3D

    • 适用平台:iOS、Android、Windows phone 8、Tizen、Microsoft Windows、Windows Store应用程序、Mac、Linux/Steam OS、网络播放器、WebGL、PlayStation3、 PlayStation4、PlayStation Vita版、Xbox One、Xbox 360、Wii U、Android TV、Samsung SMART TV、Oculus Rift、Gear VR、Microsoft Hololens、Playstation VR。
    • 编程语言:C#、javascript、Boo。
    • 优点:方便易用,中文资料丰富,跨平台,商店资源丰富,可视化开发。
    • 缺点:画面效果一般,不是免费开源,引擎效率比较低。

    3) Cocos2d系列(包Cocos2d-x、Cocos2d-ObjC、Cocos2d-html5、Cocos2d-xna等)

    • 适用平台:Microsoft Windows、OS X、 Linux、iOS、 Android、 Tizen、 Linux、Mac OS X、HTML5浏览器、Windows Phone 7 & 8、Xbox 360。
    • 编程语言:Python、Objective-C、C++、 Lua、 JavaScript、 Swift、JavaScript、 C#。
    • 优点:开源免费,跨平台,中文资料丰富,2D技术丰富且成熟。
    • 缺点:不可视化开发,3D方面技术不成熟。

    4) CryEngine3

    • 适用平台:Microsoft Windows、OS X、Linux、PlayStation 3、PlayStation 4、Wii U、Xbox 360、Xbox One、iOS、Android。
    • 编程语言:C++、Lua。
    • 优点:画面效果世界一流,可视化开发,跨平台。
    • 缺点:开发机器配置要求较高,不是免费开源。

    5) Frostbite3(寒霜3)

    • 适用平台:Microsoft Windows、PlayStation 3、PlayStation 4、Xbox 360、Xbox One。
    • 编程语言:C++。
    • 优点:画面效果出色,可视化开发,跨平台。
    • 缺点:开发机器配置要求较高,不是免费开源。

    6) Egret(白鹭)

    • 适用平台:HTML5、iOS、Android、Windows Phone。
    • 编程语言:TypeScript、JavaScript。
    • 优点:免费开源,配套工具多,全中文文档,可视化开发,跨平台。
    • 缺点:支持平台较少,大多数时候用于开发对性能和效率要求不高的小游戏。


    但是使用游戏引擎毕竟是停留在表面看不到本质,当游戏开发的时候出现了某些问题或者特殊需求,你往往很难处理。而且游戏引擎技术日新月异,你所学的几乎都是别人留下来的方法,而不是其本质思想。如果将来别的游戏引擎兴起,你又要重新学习另外的游戏引擎怎么使用。在很多大公司里面,甚至都有自己公司内部专用的引擎(如网易公司的风魂引擎、金山公司的剑网3引擎、蜗牛公司的Flexi引擎等等)。所以单纯地走这条路线,可能不会让你走得很远并且可能会日渐乏味。 

    线路二:使用游戏引擎并深入了解游戏引擎原理

    对于第二条路线,深入学习游戏引擎原理短时间不会让你的工作有什么卓越的成效,但是可以弥补只使用游戏引擎导致的问题,而且学习游戏引擎原理,更多时候不是一定就为了自己日后要造个游戏引擎,而是更深入理解自己的游戏引擎,更好地使用它。当然,千里之行始于足下,经常学习游戏引擎底层原理的人到了一定的积累的时候,自己造个游戏引擎也是可以的。

    对于像学习游戏引擎原理的人来说,需要制定自己明确的长期目标:

    1) 首先,一开始可能对游戏引擎没什么概念,建议先使用一两个游戏引擎(我推荐C++程序员学习虚幻4游戏引擎,现在是免费开源的,非常值得学习。那些不开源的游戏引擎尽量不要去学习,因为其对于学习原理来说没有多大贡献)。

    2) 因为游戏开发就是一门实时渲染的艺术,所以离不开图形库的学习。现在主流的图形库是Windows平台专用的DirectX 11和通用平台的Opengl。这两个图形库,至少需要入门其中一个。

    3) 然后,你就可以开始看计算机图形学的书籍了。如果你发现你的理论底子不足,这个时候就需要补一下线性代数、基本的微积分、还有3D数学的知识。

    4) 游戏引擎中包含了各个部分,上面的渲染只是游戏引擎的一部分。还有其它诸如着色器编写、地形编写、物理引擎编写、模型和动画、人工智能体设计、网络编程等等,完成渲染部分的基本学习后,你可以选择自己感兴趣的部分进行专攻,毕竟我们实际工作大多数时候是团队开发,而不是单打独斗,每个人都应该精通自己所擅长的那部分。

    这里为了文章的紧凑性,我将游戏引擎的基础理论知识和各个引擎组件的推荐书籍放到了文章的附录处。

    下表是基础理论知识和游戏引擎组件书籍推荐(不必全看,请有选择地阅读):

    1) 数学基础

    下面这些数学基础书籍是为游戏开发量身定制的,比专门看某一数学方向更有效率:

    • 《3D Math Primer for Graphics and Game Development》,有中文版
    • 《Mathematics for 3D Game Programming and Computer Graphics》
    • 《Essential Mathematics Guide》
    • 《Geometric Tools for Computer Graphics》

    2) 图形库

    针对 DirectX 的书籍:

    • 《Introduction to 3D Game Programming with DirectX 11》,大名鼎鼎的龙书,入门必看的
    • 《Practical Rendering and Computation with Direct3D 11》,进阶
    • 《Real-Time 3D Rendering with DirectX and HLSL》


    针对 OpengGL 的书籍:

    • 《OpenGL SuperBible》,著名的蓝宝书,以例子为主,有中文版。但不建议看中文版,翻译得不好。
    • 《OpenGL Programming Guide》,著名的红宝书,有中文版。红宝书更像是手册,API大全,例子较少,适合熟练者查询使用。
    • 《OpenGL 4.0 Shading Language Cookbook》,进阶,基本上就是API手册,有中文版。但不建议看中文版,翻译得不好。

    3) 计算机图形学

    • 《The Nature of Code》,有中文版,比较简单
    • 《Fundamentals of Computer Graphics》,被国外多所大学采用的入门教材,介绍范围比较广,从基本的相关数学到建模、渲染、动画、应用方面都有提及
    • 《Physically Based Rendering》,主要是离线渲染
    • 《Real-Time-Rendering》,必读经典!必读!
    • 《计算机图形学》,作者舍利
    • 《Computer Graphics》,要看最新的第三版
    • 《计算机图形学原理及实践:C语言描述》

    4) Shader着色器

    • 《Cg_tutorial》,入门
    • 《The Complete Effect and HLSL Guide》,入门
    • 《Shaders for Game Programmers and Artists》,含有大量入门例子
    • 《Advanced Lighting And Materials With Shaders》,介绍光照模型和技术
    • 《GPU Gems》进阶必读。
    • 《Shader X》系列,每年出版一本,包含最新的实时渲染技术。论文性的比较多,偏难。
    • 《Programming Vertex, Geometry, and Pixel Shaders》,以DirectX 10为主,很详细。

    5) 地形

    《Real Time 3D Terrain Engines Using C++ And DX9》非常全面的讨论了关于地形渲染的各种技术。

    6) 模型导入和动画

    • 《Character Animation With Direct3D》包含了最新的游戏动画技术
    • 《Computer Animation》
    • 《Real-Time Cameras》
    • 《Computer Facial Animation》
    • 《Realtime 3D Character Animation with Visual C++》
    • 《Advanced Animation and Rendering Techniques》
    • 《Cloth Modeling and Animation》

    7) 网络

    • 《TCP/IP 详解 卷2》
    • 《Network Programming for Microsoft Windows》
    • 《Advanced Programming in the UNIX Environment》
    • 《Windows核心编程》
    • 《Multithreading applications in Win32》
    • 《网络游戏核心技术与实战》

    8) 物理

    • 《Game Physics》
    • 《Game Physics Engine Development》
    • 《Real-time Collision Detection》,碰撞检测方面最好的书
    • 《3D Game Engine Design, 2nd》第8、9章值得一看

    9) 细节层次

    《Level of Detail for 3D Graphics》

    10) 光线跟踪

    • 《Physical-Based Rendering - From Theory to Implementation》
    • 《Another Introduction to Ray Tracing》

    11) 人工智能

    • 《Programming Game AI by Example》有中文版
    • 《Artificial Intelligence for Games》
    • 《AI Programming Wisdom》
    • 《AI Game Engine Programming》

    12) 综合


      • 《Game Programming Gems》,文章的范围比较广,选择性阅读
      • 《Color and Light in Nature》
      • 《Digital Design of Nature》
      • 《Form+Code in Design, Art, and Architecture》

    13) 是的,我是来劝退的(逃).

    发布于 2018-08-19 15:20:57 4 条评论


  • 11

    帕秋莉诺蕾姬多读多听多看多想,少说话

    fenx假面女仆卫士Arcadia 等 11人赞同

    既然说是职业码农,编程方面的事情我就不多说了。


    先谈游戏开发。首先要胡乱地玩玩引擎,有编程基础的话语言根本不是问题,根据手册文档什么的对着看两眼就可以了,关键是要熟悉各个引擎的常用功能,熟悉他们提供的各类特色。初期,我推荐三个引擎你可以去关注一下:

    RPG Maker 系列: 原本应用领域非常狭窄,也就是RPG,但是功能全面。熟悉了基本框架之后,就可以尝试改脚本,这时候RGSS就非常适合用来做几乎所有tile-based设计的2D游戏,比如战棋。

    大型3D引擎: 我没有深入使用过UE等,所以这里我用Unity来说,但是把它们放到一起,因为它们和其他两个毕竟区别很大。3D引擎自然也是必须要学习的。这个年代的3D引擎已经友好太多了,不需要考虑什么运行流程之类的事情,模块都十分现成,你只需要组织对象编写简单的(他所谓的)脚本即可。

    Game Maker (Studio): GMS比起RM来说应用范围更广,可视化脚本很适合一系列2D游戏常用功能的开发(比如做一个射击游戏的模型只需要做很少的事情)。GMS的应用也就是所有2D设计,上面提到的3D引擎当然也可以用来做2D游戏,但是因为它们毕竟是3D引擎,做2D的话功能会有很多冗余,有些地方也会十分不方便,这时候GMS的优势就体现出来了。

    之前我说的是“胡乱地玩玩引擎”,这是因为你可以会有许多许多想法,不同的引擎(或者说游戏制作工具)在不同类型的游戏在开发上表现是不同的。最适合的才是最好的。如果只是游戏开发,那到这里就结束了。如果是一个人搞全栈,那还有许多东西要学。


    设计:民科出身的我只能说多玩多想,既然要开发游戏你就应该更多地从开发者的角度看待别人的作品,比如思考别人这个点的设计怎么样,为什么要这么处理。这方面我推荐一个 传送门 Portal 系列的开发者解说模式(好想要通关才有?)。

    音乐:可以参考一下 https://cowlevel.net/question/1840109 ,这坑太大

    美术:我不会!(`·ω·´)


    以上都是基础技能,进阶技能那就海了去了,策划就能分好几种,数值系统剧情都是大坑。

    更新于 2016-09-29 16:07:03 0 条评论


  • 4

    蒋学驽一只节操是叠加态的野生游戏设计师

    蒋学驽HyhzRingo 等 4人赞同

    先精读一下这个十八天从入门到放弃课程吧,虽然过于浓缩了……但好歹都是干货,而且方方面面都讲到了……

    http://gamerboom.com/archives/40604

    更新于 2017-10-09 19:47:55 0 条评论


  • 4

    Raven Woody十九年游戏玩家

    假面女仆卫士XHXIAIEIN雾乘岚 等 4人赞同

    给你几个游戏项目练手,最好按顺序,不指定实现方式,用什么语言什么引擎都可以。

    1、接苹果:

    一只猴子在高处左右移动,随机时间会扔下苹果,你需要控制角色在苹果掉在地上之前接住它。失败三次后游戏结束。

    加强版:有关卡,并且关卡有难度提升。

    2、打飞机:

    控制一架飞机发射子弹机击毁随机出现的敌机。

    加强版:更多的子弹风格,敌机的差异。

    终极版:弹幕狂欢。

    3、横版过关:

    控制角色使用各种攻击(近战还是远程都可)击败敌人,地图可卷动,支持关卡分支。

    加强版:攻击方式的多样性,敌人的多样性。

    终极版:道具Buff的支持,攻击有更多的判定方式,如霸体、吹飞、浮空、破防等。


    先这些,要工作了,待更新……

    发布于 2016-10-09 10:14:20 0 条评论


  • 3

    Kingfeng我们作为一个协会誓要治愈这个世界及其居民

    apx江城子Dragon mage 赞同

    游戏开发两条技能树

    一是剧情,学引擎使用(从Rpg制作大师到unity)

    Rpg制作大师个人非常推荐,勾搭几个基友(画师,写手,配乐),而且游戏制作者会画画非常重要! 就算画不好,吧人物特征画出来拜托基友改好一点就可以了

    其他引擎Unity啦(c#),虚幻啦(C++) 等等,还有无数各种引擎可以去了解一下

    二是游戏开发,学代码

    推荐C熟练转战C++然后写混血代码,或者干脆C到底(不过C++有挺多功能挺好用的),特点是非常自由所有功能只要你能脑洞出来就能实现。基本上是图形界面入手然后先写那种下落消除啊,竖版弹幕啊,横版过关啊,这种练手

    C#也可以,而且还比C学起来简单,完全面向对象,但是自由度不及C,在游戏范围内可以通用但是脑洞过大可能会很麻烦。

    然后就是Java,个人没接触过欢迎补充


    更新于 2016-06-14 14:58:47 0 条评论


  • 1

    viewtheard

    viewtheard 赞同

    文章还不够不全面。只提了编程

    发布于 2018-08-19 22:23:28 0 条评论


  • 0

    Caesar说实话会挨劈

    首先要开始动手做,先做出一个完整的可以玩的东西来。

    unity、ue,这些都有教程,照着做就行了。

    游戏开发和编程有一些地方不一样,就是考虑玩家体验的事。

    一般来说就是考虑你想给玩家什么个体验,然后推导出什么样的动态有这样的体验,然后推导出游戏机制是什么样的。

    其他的就是游戏设计的内容了,看看书有助于思考,这些思考对于程序员本身也是有帮助的。

    发布于 2018-08-20 11:03:43 0 条评论


  • 0

    NEOHEROSONE

    那得看你想干什么了,皇帝从来不管将军怎么干,你能赢,性价比高就是了。

    将军也只能指挥大队,大不了叫精英去干某些难干的事。

    精英也有善于放火的,善于水攻的……

    你到底想干什么才是问题,这个问题就和“赚钱应该从何入手?”

    各人都是不同的,你想干什么才是问题,你想当翻译你得学外语,你想当画家你得学画画。就是这样。

    发布于 2016-09-29 16:23:30 4 条评论


  • 0

    warmtrueVR游戏开发者

    不是高人,同样大学没有学计算机。如果有程序基础就比较简单,目前国内使用最多的是unity和cocos,对应语言分别是c#,c++。可以二者选其一,然后先学基本示例工程,然后尝试小游戏(三消,俄罗斯方块什么的),然后准备下面试题至少就可以换来一个游戏行业的敲门砖了。不过可能是初级职位,没有你之前的工作赚钱。

    发布于 2016-06-14 10:29:41 0 条评论

  • 登录奶牛关账号即可参与讨论

{{question['follower_count']}} 个玩家关注

...

相关元素

相关问题

有需要策划的独立游戏团队?

5人关注 4个回答

美术是怎么看待独立游戏的?

16人关注 9个回答

围绕LD40的主题“The more you have, the worse it is”你有哪些游戏构想?

15人关注 9个回答

问题被以下收藏夹收录