{
  "format": "dataset-manifest/1",
  "slug": "interactive-mystery-game",
  "version": 2,
  "seed": "interactive-mystery-game:1",
  "spec": {
    "format": "dataset/1",
    "slug": "interactive-mystery-game",
    "name": "Mystery Game Interactions",
    "tagline": "Players, puzzles, clues, and locations with interactions and achievements from a mystery game.",
    "description": "Players navigate through interactive mystery games, solving intricate puzzles and piecing together clues to unravel captivating stories. Each player's journey is tracked as they move between various locations, collecting unique items and interacting with challenges along the way. The interaction between players and puzzles is crucial, as it reflects their strategies and engagement levels, revealing how different players approach the same mysteries. Players earn achievements based on their performance, yet only a minority manage to unlock all available hints, showcasing varied difficulty levels and problem-solving techniques employed within the game.\n\nThe dataset comprises several interconnected tables that paint a detailed picture of player interactions. The 'players' table records individual player profiles, capturing their unique identifiers and associated achievements. The 'puzzles' table lists the various challenges present in the game, each with specific attributes such as difficulty and point value. The 'clues' table contains hints that players can find or unlock, often tied to specific puzzles. Locations where players can explore are cataloged in the 'locations' table, detailing where each puzzle and clue is found. Finally, the 'player_puzzle_interactions' table serves as the bridge, mapping which players engaged with which puzzles, along with metrics on completion time and hints used.\n\nThis dataset is particularly useful for analyzing player behavior, determining which puzzles are more engaging, and understanding how clues influence the solving process. You can explore how quickly players solve puzzles, the effectiveness of clues, and the overall flow of gameplay across different locations. Keep in mind that the dataset is synthetic, constructed to provide a realistic environment for developers and analysts to practice their skills in data analysis and game development.",
    "domain": "gaming",
    "shape": "graph-edges",
    "useCases": [
      "sql-practice",
      "teaching"
    ],
    "keywords": [
      "gaming",
      "mystery",
      "puzzles",
      "players",
      "clues",
      "achievements",
      "interactions",
      "locations"
    ],
    "locale": "en",
    "license": "CC0-1.0",
    "version": 1,
    "tables": {
      "players": {
        "description": "This table holds information about players who participate in the game. Each player has a unique identifier and various attributes like name and total achievements.",
        "rows": 200,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each player."
          },
          "full_name": {
            "kind": "fullName",
            "description": "The player's full name."
          },
          "email": {
            "kind": "email",
            "from": "full_name",
            "description": "The player's email address."
          },
          "total_achievements": {
            "kind": "int",
            "min": 0,
            "max": 10,
            "description": "Total achievements unlocked by the player.",
            "nullable": true
          }
        }
      },
      "puzzles": {
        "description": "This table contains all puzzles available in the game, including their difficulty levels and the time taken by players to solve them.",
        "rows": 100,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each puzzle."
          },
          "title": {
            "kind": "title",
            "description": "The title of the puzzle.",
            "pool": [
              "Mystery",
              "Enigma",
              "Riddle",
              "Challenge",
              "Conundrum",
              "Labyrinth",
              "Puzzle",
              "Test",
              "Secret",
              "Code",
              "Clue",
              "Trial",
              "Quest",
              "Discovery",
              "Journey",
              "Saga",
              "Expedition",
              "Adventure",
              "Search",
              "Investigation",
              "Exploration"
            ],
            "min": 1,
            "max": 3
          },
          "difficulty": {
            "kind": "enum",
            "values": [
              "easy",
              "medium",
              "hard"
            ],
            "description": "Difficulty level of the puzzle.",
            "weights": [
              6,
              3,
              1
            ]
          },
          "average_time": {
            "kind": "int",
            "min": 1,
            "max": 120,
            "description": "Average time taken to solve the puzzle in minutes.",
            "nullable": true,
            "when": {
              "column": "difficulty",
              "in": [
                "easy",
                "medium"
              ]
            },
            "distribution": "normal"
          }
        }
      },
      "clues": {
        "description": "This table catalogs clues that players can discover during their gameplay. Each clue is linked to a specific puzzle.",
        "rows": 300,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each clue."
          },
          "description": {
            "kind": "sentence",
            "description": "Description of the clue.",
            "nullable": true
          },
          "puzzle_id": {
            "kind": "fk",
            "ref": "puzzles.id",
            "description": "The puzzle that this clue is associated with."
          }
        }
      },
      "locations": {
        "description": "This table provides details about different locations within the game where players can navigate and find puzzles and clues.",
        "rows": 50,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each location."
          },
          "name": {
            "kind": "words",
            "description": "The name of the location.",
            "pool": [
              "forest",
              "castle",
              "cave",
              "village",
              "ruins",
              "dungeon",
              "temple",
              "mountain",
              "lake",
              "swamp",
              "tower",
              "crypt",
              "oasis",
              "road",
              "bridge",
              "valley",
              "island",
              "fortress",
              "canyon",
              "glade",
              "marsh"
            ],
            "min": 1,
            "max": 3
          },
          "description": {
            "kind": "sentence",
            "description": "A brief description of what can be found in this location.",
            "nullable": true
          }
        }
      },
      "player_puzzle_interactions": {
        "description": "This table records each instance of player interactions with puzzles, including the time taken to solve them and their success status.",
        "rows": 500,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each interaction."
          },
          "player_id": {
            "kind": "fk",
            "ref": "players.id",
            "description": "The player who interacted with the puzzle."
          },
          "puzzle_id": {
            "kind": "fk",
            "ref": "puzzles.id",
            "description": "The puzzle that was interacted with."
          },
          "time_taken": {
            "kind": "int",
            "min": 1,
            "max": 120,
            "description": "Time taken to solve the puzzle in minutes.",
            "distribution": "normal"
          },
          "success": {
            "kind": "bool",
            "trueRate": 0.75,
            "description": "Indicates whether the player successfully solved the puzzle."
          }
        }
      }
    },
    "structure": "multi-table",
    "traits": [
      "categorical",
      "timestamped",
      "nullable"
    ],
    "analysisQuestions": [
      "What is the average time taken to solve puzzles by players?",
      "How many clues does each puzzle have and which are the most challenging?",
      "Which locations are most frequently visited by players?",
      "What percentage of players unlock all achievements?",
      "How does puzzle difficulty affect the success rate of players?"
    ],
    "suggestedQueries": [
      {
        "title": "Get all puzzles solved by each player",
        "sql": "SELECT players.full_name, puzzles.title FROM player_puzzle_interactions JOIN players ON player_puzzle_interactions.player_id = players.id JOIN puzzles ON player_puzzle_interactions.puzzle_id = puzzles.id;",
        "dialect": "postgres"
      },
      {
        "title": "Average time taken by difficulty level",
        "sql": "SELECT puzzles.difficulty, AVG(player_puzzle_interactions.time_taken) AS average_time FROM player_puzzle_interactions JOIN puzzles ON player_puzzle_interactions.puzzle_id = puzzles.id GROUP BY puzzles.difficulty;",
        "dialect": "postgres"
      },
      {
        "title": "Count of clues per puzzle",
        "sql": "SELECT puzzles.title, COUNT(clues.id) AS clue_count FROM puzzles LEFT JOIN clues ON puzzles.id = clues.puzzle_id GROUP BY puzzles.title;",
        "dialect": "postgres"
      },
      {
        "title": "Player success rates across puzzles",
        "sql": "SELECT puzzles.title, AVG(player_puzzle_interactions.success::int) AS success_rate FROM player_puzzle_interactions JOIN puzzles ON player_puzzle_interactions.puzzle_id = puzzles.id GROUP BY puzzles.title;",
        "dialect": "postgres"
      }
    ],
    "usageScenarios": [
      {
        "title": "Game Designer Analysis",
        "body": "Game designers can use this dataset to analyze player interactions with puzzles and clues. By understanding which puzzles are frequently solved or left unsolved, designers can adjust difficulty levels and improve player engagement. The data can also help identify which clues are effective in guiding players through the game."
      },
      {
        "title": "Educational Tool for SQL",
        "body": "Instructors can leverage this dataset in SQL courses to teach students about relational databases and complex queries. The diverse tables and relationships offer a practical example for students to practice joins, aggregates, and subqueries, enhancing their understanding of data manipulation."
      },
      {
        "title": "Player Behavior Research",
        "body": "Researchers interested in player behavior can utilize this dataset to study trends in gameplay. Analyzing the average time taken to solve puzzles and the success rates can reveal insights into player engagement and strategy, helping to refine game design and enhance player experience."
      },
      {
        "title": "Achievement Tracking",
        "body": "This dataset provides a foundation for tracking player achievements and performance. Game analysts can explore which players unlock all achievements and correlate this data with the time spent on puzzles, providing valuable insights into player dedication and skill level."
      }
    ]
  },
  "counts": {
    "locations": 50,
    "players": 200,
    "puzzles": 100,
    "clues": 300,
    "player_puzzle_interactions": 500
  },
  "stats": {
    "players": {
      "rows": 200,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "full_name": {
          "nulls": 0,
          "distinct": 197,
          "min": "Alice Hassan",
          "max": "Zoe Smith"
        },
        "email": {
          "nulls": 0,
          "distinct": 199
        },
        "total_achievements": {
          "nulls": 16,
          "distinct": 11,
          "min": 0,
          "max": 10
        }
      }
    },
    "puzzles": {
      "rows": 100,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 100,
          "min": 1,
          "max": 100
        },
        "title": {
          "nulls": 0,
          "distinct": 86
        },
        "difficulty": {
          "nulls": 0,
          "distinct": 3,
          "min": "easy",
          "max": "medium"
        },
        "average_time": {
          "nulls": 13,
          "distinct": 50,
          "min": 16,
          "max": 101
        }
      }
    },
    "clues": {
      "rows": 300,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 300,
          "min": 1,
          "max": 300
        },
        "description": {
          "nulls": 25,
          "distinct": 273
        },
        "puzzle_id": {
          "nulls": 0,
          "distinct": 97,
          "min": 1,
          "max": 100
        }
      }
    },
    "locations": {
      "rows": 50,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 50,
          "min": 1,
          "max": 50
        },
        "name": {
          "nulls": 0,
          "distinct": 44
        },
        "description": {
          "nulls": 3,
          "distinct": 47
        }
      }
    },
    "player_puzzle_interactions": {
      "rows": 500,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 500,
          "min": 1,
          "max": 500
        },
        "player_id": {
          "nulls": 0,
          "distinct": 188,
          "min": 1,
          "max": 200
        },
        "puzzle_id": {
          "nulls": 0,
          "distinct": 99,
          "min": 1,
          "max": 100
        },
        "time_taken": {
          "nulls": 0,
          "distinct": 86,
          "min": 12,
          "max": 106
        },
        "success": {
          "nulls": 0,
          "distinct": 2,
          "min": "false",
          "max": "true"
        }
      }
    }
  },
  "artifacts": [
    {
      "file": "csv/locations.csv",
      "format": "csv",
      "table": "locations",
      "key": "datasets/interactive-mystery-game/v2/csv/locations.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/interactive-mystery-game/v2/csv/locations.csv",
      "bytes": 3543,
      "sha256": "1f8321af1d06e55c3b5880d866ff3cc12089bb661beab4dde6e8d14994a1cf5b",
      "rows": 50,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/players.csv",
      "format": "csv",
      "table": "players",
      "key": "datasets/interactive-mystery-game/v2/csv/players.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/interactive-mystery-game/v2/csv/players.csv",
      "bytes": 8534,
      "sha256": "057dbf398570d339f4ea592186d55335bb2685a44ddf751850974709c0388905",
      "rows": 200,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/puzzles.csv",
      "format": "csv",
      "table": "puzzles",
      "key": "datasets/interactive-mystery-game/v2/csv/puzzles.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/interactive-mystery-game/v2/csv/puzzles.csv",
      "bytes": 2943,
      "sha256": "2503f2e75baf5bf1562a230eb5c2915f1527021d985d5d8b6b8c5839ec3dfaac",
      "rows": 100,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/clues.csv",
      "format": "csv",
      "table": "clues",
      "key": "datasets/interactive-mystery-game/v2/csv/clues.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/interactive-mystery-game/v2/csv/clues.csv",
      "bytes": 17880,
      "sha256": "aa599ff0682d8ba6ce713c4879bdf529b6fc43c3f0adda5097bedd7538eff21f",
      "rows": 300,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/player_puzzle_interactions.csv",
      "format": "csv",
      "table": "player_puzzle_interactions",
      "key": "datasets/interactive-mystery-game/v2/csv/player_puzzle_interactions.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/interactive-mystery-game/v2/csv/player_puzzle_interactions.csv",
      "bytes": 9778,
      "sha256": "cda3a6517e0954de798a1d4f7c016da274744a001fca0bb60d43b0e55a97cd2f",
      "rows": 500,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "interactive-mystery-game.json",
      "format": "json",
      "table": null,
      "key": "datasets/interactive-mystery-game/v2/interactive-mystery-game.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/interactive-mystery-game/v2/interactive-mystery-game.json",
      "bytes": 145238,
      "sha256": "0c541b1923706cdc4934d44628698694ca21b98698c8d9fd4c24b49e31912b65",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/interactive-mystery-game/v2/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/interactive-mystery-game/v2/sql/postgres.sql",
      "bytes": 57884,
      "sha256": "0003eec7a70ae82834f7d88fd7c43ef2103fb2ef9669c5f5396732380b9bf202",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/interactive-mystery-game/v2/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/interactive-mystery-game/v2/sql/mysql.sql",
      "bytes": 55669,
      "sha256": "794475f0833dc1eaa7e38c508b5fa4b4ab9cc49a290b28eceac26a65580806f6",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/interactive-mystery-game/v2/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/interactive-mystery-game/v2/sql/mssql.sql",
      "bytes": 56990,
      "sha256": "a1198a8db6761c074390c723aeae6070b2664d6d0d19f61e8762c947e4e6d9ed",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/interactive-mystery-game/v2/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/interactive-mystery-game/v2/sql/sqlite.sql",
      "bytes": 55461,
      "sha256": "e1ce523d787aaea08f1aa6c2af9d334a0da4cb89d5f2974a06f4674baad78a96",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/interactive-mystery-game/v2/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/interactive-mystery-game/v2/prisma/seed.ts",
      "bytes": 112773,
      "sha256": "5221e6b943c866f6a71905592e34b95f52353e9734123a77b8b336ad7d57a938",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/interactive-mystery-game/v2/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/interactive-mystery-game/v2/django/fixtures.json",
      "bytes": 198674,
      "sha256": "23db81ee0445dd3d0dc34e96510c56bbaab6e2febf02a280250f402932f98104",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "publishedAt": 1788733954110,
  "updatedAt": 1788784483297
}
