香雨站

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 104|回复: 12

游戏开发血泪史-来入门了

[复制链接]

2

主题

3

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2023-2-12 19:30:26 | 显示全部楼层 |阅读模式
首先说一下写这系列文章的初衷
本人大学所学专业为知乎劝退专业,机械工程,大三机缘巧合接触了Unity引擎,校招也决定转行进入游戏行业做一枚游戏开发狗(不过校招的时候学艺不精,进了一家普通的游戏公司,不像各路知乎牛客大神一样大厂offer拿到手软)。工作后一直都有不断学习积累,第一份工作一年半后社招进入网易游戏做客户端开发。最近因为个人原因最近打算换工作了(至此工作经验已有三年左右,满足大部分公司高级工程师的年限要求了),由于考虑在广深发展,且提前做了一些筛选,只面了阿里游戏、库洛游戏以及腾讯游戏,好在运气不错 都顺利拿到了offer,中间也积累了不少面试经验,现在正好处在换工作的过渡期,就写写自己的经历吧,给各位想进入游戏行业或者正在换工作的童鞋们一个小小的参考。
这篇文章主要是讲一下自己入行的过程以及小白入门的经验分享包括学习指引,书籍推荐等等,后面还会继续分享一下面试的经验(校招、社招),常考的问题以及游戏开发进阶的内容,感兴趣的可以持续关注哦(PS:我是游戏客户端开发)。
本人面试经验如下:
与游戏开发结缘
前面说了我本科学的机械工程,大三加入了学校的机器人实验室,不过我机械学的很差,工图60分的水平,所以没有加入机械组,而是选择了电控组,慢慢接触了编程,后续因为一些机器人仿真模拟相关的项目机缘巧合地学习了Unity,当时也是觉得这玩意比较有趣,简简单单的就能模拟机器人的运行,像游戏一样还挺好玩,其实完全没考虑过发展成未来的职业。但是临近校招了解了一下机械行业的薪资情况,好家伙,一顿乱学猛如虎,好歹也是985,工资就给3500?(薪资使用了夸张的修辞手法,不过确实比较低。机械或者说大部分传统工科专业的同学应该深有体会,学习的内容非常杂乱,但是都是浅尝辄止,学完以后还是啥也不会,最后毕业以后工资被计算机的同学吊打)。我也是俗人一个,决定向money看好了,但是编程基础太差了,好在Unity开发也算是软件开发的一种了,当时没想那么多,直接下定决心转行做游戏开发,就这样一只游戏开发狗诞生了。
0基础开始的学习路线
和很多非科班转行直接接触Unity的同学一样,刚开始我也是兴致勃勃,做着自己简单的demo,就想着以后开发一款自己的游戏,吊打王者荣耀,迎娶白富美,走上人生巅峰,然而现实不只是骨感,更是凄凉。


自己的demo内容多起来后,就发现照着网上抄的代码其实自己完全不理解,语言的语法也不懂,想实现一些新的功能完全无解,但当时还觉得只是自己不够熟练,壮着胆子去找实习,面试完全被虐惨,直接被怼你啥也不会啊,回去巩固一下基础吧,现在想想还得感谢当时的面试官指出了我最大的问题。
面试回来以后,逐渐走上正轨,上网找了计算机专业的书单开始学,话不多说,下面分享一下自己的学习经验吧,仅供各位参考。
首先计算机专业的必修课还是比较多的,作为时间紧迫的转行狗,完全兼顾的难度较大,根据重要性以及短期内面向面试学习的理念,我的学习路线如下:

1)C++

C艹永远的神,重要性不言而已,不管面试是什么方向的,这玩意基本少不了,而且学会C++再学其他的语言简单的不只一点点。
推荐书籍:
《Primer c++》
入门必看,但是不要局限于此,我的做法是先按照书本的结构了解C++有哪些概念,然后一些复杂的概念通过关键字去百度谷歌或知乎进行检索,很多概念书本上讲的比较粗略晦涩不利于初学者理解,而网上很多大佬写的文章都比较详细,最重要的是通俗易懂。
《STL源码剖析》
进阶学习,当你学完C++的STL部分后,就可以开始看这本书了,里面讲了C++常用容器底层数据结构的实现原理,可以帮助你深刻的理解STL中的各种容器,迭代器以及算法,而且面试时了解这些内容非常加分哦。
2)数据结构与算法

个人感觉数据结构是软件开发的灵魂了,刚开始学的时候完全不知道这sb玩意有啥用,代码也看不懂,因为对于初学者来说确实比较复杂,所以建议学习之前先了解一下这门学科的作用再具体开始学习。这里粗略讲一下自己的理解:
首先不管多复杂的系统设计,究其底层,其实还是数据的组织方式及其增删查改,那怎么设计这些数据组织方式可以减少内存占用,怎么用较快的时间来增加删除或者查询数据呢?不要被五花八门的数据结构的名词吓到,它们就是为解决上面说的问题诞生的。想象一下,打开一个游戏,游戏内部随便查询一点数据就是几分钟,随便打开一个界面就占用了几百兆内存,你还怎么玩,直接就卸载了。
推荐书籍
《大话数据结构》
推荐链接:
一个动画形式的数据结构讲解,比较生动形象
排序算法总结
3)计算机网络

单机游戏虽好,毕竟一个人玩起来毕竟有点太孤独,联网游戏来一发吧,怎么来,三次握手都不知道?不好意思,看一看计算机网络吧,不然女朋友都找不到。
推荐书籍:
《计算机网络》
推荐链接:
4)设计模式

有一定代码量的同学一定知道设计模式的重要性,不过这里还是简单介绍一下,刚开始搞软件开发时大家的代码都是随性而为,项目小的时候没啥问题,功能模块一多,代码量一大之后,问题慢慢就暴露了,可读性、可扩展性以及可维护性极差,多人合作时更是灾难(shit山就是这么来的吧)。设计模式就是为了解决上述问题而来的,教你怎么将代码设计的更优雅更有结构性与框架性,一说到设计模式很多人一上来就是讲几种具体的设计模式,但是我们首先需要了解设计模式是有个基础的分类的。
设计模式分类

  • 创建型模式
  • 结构型模式
  • 行为型模式
创建型模式是处理对象创建的设计模式,试图根据实际情况使用合适的方式创建对象,大致分为以下几种:

  • 简单工厂模式
  • 工厂方法模式
  • 抽象工厂模式
  • 生成器模式
  • 原型模式
  • 单例模式
结构型设计模式关注实体之间如何互相使用, 可以概括为“如何构建软件的结构”,大致分为以下几种:

  • 适配器模式
  • 桥接模式
  • 组合模式
  • 装饰模式
  • 外观模式
  • 享元模式
  • 代理模式
行为型设计模式关心对象之间的责任分配。与结构型设计模式不同的是,行为型设计模式不仅仅指定结构,而且还概述了它们之间的消息传递/通信的模式,是用来识别对象之间的常用交流模式并加以实现,可以概括为“软件是如何运行的”,大致分为以下几种:

  • 命令模式
  • 迭代器模式
  • 中介者模式
  • 观察者模式
  • 策略模式
  • 状态模式
  • 模板方法模式
推荐链接:
5)游戏引擎

毕竟咱们是做游戏开发,游戏引擎还是需要了解的,常用的商业引擎有Unity ,UE4(现在UE5也出了),cocos,同时了解一下游戏开发有哪些具体的内容,从上帝视角来看问题,逐个击破。
推荐书籍
《游戏引擎架构》
这本书的内容不算复杂,很多是对游戏开发具体技术的科普性内容,没有深入展开,看书的过程中可以把自己感兴趣的内容(比如渲染、动画、物理、寻路这些)标记下来深入学习。
6)计算机图形学

游戏开发进阶内容,说白了就是计算机渲染(画画)的流程,刚开始建议不要过度关注图形API(OpenGL DX这些),先了解具体的原理。
推荐书籍:
《unity shader入门精要》
这本书的内容相对基础,但是作为入门还是非常好的,知乎上经常推荐一下英文原著,但是大佬毕竟是少数人,对于小白而言,个人觉得难度太大,最好循序渐进。
推荐链接:

上面只是列举了对游戏开发而已相对比较重要的几门学科,像操作系统、计算机组成原理、数据库这些当然也很重要,但是篇幅有限,关于这些内容这里不详细展开(真的太多了),具体内容我还会写几篇文章。
<hr/>一点自己的看法
1)认清自己的能力,脚踏实地
这点内容主要是针对准备时间较短的转行选手,计算机科班大佬可以忽略哈。找工作时眼里不要只有大厂,要先了解自己的实力,如果时间充裕,或者学习速度很快可以专注向大厂奋进,但是如果不满足上述条件其实曲线救国也未尝不可,可以选择一些中小游戏公司,像我一样社招进腾讯网易等大厂的老铁还是很多的。
公司推荐:
2)学习要有深度
不论是面试也好,还是今后的工作也好,知识的深度非常重要,既要只其然也要只其所以然,做游戏不要停留在demo或者插件的堆砌上面。很多人(包括从前的我)都有一个花里胡哨的游戏demo,里面插件一大堆,但是随便问他某些功能大概的实现原理,完全答不上来,脱离插件文档就没法做事了,其实很多插件的源码都是开放的,很多功能的原理网上也有资料,自己看一看总结一下帮助非常大。
从面试的角度来说,面试官经常会就一个知识点问到底,就工作的角度而言,很多知识你需要了解底层实现才能进行改进、性能优化甚至是重构等等,如果你只知道怎么使用或者只有大概的了解完全没有竞争力而且很难得到提升。
3)及时记录知识,好记性不如烂笔头(当然现在都用键盘了)
人脑虽然不像鱼一样只有7秒的记忆,但也不像硬盘一样能长期存储,所以学过的知识需要及时记录,云笔记的软件太多了,找一个自己喜欢的,分类记录,方便后续知识的复盘,面试啥的也能拿出来复习,非常有用。



我的笔记示例

4)主观能动性
这点主要针对刚入行的社会人士,当你加入一个正式的游戏项目后,项目代码就是一个宝库,很多公司都有一套祖传的代码框架,一般情况下你的项目也是这个情况,所以常有的游戏模块的实现其实里面都有了,不要只关注自己做的一亩三分地,多看看大佬写的代码,假设自己就是主程(现在不想,难道真以为以后工作时间长了就轮到你了吗),针对每个具体的功能模块先了解这个模块是啥,直接根据关键字上网检索。举个例子,有个类叫ResourceMgr,一看就知道是资源管理,刚开始你可能看不懂具体的代码,那就先知乎搜索一下Unity资源管理看看别人的解析思路,大部分游戏模块的实现思路都是换汤不换药的,或者就那么几种解决方案,运气好你甚至会发现网上的代码和你项目的代码一模一样(CTRL+C CTRL+V了解一下),就这样一点点积累总结,可能某一天某个大佬离职了,你挺身而出,这个模块我会,后续你懂的,毕竟机会是留给有准备的人的。
这里引用一下我之前公司leader的回答:
<hr/>作为开篇,这篇文章内容不多,主要是给大家分享一下自己的入行学习经验,写完这篇文章就搬砖去了,最后,都看到这里了,不要吝惜你的赞哦,哈哈。各位下篇文章再见吧。
回复

使用道具 举报

0

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2023-2-12 19:30:33 | 显示全部楼层
干货满满,对游戏开发很有帮助
回复

使用道具 举报

0

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2023-2-12 19:30:57 | 显示全部楼层
好家伙 竟然是华工的[doge]
回复

使用道具 举报

1

主题

4

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2023-2-12 19:31:19 | 显示全部楼层
校友吗
回复

使用道具 举报

3

主题

5

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2023-2-12 19:31:25 | 显示全部楼层
大佬,没有项目经验也能过吗
回复

使用道具 举报

0

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2023-2-12 19:32:21 | 显示全部楼层
还没毕业的话校招或实习还是可以的,但是社招不太行
回复

使用道具 举报

3

主题

4

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2023-2-12 19:33:20 | 显示全部楼层
噢,明白了,明年毕业,现在准备照着您那篇Unity学习指南及新手误区学习。
回复

使用道具 举报

2

主题

4

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2023-2-12 19:34:12 | 显示全部楼层
[机智][机智]加油,老弟
回复

使用道具 举报

1

主题

7

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2023-2-12 19:34:52 | 显示全部楼层
说真的这不是unity入门,这个是计科生入门,一上来就往底层干,0基础按这个路线学估计还没入门就放弃了。。。
回复

使用道具 举报

0

主题

5

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2023-2-12 19:35:46 | 显示全部楼层
但是进大厂这些肯定是必会的啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|香雨站

GMT+8, 2025-3-15 05:02 , Processed in 0.582227 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.. 技术支持 by 巅峰设计

快速回复 返回顶部 返回列表