# Examples These examples describe the current Hytale-native setup: minigame definitions are assets, and world interaction is done with normal Hytale trigger volumes using the minigame trigger condition/effect types. ## Simple Start Pad Definition file: `Server/Minigames/Quick_Brawl.json` ```json { "Id": "Quick_Brawl", "Name": "Quick Brawl", "Description": "A short solo score test.", "Enabled": true, "MinPlayers": 1, "MaxPlayers": 8, "TeamMode": "SOLO", "WinCondition": "HIGHEST_SCORE", "RoundLengthSeconds": 120, "CountdownSeconds": 5, "AllowPvp": true, ... } ``` Editor setup: 1. Create a normal Hytale trigger volume at the start pad. 2. Add the `StartMinigame` effect. 3. Set `MinigameId` to `Quick_Brawl` using the asset picker. ## Activating Players Players must be explicitly set to `ACTIVE` status before the activation lifecycle runs. This is what triggers inventory saving, start item giving, game mode change, and HUD display. Without a `SetPlayerStatus ACTIVE` effect, none of these happen. A common pattern is a spawn-room trigger volume that all players enter when the game starts: 1. Create a trigger volume covering the spawn area. 2. Add `PlayerInMinigame` as a condition (`MinigameId = Quick_Brawl`, leave `PlayerId` blank). 3. Add `SetPlayerStatus` as an effect (`MinigameId = Quick_Brawl`, `Status = ACTIVE`, leave `PlayerId` blank). The entering player is resolved from the trigger context, so leaving `PlayerId` blank activates whoever enters the volume. ## Score Zone Definition file: `Server/Minigames/Hill_Points.json` ```json { "Id": "Hill_Points", "Name": "Hill Points", "Enabled": true, "MinPlayers": 1, "MaxPlayers": 12, "TeamMode": "SOLO", "WinCondition": "FIRST_TO_SCORE", "RoundLengthSeconds": 300 } ``` Editor setup: 1. Create a normal Hytale trigger volume around the scoring area. 2. Add `PlayerInMinigame` as a condition. 3. Add `ModifyPlayerScore` as an effect. 4. Set `MinigameId = Hill_Points`, `Operation = ADD`, and `Amount = 1`. If the trigger context already contains the player who entered the volume, leave `PlayerId` blank. ## End When Score Reaches a Target Condition: - Type: `PlayerScore` - `MinigameId = Hill_Points` - `Compare = GREATER_THAN_OR_EQUAL` - `Value = 100` Effect: - Type: `EndMinigame` - `MinigameId = Hill_Points` - `Reason = score_reached` ## Team Score Zone Use `ModifyTeamScore` when the score belongs to a team instead of a player. Required fields: - `MinigameId` - `TeamId` - `Operation` - `Amount` Use `AssignTeam` with `BalanceTeams=true` to split all players in the started runtime evenly across teams. If no teams already exist, the effect creates `team1..teamN` from the minigame's `TeamCount`. ## Counter Gate Increment: - Effect: `ModifyCounter` - `CounterId = captured_points` - `Operation = ADD` - `Amount = 1` Gate: - Condition: `Counter` - `CounterId = captured_points` - `Compare = GREATER_THAN_OR_EQUAL` - `Value = 3` Then attach a follow-up effect, such as `SetMinigamePhase` or `EndMinigame`.