Memory 4

一个游戏最大的内存消耗就是游戏资源的缓存。游戏资源主要包括图片、音频、游戏数据等等,这些资源都得从游戏硬盘上读取并加载到内存中,然后游戏才能使用。   这些资源中尤其是图片对内存的消耗很大,像一张标准的1024x1024大小的png图片加载到内存中,每个像素占4个bytes, »

Memory 3

内存池   内存池就是像一个养鱼池一样的东西,我们需要鱼的时候就从池子里捞出来,鱼少了以后又往池子里补充鱼苗,也就是用来做这两件事的一个池子而已。   我们进行内存分配依赖的new和delete关键字,或是底层的malloc和free函数,它们是一些通用的内存分配回收的系统调用方 »

Memory 2

内存泄漏   内存泄漏就是不再使用的内存没有被释放掉。   最基础的情况,像在C++里的new和delete没有对应使用就一定会发生内存泄漏。C++中进行内存管理有一个通用的做法叫做“RAII”,基本原理就是把内存或是其它要进行“获取”,“使用”,“释放”的资源,封装成C++对象 »

Memory 1

内存的基础使用   程序在运行时对内存使用包括: 程序代码、程序常量 静态变量 栈内存 堆内存   程序代码、程序常量和静态变量,在程序进入main函数执行之前就已经放到了内存里分配了空间。有一个冷知识,如果使用的静态变量是类的对象的话,还会在main函数执行之前就运行构造函数, »

游戏人工智能

状态机   状态机系统中的状态具有进入状态,离开状态,接受输入,进行转移等动作。   根据“状态A->接收条件X->状态B”可以画出状态机图或是列成状态表。   原理简单,但是随着设计的状态增加状态间的跳转关系增加,状态图越来越不直观,状态机编码和调试的难度也越来越大 »

委托和消息系统

意义和用途   一个对象内部触发事件影响外部的对象。   想象不同功能按钮的点击事件。 简单处理多个点击事件 #include <FilePanel.h> #include <Program.h> class Button { public: enum »

游戏主循环、帧速控制

FPS(Frame Per Second)游戏帧速60帧是指游戏每秒循环更新60次。   一个游戏程序的基本结构像是这样: while (isRunning) { updateEverything(); }   但是这样死循环的话,游戏的更新速度就只与CPU频率有关了,频率 »