从零开始的引擎开发。当然不会很高端。想要入门的同学可以看看。

首先平台我选择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();//更新数据并绘图}
}

当然更新数据和绘图可以分开来演算,比较好。

那么一个简单的引擎需要什么?

  1. 建立窗口
  2. 基本的绘图功能
  3. 刷新和图片队列
  4. 键盘鼠标和引擎的交互
  5. 文字显示
  6. 声音播放

可以看到一个简单的引擎是不包括object和object的数据更新的。因为一个简单的引擎基本功能就是能显示图片。至于这个图片的大小,位置等等,是由object来提供。这样才能展现出一个生动的游戏画面。

比如一个苹果,他在(0,0)的位置,那么每次更新数据,就将一个苹果的贴图贴在这个位置。当苹果往下掉的时候,比如掉到了(0,-1),也就是位置更新了,那贴图的位置也发生了改变,以此类推。我们就能看到一个苹果往下掉落的过程。也就是说,游戏世界分里世界和表世界。里世界全部由数据构成。而让我们能看到这个世界,就需要图片组成的表世界。当然没有图片,这个世界也是存在的,这个苹果依然是往下掉的。只是我们看不到而已。当然这后面就要扯到物理引擎的知识了,这里先不说。

我自己写引擎碰到瓶颈了以后,就去找教程。但网上的教程很零散,完整的很少,就算有也是收费的。

后来我找到了这个(需要翻墙):Sparky Engine (How To Make a Game Engine)系列

和我一样使用c++和opengl开发。以后会不定期更新。

完。

地方

挖槽,看了几百年前自己写的这个文章,也太蠢了8,很明显坑了,不过留下了些代码
在这里:https://github.com/r5r6ty/type1engine

开始我的第一个游戏引擎制作相关推荐

  1. Love2D游戏引擎制作贪吃蛇游戏

    预览游戏 love2d游戏引擎重要函数 详情: love.load:当游戏开始时被调用且仅调用一次 love.draw:回调函数,每帧更新一次游戏画面 love.update:回调函数,每帧更新一次游 ...

  2. 2D游戏引擎制作:前言

    前言 这是笔者生平第一次写博客,水平较差,请多谅解. 前言 笔者年少时,包括现在,一直是一个喜欢玩游戏的人.父亲曾因此批评过笔者,因为他也是个程序员,就说你可以自己做一个出来之类的话,可到现在都没有教 ...

  3. 2D游戏引擎制作:图片与文字

    图片与文字 前言 基础部分就稍快一点,但是一天一篇笔者也累啊!上一篇除笔者外只有3个浏览记录,好悲伤,如果不是引擎制作而是游戏制作是不是人会多一点. 正文 以下代码接上篇文章. 接下来绘制图片,需要引 ...

  4. 虚拟三维及游戏引擎制作软件

    由于本人接触此类软件时间较短,好多都是直接从网上抄过来的. 游戏引擎   (顺序无特殊含义) CryENGINE 3 Unreal ENGINE3  Gamebryo  Vision Engine  ...

  5. 265行代码实现第一人称游戏引擎

    今天,让我们进入一个可以伸手触摸的世界吧.在这篇文章里,我们将从零开始快速完成一次第一人称探索.本文没有涉及复杂的数学计算,只用到了光线投射技术.你可能已经见识过这种技术了,比如<上古卷轴2 : ...

  6. 【转】265行代码实现第一人称游戏引擎

    原文:html5gamedev.org/?p=2383 总在有个自以为很先进的理念后不久就在网上找到别人的实现! 今天,让我们进入一个可以伸手触摸的世界吧.在这篇文章里,我们将从零开始快速完成一次第一 ...

  7. 什么是二维数组?二维遍历?Java二维数组制作图片迷宫 使用如鹏游戏引擎制作窗口界面 附带压缩包下载,解压后双击start.bat启动...

    什么是二维数组? 数组当中放的还是数组 int [][] arr=new int[3][2]; 有3个小箱子,每个箱子2个格子. 看结果? int [][] arr=new int[3][2]; Sy ...

  8. 2D游戏引擎制作:读取XML文件 1

    读取XML文件 1 前言 渲染底层部分暂时结束,等用到了再继续写. 之前创建的窗体大小800和600还有标题等信息是写死在代码里的,但笔者们一般需要将它提出来放在一个文件里,以便修改这些属性时不用重新 ...

  9. 游戏产业链:游戏引擎

    游戏引擎 在游戏开发领域,有一种特殊类型的公司.他们不制作游戏(或者说,主业不是制作游戏),而是开发制作游戏的工具:游戏引擎. 所谓游戏引擎,可以直观的理解为一个工具包.就像我们借助Photoshop ...

最新文章

  1. Linux命令 crontab的理解和使用方法
  2. 【Verilog HDL 训练】第 08 天(二进制、Johnson、环形计数器)
  3. linux+synaptics+驱动程序,Synaptics
  4. 20应用统计考研复试要点(part35)--简答题
  5. java中的基本数据类型_Java中的基本数据类型和引用数据类型
  6. prop()和attr()
  7. No certificate for team ‘‘ matching ‘iPhone Distribution: VOVA TECH LIMITED ()‘ Select a different s
  8. Nodejs pm2 使用
  9. Python开发技术—面向对象程序设计2
  10. php choose handler,Guzzle 源码分析
  11. 解码失败会显示绿屏,及yuv和rgb简单理解
  12. 局部边缘保持滤波(LEP)高动态范围图像HDR压缩 python实现
  13. Ridge 回归和 Lasso 回归
  14. AWK----awk与shell交互
  15. 对话《深入理解Java虚拟机》作者周志明:电竞选手成为Java大神之路
  16. Project Euler Problem 53: Combinatoric selections【组合数】
  17. linux的账号锁定
  18. 离线百度地图嵌入开发
  19. 小学计算机集体听课评课,小学听评课的活动总结(精选5篇)
  20. 字节跳动张一鸣:给互联网人才的一些中肯建议!

热门文章

  1. Redis详细使用与讲解
  2. 使用字节流读取文本文件时,乱码问题的产生与解决
  3. MySQL存储过程:利用游标+临时表实现查询
  4. 一款支持Linux/Windows/Mac的百度网盘客户端:BaiduPCS-Web
  5. 来谈谈SEM及SEO优化
  6. vision transformer 剪枝论文汇总
  7. 计算机体系结构 第二章 计算机指令集结构设计 操作码的平均长度、指令地址分配
  8. 安装配置kafka集群
  9. Windows7 开机原理
  10. php如何升级swoole,php如何升级swoole