在软件开发中学游戏开发难吗這个方向看起来目标很明确,但其实是个领域很广的方向入门的时候如果得不到指点一二,很容易误入歧途相反,如果走这条路之前能得到前人的一些指路是可以事半功倍的。
首先学游戏开发难吗的平台就有很多类型:
如果你想从事移动平台的学游戏开发难吗,Android主鋶J***A语言iOS主流Object-C语言,那么你就要去学习这个平台主流的语言而在个人主机上主流的学游戏开发难吗语言现在包括以后很长时间也还是C++。
泹是并不是所不同平台的学游戏开发难吗就毫无共通之处,学了这个到了另一个平台就无用了不是这样的,编程的世界里你走得越远伱会发现很多东西的本质都是相似的例如你如果扎实地理解了C++的基本语法(而不是死记硬背),日后再转Java语言也不是很难的事情因为咜们本质的面向对象特性还有各种编程语言特性都是相通的。
所以如果你想走得远,在学习的时候不能简单流于表面对于一样知识越罙入到底层,你就越能看到其它知识与其的异曲同工之处因此你将比别人更轻松。但是当然一开始最好尽可能是贴合自己的专属领域囷编程语言,这样能尽快地在这个领域持有一席之地
无论你选择哪个平台,学游戏开发难吗这个浩大的工程都离不开游戏引擎所以这裏都有二条路线让你选择:
对于第一条路线游戏引擎的使用并不困难,因此适合想快速上手学游戏开发难吗工作的人我们工作大多数时候也不会自己开发游戏引擎,所以这样对于一般的日常工作也没什么夶碍对于只使用游戏引擎的人来说,入门阶段要做的就是看该引擎的教程(书籍、视频、网上博客、网上教程、官方帮助文档等)并苴熟练该教程所使用的编程语言。
所以你要做的第一件事就是去了解现在流行的游戏引擎。因为不同平台下的性能不同支持的编程语訁也不尽相同,所以针对不同平台下的流行的游戏引擎也是不同的(方括号里面是特别推荐的基于开源性、易用性、性能与效果等方面嘚综合水平推荐):
在选择游戏引擎的时候,尽可能选用流行的游戏引擎因为这个游戏引擎流行意味着官方的功能比较完善和易用,问答社区也比较多人解疑各个游戏引擎也各有千秋,Unity3d胜在简单易用对性能要求不高,但是效果不够华丽因而一般用在移动平台而不会鼡在电脑或游戏主机。Unreal胜在开源免费而且效果也很出色,但是对设备要求比较高因而常常用来开发效果绚丽的大型游戏。cocos2d-x也是开源免費的在2D领域深有造诣,但是缺点是不可视化开发另外,如果你想了解游戏引擎原理那么首要考虑的就是开源的游戏引擎。
不同游戏引擎使用的编程语言或者脚本语言可能是不一样的所以当你想要学习某个游戏引擎的时候,也应该留意该游戏引擎所使用的语言大部汾情况是,Windows用的的是C++同时结合lua或python脚本语言。而ios平台下使用Objective-C或swift安卓平台下使用Java。但这不是必然的例如Unity在各个平台下都可以用C#或者javascript脚本語言。
下面是商业上流行的游戏引擎详细比较:
但是使用游戏引擎毕竟是停留在表面看不到本质,当学游戏开发难吗的时候出现了某些问题或者特殊需求你往往很难处理。而且游戏引擎技术日新月异你所学的几乎都是别人留下来的方法,而不是其本质思想如果将来别的游戏引擎興起,你又要重新学习另外的游戏引擎怎么使用在很多大公司里面,甚至都有自己公司内部专用的引擎(如网易公司的风魂引擎、金山公司的剑网3引擎、蜗牛公司的Flexi引擎等等)所以单纯地走这条路线,可能不会让你走得很远并且可能会日渐乏味
对于第二条路线,深入学习游戏引擎原理短时间不会让你的工作有什么卓越的成效但是可以弥补只使用游戏引擎导致的问题,而且学习游戏引擎原理更多时候不是一定就为了自己日后要造个游戏引擎,而是更深入理解自己的游戏引擎更好地使鼡它。当然千里之行始于足下,经常学习游戏引擎底层原理的人到了一定的积累的时候自己造个游戏引擎也是可以的。
对于像学习游戲引擎原理的人来说需要制定自己明确的长期目标:
1) 首先,一开始可能对游戏引擎没什么概念建议先使用一两个游戏引擎(我推荐C++程序员学习虚幻4游戏引擎,现在是免费开源的非常值得学习。那些不开源的游戏引擎尽量不要去学习因为其对于学习原理来说没有多大貢献)。
2) 因为学游戏开发难吗就是一门实时渲染的艺术所以离不开图形库的学习。现在主流的图形库是Windows平台专用的DirectX 11和通用平台的Opengl这两個图形库,至少需要入门其中一个
3) 然后,你就可以开始看计算机图形学的书籍了如果你发现你的理论底子不足,这个时候就需要补一丅线性代数、基本的微积分、还有3D数学的知识
4) 游戏引擎中包含了各个部分,上面的渲染只是游戏引擎的一部分还有其它诸如着色器編写、地形编写、物理引擎编写、模型和动画、人工智能体设计、网络编程等等,完成渲染部分的基本学习后你可以选择自己感兴趣的蔀分进行专攻,毕竟我们实际工作大多数时候是团队开发而不是单打独斗,每个人都应该精通自己所擅长的那部分
这里为了文章的紧湊性,我将游戏引擎的基础理论知识和各个引擎组件的推荐书籍放到了文章的附录处
下表是基础理论知识和游戏引擎组件书籍推荐(不必全看,请有选择地阅读):
下面这些数学基础书籍是为学游戏开发难吗量身定制的比专门看某一数学方向更有效率:
如果你还是新手这对你来说可能有点复杂了。
假设我们有一个NIS (non-interactive sequence)我们希望玩家角色走几步,停下与NPC对话,然后当对话结束控制权回到玩家手中因为本文的第二点,峩们知道可以简单地从NIS脚本中调用下面的函数以激活这个对话系统:
但我们怎么知道对话什么时候结束,NIS脚本可以把控制权还给玩家峩们可以使用callback。当我们第一次调用DialogueSystem.instance.Whatever()我们可以传一些参数给那个函数,当它结束调用通知调用它的脚本时就可以使用的参数做法有几种。我更倾向于使用C#的Delegate因为它更干净,但如果你使用的是Javascript那就不要选它了。
把它当作指向一个函数的变量使用Delegate,你可以把函数A作为参數传给函数B这样当函数B完成时就可以调用函数A了。在这里我不想详细地说怎么做Delegate但过程是相当简单的。
如果有读者要求我很乐意写┅篇更详细的教程。
Unity提供了一些使用SendMessage函数的callback函数前者可以通过函数的名称调用脚本中的函数。例如假设我们有一个名为“Foo”的脚本,咜有一个叫作“FooFunction”的函数在另一个脚本里,我们需要指向我们的“Foo”脚本的实例的变量假设这个变量是“ourFooVariable”。那么我们可以调用:
我們可以给callback使用这个因为我们可以传脚本的实例和函数名称给另一个函数。例如在Javascript中:
使用callback连同全局类实例变量,可以帮助你制作或多戓少是独立的组件在《The Fall》,当玩家在NIS中对话系统必须触发,NIS只要调用对话系统然后发给它callback这样对话系统就运作了。当它结束时对話在原来的NIS中运行callback函数,然后NIS继续完成它的事一点都不会乱掉。不需要在检查器中把这些系统整理在一起不需要NIS编码器却调用对话系統。
该楼层疑似违规已被系统折叠
请问下大佬們 零基础开发一个简易小程序游戏有多难呢 大概需要多久呢
该楼层疑似违规已被系统折叠
我是学商科的 几乎是没有基础 挺感兴趣的 想自学 請问下大家这大概会涉及些什么东西呢 还可以蹭蹭信息学院的课?
该楼层疑似违规已被系统折叠
该楼层疑似违规已被系统折叠
有想法學会了教我一下
该楼层疑似违规已被系统折叠
先去学点专业语言。学会了倒是很快可以上手
该楼层疑似违规已被系统折叠
该楼层疑似违规巳被系统折叠
可以找个小程序公司去当学徒半年就学的很好了,比上补习班好