游戏引擎 订阅
游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。大部分都支持多种操作平台,如Linux、Mac OS X、微软Windows。游戏引擎包含以下系统:渲染引擎(即“渲染器”,含二维图像引擎和三维图像引擎)、物理引擎、碰撞检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理。 [1] 展开全文
游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。大部分都支持多种操作平台,如Linux、Mac OS X、微软Windows。游戏引擎包含以下系统:渲染引擎(即“渲染器”,含二维图像引擎和三维图像引擎)、物理引擎、碰撞检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理。 [1]
信息
属    性
程序或者组件
外文名
Game Engine
用    途
游戏
中文名
游戏引擎
游戏引擎功能
可见,引擎并不是什么玄乎的东西,无论是2D游戏还是 3D游戏,无论是角色扮演游戏、即时策略游戏、冒险解谜游戏或是动作射击游戏,哪怕是一个只有1兆的小游戏,都有这样一段起控制作用的代码。经过不断的进化,如今的游戏引擎已经发展为一套由多个子系统共同构成的复杂系统,从建模、动画到光影、粒子特效,从物理系统、碰撞检测到文件管理、网络特性,还有专业的编辑工具和插件,几乎涵盖了开发过程中的所有重要环节,以下就对引擎的一些关键部件作一个简单的介绍。首先是光影效果,即场景中的光源对处于其中的人和物的影响方式。游戏的光影效果完全是由引擎控制的,折射、反射等基本的光学原理以及动态光源、彩色光源等高级效果都是通过引擎的不同编程技术实现的。其次是动画,游戏所采用的动画系统可以分为两种:一是骨骼动画系统,一是模型动画系统,前者用内置的骨骼带动物体产生运动,比较常见,后者则是在模型的基础上直接进行变形。引擎把这两种动画系统预先植入游戏,方便动画师为角色设计丰富的动作造型。引擎的另一重要功能是提供物理系统,这可以使物体的运动遵循固定的规律,例如,当角色跳起的时候,系统内定的重力值将决定他能跳多高,以及他下落的速度有多快,子弹的飞行轨迹、车辆的颠簸方式也都是由物理系统决定的。碰撞探测是物理系统的核心部分,它可以探测游戏中各物体的物理边缘。当两个3D物体撞在一起的时候,这种技术可以防止它们相互穿过,这就确保了当你撞在墙上的时候,不会穿墙而过,也不会把墙撞倒,因为碰撞探测会根据你和墙之间的特性确定两者的位置和相互的作用关系。渲染是引擎最重要的功能之一,当3D模型制作完毕之后,美工会按照不同的面把材质贴图赋予模型,这相当于为骨骼蒙上皮肤,最后再通过渲染引擎把模型、动画、光影、特效等所有效果实时计算出来并展示在屏幕上。渲染引擎在引擎的所有部件当中是最复杂的,它的强大与否直接决定着最终的输出质量。引擎还有一个重要的职责就是负责玩家与电脑之间的沟通,处理来自键盘、鼠标、摇杆和其它外设的信号。如果游戏支持联网特性的话,网络代码也会被集成在引擎中,用于管理客户端与服务器之间的通信。通过上面这些枯燥的介绍我们至少可以了解到一点:引擎相当于游戏的框架,框架搭好后,关卡设计师、建模师、动画师只要往里填充内容就可以了。因此,在3D游戏的开发过程中,引擎的制作往往会占用非常多的时间,《马克思·佩恩》的MAX-FX引擎从最初的雏形Final Reality到最终的成品共花了四年多时间,LithTech引擎的开发共花了整整五年时间,耗资700万美元,Monolith公司(LithTech引擎的开发者)的老板詹森·霍尔甚至不无懊悔地说:“如果当初意识到制作自己的引擎要付出这么大的代价的话,我们根本就不可能去做这种傻事。没有人会预料得到五年后的市场究竟是怎样的。”正是出于节约成本、缩短周期和降低风险这三方面的考虑,越来越多的开发者倾向于使用第三方的现成引擎制作自己的游戏,一个庞大的引擎授权市场已经形成。其中最大的收益者是各大网络游戏公司,通过第三方引擎开发的网络游戏获益巨大。但随着市场急剧变化,用第三方引擎开发网络游戏的成本也越来越高。于是游戏引擎开发商们开始绞尽脑汁设计一种可以大量节约开发成本和周期的引擎。直到2010年zerodin引擎开发的巨作Dragona出品引起了各大游戏业巨头关注,因为此时方才发现了巨作也可以用这么少的成本,这么短的时间开发而成。
收起全文
精华内容
下载资源
问答
  • 一个好的游戏引擎,能够大大简化游戏的开发实现。本文介绍了十款备受开发者喜爱的HTML5JavaScript游戏引擎。它们之中,各有特色,口碑颇高、完全开源,拥有非常丰富的组件和实现,绝对是开发者事半功倍的最佳拍档。...
  • C/C++的游戏引擎多如牛毛,今天推荐一款使用python语言的游戏引擎.专为U3D打造的游戏服务器引擎
  • 本书主要介绍如何利用3D固定流水线编写游戏引擎,以及在已编写引擎的基础上开发游戏,全书共分10章,主要内容包括游戏引擎简介、数学知识、材质和光照、固定流水线、游戏引擎架构、3D引擎底层封装、3D引擎封装、游戏...
  • 本书涵盖游戏引擎软件开发的理论及实践,并对多方面的题目进行探讨。本书讨论到的概念及技巧实际应用于现实中的游戏工作室,如艺电及顽皮狗。虽然书中采用的例子通通常依据一些专门的技术,但是讨论范围远超于某个...
  • Game Engine Architecture英文翻译版,译者很用心,批注详细全面,深入理解游戏引擎架构很好的书籍,建议购买《游戏引擎架构》原书籍学习。
  • Go (golang)编写的 2D游戏引擎工作在OpenGL之上
  • 游戏引擎源码

    2018-05-09 23:37:08
    用javascript做的游戏引擎,用javascript做的游戏引擎用javascript做的游戏引擎用javascript做的游戏引擎用javascript做的游戏引擎用javascript做的游戏引擎用javascript做的游戏引擎用javascript做的游戏引擎用...
  • game engine architecture 游戏引擎架构 第一版 第二版 第三版 1st 2nd 3rd
  • 游戏引擎架构3

    2016-04-19 18:06:43
    游戏引擎
  • Godot开源游戏引擎24小时快速入门,25章节,快速掌握2D和3D游戏开发,跨平台游戏开发引擎,PDF版比起epub更好阅读!简易英文,浅显易读,强烈推荐。(我的CSDN博客也有入门文章教程)
  • 游戏引擎架构2

    2016-04-19 17:21:51
    游戏引擎架构2
  • 游戏引擎架构 PDF电子书带书签目录 完整版 PDF 分两部分,需要一起解压
  • 游戏引擎架构

    2016-12-05 17:52:07
    游戏引擎架构》由游戏界传奇人物云风及“天天爱消除”团队倾情作序推荐,既是游戏工作者必读Bible,对其他IT从业者也不无裨益。  《游戏引擎架构》內容包括:  游戏开发中的大规模C++软件架构  游戏编程所需的...
  • )《游戏引擎架构》为一个大学程度的游戏编程课程而编写,但也适合软件工程师、业余爱好者、自学游戏程序员,以及游戏产业的从业人员。通过阅读《游戏引擎架构》,资历较浅的游戏工程师可以巩固他们所学的游戏技术及...
  • 幻影游戏引擎

    2014-09-29 12:26:12
    幻影游戏引擎,方便制作横板,动作,RPG类游戏,只有你想不到没有你做不到
  • 共用Lua全局变量、在引擎中引用脚本函数和在Lua中引用引擎函数的功能,以 达到数据共享的作用,从而建立了把Lua系统引入游戏引擎的模式。文章最后模 拟了一个仿真的游戏环境,分析了引擎与Lua脚本在游戏中各个模块的...
  • 上次百度云挂了,真TM不靠谱。于是还是来上传分卷了,照样不要分 分卷2地址:http://download.csdn.net/detail/baidu_17713941/9596398
  • BigWorld MMO Technology Suite使游戏开发项目避免了未知、昂贵和耗时的软件研发风险,从而使授权客户能够专注于游戏制作这一核心事务。 当然最稀有的是服务器源代码,可谓秒杀全球的MMORPG的服务器引擎。非常具有...
  • 游戏引擎架构 .pdf

    2018-01-16 22:16:35
    游戏引擎架构 .pdf游戏引擎架构 .pdf游戏引擎架构 .pdf
  • 游戏引擎架构 中文完整版.part1

    千次下载 热门讨论 2015-08-27 15:34:04
    游戏引擎架构经典书籍,第一部分.需要四部分都下了才能看。
  • 游戏引擎架构 PDF电子书带书签目录 完整版.part2(共2卷)
  • 本书主要介绍如何利用3D固定流水线编写游戏引擎,以及在已编写引擎的基础上开发游戏,全书共分10章,主要内容包括游戏引擎简介、数学知识、材质和光照、固定流水线、游戏引擎架构、3D引擎底层封装、3D引擎封装、游戏...
  • 游戏引擎开发必读书籍,电子书最新版,强烈推荐。 Game Engine Architecture, Second Edition
  • 游戏引擎原理

    千次阅读 2019-05-22 10:17:15
    1.什么是游戏引擎? 考虑你喜欢的几个不同的游戏,尝试设想一下它们的内部是如何设计的。更重要的是,看一下是否能够找到适用于所有游戏的任何公共设计元素。例如,所有游戏都有背景、片头屏幕、地形图和背景音乐...

    1.什么是游戏引擎?

             考虑你喜欢的几个不同的游戏,尝试设想一下它们的内部是如何设计的。更重要的是,看一下是否能够找到适用于所有游戏的任何公共设计元素。例如,所有游戏都有背景、片头屏幕、地形图和背景音乐,是不是?如果是,那么它们很可能是围绕游戏引擎的概念设计的。当你计划创建多个游戏,并且不希望每次都做重复的工作时,游戏引擎就特别有用。

                  游戏引擎对于Windows游戏的另一个重要好处在于,它允许隐藏针对Windows而与游戏无关的繁杂代码。游戏引擎很好地组织了游戏代码,这样常规的应用程序任务就与游戏特有的任务分离开来。它为游戏开发人员带来的好处就是可以向游戏引擎中添加能够在以后的所有游戏中重用的特性。此外,使用游戏引擎还允许简化游戏的代码,将注意力放在最重要的游戏代码上。在习惯了使用游戏引擎之后,你就会想,其他还有什么方法来开发游戏?事实上,大多数商业游戏开发人员都有自己定制的游戏引擎,这是他们多年来在学习大多数游戏所需的公共特性的过程中开发出来的。在设计和开发技术要求更高的游戏时,你自己的游戏引擎可能会在本书的游戏引擎基础之上进行改进和扩充。

     

    2.考虑游戏引擎的作用

             游戏引擎负责处理各种琐碎事务:组建游戏、确保它正确运行以及关闭它。虽然这些任务确实是任何程序都需要的,但是初始化、运行以及在游戏结束后进行清理等工作的某些方面确实是游戏所特有的。因此,重要的是,游戏引擎能够满足游戏的独特需求,并帮助使围绕引擎开发游戏的过程尽可能简单和直接。有了一个设计优良的游戏引擎,你就会发现,开发游戏所需要的代码比不使用游戏引擎时少得多。其思想是一次性开发某些核心游戏程序,将其粘贴在游戏引擎中,然后只有在绝对必要时才再次处理它们。例如,在编写加载图像并在屏幕上绘制它得代码之后,就没有什么理由要重新编写这种代码了。加载和绘制图像是所有游戏引擎都需要的一个基本功能。

                  TIPS:在时间和资源许可时,可以选择优化游戏引擎内部的某些算法,以帮助使其更高效地运行。总地来说,首要目标是实现一个能够正确运行的游戏功能,然后有时间的话再考虑优化它。

    2.2.1将游戏分解为事件

             每一个Windows程序都可以分解为事件,即在程序运行时发生的事情,例如单击鼠标和更改窗口大小。正如Windows程序包含必须处理的事件一样,游戏也有其在开发过程中必须考虑的一组特有时间。可以将游戏的初始化过程视为一个事件,它负责加载游戏的图形和声音、清空游戏区域、将得分归零等。类似地,游戏中也有用户输入,意味着单击鼠标和按键操作是游戏必须自己处理的时间。此外还要牢记一点,在Windows中,可以最小化游戏或者将其置于后台,意味着可能希望暂停游戏。可以使用两个事件来表示这个激活和停用过程。

                  TIPS:许多商业Windows游戏都只能以全屏模式运行,这意味着它们不能与其他正在运行的Windows应用程序并列显示在屏幕上。即使如此,在技术上这些游戏仍然是与其他程序同时运行的,因此必须能够在另一个应用程序激活时暂停它们。

                  许多事件当然都可以包括在游戏引擎之中,但是下面这些事件是适用于任何游戏的部分核心事件:

                  初始化,

                  启动,

                  结束,

                  激活,

                  停用,

                  绘制,

                  循环。

                  初始化时间在一开始运行游戏发生,这时游戏将执行重要的初始设置任务,包括创建游戏引擎本身。启动和结束事件对应于游戏的开始和结束,这时很适合执行与特定的游戏会话相关联的初始化和清理任务。在最小化游戏或者将其发送到后台,然后恢复时,就将发生激活和停用事件。当游戏需要绘制本身时,将其发送绘制事件,类似于Windows WM_PAINT消息。最后,循环事件使游戏执行一个单独的游戏周期,它非常重要,随后读者就将了解到这一点。

             2.2.2建立游戏的计时机制

             如果从来都没有从编程的角度看过游戏,那么你可能会对游戏中实现所有移动和动画的方式感到吃惊。除了及其简单的纸牌游戏之外,几乎每一个游戏都依赖于某种计时机制,使游戏将其执行分解为帧或者周期。游戏的一个周期是一个时间片,通常对应于游戏图形和数据的一个单独的快照。如果将游戏视为在VCR或者DVD播放机上播放的电影,那么按pause键允许查看一个独立的周期。在电影中前进一帧就好像是进入了游戏的下一个周期。在任何给定的周期中,有希望城了更新其图形、执行其他任何与角色和对象如何移动及彼此交互的计算和处理等工作。

                  理解游戏周期的重要性的一个好方法是举一个实际的游戏作为例子。以space invaders游戏为例,要创建船以及几排外来入侵者。各个对象都有一个初始的位置和速度。如果space invaders没有计时机制或者游戏周期,那么这个游戏将永远停在其初始状态,就好像在游戏开始时按下了一个永久的pause按钮一样。不过,我们知道情况并非如此,因为在游戏开始时,敌人正缓慢地经过屏幕。如果一个周期一个周期地观看space invaders,则会注意到敌人在每一个周期中只是移动一点点。这还少因为在一段给定的时间内会发生许多个周期,产生平滑移动的效果。游戏周期的作用是更新游戏中所有对象的状态,然后再通过更新在屏幕上显示的图形来反映这些变化。从大多数游戏中的事物在视觉上的变化速度来判断,你能猜出发生游戏周期的频率吗?即使对于最慢的游戏,这个频率也不低于12周期每秒,这正好是人眼以为看到的事物在移动而不是看到一系列变化图像的最低频率。作一个比较,电视每秒显示30副不同的图像,而电影每秒是显示24副图像。

                  TIPS:游戏中一个单独的图形屏幕称为一帧。因为在每一个游戏周期中都要绘制一屏幕新的图形,所以游戏的速度经常是用每秒的帧数来衡量的。因为我们讨论的中心是周期而不是帧,所以我以每秒的周期数来表示游戏速度。不过,每秒的周期数、每秒的帧数以及每秒的图像数实际上都是一个意思。

                  游戏在指定时间内运行的周期越多,看起来运行得 就越平滑。举一个极端的例子,比较一下演示文稿和电影的平滑度。演示文稿是从一副静止的图像突然转换为另一幅静止的图像,不存在任何过度,也没有平滑移动的感觉:而电影则呈现出流畅的动作,就仿佛在现实中经历一般。类似地,每秒钟只有较少周期的游戏看上去是断断续续的,而每秒钟较多的周期数会使游戏更加平滑。每秒钟较多的周期数还允许灵活地加快或者放慢游戏,从而达到一个理想的速度。

                  在知道了更多的周期产生更平滑的图形并提供更好的灵活性之后,读者可能会认为能够每秒钟的周期数设置得很高就行。与现实中的大多数情况一样,对于游戏周期和游戏效率来说,也存在一个权衡考虑。问题在于,在游戏的各个中期中发生的处理量经常是相当大的,这意味着要想每秒钟执行多个周期,计算机的处理器和显卡都必须能够跟上这种速度。即使对于目前流行的速度极快的计算机来说,大多数计算机执行游戏处理的速度也是有实际限制的。事实上,大多数游戏设置都在15~20周期每秒的范围内,最快的速度可能达到30周期每秒,比电影的速度还快。除了极少数的一些情况外,应该力求达到的最低速度设置为12周期每秒。

                  TIPS:商业3D游戏是将当前可用的计算机硬件的性能发挥到极致。现代3D游戏的每秒周期数是用来衡量这个游戏是否过于加重计算机的处理能力负担的最常见标准。在理想情况下,可以将游戏设计为包括非常精致而漂亮的图形,而不用当心游戏是否会使用户系统突然停止运行。在显示情况下,游戏设计者总是很谨慎地使用游戏看上去惊人的效果,同时保持适当的帧频(理想值为30帧/秒或者更大)。

                  在理解了如何用周期来说明游戏的计时机制之后,读者可能就会明白为什么循环是一种游戏事件。它得工作原理是这样的:一开始运行游戏时,使用游戏速度(每秒的周期数)初始化引擎。加入使用12周期每秒,那么游戏引擎负责设置和管理一个计时器,它每秒出发12个循环事件。游戏代码接收这些循环消息并处理它们---更新游戏中的对象并重新绘制游戏屏幕。可以将一个循环事件视为一个周而复始工作的叫醒入睡者的报警器,只不过在这种情况下是每秒响12次。很显然,游戏不会有太多的睡眠时间!

                  TIPS:说到睡眠,游戏引擎的另一个作用是每当游戏不再是活动窗口就使其休眠。实际上,使游戏休眠仅仅意味着游戏引擎停止发送循环消息,因为没有发送任何循环性消息,所以游戏实际上就暂停了。

     

    展开全文
  • 游戏引擎

    千次阅读 2018-06-05 23:22:19
    什么是游戏引擎?     机就无法跑起来,人类没有心脏就会死亡。而引擎就是发动机,就是心脏。 维基百科对于游戏引擎的定义:     游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像...

    什么是游戏引擎?

        机就无法跑起来,人类没有心脏就会死亡。而引擎就是发动机,就是心脏。

    维基百科对于游戏引擎的定义:

        游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程序而不用由零开始。大部分都支持多种操作系统平台,如 Linux、Mac OS X、Windows。大多数游戏引擎包含以下系统:渲染引擎、物理引擎、碰撞检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理。

        游戏引擎就是图形引擎。准确地说,游戏引擎约等于图形引擎。玩家口中所说的“虚幻”“寒霜”等,这每一款引擎对于图形渲染的处理方式都不同,所以用某个引擎编写出来的游戏,具体的表现画面也会不同。比如,有的引擎编写出的光影效果特别绚丽,有的则粒子效果特别真实。

        游戏引擎是一整套游戏解决方案。其实,游戏引擎并不仅仅等同于图形引擎。图形引擎只是游戏引擎中一个占比极大的组成部分。一款好的游戏引擎,不仅要看它对于图形图像的处理能力,也要看它对于其他部分的处理能力,比如对音频、音效的播放、键盘鼠标的处理,以及 UI 界面的编辑和各种处理工具的提供。这里的处理工具包括地图编辑器、关卡编辑器、人物编辑器、资源编辑器、物理碰撞、碰撞检测等。所以,从专业的角度讲,游戏引擎是完成开发一套游戏的解决方案,而不仅涉及图形部分。

        游戏引擎是一整套编程接口。要写游戏就必须写程序,所以有游戏引擎就一定需要编程。不管你是直接面对引擎编写代码,还是在引擎提供的编辑器(比如关卡编辑器)基础上编写简单的逻辑代码,写代码都是必不可少的。在引擎提供的编程接口上,你能很容易地调用各种接口完成游戏的开发。

    游戏引擎的工作工程

        从代码层面来说。这里是一段伪代码:

    int DrawLine(const Surface& s, int sx, int sy, int fx, int fy, int fit, const Color& color);

        这段伪代码提供了一个在屏幕上画一个线条的函数。该函数提供了 7 个传入参数,分别是:

    • 目标图层
    • 线(在游戏窗口内)的起始 x 点
    • 线(在游戏窗口内)的起始 y 点
    • 线(在游戏窗口内)的终止 x 点
    • 线(在游戏窗口内)的终止 y 点
    • 线条粗细
    • 线条颜色

        在调用了这个函数之后,就能很容易在屏幕上画出一个线条。同时,在这个函数背后,引擎做了一系列这样的动作:

    • 判断传入的 Surface 图层对象是否正确、是否存在;
    • 判断传入的起始点、终止点是不是存在负数;
    • 判断颜色是不是正确;
    • 拆分 Color 变量为 RGB 值,填入到 SDL 绘图接口,调用 SDL 绘图接口绘制一条线。

        画线的接口函数在背后分解、组合、计算,然后会将绘制工作交给底层绘图接口。

        这个画线函数,它展示了引擎中函数的使用方式。如果我们用一般的画线函数画圆,那首先要知道圆的直径和计算方式;如果画矩形,那就要知道哪里是起始点和终结点。这一系列动作等于将引擎所做的工作包含在了画线函数里,只需要关心画线的这一系列参数如何使用就可以了。

        从非代码层面来说

        游戏引擎其实也包括游戏开发的一系列工具,也就是诸如地图编辑器、关卡编辑器、人物编辑器、资源编辑器等。美术、策划、制作人等,这些开发流程中的责任人,可以往工具内填入需要的东西,制作出需要的内容。

        拿人物编辑器来说。如果我们使用通用编辑工具(比如 3DMAX、Maya 等)编辑出来内容,需要经过格式的转换才能应用到游戏中,但是这样不仅耗费转换时间,也耗费调试时间。因为通用工具可能并不适合引擎本身所定义的格式,需要不停修正和更改。如果引擎本身就提供了这样的制作工具,那么制作出的内容直接就能在游戏中使用,不需要转换,所见即所得。

        游戏引擎背后的工作方式是:

        在代码层面,游戏引擎是对绘图接口、操作系统、音频等接口进行的代码层面的封装;

        在工具层面,游戏引擎是一整套游戏内容的制作工具,方便你制作针对这个引擎的游戏内容。

    自己开发引擎还是直接购买?

        从一般意义上讲,如果有实力,当然是自己开发引擎更贴合公司的情况。然而,这样付出的代价就是,花费大量的人力和财力,而且,以一般小公司或者起步阶段的开发者的开发水平,编写出的引擎,很可能只是一个半成品或者问题多多的残次品。自研引擎并不是一个不可能完成的任务,但是要看公司的财力和程序员的实力。

        购买商业引擎是现在大部分公司都会走的一条路。购买商业引擎只需要花费一笔钱就能拿到成熟的游戏引擎,直接可以开发游戏,然而付出的代价就是,可能需要从头开始学习这套引擎的工作原理、工具套装。

        如果你非常熟悉 3DMAX 等通用工具,那要从头学习开发工具,就会产生许多问题,比如:

    •     引擎中包含的开发工具基本没有通用性可言。就算吃透了工具,对你今后的能力提升和职业规划也没有明显的帮助;

    •     如果引擎升级或者更换引擎,就需要从头再学一次工具,会耗费大量时间和精力。当然会有一些优秀的商业引擎支持通用工具制作的内容导出和转换,直接在引擎中可以使用,当然这种引擎的购买费用也会更高;

    •     另外,商业引擎本身也会存在一些隐藏得很深的 bug。在游戏发布后,这些 bug 可能会影响到游戏本身的质量和口碑。引擎出问题,游戏一定出问题,这也是购买商业引擎需要考量的一个风险。

        但是,在实际的开发过程中,考虑到公司的经济实力和程序员的开发能力,一般来说,大多数开发者都会选择购买商业引擎,毕竟这在一定程度上,是个非常省时省力的事情。

    游戏引擎是用什么编写的?

        我们需要掌握更多游戏引擎相关的知识。因为,不管你是购买游戏引擎还是自己开发游戏引擎,了解游戏引擎,会让你对游戏编程的总体脉络有一个了解。一旦在开发过程中出现问题,比如你发现屏幕贴图出问题了,那究竟是自己的代码出现问题,还是引擎本身出现问题呢?熟知游戏引擎的开发逻辑,你就能很快定位问题所在。

        游戏引擎并没有一种固定的开发语言,依赖于你所制作游戏的目标平台是什么。

         1.C/C++

        在 Windows 或者 Linux 下开发游戏,游戏引擎 99% 都是使用 C/C++ 或者汇编语言编写。由于 C/C++ 和汇编运行效率高,所以在 Windows 下的执行效率也非常高。你看到的 Python 游戏引擎、Ruby 游戏引擎等脚本语言引擎,都是在 C/C++ 的基础上进行封装的。这样可以方便程序员将专注力放在游戏逻辑上,而不是在处理底层问题上。

         2. JavaScript/TypeScript

         如果是 HTML5 游戏,游戏引擎的编程接口 99% 是使用 JavaScript 完成的。比如耳熟能详的 Cocos2d 引擎、白鹭引擎等等。至于其他配套的开发工具,可以使用任意软件开发语言进行编写。

         3. .NET

         经过微软的努力和版本迭代,在 Windows 下,.NET 的运行效率和开发效率已经提高了好几个等级。由于和 Windows 紧密结合,现在的.NET 的运行效率只比 C/C++ 编写的代码低一点。在电脑配置比较高的情况下,用户基本不会有太多的感知。而.NET 对于 Windows 底层的调用和控制,比 C/C++ 更方便,编程也更容易,所以现在已经出现了一些引擎是使用.NET 编写的。

         4. Java

        和.NET 一样,使用 Java 编写的游戏引擎并不多。虽然 Java 的运行效率已经有了质的提升,但是对于编写大型游戏来说还是有相当大的瓶颈。随着电脑硬件配置的提升,使用 Java 编写游戏也不再是一件不可能的事情。比如大火的《我的世界》,就是使用 Java 编写的。

        游戏引擎是一整套的游戏开发程序接口和开发组件,可以让你更方便、更专注于游戏的开发;

        游戏引擎控制着游戏的几乎所有内容,游戏的表现质量和游戏引擎直接相关;

        针对不同的平台,游戏引擎所使用的编程语言也不一样。而了解了游戏引擎的编写,在之后的开发过程中,会有非常多的便利。

    展开全文
  • Unity游戏引擎介绍及相关学习资源

    千次阅读 2019-11-26 23:54:55
    Unity(游戏引擎)一般指Unity3D 官网: https://unity.com/ 手册:https://docs.unity3d.com/Manual/ Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等...

    Unity(游戏引擎)一般指Unity3D

    官网: https://unity.com/

    手册:https://docs.unity3d.com/Manual/

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。Unity类似于Director,Blender game engine, Virtools 或 Torque Game Builder等利用交互的图型化开发环境为首要方式的软件。其编辑器可运行在Windows、Linux(目前仅支持Ubuntu和Centos发行版)、Mac OS X下,可发布游戏至WindowsMacWiiiPhoneWebGL(需要HTML5)、Windows phone 8和Android平台。也可以利用Unity web player插件发布网页游戏,支持Mac和Windows的网页浏览。它的网页播放器也被Mac 所支持。

    软件版本介绍

    Windows版本:Unity3d 2019.2

    Mac版本:Unity3d 2019.2

    大陆发布版本

    Unity3D PRO虚拟现实、跨平台应用程序开发引擎(商业版)

    unity3d 4.0版本 unity3d 4.0版本

    Unity iOS Pro移动终端发布平台

    Unity3D PRO 虚拟现实、跨平台应用程序开发引擎(教育版)

    2012年11月15日,Unity Technologies公司正式推出Unity 4.0版本,新加入对于DriectX 11的支持和Mecanim动画工具,以及为用户提供Linux及Adobe Flash Player的部署预览功能。

    目前最新版本为Unity2019.2

    Unity是免费的,官方为Unity Pro和Unity iOS Pro提供30天全功能试用期。

    你可以使用C#快速上手它。

    如何学习

    第一步首先了解unity3d的菜单,视图界面。 [2]  这些是最基本的基础,可以像学word操作一样,大致能明白有几个菜单,几个基本的视图,各自起什么作用的就可以了。当然还要了解人物基本的比例和结构。

    using UnityEngine;
    using UnityEngine.EventSystems;
    using UnityEngine.UI;
    
    public class movePic : MonoBehaviour,IDragHandler ,IPointerDownHandler{
        private RawImage img; 
        Vector3 offsetPos; //存储按下鼠标时的图片-鼠标位置差
        void Start()
        {
            img = GetComponent<RawImage>();//获取图片,因为我们要获取他的RectTransform
        }
        public void OnDrag(PointerEventData eventData)
        {
            //将鼠标的位置坐标进行钳制,然后加上位置差再赋值给图片position
            img.rectTransform.position = new Vector3(Mathf.Clamp(Input.mousePosition.x, 0, Screen.width), Mathf.Clamp(Input.mousePosition.y, 0, Screen.height), 0) + offsetPos;
        }
        public void OnPointerDown(PointerEventData eventData)
        {
            offsetPos = img.rectTransform.position - Input.mousePosition;
        }
    }
    
    

    Unity3d代码

    第二步理解场景里面的坐标系统,输入系统,简单的向量概念。Unity3D的坐标系统及向量概念如果不理解清楚,不理解世界坐标,局部坐标的关系,即使一个简单的移动,缩放,旋转的几行代码,也会困惑你半天。

    第三步学习创建基本的场景的一些基本概念:游戏对象,组件,脚本。在界面上分别体现在层次视图,项目视图及属性视图,要理清楚彼此之间的关系

    第四步学习资源导入方面的一些基本元素:网格,材质,贴图,动画等。

    第五步学习脚本的生命周期,Start,UpDate,ONGUI这些基本的方法。了解,预制,时间,数学等常用的类及相关方法。理解游戏对象,组件,脚本彼此之间的关系。

    第六步进一步学习摄像机灯光,地形,渲染,粒子系统,物理系统等等,这些每一个深入进去都是一个很复杂的主题。

    第七步一些更高级的概念:向量的加减法点乘叉乘,光照法线贴图,内存管理,图形优化等等。Unity3D入门容易,真的要精通,那是相当难的。

    开源游戏项目

    http://subject.manew.com/source/

    Unity小作品游戏精选推荐(部分作品含源代码)

    Unity3D是全面集成的开发引擎,具有丰富的开包即用功能,可以用来创建游戏和其他3D互动内容。你可以使用Unity3D将你的艺术和素材配置到场景和环境中;添加物理性能;虚拟游戏测试并编辑你的游戏,一切完备就绪后,发布到你选择的平台,如台式电脑、网络、iOS、安卓、Wii、PS3、Xbox 360和WP8等。

    下面我就推荐一些个人Unity游戏作品,部分包含作者开放的源码,感谢原作者的分享,同时也鼓励大家能上传自己的作品,开放源码!

    Unity游戏AngryBots源码

    Unity游戏AngryBots源码
    Unity官方自带Demo,包含源码、贴图素材、视频教学及三种脚本不同的写法,适合刚入门学习的新手.更多

    推荐指数:★★★★★1.27G个人作品全部开源

    1.27G个人作品全部开源
    本人也不算厉害的人物,所以代码等等诸多地方也未必就做到很好,不少地方也优化不足,希望大家互相多交流交流,以便共同...更多

    推荐指数:★★★★★Unity2D射击游戏源码

    Unity2D射击游戏源码
    类似雷霆战机那样的射击游戏,附带游戏源码,可生成游戏直接玩,比较简单,可以参考学习...更多

    推荐指数:★★赛车跑道(未完成作品)

    赛车跑道(未完成作品)
    未完成作品,里面包含了赛车模型、跑道及城市建筑。可以接着源代码继续开发,类似赛车游戏...更多

    推荐指数:★★★植物大战僵尸源码素材及JS脚本带注释

    植物大战僵尸源码素材及JS脚本带注释
    在植物大战僵尸2风靡全球的今天,自己也想做一款,那么本项目可做参考,附带源码素材及JS脚本带注释,对Unity的学习...更多

    推荐指数:★★★★VS2010+C#写的3D-的Android游戏

    VS2010+C#写的3D-的Android游戏
    游戏采用VS2010+Unity4,纯C#开发,游戏资源均从Unity的资源商店搞的,只是个DEMO,这个DEMO我才搞了10天...更多

    推荐指数:★★★★Unity3d做的小游戏Demo《高铁惊魂》

    Unity3d做的小游戏Demo《高铁惊魂》
    由策划同学想的一个在车上模拟晕车的状况。根据右上角的方向来按键,然后如果那个如花同学转头过来看你...更多

    推荐指数:★★★Unity3D 之 《坦克克星游戏》

    Unity3D 之 《坦克克星游戏》
    此游戏虽然简单,但是还有很多值得学习的地方,主要用到碰撞检测及图片动画的实现两大块...更多

    推荐指数:★★★Unity3D解谜类小游戏

    Unity3D解谜类小游戏
    一个用Unity3D完成的简单的密室逃脱游戏,小学期课程设计作品,时间仓促,尚有很多不足之处。更多

    推荐指数:★★★Unity迷宫寻宝游戏

    Unity迷宫寻宝游戏
    面对令人头晕目眩的高度和望而生畏的深度,控制一个球在一个充满铁轨、木桥等机关的超真实世界中遨游...更多

    推荐指数:★★★★bumper+boats+碰碰船+项目源码

    bumper+boats+碰碰船+项目源码
    面对令人头晕目眩的高度和望而生畏的深度,控制一个球在一个充满铁轨、木桥等机关的超真实世界中遨游...更多

    推荐指数:★★★★Unity3D高尔夫球推杆游戏

    Unity3D高尔夫球推杆游戏
    游戏的操作很简单,控制旋转的方向,保持小球朝向着改方向发射,知道小球被球杆打进洞,表示推杆完成...更多

    推荐指数:★★★★超级打地鼠3D游戏

    超级打地鼠3D游戏
    这次的游戏,从题材上看是没什么新意的,就是打地鼠,但融入了地下城与阿赵里面的角色和场景...更多

    推荐指数:★★★Unity3D愤怒的小鸟教程附源码

    Unity3D愤怒的小鸟教程附源码
    我准备把对如何用Unity3D制作愤怒的小鸟的研究过程记录下来,希望能完成愤怒的小鸟游戏的大部分功能...更多

    推荐指数:★★★★Unity3D写雷电游戏

    Unity3D写雷电游戏
    加了一个子弹的碰撞效果,这个东西搞了我半天,rigidbody加入好子弹漫天乱飞,一个小弹幕游戏的雏形就出来了...更多

    推荐指数:★★★★

    常见问题

    1:天空盒有接缝怎么解决?

    答:在贴图导入设置里设置Wrap Mode为"Clamp"。

    2:DDS格式怎么不显示?

    答:Unity不支持DDS格式,Unity会将除DDS外的其他格式图片具有为DDS同样的优化。

    3:Unity如何动态载入外部模型等文件?

    答:可以使用AssetBundle。

    4:脚本编辑器有语法提示吗?

    答:有的,Win版使用Ctrl+I,Mac版使用Ctrl+>。

    5:如何使用烘焙贴图(多重纹理)?

    答:不要使用Shell贴图,直接将烘焙图赋予贴图的"自发光"通道之上。

    6:怎么屏蔽Webplayer右键菜单?

    答:<param name="disableContextMenu" value="true" />

    7:为什么水面没有实时反射效果?

    答:只有专业版才支持这种反射效果。

    8:怎么做摄像机漫游动画?

    答:Max正常制作摄像机漫游动画,导到Unity中后,将Unity的Camea拖拽到Max导出的摄像机Gameobject物体之上,作为其子物体即可。

    9:如何自定义Webplayer载入Logo及进度条?

    答:<param name="logoimage" value="Logo文件名" />,<param name="progressbarimage" value="进度条名" />,<param name="progressframeimage" value="进度条外框名" />。

    10:GUI上怎么使用中文字?

    答:导入任意中文字体,然后定义GUISkin字体为该字体即可。

    11:购买一个授权可以安装几台电脑?

    答:可以安装于2个系统之上比如一个Win版一个Mac版。

    12:Max文件扔到Unity中怎么说导入失败?

    答:下载最新版Fbx插件,用Max导出Fbx文件然后扔Unity中。

    13:如何不让摄像头穿透模型,离模型近了就像模型露面了?

    答:设置相机的Near clip plane,调小一点,但是不要给负数。

    14:怎么用双面贴图?

    答:Unity中可设置双面Shader,最简单有效的办法是直接做成双面的实体模型.复杂一点的方法可以在材质脚本中的相应的SubShader中的一个Pass块中加入cull off,即关闭反面裁剪。

    15:导入的Fbx模型尺寸小于Max中的尺寸?

    答:在Unity中该文件的导入设置中设置缩放因子为1。

    16:如何给相机添加Glow效果?

    答:选中相机对象,在菜单中选中Component-Image Effects-Glow赋予该组件即可(专业版才支持此特效)。

    17:怎么设置Webplayer默认尺寸?

    答:到菜单Edit-Project Settings-Player中设置Default Web Screen尺寸即可。

    18:怎么设置可执行文件的启动Banner?

    答:到菜单Edit-Project Settings-Player中设置Resolution Dialog Banner。

    19:如何设置雾效?

    unity

     

    unity(10张)

     

    答:到菜单Edit-Render Settings中开启Fog及设置Fog Color等即可。

    20:如何设定默认Skybox天空盒?

    答:到菜单Edit-Render Settings中设置Skybox Material即可. (欢迎加入unity3d百度唯一问答团队,参考资料)

    21:如何下载Unity3d游戏开发工具?

    Unity3D下载软件开发工具和游戏引擎套件(Unity) v4.5.5 下载Unity3d 4.5.5下载是一个让你轻松创作的多平台的游戏开发工具,是一个全面整合的专业游戏引擎综合编辑通过Unity简单的用户界面

    1. unity3d虚拟现实的设计流程?

    答:max 制作模型,导出fbx,导入unity,设计相机代码,设计ui,build 。

    22:Unity3D-实现水面渲染 [3] 

    在实现上其实有两种大体的思路来实现散射,一种是专门为海底的物体写一个shader,这个shader里包含散射的计算;另外一种是专门用一个相机来渲染海底的场景并计算散射。

    Unity下载

    中国增强版:https://unity.cn/download

     

     

    Unity 商店

    https://store.unity.com/cn/

    个人使用:

    团队使用:

     更多阅读参考:

    Unity-Unity3D-百度百科

    Unity3D 一句话代码实现UGUI图片的拖拽功能

    Unity3D脚本--常用代码集

    Unity3D代码加密

    在线学习Unity之一

    在线学习Unity之二

     

    展开全文
  • 3D游戏引擎开发

    千次阅读 2020-03-06 14:23:51
    在软件开发中,游戏开发这个方向看起来目标很明确,但其实是个领域很广的方向,入门的时候如果得不到指点一二,很容易误入歧途,相反,如果走这条路之前能得到前人的一些指路,是可以事半功倍的。 一 平台与编程...

    转载自https://www.cnblogs.com/zhy-1992/p/6530359.html

    在软件开发中,游戏开发这个方向看起来目标很明确,但其实是个领域很广的方向,入门的时候如果得不到指点一二,很容易误入歧途,相反,如果走这条路之前能得到前人的一些指路,是可以事半功倍的。

    一 平台与编程语言选择

    首先,游戏开发的平台就有很多类型: 

    • 个人主机平台:Windows、Linux、Mac OC;
    • 移动平台:iOS、Android、Windows Phone、BlackBerryOS、Symbian;
    • 专业主机平台:Xbox、PlayStation、Will等。


    如果你想从事移动平台的游戏开发,Android主流JAVA语言,iOS主流Object-C语言,那么你就要去学习这个平台主流的语言,而在个人主机上主流的游戏开发语言现在包括以后很长时间也还是C++。

    但是并不是所不同平台的游戏开发,就毫无共通之处,学了这个到了另一个平台就无用了。不是这样的,编程的世界里你走得越远你会发现很多东西的本质都是相似的,例如你如果扎实地理解了C++的基本语法(而不是死记硬背),日后再转Java语言也不是很难的事情,因为它们本质的面向对象特性还有各种编程语言特性都是相通的。

    所以,如果你想走得远,在学习的时候不能简单流于表面,对于一样知识越深入到底层,你就越能看到其它知识与其的异曲同工之处,因此你将比别人更轻松。但是,当然一开始最好尽可能是贴合自己的专属领域和编程语言,这样能尽快地在这个领域持有一席之地。 

    无论你选择哪个平台,游戏开发这个浩大的工程都离不开游戏引擎,所以这里都有二条路线让你选择: 

    • 只使用游戏引擎;
    • 使用游戏引擎并深入学习游戏引擎原理。

    线路一:只使用游戏引擎

    对于第一条路线,游戏引擎的使用并不困难,因此适合想快速上手游戏开发工作的人。我们工作大多数时候也不会自己开发游戏引擎,所以这样对于一般的日常工作也没什么大碍。对于只使用游戏引擎的人来说,入门阶段要做的就是看该引擎的教程(书籍、视频、网上博客、网上教程、官方帮助文档等),并且熟练该教程所使用的编程语言。

    所以你要做的第一件事,就是去了解现在流行的游戏引擎。因为不同平台下的性能不同,支持的编程语言也不尽相同,所以针对不同平台下的流行的游戏引擎也是不同的(方括号里面是特别推荐的,基于开源性、易用性、性能与效果等方面的综合水平推荐):

    • windows或游戏主机:【Unreal】、寒霜、CE3
    • 苹果ios:【unity3D】、【cocos2d-ObjC】、【Unreal】、sparrow、sprite kit。
    • 安卓:【unity3d】、【cocos2d-x】、【Unreal】、AndEngine、libgdx。
    • 网页:【Egret】、【cocos2d-html5】、Fancy3D、unity3d。


    在选择游戏引擎的时候,尽可能选用流行的游戏引擎,因为这个游戏引擎流行意味着官方的功能比较完善和易用,问答社区也比较多人解疑。各个游戏引擎也各有千秋,Unity3d胜在简单易用,对性能要求不高,但是效果不够华丽,因而一般用在移动平台而不会用在电脑或游戏主机。Unreal胜在开源免费,而且效果也很出色,但是对设备要求比较高,因而常常用来开发效果绚丽的大型游戏。cocos2d-x也是开源免费的,在2D领域深有造诣,但是缺点是不可视化开发。另外,如果你想了解游戏引擎原理,那么首要考虑的就是开源的游戏引擎。

    不同游戏引擎使用的编程语言或者脚本语言可能是不一样的,所以当你想要学习某个游戏引擎的时候,也应该留意该游戏引擎所使用的语言。大部分情况是,Windows用的的是C++,同时结合lua或python脚本语言。而ios平台下使用Objective-C或swift,安卓平台下使用Java。但这不是必然的,例如Unity在各个平台下都可以用C#或者javascript脚本语言。

    下面是商业上流行的游戏引擎详细比较:

    1) Unreal4(虚幻4)

    • 适用平台:Microsoft Windows、Mac OS X、iOS、Android、虚拟现实设备(包括但不限于SteamVR/HTC Vive、Morpheus、Oculus Rift及Gear VR)、Linux、SteamOS及 HTML5平台。
    • 编程语言:C++或无需编写代码。
    • 优点:开源免费,画面效果出色,已有多款商业大作经验。同时,它还能跨平台,商店资源丰富,提供了无需编写代码即可制作游戏的强大功能(可视化开发)。
    • 缺点:开发机器配置要求较高。

    2) Unity3D

    • 适用平台:iOS、Android、Windows phone 8、Tizen、Microsoft Windows、Windows Store应用程序、Mac、Linux/Steam OS、网络播放器、WebGL、PlayStation3、 PlayStation4、PlayStation Vita版、Xbox One、Xbox 360、Wii U、Android TV、Samsung SMART TV、Oculus Rift、Gear VR、Microsoft Hololens、Playstation VR。
    • 编程语言:C#、javascript、Boo。
    • 优点:方便易用,中文资料丰富,跨平台,商店资源丰富,可视化开发。
    • 缺点:画面效果一般,不是免费开源,引擎效率比较低。

    3) Cocos2d系列(包Cocos2d-x、Cocos2d-ObjC、Cocos2d-html5、Cocos2d-xna等)

    • 适用平台:Microsoft Windows、OS X、 Linux、iOS、 Android、 Tizen、 Linux、Mac OS X、HTML5浏览器、Windows Phone 7 & 8、Xbox 360。
    • 编程语言:Python、Objective-C、C++、 Lua、 JavaScript、 Swift、JavaScript、 C#。
    • 优点:开源免费,跨平台,中文资料丰富,2D技术丰富且成熟。
    • 缺点:不可视化开发,3D方面技术不成熟。

    4) CryEngine3

    • 适用平台:Microsoft Windows、OS X、Linux、PlayStation 3、PlayStation 4、Wii U、Xbox 360、Xbox One、iOS、Android。
    • 编程语言:C++、Lua。
    • 优点:画面效果世界一流,可视化开发,跨平台。
    • 缺点:开发机器配置要求较高,不是免费开源。

    5) Frostbite3(寒霜3)

    • 适用平台:Microsoft Windows、PlayStation 3、PlayStation 4、Xbox 360、Xbox One。
    • 编程语言:C++。
    • 优点:画面效果出色,可视化开发,跨平台。
    • 缺点:开发机器配置要求较高,不是免费开源。

    6) Egret(白鹭)

    • 适用平台:HTML5、iOS、Android、Windows Phone。
    • 编程语言:TypeScript、JavaScript。
    • 优点:免费开源,配套工具多,全中文文档,可视化开发,跨平台。
    • 缺点:支持平台较少,大多数时候用于开发对性能和效率要求不高的小游戏。


    但是使用游戏引擎毕竟是停留在表面看不到本质,当游戏开发的时候出现了某些问题或者特殊需求,你往往很难处理。而且游戏引擎技术日新月异,你所学的几乎都是别人留下来的方法,而不是其本质思想。如果将来别的游戏引擎兴起,你又要重新学习另外的游戏引擎怎么使用。在很多大公司里面,甚至都有自己公司内部专用的引擎(如网易公司的风魂引擎、金山公司的剑网3引擎、蜗牛公司的Flexi引擎等等)。所以单纯地走这条路线,可能不会让你走得很远并且可能会日渐乏味。 

    线路二:使用游戏引擎并深入了解游戏引擎原理

    对于第二条路线,深入学习游戏引擎原理短时间不会让你的工作有什么卓越的成效,但是可以弥补只使用游戏引擎导致的问题,而且学习游戏引擎原理,更多时候不是一定就为了自己日后要造个游戏引擎,而是更深入理解自己的游戏引擎,更好地使用它。当然,千里之行始于足下,经常学习游戏引擎底层原理的人到了一定的积累的时候,自己造个游戏引擎也是可以的。 

    对于像学习游戏引擎原理的人来说,需要制定自己明确的长期目标: 

    1) 首先,一开始可能对游戏引擎没什么概念,建议先使用一两个游戏引擎(我推荐C++程序员学习虚幻4游戏引擎,现在是免费开源的,非常值得学习。那些不开源的游戏引擎尽量不要去学习,因为其对于学习原理来说没有多大贡献)。 

    2) 因为游戏开发就是一门实时渲染的艺术,所以离不开图形库的学习。现在主流的图形库是Windows平台专用的DirectX 11和通用平台的Opengl。这两个图形库,至少需要入门其中一个。 

    3) 然后,你就可以开始看计算机图形学的书籍了。如果你发现你的理论底子不足,这个时候就需要补一下线性代数、基本的微积分、还有3D数学的知识。 

    4) 游戏引擎中包含了各个部分,上面的渲染只是游戏引擎的一部分。还有其它诸如着色器编写、地形编写、物理引擎编写、模型和动画、人工智能体设计、网络编程等等,完成渲染部分的基本学习后,你可以选择自己感兴趣的部分进行专攻,毕竟我们实际工作大多数时候是团队开发,而不是单打独斗,每个人都应该精通自己所擅长的那部分。

    这里为了文章的紧凑性,我将游戏引擎的基础理论知识和各个引擎组件的推荐书籍放到了文章的附录处。

    下表是基础理论知识和游戏引擎组件书籍推荐(不必全看,请有选择地阅读):

    1) 数学基础

    下面这些数学基础书籍是为游戏开发量身定制的,比专门看某一数学方向更有效率:

    • 《3D Math Primer for Graphics and Game Development》,有中文版
    • 《Mathematics for 3D Game Programming and Computer Graphics》
    • 《Essential Mathematics Guide》
    • 《Geometric Tools for Computer Graphics》

    2) 图形库

    针对 DirectX 的书籍:

    • 《Introduction to 3D Game Programming with DirectX 11》,大名鼎鼎的龙书,入门必看的
    • 《Practical Rendering and Computation with Direct3D 11》,进阶
    • 《Real-Time 3D Rendering with DirectX and HLSL》


    针对 OpengGL 的书籍:

    • 《OpenGL SuperBible》,著名的蓝宝书,以例子为主,有中文版。但不建议看中文版,翻译得不好。
    • 《OpenGL Programming Guide》,著名的红宝书,有中文版。红宝书更像是手册,API大全,例子较少,适合熟练者查询使用。
    • 《OpenGL 4.0 Shading Language Cookbook》,进阶,基本上就是API手册,有中文版。但不建议看中文版,翻译得不好。

    3) 计算机图形学

    • 《The Nature of Code》,有中文版,比较简单
    • 《Fundamentals of Computer Graphics》,被国外多所大学采用的入门教材,介绍范围比较广,从基本的相关数学到建模、渲染、动画、应用方面都有提及
    • 《Physically Based Rendering》,主要是离线渲染
    • 《Real-Time-Rendering》,必读经典!必读!
    • 《计算机图形学》,作者舍利
    • 《Computer Graphics》,要看最新的第三版
    • 《计算机图形学原理及实践:C语言描述》

    4) Shader着色器

    • 《Cg_tutorial》,入门
    • 《The Complete Effect and HLSL Guide》,入门
    • 《Shaders for Game Programmers and Artists》,含有大量入门例子
    • 《Advanced Lighting And Materials With Shaders》,介绍光照模型和技术
    • 《GPU Gems》进阶必读。
    • 《Shader X》系列,每年出版一本,包含最新的实时渲染技术。论文性的比较多,偏难。
    • 《Programming Vertex, Geometry, and Pixel Shaders》,以DirectX 10为主,很详细。

    5) 地形

    《Real Time 3D Terrain Engines Using C++ And DX9》非常全面的讨论了关于地形渲染的各种技术。

    6) 模型导入和动画

    • 《Character Animation With Direct3D》包含了最新的游戏动画技术
    • 《Computer Animation》
    • 《Real-Time Cameras》
    • 《Computer Facial Animation》
    • 《Realtime 3D Character Animation with Visual C++》
    • 《Advanced Animation and Rendering Techniques》
    • 《Cloth Modeling and Animation》

    7) 网络

    • 《TCP/IP 详解 卷2》
    • 《Network Programming for Microsoft Windows》
    • 《Advanced Programming in the UNIX Environment》
    • 《Windows核心编程》
    • 《Multithreading applications in Win32》
    • 《网络游戏核心技术与实战》

    8) 物理

    • 《Game Physics》
    • 《Game Physics Engine Development》
    • 《Real-time Collision Detection》,碰撞检测方面最好的书
    • 《3D Game Engine Design, 2nd》第8、9章值得一看

    9) 细节层次

    《Level of Detail for 3D Graphics》

    10) 光线跟踪

    • 《Physical-Based Rendering - From Theory to Implementation》
    • 《Another Introduction to Ray Tracing》

    11) 人工智能

    • 《Programming Game AI by Example》有中文版
    • 《Artificial Intelligence for Games》
    • 《AI Programming Wisdom》
    • 《AI Game Engine Programming》

    12) 综合

        • 《Game Programming Gems》,文章的范围比较广,选择性阅读
        • 《Color and Light in Nature》
        • 《Digital Design of Nature》
        • 《Form+Code in Design, Art, and Architecture》
      • 一下这张图片非原创,出自:作者星铃丹,授权发布,转载请注明出处。写的非常详细,拿出来和大家分享下!
    展开全文
  • 我是如何学习游戏引擎的?

    千次阅读 多人点赞 2021-09-28 00:50:40
    这是【游戏开发那些事】第51篇原创前言:游戏引擎,表面上看是一个工具,实质上却是一本“技术图谱”,每一个点击行为的背后都有着其独到的意义。每一个模块都索引着数以万行的工程代码、数以百计的科...
  • 游戏开发工具之游戏引擎

    千次阅读 2018-11-16 22:22:51
    目前市场上游戏引擎多种多样,主流的游戏引擎有unity,unreal,建议初学游戏开发的小伙伴先从这两个引擎学起。有人说,unreal要比unity难学很多,初学者应先接触unity,其实我个人觉得游戏引擎就是普通软件,unity与...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 174,231
精华内容 69,692
关键字:

游戏引擎