找回密码
 立即注册
查看: 900|回复: 13

做unity游戏开发算法数据结构和图形学shader哪个学习的优先级高呢?

[复制链接]
发表于 2021-4-20 09:44 | 显示全部楼层 |阅读模式
做unity游戏开发算法数据结构和图形学shader哪个学习的优先级高呢?
发表于 2021-4-20 09:45 | 显示全部楼层
其实看你要针对哪个工作岗位了,虽然图形程序员和TA非常稀有和珍贵,但是开发一个游戏的主要工作量都是在解决实际功能的问题上,工程经验同样很重要,所以上手开发一个应用了多个引擎功能点的游戏demo,是很不错的学习方法,实际开发对技术的要求,就会引领你上手了。
比如,我觉得unity很重要的功能是:动画状态机的使用,动画状态和脚本的回调打断等实现,IK功能的使用,粒子系统的使用,物理引擎的各种应用,了解unity内存管理和性能优化,还有掌握一些提高工作效率的工具,例如Bolt、Timeline等,这些是保证一个游戏能完成的基础。
然后,图形学,算法,数据结构,线性代数的几何意义等都是基础知识,可以在业余时间逐步了解,不用非得精通了才上手做开发,因为不是从游戏渲染引擎开始写起的。
会做shader显得很高大上,其实这都是局外人的观点,在我们团队内部,通过内部分享shader开发知识,几次课程就能让绝大多数人(非程序员),都能利用节点式工具制作炫酷的shader,这也满足了足够多的使用场景,所以做游戏是一项系统工程,炫技只会徒增项目失败的风险。
最后,如果是以找工作为目的,一个经验简陋的图形程序员,是基本没有饭吃的,少一个炫酷的图形技术并不会让游戏失去竞争力,反而快速高效可靠的完成项目,才是绝大多数公司的需求。祝你学习顺利!
发表于 2021-4-20 09:51 | 显示全部楼层
如果以找工作为目的的话,最重要的是独立制作出能够展现你个人水平的作品。在制作作品的过程当中,你自己就能够领会哪些是首先需要了解的,哪些可以放到以后再慢慢深化。
作品完成之后,将你的简历、作品以及制作作品时的过程、心得体会一起发给用人单位。只要是真用心的作品,相信会有单位联系你的。
发表于 2021-4-20 09:55 | 显示全部楼层
主流商业游戏的话基本上一个都用不到。 等你做到主程了 接触到优化的时候数据结构和算法会很有帮助。

到大项目里 图形学和shader才用得上。

一般进商业公司也就是摆摆ui 写点界面逻辑什么的。最多再拜拜场景 写点逻辑。 偶尔用下shader
发表于 2021-4-20 10:01 | 显示全部楼层
喜欢什么就去做什么,因为这样比较带感。每天都有激情。不过图形学不等于shader,图形学也不代表游戏图形。游戏实时图形里面更讲技巧,而且手机Foward渲染和PC上deferred渲染也算大的不同分支吧。如果你完全看不懂某些东西,就是你需要理论支持了,带着问题去看书比较有目标一点。
还有网游界绝大部分是做逻辑ui类的工作,边工作边学习边等机会吧。unity有asset store,  几乎有你所有想要的东西。你可能发现写的那么好的shader 框架,居然是免费的,比如Lux
发表于 2021-4-20 10:02 | 显示全部楼层
开发游戏还是以算法数据结构为优先选择进行提升吧,毕竟图形学也是需要涉及到相关算法和数据结构的,就目前的情况前端工程师更多的是在处理复杂的游戏逻辑,这方面的提升可以让你更好的开展工作,而且基础部分学好了,学什么技术只不过是方向选择而已。
发表于 2021-4-20 10:07 | 显示全部楼层
先用什么先学什么。。。
发表于 2021-4-20 10:12 | 显示全部楼层
手游的话需要写复杂渲染shader的机会不多,珍惜每一次。写点流光,溶解,遮挡高亮半透,景深,速度线啥效果就差不多了。算法数据结构主要看设计需求了。
发表于 2021-4-20 10:17 | 显示全部楼层
数据结构是基础!数据结构是基础!数据结构是基础!


虽然我也很喜欢写shader,但是到目前为止,我觉得,就我现在公司,写shader只是加分项。


第一,能写出超屌shader的人,数学和程序的基本功不会差的。
第二,公司(特别是创业团队)写shader的人一般还兼顾着其它事情,最屌的一些公司有技术美术了。


如果你感兴趣,等会可以说一下游戏中和数据结构相关的东西。
发表于 2021-4-20 10:26 | 显示全部楼层
在学习Unity之前,你至少应该知道一些基本概念:
-算法:无论你使用哪种语言,你都需要清楚地找到解决问题的方法。尤其是如果你在做游戏,你将会遇到很多资源问题,并且管理它们需要一些算法(例如,来自枪的子弹需要用对象池来管理,对象池本身就是一个有趣的算法练习)
-空间几何:你做3D游戏?你会喜欢四元数和向量的!你需要适应许多几何概念,以便理解在你的游戏世界空间里发生了什么。什么是正常的?什么是正向向量?为什么我们首先使用四元数?如何利用欧拉角进行旋转?当然,Unity会让事情对你来说更容易,这并不意味着它会管理一切。  
-面向对象编程:如果你想编写优化和清晰的代码,你应该先掌握这些概念。Unity是一个很好的游戏引擎,但是它允许您做非常难看的东西(例如,MonoBehavior的Invoke()函数在内部使用反射,这在很多OOP中是不会被允许的),过度使用更新也是一种错误的做法,可以通过适当的设计模式来纠正。
-数据结构:MonoBehavior并不鼓励(主要是因为它非常容易使用),但是拥有具有对象之间清晰通信的适当数据结构,将真正地清理体系结构并帮助调试过程。我特别讨厌的一种方法是Broadcast方法,为最终调用它,它将检查所有游戏对象,然后检查该方法是否已经实现。您无法保证调用顺序,并且可以想象这个过程比直接引用对象和调用函数要慢得多。
-着色器:最后再记得这一点,因为它将只处理你游戏的图形方面,通常它不应该是你的第一优先。


本题由胡罗舶AR团队敏捷开发主管Heri贡献答案,希望对您有所帮助。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-26 01:26 , Processed in 0.095149 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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