小故事:
记得还是小时候幼儿园就开始玩游戏的吧。第一款游戏玩的是暗黑破坏神,后来是三国赵云传,再后来是暗黑破坏神2。三年级玩的是魔兽世界,四年级接触了war3(魔兽争霸3),然后到现在一直工作。我的游戏路程相比很多80后来说都比较长。
家里从幼儿园开始就有电脑了,我爸也是个游戏疯子。经常玩游戏玩到凌晨一两点。所以我的童年深受我爸的毒害,曾一度沉迷于网游不能自拔。
既然沉迷了,我的学习成绩也一样被拖了下去。。经常考不过90分。永远处于班级的中上游(一直到高中)
不过相比于很多沉迷游戏的人来说,我一直非常想自己做出一个游戏来。有这个念头的时候大概是三年级吧,那时候啊,兴冲冲的去买了一本书。好像叫做<
然后买回家,翻了两页,完全看不懂啊。于是就扔在那边了。一直到六年级才翻起来。
本章概要:
1.制作游戏需要学会编程吗?
2.学习编程一定需要英语、数学好吗?
3.如何学习编程呢?
4.如何选择自己的学习路线
5.什么是游戏引擎?
6.如何选择游戏引擎?
题一:
1.制作游戏需要学会编程吗?
如果你想要当一个独立开发人,可以明确地回答。是的。如果你想当一名专业的策划,也可以明确的回答,是的。如果你是一个美工,说实话美工虽然是游戏制作团队里不可或缺的人物,但是真正让游戏运转起来的依旧是程序员。(当然我指的是计算机游戏。桌游啥的就不算进去了。)
所以,事实上在游戏里,从头到尾一直参与游戏制作的人,对游戏最了解的人,一般也是程序员。(如果不服可以来打我)
所以,如果你真的想要制作一个游戏,请不要想任何理由来拒绝编程。即使你用war3的世界编辑器,sc2的银河编辑器这种东西。你依然逃脱不了编程。只是换了个形式而已。
2.学习编程一定需要英语好吗?
不,当然不。只要你认识abcdefg,懂得拼apple,iphone,god,fu*k,sh*t这些单词,会一点音标。在编程入门里,学习英语对你就根本构不成障碍。
数学也一样,在入门的时候,你只要会加减乘除,一元一次、二元一次方程。有个高中对函数的理解。绝对不会对你构成任何阻碍。小学六年级的知识就够你入门了。(当然我仅仅说的是入门)。
3.如何选择自己的学习路线?
编程语言很多,非常多,成千上万。从流行的java、c#、python、ruby,erlang到那些老不死c++、c、ada、fortan,再到那些小众的不能再小众的haskell、scheme、common lisp,再到那些猎奇的要死的 草泥马language、道语言、shen语言、禅语言等等(以上这些语言都是真实存在的)数好几天都数不完。更别说各种erp、专家系统自带的dsl,各种引擎自带的script(脚本)。
要说把这个世界上所有语言都学一遍,这几乎是不可能的。
但是如果有人对你说,语言只是工具,学啥并不重要。我觉得你可以去抽他两个大嘴巴。对于老鸟可能说是的(仅仅是可能,大多数时候他们并没有认识到自己的问题),对于新手这个实际上是影响未来路线的大事。
为什么这么说呢,在《黑客与画家》(这本书是超级软文,可以看一看,但是别全信)这本书里说过,一个程序员学一种语言,他的思维模式就会非常贴合那个语言。不同语言造就的程序员是完全不同的。就像经常用c++,用c语言的少年,对内存有天生的敏感性。但是反观python、ruby程序员,他们根本不需要去考虑到内存相关的东西。导致他们很多时候在遇到语言的坑时完全不知道为什么。也并不是说学c++、学c有多厉害。其实这仅仅是c/c++这些语言的落后而已。
在此不想多评论xx语言多好多屌。其实各有各的优势没啥好说的。
对于游戏开发来说,我们应该选择什么语言呢。
答案很明确,c++/java。个人更加推荐c++。
原因有以下几点:
1.学习c++你会更了解底层相关的知识。
2.因为c++这语言的繁杂性,你以后去接触任何语言都会觉得如沐春风。
3.可以在其它oo语言面前秀优越(当然遇到大神了你就完了)
其实你关注第一点就可以了。
在现有的图形标准里中,opengl是基于c的,directx是基于c++的。所以想要了解底层的话,c++是基本必须要学的(逃也逃不掉)。
另外用C/C++来实现一些算法和数据结构时,印象会更深刻一些。
那么接下来就要提到,学习游戏编程,我们的路线该怎么选择。
第一条路线:粗略的学习一下c/c++,然后投入cocos2dx、unity3d 、cryengine、ue等等的怀抱。
第二条路线:认真的学习c/c++,接着学习数据结构、常用算法、编译原理、图形接口、计算机图形学……(帕拉帕拉,一大堆)然后四五年后,你终于开始想到自己要做个游戏了。
那么下面分析
第一条路线的优势和劣势:
优势:学习成本低,出产速度快。
劣势:人变懒,变得很浮躁,被技术潮流淘汰
典型的培训机构快速出产码农之法,可以干活,但是干不了精活。月薪3k-1w,很难超过。有上进心的人,会在中途跳入第二条路线,没有上进心的人,会一直在码农阶级徘徊,然后转行。
第二条路线的优势和劣势:
劣势:学习成本高
优势:学成后,就像学内功一样,不会被技术潮流所淹没找不着方向,学那些花花架子也和吃饭一样简单。
基本跑啥公司啥公司都要,稍微混混就是个主程,再多学学架构,出两产品。基本就在行业内吃的开了。
分析了两条路线,相信大家都明白了。
下面给出我的学习路线
c/c++ ------> 数据结构 --------> 基础算法 ---------->编译原理(这边有点脱节)------->做了个小脚本语言--------> 图形接口(opengl,directx)-------->计算机图形学-------->线性代数------>做了个游戏引擎--------->工作
推荐入门书籍:<
推荐进阶书籍:<<算法导论>> <<计算机程序构造和解析>> <<编译原理>> <
推荐数学不好的人自虐的书籍 <
推荐数学书籍<<托马斯微积分>> <<线性代数>> <<离散数学与应用>>
推荐闲的时候看看的书籍:<
只是列出了一些比较我比较常看的书籍,还有一些我看看就不看的就不打上去了
那么这个问题也就回答到这里了。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3.什么是游戏引擎
其实很简单,游戏引擎这东西囊括了很多。什么物理引擎啊,AI引擎啊,图形渲染引擎,音效引擎啊。不过外行人比的都是图形渲染引擎。说到底游戏引擎就是把各个功能都做完,然后来驱动游戏的一个‘引擎’罢了。
以前大多数公司都是自己做游戏的时候,把各个游戏驱动底层分开来做了。还有一些场景编辑器啊UI编辑器啥的。到后来要做新游戏的时候,这些工具依然可以使用,把他们组装到一起了,完善一下,就是一个公司自制的游戏引擎了。
4.如何来选择游戏引擎
实话说呢,这东西很虚。如果你基础不好的话,你学一个引擎,过几年那个引擎又被淘汰了。你又要重学一个新引擎。这种事情很常见啊喂。
不过近期来看呢,unity3d是最佳的选择,次佳的是cocos2dx,再次一点的就是cocos2d、flash。
未来引擎呢,可能UE4会秒杀Unity3d,当然也不排除有更屌的公司搞出来了个更屌的东西。
如果现在想赚钱养家呢,unity3d是挺好的选择,易学易用。cocos2dx反而还要一些c++基础。
结尾:
写这个其实只是想回答很多新手一直疑惑的问题罢了,如果能提供给看官一些帮助,那就非常荣幸了。
转载请注明出处 by Brainthread