Awesome Caderno Sql
Um RPG de texto jogado no psql, com as regras do jogo implementadas como gatilhos do PostgreSQL e funções do plpgsql.
Um RPG de texto para psql onde os jogadores criam um personagem com um INSERT e um trigger narra a introdução. As regras do jogo são escritas em plpgsql e o schema é versionado com migrações Flyway.
Visão geral
O jogo é um schema PostgreSQL que os jogadores usam a partir do psql. Suas instruções SQL avançam a história, e o banco de dados responde com avisos.
Requisitos
- Docker
- psql
- make
Início rápido
make setup # starts Postgres 17 and runs the Flyway migrations
make run # opens psql as the rpg user
Os jogadores então leem as raças e classes disponíveis e inserem um personagem.
SELECT * FROM races;
SELECT * FROM classes;
INSERT INTO character_info (name, description, class, race, gender)
VALUES ('Aria', 'Uma maga curiosa', 2, 1, 'feminino');
Jogadores que querem um personagem pronto podem copiar um dos templates. A função use_template recebe um id de template e insere esse personagem em character_info.
SELECT * FROM char_templates;
SELECT use_template(1);
Comandos
- make up inicia o contêiner Postgres na porta 5433 do localhost.
- make migrate aplica as migrações pendentes com o Flyway em modo debug.
- make down remove o contêiner e mantém os dados.
- make wipe remove o contêiner e o volume de dados.
Estrutura do projeto
- migrations contém o SQL versionado, e cada arquivo contém as tabelas, tipos e funções de uma parte do jogo. O nome do arquivo diz qual parte, como V1__races.sql.
- scripts contém os auxiliares de shell por trás dos alvos do make.
- flyway.conf contém as configurações de conexão do Flyway para o banco de dados local.
Propósito
O projeto é uma forma de praticar PostgreSQL. Ele usa triggers, event triggers, roles e permissões, enums, tipos compostos e funções que retornam conjuntos.
Licença
O código é licenciado sob a Apache License 2.0, e o arquivo LICENSE contém o texto completo. Essa licença cobre o código e nada mais.
A história é uma obra separada. Isso significa o mundo de Nexus, suas nações, personagens, história e lore, e todo o texto narrativo do jogo, como as mensagens impressas e as descrições de facções. A história é Copyright (c) 2014-2026 lyszt, todos os direitos reservados. Você pode lê-la e jogar o jogo, mas não pode copiar, adaptar ou publicar a história sem permissão por escrito. O arquivo NOTICE repete essa regra para qualquer pessoa que redistribua o código.
