Awesome Caderno Sql
Un gioco di ruolo testuale giocabile da psql, con le regole di gioco implementate come trigger PostgreSQL e funzioni plpgsql.
Un text RPG per psql in cui i giocatori creano un personaggio con un INSERT e un trigger narra l'introduzione. Le regole del gioco sono scritte in plpgsql e lo schema è versionato con le migrazioni Flyway.
Panoramica
Il gioco è uno schema PostgreSQL che i giocatori usano da psql. Le loro istruzioni SQL fanno avanzare la storia, e il database risponde con delle notice.
Requisiti
- Docker
- psql
- make
Avvio rapido
make setup # starts Postgres 17 and runs the Flyway migrations
make run # opens psql as the rpg user
I giocatori poi leggono le razze e le classi disponibili e inseriscono un personaggio.
SELECT * FROM races;
SELECT * FROM classes;
INSERT INTO character_info (name, description, class, race, gender)
VALUES ('Aria', 'Uma maga curiosa', 2, 1, 'feminino');
I giocatori che vogliono un personaggio pronto possono copiarne uno dai template. La funzione use_template prende un id di template e inserisce quel personaggio in character_info.
SELECT * FROM char_templates;
SELECT use_template(1);
Comandi
- make up avvia il container Postgres sulla porta localhost 5433.
- make migrate applica le migrazioni in sospeso con Flyway in modalità debug.
- make down rimuove il container e conserva i dati.
- make wipe rimuove il container e il volume dei dati.
Struttura del progetto
- migrations contiene l'SQL versionato, e ogni file contiene le tabelle, i tipi e le funzioni per una parte del gioco. Il nome del file indica quale parte, come V1__races.sql.
- scripts contiene gli helper shell dietro i target make.
- flyway.conf contiene le impostazioni di connessione Flyway per il database locale.
Scopo
Il progetto è un modo per esercitarsi con PostgreSQL. Utilizza trigger, event trigger, ruoli e permessi, enum, tipi compositi e funzioni che restituiscono insiemi.
Licenza
Il codice è concesso in licenza sotto la Apache License 2.0, e il file LICENSE ne contiene il testo completo. Quella licenza copre il codice e nient'altro.
La storia è un'opera separata. Questo significa il mondo di Nexus, le sue nazioni, personaggi, storia e lore, e tutto il testo narrativo nel gioco come i messaggi stampati e le descrizioni delle fazioni. La storia è Copyright (c) 2014-2026 lyszt, tutti i diritti riservati. Puoi leggerla e giocare al gioco, ma non puoi copiare, adattare o pubblicare la storia senza permesso scritto. Il file NOTICE ripete questa regola per chiunque ridistribuisca il codice.
