从零开始的引擎开发。当然不会很高端。想要入门的同学可以看看。
首先平台我选择PC平台。语言选用初中就瞎几把乱学的c++。想做一个2d游戏。网上找几个库就开始做了。之后当然,就碰到了瓶颈。所以为了不走弯路。一开始就要学习很多基本知识。那么首先:
游戏基本原理是什么?
我自己理解就是,当然简单的来讲,清空画面→遍历元素队列(更新数据)→渲染(遍历图片队列重新描画),这样一个过程,每秒循环60次。也就是60fps游戏。这就是一个简单的游戏。
打个比方。用伪代码演示一下就是:
vector<object*> objects;//弄一个vector数组当然更新数据和绘图可以分开来演算,比较好。
objects.push_back(new object);//添加元素
objects.push_back(new object);
objects.push_back(new object);
while(1)
{
clear();//清空画面
for(unsigned int i = 0; i < objects.size(); i++)
{
objects[i]->render();//更新数据并绘图
}
}
那么一个简单的引擎需要什么?
- 建立窗口
- 基本的绘图功能
- 刷新和图片队列
- 键盘鼠标和引擎的交互
- 文字显示
- 声音播放
可以看到一个简单的引擎是不包括object和object的数据更新的。因为一个简单的引擎基本功能就是能显示图片。至于这个图片的大小,位置等等,是由object来提供。这样才能展现出一个生动的游戏画面。
比如一个苹果,他在(0,0)的位置,那么每次更新数据,就将一个苹果的贴图贴在这个位置。当苹果往下掉的时候,比如掉到了(0,-1),也就是位置更新了,那贴图的位置也发生了改变,以此类推。我们就能看到一个苹果往下掉落的过程。也就是说,游戏世界分里世界和表世界。里世界全部由数据构成。而让我们能看到这个世界,就需要图片组成的表世界。当然没有图片,这个世界也是存在的,这个苹果依然是往下掉的。只是我们看不到而已。当然这后面就要扯到物理引擎的知识了,这里先不说。
我自己写引擎碰到瓶颈了以后,就去找教程。但网上的教程很零散,完整的很少,就算有也是收费的。
后来我找到了这个(需要*):Sparky Engine (How To Make a Game Engine)系列
和我一样使用c++和opengl开发。以后会不定期更新。
完。