{"id":17050593,"url":"https://github.com/griatch/evscaperoom","last_synced_at":"2025-06-29T18:04:42.386Z","repository":{"id":137629877,"uuid":"186547328","full_name":"Griatch/evscaperoom","owner":"Griatch","description":"A text-based multiplayer 'escape room' in Evennia, for the 2019 game jam","archived":false,"fork":false,"pushed_at":"2021-04-13T21:45:26.000Z","size":318,"stargazers_count":8,"open_issues_count":1,"forks_count":4,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-12T16:47:14.580Z","etag":null,"topics":["escape","evennia","mud","multiplayer","python","text"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Griatch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-05-14T04:55:52.000Z","updated_at":"2023-08-07T13:54:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"99a48789-c6ff-43de-9d18-51f231257302","html_url":"https://github.com/Griatch/evscaperoom","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Griatch/evscaperoom","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Griatch%2Fevscaperoom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Griatch%2Fevscaperoom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Griatch%2Fevscaperoom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Griatch%2Fevscaperoom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Griatch","download_url":"https://codeload.github.com/Griatch/evscaperoom/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Griatch%2Fevscaperoom/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262642957,"owners_count":23341817,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["escape","evennia","mud","multiplayer","python","text"],"created_at":"2024-10-14T09:57:14.673Z","updated_at":"2025-06-29T18:04:42.366Z","avatar_url":"https://github.com/Griatch.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EvscapeRoom\n\nA free single/multiplayer escape-room 'MUD', using Python and [Evennia](https://github.com/evennia/evennia)!\n\nCreated for the *MUD Coders Guild game Jam*, April 14-May 15 2019. The theme for\nthe jam was \"One Room\". This ended up as the winning entry! \n\n- [Evscaperoom Dev blog (part 1)](http://evennia.blogspot.com/2019/05/creating-evscaperoom-part-1.html)\n- [Evscaperoom Dev blog (part 2)](http://evennia.blogspot.com/2019/05/creating-evscaperoom-part-2.html)\n\n\n## Live demo\n\nWhile you can easily set up and run this with your own Evennia install, the Evscaperoom \nis also playable in full on the [official Evennia demo server](https://demo.evennia.com/).\nJust make an account, log in and write `evscaperoom` in the first location!\n\n \u003e Note: The version in the Evennia demo is more up-to-date than the one in this repo since that's the live place\n where people find bugs - and I can't be arsed to set up a git subrepo inside the other repo - I always \n mess those up. So if you really want the latest version with latest bug fixes you are better off looking at\n the code embedded into the demo at https://github.com/evennia/evdemo/tree/master/evdemo/evscaperoom.\n\n# Introduction\n\n![The Jester being jesterly](world/grin_in_the_shadows_by_griatch_art_small.jpg)\n\nThere is a pie-eating contest in town. The tricky village Jester has trapped\nyou - her greatest pie-eating rivals - in her quirky cabin. If you don't get\nout she'll win by default! \n\nEvscaperoom is, as it sounds, an escaperoom in text form. You start locked into\nthe cabin of the Jester and have to figure out how to get out. There is no\ntimer, but surely everyone knows that the greater your pie-eating skills the\nbetter you'll do ...\n\n# Installation \n\n## Short: \n\nThis comes as an Evennia game folder and makes use of Evennia `master` branch (using Python 3.7). \nIf you are an existing Evennia user, that's all the info you need! \n\n## Running through docker\n\n- `git clone https://github.com/Griatch/evscaperoom.git`\n- `cd evscaperoom`\n- `docker run -it --rm -p 4000:4000 -p 4001:4001 -p 4002:4002 -v $PWD:/usr/src/game evennia/evennia:develop`\n\n(If your platform does not have `$PWD` replace with the the path to your\n current dir). You should end up in a shell inside the `evscaperoom` repo (it's mounted\ninto the container)\n\n- `evennia migrate`  (only first time)\n- `evennia start`  (create a superuser. The email can be blank)\n\nYou can now connect your browser to `http://localhost:4001` or your mud client\nto `localhost`, port `4000`. To play and enjoy the game, best is to *not* log\nin as the superuser you created, but to make a new, normal player account.\n\nEnjoy!\n\n## Full installation (non-docker)\n\nYou need the [Evennia](https://github.com/evennia/evennia) engine to run. You need Python3.7 and GIT to\nfetch Evennia. Below are copyable instructions for an apt-able\nLinux (tested on Linux Mint), but you can install on Windows and Mac too, see Evennia's [Getting Started](https://github.com/evennia/evennia/wiki/Getting-Started)\ninstructions where this is explained in more detail (in those instructions you\ndon't need to create the `mygame` folder since this repo replaces that). Note however that this uses the \ndevelop-branch of Evennia which may not be fully stable at all times.\n\n- `sudo apt-get update \u0026\u0026 sudo apt-get install python3.7 python3.7-dev git python-pip python-virtualenv gcc`\n- `mkdir evscaperoom \u0026\u0026 cd evscaperoom`\n- `git clone https://github.com/evennia/evennia.git`\n- `git clone https://github.com/Griatch/evscaperoom.git`\n- `virtualenv --python /usr/bin/python3.7 vienv`\n- `source vienv/bin/activate`\n\nMake sure the last `source` command makes your terminal prompt change to `(vienv)`. This you\nneed to re-run if you start a new terminal later, since we are installing Python stuff into \nthis virtual Python environment.\n\n- `cd evennia \u0026\u0026 git checkout develop \u0026\u0026 cd ..` \n- `pip install -e evennia`\n\nYou should now have switched to Evennia's `develop` branch and installed\nEvennia in the virtualenv. \n\n- `cd evscaperoom`\n- `evennia migrate` (create a superuser when asked, email can be blank)\n- `evennia start`\n\nYou can now browse to http://localhost:4001 to play the game. Or connect your\nmud-client to `localhost`, port `4000`. To play and enjoy the game, best is to\n*not* log in as the superuser you created, but to make a new, normal player\naccount.\n\nEnjoy!\n\n# Playing the game\n\nYou should start by `look`ing around and at objects in the Jester's cabin. Read the\ndescriptions carefully, there may be hints in there! Note also that some things\nmay subtly change over time. \n\nThe `examine \u003cobject\u003e` command allows you to 'focus' on an object. When you do\nyou'll learn actions you could try for the object you are focusing on, such as\nturning it around, read text on it or use it with some other object. Note that\nmore than one player can focus on the same object, so you won't block anyone\nwhen you focus. Focusing on another object or use `examine` again will remove\nfocus.\n\nThe Jester has provided hintberry-pies for if you get stuck. They are very\ntasty and will give you insight. But if you eat too many pies now, how are you\ngoing to be able to best her in the pie-eating contest later ...?\n\n# Technical \n\nThe Jester's cabin is a single Evennia room of a custom typeclass. The game\ncommands are defined on the room itself and thus only work there.  The objects\nhave `at_focus_\u003caction\u003e` hooks, where the name of the hook defines what kind of\naction can be performed when focusing on this object. This moves all logic onto\neach object instead of being in the command.\n\nWhen connecting to the game, the user has the option to join an existing room\n(which may already be in some state of ongoing progress), or may create a fresh\nroom for them to start solving on their own (but anyone may still join them later).\n\nThe room will go through a series of 'states' as the players progress through\nits challenges. These states are describes as modules in .states/ and the \nroom will load and execute the State-object within each module to set up\nand transition between states as the players progress. This allows for isolating\nthe states from each other and will hopefully make it easier to track \nthe logic and (in principle) inject new puzzles later.\n\nOnce no players remain in the room, the room and its state will be wiped.\n\n# Design Philosophy\n\nSome basic premises inspired the design of this.\n\n- You should be able to resolve the room alone. So no puzzles should require the\n  collaboration of multiple players. This is simply because there is no telling\n  if others will actually be online at a given time (or stay online throughout).\n- You should never be held up by the actions/inactions of other players. This\n  is why you cannot pick up anything (no inventory system) but only\n  focus/operate on items. This avoids the annoying case of a player picking up\n  a critical piece of a puzzle and then logging off.\n- A room's state changes for everyone at once. My first idea was to have a given \n  room have different states depending on who looked (so a chest could be open\n  and closed to two different players at the same time). But not only does this\n  add a lot of extra complexity, it also defeats the purpose of having multiple\n  players. This way people can help each other and collaborate like in a 'real'\n  escape room. For people that want to do it all themselves I instead made it\n  easy to start \"fresh\" rooms for them to take on.\n\nAll other design decisions flowed from these. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgriatch%2Fevscaperoom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgriatch%2Fevscaperoom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgriatch%2Fevscaperoom/lists"}