V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
hx1997
V2EX  ›  问与答

游戏编程的学习路线大概是怎样的?

  •  
  •   hx1997 · 2014-06-28 18:41:58 +08:00 · 11625 次点击
    这是一个创建于 3603 天前的主题,其中的信息可能已经有所发展或是发生改变。
    朋友说以后想做游戏程序员,帮问。

    请大家说说游戏编程要怎样学习编程知识?(假设零基础,希望能推荐几本书)
    另外,游戏编程需要哪些除编程以外的知识?(如数学三角函数这类)

    Thanks!

    P.S. 这个问题我 Google 过,也得到一些答案,但毕竟鱼龙混杂,还是希望听听大家的意见。
    23 条回复    2014-07-01 11:06:53 +08:00
    Mutoo
        1
    Mutoo  
       2014-06-28 18:46:19 +08:00   ❤️ 1
    我收藏的一些资料
    http://blog.mutoo.im/links.html
    YouXia
        2
    YouXia  
       2014-06-28 18:55:58 +08:00 via Android
    首先你得说明是做端游、手游还是页游。
    hx1997
        3
    hx1997  
    OP
       2014-06-28 19:01:57 +08:00
    @YouXia 应该是端游,不好意思。还有什么遗漏之处也请指出,谢谢。:-)
    YouXia
        4
    YouXia  
       2014-06-28 19:08:06 +08:00 via Android
    @hx1997

    端游比较难,C++,算法,图形学这三大块吧。如果想去网易游戏,腾讯这种公司,首先要考个计算机排名前十左右的学校,因为这个对学校要求比较高,比如网易多清北的。
    hx1997
        5
    hx1997  
    OP
       2014-06-28 19:18:22 +08:00
    @YouXia 算法学习有没有偏重点呢? i.e. 有没有哪种算法对于游戏编程来说比较重要?
    YouXia
        6
    YouXia  
       2014-06-28 19:24:53 +08:00 via Android   ❤️ 1
    @hx1997
    如果学生的话,会问基础数据结构和算法相关的,但是很多智力算法题,与平常算法训练关系比较大,面试时候图形学问好多,肯定少不了。因为端游对容错率要求必须很低,一个产品几年才能出来,所以面试要求你比较聪明,并且写代码要做到bug free。

    社招不知道。
    acros
        7
    acros  
       2014-06-28 19:31:38 +08:00   ❤️ 1
    http://www.cnblogs.com/clayman/archive/2009/05/17/1459001.html
    这里有篇我觉得比较契合的,讲得还比较全面了。

    预备知识挺麻烦的:
    高数、线性代数、物理(这个要求一般不是很高)、英语、C++、VisualStudio只要也要用熟····
    chaixl
        8
    chaixl  
       2014-06-28 20:09:11 +08:00   ❤️ 2
    游戏程序员,这个太宽泛了。渲染只是游戏开发中一小部分。只不过渲染所需要的图形学是相对专业的领域,所以都会特别提一提。

    实际开发中,主要可以粗略得分为游戏引擎和GamePlay两个层面,大部分还是涉及GamePlay多一点。

    [程序+数据结构] 想立志成为游戏程序员,首先打好基本功,程序+数据结构,引擎层面主要是C++,GamePlay就很难讲了,脚本语言居多,不过学习什么编程语言不是关键,这种东西,一通百通的,建议学好C++,以后走遍天下都不怕,哈哈。算法方面除了教科书上的,可以了解一些游戏相关的算法,比如A*寻路算法。

    [数学] 线性代数必须掌握。推荐一本书。
    http://item.jd.com/10078629.html

    [相关专业知识] 这个看方向,渲染、AI、物理等等

    [实践]
    前面一大堆,其实都很虚,最重要的是实践起来。搞起来就知道缺什么了。

    前期可以做一些简单的小游戏,主要是练编程和算法,比如连连看,扫雷什么的。

    然后接触一款游戏引擎! 2D方面没什么太多好推荐的,看看cocos2d吧;3D方面可以玩一玩Unity3D,比较容易上手。有兴趣的话可以接触Unreal Engine,UE4现在好便宜呀好便宜。不过像UE4这种级别的,进入游戏公司以后再玩不迟。


    有以上经验后,应聘游戏公司成功的机率还是很高的。
    对于实届生,实际上公司也不会有太多专业方面的要求,我招人的时候只看基本功。基本功扎实,什么都好说。
    canesten
        9
    canesten  
       2014-06-28 22:22:43 +08:00 via iPad   ❤️ 1
    零编程经验+零数学经验?
    想做端游几乎不可能
    没公司会要这种背景的人
    省省吧
    xiaowangge
        10
    xiaowangge  
       2014-06-28 23:27:14 +08:00 via Android   ❤️ 1
    零基础学编程端游(C++),时间成本,收益上来说,不值得。

    页游的话,ActionScript可以学学,算是前端。

    HTML5的话,可以学学,相对来说容易。


    另外,有的人也把Unit3D做出来的游戏叫端游,。

    Cocoas2d-x. lua也可以尝试一下。

    没必要非「端游」哈。

    据说能进网易游戏部门的程序员,月薪至少3万吧,零基础的话,要很狠很狠努力才有可能(^_^)
    hx1997
        11
    hx1997  
    OP
       2014-06-29 00:00:36 +08:00
    @canesten 只是一个志向而已,何必这么打击别人?更何况我们还是学生,又不是什么早就大学毕业几百年的人。
    LetFoxRun
        12
    LetFoxRun  
       2014-06-29 00:08:12 +08:00
    @hx1997
    一般打击人的话说的都是真话。端游的话,基本上毕业时候拿不到offer,社招更没可能了。
    比如网易游戏,腾讯游戏这种,特别是前者,清华北大这种学校概率比较高,北航北邮浙大这种级别学校能去个几个,也就几个,其他比这学校差的,基本可以洗洗睡了。
    s51431980
        13
    s51431980  
       2014-06-29 00:10:28 +08:00
    @hx1997 人家说话直接了点,但却是基本是事实
    hx1997
        14
    hx1997  
    OP
       2014-06-29 00:13:29 +08:00
    @LetFoxRun 真话不一定要用打击人的方式来说。再者他所说的我也不是不懂,我们只是以初学者的身份希望得到一个答案。谢谢你的提醒。
    hx1997
        15
    hx1997  
    OP
       2014-06-29 00:17:51 +08:00
    @s51431980 见上,这些“现实”问题我们心中自然有数,也宁愿相信他是好言相劝但心直口快。谢谢。
    LetFoxRun
        16
    LetFoxRun  
       2014-06-29 00:27:34 +08:00
    @hx1997
    恩。
    其实吧,自己想做游戏开发,没必要文章说什么朋友之乐的,不丢人。
    另外,你应该在读高中吧,好厉害。
    hx1997
        17
    hx1997  
    OP
       2014-06-29 00:35:15 +08:00
    @LetFoxRun 嗯,在读高中。事实就是我朋友想做啊,如果是我自己想做我完全不会也没必要隐瞒的。:-)
    arzusyume
        18
    arzusyume  
       2014-06-29 00:40:51 +08:00   ❤️ 1
    flykite
        19
    flykite  
       2014-06-29 01:13:26 +08:00   ❤️ 1
    端游的游戏程序员,你需要确定是要做前端,后端还是工具(比如编辑器等)。因为几者的技术路线差异可能很大。无论是哪个,对应的解决方案都很多,语言也绝不限于C++。

    所以,做游戏,首先得确定一个方向。很多人入行是从GUI做起来的,其实游戏GUI,对程序员的要求也不低。你可以看一下mygui,虽然很老,但是还是有很多项目在使用。还有个基于flash的叫ScaleForm,需要花钱的,也很牛。其他还有一些,比如hikari,quickgui等。不赘述。

    做前端,是否容易,具体也得看游戏内容,2D的,2.5D的,3D的。这个是考量计算机图像和图形学的东西比较多一点。相关的技术已经比较成熟了具体也有很多文档。最容易的学习方法,当然是先选一个引擎,然后跟着教程学习。入门的话,其实可以考虑用U3D,使用的是C#和JS,而且图形化界面,上手会快一些。通过这个使用,可以了解一些游戏设计当中的基本概念。这些概念,在大多数引擎当中,都是通用的。此外,适当的学习下lua/anglescript,也是很有帮助的。

    做后端,是经验与知识的结合,语言的选择也是多种多样,比如c++,c#(出活快),java,erlang 等等。现在不少项目的服务端都在朝C# + mono上转,是的,使用的是linux。至于技术,也有很多,比如要熟悉UDP/TCP(网络通讯),很多项目用UDP模仿TCP。比如要做防作弊(必须得服务端来做),比如要做排名(算法)。比如要做连接优化(增加单服务器的玩家连接数量)。等等等等。

    前面说了一堆,总结下来,万事开头难,选一个自己最感兴趣的方向,坚持下去,一定能够得道成仙。 ;D
    flykite
        20
    flykite  
       2014-06-29 01:18:23 +08:00
    补充一下,opengl / directx,都属于游戏101课程。其他还有很多库,比如寻路,比如物理 等等。可以多了解一些。如果只想做后端,可以无视。:D
    canesten
        21
    canesten  
       2014-06-29 09:48:23 +08:00 via iPad   ❤️ 1
    @hx1997
    对不起,如果是高中生就另当别论了
    考个名校的计算机系是首要任务
    如果你说考入985计算机系前十的院校易如反掌
    或者已经准备出国念大学
    那咱们还可以继续探讨下一步的方案


    国内也就网易和西山居两家算是像样的端游公司
    完美也不错
    但是今年开始全面转向手游了
    国内的外资也就CCP和UBI可以去,其他暴雪EA都是酱油部门
    我分别在以上提到的一家国内企业和一家国外企业带过几年
    相信可以帮到你一些
    hx1997
        22
    hx1997  
    OP
       2014-06-29 10:17:01 +08:00 via Android
    @canesten 谢谢,冒犯之处还请原谅。因为是我朋友打算做这方面,所以我也不清楚他未来具体的规划。不过可以确定的是他准备出国读大学。
    canesten
        23
    canesten  
       2014-07-01 11:06:53 +08:00 via Android   ❤️ 1
    那既然决定了要做端游,就注定了要比其他种类的游戏难度都要高一些,优秀的端游公司一般都是自研图形引擎,甚至自研物理引擎的,PS:大多还是会用第三方的物理引擎。
    所以基础是非常重要的,一开始上来就从Unity入门,完全会让一个初学者走火入魔。
    正确的方式是从OpenGL和DirextX编程开始,熟悉整个可编程管线的每个细节和方面。之后才能正确理解Unity所做出的简化有什么样的利弊,如何从抽象接口设计来实现跨平台支持等等。
    基础铺垫的话大学课程都有教,离散数学,线性代数,高数是必备的。另外在此之上补一些计算机图形学的基础,端游的话对密码学也要有点基础认识。
    专业课上对硬件理论和操作系统的充分了解是必要的,语言层面C++是必备技能,有精力和能力的情况下C也很有必要(我之前公司的CTO汇编的功力非常深,因为很早就开始从事主机游戏的开发,但是现在用的很少了)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2860 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 00:20 · PVG 08:20 · LAX 17:20 · JFK 20:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.