A-SHIN BLOG

好记性不如烂笔头

GameplayFrameWork for CococsCreator

"开发笔记"

“Yeah It’s on. ” 前言 最近使用cocoscreator开发小游戏时,为了提高效率、增加各项目间代码复用度、减少耦合便简单封装了个基于MVC的游戏逻辑开发框架。 正文 项目工程目录细分 游戏引擎一般都会提供一个开发过程中存放各种资源的文件夹(如creator、u3d的assets,ue4的content等)。我们首先需要了解特定文件夹的作用,如resources。...

CocosCreator Optimize

"开发笔记"

“Yeah It’s on. ” 前言 这里简单总结下最近使用cocoscreator v1.9.1 进行Facebook小游戏开发过程中性能优化相关的经验。 正文 drawcall是衡量游戏性能的一个重要指标,是CPU对底层图形绘制接口的调用命令GPU执行渲染操作,渲染流程采用流水线实现,CPU和GPU并行工作,它们之间通过命令缓冲区连接,CPU向其中发送渲染命令,GPU接收并执...

3DMAX Note

"实用工具"

“Yeah It’s on. ” 前言 3D引擎及游戏开发过程中免不了对模型修修改改,作为程序掌握3D建模工具基本操作也是必要的,比如法线查看等等。这里仅简单记录HXEngine所需FBX修改流程 正文 1.合并mesh:附加列表-> 2.合并顶点:转换为多边形(塌陷)->选择顶点->全选模型->焊接、设置焊接距离-> 3.自动平滑:选择元素-&g...

Algorithm Training

"算法训练"

“Yeah It’s on. ” 前言 刷题杂记 正文 时间复杂度限定可利用:hashmap等空间换时间、二分法、滑动窗口法 连续子数组相关问题尝试用hashmap[sum-k] or hashmap[sum%k]法>滑动窗口法>建立累加和数组方法>暴力方法 DSF用stack,BSF用queue 寻路问题可用DSF,最优解可用DP 钱币找零...

Unreal Engine Note

"游戏引擎"

“Yeah It’s on. ” 前言 阅读InsideUE4精要提炼。 正文 GamePlay框架 实体组件模式推崇“组合优于继承”的概念 程序=数据+算法 Classes、Private、Public Object->Actor+Component->Level->World->WorldContext->GameInstance->...

QT自定义外观

"游戏引擎"

“Yeah It’s on. ” 前言 由于QT默认应用程序外观比较普通,而且不同的操作系统标题栏也会不同。因此打算动手更改QT程序外观。 可选方案: 使用QApplication::setStyle(QStyleFactory::create(“Fusion”));调用QT自带style 优点:简单 缺点:可选方案少,不够灵活,不能改变标题栏 使用qss 优点: 灵活,...

DDS垂直翻转

"游戏引擎"

“Yeah It’s on. ” 前言 HXEngine中加载PNG和DDS时,发现贴图UV值V反转了。PNG左下角为(0,0),DDS左上角为(0,0)。如下图: gDEBugger中的texture显示,上图为PNG,下图为DDS。 正文 为保证引擎使用统一的模型UV值,则需要将其中之一的纹理数据保存时垂直方向翻转。这里对DDS数据进行垂直翻转。 for (level = ...

游戏引擎场景管理及动态批处理

"游戏引擎"

“Yeah It’s on. ” 前言 周末对游戏引擎HXEngine进行了简单的场景管理及动态批处理。后续考虑进行八叉树管理及静态drawcall合并。 正文 #总体思路: 首选在编辑器或者配置文件中为所有场景中gameobject的submesh的renderable的material配置一个render queue值,值越小就越先渲染。这里大致分为几类: enum ERend...

GLSL 切线空间光照计算 抖动BUG解决

"游戏引擎"

“Yeah It’s on. ” 前言 970显卡上正常编写完支持法线及细节纹理的shader后,在核显的MBP上运行时却遇到了几个问题: 1.shader linking failed not enough space for defined varyings 2.光照像素抖动 正文 第一个问题可能由于不同显卡支持的变量数不同引起的,因此把shader支持的灯光数减少以降低uni...

GLSL 逆矩阵计算Tricks

"游戏引擎"

“Yeah It’s on. ” 前言 正文 glsl内置函数inverse 自定义逆矩阵计算公式: mat3 inverse_mat3(mat3 m) { float Determinant = m[0][0] * (m[1][1] * m[2][2] - m[2][1] * m[1][2]) - m[1][0] * (m[0][1...