# ezgal
**Repository Path**: egg34/ezgal
## Basic Information
- **Project Name**: ezgal
- **Description**: 基于python的轻量级galgame框架
- **Primary Language**: Python
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 5
- **Forks**: 1
- **Created**: 2021-10-15
- **Last Updated**: 2024-07-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ezgal
> author: Mz1
>
> email: mzi_mzi@163.com
>
> bilibili@Mz1不是黑帽子
说明:ezgal是一个基于**python**和**pygame**的galgame框架。**最简单的使用方法不需要编写程序,直接写json就可以完成。(现在正在向.mz脚本发展)**
**需要安装pygame库: pip install pygame**
P.S. 非专业开发,不喜勿喷。
> **进度和需求:**
>
> 需要增加文字出现的动画效果!
>
> 目前在完善游戏界面中底部的菜单!
>
> 建立游戏存档!
>
> 处理dialogue为null的情况!
>
> *现在游戏过程中存在点击过快来不及加载的bug
## 文件/目录说明
### 目录
data/ --> 游戏数据文件夹
data/icon/ --> 图标文件夹
data/font/ --> 字体文件夹
data/music/ --> 音乐文件夹
data/img/ --> 图片文件夹
data/img/sys/ --> **系统(框架)图片**文件夹
data/scene/ --> 场景文件夹**(最重要的故事剧情文件夹)**【目前存在项目文件夹中的大部分data文件是为了测试】
save/ --> 游戏存档文件夹
raw/ --> 原始文件文件夹(剧本+图片啥的)
### 文件
set.json --> 配置文件
main.py --> **主程序脚本**
build.py --> 用于**编译raw文件的脚本**
LICENSE --> 开源许可证
## 设置面板可设置的内容
出了音量还有啥,暂时没想到,先空着吧
先去实现存档面板
## 场景文件格式
详见:[场景文件格式](场景文件格式.md)
## RAW文件编写说明
raw文件中剧本文件后缀名为.mz(如1.mz)
通过raw方式可以更轻巧的对游戏脚本进行编写,由build.py来编译成data文件目录中的数据文件。
### 语法
```
# 和python采用一样的注释方式
@at_bus_stop: # 场景代表一个scene文件,作为标记使用
set background xxxxxx.jpg # 设置游戏背景
set Mz1 img xxxxxx.png # 设置人物图像
Mz1: 今天天气真好。 # 表示 Mz1说了"今天天气真好。"
是啊,今天天气真好! # 表示 无人 直接显示"是啊,今天天气真好!"
jmp @at_school # 表示跳转到at_school场景,如果没有jmp则默认为顺序执行
@at_home:
Mz1: 终于回到家了
@at_school:
Mz1: md又上学了
jmp @at_home
```
## .mzpak文件格式
用于打包一整个data文件夹到一个.mzpak文件
```cpp
struct Mzpak{
DWORD magic = 0x317a4d2e; // .Mz1文件指纹
DWORD time; // 打包这个文件时的时间戳
}; // 文件头结束紧接着就是文件结构体
struct Mzpakfile{
BYTE mark = 0x99; // 固定标志0x99
DWORD file_name_length; // 文件名长度
char file_name[file_name_length]; // 文件名
DWORD file_size; // 文件大小,单位byte
BYTE content[file_size]; // 文件的内容
};
```