peter dong 的blog

游戏性能优化的一些经验之谈

作者:王选易

优化概论

说起游戏的优化,在游戏开发中经常分为这几步:

1. 首先要确定游戏中经常会出现哪些问题 - Profile
2. 然后确定在哪些方向进行性能优化 - Analyze
3 .最后再尽可能将问题逐个解决 - Solve

游戏开发中一定是先做工具,进行Profile,再进行优化,所以,说优化就不得不再扯一下Profile

常见的工具有一些是引擎和IDE自带的,比如Unity自带的Profiler,就包含了CPU,GPU,Memory等等各式各样的性能分析工具,其他的比如GPA,Xcode Instrument和Visual Studio,Intel自带的内存管理工具在必要的时候也使需要去学习和使用的。

另外一些工具,就需要根据游戏的需求去编写了,比如一键关闭所有特效,一键更改分辨率等等,一键设置场上NPC数量,简单的游戏如啪啪三国是做成快捷键开启Profile功能的,更为复杂的游戏如神秘海域则是通过游戏内控制台来进行更为细致的Profie。

接着,我们再来说说游戏优化中主要的四个考虑方向:

游戏性能优化技术干货分享——内存管理

项目的性能优化主要围绕CPU、GPU和内存三大方面进行。本文和大家分享内存方面的优化心得。

无论是游戏还是VR应用,内存管理都是其研发阶段的重中之重。

然而,在我们测评过的大量项目中,90%以上的项目都存在不同程度的内存使用问题。就目前基于Unity引擎开发的移动游戏和移动VR游戏而言,内存的开销无外乎以下三大部分:
1、资源内存占用;
2、引擎模块自身内存占用;
3、托管堆内存占用。

如果您的项目存在内存问题,一定逃不出以上三种情况。今天,我们就这三种情况逐一进行解释。

资源内存占用

在一个较为复杂的大中型项目中,资源的内存占用往往占据了总体内存的70%以上。因此,资源使用是否恰当直接决定了项目的内存占用情况。一般来说,一款游戏项目的资源主要可分为如下几种:纹理(Texture)、网格(Mesh)、动画片段(AnimationClip)、音频片段(AudioClip)、材质(Material)、着色器(Shader)、字体资源(Font)以及文本资源(Text Asset)等等。其中,纹理、网格、动画片段和音频片段则是最容易造成较大内存开销的资源。

一、纹理

游戏开发中防外挂的一些技术技巧

对于一个要上线的游戏,防外挂是必须的,历史上因为外挂而造成大量玩家流失的游戏数不胜数。随着游戏研发技术的发展,对外挂的预防业内其实做的已经越来越好了。下面总结一下防外挂的基础知识,以及我们的移动模块为防外挂做了哪些工作。

1、预防外挂的基础知识

在做外挂预防工作之前,我们要先了解外挂有哪些。根据我的了解,市面上常见的外挂主要有以下几种:

1.修改客户端的内存信息

这类外挂通过分析游戏所使用的内存,找到内存中的变量去分析猜测变量是代表的什么含义。由于客户端本身保存着很多游戏信息,比如技能cd、移动速度等。由于我们游戏技能的管理和发起是由客户端控制的,若外挂能去把技能cd改为了0,客户端就可以无限放此技能。
常见外挂工具:葫芦侠、八门神器

2.加速齿轮

加速齿轮可以加速某一个进程的时间流逝速度,通过加速齿轮,可以让游戏客户端进程的时间加速N倍。真实时间可能只过了1s,而客户端进程的时间已经过了Ns。通过加速齿轮,可以让人物移动速度加快、技能cd加速等。
常见外挂工具:加速齿轮

3.重发、篡改同步消息

虚幻引擎学习之路:新粒子系统Niagara

本文将进行介绍Unreal 4引擎中的新粒子系统:Niagara。需要说明的是,目前的Niagara粒子系统仍处于测试阶段,并非最终完成版。

之前我们已经详细介绍过渲染系统、动画系统以及部分粒子系统的功能介绍,特别感谢Unreal中国团队对于本篇文章中Unreal引擎相关内容的审核!

一、Niagara使用

1.1 开启功能

在最新的Unreal 4引擎中,Niagara模块已经被加入到引擎的插件中。需要使用时,只需通过菜单Edit->Plugin打开Plugin窗口,搜索”Niagara”并选择Enabled即可,如下图所示:

虚幻引擎学习之路:新粒子系统Niagara

然后,在Content Browser中点击鼠标右键会出现新的菜单选项FX,该子菜单中包含了Niagara的各种资源选项,如下图所示:

虚幻引擎学习之路:粒子系统篇(二)

在上一篇《虚幻引擎学习之路:粒子系统篇(一)》中,介绍了粒子系统的结构以及Type Data类型的Module。本文将继续介绍其他类型的Module以及LOD和Vector Field功能。

一、Module 功能

1.1 Required

Required Module是粒子系统Emitter中默认添加且不能删除的Module。它包含了Emitter以及时间、渲染相关的设置,例如:材质、发射器的位置和朝向等,如下图所示:

虚幻引擎学习之路:粒子系统篇(二)

游戏开发中常用的设计模式

使用设计模式来提高程序库的重复利用性是大型程序项目开发必须的。但是在“四人帮”的设计模式概述中提到了23种标准设计模式,不但难以记住,而且有些设计模式更多的适用于应用程序开发,对游戏项目引擎设计并没有很多的利用价值。根据经验,精挑细选后,笃志在这里记录一些自认为有利用价值的设计模式,以便之后自己设计时使用。

一:观察者Observer

观察者的设计意图和作用是: 它将对象与对象之间创建一种依赖关系,当其中一个对象发生变化时,它会将这个变化通知给与其创建关系的对象中,实现自动化的通知更新。

游戏中观察者的适用环境有:

1:UI控件管理类。当我们的GUI控件都使用观察者模式后,那么用户的任何界面相关操作和改变都将会通知其关联对象-----我们的UI事件机。

2:动画管理器。很多时候我们在播放一个动画桢的时候,对其Frame有很大兴趣,此时我们设置一个FrameLister对象对其进行监视,获得我们关心的事件进行处理是必须的。

观察者伪代码:

View Code 
//-----------------
// 被观察对象目标类 
Class Subject 
{ 

虚幻引擎学习之路:粒子系统篇(一)

之前已经完整介绍了Unreal 4引擎中渲染模块动画模块,现在我们将介绍粒子系统的相关功能。本文将分两部分介绍Unreal 4引擎的粒子系统,其中包括:粒子系统的创建、类型和特殊功能。通过本系列文章,希望读者能学习到以下知识点:

• Unreal 4引擎中粒子系统如何使用
• Unreal 4引擎中粒子系统所能达到的视觉效果
• Unreal 4引擎中粒子系统的LOD、向量场等功能使用
• Unreal 4.18新推出的Niagara粒子系统功能使用

特别感谢Unreal中国团队对于本篇文章中Unreal引擎相关内容的审核!

基础功能

本节将介绍Unreal 4引擎中粒子系统的基础功能,主要分为两个部分,其中包括:粒子系统的结构和使用以及不同类型模块的介绍。

虚幻引擎学习之路:动画模块进阶篇(二)

上周介绍了Unreal 4引擎动画模块中的动画融合功能,今天我们将继续介绍Unreal 4引擎动画模块中的其他进阶功能,其中主要包括:动画重定向逆向运动学顶点动画

在此,特别感谢Unreal中国团队对于本篇文章中Unreal引擎相关内容的审核!

一、动画重定向

游戏引擎动画模块中的动画重定向(Animation Retargeting)可用于在不同模型上重用动画文件,该功能类似于Unity引擎中Humanoid模式下的Retargeting功能。Unreal 4引擎对使用相同Skeleton Asset的Skeletal Mesh支持动画重定向,并且支持不同尺寸角色动画的重定向,其细节把握非常到位,具体如下图所示:

虚幻引擎学习之路:动画模块进阶篇之动画融合

上一篇:Unreal 4引擎动画模块中的基本功能,接下来我们将进一步介绍Unreal 4引擎动画模块中提供的进阶功能。其中主要包括:动画融合、动画重定向、反向运动学、顶点动画。鉴于篇幅原因,今天我们先来讲解动画融合。

特别感谢Unreal中国团队对于本篇文章中Unreal引擎相关内容的审核!

动画融合

动画融合是游戏引擎动画模块中的重要功能。本节将介绍Unreal 4引擎中提供的动画融合功能,主要包括:Blend节点、Blend Space、Animation Montage、Animation Composite以及Post Process Animation Blueprint。

1、Blend节点

虚幻引擎学习之路:动画模块之基础篇

之前我们陆续为大家详细介绍了Unreal 4引擎的渲染模块(包括光照系统材质系统相机后处理全局光照明),接下来我们将讲解动画模块的基础功能。

动画模块是游戏引擎中的重要部分,是驱动游戏中场景、角色能够活灵活现地做出动作的基础。本文将分三块内容介绍Unreal 4引擎中的动画模块功能,其中包括:基础功能、进阶功能以及特殊功能。在介绍基础和进阶功能时,本文不仅会对其功能进行重点讲解,同时也将结合Unity引擎中的相似功能进行类比,以求让大家可以更明晰地掌握Unreal引擎动画模块的功能使用。在特殊功能中,本文将对Unreal 4引擎中针对特殊用途提供的功能进行重点解读。

本节主要介绍Unreal 4引擎动画模块中提供的基础功能。其中主要包括以下几个部分:

同步内容
--电子创新网--
粤ICP备12070055号