Awesome Caderno Sql
PLpgSQL

Awesome Caderno Sql

Un jeu de rôle textuel jouable depuis psql, dont les règles du jeu sont implémentées sous forme de déclencheurs PostgreSQL et de fonctions plpgsql.

GitHub|

Un RPG textuel pour psql où les joueurs créent un personnage avec un INSERT et un trigger narre l'intro. Les règles du jeu sont écrites en plpgsql et le schéma est versionné avec des migrations Flyway.

Aperçu

Le jeu est un schéma PostgreSQL que les joueurs utilisent depuis psql. Leurs requêtes SQL font avancer l'histoire, et la base de données répond avec des notices.

Prérequis

  • Docker
  • psql
  • make

Démarrage rapide

make setup   # starts Postgres 17 and runs the Flyway migrations
make run     # opens psql as the rpg user

Les joueurs lisent ensuite les races et classes disponibles et insèrent un personnage.

SELECT * FROM races;
SELECT * FROM classes;

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

Les joueurs qui veulent un personnage prêt à l'emploi peuvent en copier un depuis les templates. La fonction use_template prend un identifiant de template et insère ce personnage dans character_info.

SELECT * FROM char_templates;
SELECT use_template(1);

Commandes

  • make up démarre le conteneur Postgres sur le port 5433 de localhost.
  • make migrate applique les migrations en attente avec Flyway en mode debug.
  • make down supprime le conteneur et conserve les données.
  • make wipe supprime le conteneur et le volume de données.

Organisation du projet

  • migrations contient le SQL versionné, et chaque fichier contient les tables, types et fonctions d'une partie du jeu. Le nom du fichier indique quelle partie, comme V1__races.sql.
  • scripts contient les scripts shell derrière les cibles make.
  • flyway.conf contient les paramètres de connexion Flyway pour la base de données locale.

Objectif

Le projet est un moyen de pratiquer PostgreSQL. Il utilise des triggers, des event triggers, des rôles et permissions, des enums, des types composites et des fonctions retournant des ensembles.

Licence

Le code est sous licence Apache License 2.0, et le fichier LICENSE en contient le texte intégral. Cette licence couvre le code et rien d'autre.

L'histoire est une œuvre distincte. Cela signifie le monde de Nexus, ses nations, personnages, histoire et lore, ainsi que tout le texte narratif du jeu comme les messages affichés et les descriptions de factions. L'histoire est Copyright (c) 2014-2026 lyszt, tous droits réservés. Vous pouvez la lire et jouer au jeu, mais vous ne pouvez pas copier, adapter ou publier l'histoire sans autorisation écrite. Le fichier NOTICE répète cette règle pour quiconque redistribue le code.