Metadata-Version: 2.1
Name: exploration
Version: 0.1.1
Summary: Tool for reading, formatting, and manipulating exploration graphs, which are graphs (or graph-sequences) that describe exploration of a game space, principally designed with Metroidvania games in mind.
Home-page: https://cs.wellesley.edu/~pmwh/mvmap/egtool/docs/exploration
Author: Peter Mawhorter
Author-email: pmawhort@wellesley.edu
License: BSD 3-Clause License
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Natural Language :: English
Classifier: Topic :: Games/Entertainment
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Scientific/Engineering :: Visualization
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Provides-Extra: test
Requires-Dist: pytest ; extra == 'test'

# Exploration

## Overview

This program provides data types for representing the exploration of
spaces that can defined (or abstracted) in terms of discrete decisions,
such as videogame levels with multiple rooms and also other things like
conversation trees or a city block grid.

It represents a `Map` as a multi-di-graph, indicating the connection(s)
between decisions, which can include information about prerequisites for
transitions as well as effects a transition might have on the world.
There is also a convention for representing unexplored regions using
specially-named nodes of the graph. An `Exploration` is a sequence of
`Map`s, along with a sequence of decisions indicating where the explorer
was at each step, a sequence of transitions indicating which transition
was taken at each step, and a sequence of states indicating extra state
at each step. These representations were developed with Metroidvania
games in mind.

Core capabilities include:

- Reasoning about reachability modulo transition requirements in terms of
  powers that must be possessed and/or tokens that must be spent for a
  transition. TODO
- The ability to represent fairly sophisticated game logic in the `Map`,
  and even construct playable maps. Game logic that can't be captured
  this way can still be represented through making custom changes to maps
  between exploration steps. TODO
- Creating maps and explorations from various text formats, including
  exploration journal formats. TODO

## Dependencies:

- Python version 3.7+
- `networkx` For underlying graph structures.
- `pytest` for testing, install with `[test]` option to get it automatically.

## Installing

Just run `pip install exploration`. The `egtool` script should be
installed along with the module.

You can then run `python -m exploration.tests` to run tests.

## Getting Started:

The `egtool` script provides a command-line interface to core
functionality. The `exploration.main` module provides equivalent entry
points from Python. `exploration.core` provides the main types and
explains how they fit together.

## Plans

TODO

## Changelog

- v0.1.1 Still pre-alpha as it's in the process of being re-architected a
    bit, but some core functionality is present if rough (e.g.,
    `core.DecisionGraph` and `core.Exploration`).
- v0.1 Initial pre-alpha upload.

