开始我的第一个游戏引擎制作
从零开始的引擎开发。当然不会很高端。想要入门的同学可以看看。
首先平台我选择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开发。以后会不定期更新。
完。
地方
挖槽,看了几百年前自己写的这个文章,也太蠢了8,很明显坑了,不过留下了些代码
在这里:https://github.com/r5r6ty/type1engine
开始我的第一个游戏引擎制作相关推荐
- Love2D游戏引擎制作贪吃蛇游戏
预览游戏 love2d游戏引擎重要函数 详情: love.load:当游戏开始时被调用且仅调用一次 love.draw:回调函数,每帧更新一次游戏画面 love.update:回调函数,每帧更新一次游 ...
- 2D游戏引擎制作:前言
前言 这是笔者生平第一次写博客,水平较差,请多谅解. 前言 笔者年少时,包括现在,一直是一个喜欢玩游戏的人.父亲曾因此批评过笔者,因为他也是个程序员,就说你可以自己做一个出来之类的话,可到现在都没有教 ...
- 2D游戏引擎制作:图片与文字
图片与文字 前言 基础部分就稍快一点,但是一天一篇笔者也累啊!上一篇除笔者外只有3个浏览记录,好悲伤,如果不是引擎制作而是游戏制作是不是人会多一点. 正文 以下代码接上篇文章. 接下来绘制图片,需要引 ...
- 虚拟三维及游戏引擎制作软件
由于本人接触此类软件时间较短,好多都是直接从网上抄过来的. 游戏引擎 (顺序无特殊含义) CryENGINE 3 Unreal ENGINE3 Gamebryo Vision Engine ...
- 265行代码实现第一人称游戏引擎
今天,让我们进入一个可以伸手触摸的世界吧.在这篇文章里,我们将从零开始快速完成一次第一人称探索.本文没有涉及复杂的数学计算,只用到了光线投射技术.你可能已经见识过这种技术了,比如<上古卷轴2 : ...
- 【转】265行代码实现第一人称游戏引擎
原文:html5gamedev.org/?p=2383 总在有个自以为很先进的理念后不久就在网上找到别人的实现! 今天,让我们进入一个可以伸手触摸的世界吧.在这篇文章里,我们将从零开始快速完成一次第一 ...
- 什么是二维数组?二维遍历?Java二维数组制作图片迷宫 使用如鹏游戏引擎制作窗口界面 附带压缩包下载,解压后双击start.bat启动...
什么是二维数组? 数组当中放的还是数组 int [][] arr=new int[3][2]; 有3个小箱子,每个箱子2个格子. 看结果? int [][] arr=new int[3][2]; Sy ...
- 2D游戏引擎制作:读取XML文件 1
读取XML文件 1 前言 渲染底层部分暂时结束,等用到了再继续写. 之前创建的窗体大小800和600还有标题等信息是写死在代码里的,但笔者们一般需要将它提出来放在一个文件里,以便修改这些属性时不用重新 ...
- 游戏产业链:游戏引擎
游戏引擎 在游戏开发领域,有一种特殊类型的公司.他们不制作游戏(或者说,主业不是制作游戏),而是开发制作游戏的工具:游戏引擎. 所谓游戏引擎,可以直观的理解为一个工具包.就像我们借助Photoshop ...
最新文章
- Linux命令 crontab的理解和使用方法
- 【Verilog HDL 训练】第 08 天(二进制、Johnson、环形计数器)
- linux+synaptics+驱动程序,Synaptics
- 20应用统计考研复试要点(part35)--简答题
- java中的基本数据类型_Java中的基本数据类型和引用数据类型
- prop()和attr()
- No certificate for team ‘‘ matching ‘iPhone Distribution: VOVA TECH LIMITED ()‘ Select a different s
- Nodejs pm2 使用
- Python开发技术—面向对象程序设计2
- php choose handler,Guzzle 源码分析
- 解码失败会显示绿屏,及yuv和rgb简单理解
- 局部边缘保持滤波(LEP)高动态范围图像HDR压缩 python实现
- Ridge 回归和 Lasso 回归
- AWK----awk与shell交互
- 对话《深入理解Java虚拟机》作者周志明:电竞选手成为Java大神之路
- Project Euler Problem 53: Combinatoric selections【组合数】
- linux的账号锁定
- 离线百度地图嵌入开发
- 小学计算机集体听课评课,小学听评课的活动总结(精选5篇)
- 字节跳动张一鸣:给互联网人才的一些中肯建议!