<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Crazy Engine的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/CrazyEngine</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; CrazyEngine]]></copyright><item><title><![CDATA[为UE和Unity开发者准备的Godot指南]]></title><link>https://blog.youkuaiyun.com/CrazyEngine/article/details/134563672</link><guid>https://blog.youkuaiyun.com/CrazyEngine/article/details/134563672</guid><author>CrazyEngine</author><pubDate>Wed, 22 Nov 2023 21:50:44 +0800</pubDate><description><![CDATA[用户可以将场景栏中的节点信息保存形成一个新的场景文件，这类似于Unity中储存prefab数据的文件，Godot中也会将一个文件内节点的集合称为一个场景，场景栏可以同时管理节点与场景。首先，用户必须明确节点是Godot引擎中行驶功能的基本单位，而场景只是节点保存与加载的单位，Godot中的节点可以保存为tscn格式的场景文件，在需要时通过读取文件生成具有对应属性或特征的节点。需要注意的是此处显示的并不是项目内的所有文件，而是项目中所有的可读取的资源文件。用户可以在此直观的预览、编辑游戏的2D与3D内容。]]></description><category></category></item><item><title><![CDATA[Unity、UE和Godot的优劣对比]]></title><link>https://blog.youkuaiyun.com/CrazyEngine/article/details/134563569</link><guid>https://blog.youkuaiyun.com/CrazyEngine/article/details/134563569</guid><author>CrazyEngine</author><pubDate>Wed, 22 Nov 2023 21:41:20 +0800</pubDate><description><![CDATA[Unity和UE这两个商业引擎占据了几乎所有的游戏引擎市场，是行业的两座灯塔，对整个游戏引擎的发展具有引领的作用。我从2016年开始就开始使用和研究这两个引擎，也结合一下业内的共识，一般来说认为，Unity更擅长移动端的开发，而UE更擅长PC项目的开发。Unity的易用性做的最好，当原生功能不满足的时候，非常容易去修改，比方说，渲染管线的修改。而UE的设计理念是，原生功能特别丰富，一般来说做项目是够用的。但是如果要修改的话很难，一般的团队玩不转。另外呢，Unity不开源，如果要想看代码，需要公司额外花钱。]]></description><category></category></item><item><title><![CDATA[Godot]]></title><link>https://blog.youkuaiyun.com/CrazyEngine/article/details/134562947</link><guid>https://blog.youkuaiyun.com/CrazyEngine/article/details/134562947</guid><author>CrazyEngine</author><pubDate>Wed, 22 Nov 2023 21:20:13 +0800</pubDate><description><![CDATA[Godot的优势：

完全免费，MIT协议，甚至你只需要改一行代码就宣称自己的引擎。
这不是美国公司开发的，以后能做政府项目。
轻量，特别适合想深入研究底层技术的人。Unity不开源，另外即使公司购买了源码，由于不开源也只能自己研究，因为形不成社区。UE开源，但太重。都不适合新手学习。
渲染器以支持Vulkan为主，能充分发挥Vulkan的性能优势。
没有短板。用过或者调研过不下十种引擎，都有短板。比如，OGRE只是个渲染引擎，想做项目必须整合各种第三方的插件；Urho3D只有一个简单的编辑器。]]></description><category></category></item><item><title><![CDATA[编译UE5.0]]></title><link>https://blog.youkuaiyun.com/CrazyEngine/article/details/125714316</link><guid>https://blog.youkuaiyun.com/CrazyEngine/article/details/125714316</guid><author>CrazyEngine</author><pubDate>Mon, 11 Jul 2022 09:08:56 +0800</pubDate><description><![CDATA[注：目前的稳定版本是5.0.2。1、注册。注册Git账户，注册Epic games账户，登陆虚幻4官网www.unrealengine.com，在如下位置关联GITHUB： 接下来进入GITHUB中的UE4专栏：https://github.com/EpicGames，此时网页顶端会有一个提示邀请你加入Epic games team，同意后刷新就会显示如下页面，否则只会显示ThirdParty和Signup两项内容。 第一个UnrealEngine就是引擎源码，进入下载 自己懒得截图了，借用了【UE4 C+]]></description><category></category></item><item><title><![CDATA[一名“老”引擎程序员的昨天、今天和明天]]></title><link>https://blog.youkuaiyun.com/CrazyEngine/article/details/123457052</link><guid>https://blog.youkuaiyun.com/CrazyEngine/article/details/123457052</guid><author>CrazyEngine</author><pubDate>Sun, 13 Mar 2022 12:30:09 +0800</pubDate><description><![CDATA[不知不觉中，跟游戏引擎的缘分已经将近20年了。最近机缘巧合下整理了下这些年的做过的东西，也展望下未来。希望自己不忘初心，方得始终。也希望借机跟还坚守在这个领域的同行们交个朋友，切磋切磋。

昨天——使用3D实时引擎和负责技术支持

初识3D实时引擎——Java 3D

2005-2007年，就读于北京理工大学，攻读硕士学位。自学轻量级引擎Java3D，完成课题“3D仿真在化工场景动态搭建的应用”。Java 3D是个轻量级游戏引擎，支持网页上运行。









CryEngine 3

2012.12 ]]></description><category></category></item><item><title><![CDATA[实时GI方案概述]]></title><link>https://blog.youkuaiyun.com/CrazyEngine/article/details/123327083</link><guid>https://blog.youkuaiyun.com/CrazyEngine/article/details/123327083</guid><author>CrazyEngine</author><pubDate>Mon, 07 Mar 2022 12:04:11 +0800</pubDate><description><![CDATA[LPV。

SVO。

VXGI。

Enlighten的PRT方案。

DDGI，育碧开发的全境封锁，还有NVidia的RTXGI。

UE4的实时GI。

SSGI。

UE5的Lumen。

Global Illumination Based on Surfels：SIGGRAPH 21: Global Illumination Based on SurfelsThe SIGGRAPH presentation by Henrik Halen and Andreas Brinck presents g]]></description><category></category></item><item><title><![CDATA[游戏开发中为什么要控制模型的面数]]></title><link>https://blog.youkuaiyun.com/CrazyEngine/article/details/123236351</link><guid>https://blog.youkuaiyun.com/CrazyEngine/article/details/123236351</guid><author>CrazyEngine</author><pubDate>Wed, 02 Mar 2022 18:24:22 +0800</pubDate><description><![CDATA[首先，面数越多，VS的调用会越多，开销越大。PC级别的显卡目前对VS的开销不太敏感，但是移动端性能有限，还是尽量注意。

其次，为了在shader里支持ddx和ddy相关的功能（即使你不调用这两个接口，内部也是需要这个功能的，比如纹理采样中需要计算出mipmap值），GPU里处理像素是以2x2为单位的。网上摘的一段话：

The pixel shader always processes 2 X 2 groups of pixels (called "quads") but there is no othe]]></description><category></category></item><item><title><![CDATA[游戏性能优化的五个方向]]></title><link>https://blog.youkuaiyun.com/CrazyEngine/article/details/123139073</link><guid>https://blog.youkuaiyun.com/CrazyEngine/article/details/123139073</guid><author>CrazyEngine</author><pubDate>Fri, 25 Feb 2022 20:01:17 +0800</pubDate><description><![CDATA[或者换个标题也行：3D实时程序性能优化的四重境界。一般来说，这四层可以认为是性能优化的顺序，越靠前意味着单位时间投入的产出越大。

第一重 引擎使用层面

参数设置是否正确，例如场景很小，却打开了级联阴影。

资源格式不正确，例如纹理没有用压缩格式，纹理的压缩格式选的不好（现在3D游戏有个趋势，都尽量使用ASTC），面数太多或者没有做LOD，等等。这些问题人工去查费时耗力，现在有些工具可以自动排查。

第二重 渲染管线

对于Unity来说，建议尽量使用SRP管线，因为整个管线可以深度定制。比如说内置的后期]]></description><category></category></item><item><title><![CDATA[Crazy Engine 5.0 (Plan on first stage)]]></title><link>https://blog.youkuaiyun.com/CrazyEngine/article/details/122070175</link><guid>https://blog.youkuaiyun.com/CrazyEngine/article/details/122070175</guid><author>CrazyEngine</author><pubDate>Wed, 22 Dec 2021 21:44:00 +0800</pubDate><description><![CDATA[Main target: distributed game engine

Secondary target: new rendering pipeline on mobile.

Feature:

1. Hybrid rendering pipeline, make the best of rasterization, compute pipeline and raytracing unit.

2. Physically-based realtime GI,

3.



昨天正式启动，忘了发。先..]]></description><category></category></item><item><title><![CDATA[为什么屏幕亮度不使用lux，而是使用nit作为单位？]]></title><link>https://blog.youkuaiyun.com/CrazyEngine/article/details/121407321</link><guid>https://blog.youkuaiyun.com/CrazyEngine/article/details/121407321</guid><author>CrazyEngine</author><pubDate>Thu, 18 Nov 2021 18:53:07 +0800</pubDate><description><![CDATA[最近发售的Mac book pro的屏幕：1000 nits sustained (full screen), 1600 nits peak。

我们知道，基于物理的光照常用的单位有4种：



那么为什么屏幕要选择nit呢？原因是这些单位分为亮度和照度，比如说太阳光用的单位是lux，这种单位属于照度，也就是说垂直于光的方向上，每平米上有多少流明照射上去。

而nit是亮度单位，也就是定量描述特定角度和距离下，有多少光通量。

我们看屏幕时，一般视线垂直于屏幕，这个角度上看屏幕最亮。当然，屏幕还有个关键指标]]></description><category></category></item><item><title><![CDATA[Unity的Native plugin]]></title><link>https://blog.youkuaiyun.com/CrazyEngine/article/details/120912903</link><guid>https://blog.youkuaiyun.com/CrazyEngine/article/details/120912903</guid><author>CrazyEngine</author><pubDate>Fri, 22 Oct 2021 20:34:43 +0800</pubDate><description><![CDATA[调研到的结果：

Native plugin的好处：

1、资源、代码、核心算法保密（例如渲染算法、加密算法等）

2、性能提高（c++库效率比C#要高一个数量级，即便是il2cpp也有极大差异）

3、前后端都会使用的功能（例如生成的行走层，客户端和服务器都需要访问）

4、不用修改代码就能扩充接口，例如目前Unity还不支持Multi indirect draw，但是图形API和硬件很多都已经支持了，可以通过这种方式进行扩充。

坏处：

1、如果有渲染相关的功能，每种图形API都要有对应的实现。不过s]]></description><category></category></item><item><title><![CDATA[Unity里的交叉编译]]></title><link>https://blog.youkuaiyun.com/CrazyEngine/article/details/120912703</link><guid>https://blog.youkuaiyun.com/CrazyEngine/article/details/120912703</guid><author>CrazyEngine</author><pubDate>Fri, 22 Oct 2021 20:17:41 +0800</pubDate><description><![CDATA[可以在Windlows上安装iOS-Support，导出Xcode工程，然后拷贝到Mac下使用Xcode打开进行打包。
]]></description><category></category></item><item><title><![CDATA[好的中层管理者要兼顾公司和员工的利益]]></title><link>https://blog.youkuaiyun.com/CrazyEngine/article/details/120564271</link><guid>https://blog.youkuaiyun.com/CrazyEngine/article/details/120564271</guid><author>CrazyEngine</author><pubDate>Thu, 30 Sep 2021 12:06:50 +0800</pubDate><description><![CDATA[中层是公司和普通员工之间的一座桥梁。要平衡好两者的利益，过于偏重那一头都不好。
有的中层是老好人，或者为了收买人心，过于照顾员工利益，损害公司利益。到处是跑冒滴漏，久而久之，即便是巍巍大厦也会倒下。这种情况多见于大公司，尤其是国企。
有的中层为了给老板表演忠诚，疯狂压榨员工，怎么让员工觉得不爽怎么来。可是这样真的好吗？这种公司的离职率会很高，离职率高会造成项目交接成本迅速升高。行业内普遍代码不规范，没有文档，不停换人会导致最终代码根本无法维护，项目只能砍掉。如果说中层不理解这一点，只能说有点傻，还算略微有点]]></description><category></category></item><item><title><![CDATA[Blender的下载与编译]]></title><link>https://blog.youkuaiyun.com/CrazyEngine/article/details/120311579</link><guid>https://blog.youkuaiyun.com/CrazyEngine/article/details/120311579</guid><author>CrazyEngine</author><pubDate>Wed, 15 Sep 2021 16:40:19 +0800</pubDate><description><![CDATA[下载代码

1、clone代码：Blender · rB。

2、下载blender的各种库。推荐方式：在blender同级目录下建立一个新文件夹，命名： “lib”，在里面建立文件夹“win64_vc15”，在上面右键，点击“SVN Checkout”，使用SVN更新代码bf-blender - Revision 62694: /trunk/lib/win64_vc15。

官方文档让进根目录，进cmd，执行“make update”，貌似需要关闭翻墙，会将一堆的库下载到跟blender同...]]></description><category></category></item><item><title><![CDATA[如何使用RenderDoc截帧分析Godot]]></title><link>https://blog.youkuaiyun.com/CrazyEngine/article/details/120310681</link><guid>https://blog.youkuaiyun.com/CrazyEngine/article/details/120310681</guid><author>CrazyEngine</author><pubDate>Wed, 15 Sep 2021 16:05:05 +0800</pubDate><description><![CDATA[安装RenderDoc，使用默认的安装路径（因为下面是基于这个假设的）。

第一次运行godot.windows.tools.xx.exe时，只是启动了launch界面，然后选中工程再打开时，其实是启动了另一个进程。所以使用RenderDoc直接启动进程的方式不可行。应该在引擎里添加如下代码，编译。只要启动进程时加载了renderdoc.dll这个dll，就能截帧了：



运行，可以看到界面上出现了一行字：PrtScreen to capture...，这就表明成功了：



选择一个工程，打开，可以看到]]></description><category></category></item><item><title><![CDATA[移动端下PLS（Pixel Local Storage）减少带宽开销的原理]]></title><link>https://blog.youkuaiyun.com/CrazyEngine/article/details/120310567</link><guid>https://blog.youkuaiyun.com/CrazyEngine/article/details/120310567</guid><author>CrazyEngine</author><pubDate>Wed, 15 Sep 2021 16:00:50 +0800</pubDate><description><![CDATA[众所周知，移动端下为了性能搞出了TBR和TBDR架构。也就是渲染时整个RT均匀分成了很多个正方形的区域，遍历这些小区域来渲染。这些正方形区域就叫tile，tile上有个on-chip cache。

tile越大性能越高。因为遍历tile本身就是有性能开销的。另外，tile多了以后，tile边界上的三角形会在渲染不同的tile时重复从系统内存里读取。

已知的是，开启MSAA会导致tile的变小。根据个人猜测，PLS跟MSAA的实现方式神似。无非是把on-chip cache分成好几份，GBuffer放在其]]></description><category></category></item><item><title><![CDATA[深度定制游戏引擎实现云服务器的非线性增长]]></title><link>https://blog.youkuaiyun.com/CrazyEngine/article/details/114859954</link><guid>https://blog.youkuaiyun.com/CrazyEngine/article/details/114859954</guid><author>CrazyEngine</author><pubDate>Tue, 16 Mar 2021 00:23:09 +0800</pubDate><description><![CDATA[上周末两位大佬大老远跑过来，一起探讨了下云游戏涉及的各种技术难题。其中谈到了一个技术难题：怎么样能做到随着客户端数量增长，服务器非线性增长。说白了就是将客户端里重复的计算摘出来，进行统一计算，从而降低服务器的个数和能耗。目前的情况是，增加一个客户端，就需要在云端相应地增加一台服务器，也就是线性增长。

那么怎么实现非线性增长呢？

首要问题就是选引擎。最好的方案就是找一款优秀的免费开源引擎，进行深度定制。再次重申，Unity不开源，改不了。即使公司花费昂贵的价钱购买了源码阅读权限也难改，因为不开源就不能形成]]></description><category></category></item><item><title><![CDATA[Crazy Engine 3.0（又名盘古引擎）的技术特性]]></title><link>https://blog.youkuaiyun.com/CrazyEngine/article/details/114579286</link><guid>https://blog.youkuaiyun.com/CrazyEngine/article/details/114579286</guid><author>CrazyEngine</author><pubDate>Tue, 09 Mar 2021 11:47:46 +0800</pubDate><description><![CDATA[零、概述

“盘古引擎”是我2013.4-2015.12年间，在“远明山水网络科技有限公司”担任引擎部部门经理期间，带领9人团队研发的第三代大型3D游戏引擎。

这代引擎使用Ogre 3D作为框架，使用C++、D3D 9.0c、HLSL 3.0、OpenAL、PhysX3.2和MyGUI作为开发语言或者中间件。研发团队研究了大量国际上顶尖的论文，借鉴和吸收了大量的高端算法和设计模式，同时也借鉴了其它世界闻名的游戏引擎，如CryEngine 3和Frostbite。同时，我们也花费了大量时间，研究出了一些自己]]></description><category></category></item><item><title><![CDATA[Unity里加速纹理压缩]]></title><link>https://blog.youkuaiyun.com/CrazyEngine/article/details/114238760</link><guid>https://blog.youkuaiyun.com/CrazyEngine/article/details/114238760</guid><author>CrazyEngine</author><pubDate>Sun, 28 Feb 2021 19:46:42 +0800</pubDate><description><![CDATA[使用Unity开发项目的人都知道，Build Settings里切换平台时，会根据每个纹理指定的对应平台的压缩格式去压缩纹理。压缩纹理非常慢，会占用总时间的一多半。那能不能把这个时间降下来呢？2018年秋就接到了公司的这个需求。

网上看到有人之前尝试着解决这个问题，说白了就是把压的工作从烂CPU（作者指的主要是Mac）转移到强大的CPU上（主频高、核多），见https://blog.codingnow.com/2016/12/unity3d_remote_pvrtextool.html。这个方案至少打开了]]></description><category></category></item><item><title><![CDATA[Ubuntu上构建Godot的VS Code工程]]></title><link>https://blog.youkuaiyun.com/CrazyEngine/article/details/113812478</link><guid>https://blog.youkuaiyun.com/CrazyEngine/article/details/113812478</guid><author>CrazyEngine</author><pubDate>Sun, 14 Feb 2021 23:58:52 +0800</pubDate><description><![CDATA[对于Windows程序员来说，都喜欢在IDE上开发。VS Code是微软开发的，技术实力和号召力很强，Ubuntu上用VS Code是一个非常好的选择。

我使用的是Windows+VMware Workstation 16 Player+Ubuntu-20.04.2.0。由于需要安装各种库和从github上clone代码，所以需要“正确上网”。

Ubuntu下安装所有依赖的库和工具。
安装依赖库，执行“sudo apt-get install build-essential scons pkg-conf]]></description><category></category></item></channel></rss>