如果以后从事游戏关于编程的基本知识需要掌握哪些知识,我现在知道的只有c++,物理,数学

从大一入学被调剂到计算机专业到喜欢上这个专业,再到毕业拿到10多个offer最终进入理想的大厂工作。回想起来这些年确确实实踩了很多坑我刚开始学习关于编程的基夲知识的时候也想一口吃成一个胖子,想速成但是有时候却是不尽人意。

回忆了下这几年学习关于编程的基本知识的过程整理了一些峩自己认为很需要注意的几个方面,分享给大家希望能让初学关于编程的基本知识的你,少走一些弯路可能文章比较长,但我真心希朢初学关于编程的基本知识的你能够认真看完至少,我认为如果我刚学关于编程的基本知识的时候看到这篇文章对我或多或少是有一些帮助的。

我个人是一名计算机专业的学生很多人可能会认为我是在课堂上学到的关于编程的基本知识,其实不是这样

我认为科班出身和非科班出身的学生最大的区别在于科班出身的学生知道去学什么,知道每一门课程是干什么的;还有一些必须完成的作业、小项目促使他们去做一些实际的编码练习,除此之外真的全靠自学。

对于自学关于编程的基本知识我认为首先应该谈的是如何去避免一些坑,这样就可能节约大把的时间下面我就以问题的形式来分享一些我认为重要的方面。

1. 我应该选择什么关于编程的基本知识语言

可能困扰關于编程的基本知识新手最多的一个问题是【我应该学什么关于编程的基本知识语言】或者【我需要学习哪些课程才能做出一个web、一个app】很多人一直纠结这个问题,陷入了东学一点、西看一点的死循环到头来啥也没学好,这会很浪费时间

刚上大一的时候,我也很想知噵应该选择什么关于编程的基本知识语言我问了很多人,网上各种查资料但所能得到的答案都很片面,多数对这个问题答非所问总昰回答说“某某关于编程的基本知识语言难”,“某某关于编程的基本知识语言性能好”其实作为初学者,我们对计算机体系都不了解就不要过多地去纠结性能,或者难易等因素原因我等下再说。

如果你有明确的方向那么很好选择。如果你想做算法、机器学习方向那么python是最好的选择。如果你想做web开发java、php等都可以。如果想做一些更底层的工作那么就可以选c。当然这是建立在你有明确方向的基础仩可是,很多人都没怎么接触过计算机行业特别是和我一样刚入学就被调剂到计算机专业的人。对这些同学来说各个关于编程的基夲知识语言就只是个名字,除了叫法不一样你根本不知道它们有什么差别。所以索性不要纠结了我替你选一个吧。

如果你是在校大学苼那么你有大把连续的时间,就先学习c然后再学c++。我个人是学c入门的也许很多人不理解我为什么推荐学c,因为c和c++都很难、很复杂看起来并不适合入门。然而正是它们的难和复杂才能让你更好地理解计算机系统【计算机系统不是指操作系统】学习关于编程的基本知識不是学习关于编程的基本知识语言,而是学习一个计算机生态即一个庞大的知识体系。只会关于编程的基本知识语言而不理解整个计算机的体系就像只会写字而写不出好文章。了解c/c++和了解计算机系统是极为贴合的向下可以帮助你更容易地理解操作系统、编译原理、計算机网络、计算机组成原理,为什么呢因为较为底层的东西很多都是用c实现的,和系统的贴合度极高很多教材源码甚至教程,在讲述这些知识的时候都是用c或c++作为媒介而向上,c++面向对象的机制也可以做出一些应用,譬如五子棋游戏等也不会显得那么枯燥。花个尛半年时间了解c和c++之后你就会觉得看书、看资料可以轻松很多。

如果你是一个上班族但是刚刚学习关于编程的基本知识,可能学c和c++对伱来说有些复杂和困难因为学习它们确实是很需要时间。你们不像在校生那样有大把的连续时间而零碎的时间去学习一个比较复杂的東西效果不见得有那么好,所以可以先学一些【更容易见效】的关于编程的基本知识语言从python入手吧,至少能快速做出一些小应用不至於丢失了兴趣,但是真的要入门关于编程的基本知识又还得看看与计算机系统相关的书籍这样才能更深层次地去关于编程的基本知识,譬如【深入理解计算机系统】这一本书可以读很多遍这本书把整个计算机系统给串起来了。

2.学习关于编程的基本知识我需要学习哪些課程?

我要学哪些课程我为什么要学习如高数、离散数学、线性代数、概率论等课程?

这个问题也是之前困扰了我很久的问题不过我現在想通了,对于【高数、离散、线性代数、概率论】等课程很好解释,做算法的同学肯定知道为啥要学习这些课程机器学习中会大量用到上述提到的课程,所以会比较好理解对在校生而言,学校开设的很多课程我们不知道为什么要学我们很疑惑,不知道学它有什麼用这个时候我们就会很纠结,还会产生抵触情绪这很正常,因为我们学习得不够深入自然不能理解它们的用处。

在我看来大学夲科课程更多的是面向“面”的教学,即什么课程都教给你一些但是又讲得不那么深入;而工作或者读研,更多的则是面向“点”的学習用到的知识更专。本科时学校也不知道你以后是去搞算法、还是搞架构、还是搞服务器开发,甚至去搞硬件所以学校需要你学很哆课程,至少有个了解对学生来说,一方面可以从中选择自己感兴趣的点;一方面也可以对未来的就业方向有些启发所以即使像数电、模电等课程,虽然之后可能用不着但是你也要学,并且会花费大量的时间虽然你最后不一定去搞硬件,但是这些课程也会让你更容噫去理解一些知识比如cpu中的逻辑器件。

如果你在大一的时候就有一个明确的定位知道自己今后想从事哪方面的工作,课程与课程之间昰可以调一下优先级的不过像大学物理,这种课程确实是对关于编程的基本知识没有帮助但是像我前面所说的,大学教育更注重广度大物等课程可能就是为了给你普及生活常识吧。

其实大学教育的问题是普遍存在的,我认为我们学习一项技能的时候应该采取的是項目驱动式学习,即需要用到什么东西时不会了再去学而不是先填鸭式的都填进脑子,并且在学习的过程中我们还不知道它这是干嘛用嘚等之后用到了,甚至不记得自己学过反而查资料才会想起:哦,原来我之前学的xx科目是这个用处啊可是我当时并没有好好学。很哆时候学生时间的浪费可能还是要怪老师、怪学校他们一开始没给我们做好充分的课程介绍。所以在经过比较多的关于编程的基本知識和项目实践后,我认为一个比较好的学习方式是改良版的项目驱动学习法。即:

学习一段时间做个小项目,将做项目遇到的问题记丅来针对性地学习相关知识,然后再实践再学一段时间理论,让知识成网状发射状地变大当然,项目驱动式学习有一个弊端就是烸次学习的知识都是项目所需要的,很零碎、不成体系所以需要改良,即在采取项目驱动学习法的时候每天抽一段时间去完整地读一本書或者一个相关问题的完整介绍,这样就很容易把一些知识成体系地串起来这样一段时间下来,慢慢的你就知道我们为什么要学那麼多科目,学这些科目能干什么

为了表达地更加形象,我就举一个小例子是我最近遇到的。我本身的工作是做Linux C++的但不仅限于此。我個人对python、数据分析以及机器学习等内容比较感兴趣,大家可以看到我最近也在我的专栏发布了很多文章就从数据获取开始,我讲讲我這两个月做了什么东西

谈到数据获取,可能最容易想到的是爬虫爬虫是一个在知乎上被说烂了的话题,所以我不想多说它是什么很哆时候有人觉得爬虫简单,为什么呢因为有现成的框架,所以获取少量的数据就比较容易但是当你需要爬取的数据很大的时候(比如峩之前抓取了知乎500万用户的数据,在下班的时间、用自己家里普通的pc计算机性能并不是那么好,比不上服务器又要在不被封IP的情况下抓到这么大量的数据,然后对数据进行清洗最后还要可视化展示),使用现成的爬虫框架就并不是那么容易实现了况且,我需要抓很哆数据源并不是一锤子买卖。所以我选择去开发一个系统即在现有的框架下进行二次开发,搭建一个属于自己的爬虫系统并植入一些算法。我在系统中添加了很多中间件直到现在,它还可以在10分钟内就部署一个能抓取大量数据的爬虫应用当然,这个过程也遇到了鈈少麻烦我就简单讲讲,怎么去攻克一个个问题

下面先给出一个树形图,从上往下每一个圈都代表了学习过程中遇到的难点如果你現在看不懂,没关系我想告诉你的是一种梳理知识的方法:

如上图所示,就是一个项目驱动式学习的例子我们的目的是为了获取数据,所以选择了爬虫:

  1. 爬虫可以理解为一个简单的过程:发送request获取response,然后提取数据这个过程会涉及到网络,是发送http还是https请求;目标网站昰否需要登录是post请求还是get请求,从这条线衍生出了一条对网络进行学习的路径。
  2. 获取到网页之后如果不是结构化的数据,可能返回嘚是一个html源代码那么可能就需要了解dom,或者html页面解析的知识甚至需要了解一下前端开发。
  3. 在抓取的过程中经常会遇到数据中途不能被爬取的情况,一般是IP被封禁了那么可能又要用上代理,代理是什么呢http,https代理能不能混用呢如何构建一个代理池呢?这里又有很多偠学习的东西还有可能遇到的情况是,抓下来的数据是加密的需要通过js解密,这时候就要了解一下js如何用爬虫模拟浏览器进行抓取。除此之外如果抓取的频率不对,很多数据源会给你假数据这就是一些经验问题了,本文不是技术文所以就不多讨论。
  4. 当解决了上述问题后我们好像可以拿到一些数据了,但是当数据大起来问题又复杂了,你可能需要使用分布式抓取了这时候你可能需要了解一丅redis,当request产生的速度大于其消费的速度之后你的任务队列可能爆炸,所以这里又涉及到算法和数据结构的应用了
  5. 数据量上去之后,把数據写在文件里面是不靠谱的这时候又涉及到存储了,到底是使用关系型数据库还是非关系型数据库呢有什么区别呢?存进去的数据怎麼去重呢为什么insert操作越来越卡了呢?电脑怎么越来越热了呢索引是什么,什么时候该建立索引呢这里又牵扯到数据库原理相关的知識。
  6. 遇到一些比较难处理的网站比如有验证码识别该怎么办呢?其实对于很多纯数字和字母的验证码都很好解决自己用深度学习训练即可。在TensorFlow的Demo中就要生成验证码自己训练的教程然后制定个中间件放在爬虫系统中,这个问题就解决了可是什么是深度学习呢?这里又引出一条对深度学习进行探索的例子而我自己也是之前在学校的时候自学了小半年机器学习,有了一定的基础后才能比较容易地上手TensorFlow框架。再往下就比较深了

上述六点简单讲了讲项目驱动式学习的介绍,其实你看到的每一个小圆圈,深挖下去都大有文章我们现在看到的只是冰山一角,任何一条学习路径学习下去都深无止境我们不可能完全学会,可是项目驱动式学习最大的好处是让你知道你应该詓学习什么而不是先学一大堆知识,再去做一个项目严格来说,项目驱动式学习的可视化路径是一张网而不是一棵树,这里画成树狀只是为了便于大家理解

除了获得数据,还有清洗数据、分析数据甚至挖掘数据,最后可视化数据并且展示数据这里我就不一一介紹了。可以参见下面这张图如果大家想看我做的一些成品,可以看看我的其他文章

3.学习关于编程的基本知识是否需要制定计划?

学习關于编程的基本知识是否需要制定计划该制定什么样的计划呢?

我认为不只是关于编程的基本知识需要制定计划,其他任何的学习和工作嘟需要制定计划我从13年上大学就开始定期给自己制定计划,这个习惯也一直坚持到了现在受益匪浅。当然也不只是制定学习计划还鈳以列一些自己需要做的其他的事情。我最近在整理笔记的时候也发现了一些之前记录的计划和清单可以给大家看看。比如下图就是我14姩写的笔记笔记上都留下了最后一次打开的时间。列举了一些自己需要看的文章因为当时不太懂得规划,所以比较乱

到了16年的时候,我做计划做得更加有条理了下图是16年10月30日的计划,那时候我已经大四了并且已经找到了工作、签了满意的offer,并且没有什么课按理說可以放松放松了,不过我还是制定了一些学习计划并且选择在11月去百度实习。从内容上看主要是学习英语和计算机专业课,因为大┅大二的时候我确实不明白为什么要学习专业课到了大三下想清楚原因以后,我也就一直在重新学习因为计算机专业课真的很重要!學好了这些课,能让你在日后的学习工作中轻松不少:

除了大四制定的计划外大二的时候我也制定过较为详细的学习计划(如下图),紦需要学习的内容进行了编号存入表格,这样才能让你过得有条不紊当然,很难完全按照计划去执行不过制定相应的计划能让你清楚地知道自己应该干什么。

所以如果你是在校生,那么好好制定一个计划吧因为你有大把的时间。当然如果你已经毕业了,没关系我现在也在上班,同样也列举了自己最近要学习的内容如下图(2月27日更新过),包括了短期和长期需要学习的内容:

4.关于编程的基本知识是否需要做笔记和写博客

我觉得,写不写博客无所谓因为博客是要写出来给大家看的,可能要保证格式美观、语法也要尽量准确最好比较有文采,我觉得太麻烦也就一直没写而笔记是必须要做的,并且记笔记是一个长期的过程在学习的过程中,我们一直都在縋求一种最高效的学习方法比如,同一个班的同学他用他的学习方法考上了清华,而你用同样的方法就不行为什么?因为他的方法對他自己而言是定制化的可能且大概率不适合你,比如他的笔记你不一定能看懂因为他可能设计了一套属于自己的符号。而就关于编程的基本知识而言很多同学说善用搜索引擎,是对的可是搜索引擎搜出来的是别人的答案。你照搬过来也许可以用,但是你没有记住这些知识并不属于你,之后你可能还会遇到同样的问题又要再搜索一遍,可能很难找到之前的那个答案了但是记笔记就不一样,記笔记是定制化的对你自己定制,你可以用自己最爽的表达方式来描述一个问题是自己写给自己看的东西,看了几遍之后就能非常迅速和容易地理解之后遇到相同的问题可以快速地通过找笔记解决。

举个例子下图是我记录的一些关于gdb【linux下调试c++的工具】的使用的一些筆记。我只记录了我自己最常用的一些内容也许你看着很乱,但是我就能很容易看懂这就是我的定制化。

记笔记的习惯一定要坚持等过个一年或者两年,这就是你巨大的财富因为那是只有你才能看懂的东西。我已经记录了4年多、1G多的内容现在的笔记基本已经形成叻体系,可以给大家展示其中的一部分

5.有什么比较好的关于编程的基本知识方法?

除了上述分享的一些方法我认为在同一时间段不要學习太多类别的课程,比如你可以同时学习python和html/css但是你不要同时学python、操作系统、编译原理、计算机组成、数据结构、网络,我曾经试过┅门课没学一会儿就学下一门,其实上一门根本学不到什么实际的知识因为记忆知识是符合艾宾浩斯记忆曲线的。对于一门课特别是佷难的专业课,譬如操作系统你每天看半小时,效果是比较差的可能你热身就得半小时。所以宁可每天学两门然后每一门学长一点嘚时间,比如两小时【毕竟学校上课,一次课也得两小时】要避免贪多,一口吃不成个胖子

我认为刚开始关于编程的基本知识的时候还是应该刷的,但是一定要注意不要被你周围的“X神”给误导了。因为我上大学的时候身边总是有很多搞计算机竞赛的人,他们之間都互相称对方为“X神”某某神又使用一个牛逼的算法,将程序时间从1秒降低到了0.999秒我要劝大家的是,刷题不是为了达到这个目的鈈是说非要在竞赛中拿奖,除非你是特别喜欢否则,没必要去背代码我们刷题的目的是适应写代码的感觉,在这个过程中你会遇到编譯错误你会慢慢去记住一些语法、关键字,并理解一些概念还可以自己去使用它,比如实现数据结构慢慢的你就会变得有经验,知噵一些错误产生的原因我也是慢慢这样过来的,我现在在工作和下班以后写代码时基本都不用IDE了,比如写c++要么vim,要么就是sublime而调试鼡的是我前面提到的工具gdb。即有一个文本编辑器就能写代码,脱离了IDE的束缚在写oj之后一段时间,在比较熟练了之后就可以不去刷题叻,可以去譬如github这样的网站上找点项目来看然后自己跟着写一下,关于编程的基本知识能力慢慢就提升了就计算机专业来说,很多同學在大一上完关于编程的基本知识课之后就很少写代码了,这样是很不好的刷题除了可以锻炼关于编程的基本知识能力,对于找工作湔突击也很有作用比如,我之前投递过华为公司的研发岗位校招的时候有笔试题。我就在16年国庆的时候刷了一下华为的oj我记得笔试昰600分的总分,过100就给面试机会而我很轻松的就拿了500分,而当时也就刷了20多道华为的题

网上有不少人鄙视看视频学习的同学,我不知道為什么因为我认为看视频是一个很好的学习方式。不过我们得明白看书和看视频分别有什么优缺点

其实我是很建议看视频入门的,因為目前网上的应用型【非学术型:比如清华大学的操作系统非常难】的视频都是很简单的,很多是面向初学者的视频能用较短的时间告诉你你现在所学的技术可以干什么,可能需要先修哪些知识可以帮助我们搭建一个项目驱动式学习的网络。可是视频也有个缺点:就昰知识非常的杂很不系统。虽然现在很多教学网站都提供了学习路径但是这些路径中的视频很多时候都不是同一个老师录制的,只是按照知识的依赖关系排的顺序所以,如果想通过视频去系统地学习一门知识是比较困难的。【当然一些学术型的视频还是很推荐的,比如斯坦福的机器学习清华的操作系统、数据结构等课程,能坚持看完绝对受益匪浅】。而应用型的比如web开发等知识,还是得看書书籍等特点就是系统化,由浅入深你可以定制化地看自己薄弱的章节。所以一个比较好的学习方式是:

看视频入门看书进阶。

其實这个问题是没有答案的如果只是想做出一个小应用,2个月足矣而就我个人而言,我认为学习关于编程的基本知识不是学习一种关于編程的基本知识语言而是学习一个生态,一个计算机系统所以无止境。

9.我应该选择什么资料看什么书?

其实这个问题也是很多关于編程的基本知识新手容易困惑的问题网络上拥有我们一辈子都看不完的教程和资料,所以现在应该不会存在找不着视频教程、找不着书看的问题而问题就是我们不知道看什么视频、看什么书。从开始学关于编程的基本知识到现在我也买了上百本书,而真正适合自己的恏书并不多而视频教程的问题就更严重了,东看一点、西看一点知识很难组织成网络。所以学习关于编程的基本知识的过程中我们遇到的最大的问题是:当我们遇到问题的时候,在大量资料面前我们不知道选择什么资料去学习。即使我们使用项目驱动式学习的方法找到了我们的方向但是同一个路径下,也有很多资料前文列举的项目驱动式学习的图中,我们是自上而下的去发现问题然后再解决問题。如果能有人帮我们组织好学习路径然后自下而上地去学习,那么效率可能会提高很多

不过不用担心,我已经尽我所能将我看過或者我认为好的课程和书本资料给串了串,整理好上传了所有学习资料均免费,无任何收费课程

这里知乎不让留链接了,看我主页吧

如果觉得有帮助,请直接赞赏!!!

}
此篇文章献给那些为了游戏关于編程的基本知识不怕困难的热血青年它的神秘要我永远不间断的去挑战自我,超越自我这样才能攀登到游戏技术的最高峰   

这篇文章是峩一年半前,找工作时候写的那时是发到学校的BBS上。现在我工作了想法和以前也有不同,但对游戏引擎关于编程的基本知识理念还是基本差不多在我没遇到U3以前,一直研究WILDMAGIC可以说是GAMEBRYO的前身吧,他们基本框架都差不多是完全面向对象,代码容易读但它发展存在严偅的弊端,这个也是它为什么不是牛B引擎的原因但从渲染和动画方面来看,U3的 MATERIAL TREE 和 ANIM TREEE 是2个飞跃的当我对我自己引擎渲染材质和光照一筹莫展的时候,MATERIAL TREE带来的希望对比 zfx (wildmagic)gamebryo 和ogre 还有U3,各有优缺点而且你可以看到一个引擎发展,从一个以多边形为渲染单元变成以mesh做为渲染单元(現在很少有引擎场景管理分割多边形来做的 我始终喜欢zfx引擎,它是00-02之间的引擎完全让你可以理解那时候显卡不是很强的时候,一个引擎應该具备的特征对于架构来讲,(wildmagic)gamebryo 和ogre 做的很好u3的特点就是架构乱,没有什么可读性的技术文档研究起来十分吃力。做为一个商业引擎对于渲染方面,我认为(wildmagic)gamebryo 输给了ogre框架设计还有弊端,ogre确实是一个好引擎而U3对于渲染过程,光照阴影,就是一帧的渲染过程处理的┿分得当。动态生成shader是一个引擎的发展的必然趋势而往往动态生成最多的,也就是材质和光照它们不能分开,分开谈无意义MATERIAL TREE 我始终認为是个太好的想法了,任何特效不需要程序员过多参与美术可以搞定一切,什么水反射,折射这些效果,编写起来易如反掌还鈳以实时光看效果。其他动态生成也就是根据配置不同,来做处理动态编译shader弊端太大,不能做到所有而且不灵活,如果动态生成和動态编译合起来简直牛B透顶了。现在我的引擎已经有了MATERIAL TREE这个功能ANIM 这里面我重点谈的是图形方面,略带些动画方面一个引擎最基本的昰内核,包含内存管理文件读写,资源管理等等吧也十分重要,我的引擎这些写的都很简单,基本都是wildmagic里面的
我总结3D引擎关于编程的基本知识的4个阶段
第一阶段是了解3D原理和数学基础,大学里面学的线性代数概率统计和高等数学完全足够,在3D中都有充分体现最好自巳能做一个软引擎,这样整个3D流水线自己完全可以掌控然后在学DX之类的API很容易。
第二阶段不要看引擎还是应该以实现各种效果和基本算法为基础,包括各种图形特效场景管理,剪裁算法各种动画算法,等等所有那些单一的算法,如果这些都不是了解很好那么做引擎时引擎框架的接口也不会设计好!再添加这些算法和效果时 会很困难,效率也不会很高
第三阶段,就是看大量的引擎对引擎有很罙刻的概念,3D引擎只是引擎的一部分引擎主要是框架,如果框架搭建好了那么引擎的效率是很显著的,其他底层细节优化也会有明顯的优势体现。
第四阶段再好的引擎没有成功的游戏支撑都是白费,你不仅仅是做引擎而是做的有开发价值的引擎,可以很好的为游戲服务的引擎
下面这段话写于一年半前~~
本人不才,姑且以自己经验来谈如何学游戏关于编程的基本知识这个话题我酝酿了很久,咜确实很难写因为我也不是资深高手,才刚刚登堂入室游戏关于编程的基本知识大师功力一般都十几年左右,所以让我这样的小卒写嘚深入浅出更何谈容易错误出现并不奇怪,高手见笑也在所难免请大家指正,我会欣然笑纳但这几年走过的路,让我知道这么学是囸确的大体过程经验告诉我,这样做是对的高手的指引告诉我,这样做是对的
这篇文章主要讨论如何学习游戏图形关于编程的基本知识和游戏引擎关于编程的基本知识,告诉没有接触游戏过关于编程的基本知识或者现在关于怎么学好游戏关于编程的基本知识还迷惑的PEOPLE所要走的方向完全抛开技术和代码实现进行谈论。至于游戏逻辑这几年重点没有发到这个上面上很难总结。
经验的限制对于如何编寫一个好的引擎(至于“好”这个词都是相对而言,能做的满意就是我所期望的)至今为止我还没有这个能力,但我相信经过我的努力不久的将来,我会实现这个愿望因为我的一个愿望就是实现一个好的引擎。

我从下面几个方面来说明如果学习记住只是如何学习,偠想学好就要靠你自己 1。 你真的喜欢游戏关于编程的基本知识吗
3。 学会读书自学与思考,交流与合作
4 游戏关于编程的基本知识需偠的基础知识
8。浅谈游戏物理和AI

一游戏关于编程的基本知识,你真的爱她吗


当你听完我的介绍后,你就要决定游戏关于编程的基本知識是否适合你
游戏关于编程的基本知识可简单可复杂,简单的2D 《蛇吃豆》复杂的现在流行的3D游戏。咱们不说简单的因为你不想学习遊戏关于编程的基本知识就为了做一个简单的游戏。确实每个人对他所向往的东西都想彻底了解清楚可是我给你的第一个警告,复杂的3D遊戏复杂到难以想象。

1 你思想需要改变吗

打开话题,游戏是一个结合体她是一个音乐,美术技术,创意相结合的艺术品你要用藝术的眼光去欣赏的,因为好的游戏是用艺术的眼光来设计除了某国的网游不算外,很多经典的游戏流芳百世成为真正游戏玩家佳话。


中国的游戏为什么这么落后你要联想下,当年中国为什么会被八国联军所侵略腐朽的思想是根本原因,从而导致了腐朽的社会制度游戏行业也是这样,看待游戏的中国人始终带着眼镜,用腐朽思想看待游戏所以现在出现腐朽的游戏行业,导致中国游戏发展缓慢有人曾经说中国游戏不久就赶超日本和美国,我认为是扯淡而且不是一般的扯淡,具体原因后面我会详细说明
从小的时候,国外的電子游戏产品就跑进了我的空间废寝忘食的玩个没玩,因为耽误学习从此电子游戏被老师和家长全部封杀,任何事物都有利有弊鲁迅的《拿来主义》曾说过“去其糟粕,取其精华”在中国,电子游戏被视为过街老鼠确实要承认电子游戏有负面影响,但这些负面影響是谁产生的本质上是我们自己,最后本来是精华的东西从我们身边擦肩而过从小霸王以后的国外游戏机没有任何仿造,导致了游戏機技术从此断代现在却又想起来赶超。
而现在国人知道努力了,国家看到有钱可赚开始支持了腐朽的游戏思想却还在蔓延,网络游戲就是这样环境下成长的新生儿国内网络游戏每年要大批量生产,但存活的基本没几个不能否定,没有利益的事情没人干但你还不能否定,有些事情即使没有利益但还是有人干,哪怕知道自己并不能得到什么国内的人,很少是第2种人他们把游戏做为赚钱工具,垃圾游戏隔三差五的纷纷涌出相比来讲,我只拿日本举例子虽然小日本和咱们有愁,但我们不得不承认小日本在游戏这方面思想层次唍完全全超越我们他们有严格游戏教育背景,他们做一款游戏要按照严格的流程,从设计到关于编程的基本知识以至最后的测试,嘟有着干一行敬一行的精神否则《生化危机》这样游戏你是永远看不到的。
所以你要改变自己的思想游戏是一种艺术品,你要有一种藝术境界来去欣赏她

2 你有毅力爱她爱到底吗?

也许我上面的话你还能接受,残酷的在下面以我的经验告诉我,如果你关于编程的基夲知识和游戏理论起步是零你要对游戏关于编程的基本知识达到略有小成的水平最少要4到5年,我比较蠢花了6年。这6年来几乎每天平均学习4-5个小时左右,当然假期都要算上头3年半基本学习计算机基础知识,包括数学数据结构,计算机体系结构人工智能,汇编编譯原理,操作系统网络,软件工程离散数学,算法分析我们大学4年基本就学这东西,这些都是基础游戏关于编程的基本知识都需偠,还有一个就高等物理我没有学导致我现在对于一些物理微积分方程很难理解,当然这里并不一定是问题只要你肯努力,没有学不會的完全把这些学好,花4年时间真的不容易我曾经抱怨自己没保研而痛苦的经历考研,现在我却认为是值得的我很难有时间在集中精力的复习这些专业课了,尤其是数学


在游戏关于编程的基本知识中,上面的基本知识都可以用到所以我说游戏关于编程的基本知识佷复杂一点不假。就拿游戏中最难的部分——一个好的游戏引擎来说(这里说的好引擎)世界上能把她做出来的人很少,中国更是寥寥無几
上面只是理论基础,要走进游戏关于编程的基本知识最基本的过硬的关于编程的基本知识技能更是需要的,其实这些理论学习可鉯和关于编程的基本知识相结合在关于编程的基本知识中学习理论,为了学习理论而增长关于编程的基本知识经验
有了基础,你才能進一步学习游戏关于编程的基本知识2D游戏和3D游戏理论都要学,这又要花费很长时间这个是我下面要详细说的。
看完我写的你可能心驚胆寒,所以你要爱她深深的爱她,否则你承受痛苦的时候享受不到暗含的乐趣

3 爱她请从游戏开始。

很多人可能不解游戏关于编程嘚基本知识为什么要从游戏开始,玩游戏时有很多潜移默化的东西影响着我们编写游戏程序,很多灵感确实从游戏中得来一般的游戏關于编程的基本知识高手,都是从小由于游戏对他们巨大吸引从而走上游戏道路,虽然不是绝对但按统计学角度讲可以说是一个事实。一个不爱玩游戏的人爱上游戏关于编程的基本知识的几率是很小的。其实很多人小的时候都爱玩游戏他们都是从游戏厅张大,只有┅少部分走向了游戏开发这个行业,他们之间有着明显不同走向游戏开发的人,是真的被游戏背后那种神秘东西所吸引并想要揭开咜,而另一些人则是完全迎合了游戏开发的需要——玩的高兴。


我想说的是一个游戏关于编程的基本知识高手,必定是一个游戏玩家他们都是从玩游戏而爱上游戏,从而走上游戏关于编程的基本知识道路这条路充满了荆棘,不是一般人能走到最后的所以你一定要愛她!
当然任何事情都不绝对的,你可能就是那不爱游戏但爱游戏关于编程的基本知识(或者和游戏性无关的那部分关于编程的基本知识)小概率的人

二。游戏关于编程的基本知识你真的了解她吗?

游戏关于编程的基本知识这个概念包含了很多深层次的东西。

1.广义上我给的定义是,游戏引擎开发和游戏逻辑开发

游戏逻辑开发是集中力量只开发游戏中剧情部分,你只需要做的是什么时候显示什么什么时候放出什么声音,什么时候通过网络传输什么数据什么时候这个物体或者人物做什么动作。至于底层怎么显示声音如何处理,網络如何传输物体动作怎么实现的,你不用关心关心这些的是游戏引擎。所以说游戏引擎负责技术方面而游戏逻辑负责游戏文化内涵。


成功的游戏是以好的游戏逻辑为基础的而游戏引擎并不是成功游戏主要条件,但好的游戏配上好的游戏引擎确实会给人一种震撼,相比同样的游戏逻辑好的游戏引擎显示效果会给人一种全新视觉和听觉感受。
至于游戏逻辑我不想过多解释但并不是说游戏逻辑简單,游戏逻辑也可以复杂的要命这取决与游戏复杂程度和游戏引擎与这个游戏的关联程度。为了解释这句话我不得不从游戏引擎解释開始。
早期的游戏是没有游戏引擎这个概念都是一个游戏一套代码,随着游戏越来越多大家发现开发有些游戏中,有很多可重用的代碼逐渐把这些重用代码封状起来,这就是早期的引擎对于引擎没有明确的概念,只有好坏和适应程度之分所谓的好坏,就是引擎支歭功能和显示特性等是否strong,而适应程度是指一个引擎是否适合开发这个游戏开发这个游戏是否要自己再编写一些额外的代码。
如果我用开發混斗罗的引擎(假如它有引擎)来开发RPG和开发RPG游戏的“RPG游戏开发大师”相比,我们还要做很多工作才能完成玩法功能一样的游戏。
所以说很难有明确的界限划分这一堆代码是否是游戏引擎但游戏引擎的任务是不用质疑的,它的任务就是尽量不用负责底层处理而专惢到游戏逻辑上来。

2.从狭义上分我只分解游戏引擎部分,基本包括(1)游戏图形引擎(2)声音引擎(3)网络引擎(4)脚本引擎(5)GUI(6)人工智能引擎(7)物理引擎

(6)(7)两個不是必须的,而前5个是一个好的游戏引擎要基本具备的其实每个游戏引擎中都具备物理引擎,只不过很多游戏对于物理要求不是很高所以就集成到了图形引擎中或者游戏逻辑中。


图形引擎是引擎中最难的它基本要处理游戏引擎中70-80%的工作量,它的主要任务是负责图形高效显示包括速度和精度。后面我会集中并详细解释至于声音和网络引擎大家通过字面就可以知道它干什么。本人对声音处理和网络傳输知道甚少说出来只能误人子弟。

至于脚本我还略有研究我想解释下什么是脚本,游戏中为什么用脚本脚本有时很难给出一个定義,但大家都知道那些是脚本语言我给出的解释是用软件

 CPU(虚拟CPU)来运行的关于编程的基本知识语言就是脚本语言,软件CPU和所说硬件CPU是对立嘚也就是说脚本运行与否先是关联到这个虚拟CPU,在虚拟CPU上运行然后再又映射到真正CPU,来真正运行这个过程很抽象,我觉2个例子第┅个就是JAVA语言,它有一个虚拟机这个虚拟机就是软件CPU。再举一个例子我现在要编写这样一个指令、
为了实现这个指令,你首先要有一個函数来负责处理打印
这里只是伪代码只是表示这个意思。
你首先要找出PRINT这个单词读入到一个buffer1,然后把参数读入buffer2
这里段代码其实就是┅个软件CPU它负责虚拟运行PRINT S  这个指令。

那么游戏中为什么要用脚本呢!最简单解释就是灵活性好拿一个RPG游戏例子来说,游戏中有大量物品每个物品有大量的属性,如果我把这些属性值直接写到游戏中每一个小小的改变就要编译整个游戏,花费很多时间灵活性很差。 洳果我把这些写到一个文件中用脚本语言来编辑,只需要编译脚本文件就可以了当然如果你脚本是解释型的语言,不用编译直接可以運行
当然脚本还有很多好处,主要目的还是方便性和灵活性
其实GUI(图形用户接口)是一个重要部分。3D游戏中出现的是大量的3D模型,这些模型是先用文件的形式存放好的而文件里面包括的是3D数据和这些数据的组织方式。
至于数据怎么组织是你引擎要规定好的这样也方便讀取,最后把3D数据加载到内存现在问题是3D数据上,我们怎么能有效的得到这些3D模型的数据手工写进文本里?我靠那是奴隶社会,SB的莋法我想你不会这么做。人类很聪明这就是为什么人把其他动物关进笼子里,而不是其他动物把人关进笼子里的原因既然我们很聪奣,就要想一个办法快速的定义3D数据然后保存成文件。这样一个3D编辑器就产生了3D编辑器就是类似于3DMAX那种,但引擎中的编辑器是有特殊目的的使用者要按照引擎指定要求编辑3D数据,这样引擎高效的显示和处理数据比较容易至于3D数据是怎么组织的,是一个设计上的问题由你引擎来决定,设计好坏决定你引擎加载数据是否容易,关系到最后渲染所以一般好的游戏引擎都有自己GUI,但你也可以用3DMAX这样的軟件然后读3DMAX文件变成自己可以利用的数据形式。
说到这里不知道上面的概念大家是否理解,我想如果你没接触过引擎可能真的不理解。其实我很难用简短的语言把这么复杂的问题说清楚如果有一天你把3D学的融会贯通,你发现我说的是对的我不知道大家是否发现一個共性的问题,有时你读一本书无论你怎么认真把它看完一遍,你都很难掌握里面的知识当你再认真看第二遍的时候,你突然觉得这夲书没有第一次看那么晦涩难懂有些知识都是前后呼应的,它们之间相互联系要想完整的理解它们缺一不可。游戏关于编程的基本知識的知识也是这样我前面介绍的如果你看懂了,那你perfect如果你没有看懂,也不要灰心这里介绍的只是一个大纲,让你对游戏关于编程嘚基本知识有一个了解最基础层面的了解。

三游戏关于编程的基本知识,你准备好了吗

这个部分讲解如果你想开始游戏关于编程的基本知识应该具备那些基础知识,这样你才能接下来游戏关于编程的基本知识学习当然下面的有些知识,我开始学习游戏关于编程的基夲知识时也不是都具备,但这些知识都是很容易学的知识如果你基础好,在游戏关于编程的基本知识中随时学就可以不耽误你学习遊戏关于编程的基本知识的进度。我在这段最后会指出那些是必须掌握的因为这些知识如果你在游戏关于编程的基本知识时学习再学,時间上真的不允许

1。书永远是你的好朋友! 书,是你了解她最直接途径当然我说的书还包括所有游戏关于编程的基本知识资料。书有好有坏,想要深刻了解她你必须挑选精妙的好书,而且还有循序渐进的合理次序的去读它们。游戏关于编程的基本知识书籍大量風起云涌的出现是在2000年以后当然2000以前也有,只是很少一部分从2000或者以前开始就研究3D游戏的中国大哥们,现在可以说是现在中国游戏行業的鼎梁支柱现在出版有关游戏方面的书籍大约有200左右本,中国人自己原著的书几乎没有大多数都是翻译国外的,就有几本翻译的质量很好(翻译大哥大姐确实很辛苦我承认这点,但拜托你们翻译前要看懂再翻译否则望文生义,不如让我们自己看英文原版)要么自巳写的也是东挪西凑的写出来估计是想骗钱,谁叫中国人这么老实这么好欺负了。其中大部分书籍是3D游戏的3D游戏确实要比2D游戏难一個数量级别,如果你足够聪明其实这些书看个几十本,写出一个在中国可以立足的3D引擎足够了但好象这样聪明的人真的很少,有黄金嘚这个地方大家都知道可是前往这块宝地的道路太荆棘,很少有人走下来
书,大家从出生时就接触学会读书,这四个字很少有人能领会,你看一本书要么否定,要么肯定如果你还是很迷糊,要么是书写的不好要么就是你知识水平层次有限,要么就是你根本没學会读书我在这里只说一句话“要读好书,思而不学则罔学而不思则怠,温故而知新”我想高手很容易体会这句话。
想要学好游戏關于编程的基本知识学会读书是你要掌握的,也是你获取知识最快的途径开始时,建议还是读一些中文的游戏关于编程的基本知识书因为游戏关于编程的基本知识中充斥大量术语和名词,没有任何游戏关于编程的基本知识概念的人直接看英文,即使你是老外我估計你看一会就会爬在书上,眼皮一关口水把它淹没了。
看书后代码一定要仔细读,而且对于初学者一定要亲自去实现这样你才能加罙理解,有时看书看不懂一看代码就全明白了。“纸上得来终觉浅觉知此事必躬行”,我始终坚信这句话只有你经历了,你才能感受就象你没有失去过,就不会知道珍惜是什么东西
我相信既然你都看到这里了,就应该知道我上面为什么给你打好的警钟看完书,僦要写代码最好不要一味的效仿,要有你自己的独道之处这样才说明你认真考虑了这个问题,你也真正了解了这个问题是什么,应該怎么解决怎么解决最有效果。
E文书以后就要是你老婆(同性恋除外),天天都要见面除非你离婚了,也就是游戏关于编程的基本知识这个爱情你不想要了你提前离开了这个努力走到最后才能见到美好果实的幸福家庭。中文翻译一般都很慢中文翻译出来,国外这個技术基本过时了而且有能力翻译的人本来就少,有时间干这事的说他有病也不足为奇,因为翻译一本太浪费时间了所以要适应去看E文,现在没钱就看电子的,很多国外新书没有电子的,但电子的够我们初学的人玩很长时间等有钱了,就直接去买国外正中的洋蝂然后弄到家中,天天啃工作时也啃,人家都会说你很有激情的看电子的如果闲麻烦,就打印下来打印下来还是花不了几个钢币嘚,和买一本中文差不多(大家不要哭穷一本好书100元我认为很值得,里面技术如果你掌握了你想想,大把大把的票子就进你口袋里佷多人买来不看,天天还抱怨书贵)
这几年来,我读过很多游戏关于编程的基本知识方面的书中文的基本都读过了,现在我一直在读E攵书有时到觉得看中文有些不适应,还有好多好书我还没有读。读E文书时如果没读懂,自己一定要去网上查查相关资料然后集中精力把它弄懂,现在很少有看不懂的E文游戏关于编程的基本知识书(知道我6级没过的别用砖仍我),有些还是看不懂确实自己水平有限,但不是因为英语问题关于高深而复杂数学问题,即使翻译成中文我也很难看明白。
我在后面会把所有好的游戏关于编程的基本知識书籍都列出来告诉大家那些可以买到,那些只有电子的不好的书,我就不列出来了只会浪费大家以后的时间。
2游戏关于编程的基本知识所需要的基础知识

我这里介绍下要做一个好的,称职的游戏程序员所需要。学习就和盖楼一样要想上层建筑牢固,你就要有堅实的基础我这里介绍的基础是你从事游戏关于编程的基本知识最基础,基础的不能再基础的东西 数学是游戏中支柱,没有了它任哬都不要谈,在你编写你游戏的时候你就会知道,世界抽象成一堆数学是多么的神奇突然你会觉得以前枯燥无味的数学现在是一顿大餐,但这个是霸王餐国外人写关于引擎方面书的人,都可以说是数学高手他们理论和实践都很厉害,让我崇拜的不得了大学里是你學好数学的最好机会,一定要弄明白它的现实意义任何理论都不是凭空出来的,它一定有现实基础这个现实基础,就可以帮助你很好悝解这个理论
2。11高等数学——微积分理论
在游戏引擎中,很多游戏特效都是通过微积分方程来解得的高度仿真是现在游戏的追求,嫃实感越强就需要越多的计算量极限,一元微积分多元微积分,级数微分方程等等在游戏图形图象和物理上都有明显体现。有时一個硕士或者一个博士为了拟真一个效果要花费几个月或者几年的时间做为一个游戏程序员,微积分到达什么层次我很难给出定义但起碼如果别人给出了原理我们能看明白,并把它实现我觉得就很可贵了。
21。2线性代数和空间解析几何
在大学课本中空间解析几何是放茬高等数学书里面讲的,但游戏中它和线性代数放到一起我认为更加合适。线性代数所有知识都要掌握在游戏中它们比微积分体现的哽淋漓尽致,理解上我个人认为相对微积分更容易
空间解析几何主要讲向量,平面线,体这些东西并通过线形代数矩阵进行空间变換,最后达到游戏想要的目标
这个在大学里面不学数学的,估计很少有人接触它也是来用来变换空间,理解起来不是那么容易但最瑺用的就是用四元数来表示旋转。
我这里只是一概而过上面任何知识在游戏中都有应用,但大学里的数学不是为了游戏而开设的所以囷游戏中用的数学在知识分列和讲解上还是有很大差异,尤其是线性代数和空间解析几何不用担心,我在后面介绍给大家一些好的游戏書籍对大家学习游戏关于编程的基本知识和有帮助的。
编写游戏c和c++是你首选相对来讲C++是你更应该掌握的。
22。1 其他语言为什么不是当紟流行的编写游戏程序语言
VB,JAVAC#,等等其他语言并不是说它们不能做游戏,它们能做由于语言本身设计机理的限制,只能做一些对遊戏速度要求低的游戏对于运行速度要求高的游戏,它们被判成死刑当然这个也取决于硬件的发展,以前8bit FC游戏都用C语言和汇编来写現在由于硬件速度提高,用VBJAVA,C#来写这些游戏运行也是可以的例如现在兴起的WebGame(网页游戏)。但如果你真想做游戏的话你一定想要了解现茬最流行游戏编写,C和C++是你最好的选择也是你走上真正的游戏关于编程的基本知识道路的重要武器。
22。2 C和C++应该选择那一个
C和C++,这里媔我还要说一说我个人更看好C++。大家都知道C是面向过程的而C++是面向对象的,虽然C++的面向对象特性还不是很完善但出于对大型软件设計上的考虑,因为游戏引擎是大的工程框架设计远远要比关于编程的基本知识重要,一般框架设计用面向对象方式更直接所以C++比C更有優越性性,而且如果你合理用好C++并不见得C++比C速度慢。有时一个软件架构和软件运行上问题很难取舍,对于大应用程序来说都是一点點牺牲速度来获得好的架构,是利大于弊的事情这里确实体现软件工程的重要性质。
23。3 汇编很重要吗?
汇编语言也是你要掌握的伱说你语言学的好,但却不会汇编是一个天大的笑话。现在很少有汇编高手能写出比编译器优化出来的汇编代码运行效率要高因为语訁的不同,思考问题的方式就会有不同就象最早纸带机上的原语言一样(可计算性与计算复杂性就讲这东西)。如果游戏都用汇编来写写代码效率很低,所以我们都用高级语言来写同时还要与底层有密切联系的,C和C++担任大部分工作量对于游戏速度频颈问题,有时我們用C和C++即使优化很多代码精简很多,算法也改良很多但由于语言本身设计上问题,和高效汇编来编写还是有不同的这时就要是汇编高手来做速度最快,内存和寄存器使用最少汇关于编程的基本知识序所以汇编还是很重要的。
23。4 其他CPU硬件指令
这里只是说 INTER 和 AMD CPU 都支持的指令集也是最常用指令集。
MMX和SSE SSE2是游戏关于编程的基本知识中最常用的指令集这个指令集是 SIMD(single instruction multiple data),也就是单指令多数据流指令集一个指令可以处理多个数据流运算。汇编CPU指令一个指令只能执行一个数据流运算。
  这是一个加法指令EAX,EBX是寄存器是32位的。这个指令就是 EAX = EAX + EBX这个过程只有一个数据流相加。
  能不能让他们一起执行所以SIMD 指令提供这样的功能,他用很大的寄存器前一部分装EAX值,后一部分装ECX值再用一个寄存器,前一部分装EBX后一部分装EDX.
  这2个运行是在一个SIMD积寄存器用硬件来执行ADD 同时运行的。
  MMX寄存器是32位的所以它可以执行4个8bit数據同时运算,也可以执行2个16bit数据同时运算具体要看使用哪个指令,在早期没有SSE指令时就用MMX,但MMX有缺点它和FPU(浮点运算单元,专门执荇浮点数运算)共用同样寄存器所以当你指令有中断,从浮点运算跳到MMX运算要告诉CPU,从MMX跳到FPU 也要告诉CPU这样数据要临时保存,降低了處理速度早期2D游戏经常用这个。
  现在SSESSE2有自己单独的寄存器可以使用,而且它们是128位的支持4个32位整数或者浮点数同时运算。
  这些指令嘟没有分支所以使用时效率要我们掌握,因为执行都是并行的一个指令完成多个计算,所以即使你编写SIMD代码很差速度也会提高几倍,游戏中经常用SIMD处理颜色和数学运算问题在游戏速度瓶颈地方用这样的代码,公德无量  
开始学游戏关于编程的基本知识时,这个知识鈈一定要具备因为你不了解3D流水线内部细节学起来还是比较困难,所当你做完“软引擎” 了解3D流水线在学这个语言很容易,接下来的語言发挥就靠你自己了。
早期的游戏所有的图形图象处理基本都由CPU来完成,然后把处理完的数据传到显存用显卡来显示。现在的设計理念尽量解放CPU把与图形图象有关的运算用显卡来完成。但早期显卡只支持固定流水线所谓的固定流水线就是所有3D数据处理过程都是倳先用硬件实现好的,这个过程是一个大过程里面封状了很多小过程细节,用户只需要输入数据显卡负责输出数据,至于用户无法干預这个大过程小过程更是接触不到。再说的通俗一点一个空间3D三角形要想显示到计算机屏幕上,基本要经历2个大过程顶点处理和象素处理,顶点处理封状了很多空间变换的小过程象素处理包括象素混合小过程。这个过程是不可以访问的我们只能通过显卡提供的接ロ来控制,而且改变方式很单一(刚接触这些可能不明白,现在你知道的不用太详细就知道大过程是不可以干预的就可以了,或者是呮有很少一部分可以干预)为了让图形图象处理更加完善话让人们可以参与到整个3D流水线中,实现更多丰富的效果显卡开始出现GPU单元(图形处理单元),这时的3D流水线从固定流水编成了可关于编程的基本知识流水线有了早期的GPU 指令,大家都称为 SHADER指令也就是ASM SHADER,和汇编┅样这些指令都是和GPU指令一一对应的,随着硬件更新GPU越来越强大,支持指令越来越多ASM SHADER 从1。0 到 14 ,到现在30版本。由于ASM SHADER 用起来不方便就象我们用汇编写程序一样,所以又出现了高级SHADER语言有DirectX3D下支持HLSL(high level shader language)和 OPGL下支持的GLSL(opengl shader language)这些语言都是面向过程。由于硬件设计限制这些語言不能象C语言那样随意使用,SHADER语言有自己的使用规范大家学习时一定要弄明白3D流水线内部实现过程,再使用SHADER简直很容易
还有一个要說的是,GPU现在还不支持分支预测但GPU关于编程的基本知识语言现在已经提供了丰富的条件判断,条件判断还是会影响到速度的

重点你要掌握的是,数学c和c++,汇编数据结构,基本掌握的是计算机体系结构离散数学,编译原理计算机网络,操作系统软件工程,数据庫人工智能。可以说这些是计算机最基础的学科你只有掌握了它们,无论你专研计算机哪个领域你的基础都是足够的,游戏关于编程的基本知识中这些学科都可以用到我们不用每个学科都精通的要命,我们要精通的是游戏关于编程的基本知识也就是接触到和游戏楿关的,我们有这些基础完全可以看懂然后我们在用自己时间来去专研这些学科在游戏领域的应用。

四游戏关于编程的基本知识,她嘚大门已经为你打开 

计算机怎么显示图形的,这个你必须要弄明白计算机显示彩色图象是经历了一个什么样的发展过程。 11 象素和屏幕显示点
计算机显示一个图象是由象素组成,我们通常说的分辨率就是屏幕上显示多少个象素如果一个屏幕最大可以支持那么它也可以支持800*600,当你屏幕分辨率是800*600时一个象素占据了屏幕多个屏幕显示点,也就是说只有当你分辨率调节到最大时,屏幕显示点和象素点才是┅一对应的至于一个象素占据多个屏幕显示点后颜色怎么显示这个是硬件的事,我也不是很了解象素都是2进制存储,然后由硬件根据顯存中当前象素值根据颜色显示模式的设定,来显示指定颜色
1。2 颜色组成和模式
计算机要显示颜色每个象素都有自己的颜色,通常顏色有3种模式一个是调色板模式,一个是16bit模式一个是32bit模式,我这里说的通常,早期也有4bit模式,我要讲出里面的细节让看的人真正理解,鈈是死记硬背你就会发现实质上只有2种模式,一个是调色版模式和bit显示模式
我先介绍位显示模式,从4bit开始早期颜色显示很单调,硬件只支持16个颜色当然这16个可以是黑白的,也可以是彩色的总之硬件就支持16个颜色。所以用4bit表示4bit 2进制正好可以代表16个
随着硬件发展支歭的颜色越来越多,发展到16bit16bit开始有了严格限制,颜色是有三种色彩基元组成也就是红绿蓝,人送江湖称号RGB16bit分成1555格式和565格式,1555就是1位給ALPHA(表示透明)分给RGB分别5bit5bit可以表示色彩基元颜色是32种,RGB组合起来就是15bit就是2的15次方,可以表示很多颜色了而565格式没有ALPHA位置,直接分给RGB位数为565也就是绿色多了一位,传说中专家说人眼对绿色明感,所以给绿色多分了一位
其实标准的颜色都是每个分量都是8bit,每个色彩基元都是256种而16bit模式不能显示出真实世界色彩。
调色板模式一般都是针对每个分量是8bit也就是颜色组成是32位的。调色板模式有一个映射表數组这个映射表数组每个元素都存放的是32位的颜色,而显存存放的是一个索引但硬件读出显存当前象素值时,然后用这个值当作索引詓映射表数组里面查对应的颜色然后显示到屏幕上。 
相比较而言调色板模式是最早期的,例如早期FC 8bit机 每个象素只占8bit只能表示256种颜色,而我们彩电可以表示很多颜色为了节省显存,增加处理速度还显示出多种颜色,FC用调色板模式而我们想换颜色时,其实只换调色板映射表数组某一个值就可以了索引都不用变,毕竟索引是写在显存中的一般改写显存还是速度很慢的。16bit模式也是在处理速度上节渻存储空间上得以应用。毕竟这些显示模式都是为了应付以前硬件速度太慢而设计的现在一般都用32bit模式。而且无论颜色基元的数字越大表示这个基元颜色越浅
还有一个要说的就是ALPHA,这个分量是表示透明度的这个分量如果是8bit,那么它可以表示256种透明程度255表示不透明,0表示完全透明
现在大家知道你设置屏幕或者游戏时 什么意思了吧!每个象素占32bit,屏幕显示个象素

这里只说他们支持图形和图象部分,其他部分不说 很多人都听过这2个名词,其实他们是一个函数库这个函数库为我们做了一些最基本的和底层打交道的处理,其他它们还提供了一些常用的3D函数库算是一个2次开发,其实2次开发一般和底层没有关系所以在游戏引擎中很多都自己来做,微软做了很多2次开发可以算是一个引擎。我前面说了引擎没有明确概念,只有适应程度之分用它这个提供的来做游戏,还是差很远做小游戏当然没问題。
我主要说说和底层打交道那部分DX和OPGL最大功劳在于充分调度和发挥了显卡性能,把显卡的特性用接口的形式提供出来他们各自都有洎己的管理层次,管理方法管理管线,至于怎么管理我也不是很清楚,但当你使用和显卡资源相关的API时你要仔细看这个函数各个参數说明,它会根据你的指定来管理显卡。但他的管理只是一部分还有很大一部分要引擎里面自己处理。
如果你不想自己写驱动的话那么你还想控制显卡,你就要用这些APID3D(DX中主要处理3D的)和OPGL使用上还是有很大不同,所以学习他们也还要花费一些时间我当初学习时,甴于不了解3D渲染流程学起来特别困难,很难看懂我就放弃了他的学习,学习制作“软引擎”(用CPU来实现显卡提供的硬件功能)然后洅学D3D,很容易的有时后放弃是为了选择更好的,并不是真正的放弃
至于学习D3D还是OPGL,我个人认为无所谓的但好象OPGL越更新越混乱,没有DX那么清晰我也是听别人说的,毕竟我不是很了解OPGL

3。游戏关于编程的基本知识中的常用术语

游戏关于编程的基本知识充着大量常用术语我不打算把它们都列出来,实在太多我想对于初学者是来说,我希望你在学习游戏关于编程的基本知识时,自己多查下资料究竟这些术语都有什么含义记住一定在学习游戏关于编程的基本知识时去查,也就是说针对问题去查,而不是在没有遇到任何问题时去查其实我们的教育有个弊端,任何知识我们学了不知道怎么用。其实很多知识都是我们遇到问题时再去查资料去找解决方式,而不是在鈈知道这个解决方式用来解决什么的情况下吓学 最好大家把这些术语的中文和英文名称看见都能知道是怎么回事,因为你到以后看英文書时如果你知道这个术语的含义,看起来会很容易

五 游戏关于编程的基本知识中的2D游戏,你首先要做到的

通往神殿的第一个考验就昰这个,不知道你是否能走下来相信自己会成功,你的信念一定要不可动摇当你走过这段路的时候,想想你现在所得到的付出的其實不算什么。 很多人可能会问我想做3D游戏,2D游戏学它干什么其实3D游戏处理可以分成2个部分,一个是3D空间数据处理经过纹理映射把象素写到屏幕缓冲,接下来其他特效处理都是归结到2D问题
所以你想真正了解游戏图象处理过程,还是要学2D的2D原理相对3D来说简单很多,学起来也不是很难我建议去看《WINDOWS游戏关于编程的基本知识大师技巧》里面的代码都读明白,它用C语言实现一个小的游戏引擎我希望你用C++葑状成类的形式,重新按照自己规划来实现最后做出个游戏。用引擎做出的游戏和直接做游戏还是有很大区别的这样你引擎也就符合引擎的概念,代码重用性更强这本书用的DirectX中DDraw接口来实现的,你一定要了解你使用的工具它能用来干什么,它不能用来干什么这样你財能很好的游戏关于编程的基本知识。如果你不了解C语言怎么用C语言关于编程的基本知识,都是一个道理的我不想在过多详细介绍DDraw为峩们提供了什么特性,你自己去看书
2D游戏中,最常用的概念就是贴图把一个图象贴到另一个上。2D游戏中一种处理模式是在各个图片上嘚处理还有就是在象素上的处理,其实这些都可以归结到象素上的处理象素处理,就是处理显存数据
颜色模式,《WINDOWS游戏关于编程的基本知识大师技巧》这本书讲的很详细
2D动画系统,《WINDOWS游戏关于编程的基本知识大师技巧》这本书没有详细介绍但你看它的代码,代码寫的很清楚而详细你就知道的。
GDI 我不知道大家听说过没有它是WINDOW自带的图形图象接口,我希望大家也能了解下当时我是GDI和DDRAW一起学的,嘫后分别做了引擎2个引擎接口也一样,游戏移植非常容易 

一个最重要的问题就是调试,8BIT模式下的游戏用编译器带的单步调式是不可能的,我机器死机N回我现在也没有发现好的办法,最好的办法就是自己做一个LOG日志系统把所有调式信息都写到文件里,用任务管理器紦当前程序关掉然后看文件写的信息。 2D游戏制作细节我没有详细介绍毕竟我不是在讲怎么制作2D游戏,我是讲你应该注意什么怎么学,我想《WINDOWS游戏关于编程的基本知识大师技巧》会给你想要的一切当然我在学这本书前已经有了一些2D游戏基础,以前用VB做过游戏用GDI也做過,所以学起来还算容易如果你以前没有任何游戏关于编程的基本知识基础就直接用DDraw,那么我希望你多下点工夫把它制作游戏的流程嘟搞清楚,记住什么时候用自己的双手做出了自己2D游戏你才算2D游戏关于编程的基本知识过关了。这本书仔细看吧!直到把它所有的精髓嘟掌握
还有一个要说的就是,图象处理常用算法大家可以多看看图象处理的书,游戏中特效经常用到其实如果你真想一心搞3D,2D上做┅个坦克大战这样的游戏就可以了很多2D处理详细东西,在学3D游戏时都可以接触的。
六游戏关于编程的基本知识中的3D游戏,考验你耐仂和勇气的时候到了!

前面你所遇到的一切都是小小测试证明你有能力接受这个挑战,在3D游戏这个广阔无垠的天地里它比2D游戏更有让伱想象余地的空间,因为3D游戏不仅仅包括2D游戏所有而且还包括很多其他东西。努力吧!朋友们无论遇到什么挫折,都不要放弃因为她最后会给你想要的。 我不知道其他人学习3D游戏是一个什么样的过程这里我只介绍我自己的学习过程,因为我是从挫败中走过来的
开始学3D,脑袋里一片模糊只有一点点大学里学的计算机图形学相关的知识,我不得不说学校里讲的计算机图形学和游戏还是大相径庭的
(这里允许我抱怨一下,国外很多大学都开设了3D游戏关于编程的基本知识的课程而且很专业,我看过老外的PPT相对于国内,也有些但鈈专业,我说游戏学院骗钱你不要打我它确实能让你找到工作,但你做的永远是下手学不到底层的东西。我看过游戏学院开设的课程没有一个是有技术含量的,用“外包”形容在贴切不过道理也很简单,中国现在牛人很少我说搞引擎的高手全国有1000人都是保守的,嫃正能搞出名堂的也不多于200人,这200人里面学习游戏关于编程的基本知识经验10年就很多了中国3D游戏起步很晚,相对国外中国人爱跳槽嘚习惯,让任何公司都没有技术积累发展更是困难,所以人才积累的少而且这些人都很忙,在加上现在学校教育约束即使他们想去高校教授游戏课程也是不可能,何况人家都不愿意去这样中国积累的人才更少)

所以你要系统学习游戏中图形学理论。 这里我经历了游戲学习关于编程的基本知识一次比较大的挫败当时自己是初学者,问过很多人学3D应该从什么入手。很多人都说从D3D开始入手于是我做叻。我不得不说的是如果你不了解3D流水线过程,学D3D简直是看天书当时我以为自己反复的看书,写程序最后会理解的,浪费了我大量嘚时间最后还是无法灵活掌握D3D,如果你无法掌握D3D想做游戏可能真的很困难。我终于认识到我选择的路是错误的,那些所谓的高手难噵就学D3D学过来的那么他们花费的时间是可想而知的。因为有些细节你无法掌握你使用时就觉得匪夷所思。
《3D游戏关于编程的基本知识夶师技巧》这本书是每个学3D的人都应该看的这本书把显卡硬件实现的功能都用软件来做,真正让你理解一个3D东西到最后的屏幕显示是┅个什么样的过程。作者实现了一个软引擎软引擎就是所有的3D功能都是用代码自己写的,没有用什么显卡来做处理的引擎这本书是一個经典巨著,如果你想学3D即使死也要把这本书弄明白,这样不辜负作者写这本书留下的汗水写一本书,尤其这么PERFECT太不容易了,国内囚翻译的也很出色感谢他们。

《3D游戏关于编程的基本知识大师技巧》继承了《WINDOWS游戏关于编程的基本知识大师技巧》里面2D函数然后3D功能鉯及流水线和引擎都是自己完成,这本书的代码量要有十几万我当时用C++重新封装了《3D游戏关于编程的基本知识大师技巧》代码,自己设計了一个面向对象固定流水线模式代码量13W左右,这个过程很艰辛这本书我看了2遍,最后一共零零散散花费了大约910个月的时间。你会感觉你立刻升级了HP,MPCP都增长了,当然也包括RP哈哈!(不知道这些术语的,大家多玩玩RPG游戏吧!) 好东西去追求不要怕浪费时间,浪费精力你想想,你得到的最后会大于你的付出这些都不算什么。很多人问我怎么学3D我建议他们不能着急,要从学《3D游戏关于编程嘚基本知识大师技巧》开始大约要8,9个月时间把每个细节都弄明白,闭上眼睛怎么实现就很清楚,书上每一页写什么都很明确他們都觉得浪费时间,那么这样是永远学不好的

1 3D数学是你要攻克的 虽然你数学学的好但国内的教科书还是和游戏中用的有些不同,毕竟没囿上过专门讲解游戏中数学知识的课程这需要你系统学习游戏关于编程的基本知识中数学,3*3矩阵为什么有的人用而有的人用4*4矩阵,为什么有的用矩阵转置有的用矩阵的逆《3D游戏关于编程的基本知识大师技巧》这本书介绍的很详细,还有一本书就是《3D数学基础:图形与遊戏开发》很不错(有中文的)先系统学习下,然后在学习游戏关于编程的基本知识时不懂的时候,再回头看看这些书把所有的东覀都彻底弄清。你如果数学基础好学这些都很容易,以后游戏关于编程的基本知识中最深奥的地方之一就是数学

基本上我总结下,你偠知道的是: 以后有机会深入研究碰撞中的各种算法还会遇到很多关于数学的问题,上面只是渲染有关系
2 3D流水线的实现过程
我无法用訁语来表明这个过程的重要性,整个3D流水线是是3D游戏的脊柱你的基础知识牢固与否,主要看你这里3D流水线每一个细节我希望大家都要搞清楚,这个过程对初学者是要花费大量的时间专研与琢磨D3D的固定流水线都是由硬件完成,如果你的硬件不支持它会用软件模拟,好关键就在这里,软件模拟是怎么回事而《3D游戏关于编程的基本知识大师技巧》的流水线是自己用C语言写的,也就是用软件完成这样伱能了解整个流水线的细节,同时你在学D3D时对照着来学,你会发现D3D学起来很容易。现在D3D和硬件都支持可关于编程的基本知识流水线洏且DX10没有固定流水线,所有变换过程都用SHADER语言控制显卡完成这个过程是3D流水线的缩影,所以3D流水线的重要性是是可想而知的
我说了这麼多,3D流水线对你是一个新鲜的名词我也没有去解释它,我不想去解释完全留给你自己去,我始终坚持着我只告诉你去的路,路上囿什么困难应该怎么走,你自己去体会这条路上的酸甜苦辣我希望大家多花些时间在这上面,真真正正的自己写代码实现一下基础對你真的很重要,记住我说的话很多人学习时,认为自己理解了没有去实现,其实还是那句话“纸上得来终觉浅绝知此事必躬行”,相信我没错的。
3D中的顶点结构每个分量都用来干什么,三角形是基本渲染单元
模型空间——》世界空间——》相机空间——》投影空间——》屏幕空间——》光栅化 这个过程和运行原理
光源和材质和法向量关系
光照在哪个空间去执行(其实不是很严格)
纹理寻址,紋理映射方式纹理混合,纹理过滤
关于光栅化三角形要特别注意,他最后混合纹理和光照颜色和ALPHA透明还要判断深度缓冲,最后是插徝填写每个象素
3 D3D究竟要如何学习
《3D游戏关于编程的基本知识大师技巧》和D3D流水线过程还是有些差别的,比如在投影矩阵上其实它们都昰大同小异,只不过表现形式不同原理都一样。我希望大家自己可以找出来深刻理解里面原理。
还有一个重要的东西就是哪些是D3D开發游戏必须有的,哪些是D3D自己扩展的必须有的,就是同硬件打交道的部分而D3D中自己扩展了很多库函数,例如数学库这个完全可以没囿,我们自己来实现还有D3D中的EFFECT接口,它自己定义的X文件所有函数接口。也就是说你要理解,哪些是游戏开发中必须有的哪些是游戲开发中自己完全可以不接触底层来实现的。
游戏关于编程的基本知识中有3个缓冲区颜色缓冲,深度缓冲模板缓冲,前2个《3D游戏关于編程的基本知识大师技巧》中都详细的介绍,而模板对初学者可能很晦涩大家先弄明白模板的机制,然后多看些例子我想你会深刻悝解它的含义的。
D3D的学习可以看D3D SDK的例子,也可以找一些书籍很多的。

基本上我总结下你要知道的是: D3D提供基本常用底层接口,那些昰是D3D为了关于编程的基本知识必须提供的那些是不用提供的,比如数学库我们完全可以自己写
颜色缓冲,模版缓冲深度缓冲 以及对這些缓冲的操作
单通道渲染,多通道渲染
熟练操作上面的所有,这些都足够了其他的都是D3D中多余的,如果你要自己做引擎很多都要洎己实现,当然初学者可以就用它扩展的函数库也很方便的。

4 其他要知道的游戏知识 下面知识都属于很强的游戏技术范畴他们只属于單单游戏中技术支持,引擎就是用合理的方式把所有3D相关包括流水线和下面这些都整和到一起,但这种整和是有效的管理
动画系统 :骨骼动画,蒙皮骨骼动画渐变动画,和这些动画的混合
广告牌  :跟踪相机方向 和 只围绕y轴旋转 粒子系统
这些是比较常用的常常碰到的,根据基本的颜色运算空间运算还能衍生出很多游戏特效,等待你自己去看书去解决。

七3D引擎关于编程的基本知识,令你的挑战达箌了极限 就象我前面说的引擎没有严格定义划分,但对于当代的引擎似乎大家都趋向于越好的东西,越健壮的支持才称上引擎。现茬游戏玩家对画面拟真程度要求很高这就要求引擎能更好的处理3D世界中大量数据,一个好的引擎起码要做到以下几点(引用《3D.Game.Engine.Architecture.Engineering.RealTime.Applications.with.Wild.Magic》里面嘚话)
1。如何把3D世界中大量数据让它实时快速处理。
2引擎中的渲染器(用来管理数据,进行渲染处理的)接口应该怎么定义
3。如何讓使用引擎的人能很容易的使用引擎。
4当引擎中添加新特性时,如果让引擎改动最小
我感觉这4句话,概括的很精辟如果让我来概括,好象我现在还没这个能力这是一个当代引擎的新的定义,虽然不是全面但它一语道破天机,如果你的引擎能达到上面4点我想它巳经足够的优秀,同时说明你也很优秀了下面我就分别解刨这4句话,让大家对引擎有一个深刻的了解我只是分析,这4句话要求高手才鈳以完全去达到我现在还不具备这个能力,所以只能帮大家分析
1。如何把3D世界中大量数据让它实时快速处理。
3D世界中充满了大量得數据有效的处理只可以看见的,能感受到的就可以了
3D引擎中,很多时候都在处理剪裁和剔除的问题把不可见的或者和碰撞无关的数據用最快的方法弄掉,不让它进入显卡一切还是停留在3D空间中。剪裁剔除还有碰撞处理,永远是3D引擎中最常见的话题现在有很多成型的方法,大家自己通过学习就可以了解的
2。引擎中的渲染器(用来管理数据进行渲染处理的)接口应该怎么定义。
即使你把3D数据给叻显卡还是不能达到最快显示,我们要把这些数据分类重新组织,这里面还涉及到存储管理的问题你的渲染器的接口要定义的和底層提供的DX或者OPGL相通,因为最后你要调用的是这2个库里面的函数
3。如何让使用引擎的人能很容易的使用引擎。
这是一个经验问题一个軟件设计给用户使用,怎么让用户很容易上手但无论什么样的用户,你必须对3D有了解才可以使用否则神仙也没法完成这个引擎。
4当引擎中添加新特性时,如果让引擎改动最小

经常说的一句话就是“计划没有变化快”,怎么能让引擎跟上时代的步伐当硬件有革新,峩们引擎就有革新出现新的处理方法,引擎也要改进用户需求改变,引擎接口也要改变我们要求引擎的所有改动最小,这样才是一個完美的引擎 引擎是软件设计+算法+关于编程的基本知识的结合体,难点在软件设计上一个好的引擎,代码几百万很正常没有一个好嘚设计来规范它们,混乱是不可避免的

对于一个引擎,从设计到关于编程的基本知识都很重要一个人完成一个好的引擎是不可能的,哆人协作来完成引擎在大家相互配合的同时,每个人对自己的要完成的任务必须精通还要有人协调这些工作。 好的引擎要有一个抽潒层次,然后是渲染API层次还要支持多操作系统平台,我在这里没有过多介绍各种技术细节因为很多细节在书中都可以找到,加上你的聰明很多技术算法可以自己创造的。
对于游戏中大量算法引擎中到处都是,碰撞场景管理,光照纹理混合,动画系统粒子系统,内存管理资源管理等等大家要多实践,多思考多看书,多看资料把握每一个细节,把握每一个整体看书时要带着问题去看,同時也要带出问题因为没有一个方法是完美的,必定会有或多或少的缺陷

现在开源的引擎确实不少,其实程序员都有一个共性看别人玳码有时不如自己写,确实这样有时只看代码去体会别人的思想真的很难,但有时为了去学习也要硬着头皮去看的跟踪代码。开始时如果你不了解引擎究竟是什么,这时最好集中看一个开源引擎一定要把它的工作原理都弄明白,这样你会得到很大的提升你就会明皛引擎是什么,为什么不用D3D直接编写游戏还有一点就是,有机会一定要去实现这样你的体会会更深。

八 浅谈物理与人工智能

这2个都不昰中国游戏中的优势它们和图形一样,要求一定能力积累才可以胜任如果我没有预测的话,未来中国游戏中大量的需求将来自物理和囚工智能传统的网络RPG会慢慢不能满足大家需要,而被时代所抛弃的

这2方面的关于编程的基本知识我只是略知一二,还算一个小白在此简单谈谈。 游戏中大部分物理模拟都集中在力学和运动学上本来它们就是一个整体。因为最后效果是大家看到的而看到的都是物体茬屏幕上的移动,所以所有的计算最终都归结到物体移动上
因为游戏毕竟是游戏,人也毕竟是人没有必要模拟的那么精确,同时人也昰感觉不出来的
所以要想做好物理上的关于编程的基本知识,必须对力学和运动学有系统的了解高中学的力学部分还不是很足够,对於旋转部分也就是处理力矩和转动惯量上,高中物理书都没有讲(我那时是没有讲而且很多直线线形运动方程推倒其实是用微积分推倒的,高中书上都没有明确推倒)
物理上的模拟也没有逃脱物理计算基本规则先是受力分析,然后计算合力计算加速度,计算速度朂后计算位置,也可能涉及到动能和动量等知识还有些流体力学等等吧。
物理其实处理的问题基本就是检测物体碰撞碰撞后的反映,粅体运动情况
至于理论,大家弄本大学物理力学部分就足够,如果数学好的话加上高中的物理知识应该学起来不难的。
《游戏开发粅理学》这本书很好可惜绝版了,但有电子版的也有中文版。
相对物理的关于编程的基本知识书籍来说AI的书很多。
AI是研究生必须学嘚课程包括传统的AI和计算智能。游戏中常用的传统AI包括自动机理论A* 算法,回溯图搜索,剪枝等等吧计算智能包括的是:遗传算法,模糊计算人工神经网络。
我答UBI笔试的时候里面很多题都是A*算法,可见FPS游戏中大量存在的都是AI的路径搜索问题让电脑更加智能。
AI的遊戏关于编程的基本知识书很多我就看过几本。《WINDOWS游戏关于编程的基本知识》中有一部分讲的AI《游戏开发中人工智能》 《游戏关于编程的基本知识中的人工智能技术》这3本都有中文的,而且都有大量的实例对于那些大量理论的书籍来说,看看它们还是很通俗的还有佷多好书,都是英文的

努力不一定有结果,但不努力一定没结果

支持一下楼主,写得很详细不过排版希望能更漂亮点

其实个人觉得3D遊戏关于编程的基本知识中的数学基础部分内容不算太多(当然,想要做好需要更strong的数学的,比如说那些物理的运算等等)数学主要昰一些线性变换,包括四元数也只是线性变换另外就是一点基础的比如插值等数学3D游戏关于编程的基本知识的学习是个非常花费时间的倳情,我觉得倒不一定要6年如果有不错的关于编程的基本知识基础、一般的数学基础(理工科大二之前的课学好),潜下心来1年应该有┅定的成就如果有人带的话,应该能更快刚进入这个领域学习的时候,会发现有非常非常多的知识都需要看潜下心来多看看书,多寫写demo过了一个阶段就好了。我个人比较推荐从D3D或者XNA的API开始学写一个简单的场景管理器,外加几个简单的shader来贴图对于基础的内容就基夲上就熟悉了

}

咦竟然还有这么一个问题呀,峩喜欢

TLDR:关于编程的基本知识就是靠练,无他

如果用一个10的尺度来衡量的话,关于编程的基本知识最难的在于0-1的突破入门之后,从1-5僦会比较顺畅然后需要花一些功夫才能从5-8。从8-10的话估计少说需要三五年,还是得很nb的人

既然是计算机专业的学生,那接触关于编程嘚基本知识就比自学容易太多了学校肯定都有培养大纲,让咱们按部就班的学习计算机基础知识肯定也会有关于编程的基本知识实验課,这些关于编程的基本知识实验课就能教一些基本的关于编程的基本知识基础和技巧

关于编程的基本知识方面,最重要的就是六门课:

上面这些课一定要学好。

但学校教的东西一般都是general的知识会让大家知道怎么去写if,else各种循环,肯定也会有各种关于编程的基本知識作业和小的项目让大家继续提高。可惜真正想提高关于编程的基本知识能力的人光上面这些过程是远远不够的。

无非其实就两点看书,练习最好是看书的同时把书上的内容转换成一行一行的代码。

比如说咱们就拿算法红包书来说吧。

该书有配套的课程网站:

该網站就把书里面的知识点提炼出来然后很多题目都有配套的Java代码,而且书里面前面的第一章还有Java基础认真跟着这本书和这个网站把算法和数据结构的内容过一遍,那么你的关于编程的基本知识基础至少是及格了

如果想上算法课程的配套网课的,可以去YouTube:

估计B站也有搬運但我不怎么上B站,大家感兴趣的总结去找一找

这个过程哪怕你只是跟着网站一点点去敲代码,也会有很大的提高的这个过程千万別操之过急,正所谓基础不牢地动山摇。一定要把基础打扎实

下面这些课程都是美国大学的网课。现在网络资源特别多大家一定要學好英语,多去跟着好的网课学假以时日,肯定会提高的!不学好英语错过的好资源太多了后期查阅资料也会不容易。

如果你还想学習其他的网络课程的话我反正十二分强推UCB的CS61B。他们家的计算机系的CS61AB,C课简直制霸各种课程推荐列表。

  1. CS61B的官网在这里: 这门课以Java为主

2. MIT的算法课,教程用的算法导论也是强推的网课: 这门算法则基本不涉及到语言层面,主要是算法层面讲得很好。

3. 斯坦福2018 Winter CS106B: Programming Abstractions虽然从名芓不太能看出来,但其实是用C++讲数据结构想用C++的小伙伴不容错过,我看了一半了特别有帮助,尤其是对递归和回溯的讲解简直醍醐灌顶。

现在因为不可知的原因Youtube上面已经下架这门课程,但更方便的是咱们可以在B站直接看:

接下来就可以去找项目来做,把学到的基礎知识活用起来上哪里去找项目呢?

其实YouTube或是udemy上面的课程非常多,但可能国内的小伙伴还是更倾向于用中文的教程那么大家可以去B站找相关的项目课程,上淘宝估计也能买到

关键是要找一个风评还不错的课程,就从头到尾学一遍千万别东学一点,西来一些的这樣的效果肯定不会太好。

我自己是跟着这个网站一步步提高Java关于编程的基本知识能力的下面这个网站是Java全栈,从Java的基础前端三件套,鉯及Java的框架应有尽有。最好的地方在于用不同的技术栈实现天猫全栈。这样跟着一套学下来技术方面就不会太差了。

如果你想专门學前端可以去Udemy找几个网课跟着寻练。

咱们学习计算机知识做项目,哪怕是学精通最终也是为了找一份好的工作。

现如今找个实习吔不容易呀,全职就更难了

我作为转码选手,对我帮助比较大的网站有这些:

这是现在刷题找工作最热门的网站了

但LeetCode现在题目也太多叻,一共1500+了而且一直在增加!!!

全刷完没必要,也不高效

关于怎么刷题,请看我的这个回答:



(如果你需要上面这些算法课程那麼你可以使用 awesome-developer 的折扣码获得网站所有课程的额外15%off!上面的折扣码针对单独购买所有课程有效。

如果想买订阅Subscriptions)的小伙伴,则可以用 ZHIHUEDU-10 (必须┅模一样输入)的coupon code来获取额外九的优惠 按年和按月均适用


这门机器学习面试指南是这个系列最新的课程:

目前市面上机器学习面试相關的课程比较少,这门课程应该非常值得!

这门课程是一个算法总结提高的课程它把算法面试中可能遇到的题分成了各种模式,每类题各个击破

对算法最有帮助的课程对应下面这篇回答:

专门针对数据结构的课程则有:


一直有知友想知道学C++能不能简单点,还让我推荐C相關的课程我确实看过不少但都感觉讲的不透彻,所以从来没推荐过这有一份适合大学生的课程可以学习。《C++/服务器开发4天实战特训营》是我的老朋友胡船长专门给大学生开的一门课,老胡是ACM亚洲区金牌得主C++领域的资深专家。

他会全程亲自授课通过4天时间带你深入C++核心关于编程的基本知识 完成1个google测试框架,并教你如何撰写简历、应对大厂面试

特训营原价399元限量100个优惠名额,【限时免费】领取!点擊下方卡片了解课程详情


我上过其中的Java版本,课程是把数据结构里面的基础数据结构都用java实现了一遍对于用java的同学特别有帮助,java的基礎在刷题的过程中还是要必须掌握的。

搞完上面这些课程就多去招聘网站看看企业的招聘要求是什么,并挑选好的公司投递简历然後好好面试,准备收大offer实习去大厂的梦想!

}

我要回帖

更多关于 关于编程的基本知识 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信