{"id":16668638,"url":"https://github.com/csurfer/escaperoom","last_synced_at":"2025-04-09T19:33:04.394Z","repository":{"id":48891188,"uuid":"338936634","full_name":"csurfer/escaperoom","owner":"csurfer","description":"Command line utility to generate/host a fully functioning virtual escape room from a JSON config.","archived":false,"fork":false,"pushed_at":"2021-07-06T21:21:36.000Z","size":40,"stargazers_count":11,"open_issues_count":2,"forks_count":5,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-23T21:23:42.916Z","etag":null,"topics":["commandline-tool","entertainment","escape-room","json"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/csurfer.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-02-15T01:01:32.000Z","updated_at":"2024-11-22T21:31:21.000Z","dependencies_parsed_at":"2022-09-26T21:31:08.825Z","dependency_job_id":null,"html_url":"https://github.com/csurfer/escaperoom","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csurfer%2Fescaperoom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csurfer%2Fescaperoom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csurfer%2Fescaperoom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/csurfer%2Fescaperoom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/csurfer","download_url":"https://codeload.github.com/csurfer/escaperoom/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247934842,"owners_count":21020729,"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":["commandline-tool","entertainment","escape-room","json"],"created_at":"2024-10-12T11:26:16.089Z","updated_at":"2025-04-09T19:33:04.373Z","avatar_url":"https://github.com/csurfer.png","language":"Python","readme":"escaperoom\n==========\n\n|pypiv| |pyv| |Licence|\n\nEscape rooms are a game form where the objective is to complete the mission and \"escape\"\nfrom a locked room. A successful escape involves finding hidden clues and solving puzzles\nspread through out the room in a pre-determined amount of time.\n\nVirtual escape rooms, take this experience and put it online for groups of people not\ngeographically co-located to still enjoy it as a group. These have become popular\nespecially now given the pandemic and stay at home orders.\n\nThis package provides a simple command to take a escape room configuration and host it\nas a virtual experience for you and your family/friends to enjoy.\n\nFeatures\n--------\n\n* Simple CLI interface.\n\n* No complicated setup.\n\n* No coding knowledge required.\n\n* Design your own escape room experience for your friends and family to enjoy!\n\nDemo\n----\n\nUsing `sherlockcampaign`_ generates an EscapeRoom as shown in the demo.\n\n|Demo|\n\nSetup\n-----\n\nUsing pip\n~~~~~~~~~\n\n.. code:: bash\n\n    pip install escaperoom\n\nDirectly from the repository\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code:: bash\n\n    git clone https://github.com/csurfer/escaperoom.git\n    python escaperoom/setup.py install\n\nUsage\n-----\n\nPre-requisites:\n\n1. Have your escaperoom configuration ready. Something along the lines of `examplecampaigns`_.\n\nHelp text\n~~~~~~~~~\n\n.. code:: bash\n\n    escaperoom --help\n\nValidation\n~~~~~~~~~~\n\nJSON file provided is validated against the `jsonschema`_ file for type and key correctness.\n\n.. code:: bash\n\n    escaperoom validate \u003cpath_to_json_file\u003e\n\nRunning/Hosting the escape room\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. code:: bash\n\n    # To run with default host and port.\n    escaperoom run \u003cpath_to_json_file\u003e\n    # To run with specific host and port.\n    escaperoom run \u003cpath_to_json_file\u003e --host \u003ccustomhost\u003e --port \u003ccustomport\u003e\n\nConfiguration\n-------------\n\nThis is the only detail you need to worry about. A JSON file in a specific format contains\ndetails of the escape room you want to host and this section throws light on the different\ncomponents of the configuration file.\n\nExample configuration file:\n\n.. code:: json\n\n    {\n        \"story\": {\n            \"title\": \"Sample title.\",\n            \"text\": \"Sample text.\",\n            \"images\": [\"\u003cstory image1\u003e\", \"\u003cstory image2\u003e\"]\n        },\n        \"puzzles\": [\n            {\n                \"title\": \"Puzzle 1 title\",\n                \"text\": \"Puzzle 1 text\",\n                \"images\": [\"\u003cpuzzle1 image1\u003e\", \"\u003cpuzzle1 image2\u003e\"],\n                \"hints\": [\"\u003cpuzzle1 hint1\u003e\", \"\u003cpuzzle1 hint2\u003e\"],\n                \"answer\": \"\u003cpuzzle1 answer\u003e\"\n            },\n            {\n                \"title\": \"Puzzle 2 title\",\n                \"text\": \"Puzzle 2 text\",\n                \"images\": [\"\u003cpuzzle2 image1\u003e\", \"\u003cpuzzle2 image2\u003e\"],\n                \"hints\": [\"\u003cpuzzle2 hint1\u003e\", \"\u003cpuzzle2 hint2\u003e\"],\n                \"answer\": \"\u003cpuzzle2 answer\u003e\"\n            },\n            .\n            .\n            .\n            .\n        ]\n    }\n\nEach configuration file has two main components.\n\nstory\n  (required) A narrative to start your experience with. A tale of mystery and thrill.\n\npuzzles\n  (required) List of puzzles designed by you which is what your friends would solve during the event.\n\nstory\n~~~~~\n\nStory itself has following components.\n\ntitle\n  (required) An interesting title to your story.\n\ntext\n  (required) Narrative of the story or text of the story.\n\nimages\n  (optional) Set of images you might want to show to have a dramatic effect. NOTE: Each image should either\n  be a URL or absolute path to an image stored on your device. NOTE: The key itself is not optional but the\n  values are i,e campaigns should have this key for story but the values can be left empty as an empty list\n  \"[]\"\n\npuzzles\n~~~~~~~\n\nEach puzzle in the list of puzzles has the following components.\n\ntitle\n  (required) An interesting title to your story.\n\ntext\n  (required) Narrative of the story or text of the story.\n\nimages\n  (optional) Set of images you might want to show to have a dramatic effect. NOTE: Each image should either\n  be a URL or absolute path to an image stored on your device. NOTE: The key itself is not optional but the\n  values are i,e campaigns should have this key for story but the values can be left empty as an empty list\n  \"[]\"\n\nhints\n  (optional) Set of hints you might want to give to your friends to help them understand/solve the\n  puzzles you have set. NOTE: The key itself is not optional but the values are i,e campaigns should have\n  this key for story but the values can be left empty as an empty list \"[]\"\n\nanswer\n  (requied) Answer to your puzzle. Keep it as a word or a number to avoid confusions.\n\nJSONSchema Validation\n~~~~~~~~~~~~~~~~~~~~~\n\nYou can find some example campaigns in `examplecampaigns`_. We use https://python-jsonschema.readthedocs.io/en/stable/\nto validate the correctness of the config file. The schema we validate it against can be found at `jsonschema`_.\n\n\nContributing\n------------\n\nBug Reports and Feature Requests\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPlease use `issue tracker`_ for reporting bugs or feature requests.\n\nDevelopment\n~~~~~~~~~~~\n\nPull requests are most welcome. New and fun campaigns are always eagerly awaited.\n\n\nBuy the developer a cup of coffee!\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIf you found this package fun/useful you can buy me a cup of coffee using\n\n|Donate|\n\n.. |Donate| image:: https://www.paypalobjects.com/webstatic/en_US/i/btn/png/silver-pill-paypal-44px.png\n   :target: https://www.paypal.com/cgi-bin/webscr?cmd=_donations\u0026business=3BSBW7D45C4YN\u0026lc=US\u0026currency_code=USD\u0026bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHosted\n\n.. _issue tracker: https://github.com/csurfer/escaperoom/issues\n\n.. |Licence| image:: https://img.shields.io/badge/license-MIT-blue.svg\n   :target: https://raw.githubusercontent.com/csurfer/escaperoom/master/LICENSE\n\n.. |pypiv| image:: https://img.shields.io/pypi/v/escaperoom.svg\n   :target: https://pypi.python.org/pypi/escaperoom\n\n.. |pyv| image:: https://img.shields.io/pypi/pyversions/escaperoom.svg\n   :target: https://pypi.python.org/pypi/escaperoom\n\n.. _examplecampaigns: https://github.com/csurfer/escaperoom/tree/main/escaperoom/example_campaigns\n\n.. _sherlockcampaign: https://github.com/csurfer/escaperoom/tree/main/escaperoom/example_campaigns/sherlock.json\n\n.. _jsonschema: https://github.com/csurfer/escaperoom/blob/main/escaperoom/config.schema\n\n.. |Demo| image:: https://i.imgur.com/g3R7TFY.gif\n","funding_links":["https://www.paypal.com/cgi-bin/webscr?cmd=_donations\u0026business=3BSBW7D45C4YN\u0026lc=US\u0026currency_code=USD\u0026bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHosted"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcsurfer%2Fescaperoom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcsurfer%2Fescaperoom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcsurfer%2Fescaperoom/lists"}