首页
学习
活动
专区
工具
TVP
发布

逍遥剑客的游戏开发

专栏成员
306
文章
350482
阅读量
55
订阅数
Nebula3中的模型
大体画了个结构图, UML不知道用得对不对, 反正我自己看懂就行了...... image.png VisXXX可以看做是场景可见性裁剪的一部分, 渲染模块都是跟这个打交道的, 通过它可以把各个结点(node)排序以达到优化渲染目的. Model是一个可以绘制的对象, 由一些树形结构的ModelNode组成. Model可以通过ModelServer创建, 这样能保持同一个Model只会载入内存一次. 要绘制Model的话, 一个ModelInstance是必不可少的. 通常一个游戏对象对应一个Mode
逍遥剑客
2018-06-25
4450
嵌入式的浏览器有第三种方案啦
最初在游戏里嵌入网页用的是LLmozLib, 说实话, 还不错, 用的FireFox的解析引擎 但是它的编译太麻烦了, 而且跟一些引擎代码直接链接到一起的话还会冲突 最让人觉得不爽的是, 附带了一大堆的DLL和资源文件 后来自己用IE的IWebBrowser2实现了一个嵌入浏览器, 除了滚动条拖动和效率还有点问题, 也基本上能用 好处是兼容性好, 也不用附带什么 后来看到google发布chrome后就一直在想这个东西能不能用在3D游戏中, ubrowser的作者也在研究这个. 我们还一块讨论过嵌入flas
逍遥剑客
2018-06-25
3480
做了Nebula3的应用程序向导
使用方法: 1. 配置环境变量: image.png 2. 把下载的zip解压到一个合适的位置 3. 把N3ConsoleAppWizard.ico, N3ConsoleAppWizard.vsdir, N3ConsoleAppWizard.vsz三个文件拷贝到Visual Studio 8/VC/vcprojects/下, 并更改N3ConsoleAppWizard.vsz中的路径为第2步中的解压路径 4. 打开VS2005, 新建工程就可以看到了 image.png image.png ima
逍遥剑客
2018-06-25
4370
升采样(Upsampling)技术
最近老是想着学习下Upsampling, 因为在做优化时这是一项非常实用的技术 参考AMD的PPT: Mixed Resolution Rendering, 有这么几种情况可以应用: 把半透明元素(如粒子)单独画到一个小的BlendBuffer上, 再跟原场景混合, 减小填充率的负担 SSAO, 一般不会做FullSize的处理, 所以Upsampling基本上是必须的一步 屏幕空间的软阴影, 同上 间接光照, 实时计算量比较大, 所以也是低精度进行 或许这个关键词可以概括这项技术: Bilateral
逍遥剑客
2018-05-23
2.2K0
星际2中复刻DOTA白虎
2012年6月7日 19:31 星际2的编辑器相对于魔兽3最大的改进就是数据编辑器了, 也正是这个改变, 让很多有兴趣自制地图的人放弃了这个想法. 为什么呢? 因为它太复杂了, 而且资料很少, 所以上
逍遥剑客
2018-05-23
1.1K0
Gamma校正问题
最早是去年才开始接触这个东西, 至于具体是什么原理, google一大堆 我只是想说的是, 大部分的国产自研引擎没有关注这个 对于国内的卡通幻想风格可能影响不是特别大 但是对于真实感的光照, 是非常有必要进行校正处理的 要不然出来的结果不是正确的 之前在折腾一个烘焙中间件时也被这个问题烦了很久 因为烘焙做了校正, 而引擎没有, 实时的效果跟烘焙的效果就差别很大 最后无奈就关掉了 正确的做法其实还是应该给引擎增加Gamma校正的支持, 反正也没几行代码 另外说一下特效. 很多人可能觉得特效不参与光照运算, 所
逍遥剑客
2018-05-23
6470
延迟渲染的G-Buffer压缩
最近渲染器终于稳定下来了, 效果也做得差不多了, 于是做一下总结 当初为了追求进度和效果, 直接就是采用最暴力的A16R16G16B16F x 3的G-Buffer: COLOR0Normal.xNormal.yNormal.zDepthCOLOR1Diffuse.rDiffuse.gDiffuse.b COLOR2Specular.rSpecular.gSpecularbSpecular  Glossy 可以说没有什么特殊的, 效果是出来了, 性能很是问题 所以想投入实际使用还是要优化一下性能, 对G-B
逍遥剑客
2018-05-23
1.8K0
视锥剔除优化
1. 基本相交测试. 只需要测试包围盒的两个角(这个几乎所有人都做了) 2. 平面连续测试. 根据上次测试的结果来优化用于测试的平面顺序 3. 八分体测试. 对于对称的视锥体可以减少一半的测试 4. 父子测试. 对于有父子关系的包围盒, 父在内则子在内, 父在外则子在外, 父相交则需要递归测试(四叉/八叉之类的肯定也做过了) 5. 变换连续测试. 根据移动和旋转的方向来优化测试. 如上一帧在外的处于移动方向的相反方向的话, 这帧肯定也在外面. 6. 雷达测试(Gems5). 适用于包围体为球形的情况. R
逍遥剑客
2018-05-23
1.2K0
基于属性的编辑器框架
看了Ogitor的代码后, 自己又实践了一把, 结合N3中学到的一些技巧, 在编辑器中得到了验证. 虽说做的是场景编辑器, 但是其它编辑器也可以用的, 毕竟思想都差不多. 对于一个编辑器, 通常是由一个个的"实体"组成, 或者叫"对象". 而"对象"又是由各种"属性"所组成. 以场景编辑器为例, 我们通常会涉及以下操作: 刷地形, 刷纹理 摆模型, 设置模型参数 摆光源, 设置光源参数 摆特效/音效, 设置参数 摆NPC, 设置相应参数 ... 可以看到, 除了地形之外, 其它的操作都差不多. 如果把地形把
逍遥剑客
2018-05-23
9450
Nebula3嵌入WPF
C++/CLI只能使用MD/MDd的运行库, 所以N3的编译选项需要改一下. 可以在makeslnwin32.tcl里改, 然后重新生成所有的工程文件. N3的System命名空间与.Net的冲突. 主要是byteorder.h这个头文件里的Math命名空间, 改成"::Math"或"using namespace Math"都可以. Input之类的同理. 编译时有些代码(估计是内联部分)会提示无法编译成托管代码, 只需要把#include用#pragma unmanaged/#pragma manage
逍遥剑客
2018-05-23
5680
GameEngineArchitecture读书笔记(二)
DLL 很多公司会采用完全的静态链接, 这样比较省事, 也比较安全 静态链接通常比较慢(编译时间影响开发效率), 而且EXE也比较大 DLL的话如果不使用interface封装会暴露很多类定义 如果使用C++/CLI的话不能使用静态链接库 Debug Release能重现而Debug不能重现的BUG通常是变量没初始化 DMP文件可以方便地重现崩溃时的堆栈调用 Coding 代码规范是一个项目/引擎必须制定的东西, C++标准的缺乏造成每人一种风格习惯 CodeReview其实是统一风格习惯的一种有
逍遥剑客
2018-05-23
3590
看得让人DT的GLSL
GLES2.0封装到shader和vbo结合的部分, 蒙了 vertex layout(或叫vertex declaration)要一个一个element的绑定到一个shader变量上(GL叫attribute), 也就是相当于HLSL的VS_INPUT结构体吧. 问题是, GLSL里没有"semantic", 然后问题就来了 举个例子: 一个简单的顶点结构: struct Vertex   {       float3 position;       float3 normal;       float2
逍遥剑客
2018-05-23
7200
径向模糊效果
最先在这里看到:http://www.gamerendering.com/2008/12/20/radial-blur-filter/ 这效果在鬼泣4中切换场景时见过, 极品飞车12的运动模糊也有这种感觉. 原理:     确定一个中心点(如0.5, 0.5), 跟当前像素连一条线. 以当前像素为中心, 在线上的附近像素进行采样, 最后取一下平均值. 代码翻译成HLSL: // This texture should hold the image to blur. sampler2D Texture0; 
逍遥剑客
2018-05-23
7150
Reconstructing Position From Depth
需求: 根据当前像素的Depth计算出其View空间的Position 先说一种惯性思维的方法: 既然知道depth是怎么算出来的, 那么进行逆运算回去不就得到position了? 先说说depth是
逍遥剑客
2018-05-23
7500
快速LightMap烘焙
什么是烘焙? 简单地说, 就是把物体光照的明暗信息保存到纹理上, 实时绘制时不再进行光照计算, 而是采用预先生成的光照纹理(lightmap)来表示明暗效果. 那么, 这样有什么意义呢? 好处: 由于
逍遥剑客
2018-05-23
9850
Nebula3 in CLR
有用N3 + CLR做界面的冲动 新建一个CLR WinForm工程, 直接引入N3的头文件和库进行编译........ 编译不过, 找了半天才发现原因 晕死, .Net和N3都有个System命名空间, 没法改Microsoft的东西, 只好把N3的System改成了NSystem 然后就是链接不过 一是__fastcall不被CLR支持, 改成__cdecl (/Gd)重遍 二是Multi-threaded Debug (/MTd)跟/clr冲突, 改成Multi-threaded Debug DLL
逍遥剑客
2018-05-23
4080
MPQ文件系统优化(续)
天啊, 自己解析(listfile)本身就是一个错误! 因为StormLib在打开MPQ文件时就已经自己解析过了, 没必要多此一举! 而且, 虽然自己缓存一下文件树会加快查找和枚举的速度, 但是, 从字符串构造这个棵树的时间太长了~~~ 这就导致了一个很严重的问题: 启动速度慢....... 对于文件树, 游戏没有什么用, 因为游戏读文件时根本不管是什么目录, 你可以把目录也看是文件名的一部分 换句话说, MPQ包里根本就没有目录的概念! 而对于编辑器等需要列举文件/文件夹列表的场合, 直接对所有文件进行枚
逍遥剑客
2018-05-23
9160
D3D深度测试和Alpha混合
1. 深度测试 a) 深度缓冲区:屏幕上每个像素点的深度信息的一块内存缓冲区.D3D通过比较当前绘制的像素点的深度和对应深度缓冲区的点的深度值来决定是否绘制当前像素. b) D3DPRESENT_PARAMETERS. AutoDepthStencilFormat = D3DFMT_D16 表示深度值由16位二进制表示 开启深度测试:pDevice->SetRenderState( D3DRS_ZENABLE, TRUE ); 深度测试函数:D3DRS_ZFUNC: D3DCMP_NEVER 总是返回FAL
逍遥剑客
2018-05-21
1K0
UE4学习笔记: Gameplay Classes
增加类 编辑器中有一个类向导, 可以生成类所需要的文件和基础宏 头文件 由于UE4对C++做了扩展, 实现了如序列化反射等特性, 跟Qt的做法类似: 在代码中加入一些宏关键字, 在编译期间生成相应的C
逍遥剑客
2018-05-21
1.2K0
UE4学习笔记(一): 基本概念
UE4有很多个Module, GamePlay部分也是一个或多个Module, 每个Editor也是一个Module 搜索了一下, Module总数170+, 总共分三类: Runtime, Editor, Developer Runtime这边比较重要的是Core, UObject, Engine Core 数据类型 数据库 容器 IO/Log UObject: 所有对象的基类. UE中还有个约定是Object代表不是Actor的对象 反射 序列化 文件包 Engine Actor: 由Compo
逍遥剑客
2018-05-21
5900
点击加载更多
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档