文中若有代码、术语等错误,欢迎指正
先不做3D,做好2D
重要原因:3D难复杂,不好教,想完成好Hazel2D的功能
2D系统
渲染相关
- 普通渲染
- 批渲染
- 纹理集
- 动画
- 自定义shader
- 纹理
- 后期效果
- bloom发光
- 颜色渐变
脚本
-
C#
C#脚本作为ECS系统的一个组件
-
反射
即C#脚本定义的变量,显示在编辑器上
-
加载和运行脚本
物体
-
BOX2D
-
可编辑、有回调
可编辑就是Box2D可以与脚本集成,用脚本控制
有回调表示,物体相撞触碰能接收消息
-
作为ECS系统的一个组件
粒子系统
-
VFX图形
就是曲线,控制粒子的在生命周期一个属性的效果
-
带有纹理/动画
-
粒子有碰撞
-
GPU计算
可在GPU上移动控制粒子
编辑器
-
是需要不断考虑和优化的事情
-
撤销、重做功能
比如移动实体,ctrl+z可以撤销
-
工具集
就是编辑器的功能完善。
比如纹理集,如何定义单元格
UI
-
文本渲染
-
ui布局系统
-
分层
UI在最前面
UI层级后的在后面
-
动画
运行时
-
在编辑器上运行预览
独立的:即每次都会初始化
序列化
保存游戏数据到本地
保存游戏
Cinemation
过场动画,就是导演编辑工具吧。。
比如:拿走玩家的操作权,移动摄像头到另一边给玩家展示有人物,有对话有字幕。
像电影制作人一样制作
Audio
-
Effect
在水中不同于陆地的音效
-
混合
-
触发
知道什么时候播放
-
回放
用流
-
结点编辑
用结点控制audio的参数
资产系统
-
加载和卸载实体
为了节省内存
-
streaming和内存映射
500m的文件从cpu读给GPU,一可以用streaming,二可以用内存映射
-
包装
像unity的package吧,binary blob格式
-
编辑热加载
磁盘上一个文件修改,编辑器也更新
平台支持
-
win mac linux
不同的系统,编辑器得更换不同的窗口
-
GPU
英伟达、AMD、Inter
-
输入设备
网络
可以接受服务器的控制
优化
-
多线程
opengl单线程较慢,多线程可以优化
-
GPU卸载
切换GPU工作?
-
分析
了解引擎的极限
-
内存优化
发布
-
自定义格式
- 受保护
- 文件大小
- 速度
-
压缩
lz4,zlib
-
GPU纹理压缩格式
ASTC,ETC,DXTS
-
平台支持
-
本地化
- 时间格式
- 语言
- 金钱格式