找回密码
 立即注册
查看: 839|回复: 20

想要找到一份游戏开发的工作,Demo需要制作到什么程度才可以?

[复制链接]
发表于 2021-10-3 12:46 | 显示全部楼层 |阅读模式
普通二本的电子信息工程专业,现在大三,学习Unity可能半年多一点了,平常经常自己制作一些游戏的Demo。
平常制作的Demo都放在了Github上:H0nok4/Unity-Training
起初一开始是跟着网上的教程学着做,一步一步得把视频里的代码什么的打一遍,然后测试效果。后来现在慢慢有了基本功,开始挑着自己玩过的游戏,在Unity里面尝试着实现里面的功能。
尝试性的去找过俩次实习,第一次是大三上的时候找了家比较小的公司,当时我也只是学了点三脚猫功夫就去面试了,效果挺不理想的,面完让我回去等消息就没了,回来也挺懊悔当时面试的时候糟糕的表现。
然后回来又学了一段时间,今年春招的时候收到了腾讯的面试邀请,面了一面挂了。面试前也想着就是积累一点面试经验,不过在开始介绍做的项目的时候(项目里一个模仿暗黑地牢的Demo),面试官听了我说了一会就反问我这个Demo里面有什么高技术力的东西。
然后我才发现自己平常做的Demo里好像真的没有涉及到什么高技术力的东西,平时能够自己思考然后实现一个功能的时候感觉就已经很不容易了,对于高技术力背后代表的含义好像真的没有去仔细想过。
Demo里复杂一点的好像也就是一个随机地图生成的算法,但是也算不上有技术,就是单纯的随机方向生成房间走廊,最后剪枝删掉多余的房间走廊而已。
面试结束后我就换了一个Demo做,想要换点比之前技术力高的东西做。于是选择了战棋SRPG这一个类别,因为可以涉及到AI寻路,AI行为方向,期间边看书边做了可能一个多月,才把战斗系统做了个简陋的模子出来。
但是现在又开始害怕:A*寻路是不是也有点基础?
自己写的基于状态机的AI是不是现在已经被淘汰了,是不是需要该换成行为树?
正常的SRPG的道具是怎么实现的?(目前困扰的一个问题,我自己现在的想法是使用一个道具的纯虚类,定义一个虚函数Execute(),然后每个道具都建一个类然后继承重写然后使用的时候调用Excute()实现不同的效果。但是又担心这种方式来实现会不会太过笨拙,每个道具都需要新建一个类。又或者是只用一个道具类,然后在静态字典里定义一些匿名委托绑定在物品上来实现不同的道具效果,但是这样子对内存的开销会不会太大。)
现在就是经常害怕自己学的东西满足不了到时候找工作的要求,觉得学了这么长时间好像都只是在原地踏步,原本计划是能够在暑假的时候找到个游戏开发/客户端方向的实习,但是越来越对自己没有自信了。想知道找一份游戏开发或者客户端方向的实习或者工作,Demo上需要钻研到什么地步才有机会,又或是需要点亮多少技能树才能达标。
(算法和数据结构平常一直有在Leetcode上练习,开始的时候想着快速入门C#就是靠天天大量地刷题。基础的数据结构例如链表,队列,栈等运用的还算熟练,算法的话在动态规划方面还是不太行,周赛一般能做出俩题~三题。)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-10-3 12:53 | 显示全部楼层
非大厂,独立游戏工作室看过很多求职者给的demo。
我觉得常看到的问题是很多求职者喜欢在demo秀技术。但是其实这些技术多半不值一提,方向错误,多此一举,或者看不太出来有啥技术。这种技术大部分工作中用不到。反而我会害怕,这种过于喜欢技术的人,想要做个简单功能的时候会很难沟通,牛皮吹半天。好的游戏程序不会为了技术而去做功能的。
我个人比较喜欢的demo是完成度高“能玩”的游戏demo,什么叫“能玩”,就是这个游戏再简单都可以,但是有一定的完成度。比如有个像样的主界面,场景间的切换有过渡,游戏有美工,有UI,有音效,并且都是用心找的,而不是乱放的。各种细节都有一定美化,玩家能理解,玩法就算简单但是也是成熟有趣。给一个玩家,会愿意收藏下这个游戏。
我们经常给一些还没有做过demo的实习学生推荐一个游戏《皮卡丘打排球》  画面超级简单,没什么所谓的技术,但是各种细节令人舒服,是个好游戏。
好好的研究这个游戏的细节,手感,扣杀触发条件和组合,球的飞行逻辑,等等。各种细节会让你会发现这是个简约但不简单的游戏。单人AI陪玩模式,对战模式。主界面如果停留时间久了,还会开始自动AI对战,等等。
皮卡丘打排球 (gorisanson.github.io)
换个题材,手感做到一模一样,做个类似的游戏,用现在的技术渲染,比如改成Spine动画的灵梦打排球,就会是个不错的demo。甚至可以直接拿去卖钱。
但其实,据我观察,能认真做好一个皮卡丘打排球的人其实并不多。尽管一堆人往往摆出看不起这个小游戏的态度。
发表于 2021-10-3 13:00 | 显示全部楼层
这个普通二本和电子信息专业信息,我严重怀疑你是我的校友
Demo来说主要是看你游戏开发想要专研的工种,有做游戏逻辑的,有写渲染的,有做游戏玩法,也有服务器向的,也有专门精通算法的。
你究竟最后想做什么呢?
对于一般公司来说,说的不好听的,能写界面功能逻辑就可以上流水线了,而且会很长一段时间都在做界面的功能逻辑。而这块逻辑需求只要UI,动画,设计模式了解就可以入门(但是也不要小看引擎的UI和动画模块,经验的差距对于产品的质量非常的显而易见),所以制约你入行的应该不会是你无法胜任的问题。
那么对于新人,公司的面试者看什么呢?
潜力!
你自己的学习能力,你钻研新东西的能力,你独立解决问题的能力,你对自己前方道路的洞察能力,把这些统统表现出来吧
任何的游戏Demo,只要你想要做到极致,就需要攻关一个又一个的问题,做到90%不难,难得是最后到达极致的那个点,能做到这个你的Demo必定是能够让人看的进去的,你的产品有自己的亮点了!
再围绕着你解决难点的经过去阐述如何独立解决的,让他人了解到你的学习能力,和思维方式,相信我,带着自信去述说自己克服的难题,这样面试者会更容易被你打动的。
嗯,最后祝你好运~年轻的程序员
发表于 2021-10-3 13:02 | 显示全部楼层
leetcode刷到这个程度,已经超过大部分毕业生了。
看了你的demo,总的来说,卖相不好。你可能是在展示你学习的过程,但是我更希望看到一个还不错的demo,画面美观,有直观的玩法,最好有一些巧妙的设计,不需要很复杂,但是整个demo力求完整。现在的几个demo,有的打开之后无法运行,有的不明所以,要么就是那种小游戏,网上教程一大堆。稍微能看的那个枪战,进去之后只有自己端着枪在一个场景里走。如果做demo展示的话,要么很完整的demo,随便拉个人来都知道怎么玩,要么录一段视频,展示做了哪些系统,它是如何运作的。
即使是在商业项目里,复杂的技术也是有限的,如其他答主所说,能写界面逻辑愿意加班就可以上流水线,正经项目所用到的解决方案也都是成熟技术的落地,这些方案具体的每个模块都有资料,但是很少有人写这些模块是如何整合的,也不期望大学生会写出成熟的项目代码来。
校招生看潜力,具体有几个方面:算法,设计模式,思考问题的思路。算法你在刷题,这很好,展示你的刷题成果可能比你的demo更有吸引力,当面写一道动态规划可以打动很多面试官。设计模式比较玄学,代码写多了自然会有些感受,还有一些基础原理,常用数据结构,gc各种面试资料都有写。
对于demo,首先要拿得出手,这是展示你的能力,而不是艰苦学习过程。asset store上有很多现成的素材,场景地图角色都有,挑个好看的场景和角色,谁不爱美呢。demo不需要复杂,但是力求完整,至少单一的模块要做完整。比如你做个背包,数据结构的设计,渲染的注意事项,大量cell的滚动复用,mesh重建和dc的开销,draw call是如何产生的,合批是怎么回事;抑或是角色的动作控制,animator状态机的层次划分,动作融合是怎么回事,不同模型之间如何复用动作。这些都有很成熟的文章介绍,你把某个模块做好了,比你这做一点那做一点,demo粗糙的不行,完全没有继续了解的欲望。你把demo做好看的过程,自然会发现很多有意思也有深度的问题。
把某个技能点点满,比每个技能点点一点要好得多。游戏开发知识庞杂,一两年点亮一大堆技能树不现实,不如点亮一棵树,让人看到你点亮其他树的能力。
发表于 2021-10-3 13:11 | 显示全部楼层
想找到一份游戏开发的工作,基于现有情况:无论是从前段时间很火的“应届生毕业期望薪资”来看,还是从目前游戏行业的从业人员的目标来看,大多数同学还是会选择去到国内第一梯队的公司。
因此以下回答会更倾向于如何进入第一梯队的游戏大厂。当然,作为一个游戏开发同学,要以高标准要求自己这母庸置疑,因此技能培养和职业规划显得尤为重要。那么当你的培养好自己的专业技能后,如何找到一份游戏开发的工作呢?先从客户端研发岗位要求说起,点开游戏大厂的应聘要求,每一项都简洁明了。


应届生为了通过笔试,需要提前刷算法题。为了通过第一次面试,需要提前巩固计算机基础知识、编程语言以及图形学基本概念。最后一点可能很多应届生都忽略了,大家平时埋头研究技术可能忽略了交流的重要性,在交流时只管表达自己的想法,或者表达时只词片语构成不了一句完整逻辑的话,所以面试前得预演一下,清晰明了地表达和交流很重要。
第二面开始会倾向于项目问答。项目能够充分体现应届生的实践能力、综合分析能力、学习能力等等。客户端研发细分很多,比如玩法、比如界面、比如引擎等,游戏demo的类型也离不开这几类。游戏demo实现最基本的功能之后,面试官想要看到应届生做出了什么样的思考,能否和一般人拉开距离,具体途径和结果可以是高深的技术,也可以是费劲心思做出的巧妙的设计,也可以是系统足够复杂到一般人完成不了。举个例子,就比如题主说自己写过随机地图生成,这个生成只是路径,一般人都可以完成,那么衍生到随机生成场景呢,题主只要做出尝试,面试官也会高看一线。面试官都喜欢专业对口,能直接干活或者后劲足的选手。
最后题主关于点亮技能树的问题,单说图形学这棵树可点亮的太多了。说起来,现在手撸渲染引擎demo的应届生越来越少了,有兴趣可以试试用自己的引擎做个小游戏,会极大降低门槛,而且对掌握图形学知识也很有帮助。
怀着想做好游戏的初衷而不断思考学习,找到好工作是水到渠成的事情,共勉。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-10-3 13:14 | 显示全部楼层
不同时代市场的需求不尽相同,比如答主,2013年在cocos2d-x大火的时候,利用业余时间照着开源项目抄了一个雷电射击的小游戏就进入一家初创游戏公司了=。=!
现在由于行业的内卷化,对待新入行的小伙伴会有着更高的要求和标准。
游戏开发无非就gameplay、shading、ai、toolchain这几块。个人觉得,现在市面上Unity的项目教程这么多,你照着写两个游戏demo就足够了。但是需要真正的融汇贯通其中的原理,比如你面试的公司需要做的游戏和你做的demo类型不同,但是你能说上来怎么设计玩法架构、组织资源管理,其实也就差不多了。
去一些大一点的游戏公司,更多地还是考察你的编程基础潜力态度。数据结构、算法、C#这些,多准备准备面经,再通过面经里学到的知识和你做的Demo相结合起来,比如某个逻辑用到了排序算法,你是怎么优化将时间复杂度降到O(logN)的。这些都会成为你向面试官展现的亮点。
最后总结就是:夯实编程基础,与实际Demo相结合,做到真正的明白为什么面试都要问那些问题,相信一定会找到自己心仪的工作的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-10-3 13:21 | 显示全部楼层
题主做这些证明还是喜欢游戏的,觉得是挺赞的,比没做过游戏仅刷过题的人好多了。不过的确也是要注意一点技术力,我和我周围同学当时简历的情况大概可以给你做点参考(假设题主偏客户端方向,TA是另外的,引擎可以部分参考)。
首先Demo功能玩法这些肯定也是有的(有人会有腾讯/网易高校游戏制作大赛、或者game jam各种开发活动经历,当然不比赛我觉得也完全可以,自己做也完全能证明)。
然后图形、网络同步、物理、语言深入理解(比如我自己的简历包含lua编译器虚拟机)这些我感觉至少是要有一两点深入的(即便只是gameplay开发最基本的图形学也是需要的,有回答提到不涉及,这个要看情况,的确有的公司/项目组进去了半年一年都在干一小块,但也有可能项目中有的游戏客户端要涉及各种),这几点技术是我周围入职的同学至少都有两点(有的更多)深入的(或者某一项真的专精,比如我周围有人撸了个物理引擎,从碰撞到碰撞生成,现在在微信做小游戏物理方面)。
或者其它的技术点你能想到的话,比如涉及随机地图算法你或许可以提程序化生成(这个应届生的确不容易了解到,但大家就是更喜欢视野更敏锐的人),ai、寻路其实也可以深挖,导航网格具体的生成过程、Recast中间件(这个应届生同样也不容易),仅仅只有A*、甚至行为树都有点基础,3d游戏可以提角色的行动能力、动作、ik各种(程序单人solo作品一般的确,某些问题就回避了233)。
刷题算法这些想进大厂的同学其实都没问题,然后还要注意面试题(的确有些部分可能有点应试,有人被坑到)、面试准备。
<hr/>以上是从技术力更直观的方面出发回复,每一块都是可以研究很久很久,也看到有前辈从游戏品类出发思考,我这边也举个例子,比如像巫师3这种重剧情的游戏,它也有它的难点:GDC2016,巫师3的电影级对话系统,从业18年老兵分享:这个疯狂烧钱的美术环节,如何少走五年弯路?。当然我觉得品类相关有些是需要放在工业环境下才更方便想通的,不过,说不定也可以是条路。
发表于 2021-10-3 13:30 | 显示全部楼层
问我这个Demo里面有什么高技术力的东西。
然后我才发现自己平常做的Demo里好像真的没有涉及到什么高技术力的东西,平时能够自己思考然后实现一个功能的时候感觉就已经很不容易了,对于高技术力背后代表的含义好像真的没有去仔细想过。
这说明什么?这可以说明2点——第一是你初生之犊不怕虎,甚至不知道darkest dungeon最难做的地方在哪儿;第二是你错误地把知识理解为难度,而难度本质在于智慧,写代码不需要智慧,但是编程需要。我详细给你分析分析:
为什么说你没理解暗黑地牢最难的地方,这道理很简单,用unity凑效果做个demo的人,我见过太多了,尤其是年轻的孩子,应届生到工作不满10年的小孩都有这种的——找几个Unity看起来好用的插件,凑出和目标游戏看起来差不多的视觉效果,包括:画面——无非就是用了原来游戏的图片;流程——用Tween等简单的模拟出了游戏的效果。做到这里,都认为可以了,游戏做出来了。游戏做出来了吗?没有,甚至都没开始做。暗黑地牢的技术难度在于哪儿?我挨个问你几个问题:
    在你的游戏里新加入一个职业,这个职业技能甚至是玩家自己设计的,你能做到吗?增加连携技,这在暗黑地牢里也是没有的,就比如我A职业和B职业同时攻击,攻击之后C角色还能补刀,这算发起者A的行动。你容易做到吗?(不光是逻辑,还有画面表现,因此你的画面表现在不受你控制的情况下能做出来吗?)职业之间追加新的搭配,比如最简单的A职业可以割裂目标,B职业对割裂的目标必爆,C职业攻击被暴击过的目标能回血;然后D职业士气在第一条的时候还能护卫血少并且士气低于自己的友军,这些你都能轻易做到吗?游戏里的随机事件你能做更多吗?比如在ABC三个房间分别开启开关,就能打开一条通向隐藏房间的路?
类似这样的问题还有很多很多,他不应该由我给你提出,而是你自己思考想出来的才对;更不应该是我提出以后,你想办法凑我说的效果,然后说这不难实现(if else凑个效果谁不会呢?)——游戏开发,一切技术难度仅仅在于这里——你能想到尽可能多的玩法扩展,并且打一开始就做好。而你目前扭曲的理解是——技术难度是因为难以实现。但是说实话,写代码没什么难度,包括你想知道的所有算法,哪怕你觉得深不可测的shader,都能在github上找到结果,因为这些都是【知识】,知识放在那里,学了就会;而我上面让你考虑的这些,是智慧,你看你就没能想到这些,为什么我就想到了呢?
其实你自己也不是没有遇到技术问题,你的后半段问题也问了:
正常的SRPG的道具是怎么实现的?(目前困扰的一个问题,我自己现在的想法是使用一个道具的纯虚类,定义一个虚函数Execute(),然后每个道具都建一个类然后继承重写然后使用的时候调用Excute()实现不同的效果。但是又担心这种方式来实现会不会太过笨拙,每个道具都需要新建一个类。又或者是只用一个道具类,然后在静态字典里定义一些匿名委托绑定在物品上来实现不同的道具效果,但是这样子对内存的开销会不会太大。)
是啊,怎么高效的实现呢?但是你问这个的时候并没有意识自己对问题的理解是存在偏差的——你觉得coding的方式是这个问题的难点,做一个道具使用本身没什么牛逼的。但事实恰好相反,coding是最简单的——游戏,不过就是一系列逻辑(游戏玩法,system)去改变数据(component,游戏中的元素,如角色、道具等)而已(也因此ECS才是最适合游戏逻辑开发的),所以道具根本就不是一个class,甚至在你unity里,角色、道具之类都是struct。这个问题的根本难度,不是策划想到一个道具效果,你就去coding一个道具效果,而是你写的框架,尽可能的让策划自己都能去轻而易举的coding的道具效果,不受到任何你的约束。
假如你的下一个面试官问你:做一个战棋SLG,难度在哪儿?你应该告诉他“是寻路和道具”吗?不是的,SLG显示角色能走哪儿的无非是dijkstra,角色移动自动选择路径无非是dijkstra的升级版AStar,也就是你在琢磨的东西(顺带一提,你试试看做一个带传送门的地图用Astar寻路,尽管这根本没有难度,但是如果你领悟不到一些现在绝大多数AStar教程里的问题,那可就不妙了)。做一个SLG有啥值得思考的呢?
战棋类游戏核心玩法框架设计所以你根本的问题在哪儿?是在于心态——你以为做个demo就能找到工作,但实际上你做demo根本就不是为了做游戏,心术就不正(这问题我也说过群里一个网易的98年的娃娃),因为你的目标不是做游戏,所以你看不到一个游戏中真正有技术含量的东西;你认为会一点网上一找就能找到的知识就可以比别人优秀了,这也是心术不正,编程和做任何事情都一样,知识面上没什么了不起的,能让你找到的知识,别人也会轻易找到。而重要的是智慧,怎么产生智慧?就是你钻进去深入思考,结合不断思考实践的经验,以及与人交流获得经验,分析改进,从而领悟的更好的更全面的解决方案叫做智慧。
光靠学点知识,在工作中能起到的作用很小,实际工作中最核心的是智慧。
发表于 2021-10-3 13:33 | 显示全部楼层
面试官可能只是想拒你,又不好直说你学历不行,只能随便找个借口。毕竟你去面客户端的找你要什么高技术力。
客户端、玩法逻辑层面,如果说有亮点,要么就是讲究巧思,四两拨千斤,也称不上什么高技术力;要么就是刚正面,规规矩矩,堆人堆资源的复杂系统,你单枪匹马也做不成。
想要“技术力”,还得往底层走。越底层越容易出所谓“技术力”,就看你是不是愿意搞。
这个圈子的学历鄙视和学历光环现象挺严重的,C9光环真能吃一辈子。特别是大厂不差人,一本都挑不过来,二本的只要不是特别耀眼,可想而知。
另一方面,如果你有过人的执着,非游戏不可,那么退而求其次,先去小厂历练一番吧。不必一上来就执着大厂光环,其实除了薪水别的都差不多的。
记着,二本被大厂刷掉,很可能不是你比别人差,而是你比别人优秀的还不够。
发表于 2021-10-3 13:35 | 显示全部楼层
别人怎么实现道具/技能的我不太清楚,但你说的用继承类并各自实现Execute是可行的,这就是标准的面向对象编程思路,优点就是代码写起来很简单,加一个东西就写一个类,缺点就是扩展很麻烦,对策划和mod制作很不友好。比如Minecraft的mod其实都是改的源码。
所以产生了面向数据编程的思路,程序做好代码框架,代码运行需要的变量、参数、事件的调用回调都写在外部文件里,这样策划和mod作者们编新技能新物品时,只要按照规范填数据就行。缺点也很明显,一旦现有框架没法实现目标功能,框架就得大改,并且极有可能不兼容原有技能/物品的数据结构。
新人建议还是老老实实用前者,简单方便,而且你也没有合作对象,不必考虑mod制作。实在想学习后者,可以搜索下Dota2的技能实现原理,你可以从它的示例里一窥面向数据编程的奥秘。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 19:07 , Processed in 0.094615 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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