{"id":43216355,"url":"https://github.com/skytreader/wherewholf","last_synced_at":"2026-02-01T08:09:05.706Z","repository":{"id":13506646,"uuid":"16197530","full_name":"skytreader/wherewholf","owner":"skytreader","description":"A game of Wherewholf!","archived":false,"fork":false,"pushed_at":"2024-02-27T17:48:40.000Z","size":562,"stargazers_count":1,"open_issues_count":5,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-04-16T18:22:53.872Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/skytreader.png","metadata":{"files":{"readme":"readme.markdown","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2014-01-24T07:04:06.000Z","updated_at":"2022-08-12T19:59:30.000Z","dependencies_parsed_at":"2024-02-15T22:35:57.715Z","dependency_job_id":null,"html_url":"https://github.com/skytreader/wherewholf","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/skytreader/wherewholf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skytreader%2Fwherewholf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skytreader%2Fwherewholf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skytreader%2Fwherewholf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skytreader%2Fwherewholf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/skytreader","download_url":"https://codeload.github.com/skytreader/wherewholf/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skytreader%2Fwherewholf/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28973256,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T06:46:42.625Z","status":"ssl_error","status_checked_at":"2026-02-01T06:44:56.173Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2026-02-01T08:09:05.108Z","updated_at":"2026-02-01T08:09:05.696Z","avatar_url":"https://github.com/skytreader.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WhereWholf!\n\nLibrary to simulate a game of [Werewolf](https://en.wikipedia.org/wiki/Werewolf_(social_deduction_game)).\nWorks like a modified variant of [Ultimate](https://beziergames.com/products/ultimate-werewolf-deluxe-edition).\n\nThe goal is that this can be used to write a game with actual human \nparticipation (...and, eventually, pass the Turing Test, totally). But we are\nnot there yet.\n\n## Design Decisions\n\nWerewolf is a game that relies on social manipulation and trickery. Players lie\nall the time and that is part of the fun. The code is designed to reflect the\ndeceptive nature of this game: as much as possible, we try to prevent `Player`\nobjects from being able to introspect\u003csup\u003e1\u003c/sup\u003e other players.\n\nThis might result to un-Pythonic code. Wherever this is done, the accompanying\ndocumentation will make note of this decision.\n\n\u003csup\u003e1\u003c/sup\u003e In as much as we can do so in Python. Ultimately, classes might be able to\nread memory segments it should not have access to, should this bug exist in the\nPython interpreter. See also: Python's \"We are all adults here\" philosophy.\n\n### Game Entities\n\nFor a player, a Wherewholf game is divided into two phases: night time and day\ntime.\n\n**Night time** actions is role-dependent and facilitated largely by the\nmoderator. Most notably, during this phase, the player can learn things about\nthe game (e.g., other players' roles).\n\n**Day time** is further divided into phases and each player has a set of\nattributes that could influence their behavior during these phases:\n\n1. Nomination phase. Players accuse each other of being a werewolf. A player's\n   `aggression` attribute dictates how likely he is to nominate others.\n2. Discussion phase. In a real-life game, this is where players argue over the\n   nominations, coordinating their votes on who to lynch. In this simulation,\n   each nominated player can advocate for themselves, the efficacy of this is\n   dictated by the `pesuasiveness` attribute (DnD players might also call this\n   _charisma_).\n3. Votation phase. The player with the most votes gets lynched. Players who made\n   a nomination in the first phase will automatically vote for who they\n   nominated. In turn, players who were nominated will _never\u003csup\u003e1\u003c/sup\u003e_ vote\n   for them. For everyone else, their `suggestibility` attribute will dictate\n   how likely will they vote to lynch a nominated player.\n\nAt the end of the day time phase, the role of the lynched player is revealed;\nthis is information gained by all the players in the game.\n\n\u003csup\u003e1\u003c/sup\u003e This might change upon introduction of the Tanner role.\n\n## Running\n\nA `requirements.txt` file is included, listing all Python dependencies. This\nshould run with a vanilla Python 3.7 interpreter but for development, the\ndependencies are conveniences you'd want to have.\n\nTo run,\n\n```\npython -m src.main\n```\n\nYou can set the following environment variables too, mostly for debugging:\n\n- `WHEREWHOLF_MISC_LOG` - control the log output of computations that are not\nstrictly part of the main game loop.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskytreader%2Fwherewholf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fskytreader%2Fwherewholf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskytreader%2Fwherewholf/lists"}