Mystery System
Mystery System
Couldn't load pickup availability
Downloadable files along with this product
No files to download
Details
With this Mystery System innocents must work together to identify and eliminate the Impostor before time expires, while the Impostor stalks the shadows, picking off targets one by one. The Detective holds the key to victory—tracking down the Impostor without mistakenly turning on the innocent. Whether you’re crafting tense hide-and-seek showdowns or pulse-pounding shooter arenas, this system delivers the perfect framework for an unforgettable experience.
Perfect for: creating social-deduction, hide-and-seek, or detective-style maps in UEFN & Fortnite Creative.
As seen on:
Anime Murder Mystery (7792-2440-8617)
by tikuxhaka
Role Assignment
At the start of each round, players receive a random role. Each role comes with custom items.
Map Voting
Let players choose the next arena or scenario:
- Displays a voting UI with map thumbnails and titles
- Collects and tallies votes in real time
- Automatically teleports players to the winning map when voting ends
HUD Configuration
Dynamic on-screen feedback for every phase:
- Role indicators and timers
- Vote counts and results
Verse Persistence for Saving Data
Player data is saved and restored per session via Verse Persistence utilities:
- Games Played
- Wins
- Games Played As Detective
- Games Played As Impostor
- Wins As Detective
- Wins As Impostor
- Eliminations As Impostor
Debug Billboards
The mystery_debug_manager.verse provides console commands and Billboard editables to visualize player data after each round.
Easy to Extend
Add new maps or extend game mechanics with clean, modular code. Hook into events exposed by public functions and Trigger Devices that activate on specific events.
Project Outline
Content/ ├── CoreModule/ │ ├── agent_spawner_manager.verse │ ├── custom_tick.verse │ ├── game_manager.verse │ └── utilities.verse ├── MapVotingModule/ │ ├── Materials/ │ │ ├── M_VoteOptionIcon.uasset │ │ └── MI_VoteOptionIcon.uasset │ ├── Scripts/ │ │ ├── custom_map.verse │ │ ├── map_voting_widget.verse │ │ ├── utilities.verse │ │ ├── verse_ui_custom_map.verse │ │ ├── verse_ui_map_vote_manager.verse │ │ ├── voting_option_custom_map.verse │ │ └── voting_option_map_vote_manager.verse │ ├── Textures/ │ │ ├── dice_1.uasset │ │ ├── dice_2.uasset │ │ ├── dice_3.uasset │ │ ├── option_1.uasset │ │ ├── option_2.uasset │ │ └── option_3.uasset │ └── Widgets/ │ ├── UW_Alert.uasset │ ├── UW_DetectiveWins.uasset │ ├── UW_HeroWins.uasset │ ├── UW_ImpostorWins.uasset │ ├── UW_InnocentsWin.uasset │ ├── UW_MapVoting.uasset │ ├── UW_Mystery.uasset │ ├── UW_VoteCard.uasset │ ├── UW_YouAreDetective.uasset │ ├── UW_YouAreImpostor.uasset │ └── UW_YouAreInnocent.uasset ├── MysterySystemModule/ │ └── Scripts/ │ ├── custom_types.verse │ ├── hud_configuration.verse │ ├── mystery_debug_manager.verse │ ├── mystery_manager.verse │ ├── mystery_widget.verse │ ├── roles_manager.verse │ └── utilities.verse ├── ParticipantsModule/ │ └── utilities.verse ├── UIModule/ │ ├── Textures/ │ │ ├── arrow_basic_e_small.uasset │ │ ├── arrow_basic_e.uasset │ │ ├── arrow_basic_n_small.uasset │ │ ├── arrow_basic_n.uasset │ │ ├── arrow_basic_s_small.uasset │ │ ├── arrow_basic_s.uasset │ │ ├── arrow_basic_w_small.uasset │ │ ├── arrow_basic_w.uasset │ │ ├── arrow_decorative_e_small.uasset │ │ ├── arrow_decorative_e.uasset │ │ ├── arrow_decorative_n_small.uasset │ │ ├── arrow_decorative_n.uasset │ │ ├── arrow_decorative_s_small.uasset │ │ ├── arrow_decorative_s.uasset │ │ ├── arrow_decorative_w_small.uasset │ │ ├── arrow_decorative_w.uasset │ │ ├── button_rectangle_border.uasset │ │ ├── button_rectangle_depth_border.uasset │ │ ├── button_rectangle_depth_flat.uasset │ │ ├── button_rectangle_depth_gloss.uasset │ │ ├── button_rectangle_depth_gradient.uasset │ │ ├── button_rectangle_depth_line.uasset │ │ ├── button_rectangle_flat.uasset │ │ ├── button_rectangle_gloss.uasset │ │ ├── button_rectangle_gradient.uasset │ │ ├── button_rectangle_line.uasset │ │ ├── button_round_border.uasset │ │ ├── button_round_depth_border.uasset │ │ ├── button_round_depth_flat.uasset │ │ ├── button_round_depth_gloss.uasset │ │ ├── button_round_depth_gradient.uasset │ │ ├── button_round_depth_line.uasset │ │ ├── button_round_flat.uasset │ │ ├── button_round_gloss.uasset │ │ ├── button_round_gradient.uasset │ │ ├── button_round_line.uasset │ │ ├── button_square_border.uasset │ │ ├── button_square_depth_border.uasset │ │ ├── button_square_depth_flat.uasset │ │ ├── button_square_depth_gloss.uasset │ │ ├── button_square_depth_gradient.uasset │ │ ├── button_square_depth_line.uasset │ │ ├── button_square_flat.uasset │ │ ├── button_square_gloss.uasset │ │ ├── button_square_gradient.uasset │ │ ├── button_square_line.uasset │ │ ├── check_round_color.uasset │ │ ├── check_round_grey_circle.uasset │ │ ├── check_round_grey.uasset │ │ ├── check_round_round_circle.uasset │ │ ├── check_square_color_checkmark.uasset │ │ ├── check_square_color_cross.uasset │ │ ├── check_square_color_square.uasset │ │ ├── check_square_color.uasset │ │ ├── check_square_grey_checkmark.uasset │ │ ├── check_square_grey_cross.uasset │ │ ├── check_square_grey_square.uasset │ │ ├── check_square_grey.uasset │ │ ├── icon_checkmark.uasset │ │ ├── icon_circle.uasset │ │ ├── icon_cross.uasset │ │ ├── icon_outline_checkmark.uasset │ │ ├── icon_outline_circle.uasset │ │ ├── icon_outline_cross.uasset │ │ ├── icon_outline_square.uasset │ │ ├── icon_square.uasset │ │ ├── slide_hangle.uasset │ │ ├── slide_horizontal_color_section_wide.uasset │ │ ├── slide_horizontal_color_section.uasset │ │ ├── slide_horizontal_color.uasset │ │ ├── slide_horizontal_grey_section_wide.uasset │ │ ├── slide_horizontal_grey_section.uasset │ │ ├── slide_horizontal_grey.uasset │ │ ├── slide_vertical_color_section_wide.uasset │ │ ├── slide_vertical_color_section.uasset │ │ ├── slide_vertical_color.uasset │ │ ├── slide_vertical_grey_section_wide.uasset │ │ ├── slide_vertical_grey_section.uasset │ │ ├── slide_vertical_grey.uasset │ │ ├── star_outline_depth.uasset │ │ ├── star_outline.uasset │ │ └── star.uasset │ ├── Widgets/ │ │ ├── UW_Button.uasset │ │ ├── WBP_ButtonLoud.uasset │ │ ├── WBP_ButtonRegular.uasset │ │ └── WBP_CloseButton.uasset │ └── utilities.verse ├── VersePersistenceModule/ │ ├── mystery_system_persistence.verse │ └── utilities.verse ├── CHANGELOG.md └── modules.verse
Frequently Asked Questions
What kind of game does the Mystery System run?
A round-based social deduction game. Players are secretly given roles, Innocents, one Detective and one Impostor, each with its own class and items. A timer runs and the round ends when one side wins, with role reveals and win screens shown as on-screen widgets.
How many players does it need?
Three by default, set by Min Players, and it keeps retrying until enough players have joined. A testing toggle lets you run rounds alone while building.
Is map voting included?
Yes. Players vote on the next map before each round from an on-screen widget, and a trigger can reopen the vote for a player who closed it.
What can I change without code?
Minimum and maximum round length, delays between rounds, how long alerts and win screens stay up, whether a new Detective is assigned when the old one is eliminated, whether the Detective is punished for eliminating an Innocent, and the items each role receives.
Does it need UEFN?
Yes. Roles use Class and Team Selector devices and the interface is UMG widgets driven by Verse.
NOTE: Level design is not included—this package provides the code and logic system only. The code is sold as is. Updates to the code and bug fixes can be obtained but aren't guaranteed.
Share

