Awesome Caderno Sql
PLpgSQL

Awesome Caderno Sql

一款通过 psql 运行的文字角色扮演游戏,其游戏规则通过 PostgreSQL 触发器和 plpgsql 函数实现。

GitHub|

一个用于 psql 的文字 RPG,玩家通过 INSERT 创建角色,触发器会叙述开场。游戏规则用 plpgsql 编写,数据库模式通过 Flyway 迁移进行版本管理。

概述

这个游戏是一个 PostgreSQL 模式,玩家从 psql 中使用它。他们的 SQL 语句推动故事发展,数据库则通过通知作出回应。

要求

  • Docker
  • psql
  • make

快速开始

make setup   # 启动 Postgres 17 并运行 Flyway 迁移
make run     # 以 rpg 用户身份打开 psql

随后玩家可以查看可用的种族和职业,并插入一个角色。

SELECT * FROM races;
SELECT * FROM classes;

INSERT INTO character_info (name, description, class, race, gender)
VALUES ('Aria', 'Uma maga curiosa', 2, 1, 'feminino');

想要现成角色的玩家可以从模板中复制一个。use_template 函数接收一个模板 id,并将该角色插入到 character_info 中。

SELECT * FROM char_templates;
SELECT use_template(1);

命令

  • make up 在本地端口 5433 上启动 Postgres 容器。
  • make migrate 以调试模式使用 Flyway 应用待处理的迁移。
  • make down 移除容器并保留数据。
  • make wipe 移除容器和数据卷。

项目结构

  • migrations 存放版本化的 SQL,每个文件包含游戏某一部分的表、类型和函数。文件名说明了是哪一部分,例如 V1__races.sql。
  • scripts 存放 make 目标背后的 shell 辅助脚本。
  • flyway.conf 存放本地数据库的 Flyway 连接设置。

目的

该项目是一种练习 PostgreSQL 的方式。它使用了触发器、事件触发器、角色和权限、枚举、复合类型以及集合返回函数。

许可证

代码依据 Apache License 2.0 授权,LICENSE 文件包含完整文本。该许可证仅涵盖代码,不涵盖其他内容。

故事是独立的作品。这意味着 Nexus 世界、其国家、角色、历史和传说,以及游戏中所有叙事文本,例如打印的消息和阵营描述。故事版权归 Copyright (c) 2014-2026 lyszt 所有,保留所有权利。你可以阅读它并游玩该游戏,但未经书面许可,不得复制、改编或发布该故事。NOTICE 文件为任何重新分发代码的人重申了这一规则。