Skip to content

crowdgames/sturgeon-pub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sturgeon

Sturgeon is a system for constraint-based level generation.

Setup

  • You will need Python 3.12 and pipenv on your system. To install pipenv, if needed:

    pip3 install pipenv
    
  • Pipenv is used to set up an environment. This only needs to be done once (in any root folder for this project):

    • Either set up the environment with only the default PySAT-based solvers:

      pipenv install --categories solvers-minimal
      
    • Or, set up the environment with all solvers:

      pipenv install --categories solvers-all
      
  • Any commands will need to be run in this environment. Each time a shell is needed, start a shell in the environment with:

    pipenv shell
    

Example Usage

For example usage (within pipenv), see:

  • examples_basic.sh - basic use with tile-based levels
  • examples_custom.sh - custom contraints, such as tile counts, level repair, and level extension
  • examples_junction.sh - junctions for adding multiple reachable and unreachable paths
  • examples_blend.sh - blending different games, using tiles and reachabiity from multiple games in one level
  • examples_mkiii.sh - MKIII tile rewrite rules for generating playthroughs
  • examples_graph.sh - graph generation
  • examples_mkiv.sh - MKIV graph label rewrite rules for generating playthroughs
  • examples_explore.sh - setup and use of level explorer application
  • examples_file.sh - file conversion utilities
  • examples_external.sh - use of external solver executables

Programs

Tiles:

  • input2tile.py - get tileset and tile levels from example levels, produce tile file
  • tile2scheme.py - get patterns and counts from tile file, produce scheme file
  • scheme2output.py - generate levels using a scheme file

Tile Utilities:

  • level2repath.py - recompute path(s) through a level
  • tag2game.py - produce a game id file based on tag file and scheme
  • name2json.py - produce a json description of named infomration, such as reachability template
  • file2file.py - convert between a few different formats, usually between pickle and json

Applications:

  • app_pathed.py - path editor, draw paths and generate levels interactively, needs scheme file
  • app_explorer.py - level explorer, explore a datast of levels, needs explorer file

Level Explorer:

  • levels2explore.py - produce an explore file dataset from given levels
  • explore2summary.py - display a summary of an explore file

Graphs:

  • graph2gdesc.py - get graph description from graphs
  • gdesc2graph.py - generate graphs based on graph description

Graph Utilities:

  • gdesc2summary.py - display a summary of a graph description file
  • dot2graph.py - convert dot file to graph file
  • graph2dot.py - convert graph file to dot file
  • pdb2graph.py - convert pdb to graph file
  • graph2pdb.py - convert graph file to pdb
  • tile2graph.py - convert tile file to graph file
  • mkiv2dot.py - create dot file of MKIV rules
  • dot2pdf.py - convert potentially multiple dot files to single pdf

File Types

  • .lvl, .tag, .game - text files containing text level, tags, or game ids, respectively; may contain metadata, sometimes used interchangeably
  • .tileset - a tileset
  • .tile - a tileset and levels
  • .scheme - information needed to generate a level, such as tileset and patterns
  • .result - a generated level and related metadata
  • .tlvl - tile level in json
  • .explore - dataset of levels for the level explorer app
  • .gr - a graph
  • .gd - graph description, such as patterns extracted from an example

Related Publications

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published