Giter Site home page Giter Site logo

myriad-worlds's Introduction

Myriad Worlds Logo

Myriad Worlds

About

This project is an experiment in generating worlds, stories, and interactive fiction games. It attempts to do all this with a heritage of the classic text-based adventure games -- as well as continuously drawing on them for future inspiration. More than a game engine to power text adventures, this project aims to be a framework for generating worlds -- and stories within those worlds -- that are compelling, dynamic, and unpredictable.

History

This code is based on the adventure engine that Paul McGuire, the author of PyParsing, wrote and then summarized for a PyCon 2006 talk. The first revision in the myriad-worlds repository is his work, 100%.

Vision

Each subsequent revision since then has aimed to expand Paul's original work into something that could support an experiment in authoring interactive fiction adventure games. The initial thrust of this experimentation was:

  • object- or connection-based storyline generation (as opposed to room-based) but this quickly expanded into exploring the following:
    • ASCII maps generated from textual descriptions
    • procedurally generated floor plans, city plans, landscapes, etc.
    • how to abstract a world and the narration of its contents in a way amenable to generating new stories from rearranged content

Ultimately, the intent of this project is to be able to create interesting games that are infinitely replayable, due to the variation that is possible.

Install

Myriad Worlds uses setuptools, and is thus pip-friendly (and that's the best way to install the software). The installer automatically downloads and installs the dependencies, so you don't have to. In short, however, it depends upon DreamSSH which is a custom SSH server created with the Twisted networking framework (Python).

If you like to keep a tight control over what gets installed into your system Python packages, we'd encourage you to use virtualenv to install and run Myriad Worlds games.

Usage

There are a couple example games that come with Myriad Worlds, and those that work use the Twisted plugin infrastructure. The plugin setup allows for games to be run in one of several modes:

  1. locally (no server starts)
  2. single player (a server starts, but there are no shared sessions)
  3. multiplayer (a server starts with shared session for all players)

Running a Local Instance

Here's how you start up a local instance:

$ twistd myriad

The default is to run a local game (not a networked game) and to use the "House Adventure 2" as the game. As such, the above command is equiavalent to:

$ twistd myriad --game-type=local \
    --game-dir=./examples/house-adventure-2

To run a differnt came, point to a different game dir:

$ twistd myriad --game-dir=./examples/house-adventure

Running a Server

First, you'll need to generate SSH keys for the game server:

$ twistd myriad keygen

With those in place, you're ready to start the game server:

$ twistd myriad --gametype=singleplayer

That will run the game daemon, and now you can log into the game:

$ twistd myriad shell

Project Management

Bugs are tracked using Launchpad:

Development plans, if any exist, are managed using Launchpad blueprints:

Development tasks are managed using a correlation between blueprints and the issue tracker. Each blueprint has a list of associated "bugs."

Until the projects and tasks get moved into Launchpad, the current project management tool is the TODO file.

Revision History

TBD

myriad-worlds's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

myriad-worlds's Issues

Game crashed when looking in chest

Go n -> n-> w
open treasure chest
look chest
And then game crashes with this error:

:>> look chest
Traceback (most recent call last):
  File "/Users/oubiwann/lab/python/myriad-worlds/.venv/bin/twistd", line 14, in <module>
    run()
  File "/Users/oubiwann/lab/python/myriad-worlds/.venv/lib/python2.7/site-packages/twisted/scripts/twistd.py", line 27, in run
    app.run(runApp, ServerOptions)
  File "/Users/oubiwann/lab/python/myriad-worlds/.venv/lib/python2.7/site-packages/twisted/application/app.py", line 647, in run
    config.parseOptions()
  File "/Users/oubiwann/lab/python/myriad-worlds/.venv/lib/python2.7/site-packages/twisted/application/app.py", line 614, in parseOptions
    usage.Options.parseOptions(self, options)
  File "/Users/oubiwann/lab/python/myriad-worlds/.venv/lib/python2.7/site-packages/twisted/python/usage.py", line 266, in parseOptions
    self.subOptions.parseOptions(rest)
  File "/Users/oubiwann/lab/python/myriad-worlds/myriad/game/service.py", line 84, in parseOptions
    runner.runLocal()
  File "/Users/oubiwann/lab/python/myriad-worlds/myriad/game/runner.py", line 41, in runLocal
    game.start()
  File "/Users/oubiwann/lab/python/myriad-worlds/myriad/game/runner.py", line 21, in start
    self.mainLoop()
  File "/Users/oubiwann/lab/python/myriad-worlds/myriad/game/runner.py", line 32, in mainLoop
    self.parseCommand(raw_input(prompt))
  File "/Users/oubiwann/lab/python/myriad-worlds/myriad/game/base.py", line 45, in parseCommand
    return cmd.command(self.player)
AttributeError: 'str' object has no attribute 'command'
make: *** [run] Error 1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.