客户端开发

从 0 开始整理开发流程

  • 选择开发环境
  • 下载脚本工具
  • 选择编程语言版本
  • 下载编译器
  • 选择 C/C++ 和 Python 的 IDE
  • 测试编译器
  • 专为 Python 开发的游戏库 Pygame
    • 成熟
    • 稳定
    • 简单

如何建立一个 Windows 窗体?

Windows 窗体由哪些部分构成?

  • 标题栏
  • 菜单栏
  • 工作区
  • 状态栏
  • 滚动条
  • 窗体缩放按钮
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/env python3
#-*- coding: utf-8 -*-

import tkinter

def my_window(w, h):
ws = root.winfo_screenwidth()
hs = root.winfo_screenheight()
x = (ws/2) - (w/2)
y = (hs/2) - (h/2)
root.geometry("%dx%d+%d+%d" % (w, h, x, y))

root = tkinter.Tk(className='Python windows app')
my_window(200, 200)
root.mainloop()

标准标准的 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开始学游戏开发