Awesome Caderno Sql
psql からプレイするテキストベースのRPG。ゲームのルールは PostgreSQL のトリガーと plpgsql 関数として実装されています。
psql 用のテキスト RPG で、プレイヤーは INSERT でキャラクターを作成し、トリガーがイントロを語る。ゲームルールは plpgsql で書かれており、スキーマは Flyway マイグレーションでバージョン管理されている。
概要
このゲームは PostgreSQL スキーマであり、プレイヤーは psql から使用する。プレイヤーの SQL 文が物語を進め、データベースが notice で応答する。
要件
- Docker
- psql
- make
クイックスタート
make setup # starts Postgres 17 and runs the Flyway migrations
make run # opens psql as the rpg user
その後、プレイヤーは利用可能な種族とクラスを読み、キャラクターを挿入する。
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 は localhost ポート 5433 で Postgres コンテナを起動する。
- make migrate は Flyway をデバッグモードで実行し、保留中のマイグレーションを適用する。
- make down はコンテナを削除し、データは保持する。
- make wipe はコンテナとデータボリュームを削除する。
プロジェクト構成
- migrations にはバージョン管理された SQL が格納されており、各ファイルにはゲームの一部分に対応するテーブル、型、関数が含まれている。ファイル名は V1__races.sql のようにどの部分かを示している。
- scripts には make ターゲットの背後にあるシェルヘルパーが格納されている。
- flyway.conf にはローカルデータベース用の Flyway 接続設定が格納されている。
目的
このプロジェクトは PostgreSQL を練習するための手段である。トリガー、イベントトリガー、ロールと権限、enum、複合型、集合返却関数を使用している。
ライセンス
コードは Apache License 2.0 の下でライセンスされており、LICENSE ファイルに全文が記載されている。このライセンスはコードのみを対象とし、それ以外は含まない。
物語は別個の著作物である。これは Nexus の世界、その国家、キャラクター、歴史と伝承、およびゲーム内のすべてのナラティブテキスト(表示されるメッセージや勢力の説明など)を意味する。物語は Copyright (c) 2014-2026 lyszt, all rights reserved。読んだりゲームをプレイしたりすることはできるが、書面による許可なく物語を複製、改変、公開することはできない。NOTICE ファイルには、コードを再配布する人向けにこのルールが繰り返し記載されている。
