a texting based idle MMO-RPG powered by AI.
Embark on quests, join guilds, play minigames, cast spells... All by texting!
The "main" version of pilgram is running on @pilgram_bot
on Telegram if you want to try it out.
Everything in this repository is under the MIT license, except for content_meta.json
,
which is copyrighted and should be replaced with your own version if you want to fork this repository / host your own version of Pilgram.
Note: requires Python >= 3.12.0
- Open a terminal
- Move into a folder that doesn't have a folder named 'pilgram'
- clone the repository with
git clone https://github.com/SudoOmbro/pilgram
- Move into the newly created pilgram folder with
cd pilgram
- Create a Python virtual enviorment with
python3.12 -m venv venv
- Activate the Python virtual enviorment with
source venv/bin/activate
- Install the requirements with
pip install -r requirements.txt
- Deactivate the Python virtual enviormante with
deactivate
- Configure (see next section)
Pilgram has 2 main config files:
content_meta.json
: contains all the info about the world & the content in the gamesettings.json
: contains general system settings like tokens & intervals
to Create settings.json
simply rename settings_template.json
or run cp settings_template.json settings.json
, then proceed to change all XXX values to your own tokens.
Pilgram can be run simply by activating the Python virtual enviorment and then running the main file with python main.py
.
This is a simple but not ideal way of doing it, it does however give you easy access to the Admin CLI, which can be used to add content to the game and change some player values.
It is harder but preferable to deploy pilgram as a daemon on a linux server:
here's how to deploy pilgram to a linux server:
Create a user and name it pilgram with adduser pilgram
Switch to the pilgram user with su pilgram
and then move the the home directory with cd
Follow the same installation & configuration steps as described above, then run sudo nano /etc/systemd/system/pilgram.service
and write the following:
[Unit]
Description=pilgram service
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=1
User=pilgram
WorkingDirectory=/home/pilgram/pilgram
ExecStart=/home/pilgram/pilgram/venv/bin/python main.py
Sockets=pilgram.socket
StandardInput=socket
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
Exit nano and save the buffer, then run sudo nano /etc/systemd/system/pilgram.socket
and write the following:
[Unit]
Description=pilgram socket
After=network.target
StartLimitIntervalSec=0
[Socket]
ListenFIFO=%t/pilgram.stdin
Service=pilgram.service
Again, exit nano and save.
Now that everything is set up, you can run systemctl daemon-reload
to reaload all your daemons (and load the new ones you just added).
Now all that remains to do is starting your new daemons, so just run systemctl start pilgram.socket
& systemctl start pilgram.service
and everything should work fine.
You can check that everything is working by running systemctl status pilgram.socket
& systemctl status pilgram.service
.
This setup also lets you interact with the admin console by running echo "command" > /run/pilgram.stdin
, which is very clunky to do honestly, which is why i suggest creating & using a bash function like this:
wpc() {
echo "$1" > /run/pilgram.stdin
journalctl --unit=pilgram.service -n 1 --no-pager
}
by using this function the previous echo + piping thing just becomes wpc "your command here"
, which is much more convenient.