Automated, progress quest-inspired procedural adventuring

Related tags

Miscellaneousjourney
Overview

Tales of an Endless Journey (TEJ)

Automated, progress quest-inspired procedural adventuring

demo image

What is this project?

Journey is the result of many, many attempts at making some form of D&D inspired computer program. The scope of this project has, over the years, variously shifted from a text adventure game to a fairly faithful recreation of 5e to a full text adventure scripting engine powered by Markdown to a world simulation that also allowed you to explore it (the last is the Civsim project). It's current party-focused instantiation owes itself to inspiration from games such as Dungeon Campaign (Although its graphics are, if possible, even worse) as well as automated simulators such as Progress Quest, which has just received a CLI release. Oh, also automated roguelikes like Roguathia.

How do I "play" TEJ?

  1. Download all files.
  2. Install the pyyaml module for python using pip install pyyaml.
  3. Run main.py.
  4. Sit back and relax, the journey has begun.

Ok, but seriously, how do I "play" TEJ?

When TEJ is created, a party of random characters is generated and go through their lives before adventuring. Being strong willed adventurers, they come with minds of their own, and are naturally reluctant to follow any commands. Indeed, they will insist on making all decisions by themselves, either through collective voting or selfishly, leaving you (the player) with little to do except watch their exploits play out. You can leave the window in the background, and if (when) these adventurers fall you will receive your highscore - my current highscore is 2599.

How does TEJ work?

TEJ works using a system of markov chains containing various nodes. For example, the wilderness node can either link to itself (going from one spot in the wild to another), to a travel encounter, to a town, or to a dungeon. Each node also has an associated event, which sometimes gives the characters some control over where they end up through skill checks, voting, or similar mechanisms.

Characters can also have encounters with other creatures, which have different power levels and are not generated to be a "fair fight". Based on the power disparity between the groups and fear and aggression in the party, adventurers can choose to fight, flight, or parley. Of course, if they come to blows and adventurers die, the party is diminished. When the party is lost to traps, exhaustion, or foes, the game is over... (You can sometimes recruit party members in town, no fear, and surviving dungeons levels party members up!)

I want more biomes/monsters/unique encounters/X feature!

You're in luck! TEJ is designed to be pretty extensible, and I'm looking forward to reworking the codebase to make it even more extensible! To add a new node in the markov chain, simply edit the list of possible outcomes for each node in generic_adventure.yaml and then the function in the Adv class in generic_adventure.py. Be warned that some nodes specify what outcome they link to using special methods in the function rather than "choosing" from the markov chain options. Monsters are simply a name, a vertical bar |, and a power number added to the list in generic_encounters.yaml. If you want a monster to have special behaviour, I've written up an example of a special enemy (the venomous adder) in generic_adventure.py. Any subclasses for Enemy you add using this format are automatically detected and will replace the relevant bestiary entry. When naming the subclass, be sure to name it exactly the same as the bestiary entry, except replacing with _.

Any last words?

Have fun!

You might also like...
Your Google Recon is Now Automated
Your Google Recon is Now Automated

GRecon : GRecon (Greei-Conn) is a simple python tool that automates the process of Google Based Recon AKA Google Dorking The current Version 1.0 Run 7

Automated GitHub profile content using the USGS API, Plotly and GitHub Actions.
Automated GitHub profile content using the USGS API, Plotly and GitHub Actions.

Top 20 Largest Earthquakes in the Past 24 Hours Location Mag Date and Time (UTC) 92 km SW of Sechura, Peru 5.2 11-05-2021 23:19:50 113 km NNE of Lobuj

Track testrail productivity in automated reporting to multiple teams
Track testrail productivity in automated reporting to multiple teams

django_web_app_for_testrail testrail is a test case management tool which helps any organization to track all consumption and testing of manual and au

Automated Content Feed Curator

Gathers posts from content feeds, filters, formats, delivers to you.

Automated Birthday Wisher built using Python
Automated Birthday Wisher built using Python

Automated Birthday Wisher This Automation of wishing Birthday is achieved using Python. Never forget to wish birthday! Table of contents Overview Scre

Automated moth pictures for biodiversity research
Automated moth pictures for biodiversity research

Automated moth pictures for biodiversity research

Automated rop chain generation

This is the accompanying code to the blog post talking about automated rop chain generation. Build the test file with: make Install the dependencies:

Backups made easy, automated, monitored and SECURED with an audited encryption

Backup Controller Backups made easy, automated, monitored and SECURED with an audited encryption. Schedules backup tasks executed by Backup Maker, upl

Releases(v0.1)
An application to see if your Ethereum staking validator(s) are members of the current or next post-Altair sync committees.

eth_sync_committee.py Since the Altair upgrade, 512 validators are randomly chosen every 256 epochs (~27 hours) to form a sync committee. Validators i

4 Oct 27, 2022
An alternative site to emplea.do due to inconsistent service of the app.

feline a agile and fast alternative to emplea.do License: MIT Settings Moved to settings. Basic Commands Setting Up Your Users To create a normal user

Codetiger 8 Nov 10, 2021
It is convenient to quickly import Python packages from the network.

It is convenient to quickly import Python packages from the network.

zmaplex 1 Jan 18, 2022
Fully coded Apps by Codex.

OpenAI-Codex-Code-Generation Fully coded Apps by Codex. How I use Codex in VSCode to generate multiple completions with autosorting by highest "mean p

nanowell 47 Jan 01, 2023
HOWTO: Downgrade from nYNAB to YNAB4

HOWTO: Downgrade from nYNAB to YNAB4 This page explains how to move from nYNAB to YNAB4 while retaining as much information as possible. See Appendix

Tobias Kunze 10 Dec 29, 2022
Pylexa - Artificial Assistant made with Python

Pylexa - Artificial Assistant made with Python Alexa is a famous artificial assistant used massively across the world. It is a substitute of Alexa whi

\_PROTIK_/ 4 Nov 03, 2021
ALSPAC data analysis studying links between screen-usage and mental health issues in children. Provided data has been synthesised.

ADSMH - Mental Health and Screen Time Group coursework for Applied Data Science at the University of Bristol. Overview The data set that you have was

Kai 1 Jan 13, 2022
Este script añade la config de s4vitar a bspwm automaticamente!

Se ha testeado este script en ParrotOS, Kali y Ubuntu. Funciona para todos los sistemas operativos basados en Debian. Instalación git clone https://gi

yorkox 201 Dec 30, 2022
Allow you to create you own custom decentralize job management system.

ants Allow you to create you own custom decentralize job management system. Install $ git clone https://github.com/hvuhsg/ants.git Run monitor exampl

1 Feb 15, 2022
This is an API to get user details for competitive coding platforms - Codeforces, Codechef, SPOJ, Interviewbit. More Platform will be Added Soon.

Competitive-Programming-Score-API An API to get user details for competitive coding platforms - Codeforces, Codechef, SPOJ, Interviewbit Platforms Ava

Aaditya Prakash 3 Jan 17, 2022
3x+1 recreated in Python

3x-1 3x+1 recreated in Python If a number is odd it is multiplied by 3 and 1 is added to the product. If a number is even it is divided by 2. These ru

4 Aug 19, 2022
Groupe du projet Python en 2TL2-4

Présentation Projet EpheCom Ce logiciel a été développé dans le cadre scolaire. EpheCom est un logiciel de communications - vocale et écrite - en temp

1 Dec 26, 2021
Build your own Etherscan with web3.py

Build your own Etherscan with web3.py Video Tutorial: Run it pip3 install -r requirements.txt export FLASK_APP=app export FLASK_ENV=development flask

35 Jan 02, 2023
A stupid obfuscation thing

StupidObfuscation A stupid obfuscation thing How it works The obfuscator takes a string, splits into pieces of one, then, using the table from letter.

Echo 2 May 03, 2022
Contains the code of my learning of Python OOP.

OOP Python This repository contains the code of my learning of Python OOP. All the code: is following PEP 8 ✅ has proper concept illustrations and com

Samyak Jain 2 Jan 15, 2022
Заглушки .NET библиотек для IronPython

Код репозитория основан на ironpython-stubs. Выражаю gtalarico бесконечную благодарность за вклад в развитие сообщества разработчиков скриптов и плаги

12 Nov 23, 2022
my own python useful functions

PythonToolKit Motivation This Repo should help save time for data scientists' daily work regarding the Time Series regression task by providing functi

Kai 2 Oct 01, 2022
ASVspoof 2021 Baseline Systems

ASVspoof 2021 Baseline Systems Baseline systems are grouped by task: Speech Deepfake (DF) Logical Access (LA) Physical Access (PA) Please find more de

91 Dec 28, 2022
Stopmagic gives you the power of creating amazing Stop Motion animations faster and easier than ever before.

Stopmagic gives you the power of creating amazing Stop Motion animations faster and easier than ever before. This project is maintained by Aldrin Mathew.

Aldrin's Art Factory 67 Dec 31, 2022
A few of my adventures with Devito.

Devito-playbox A few of my adventures with Devito. This repository contains a few notebooks and scripts that will lead me in the road of learning this

Átila Saraiva Quintela Soares 1 Feb 08, 2022