从 0 开始整理开发流程
- 选择开发环境
- 下载脚本工具
- 选择编程语言版本
- 下载编译器
- 选择 C/C++ 和 Python 的 IDE
- 测试编译器
- 专为 Python 开发的游戏库 Pygame
- 成熟
- 稳定
- 简单
如何建立一个 Windows 窗体?
Windows 窗体由哪些部分构成?
- 标题栏
- 菜单栏
- 工作区
- 状态栏
- 滚动条
- 窗体缩放按钮
1 | #!/usr/bin/env python3 |
标准标准的 Windows 窗体
- 窗体的结构是在建立窗体之前就定义下来的
- 所有长时间运行的程序,包括游戏,包括 Windows 本身都是一个大循环。我们在这个循环里做我们想做的事情,直到循环结束
- 如果使用脚本语言的方式编写窗体,就不需要关心那么多的东西,只需要定义坐标、位置和窗体名称即可。
如何区分图形和图像?
图形
我们所看到的一种点、线、面的描述对象。
图像
由数据组成的任意像素点的描述对象。
图形其实是图像的一种抽象表现形式。
如何绘制游戏背景?
所谓左右卷轴,就是游戏画面是横向的、左右运动的,而上下卷轴就是游戏画面是竖直对的、上下运动的。
如何载入“飞机”和“敌人”?
- 随机数
- 载入主角飞机
- 载入敌人飞机
如何设置图像的前后遮挡?
在做遮挡的时候,要考虑绘制顺序,先绘制的一定会被后绘制的遮挡。
如何设置精灵的变形、放大和缩小?
什么是 精灵?
精灵是一个游戏开发中的名词,英文叫 Sprite
。
它多用于游戏中的人物和可移动物品,也可以用于显示鼠标指针和输入的文字。如果屏幕上的可移动物体的尺寸比一个精灵图要大,可由若干个精灵图缩放或者拼接而成。
- 从
宏观
的概念讲,精灵就是一幅 图片 - 从
编程
的角度讲,精灵是一种 管理器
精灵的变形、缩放以及 pygame 中关于精灵类的一些简单的操作。
你可以直观地感受到,精灵类和 group 类配合起来使用是一件很方便的事情,也就是说,我们忽略了 blit 的这些方法,直接在 group 中,进行 update 和 draw 就可以一次性做完很多的工作。
如果我们单独编写精灵的序列帧动画函数,也不是不行,但是你可能需要编写相当多的代码来代替 Sprite 和 group 类的工作。
如何设置淡入淡出和碰撞检测?
如何做出淡入淡出效果?
- fill 函数
- 设置 Alpha 混合和背景填充,来实现淡入淡出
如何设置碰撞检测?
- 通过判断图像 x 轴和 y 轴是否重叠
如何制作游戏资源包和保存机制?
什么是资源包?
- 资源包是一种将游戏的资源和素材进行分类、梳理,并且打包的一种包裹。
- 资源包可以用来压缩游戏资源和素材,减少游戏体积。
- 资源包里存在任何可能性,比如它可以包含图片文件、模型文件、音频文件、脚本文件等等,具体要看游戏开发人员的配置需求,来决定资源包里的内容。
资源包的格式
- 资源包头
- 资源包版本
- 资源包是否进行压缩
- 资源包的目录结构以及素材名文件名偏移量
完整的资源包
- [资源包头]
- [版本号]
- [是否压缩]
- [资源包目录/素材文件名A][文件A偏移量][文件A长度]
- …
- [资源包目录/素材文件名N][文件N偏移量][文件N长度]
- [素材A本体]….[素材N本体]
- [结束符]
制作资源包的目的是为了厘清游戏素材以及游戏素材的存放结构。资源包的结构与压缩包的结构比较相似,但是为了更贴合游戏程序读取,会对虚拟目录和素材文件名等,做一些修改。
为了方便保存游戏进度,我们可以做成游戏脚本,第二次打开游戏直接载入保存的脚本即可。
如何载入背景音乐和音效?
BASS 音频库 http://www.un4seen.com
这个音频库是不开源的,如果你只是自己开发游戏玩玩,非商业目的,就可以使用。如果是商业使用,那就需要购买证书。
参考:从0开始学游戏开发