想学习有关游戏引擎的知识,目前我该如何进一步学习

&a href=&//link.zhihu.com/?target=http%3A//book.douban.com/subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&游戏引擎架构 (豆瓣)&/a& 序言:&blockquote&……学习编程技能最好的方法就是写代码。在阅读本书时,强烈建议你选择一些特别感兴趣的主题付诸实践。举例来说,如果你觉得人物动画很有趣,那么可以首先安装OGRE,并测试一下它的蒙皮动画示范。接着还可以尝试用OGRE实现本书谈及的一些动画混合技巧。下一步你可能会打算用游戏手柄控制人物在平面上行走。等你能玩转一些简单的东西了,就应该以此为基础,继续前进!之后可以转移到另一个游戏技术范畴,周而复始。这些项目是什么并不重要,重要的是你在实践游戏编程的艺术,而不是纸上谈兵。……&br&&/blockquote&如果之后对某方面感兴趣,可以参考书里的引用,以及我的各个书单 &a href=&//link.zhihu.com/?target=http%3A//www.douban.com/doulist/522861/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&遊戲編程: 高階精選&/a&。或是在知乎问更具体的技术问题。
序言:……学习编程技能最好的方法就是写代码。在阅读本书时,强烈建议你选择一些特别感兴趣的主题付诸实践。举例来说,如果你觉得人物动画很有趣,那么可以首先安装OGRE,并测试一下它的蒙皮动画示范。接着还可以尝试用OGRE实现本书谈…
已有帐号?
无法登录?
社交帐号登录
2159 人关注
262 条内容
4149 人关注
329 条内容
27304 人关注
914 条内容
195 条内容
1099 人关注
449 条内容UE4: 学习虚幻引擎4的16条准则
UE4: 学习虚幻引擎4的16条准则
作为一个完全的新手,尝试去学习一个新的游戏引擎看起来会很可怕。你拥有了许多的学习教程、文件和建议,但是你却不明白怎样去开始或是以一个什么样的步骤去学习虚幻引擎4。你在不同的方向间摇摆不定,最终你会越来越迷惑和受打击。
作为一个完全的新手,尝试去学习一个新的游戏引擎看起来会很可怕。你拥有了许多的学习教程、文件和建议,但是你却不明白怎样去开始或是以一个什么样的步骤去学习虚幻引擎4。你在不同的方向间摇摆不定,最终你会越来越迷惑和受打击。
我花费了许多的时间去重构那些从零开始学习游戏引擎的方法。那些方法就是你最初需要关注什么、哪些是你现在需要避免的。
虚幻引擎4是一个完全的游戏引擎。它是一款极度深奥且复杂的软件,可以用来创造各种类型的游戏、环境、电影和可视化。
所以我们如何从零开始学UE4呢?
在这个教程中
你会学习将会指导你
更轻松地学习
虚幻引擎4的16道准则
1.获取虚幻引擎4
首先,下载并且安装虚幻引擎4。它是免费的。
下载方式:http://www.worldofleveldesign.com/categories/ue4/ue4-download-install-unreal-engine-4.php。(确保你的电脑硬件符合要求。)
建议的电脑配——
操作系统:Win7/8 64位
处理器:4核Intel或AMD,2.5GHz或更快
内存:8GB RAM
显卡:DirectX 11兼容显示卡
DirectX 版本:DirectX End-User Runtimes(2010年6月)
2.你想通过UE4实现什么?
学习任何一个游戏引擎最重要的部分就是知道你想从中获得什么。
你要追寻什么样的结果?
为什么你要学习和使用UE4?
为了制作一款游戏?
为了可视化?
为了游戏环境艺术?
为了游戏制作可运行的层次?
为了制作电影?
你可能会想,上面的我全部都想实现-当然,这样也可以。但是作为一个学虚幻引擎4的彻底的新手,你需要的是将这些范围缩小到一个特定的结果。这样当你熟练使用引擎后,你就可以延伸你的知识。但是在学习的早期阶段,还是专一比较好。(先专注做好一件事情,选好一个方向开始学习)
我曾犯了同一个错误很多遍,那就是当我甚至都没有打开这个软件时,我就想制造一个完全开放的世界环境。
我最初的专注点总是会放在创造游戏环境和关卡设计。所以我学习的关于游戏引擎的一切,会非常专注于如何成为一个更好的关卡设计师和环境艺术家。
这个准则我无需过多强调:
为什么你想学习UE4
你想得到什么结果?
决定你学习虚幻引擎4的一个特定的方向,因为它会指导你哪些地方需要关注,哪些地方无需太多关注。
3.你的第一个项目不要以制作
一个游戏或者是个性化的环境为目标
我知道这会很诱人。特别是当你看过那些由UE4制作的难以置信的作品后。
制作一款游戏或者个性化的游戏环境涵盖了许多学科和技能。任何一门技能都需要大量的时间去学习,需要在学习虚幻引擎4外的时间去提升。举例来说,3D建模、纹理或C++等。
所以将你的这些想法保留,将其视作你想实现的目标,不要将自己的第一个项目弄得太难。
在这篇文章之后,我会推荐5个项目作为你的第一个项目的选择。你可以在任何一个项目中注入自己独到的想法。但是当你开始时,不要将制作游戏或个性化的游戏环境作为你在虚幻引擎4里的第一个作品。
4.UE4里游戏制作的步骤
当你学习UE4或其他游戏引擎时,你最好对游戏和游戏环境如何制作有个总体的了解。对整个的过程有个从上至下的了解还是挺有帮助的。
因此,以下是一个游戏制作的一个总体的框架。这不能算是一个“标准答案”,而是作为一个囊括这个过程的方方面面的一个范例——
在制作过程中,上面的许多步骤都可能重叠。同样,测试、漏洞修复也会在整个的制作过程中呈现常态。
你可以注意到,我们会用到许多的学科和技能。作为UE4的新人,你可能很快就会在尝试制作你的游戏的时候开始害怕,因为你没有这个编辑器的任何基础知识。
现在,让我们开始学习如何通过虚幻引擎4来制作一个游戏环境吧!
5.UE4中环境创建的步骤
就如同制作一个游戏,做一个个性化3D游戏环境也需要许多不同类型的技能。
以下是一个个性化游戏环境如何制作的概述。当然不止这种方法;但是确实许多方法的其中一种。视情况的不同,一些的步骤也可以省略。
6.作为完全的新手你的目标
作为一个完全的新手,你的第一个目标就是学习最常用的功能和技术。这些是UE4和并且熟练使用它的基础。当然,这个听起来并不像会做一个游戏或环境那样的刺激,但是它会让这些看起来可行。
这些入门技术和功能包括——
这些是你想熟练使用UE4的一些重要的基础。
7.在前14-28天的学习过程中
每天最少花1小时练习
以天为单位建立一个系统性的学习。在接下来的2-4周,学习这个引擎的过程中,每天坚持1小时的联系。
1小时已经足够起步了。当然,你可以付出更多时间,但是1小时是你的下限。
我同样也推荐这个
8.设计UE4游戏先从游戏模板开始
创建你的第一个Unreal 4项目,确保使用以下的准则。
首先,使用一个现成的游戏模板。Unreal上有超过10个可供选择,如第一人称射击,第三人称射击,自上而下或侧滚动模板。使用任何模板,你可以在自己的项目上体验到基本游戏机制。您可以用反向工程的方法学习这些模板,并基于现有的功能做出自己的更改。
第二,选择使用Blueprint语言。 Blueprint是UE4中的可视脚本语言,不需要您具有任何C ++编程知识。使用Blueprint,您的可以在自己的项目中融入自定义行为。Blueprint是非常强大的,你可以使用它来创建自己的游戏和游戏类型,而不必学习C ++。
第三,在您的项目中使用初学者包(Starter Content)。您的项目可以使用其中的一些材料(静态网格,纹理和材料)。 使用这3个点将使你在正确的轨道上创建自己的项目。 那么,什么应该是你的第一个UE4 项目?
9.第一个建议项目:
利用初学者包(Starter Content)
创立小型环境
你的第一个UE4项目的成功关键是要项目足够小。您的目标是学习UE4功能,使用游戏引擎的基本原理和准则。 所以,首先推荐的项目,初学者应该首先用初学者包,开始创建一个小的环境,如单人房,走廊或外部区域。
小型环境将使您的项目规模保持在一个合理的水平,而你学习UE4,最重要的是,将完成你的项目。 选择一个简单的用初学者包(starter content)能够完成的想法,创造一个简单的环境,同时专注于学习UE4的基本原理。 感兴趣的可以查看这个第一个推荐的项目作为一个完整的教程指南系列“UE4基础”,它将带你通过你需要知道的所有步骤学习虚幻引擎4。
10.设置一个小项目来学习一个技术
结合你学习的一个新的技术来创建一个小项目是关键。第一个推荐项目做到这一点。它设置了自我限制与启动内容的边界,创造一个小的基本环境,同时学习UE4的基本原理。 本文中推荐的每个项目都使用相同的原则。一个小项目,可以在短时间内完成以获取某个技术。
对于将要学习的任何新的附加技术,请按照下列步骤操作——
例如,如果想学习Blueprint,可以设置一个小项目并定义一个明确的结果。这可以是“完成3蓝图场景” - 创建难以控制的门,可切换/可切换光,并设置玩家相机从上到下的游戏。
做这些训练的目的是训练自己完成开始的事情。一旦参加了一个更大的项目,你能够足够的动力和经验去完成。那时候,你只需要增加你创建的环境的规模和你设计的游戏的复杂性。
11.关注目前需要的技术
初学者应该只学习现在需要的技术,用这些技术完成选择的项目。不要一次学习所有的技术。这就是为什么不要创建一个游戏或自定义游戏环境作为第一个项目,因为这需要太多的技能和步骤。
学习任何游戏引擎,特别是UE4的关键是设置控制自己要学习所有知识的冲动。
为了专注于学习一个特定的技术,它需要你把知识分成多块学习。正如你读取原理#4和#5创建游戏或自定义游戏环境所需的,你可以将大项目分成更小的项目,阶段或模块。
不要阅读所有可以找到的书籍,教程和观看所有的视频,然后才坐下,开始自己的项目(边学边练习)。不要一次获取所有UE4信息。专注于1-2个技能领域完成一个项目。 如果遇到问题,请观看视频或阅读教程 - 修复问题并继续执行项目。一次关注1-2技能领域。 下面简要介绍了您现在所需要的:
12.第二个建议项目:制作具有自定义内容的环境
一旦你更精通使用UE4并完成了你的第一个初始项目 - 下一个项目是使用一组新的自定义静态网格创建一个稍大的环境。
这些自定义静态网格应该是你已经有的东西或从Marketplace / Learn部分下载的东西。
不要在此刻创建自己的自定义静态网格物体。
你想通过强迫自己创建更大和更独特的环境,同时使用一组已经创建的静态网格物体,来扩展您的UE4知识和经验超越初学者。
重点是用一组自定义的网格物体构建一个游戏环境。你可以自由探索你想要的任何想法,只要你找到一组支持它的静态网格物体。
看看“UE4走廊项目”教程系列,其中重点是使用一组自定义静态网格物体来构建游戏环境。
13.第三个建议项目:
学习Blueprint(蓝本)语言
并创建基本的游戏交互
你的第三个项目是开始学习Blueprint语言 Blueprint是UE4中的可视脚本语言。
因此,不需要专门学习C++编程就能帮助你完成工作。这意味着你可以编辑编辑器中的大多数游戏和游戏机制,而无需自己编写和编译代码。我们完全有可能只用Blueprint创造一个游戏。
学习使用Blueprint的基本功能来创建交互式游戏元素。移动平台,开/关门,灯开关,原因和效果 - 拾起东西,然后触发某个事件。
学习Blueprint的基本功能开/关门开/关灯移动和漫游触发某个事件(比如开一个门,打开开关,移动某个东西)在关卡加载的时候,触发激发某个动作或者事件通过按钮或文本在屏幕上添加交互 Blueprint是非常强大的,特别对于是一个关卡设计师或游戏设计师,它是必需学习的语言。
14.第四个建议项目:
解构和重新创建
任何蓝本游戏模板
你的第四个项目是分解一个UE4游戏模板,如第一人称射击,第三人称,自上而下的或任何其它模板。使用逆向工程的思维,学习Epic如何使用Blueprint创建游戏模板,然后自己重新创建它。
选择任何Blueprint的游戏模板; 学习,记下笔记和参考,尽可能多地学习里面的知识。然后,开始一个新的空白模板,并重新创建相同的功能。
您可以返回并重新打开Epic的Blueprint游戏模板,随时进行复查。但是不要从游戏模板中复制/粘贴任何东西,自己输入每个游戏节点,并手动重新创建。
您选择的Blueprint游戏模板应该类似于您想要创建的游戏类型。所以,如果你想制作第一人称射击游戏,你可以选择重新创建FPS游戏模板。
15.第五个推荐项目:
建立自己的静态网格物体
并将其导入UE4
第五个推荐项目是学习创建自己的自定义静态网格物体,并将这些模型导入UE4。在这些项目中,你需要学习3D建模软件,如Maya LT,Maya,3dsMax,Modo或Blender。然后,模型,UV,纹理,光线,创建材质和把这一切导出/导入UE4环境中。
如果你想成为一个游戏环境设计者,那么你必须学习3D建模软件。如果你是一个关卡设计师,程序员或皮肤设计人员,学习3d软件并不是必须的而是可选项。在许多游戏工作室和游戏设计团队,你会有一个特定的人致力于创造3D环境。但是,根据工作室/团队的规模,许多非游戏环境制作者应该知道如何创建他们自己的模型和设计皮肤。
我个人对这个话题的看法是,如果你不想成为一个3D环境场景工程师,你还应该学会使用3d建模软件。你不必掌握它们,但需要知道如何在你需要的时候使用3D建模,这是一个伟大的技能。这是只有你知道如何使用3D软件的好处。学习它所需的时间是一种投资,它使你作为一个创作者更有价值。
16.寻求帮助
在所有这些项目中,不要犹豫寻求帮助。但如果你陷入困境,首先肯定要自己花时间想出解决办法来,使用你自己的解决问题的技能,然后再寻求帮助。
这里是可以寻求答案的地方——WoLD UE4 教程Unreal Engine Answer HubUE4 论坛GoogleYoutube
完成五个推荐项目后,可以开始探索UE4更高级的主题。现在您非常好的位置,开始创建自己的游戏,创建自己的自定义环境,并更深入到更先进的UE4主题探索。
原文发布时间为:
本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号
用云栖社区APP,舒服~
【云栖快讯】青年们,一起向代码致敬,来寻找第83行吧,云栖社区邀请大神彭蕾、多隆、毕玄、福贝、点评Review你的代码,参与互动者将选取50位精彩回复赠送“向代码致敬”定制T恤1件,最终成为“多隆奖”的小伙伴还将获得由阿里巴巴提供的“多隆奖”荣誉证书和奖杯。&&
文章3224篇
阿里云机器学习是基于阿里云分布式计算引擎的一款机器学习算法平台。用户通过拖拉拽的方式可视化的...
用于实时预测用户对物品偏好,支持企业定制推荐算法,支持A/B Test效果对比
通过机器学习和数据建模发现潜在的入侵和攻击威胁,帮助客户建设自己的安全监控和防御体系,从而解...
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效...【转】如何学好3D游戏引擎编程(二) | 游戏开发小组 | 果壳网 科技有意思
2797人加入此小组
2。游戏编程所需要的基础知识我这里介绍下要做一个好的,称职的,游戏程序员所需要。学习就和盖楼一样,要想上层建筑牢固,你就要有坚实的基础,我这里介绍的基础是你从事游戏编程最基础,基础的不能再基础的东西。2。1 数学数学是游戏中支柱,没有了它,任何都不要谈,在你编写你游戏的时候,你就会知道,世界抽象成一堆数学是多么的神奇,突然你会觉得以前枯燥无味的数学现在是一顿大餐,但这个是霸王餐。国外人写关于引擎方面书的人,都可以说是数学高手,他们理论和实践都很厉害,让我崇拜的不得了。大学里是你学好数学的最好机会,一定要弄明白它的现实意义,任何理论都不是凭空出来的,它一定有现实基础,这个现实基础,就可以帮助你很好理解这个理论。2。1。1高等数学——微积分理论在游戏引擎中,很多游戏特效都是通过微积分方程来解得的,高度仿真是现在游戏的追求,真实感越强就需要越多的计算量。极限,一元微积分,多元微积分,级数,微分方程等等在游戏图形图象和物理上都有明显体现。有时一个硕士或者一个博士为了拟真一个效果要花费几个月或者几年的时间,做为一个游戏程序员,微积分到达什么层次我很难给出定义,但起码如果别人给出了原理我们能看明白,并把它实现,我觉得就很可贵了。2。1。2线性代数和空间解析几何在大学课本中,空间解析几何是放在高等数学书里面讲的,但游戏中,它和线性代数放到一起我认为更加合适。线性代数所有知识都要掌握,在游戏中它们比微积分体现的更淋漓尽致,理解上我个人认为相对微积分更容易。空间解析几何主要讲向量,平面,线,体,这些东西并通过线形代数矩阵进行空间变换,最后达到游戏想要的目标。2。1。3四元数这个在大学里面不学数学的,估计很少有人接触,它也是来用来变换空间,理解起来不是那么容易,但最常用的就是用四元数来表示旋转。我这里只是一概而过,上面任何知识在游戏中都有应用,但大学里的数学不是为了游戏而开设的,所以和游戏中用的数学在知识分列和讲解上还是有很大差异,尤其是线性代数和空间解析几何,不用担心,我在后面介绍给大家一些好的游戏书籍,对大家学习游戏编程和有帮助的。2。2语言编写游戏c和c++是你首选,相对来讲C++是你更应该掌握的。2。2。1 其他语言为什么不是当今流行的编写游戏程序语言?VB,JAVA,C#,等等其他语言,并不是说它们不能做游戏,它们能做,由于语言本身设计机理的限制,只能做一些对游戏速度要求低的游戏,对于运行速度要求高的游戏,它们被判成死刑。当然这个也取决于硬件的发展,以前8bit FC游戏都用C语言和汇编来写,现在由于硬件速度提高,用VB,JAVA,C#来写这些游戏运行也是可以的,例如现在兴起的WebGame(网页游戏)。但如果你真想做游戏的话,你一定想要了解现在最流行游戏编写,C和C++是你最好的选择,也是你走上真正的游戏编程道路的重要武器。2。2。2 C和C++应该选择那一个?C和C++,这里面我还要说一说,我个人更看好C++。大家都知道C是面向过程的,而C++是面向对象的,虽然C++的面向对象特性还不是很完善,但出于对大型软件设计上的考虑,因为游戏引擎是大的工程,框架设计远远要比编程重要,一般框架设计用面向对象方式更直接,所以C++比C更有优越性性,而且如果你合理用好C++,并不见得C++比C速度慢。有时一个软件架构和软件运行上问题,很难取舍,对于大应用程序来说,都是一点点牺牲速度来获得好的架构,是利大于弊的事情,这里确实体现软件工程的重要性质。2。3。3 汇编,很重要吗?汇编语言也是你要掌握的,你说你语言学的好,但却不会汇编,是一个天大的笑话。现在很少有汇编高手能写出比编译器优化出来的汇编代码运行效率要高,因为语言的不同,思考问题的方式就会有不同,就象最早纸带机上的原语言一样(可计算性与计算复杂性就讲这东西)。如果游戏都用汇编来写,写代码效率很低,所以我们都用高级语言来写,同时还要与底层有密切联系的,C和C++担任大部分工作量。对于游戏速度频颈问题,有时我们用C和C++即使优化很多,代码精简很多,算法也改良很多,但由于语言本身设计上问题,和高效汇编来编写还是有不同的,这时就要是汇编高手来做速度最快,内存和寄存器使用最少汇编程序。所以汇编还是很重要的。2。3。4 其他CPU硬件指令这里只是说 INTER 和 AMD CPU 都支持的指令集,也是最常用指令集。MMX和SSE SSE2是游戏编程中最常用的指令集,这个指令集是 SIMD(single instruction multiple data),也就是单指令多数据流指令集,一个指令可以处理多个数据流运算。汇编CPU指令,一个指令只能执行一个数据流运算。例如: 汇编中 ADD EAX,EBX 这是一个加法指令,EAX,EBX是寄存器,是32位的。这个指令就是 EAX = EAX + EBX。这个过程只有一个数据流相加。 而SIMD思想是,如果现在有2个指令 ADD EAX,EBX
ADD ECX,EDX
能不能让他们一起执行?所以SIMD 指令提供这样的功能,他用很大的寄存器,前一部分装EAX值,后一部分装ECX值,再用一个寄存器,前一部分装EBX,后一部分装EDX. SIMD 寄存器分成2部分[1部分][2部分] SIMD ADD 指令 积存器1 ,积存器2
运算过程为 寄存器1 [1部分] = 寄存器1 [1部分] + 寄存器2 [1部分] ; 寄存器1 [2部分] = 寄存器1 [2部分] + 寄存器2 [2部分] ; 这2个运行是在一个SIMD积寄存器用硬件来执行ADD 同时运行的。 这里只是说了SIMD思想,现在简单介绍下 MMX,SSE,SSE2。 MMX寄存器是32位的,所以它可以执行4个8bit数据同时运算,也可以执行2个16bit数据同时运算,具体要看使用哪个指令,在早期没有SSE指令时,就用MMX,但MMX有缺点,它和FPU(浮点运算单元,专门执行浮点数运算)共用同样寄存器,所以当你指令有中断,从浮点运算跳到MMX运算,要告诉CPU,从MMX跳到FPU 也要告诉CPU,这样数据要临时保存,降低了处理速度。早期2D游戏经常用这个。 现在SSE,SSE2有自己单独的寄存器可以使用,而且它们是128位的,支持4个32位整数或者浮点数同时运算。 这些指令都没有分支,所以使用时效率要我们掌握,因为执行都是并行的,一个指令完成多个计算,所以即使你编写SIMD代码很差,速度也会提高几倍,游戏中经常用SIMD处理颜色和数学运算问题。在游戏速度瓶颈地方用这样的代码,公德无量。2。3。5 ASM SHADER语言 和 高级SHADER 语言开始学游戏编程时,这个知识不一定要具备,因为你不了解3D流水线内部细节学起来还是比较困难,所当你做完“软引擎” 了解3D流水线,在学这个语言很容易,接下来的语言发挥,就靠你自己了。早期的游戏,所有的图形图象处理基本都由CPU来完成,然后把处理完的数据传到显存,用显卡来显示。现在的设计理念尽量解放CPU,把与图形图象有关的运算用显卡来完成。但早期显卡只支持固定流水线,所谓的固定流水线就是所有3D数据处理过程都是事先用硬件实现好的,这个过程是一个大过程,里面封状了很多小过程细节,用户只需要输入数据,显卡负责输出数据,至于用户无法干预这个大过程,小过程更是接触不到。再说的通俗一点,一个空间3D三角形要想显示到计算机屏幕上,基本要经历2个大过程,顶点处理和象素处理,顶点处理封状了很多空间变换的小过程,象素处理包括象素混合小过程。这个过程是不可以访问的,我们只能通过显卡提供的接口来控制,而且改变方式很单一。(刚接触这些可能不明白,现在你知道的不用太详细,就知道大过程是不可以干预的就可以了,或者是只有很少一部分可以干预)为了让图形图象处理更加完善话,让人们可以参与到整个3D流水线中,实现更多丰富的效果,显卡开始出现GPU单元(图形处理单元),这时的3D流水线从固定流水编成了可编程流水线,有了早期的GPU 指令,大家都称为 SHADER指令,也就是ASM SHADER,和汇编一样,这些指令都是和GPU指令一一对应的,随着硬件更新,GPU越来越强大,支持指令越来越多,ASM SHADER 从1。0 到 1。4 ,到现在3。0版本。由于ASM SHADER 用起来不方便,就象我们用汇编写程序一样,所以又出现了高级SHADER语言,有DirectX3D下支持HLSL(high level shader language)和 OPGL下支持的GLSL(opengl shader language)这些语言都是面向过程。由于硬件设计限制,这些语言不能象C语言那样随意使用,SHADER语言有自己的使用规范,大家学习时一定要弄明白3D流水线内部实现过程,再使用SHADER简直很容易。还有一个要说的是,GPU现在还不支持分支预测,但GPU编程语言现在已经提供了丰富的条件判断,条件判断还是会影响到速度的。重点你要掌握的是,数学,c和c++,汇编,数据结构,基本掌握的是计算机体系结构,离散数学,编译原理,计算机网络,操作系统,软件工程,数据库,人工智能。可以说这些是计算机最基础的学科,你只有掌握了它们,无论你专研计算机哪个领域,你的基础都是足够的,游戏编程中这些学科都可以用到,我们不用每个学科都精通的要命,我们要精通的是游戏编程,也就是接触到和游戏相关的,我们有这些基础完全可以看懂,然后我们在用自己时间来去专研这些学科在游戏领域的应用。四。游戏编程,她的大门已经为你打开。 1。 颜色之迷计算机怎么显示图形的,这个你必须要弄明白,计算机显示彩色图象是经历了一个什么样的发展过程。1。1 象素和屏幕显示点计算机显示一个图象是由象素组成,我们通常说的分辨率就是屏幕上显示多少个象素。如果一个屏幕最大可以支持那么它也可以支持800*600,当你屏幕分辨率是800*600时,一个象素占据了屏幕多个屏幕显示点,也就是说,只有当你分辨率调节到最大时,屏幕显示点和象素点才是一一对应的,至于一个象素占据多个屏幕显示点后颜色怎么显示这个是硬件的事,我也不是很了解。象素都是2进制存储,然后由硬件根据显存中当前象素值,根据颜色显示模式的设定,来显示指定颜色。1。2 颜色组成和模式计算机要显示颜色,每个象素都有自己的颜色,通常颜色有3种模式,一个是调色板模式,一个是16bit模式,一个是32bit模式,我这里说的通常,早期也有4bit模式,我要讲出里面的细节,让看的人真正理解,不是死记硬背,你就会发现实质上只有2种模式,一个是调色版模式和bit显示模式。我先介绍位显示模式,从4bit开始,早期颜色显示很单调,硬件只支持16个颜色,当然这16个可以是黑白的,也可以是彩色的。总之硬件就支持16个颜色。所以用4bit表示4bit 2进制正好可以代表16个。随着硬件发展支持的颜色越来越多,发展到16bit,16bit开始有了严格限制,颜色是有三种色彩基元组成,也就是红绿蓝,人送江湖称号RGB,16bit分成1555格式和565格式,1555就是1位给ALPHA(表示透明)分给RGB分别5bit,5bit可以表示色彩基元颜色是32种,RGB组合起来就是15bit,就是2的15次方,可以表示很多颜色了。而565格式没有ALPHA位置,直接分给RGB位数为565,也就是绿色多了一位,传说中,专家说人眼对绿色明感,所以给绿色多分了一位。而32bit分给 ALPHA 和 RGB 分别是 8888,每个都是8bit。其实标准的颜色都是每个分量都是8bit,每个色彩基元都是256种,而16bit模式不能显示出真实世界色彩。调色板模式一般都是针对每个分量是8bit,也就是颜色组成是32位的。调色板模式有一个映射表数组,这个映射表数组每个元素都存放的是32位的颜色,而显存存放的是一个索引,但硬件读出显存当前象素值时,然后用这个值当作索引去映射表数组里面查对应的颜色,然后显示到屏幕上。 相比较而言,调色板模式是最早期的,例如早期FC 8bit机 每个象素只占8bit,只能表示256种颜色,而我们彩电可以表示很多颜色,为了节省显存,增加处理速度,还显示出多种颜色,FC用调色板模式,而我们想换颜色时,其实只换调色板映射表数组某一个值就可以了,索引都不用变,毕竟索引是写在显存中的,一般改写显存还是速度很慢的。16bit模式也是在处理速度上,节省存储空间上得以应用。毕竟这些显示模式都是为了应付以前硬件速度太慢而设计的,现在一般都用32bit模式。而且无论颜色基元的数字越大表示这个基元颜色越浅。还有一个要说的就是ALPHA,这个分量是表示透明度的,这个分量如果是8bit,那么它可以表示256种透明程度,255表示不透明,0表示完全透明。现在大家知道你设置屏幕或者游戏时 什么意思了吧!每个象素占32bit,屏幕显示个象素。1。3 颜色的运算计算机支持颜色运算都是无符号颜色运算,颜色没有负数,而且颜色运算有CLAMP和MOD如果每个颜色占8bit,颜色表示范围为0-255这里CLAMP指的是if(x&0) x=0;if(x&255) x=255;这里MOD指if(x&255) x = x%255;Color1(a1,r1,g1,b1) Color2(a2,r2,g2,b2) 颜色加减都是向量加减,每个分量做加减1。3。1颜色加法 Color3(a3,r3,g3,b3) = Color1(a1,r1,g1,b1) + Color2(a2,r2,g2,b2) a3 = a1 + a2;r3 = r1 + r2; g3 = g1 + g2;b3 = b1 + b2;颜色加法一般都用CLAMP1。3。2颜色乘法Color3(a3,r3,g3,b3) = Color1(a1,r1,g1,b1) * Color2(a2,r2,g2,b2) a3 = a1 * a2;r3 = r1 * r2; g3 = g1 * g2;b3 = b1 * b2;颜色乘法一般都用MOD颜色加法和乘法在象素混合效果上经常用,有时为了到达一个效果,加法和减法混合用,至于什么时候用加法,什么时候用乘法,没有严格的规定,还是要看效果,一般对于全局光照模型颜色之间要用加法的,但其他光照模型可能不同,纹理混合或者纹理和颜色混合,加法和乘法都有各自用途。2。Directx OpenGL到底用来干什么?这里只说他们支持图形和图象部分,其他部分不说。很多人都听过这2个名词,其实他们是一个函数库,这个函数库为我们做了一些最基本的和底层打交道的处理,其他它们还提供了一些常用的3D函数库,算是一个2次开发,其实2次开发一般和底层没有关系,所以在游戏引擎中很多都自己来做,微软做了很多2次开发,可以算是一个引擎。我前面说了,引擎没有明确概念,只有适应程度之分,用它这个提供的来做游戏,还是差很远,做小游戏当然没问题。我主要说说和底层打交道那部分,DX和OPGL最大功劳在于充分调度和发挥了显卡性能,把显卡的特性用接口的形式提供出来,他们各自都有自己的管理层次,管理方法,管理管线,至于怎么管理,我也不是很清楚,但当你使用和显卡资源相关的API时,你要仔细看这个函数各个参数说明,它会根据你的指定,来管理显卡。但他的管理只是一部分,还有很大一部分要引擎里面自己处理。如果你不想自己写驱动的话,那么你还想控制显卡,你就要用这些API,D3D(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,太不容易了,国内人翻译的也很出色,感谢他们。
这篇感觉是不是太具体了
(C)果壳网&&&&京ICP证100430号&&&&京网文[-239号&&&&新出发京零字东150005号&&&&
违法和不良信息举报邮箱:&&&&举报电话:&&&&&&&&}

我要回帖

更多推荐

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

点击添加站长微信