![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
游戏制作
文章平均质量分 85
海洋_
畅销书作者,著作:《手把手教你3D游戏引擎架构》、《Unity3D实战核心技术详解》,《Cocos2d-x 3.x 图形学渲染技术讲解》等。
展开
-
游戏创业团队应该选择Git还是Svn
在开发过程中遇到问题,我都会做一些思考,总结一下,作为研发团队在项目研发前就要确定好管理工具,游戏研发团队核心:程序,美术,策划。公司为了项目管理方便,一般会选择Git或者SVN,下面我们就分析一下项目开发该选择那款项目管理工具,先说Git。Git选择Git,Git它的优势非常明显,如下所示:1、分布式管理,非常强大的分支管理功能,分支功能对于开发者来说非常方便,每个人可以开一个分支,开发好...原创 2019-10-12 11:35:48 · 4297 阅读 · 2 评论 -
D3D12渲染技术之形状几何
在本篇博客中,我们将展示如何为椭圆体,球体,圆柱体和圆锥体创建几何体。 这些形状对于绘制天空圆顶,调试,可视化碰撞检测和延迟渲染非常有用。 例如,我们可能希望将所有游戏角色渲染为调试测试的球体。 我们将过程几何生成代码放在GeometryGenerator类(GeometryGenerator.h / .cpp)中,GeometryGenerator是一个实用程序类,用于生成简单的几何形状,如网...原创 2018-09-21 13:46:45 · 681 阅读 · 0 评论 -
D3D12渲染技术之创建和启用纹理
加载DDS文件Microsoft提供了轻量级源代码来加载DDS文件:https://github.com/Microsoft/DirectXTK/wiki/DDSTextureLoader但是,代码仅支持DirectX 11,我们修改了DDSTextureLoader.h / .cpp文件并为DirectX 12提供了另一种方法(这些修改过的文件可以在Common文件夹中找到或者 可下载的来...原创 2018-10-04 09:11:49 · 1689 阅读 · 0 评论 -
D3D渲染技术之混合案例
在本篇内容中,我们将介绍用于获得特定效果的一些混合因子组合, 在这些示例中,我们仅查看RGB混合。 Alpha混合的处理方式类似。无颜色写入假设我们想要保持原始目标像素的原样,而不是覆盖它或将其与当前光栅化的源像素混合。 这可能很有用,例如,如果您只想写入深度/模板缓冲区,而不是后台缓冲区。 为此,请将源像素混合因子设置为D3D12_BLEND_ZERO,将目标混合因子设置为D3D12_BLE...原创 2018-11-05 09:57:01 · 1096 阅读 · 3 评论 -
手把手教你架构3D引擎高级篇系列六
前面给读者介绍了哈希表的封装,其实我们实现的是数据结构的算法,原创 2018-11-23 14:06:11 · 896 阅读 · 0 评论 -
手把手教你成为Shader编程实战达人—GPU
GPU编程市场应用GPU全称是Graphics Processing Unit,中文成为图形处理器,所以GPU编程也叫图形学编程,它是针对的显卡中的芯片编程,游戏引擎的更新换代发展的一个重要阶段是显卡芯片的出现,引擎的渲染能力得到极大提升。GPU 加速器于 2007 年由 NVIDIA® 率先推出,引擎的更新换代也是跟GPU硬件息息相关的,从固定流水线变成了可编程流水线,画面品质得到了质的飞跃...原创 2018-12-08 10:53:43 · 3126 阅读 · 0 评论 -
手把手教你架构3D引擎高级篇系列八
本篇博客是给读者介绍引擎底层如何与Lua进行结合,方便开发者直接使用脚本编程,为什么选择Lua,通常开发者会使用Json,XML,txt等等。相比Lua有哪些优点呢?a、除了Lua库,在没有使用其他库可以使用。b、可以在文件中使用不同的公式,例如:some_variable = math.sqrt(2)* 2c、它非常轻巧,速度快d、它是在MIT许可下换句话说代码是开源的,因此我们可以以任...原创 2018-12-03 21:14:45 · 1068 阅读 · 0 评论 -
利用运动学实现导弹仿真飞行
利用Unity实现导弹飞行的算法网上案例很多,本篇博客主要给读者介绍如何将所学算法运用到项目开发的实战教程。我们将使用运动学原理实现仿真,这意味着我们将只在计算中使用速度,而不考虑物体上的质量和其他作用的物理力,这些力会影响物体的运动,比如阻力。为了能够模拟导弹击中目标,我们将考虑以下变量:发射速度,发射角度,导弹距离目标的距离。很多程序员学过算法,学过数据结构,但是在项目开发过程中就不会灵...原创 2018-12-10 14:15:11 · 8229 阅读 · 5 评论 -
Unity屏幕雪花另类实现方式
今天是圣诞节平安夜,为此特别制作了一个雪花飘落的场景,我们的雪花渲染方式不同于网上流行的使用Camera Filter,而是采用自定义Mesh实现的,自定义Mesh可以帮助我们实现很多的效果,而且对效率的提升非常有帮助,雪花实现方式分为:C#脚本和Shader渲染,C#负责雪花的生成,Shader负责雪花的飞舞和渲染。下面我们介绍实现方式:关于unity,每帧可渲染65000顶点,表示雪的网状物...原创 2018-12-24 21:58:58 · 14445 阅读 · 10 评论 -
我对架构设计的理解
游戏架构设计是一个老生长谈的话题,以前给多个游戏公司培训过,随着时间的积累,对游戏架构设计的理解又多了一些,在此给读者分享一下我对于架构设计的理解。游戏架构设计是基于引擎的基础上的二次封装,目的是便于游戏开发者能够专注于逻辑的编写,便于多人协同开发,便于功能的扩展等等。不论使用什么引擎,只要掌握了思想,就能解决问题。我先把我们的设计思想介绍一下,我们的架构设计总体来说是基于组件的模块化设计,举...原创 2019-02-09 13:53:52 · 2190 阅读 · 1 评论 -
D3D12渲染技术之灯光
灯光在引擎中占用重要地位,引擎没有灯光就是漆黑一片,见下图,左边我们有一个没有照明的球体,在右边,我们有一个点亮的球体。 正如你所看到的,左边的球体看起来很平坦 - 也许它根本不是一个球体,而只是一个2D圆圈! 另一方面,右边的球体确实看起来是3D - 照明和阴影有助于我们对物体的固体形状和体积的感知。 事实上,我们对世界的视觉感知取决于光线及其与材料的相互作用,因此,产生逼真场景的大部分问题都与...原创 2018-09-24 10:29:38 · 598 阅读 · 0 评论 -
Unity大密度建筑场景加载解决方案
现在虚拟城市仿真,以及军事仿真项目越来越多,开发此类项目,首先面对的一个比较棘手的问题是内存管理,城市中的建筑物特别多,这些建筑物的面数和贴图都要被加到内存中的,内存有自己的峰值,超过了就要崩掉,所以内存的优化是必须要面对以及解决的问题。 Unity官方提供了Occlusion Culling的裁剪操作,网上有很多文章对它做了相关介绍,因为它是Unity自身提供的,对于我们程序员来说就是一个黑盒...原创 2018-09-07 09:41:09 · 14374 阅读 · 3 评论 -
D3D12渲染技术之光栅化与管道
光栅化状态虽然渲染管道的许多部分都是可编程的,但某些部分只是可配置的。 由D3D12_RASTERIZER_DESC结构表示的光栅化器状态组用于配置渲染管道的光栅化阶段:typedef struct D3D12_RASTERIZER_DESC {D3D12_FILL_MODE FillMode; // Default: D3D12_FILL_SOLID D3D12_CULL_MO...原创 2018-09-17 13:42:22 · 881 阅读 · 0 评论 -
游戏UI动态加载图片优化
说到UI优化,很多人对其并不以为意,UI的制作无非使用UGUI或者NGUI。UI优化主要是针对图集,还有一些依赖项的优化,针对的是内存优化,上面这些都是关于静态UI的优化,这个是作为程序员都要经历的阶段。其实很多开发者对使用UGUI或者NGUI已经墨守成规了,我们如果真想去优化,其实完全可以自己封装一套UI的底层代码,效率很高的,摒弃了UGUI和NGUI影响效率的代码,自己封装的简单实用,在我的视...原创 2018-08-09 18:59:48 · 2444 阅读 · 2 评论 -
Unity3D地面云层投影实时绘制
现实生活中,地面上经常会有云彩的影子在移动,它其实就是通过太阳光将其投射到地面上的,这个应用在游戏中跟人的感觉场景比较真实,在FoxHole散兵坑游戏中就实现了这个效果,如下图所示: 实现类似的效果方法有两种:一种是常用的方法,就是使用一个天空盒,再实现一个飘动的云层,然后通过平行光将其投射到地面上,虽然比较好理解,这种方法不推荐,运行效率也会受影响。另一种方法就是我们本篇博客需要实现的,通...原创 2018-08-11 10:20:07 · 6540 阅读 · 2 评论 -
Unity大场景数据加载及优化方案
前段时间,有几个虚拟仿真公司跟我请教关于大地形的加载优化问题,它们使用的引擎都是自己研发的,引擎对于开发者来说,大同小异,它们的基本构造是一样的,关键是在于解决问题的方法,正是基于这个前提写了这个课程,希望给读者提供一些解决问题的思路。 目前,大地形动态加载已经成为当前游戏开发或者虚拟仿真领域必须要解决的问题,尤其在虚拟军事仿真领域,由于要涉及到大兵团虚拟演练作战,这对仿真真实性要求比较...原创 2018-08-07 16:29:55 · 34145 阅读 · 8 评论 -
深入理解加载FBX模型文件
每个模型文件都有自己的格式,有自研引擎的模型格式,有AutoDesk提供的模型文件格式,比如FBX模型文件,因为Unity与UE4引擎的使用而备受关注,网上也有很多关于这方面的文章,但是都没有真正解释FBX文件的内部结构,以及如何自己封装程序加载FBX模型文件。本篇博客就教给读者这两方面的知识,这样更有助于读者理解Unity加载设置FBX文件的界面。FBX文件内部结构我们要加载模型文件,...原创 2018-08-13 21:15:34 · 81879 阅读 · 29 评论 -
D3D12渲染技术概述
从D3D9到D3D12逐步提升,现在很多以前的引擎还是停留在D3D9或者D3D11,D3D12用的比较少,相信不久的将来,引擎使用的D3D API都会更新到D3D12,为了普及D3D API的开发,会做一个系列文章用于介绍D3D12的特色和应用。由浅入深,逐步讲解,不论做游戏还是做VR,AR都会涉及到渲染,很多公司会针对自己的项目封装一些图形接口用于渲染,掌握D3D12很重要的,回到正题,因为D3...原创 2018-08-22 09:27:03 · 6312 阅读 · 0 评论 -
谈谈Unity实体组件ECS与Jobs System
Unity2018版本提供了ECS和Jobs System功能,网上也有很多这方面的技术介绍,本篇博客从Unity架构优化的角度给读者介绍关于ECS和Jobs System的使用,结合着实际案例希望让读者更容易理解它们。 Unity 实体组件系统和 C# Job System 是两个不同的系统,但它们密不可分,若要了解这两个系统,我们先看看在 Unity 场景中创建游戏对象的工作流程如下所示:...原创 2018-08-20 13:16:51 · 16645 阅读 · 9 评论 -
D3D12渲染技术之初始化流程
掌握了矩阵向量运算的实现后,接下来我们要做的事情运行我们的D3D12,看看会出现什么效果?也就是我们通常说的初始化D3D12,D3D12的初始化工作与以前的D3D9是完全不一样的,D3D12做了大幅的升级。但是每个D3D图形API都有自己的初始化流程,大家只要记住这个流程,学习起来就比较容易,就跟生产车架的流水线作业一样的原理,先做什么后做什么。我们先聊聊D3D12的初始化流程,然后再编程实现。...原创 2018-08-23 14:12:47 · 5116 阅读 · 0 评论 -
Unity移动端软阴影技术总结
在移动端实现阴影技术可以提升画面品质,我们说的实时阴影也成为软阴影,鉴于移动端硬件的限制,一些复杂的算法比如PSSM,CSM等不可能在移动端去实时,我们只能找一种捷径,既能把实时阴影实现出来,效率还要正常运行。本篇博客把市面上比较流行的在移动端运行的算法或者阴影插件给读者汇总一下,以便读者在项目开发中能够灵活的运用这些代码。另外,也给读者推荐一个抓取帧数据的非常实用的一个工具:Adreno Pro...原创 2018-09-06 08:17:03 · 10408 阅读 · 1 评论 -
D3D12渲染技术之编译Shader
很多人只知道写Shader,但是并不了解DX或者OpenGL是如何编译Shader的,我们写的Shader是一种文本文件,它可以被DX或者OpenGL读取,说明它们提供了接口编译Shader。3D引擎都与DX或者OpenGL相关的,本篇博客就给读者介绍如何编译Shader的。 在Direct3D中,必须首先将着色器程序编译为可移植字节码, 然后,图形驱动程序将采用此字节码并将其再次编译为系统GP...原创 2018-09-17 08:48:47 · 3911 阅读 · 0 评论 -
飞车竞速商业游戏制作教程
最近刚发布了一个关于赛车竞速的视频课程,属于跑酷类型的游戏,类似天天飞车,属于一款真正的商业游戏,目前,跑酷类型的游戏在市场上的反响还是不错的,其实任何类型的游戏只要玩法新颖,用户基础都是有的。视频教学网址:https://edu.csdn.net/course/detail/8610 该飞车竞速游戏视频课程的主要特点如下: 第一,游戏UI,通常的游戏UI制作都是使用NGUI或者UGU...原创 2018-06-25 19:11:44 · 953 阅读 · 0 评论