电子游戏设计与制作(二维图像游戏基础)

1 二维游戏概览

早期的游戏都是二维的,如暗黑破坏神,只有两个轴(上下,左右)

很多RPG游戏是固定视角的2.5D

二维游戏对现在的编程仍然有意义,特别是现在的手机游戏

2 游戏循环概念

视频游戏是一个连续的循环,执行逻辑指令,并将图像输出到屏幕

计算机游戏的主要流程
电子游戏设计与制作(二维图像游戏基础)_第1张图片
该图片来源:页游www.hp91.cn页游

二维游戏编程框架

Windows API + GDI
1、 利用WinMain()函数创建游戏入口;
2、注册Windows类;WNDCLASSEX
3、创建窗口; CreateWindowEx
4、显示和刷新窗口;ShowWindow、UpdateWindow
5、游戏消息循环(从事件句柄获得或向事件句柄传递Windows信息);PeekMessage
6、游戏事件处理函数WndProc;

很少使用GetMessage的原因:该函数在得不到消息的时候会一直等待直到得到消息为止,会造成游戏画面不能及时刷新,不连续性。建议使用PeekMessage

句柄:是WINDOWS用来标识被应用程序所建立或使用的对象的唯一整数

3 理解图像

3.1 图像表示

位图定义:一块由彩色点集组成的矩形区域

类型

  • DIB(设备无关位图)256色以下(包括256色)的DIB拥有自己的颜色表,像素的颜色独立于系统调色板。
  • DDB(设备有关位图,老Windows系统)存在于内存当中,颜色模式必需与输出设备相一致。在256色以下的位图中存储的像素值是系统调色板的索引,其颜色依赖于系统调色板。

位图(BMP)结构

  • 文件头 :头信息
  • 位图信息 :尺寸、存储顺序(从下到上、从左到右)
  • 调色板 :一个查找表,RGB四元组
  • 位图数据:RGB像素值、索引值(如果有调色板)
  • 电子游戏设计与制作(二维图像游戏基础)_第2张图片

3.2 游戏中位图加载与显示

步骤
1)加载位图对象 LoadImage
2)建立与窗口DC兼容的内存DC CreateCompatibleDC
3)选用位图对象 SelectObject
4)将内存DC内容粘贴到窗口DC中,完成游戏画面的显示。 BitBlt

颜色混合与半透明

半透明图色彩 = 源图像色彩×(100% - 透明度)+背景图像色彩×透明度

画面透明效果:
a.将掩码图背景图做“”操作
b.将前景图运算结果做“”操作

4 地图的创建与显示

2D地图种类:正交、等轴、交错等轴、交错六边形

平面地图绘制

电子游戏设计与制作(二维图像游戏基础)_第3张图片
电子游戏设计与制作(二维图像游戏基础)_第4张图片

斜角地图绘制

电子游戏设计与制作(二维图像游戏基础)_第5张图片
该图片来源:页游www.hp91.cn页游

景物地图贴图

用与地图数组同样大小的数组来定义。注意位置修正

地图绘制的优缺点

  • 直接绘制地图:操作简单,但占用内存较多,加载速度较慢。
  • 平面地图绘制:贴图直观,贴图内容具有一定灵活性,但缺少仿三维的立体感。
  • 斜角地图:产生伪三维立体感,操作复杂,由于采用透明处理效果,绘制时间被延长。
  • 景物地图:美观,需要坐标修正,加载时间更长。

5 游戏背景动画

单一滚动动画

每次需要背景画面更新时改变显示背景位图区域
它是固定地图的进一步扩展,可以显示远大于固定地图的图像。

循环背景动画

单一滚动背景动画的背景尺寸要远大于游戏窗口尺寸,位图存储资源较大。

游戏中背景位图有相似性:
1)截取原始背景右边X宽度图像贴到内存DC当中
2)将剩余背景贴到内存DC原有图像的右侧
3)显示最终结果,X++,如大于背景宽度,重新归零

多背景循环动画

合适的使用情况

  • 需要小地图能重叠或者有层次关系;
  • 在背景上有多个物体运动;
  • 需要模拟物体远近不同的透视关系

实现思想

在滚屏地图的基础上设置多个层次的地图。
不妨设从底往上分别为0层,1层,…把地图数据数组改为三维数组。
可以使每个图层以不同的速度运动,模拟景物远近不同的层次感。这种技术,又称视差卷轴

你可能感兴趣的:(游戏开发)