第一章 游戏编程概述
游戏循环:游戏程序核心控制流程。
传统游戏循环(单线程):处理输入;更新游戏世界;生成输出。
多线程下的游戏循环:主线程处理输入、更新游戏世界、处理所有图形外的输出,将相关数据交给线程,令线程渲染图像。
游戏时间:单纯使用帧率控制游戏世界会产生很多问题,可以考虑使用真实时间,引入增量时间(deltatime)。
游戏对象:需要更新且绘制的对象;只需要绘制的对象;只需要更新的对象。
第二章 2D图形
1.CRT显示器(阴极射线管)
像素
扫描线
场消隐期:扫描复位时间(电子枪从右下角移动到左上角所花费时间)。
像素缓冲区
屏幕撕裂:当前帧尚未绘制完成,下一帧已开始向像素缓冲区写数据
双缓冲区
垂直同步:缓冲区交换在场消隐期,解决屏幕撕裂问题。但会导致输入延迟(降低响应速度)。
2.精灵
图片格式的选取:PNG格式占用空间小,但通常硬件不支持直接绘制,会被转换成其它格式。TGA可以直接绘制,但空间占用大。在IOS上较好的是PVR,其经过压缩且可以直接绘制。
绘制精灵:画家算法,将精灵进行分层,按序绘制。
动画精灵:帧率至少达到24FPS。用一组图片表示对象的所有状态,按顺序进行排序。声明动画片段类,记录动画片段的起始索引以及所有图片数量。在播放动画时,记录当前播放动画索引、图片在动画中的索引、动画的FPS(可以控制原动画的速度)。
精灵表单(图集):可以减少内存空间;减少图片切换频率,提高效率。
3.滚屏
单轴滚屏:将背景图片按屏幕大小切割。摄像机在玩家越过半屏时更新。
无限滚屏
平行滚屏:将背景拆分成不同层次,按不同速率进行滚动。
四向滚屏
砖块地图(瓦片)
斜视等视角砖块地图
第三章 线性代数
1.向量
长度、单位向量、正规化:卡马克快速平方根
点乘:夹角;投影;反射
叉乘:法线
线性插值:Lerp
坐标系
2.矩阵