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

1 二维游戏概览

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

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

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

2 游戏循环概念

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

计算机游戏的主要流程

2ec2d41792e7400a3e320f3db3cc0bfb.png

该图片来源:页游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像素值、索引值(如果有调色板)

953518ddca676eed92b2975dd2831be6.png

3.2 游戏中位图加载与显示

步骤

1)加载位图对象 LoadImage

2)建立与窗口DC兼容的内存DC CreateCompatibleDC

3)选用位图对象 SelectObject

4)将内存DC内容粘贴到窗口DC中,完成游戏画面的显示。 BitBlt

颜色混合与半透明

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

画面透明效果:

a.将掩码图与背景图做“与”操作

b.将前景图与运算结果做“或”操作

4 地图的创建与显示

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

平面地图绘制

2c29a8d35c1986ba21d1acca6381ee1b.png

110a7b1eb472c1ab853bece41cceb7da.png

斜角地图绘制

d892101d3028f7679b30f167bda32aa3.png

该图片来源:页游www.hp91.cn页游

景物地图贴图

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

地图绘制的优缺点

直接绘制地图:操作简单,但占用内存较多,加载速度较慢。

平面地图绘制:贴图直观,贴图内容具有一定灵活性,但缺少仿三维的立体感。

斜角地图:产生伪三维立体感,操作复杂,由于采用透明处理效果,绘制时间被延长。

景物地图:美观,需要坐标修正,加载时间更长。

5 游戏背景动画

单一滚动动画

每次需要背景画面更新时改变显示背景位图区域。

它是固定地图的进一步扩展,可以显示远大于固定地图的图像。

循环背景动画

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

游戏中背景位图有相似性:

1)截取原始背景右边X宽度图像贴到内存DC当中

2)将剩余背景贴到内存DC原有图像的右侧

3)显示最终结果,X++,如大于背景宽度,重新归零

多背景循环动画

合适的使用情况:

需要小地图能重叠或者有层次关系;

在背景上有多个物体运动;

需要模拟物体远近不同的透视关系

实现思想:

在滚屏地图的基础上设置多个层次的地图。

不妨设从底往上分别为0层,1层,…把地图数据数组改为三维数组。

可以使每个图层以不同的速度运动,模拟景物远近不同的层次感。这种技术,又称视差卷轴

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值