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)
BloodCheck enables Red and Blue Teams to manage multiple Neo4j databases and run Cypher queries against a BloodHound dataset.

BloodCheck BloodCheck enables Red and Blue Teams to manage multiple Neo4j databases and run Cypher queries against a BloodHound dataset. Installation

Mr B0b 16 Nov 05, 2021
Make after-work Mending More flexible In Python

Mending Make after-work Mending More flexible In Python A Lite Package focuses on making project's after-post mending pythonic and flexible. Certainly

2 Jun 15, 2022
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

adnane-tebbaa 189 Dec 21, 2022
Install Firefox from Mozilla.org easily, complete with .desktop file creation.

firefox-installer Install Firefox from Mozilla.org easily, complete with .desktop file creation. Dependencies Python 3 Python LXML Debian/Ubuntu: sudo

rany 7 Nov 04, 2022
Step by step development of a vending coffee machine project, including tkinter, sqlite3, simulation, etc.

Step by step development of a vending coffee machine project, including tkinter, sqlite3, simulation, etc.

Nikolaos Avouris 2 Dec 05, 2021
Add-In for Blender to automatically save files when rendering

Autosave - Render: Automatically save .blend, .png and readme.txt files when rendering with Blender Purpose This Blender Add-On provides an easy way t

Volker 9 Aug 10, 2022
A Tandy Color Computer 1, 2, and 3 assembler written in Python

CoCo Assembler and File Utility Table of Contents What is it? Requirements License Installing Assembler Assembler Usage Input File Format Print Symbol

Craig Thomas 16 Nov 03, 2022
A Python program that generates a maze that solves itself using DFS

Maze Generator And Solver Program Purpose: Generates a maze that then solves itself Language: Python and Pygame Algorithm: Randomized DFS / Floodfill

Joshua Liu 1 Jul 25, 2022
A program for calculating the divisor function

DivisorsFunctionCalculator A program for calculating the divisor function A script to find the "Sigma" (divisors function) of any number. To find the

1 Oct 31, 2021
LINUX-AOS (Automatic Optimization System)

LINUX-AOS (Automatic Optimization System)

1 Jul 12, 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
Performance monitoring and testing of OpenStack

Browbeat Browbeat is a performance tuning and analysis tool for OpenStack. Browbeat is free, Open Source software. Analyze and tune your Cloud for opt

cloud-bulldozer 83 Dec 14, 2022
Taxonomy addition for complete trees

TACT: Taxonomic Addition for Complete Trees TACT is a Python app for stochastic polytomy resolution. It uses birth-death-sampling estimators across an

Jonathan Chang 3 Jun 07, 2022
An open source recipe book from the awesome staff of Clinical Genomics

meatballs An open source recipe book from the awesome staff of Clinical Genomics.

Clinical Genomics 2 Dec 07, 2021
A lightweight solution for local Particle development.

neopo A lightweight solution for local Particle development. Features Builds Particle projects locally without any overhead. Compatible with Particle

Nathan Robinson 19 Jan 01, 2023
The official Repository wherein newbies into Open Source can Contribute during the Hacktoberfest 2021

Hacktoberfest 2021 Get Started With your first Contrinution/Pull Request : Fork/Copy the repo by clicking the right most button on top of the page. Go

HacOkars 25 Aug 20, 2022
Union oichecklists For Python

OI Checklist Union Auto-Union user's OI Checklists. Just put your checklist's ID in and it works. How to use it? Put all your OI Checklist IDs (that i

FHVirus 4 Mar 30, 2022
This is a multi-app executor that it used when we have some different task in a our applications and want to run them at the same time

This is a multi-app executor that it used when we have some different task in a our applications and want to run them at the same time. It uses SQLAlchemy for ORM and Alembic for database migrations.

Majid Iranpour 5 Apr 16, 2022
A python script to search for k-uniform Euclidean tilings.

k-uniform-solver A python script to search for k-uniform Euclidean tilings. This project's aim is to replicate and extend the list of k-uniform Euclid

3 Dec 06, 2022
Data derived from the OpenType specification

This package currently provides the opentypespec.tags module, which exports FEATURE_TAGS, SCRIPT_TAGS, LANGUAGE_TAGS and BASELINE_TAGS dictionaries, representing data from the Layout Tag Registry

Simon Cozens 4 Dec 01, 2022