.NET、Java、和Unity游戏如何选择方向?
.NET、Java、和Unity游戏如何选择方向? 题主的问题描述,特别像简历。当然好处是可以更全面的了解你。题主很有行动力,参与过很多开发方面的活动和比赛,非常希望优秀人才能真正找到用武之地。要想成为未来的一流技术人才,要注意两个陷阱:
追热门。目前热门的领域不见得是未来热门的领域,越是恒久不变的东西价值才越大,以个人十年职业规划的时间尺度来看,大部分所谓热门都是浮云。杂而不精。最终能够在技术上有所成就的人,大都是多年如一日坚守岗位、同时保持精进的人。能长时间保持内心热情的人,不可能没有成就。
任何行业、任何岗位几乎都是低端人才过剩,高端人才紧缺。要想成为“稀缺人才”,仅仅着眼于软件开发的表层显然是不太够的。题主已经有了一定的算法竞赛经验,说明学习能力很强,不如选择一个自己喜欢的方向,深入钻研进去,价值远大于掌握某一门开发技术。
当然反过来说,这个社会也非常鼓励思维活跃、紧追机遇的人,和纯技术人才的思维方式会略有偏差。 大厂招人其实什么语言无所谓,不过你要是想不走弯路,事半功倍,还是要多想想你以后想干什么。
你要是想以后做后端就多学学Java,不单单是语言,java在后端系统设计上有很多积累。我觉得不管你后端用什么语言开发,作为程序员你都应该懂Java。再多看看数据库,缓存,分布式队列。还有大数据和机器学习的知识,对于后端来说,我觉得语言只是一小块,如果你精力有限,能把java学学就很好了。
做游戏你就选unity,用c#写写脚本。但其实这对语言要求不高,主要还是api的使用。至于收入,这就要看你参加的项目了,赶上好的就能发财,赶上差的就发不出工资。
刚毕业的同学就除非天赋异禀,就别总想着前后端都打通干全栈了,能稍微兼顾一下就不错了。有空看看JavaScript,React这样的东西想精通也不容易。但要是一点不懂,也不太好,算是个瘸腿。
.net core这东西是不错,微软这些年终于开了点窍,至少能放docker里了,他们社区一直都说自己在蓬勃发展中,国内我不知道,国外用的还很少。当然如果你真心喜欢,我也不拦你,这都是个人兴趣。主要现在选择非常多,比如说go,比如说Kotlin,还有python和node.js也都是不错的选择。就连php7也都表现的很有竞争力啊。我个人的感觉是硅谷这边后端新项目上go很多,这是一个很适合做后端微服务的语言。是一个非常值得关注的热点。kotlin也不错,前后端都能用, 和vert.x和spring都能结合。所以如果你精力充足,学个java,再学个go或者kotlin就挺好的。 恰好我是Java转做Unity开发的,我的C#是直接看了一些语法上手就开始撸Unity的,并没有系统的学习过.Net,Java和C#语法相似度很高。但就我个人接触之后反倒觉得C#的一些特性更好用(纯个人认为,不引战),但是国内确实Java的岗位机会多,身边从事Java相关开发的同学也多,待遇丰厚。这么说吧,转做Unity之后就是感觉特别的累,特别的忙,待遇和Java相差不多,但也不是说做Java就多轻松,只是相比游戏行业能好一点。但游戏行业是有机会赶上好游戏就大赚一笔,但同时不稳定性也很高,容易因为游戏上线不好,公司经营不下去而倒闭。总结下来就是Java和Unity就工资而言差别不大,游戏行业有机会挣更多,但同时也不稳定,而且比起Java来说更累一点,如何选择看你自己了。 Unity、.Net、Java都是工具,不要被工具限制了你的思路,你以后不是搞JAVA、Unity、JS的,而是搞Web前端、搞后端、搞游戏、搞AI的。
所以不要因为喜欢.Net core或者JAVA而去考虑前途,因为做到后面你面临的问题并不会因为一个工具而有什么变化
我自己是做游戏的,如果你立志搞游戏,我可以给你一些建议
基本的数据结构、算法、设计模式一定要扎实,大厂校招对这些基础能力是非常看重的。比如快速排序、时间复杂度推导、动态规划、深度/广度优先搜索等
游戏中应用到的常见解决方案可以多学习,例如帧同步技术、行为树、动画状态机等等。
另外计算机图形学是一定要学好的,矩阵变换,3D渲染管线,HLSL,我见过好多搞了5、6年游戏的对这些都不懂,所以他们一直停留在很小的公司、做着一个又一个半死不活的项目
回头再配合对Unity的学习,举个例子,撸个单机教程版的贪吃蛇不算什么,如果你这个贪吃蛇能联机对战(帧同步技术)、自动控制吃豆(算法)、还带LOL那种战争迷雾(图形),这就非常亮眼了
其实不管做哪个方向,做好了都不会太差,想好了之后就在一个方向深入做下去,无关的东西都不要浪费时间了 就看你对3d游戏有多热衷
如果你说,老子这辈子就只打算搞3d游戏了,那你应该选unity
但是如果你说,我对3d游戏没那么热衷,想投身于技术大潮,尤其是互联网,移动开发的新趋势
那你应该从java开始,java在后端是横扫一切牛鬼蛇神的,不管国内国外
就算你说的游戏,google也在尽一切可能让java用户适应,已经有的android用java就不说了
最新的进展是flutter是冲着android&ios去的,能兼容ios已经不得了了,目前只有flutter做到了
其他都是claim自己做到了,但是ide什么周边很不完善,跟flutter有一个专用的android studio比
完全不在一个重量级上,flutter为了帮助你检查环境是否设置正确
有一个专用的flutter doctor,这个实在是太贴心了
而且dart就是java语法,dart,kotlin跟java的关系犹如风暴英雄,lol跟dota的关系一样
我们在flutter上实现一个2d的网游引擎
前后不超过100行代码,就这么简单,但是说清楚,目前是2d的,不是3d的,3d的api还没有看到
这个是flutter/dart的不足之处,将来会不会有3d的,不知道,要问Google自己
但是游戏这个行业,用不了多久,就会对现有的java用户打开大门,前端flutter/dart后端vert.x
这是可以的,实际上我们已经把各个难点全部打掉了,prototype已经搞出来了
因为后端actor model在游戏行业有着多年成功的经验,不管是erlang还是akka
都成功在游戏行业使用过,vert.x照着抄一遍就行
至于做website之类的,那就更简单了,jvm还有一个大数据上的应用
hadoop,spark,flink之类的
这个就更是其他语言没办法去参与的,jvm现在语言开始多了起来,lisp就不说了
haskell之类的也纷纷到jvm上报道,所以不管是数据,web还是游戏,你从java入手是木有错的 .NET Core + Unity. 这里首先要申明的是大家眼中的.NET 所以我特别强调.NET Core , .NET Core和Unity都是使用C#语言,.NET Core是模块化,现代化的开发平台。 国内的.NET Core社区正在蓬勃发展中。我有一个网站 http://www.csharpkit.com 可以推荐给你。Java国内的低端人才相对较多,竞争也更加激烈,如果能够迅速提高到高级阶段才能体现出优势。 java做后端服务器的,一般现在手游很多都是java写的,可了解下netty这种通信框架,unity这种类比下应该是web开发中的h5,做展现层。 我们JAVA老师说,
.NET非常善于做客户端。
unity写游戏脚本非常合适。
JAVA则适用于服务器端的开发。 选java