V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mmqc
V2EX  ›  程序员

想请教下各位大佬们,想换到游戏开发,技能点怎么点?

  •  2
     
  •   mmqc · 84 天前 · 3662 次点击
    这是一个创建于 84 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1. 现状: 目前在做传统的工业的开发(前端后端均略懂皮毛,环境主要是 Linux,单机应用)
    2. 对游戏开发的了解:查了下,游戏开发分为好多,现在自己对游戏行业完全没什么印象
    3. 想了解的内容: 想了解下,各个不同方向的游戏开发的技能点怎么取点
    4. 谢谢各位大佬
    第 1 条附言  ·  84 天前

    总结

    大概根据楼中各位老哥的回复,总结了下:

    • 游戏前端: 基础 3D 数学,渲染,骨骼动画等
    • 游戏后端: 传统服务器技能加上相关的业务逻辑
    • 游戏要根据不同类型的游戏,进行详细的划分技术栈的,没通用的.

    致谢

    谢谢老哥们的指导 @across @0x2CA @coderluan

    PS

    后续会根据楼中的回复,还有自己搜集的信息,会进一步完善相关的内容

    第 2 条附言  ·  83 天前

    技能总结

    • 客户端: 基本的图形学,数学基础,美术资源的了解.
    • 服务端: 核心 TCP/UDP 通信.数据的序列化,数据库(实时性要求不太高)
    • 业务: 除了基础业务(日志,通信,数据库)等,基本与游戏类型高度耦合.
    • 扩展:分布式开发
    • PS: 感觉客户端的准入门槛比较高,而且专业性比较强,泛用性不强.后端的泛用性比较好一点. 但是后端,也不像互联网,有很多公认比较成熟的框架

    @livepps

    业务总结

    -无缝大地图 AOI 实现

    • 技能系统
    • 后台分布式框架
    • 抽奖算法
    • 各类测试
    • 上线运维等经验

    @Pur

    成熟的例子(比较老一点)

    Doom3 Code Review

    https://fabiensanglard.net/doom3/

    学习路线(暂未实施)

    Game Server development

    https://www.gabrielgambetta.com/client-server-game-architecture.html

    Game Networking

    https://gafferongames.com/tags/networking/

    https://docs.unrealengine.com/udk/Three/NetworkingOverview.html

    @BadRomance

    致谢

    @BadRomance @xiaowangge @livepps @scar263 @Pur

    谢谢各位老哥的指导

    题外话

    综合楼中各位老哥的回复,以及自己查阅的相关资料可以清楚的了解到:

    • 游戏行业的就业面比较窄,一旦入行很难再出行
    • 游戏行业的加班现象比较严重
    • 游戏行业目前的生态(各方面吧,比如游戏类型,游戏版号等等)不是特别好

    @xiaowangge

    73 条回复    2020-10-27 14:37:39 +08:00
    across
        1
    across   84 天前   ❤️ 1
    新人基本都没有这方面知识,就是考大学里面那些基础的。前端 C++、C#,后端 Java Golang 之类。
    相对来说,前端图形学加成比较大,学习曲线也陡。

    如果自己做过游戏 Demo 可能会加分,现在照着教程做 UE4 、Unity 小游戏还是简单的。
    wysnylc
        2
    wysnylc   84 天前   ❤️ 9
    别把爱好当工作,要不然爱好没了
    0x2CA
        3
    0x2CA   84 天前   ❤️ 1
    我给一点建议把,可以想选择一个引擎进行学习,比如你可以选择 UE4 或者 Unity 或者一些 H5 的网页引擎,先接触一些 2D 游戏了解游戏开发的逻辑,然后往 3D 游戏走.做游戏除了要写代码逻辑以外还需要你会布置界面,会帧动画,骨骼动画,粒子特效,Shader 等等,游戏逻辑是比较吃数据结构和算法的,平时玩的游戏看到的特效就是可能是(帧动画,骨骼动画,粒子特效,Shader 等)做的,好不好看看这些,你也需要了解
    mmqc
        4
    mmqc   84 天前
    @across
    谢谢老哥.就是有个地方不太明白:
    游戏的后端也有用 JAVA 的么?(没有别的意思,单纯的好奇)
    前端,图形学啥的,需要一定的相关的数学基础么?
    nyaaar
        5
    nyaaar   84 天前
    建议就是快跑!
    mmqc
        6
    mmqc   84 天前
    @0x2CA 老哥,如果是打算做服务器那边的,也需要了解这些客户端相关的内容么?
    感觉这些界面布置跟 QT 很类似.
    剩下的那些效果&骨骼动画等等,感觉好像 CG 的渲染啊,这也是开发的一部分么?
    感觉好新奇
    mmqc
        7
    mmqc   84 天前
    @nyaaar 老哥,怎么说呢
    across
        8
    across   84 天前   ❤️ 1
    @mmqc
    后端主要就是服务器相关知识,难度没大厂那么高,选型看具体要求,只是 Java 多而广···· 相对都具备技术栈要求。

    前端 3D 数学必备的,不管是不是图形学相关,这个是基础:
    https://book.douban.com/subject/1400419/
    coderluan
        9
    coderluan   84 天前   ❤️ 1
    首先, 不建议转游戏开发. 如果还想做, 就想想你自己想做哪类游戏, 你要说什么都行, 就更不建议你转了, 想好了, 就去那类游戏最常用的游戏引擎, 学习引擎过程中约到什么概念不理解, 就再去看相应的书籍.
    0x2CA
        10
    0x2CA   84 天前   ❤️ 2
    @mmqc 如果是要做游戏的后端的话需要了解一些常见游戏功能,比如排行榜功能,比如数据存储,比如客户端对战等等,比较关心并发,如果是客户端是底层渲染一般不关心,不然用引擎就没有必要了,底层细节处理好了,其他的也是好学的,2D 游戏好做,3D 多一个轴复杂好多...
    mmqc
        11
    mmqc   84 天前   ❤️ 1
    @across 好的,谢谢老哥.
    如果只是 Linux 下的 Socket 之类的话,看起来我转的成本比较低.
    不过,还是对前端的那种炫酷的效果感兴趣.
    看了下目录,感觉大学里有工科类的线代底子,学起来应该不是很难

    那,老哥再问一个问题,既然游戏前端需要这么多内容,那相对的门槛是不是略高?还是说,因为需要的内容比较多,所以入行的门槛,(在掌握了必须的知识后)比较低呢?
    mmqc
        12
    mmqc   84 天前
    @coderluan 谢谢老哥.
    看到楼上也有老哥说过,不建议转游戏开发的,那个方便问下原因么?
    想做的游戏类型,就是基于一个开放世界的框架,往里塞啥都可以的 e 那种.这个是不是目前 UE4 用的比较多?
    然后,大概明白了老哥学习方法了,和自己刚开始学编程差不多
    mmqc
        13
    mmqc   84 天前
    @0x2CA OK,大概有个感性的认识了.
    游戏的服务端开发,只要是处理游戏相关的功能性的逻辑,游戏的前端就和 WEB 前端差不多,也主要是效果呈现.
    服务端需要的:Socket,并发,数据库,
    前端需要的: 图形学,3d 数学
    然后,前端需要根据不同的游戏类型来选择相应的引擎.
    谢谢老哥
    qq1340691923
        14
    qq1340691923   84 天前
    不建议学游戏
    mmqc
        15
    mmqc   84 天前
    @qq1340691923 为什么老哥?
    across
        16
    across   84 天前   ❤️ 1
    @mmqc
    小公司小团队客户端(前端)什么都做。大公司一般分的很细了,鹅厂有很细致的岗位分法,做系统、做效果,改引擎等。 现在游戏市场进入寡头阶段了,除了那几个老面孔,就是莉莉丝米哈游这种细分领域,所以不推荐新人进去,除非你在这方面已具备很好的造诣,不然去互联网更明智。
    0x2CA
        17
    0x2CA   84 天前   ❤️ 1
    @mmqc 服务器也有没有渲染的游戏引擎,这种,玩家的游戏界面实现帧同步,同步服务器的状态,服务器的运算为准,也有服务器要写 AI 逻辑和玩家对战,也有玩家客户端运算上传服务器,服务器进行验证这些,简单的也简单,复杂的很复杂
    mmqc
        18
    mmqc   84 天前
    @across 好的,谢谢老哥,了解了.
    就是说,做游戏以后的话,也只能是这几家之一了.选择空间比较小,上升的天花板也没互联网那么充裕了.基本上目前是存量市场的互相竞争了.
    目前的技术栈以 Linux 下的 C++ 及网络为主,去互联网好像有点困难😂
    shikimoon
        19
    shikimoon   84 天前
    为什么还有人想不开的。。。曾经因为喜欢玩游戏毕业就在做游戏开发,然后就转行了
    coderluan
        20
    coderluan   84 天前   ❤️ 2
    @mmqc 游戏行业虽然很赚钱, 但是基本上被大厂垄断了, 小厂别说不赚钱, 随便一个文件就可能直接被弄死, 而你转行一般是很难直接进大厂的, 只能先进小厂, 这个很明显是在走弯路. 不知道楼主为啥要转, 从钱的考虑没这个必要, 你直接转 web 明显更适合点, 从兴趣的角度, 难道你真想去市面上那些坑钱游戏吗.
    mmqc
        21
    mmqc   84 天前
    @0x2CA 嗯嗯,谢谢老哥,就是说还是要根据不同的游戏类型,来看相应的技术栈了.
    AI 逻辑那块,感觉就是 RPG 之类的游戏为主了
    帧同步的那块,完全想不到,老哥能再多说一些么?
    mmqc
        22
    mmqc   84 天前
    @shikimoon
    我也是很喜欢玩游戏,就很期待未来有一天可以玩到自己做的游戏
    shikimoon
        23
    shikimoon   84 天前
    @mmqc 放心吧,国内这环境做出来的只能是屎,每天光测试就会让你想吐,不会想玩自己做的游戏的
    coderxy
        24
    coderxy   84 天前
    我也喜欢游戏,当初就是为了玩游戏才学的 IT,但是现在已经不打算转行到游戏领域了。 在后端做了 5 年了,再去转游戏又是从头开始,而且上面也说了,现在游戏是寡头领域,大多小公司都活不过几年,而且技术适用范围也比较窄。 还是老老实实做 web 后端算了。恰饭要紧。
    mmqc
        25
    mmqc   84 天前
    @coderluan 谢谢老哥,并不想做那些游戏,只是根据目前的技术栈来看,如果想转游戏的话,转服务端的成本比较低一点.
    老哥说的也是,转行的话,也只有进小厂.是在走弯路了,看了下,大厂里面基本都是 3 年左右相关的从业经验.

    转 web 也有考虑过,后面还是卡在经验上
    mmqc
        26
    mmqc   84 天前
    @coderxy 害,我的技术栈是基于 C++ 点起来的,传统的 WEB 后端,完全没 C++ 的市场啊.
    mmqc
        27
    mmqc   84 天前
    @shikimoon 嗯,也对.我是看到最近有点像国产游戏的文艺复兴,才动了念头.
    sssooonnnggg
        28
    sssooonnnggg   84 天前
    游戏行业 c++还是挺吃香的,无论前端还是后端
    mmqc
        29
    mmqc   84 天前
    @sssooonnnggg 语言和编程通用的方面(算法啊,设计啊等等)还行,就是苦于不知道技术栈到底怎么点的,从业的话,对经验的要求到底又怎么样
    shikimoon
        30
    shikimoon   84 天前
    @sssooonnnggg 扯淡呢,c++后端就少数几个大厂在用了,绝大部分都是 java
    sssooonnnggg
        31
    sssooonnnggg   84 天前
    看你想做游戏前端还是后端了,前端比较通用,各个游戏引擎大差不差,图形学是必学的,后端的话不同类型游戏差距很大,也没有太通用的服务器架构,综合来说用什么语言的都有,c++/go/java/erlang 。。。
    mmqc
        32
    mmqc   84 天前
    @shikimoon 完全没想到啊,游戏后端也是用 JAVA 写的...
    mmqc
        33
    mmqc   84 天前
    sssooonnnggg
        34
    sssooonnnggg   84 天前
    @shikimoon 你说的是后端吧,前端大部分还是 c++,不说 cocos 和 ue4,就 unity 据我所知也有不少用 c++写插件给 c#用的
    shikimoon
        35
    shikimoon   84 天前
    @sssooonnnggg 我回复的你说“游戏行业 c++还是挺吃香的,无论前端还是后端”,然而前端用 c++的也不多,cocos 主要是 lua 跟 js,unity 是 c#,也就图形学会用 c++。然而有几个做这个的?
    hiahiahiahia
        36
    hiahiahiahia   84 天前
    游戏行业都要加班的,而且基本上 24 小时都要保持联系,一有问题就会给你打电话,我每个周末都要远程解决问题或者帮忙找问题
    mmqc
        37
    mmqc   84 天前
    @hiahiahiahia 老哥,这也太痛苦了吧,啊这,直接劝退啊
    hanguofu
        38
    hanguofu   84 天前 via Android
    楼上这么多高手,有没有人做体感类游戏的啊?
    nicebird
        39
    nicebird   84 天前
    想做游戏还是前端,后端都是通用服务器那套。
    liufish
        40
    liufish   84 天前
    借楼问一下,各位大佬对 three.js 怎么看?
    想用来做一些展示类的界面,带有一些交互的。
    lovecy
        41
    lovecy   84 天前
    @0x2CA 一开口就知道老国产游戏服务器了[doge]
    mmqc
        42
    mmqc   84 天前
    @nicebird 现在都想了解一下,然后结合目前的技术栈再进行判断.
    老哥你能简介说说么
    Katrol
        43
    Katrol   84 天前
    老哥,不是开口说想转就转的,现在都要行业经验,社招没功夫再培养你的
    BadRomance
        44
    BadRomance   84 天前   ❤️ 1
    前段时间对这块比较好奇,想切入开发点 c 或 c++的东西;单纯兴趣,不了解游戏行业

    Game Server development

    https://www.gabrielgambetta.com/client-server-game-architecture.html

    Game Networking

    https://gafferongames.com/tags/networking/

    https://docs.unrealengine.com/udk/Three/NetworkingOverview.html

    Doom3 Code Review

    https://fabiensanglard.net/doom3/
    wangyzj
        45
    wangyzj   84 天前
    看到这个就点进来了
    我就是觉得此生不自己搞点游戏出来不完整
    mmqc
        46
    mmqc   84 天前
    @Katrol 老哥啊,所以我才想找了解下各个方面的所需的技术栈.技术栈匹配的话,那么经验完全是可以借鉴的.
    剩下的无非是一些业务上的处理.
    mmqc
        47
    mmqc   84 天前
    @BadRomance 非常感谢老哥,晚上好好看一下这些资料.
    lights
        48
    lights   84 天前 via iPhone   ❤️ 1
    我是今年转行的,刚转行成功,可以看一下我的博客 https://lightjiao.github.io/
    calvincc
        49
    calvincc   84 天前 via iPhone
    没经验工作难找,自学怎么也就一些皮毛,语言好搞业务难熟悉
    mmqc
        50
    mmqc   84 天前
    @lights 谢谢老哥,看起来,老哥走的和校招差不多啊...
    不过踩得坑的确非常多,也对我这样的非常有帮助.
    mmqc
        51
    mmqc   84 天前
    @calvincc 是啊,经验的确很重要.尤其是国内的企业.
    lights
        52
    lights   84 天前
    @mmqc #50
    现在这家公司确实是把我当作校招水平看待的,只是我自身明显超出了校招的水平。
    加上又遇到了其他的事情不愉快的事情,已经打算跑路了,找了个做 MMORPG 的,待遇也好起来了
    mmqc
        53
    mmqc   84 天前
    @lights 加油老哥,相当的励志!
    xiaowangge
        54
    xiaowangge   84 天前   ❤️ 2
    只说手游。

    前端:cocos2d-x 、unity 、微信小游戏(其实也有不小的了)
    后端:Erlang 、Java ( Netty )、C++

    除非你非常 热爱 游戏行业,否则不建议进入该行业。热爱的意思是说,是兄弟就来砍我,你也玩得特别有意思。
    技术栈相对互联网来行业来说,游戏行业技术栈相对比较窄。

    另外,要考虑一下游戏行业加班的情况。
    mmqc
        55
    mmqc   84 天前
    @xiaowangge 谢谢老哥.
    结合你说的和楼上的相关内容,看起来目前游戏行业环境不是特别好(指做的内容)
    技术栈窄,也就是后面的可选择性不大了.
    加班,这是楼内出现频率相当高的词了.
    总结: 就是目前游戏行业的生态不是很好,且游戏行业的就业方面比较窄,加班严重.
    egoistttt
        56
    egoistttt   84 天前
    室友从 web 转了游戏后端,据他说写游戏相较于 web 更多是基础的东西,框架方面的比较少了
    mmqc
        57
    mmqc   84 天前
    @egoistttt 谢谢老哥,不过这个基础的东西是说,用的都是偏向操作系统底层的系统函数之类的(这些很少封装吧)么?
    框架是指,原本 web 开发一些基础性的东西,可以直接忽略,然后专注业务逻辑上的内容么?
    还是说,游戏开发后端写的都比较基础,而 Web 开发要考虑的比较多呢?
    livepps
        58
    livepps   84 天前   ❤️ 3
    1. 客户端:熟悉一款主流引擎,目前主流是 UE 和 Unity,岗位最多的应该是 Unity,大公司都有 UE 的岗位,绝大多数公司都有 Unity 的岗位,还有部分 Cocos,需要点图形和数学基础,大公司游戏开发一般分工比较细,图形这块有专门的人做;大部分程序员负责写业务;美术资源这块要稍微了解,比如资源规格,端游和手游的美术资源规格不一样的,高品质的资源手机跑不动,或者发热厉害。
    2. 服务端:语言的选择,一般看公司和项目,大点的公式,底层一般是 C++,然后业务层接入一个脚本语言来开发,也有纯 C++ 开发的,其他语言比如 Java 、Go 、C#、NodeJs 、Lua 、Python 也都有游戏项目在用;主要用 TCP 和 UDP 通信;协议多数也是用 Protobuf ;数据库这块不好说,看项目了,游戏对数据库要求其实不是很高,数据一般是定时写入数据库,不是实时,所以经常看到网游回档,有些都是回档到前一天,常用 Mysql 、Mongo 、Redis ;服务端开发框架我见过的很多公司都是自己研发的,核心是收发包,每次 tick 跑业务逻辑,大体逻辑分几步,底层网络收发消息,然后业务层解析消息,分发给不同的模块,数据定时入库;平时开发大多数就是做模块功能;上线前做压测,理论上单服要承载几千+的玩家。
    3. 补充:不同的游戏类型,除了基础服务,比如网络,日志,数据库这些,业务逻辑开发差别巨大,现在更多是做开房间类型的游戏,因为开发相对简单,可以很容易做成分布式部署。
    frankmdong
        59
    frankmdong   84 天前   ❤️ 2
    其实游戏开发的技能点能点的太多了,gameplay 、图形学、引擎等都是可以深入的话题。有兴趣的话可以看看我的博客 http://frankorz.com/2019/12/04/2019-year-end-summary,我去年下半年才毕业开始工作,不过我们公司还好,不发版的时候不怎么加班。
    mmqc
        60
    mmqc   84 天前
    @livepps 非常感谢老哥!说的太清楚了!
    总结一下:
    客户端: 基本的图形学,数学基础,美术资源的了解.
    服务端: 核心 TCP/UDP 通信.数据的序列化,数据库(实时性要求不太高)
    业务: 除了基础业务(日志,通信,数据库)等,基本与游戏类型高度耦合.
    扩展:分布式开发
    mmqc
        61
    mmqc   84 天前
    @frankmdong http://frankorz.com/2019/12/04/2019-year-end-summary
    谢谢老哥,知道内容很多的,所以才来 V2 来求教了.
    scar263
        62
    scar263   84 天前
    其实直接去看看对应岗位的 jd 就知道了,按 jd 要求去构建自己技术栈,然后去面试当考试就能验证自己的情况了。
    mmqc
        63
    mmqc   84 天前
    @scar263 小公司的 jd 没啥参考价值,大厂的 jd 又特别的高...
    scar263
        64
    scar263   84 天前   ❤️ 1
    @mmqc 你想去哪个公司就看哪个公司的 jd 就好了,只要是负责任的公司和招聘者,基本上 jd 就涵括了对这个岗位的具体要求和发展方向。
    至于你说小公司 jd 没参考价值的话,可能是在一些不大靠谱的小公司存在这种情况;但是也并不是所有小公司都是不负责或者不靠谱的,这个就只能你具体去区分了。
    只要是技术主管提出的 jd,基本就应该算是这个公司这个岗位最靠谱的就业方向指导了~~
    scar263
        65
    scar263   84 天前   ❤️ 1
    @mmqc 而且老哥相信我,这个是实践经验,不是信口开河。
    mmqc
        66
    mmqc   84 天前
    @scar263 谢谢老哥,明白了.晚上好好整理一下.
    mmqc
        67
    mmqc   84 天前
    @scar263 降维打击👍
    Pur
        68
    Pur   84 天前   ❤️ 1
    游戏后台需求:
    新人:基础 linux 、网络通信、数据结构与算法、nosql ;
    有一定经验:业务方面、无缝大地图 AOI 实现、技能系统、后台分布式框架、抽奖算法、各类测试、上线运维等经验。
    secondwtq
        69
    secondwtq   84 天前 via iPhone
    都是虚的,Gamedev 首要技能是做梦
    black11black
        70
    black11black   84 天前
    挺有价值的帖子,看了我一直也对游戏开发挺好奇的,哪个男孩儿对游戏开发不好奇呢。

    看完感觉后端知识其实没啥,最多涉及一些并发和高性能计算,和一般互联网后端开发的重合度挺高的。可能区别只是在于互联网里面很多滥竽充数写业务代码的,游戏后端更硬一些。

    倒是游戏前端,我觉得真是准入门槛很高的行当。像楼上说的,能做的都是大厂,你跳槽又进不了大厂,直接悖论。所以基本都是被一开始就选方向的,还有各大名校毕业好找工作的垄断了吧。
    mmqc
        71
    mmqc   83 天前
    @Pur 基本上目前缺少的就是业务相关的内容了.
    最近准备找个项目撸一个小型的出来
    mmqc
        72
    mmqc   83 天前
    @black11black 是啊,刚开始就选方向.
    问题在于,完全没有人可以咨询,路只能一点点走出来了
    lights
        73
    lights   83 天前
    @frankmdong #59
    博客内容很充实,收藏到我的 Kanban 里了,感谢分享
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1178 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 19:53 · PVG 03:53 · LAX 11:53 · JFK 14:53
    ♥ Do have faith in what you're doing.