游戏程序员修炼之道
参考书本的理论及互联网的海量信息,使用工具进行庖丁解牛,在项目或示例的实践中进行验证,最后沉淀总结成文转换成自己的知识体系与经验。
理论与实践相结合,夯实基础,循序渐进,不求甚解,融会贯通,及时总结并与人分享!
工具
操作系统:windows服务(任务计划)、windows命令、批处理、visualbasic script
数值算法:excel、matlab、spss
数值可视化:PhysX Visual Debugger(PVD)、processing
图形图像:Deep Exploration、meshlab
图片:ImageMagic、gifski、ScreenToGif
视频:FFmpeg
shader:RenderMonkey、FX Composer、OpenGL Shader Designer
商业渲染器:RenderMan、V-Ray、mental ray
开源或免费渲染器:LuxRender、Cycles、Mitsuba、pixie、OptiX
地图:arcgis、google earth、baidu map
Plugins与宏(windows资源管理器插件、vs等IDE插件、调试器插件、Office插件、Unity等编辑器插件、UE编辑器扩展、Web浏览器插件、3ds max插件、ps插件)
版本控制工具:svn、git、perforce
文本编辑器:notepad++、vim、Source Insight
IDE:vs系列、eclipse、xCode、android studio、rider、monodeveloper、vscode
编译器:clang、llvm、gcc、cl
make工具:cmake、makefile、nmake、qmake
构建工具:Jenkins
打安装包:NSIS
自动化测试:协议模拟、gui鼠标键盘点击
编码规范检查:clang-format、Cpplint
代码静态分析:TscanCode(支持c++、c#、lua)、PVS-Studio(支持c++)、Klocwork(支持c、c++、c#、java)
调试器:gdb、lldb、windbg、OllyDBG(开源)、x64dbg、IDA、Cutter(开源)
窗口消息:Spy++
图形调试:gpa(Graphics Performance Analyzers)、PIX、RenderDoc、gDebugger、nVidia Nsight、PerfStudio、Adreno Profiler、Qualcomm snapdragon、Mali Graphics Debugger、Nsight Tegra、PVRTrace、Radeon GPU Profiler、XCode、Visual Studio 2013+
逆向修改:Resource Hacker
性能分析工具:wiki
cpu工具:函数调用 Intel VTune Amplifier XE、gprof(原理是通过开启某个编译选项对函数进行插桩,来统计函数的耗时)、FramePro
cpu缓存:CacheSim、Arm Streamline(Cache分析)
内存工具:Instruments、valgrind、MemPro、内存泄露
网络工具:Fiddler、wireshark、CurrPorts、TCPView、Clumsy(windows弱网模拟)
系统工具:SysinternalsSuite、Process Explorer、Process Monitor、DebugView、vmMap、RAMMap、fraps、API Monitor
音频工具:Wwise、Fmod
模拟器:Android模拟器(Android SDK emulator、腾讯手游助手、网易MuMu、雷电、夜神、天天)、街机游戏模拟器(如:fba、mame)
程序化生成(PCG):Houdini、World Machine、World Creator、QuadSpinner Gaea、Terragen
美术工具:
(1) 建模:3ds max、maya、Blender、Silo
雕刻类:ZBrush、Mudbox、modo
衣服建模:Marvelous Designer
(2) 贴图:Photoshop、Modbox、Bodypaint、Mari、Substance Painter、Quixel Suite、Zhrush
(3) 展UV:unfold3d 、Unwrap Tools等独立软件,max插件
(4) 材质:Substance Designer
(5) 动作:3ds max、maya
(6) 特效:Houdini(PCG)
(7) UI:photoshop、Flash CS
(8) 合成:Photoshop、Nuke、AE、Marvelous Designer、XNormal、UVLayout、 Crazybump、SETUNA、HDR light Studio、Poser Pro
(9) 渲染出图:VRay、Arnold、Mentalry、Keyshot、Marmoset Toolbag
性能优化
磁盘 --> 内存(显存)--> CPU(GPU)
编辑器profiler工具、引擎性能相关命令
低崩溃率(崩溃、异常、log收集)
帧率优化(cpu、gpu)(关核、降频)
CPU优化(热点函数)
卡顿优化(Hitches)
内存优化(内存泄漏、内存占用、内存碎片)
网络优化(减少带宽占用、提升网络下载速度)
资源句柄泄漏
IO优化(减少游戏启动时间、提升IO加载效率、UI响应时间)
发热优化(限帧)
画质优化(场景、人物、武器、载具)
安装包大小优化
安全防护(代码、协议、日志、资源、内存加解密、代码混淆)
游戏引擎
Unreal Engine、Unity3D、Cocos2d-x、CryEngine
三个阶段:编辑(Edit)、烘培(Cook)、游戏运行时(Runtime)
----------------------------
编辑器
Script(脚本)
类型系统
对象模型
引擎框架(游戏启动、游戏循环、游戏退出)
渲染管线流程
GamePlay框架
Tick
Timer
GAS(Gameplay Ability System)
UI框架
多线程并发
SpatialOS(分布式DS)
内存分配器(Allocator)
异步加载(Async Loading)
GC(Garbage Collection)
蓝图(Blueprint):Level Blueprint、Blueprint Class、UMG(Widget Blueprint、UserWidget)、Animation Blueprint
LOD(Level Of Detail):mipmap、静态模型、骨骼模型、特效、材质、HLOD(Hierarchical LOD)、Bill Board、Imposter、Backdrop
Streaming:Texture Streaming、Level Streaming、World Composition、Mesh Streaming、LOD Streaming、Package Streaming
ViewDistance:视觉距离(距离相机多远开始绘制模型)
LightMass
光照(Lighting)& 阴影(Shadow)
渲染流程
渲染技术(SSS次表面散射等)
后处理(Post Process)& 效果(Effects)
Foliage(植被)、speedtree(树)、UE4 Procedural Foliage Tool(程序化植被工具)
Terrian & Landscape(地形和地貌)
Water(水体)
TOD(time of day)
碰撞检测(Collision)、物理引擎(physX、box2D、Chaos)
APEX(布料和破坏)
Bink(视频过场)
Loading Screen(过场Loading)
文件资源管理、资源打包(Package、asset文件格式、pak文件格式、Cook烘焙)、微端机制
网络同步:状态同步、帧同步
机型分档(DeviceProfiles、Quality、Scalability)
VR/AR、Stereo 3D
AI(Artificial Intelligence) & 导航网格(Navigation System) & 行为树(Behavior Tree) & EQS(环境查询系统)
材质(Material) & 贴图(Texture)
静态模型(Static Mesh) & 骨骼模型(Skeletal Mesh)
模型简化:Mesh Simplification & Skeletal Mesh Simplification
相机(Camera)
骨骼动画 & 动作树(Animation Tree) & 动作状态机(Action State Machine) & Motion Matching
matinee动画 & Leve Sequence
FaceFX(脸部表情)
音频
粒子FX(Particle System、Niagara)、decals(贴花)、雾(fog)
UI系统(大厅系统、游戏Hud、Slate、UMG、图集、字体Font)
本地化(Localization)
控制台命令(Console Command) & Profiler工具
输入(Input)
配置:ini、datatable、stringtable
逆向分析
hook、API截获
PE工具:PE-Explorer
钩子工具:api-monitor
反编译:.NET Reflector
资源破解:UnityAssetsExplorer、UnityStudio、AssetsBundleExtractor
内存修改工具:Cheat Engine
加减速:变速齿轮
输入模拟:按键精灵
开源
irrlicht、klayge、bgfx
mono
chromium
渲染
管线
Direct3D(8、9.0c、11、12)
OpenGL(1.1、1.3、1.4、1.5、2.0、4.3、4.4、4.5)
OpenGLES(1.0、1.1、2.0、3.0、3.1、3.2)
Vulkan(1.0、1.1)
Metal(1.0、1.1、1.2、2.0、2.1、2.2、2.3、2.4)
WebGL(1.0、2.0)
shader(HLSL、GLSL、MSL、CG)
Real-Time Rendering、PBR、Ray Tracing、数字图像处理
SIGGRAPH paper
GDC
语言层
x86/x64汇编(SSE指令集)、arm汇编(Neno指令集)、IR字节码、.net字节码、java字节码、unrealscript字节码
SIMD:Single Instruction Multiple Data,即单指令流多数据技术,SIMD 的概念是相对于 SISD(Single Instruction Single Data,单指令流单数据)提出的。SIMD 技术最初通过将 64 位寄存器的数据拆分成多个 8 位、16 位、32 位的形式来实现 byte、half word、word 类型数据的并行计算
C、C++、C#、VB、Java、unrealscript
lua、python、perl、go
bat、linux shell、vbscript
html5、javascript
跨语言互操作
系统库(crt)、函数库(stl、loki、mfc、qt、scaleform、cgal)
代码整洁、框架设计、设计模式、uml
代码重构、代码自动生成、自动化测试
数据结构、算法(计算几何、场景管理索引方法、导航网格生成、垃圾回收、碰撞检测、物理模拟、遮挡剔除等)
系统层
Windows、Android、iOS、macOS、Linux
驱动、输入法
虚拟机、编译器、web浏览器、web服务器
多任务(进程、线程、协程)、内存管理(内存泄露、内存碎片)、文件管理、IO管理
计算机网络(tcp、udp / rudp、http、p2p)
com(ActiveX)、.net框架、垃圾回收机制、flash
硬件
cpu、gpu(cuda)
支撑学科
英语、数学、物理等