Description

Rogue is a fast-paced, top-down arena Roguelike, taking inspiration from Vampire Survivors, Brotato and other similar titles. Your primary purpose is to survive 20 increasingly difficult waves of enemy hordes, or endlessly. You're capable of wielding up to six weapons simultaneously to survive short, timed enemy encounters while collecting gold and XP. Between these chaotic waves, you enter a randomised shop phase where you must strategically purchase weapons, combine duplicates to upgrade their tiers, and acquire stat-altering items to create powerful unique builds. Success relies entirely on your ability to carefully balance offensive damage output with crucial defensive stats like health, dodge, and armour, allowing your heavily armed self to adapt and outlast the relentless enemy onslaught until rescue finally arrives.
Whilst this game mode comes with 3 maps, 8 characters and 100's of items and weapons pre-configured so you can jump straight into the action, it also provides YOU the freedom to create your own top-down arena Roguelike, want to add your own map, remove/add items with custom stats, or a new character, not an issue, we've designed this to be flexible and configurable through intuitive JSONs.
Install the mod, and type /rogue start to jump directly into the action.
It is suggested that you run this mod in a new save to prevent corruption or issues with your other saves, as we're in early access and bugs could be present. This mod is intended for single/local multiplayer; it is not intended to be operated on a large server network, and therefore, we cannot promise stability or a bug-free experience with multiple instances of the mod operating.
Found a bug? Have a suggestion? Or need support? Please report it in the 'Issue' tab above or on our Discord.
Installation of our mod is designed in a way so you don't need to do any manual steps, and it's ready out of the box. Install the mod into the World or Hytale-wide directory following CurseForge's instructions. On first load its going to unpack the preinstalled configurations, UI elements, and worlds into the correct places.
Once the mod is loaded, you can jump straight into the action using /rogue start, and if you want to leave at any point during the game /rogue stop.
We have included a number of settings so you can play the game to your personal preference, these are all set through the Settings menu you've run /rogue start, these settings are:
- Auto Aim: This toggle between the manually firing using the position of your mouse and our auto aim feature which targets the closest enemy. Note: You cannot have dynamic camera enabled and auto aim disabled at the sametime.
- Reduced Particles: This reduces the visual effects shown during the game if you experience lag when playing to reduce the gamemode's load.
- Dynamic Camera: This allows your to have a free roaming camera during the game which you can control via your mouse movements to get the perfect angle.
- Camera Angle: This changes the Y-axis of the camera, therefore 0 degrees would give a top down and 45 degree would give more behind the player perspective.
- Camera Direction: This changes the X-axis of the camera, therefore 0 degree is directly behind the player with other degrees offsetting from this point.

Step into the chaos of Rogue, a high-octane roguelite experience built within Hytale. Drawing inspiration from the frantic, auto-firing mayhem of Brotato and Vampire Survivors, this mode pits you against the infinite corruption of the Void. Your goal is simple but hard: Survive for 20 rounds of increasing waves of foes. As the round progress, the density and strength of the mobs increase exponentially. Survival isn't just about movement; it's about building an "overpowered" character through smart item synergies before the timer runs out.
What is a Roguelite?
If you aren't familiar with the genre, a Roguelite is a game style focused on "the run." Unlike traditional RPGs where you keep every piece of loot forever, a roguelite follows these rules:
- Permadeath: If you die, that specific run is over. You start back at Level 1.
- Randomized Power-ups: Every time you level up, you are offered a random selection of weapons or items. No two runs are the same.
- Meta-Progression: While you lose your gear upon death, you unlock new items, abilities, achievement or characters depending on your performance.
The Gameplay Loop
The loop is designed to be addictive, fast-paced, and rewarding:
- Select your Character Start by choosing a character with varying starting stats and weapons (e.g., the Berzerker for close ranged expertise or the Wizard for elemental spells).
- Combat Phase: Your character automatically attacking the nearest enemies or for an extra challenge toggle manual. Your job is to maneuver through the horde, dodging projectiles and collecting the XP and Coins dropped by fallen foes.
- Level-Up: Every time you fill your XP bar at the end of the next round you can choose one of four random level-up perks of varying rarity. Do you take the 'Dodge' for increase escapability, or the 'Max HP' to increase your HP?
- Purchase, Sell & Combine: Purchase new items, combine items create their legendary forms.
- Death and Rebirth: Whether you win or lose.

Characters
ROGUE/CHARACTERS.JSON
Adjust base attributes such as starting health, movement speed, base damage multipliers etc. therefore dictating how powerful players feel at the start of a run. You can also use negative values to make the experience more challenging.
| ID | DESCRIPTION | DEFUALT | TYPE |
|---|---|---|---|
maxHP |
Maximum health points | 100 | Flat |
hpRegen |
Health regeneration per second | 0.0 | Flat |
attackSpeed |
Weapon cooldown divisor (higher = faster) | 1.0x | Multiplier |
armor |
Damage reduction | 0.0 | Flat |
speed |
Movement speed multiplier (applied to Hytale baseSpeed) | 1.0x | Multiplier |
pickupRange |
Loot magnet pull distance | 2.0 | Flat |
xpMultiplier |
XP gain multiplier | 1.0x | Multiplier |
luck |
Each point = 1% better chance for rare upgrades | 0.0 | Flat |
range |
Weapon range multiplier | 1.0x | Multiplier |
vision |
Camera zoom | 1.0x | Multiplier |
lifesteal |
Heals from damage | 0% | Percent |
dodge |
Chance to negate incoming damage | 0% | Percent |
pickupHeal |
Chance to heal 5% max HP on loot pickup | 0% | Percent |
meleeDamage |
Added to MELEE category weapon damage | 0.0 | Flat |
rangedDamage |
Added to RANGED category weapon damage | 0.0 | Flat |
elementalDamage |
Added to ELEMENTAL category weapon damage | 0.0 | Flat |
critChance |
Chance for 2x damage | 0% | Percent |
explosionDamage |
Bonus explosion damage | 0.0 | Flat |
knockback |
Knockback force | 1.0x | Multiplier |
piercing |
Extra enemies projectiles pass through | 0.0 | Flat |
harvesting |
Multiplier to wave XP and gold | 0% | Percent |
damage |
Global damage multiplier | 0% | Percent |
engineering |
Structure power multiplier | 0% | Percent |
startingWeapons |
Starting weapons for this character | NONE | Weapon_ID |
Level Progression
ROGUE/PERKS.JSON
Adjust the Perks which can be acquired during the game when leveling up your character.
| ID | DESCRIPTION | TYPE |
|---|---|---|
id |
Maximum health points | String |
name |
Health regeneration per second | String |
description |
Weapon cooldown divisor (higher = faster) | String |
rarity |
One of: COMMON, UNCOMMON, RARE, EPIC, LEGENDARY |
String |
statType |
The stat this perk modifies. See valid stat types below. | String |
amount |
Value added to the player's base stat permanently. | Float |
iconFile |
Filename inside /mods/Rogue/images/perks/. Drop a PNG there and put its name. Leave empty to fall back to icon. |
String |
Stat Types
The following stats can be used applied to level-up perks:
| Stat | Base | Type | Description |
|---|---|---|---|
MAX_HP |
100 | Flat | Maximum health points |
HP_REGEN |
0 | Flat | Health regeneration per second |
ATTACK_SPEED |
1.0x | Multiplier | Weapon cooldown divisor (higher = faster) |
ARMOR |
0 | Flat | Damage reduction: dmg * (1 - armor/(armor+100)) |
SPEED |
1.0x | Multiplier | Movement speed multiplier (applied to Hytale baseSpeed) |
PICKUP_RANGE |
2.0 | Flat | Loot magnet pull distance |
XP_MULTIPLIER |
1.0x | Multiplier | XP gain multiplier |
LUCK |
0 | Flat | Each point = 1% better chance for rare upgrades |
RANGE |
1.0 | Multiplier | Weapon range multiplier |
VISION |
1.0x | Multiplier | Camera zoom: 10 + (vision-1)*2, clamped 10-40 |
LIFESTEAL |
0% | Percent | Heals for damage * lifesteal * 0.01 |
DODGE |
0% | Percent | dodge * 0.01 chance to negate incoming damage |
PICKUP_HEAL |
0% | Percent | pickupHeal * 0.01 chance to heal 5% max HP on loot pickup |
MELEE_DAMAGE |
0 | Flat | Added to MELEE category weapon damage |
RANGED_DAMAGE |
0 | Flat | Added to RANGED category weapon damage |
ELEMENTAL_DAMAGE |
0 | Flat | Added to ELEMENTAL category weapon damage |
CRIT_CHANCE |
0% | Percent | crit * 0.01 chance for 2x damage |
EXPLOSION_DAMAGE |
0 | Flat | Bonus explosion damage (unused in current weapons) |
KNOCKBACK |
1.0x | Multiplier | Knockback force: 5.0 * knockback |
PIERCING |
0 | Flat | Extra enemies projectiles pass through (integer) |
HARVESTING |
0% | Percent | 1 + harvesting*0.01 multiplier to wave XP and gold |
DAMAGE |
0% | Percent | Global damage multiplier: baseDmg * (1 + damage*0.01) applied before type bonus |
ENGINEERING |
0% | Percent | Structure power multiplier: turret damage and totem healing * (1 + engineering*0.01) |
Wave & Difficulty
Dictate the pacing of the game by altering the duration of each wave, the length of the shop or rest phases in between, and the total number of waves required to achieve victory.
Enemies
ROGUE/WAVES.JSON
Curate the exact composition of the alien hordes. You can modify which enemy types spawn at specific stages, adjust their base health and attack damage, and control the sheer volume of mobs that flood the arena.
| ID | DESCRIPTION | VALUE(S) |
|---|---|---|
|
This defines the wave sequence | Float |
|
The length the round lasts in seconds | Float |
enemyCountMultiplier |
Spawn multipler applied to each mobs base rate | Float |
enemyDamageMultiplier |
Damage multipler applied to each mobs base damage | |
mobID |
Percetnage of this mob to be spawned this round, this should be present for each defined mob type |
Example Wave Confguration:
{ "waveNumber": 7, "duration": 50, "enemyCountMultiplier": 2.7, "enemyDamageMultiplier": 1.1, "zombie": 40.0, "runner": 18.0, "archer": 18.0, "tank": 12.0, "witch": 12.0, "boss": 0.0 }
Difficulty Configuration
ROGUE/DIFFICULTY.JSON
Design the game's difficulty curve to fit you, create a slow, linear progression for casual players, or implement brutal, exponential scaling to challenge hardcore veterans.
The difficulty system has 4 fixed levels: **EASY**, **NORMAL**, **HARD**, and **EXPERT**. Each level's multipliers can be customized via `difficulty.JSON` in the plugin's data directory.
| ID | DESCRIPTION | VALUE(S) |
|---|---|---|
|
Multiplier applied to enemy HP | Float |
|
Multiplier applied to enemy count per wave | Float |
|
Multiplier applied to boss HP and damage | Float |
Weapons
Rogue/weapons.json
Overhaul the game's economy and arsenal. Configure weapon's and item's base stats, rarity and costs, and define how duplicates combine to create devastating, game-breaking synergies.
| Field | Type | Required | Description |
|---|---|---|---|
id |
String | Yes | Identifier. Shared across tiers to link upgrades. |
name |
String | Yes | Display name shown in shop and inventory. |
type |
String | Yes | MELEE, RANGED, or UTILITY |
damageCategory |
String | Yes | MELEE, RANGED, or ELEMENTAL (for stat scaling) |
tier |
Int | Yes | Tier level (1, 2, 3, 4…). Each id + tier must be unique. |
range |
Float | Yes | Attack/effect range in blocks. |
attackSpeed |
Float | Yes | Cooldown between attacks in seconds (lower = faster). |
baseDamage |
Float | Yes | Raw damage before stat modifiers. |
uniqueEffect |
String | No | Special effect text (e.g. "Cleave (3 targets)"). |
ammo |
Int | No | Magazine size for ranged weapons. null for unlimited. |
reloadTime |
Float | No | Reload duration in seconds after magazine is empty. |
hytaleItemId |
String | No | Hytale item ID for display model in hotbar. |
animationSetId |
String | No | Animation set ID for attack visuals. |
attackAnimation |
String | No | Specific attack animation within the set. |
projectileConfigId |
String | No | Projectile config ID for ranged weapons. |
trailParticle |
String | No | Particle effect for projectile trails. |
impactParticle |
String | No | Particle effect on hit. |
basePrice |
Int | No | Fixed shop price. If |
Tiers are linked by the id field. All entries with the same id but different tier values form a weapon family. Each tier is fully independent in config — you can customize name, damage, attack speed, effects, and price per tier.
Example: Defining a weapon with 3 tiers
{
"weapons": [
{
"id": "flame_staff",
"name": "Flame Staff",
"type": "RANGED",
"damageCategory": "ELEMENTAL",
"tier": 1,
"range": 5.0,
"attackSpeed": 1.2,
"baseDamage": 15.0,
"uniqueEffect": "Burn (3s DoT)",
"ammo": 8,
"reloadTime": 2.0
},
{
"id": "flame_staff",
"name": "Inferno Staff",
"type": "RANGED",
"damageCategory": "ELEMENTAL",
"tier": 2,
"range": 5.5,
"attackSpeed": 1.0,
"baseDamage": 25.0,
"uniqueEffect": "Burn (5s DoT)",
"ammo": 12,
"reloadTime": 1.6
},
{
"id": "flame_staff",
"name": "Hellfire Staff",
"type": "RANGED",
"damageCategory": "ELEMENTAL",
"tier": 3,
"range": 6.0,
"attackSpeed": 0.85,
"baseDamage": 40.0,
"uniqueEffect": "Burn (5s DoT) + Explosion",
"ammo": 16,
"reloadTime": 1.2
}
]
}
Passive Items
Rogue/weapons.json
| Field | Type | Required | Description |
|---|---|---|---|
id |
String | Yes | Identifier. Shared across tiers to link upgrades. |
name |
String | Yes | Display name shown in shop and inventory. |
rarity |
String | Yes | Common, Uncommon, Rare, Legandary |
effect |
Int | Yes | Text to be displayed in the shop and inventory of the items use. |
statType |
String | Yes | Base stat that is provided by the item. |
flatBonus |
Float | Yes | Defined value bonus of the stat provided. You can defined negative bonus to make items have a negative and postive effect. |
percetnageBonus |
Float | Yes | Percetnage bonus of the stat provided. You can defined negative bonus to make items have a negative and postive effect. |
extraModifiers |
String | No | Provide multiple stat benefits using modifier, duplicating stateType, flatBous and percetnageBonus per extra stat |
basePrice |
Int | No | Cost of item within the shop. |
hytaleItemId |
Float | No | Hytale item ID for display model instore/invetnbroy. |
Stats Types
| Stat | Base | Type | Description |
|---|---|---|---|
MAX_HP |
100 | Flat | Maximum health points |
HP_REGEN |
0 | Flat | Health regeneration per second |
ATTACK_SPEED |
1.0x | Multiplier | Weapon cooldown divisor (higher = faster) |
ARMOR |
0 | Flat | Damage reduction: dmg * (1 - armor/(armor+100)) |
SPEED |
1.0x | Multiplier | Movement speed multiplier (applied to Hytale baseSpeed) |
PICKUP_RANGE |
2.0 | Flat | Loot magnet pull distance |
XP_MULTIPLIER |
1.0x | Multiplier | XP gain multiplier |
LUCK |
0 | Flat | Each point = 1% better chance for rare upgrades |
RANGE |
1.0 | Multiplier | Weapon range multiplier |
VISION |
1.0x | Multiplier | Camera zoom: 10 + (vision-1)*2, clamped 10-40 |
LIFESTEAL |
0% | Percent | Heals for damage * lifesteal * 0.01 |
DODGE |
0% | Percent | dodge * 0.01 chance to negate incoming damage |
PICKUP_HEAL |
0% | Percent | pickupHeal * 0.01 chance to heal 5% max HP on loot pickup |
MELEE_DAMAGE |
0 | Flat | Added to MELEE category weapon damage |
RANGED_DAMAGE |
0 | Flat | Added to RANGED category weapon damage |
ELEMENTAL_DAMAGE |
0 | Flat | Added to ELEMENTAL category weapon damage |
CRIT_CHANCE |
0% | Percent | crit * 0.01 chance for 2x damage |
EXPLOSION_DAMAGE |
0 | Flat | Bonus explosion damage (unused in current weapons) |
KNOCKBACK |
1.0x | Multiplier | Knockback force: 5.0 * knockback |
PIERCING |
0 | Flat | Extra enemies projectiles pass through (integer) |
HARVESTING |
0% | Percent | 1 + harvesting*0.01 multiplier to wave XP and gold |
DAMAGE |
0% | Percent | Global damage multiplier: baseDmg * (1 + damage*0.01) applied before type bonus |
ENGINEERING |
0% | Percent | Structure power multiplier: turret damage and totem healing * (1 + engineering*0.01) |
Example Item Configuration:
{ "id": "electric\_eel", "name": "Electric Eel", "rarity": "RARE", "effect": "+8 Max HP, +3 HP Regeneration, -8 Luck", "statType": "MAX\_HP", "flatBonus": 8.0, "percentBonus": 0.0, "extraModifiers":[ { "modStatType": "HP\_REGEN", "modFlatBonus": 3.0, "modPercentBonus": 0.0 }, { "modStatType": "LUCK", "modFlatBonus": -8.0, "modPercentBonus": 0.0 } ], "basePrice": 85, "hytaleItemId": "Fish_Eel_Moray_Item" }
Maps
Rogue/maps.json
Maps define the playable arenas for Rogue sessions. Each map points at a source world folder under <universe>/worlds/ which is cloned per session into a disposable instance world. Edits to the source world automatically propagate to the next instance spawned from it — no server restart or asset pack rebuild needed.
Note: Can you currently only have three active maps, therefore to add a new map you would need to replace an existing map.
| Field | Type | Description |
|---|---|---|
id |
String | Unique map identifier (used in commands) |
name |
String | Display name shown in the UI |
sourceWorld |
String | Name of the template world folder inside universe/worlds/. This world is copied per session to create an isolated instance. Must point to a real, loadable world folder. |
spawnX/Y/Z |
Double | Player teleport position inside the instance when the game starts |
corner1X/Y/Z, corner2X/Y/Z |
Double | Opposite corners of the arena bounding box. When both corners are set, 30% of mob spawns are picked at random inside the box and the remaining 70% spawn close to the player but clamped to the box. Leave both at 0 to disable bounds and have every mob ring-spawn around the player. |
locked |
Boolean | If true, map is visible in the UI but cannot be selected |
previewFile |
String | Preferred. Filename inside Rogue/images/maps/. Drop a PNG there and set its name here — no rebuild required. Leave empty to fall back to previewTexture. |
previewTexture |
String | Fallback asset-pack path (relative to Common/UI/Custom/). Only used when previewFile is blank. Changes here require rebuilding the plugin jar. |
Commands Reference
| undefined | Command | Description |
|---|---|---|
/rogue map list |
List all maps with their setup status | |
/rogue map listsources |
List world folders available in universe/worlds/ |
|
/rogue map info |
Show full details for a map | |
/rogue map create sourceWorld |
Create a new map bound to a source world | |
/rogue map setspawn |
Set the spawn point to your current position | |
/rogue map setcorner1 |
Set arena corner 1 to your current position | |
/rogue map setcorner2 |
Set arena corner 2 to your current position | |
/rogue map setsource [sourceWorld] |
Change the source world for a map | |
/rogue map setname [name] |
Change the display name |
Found a bug? Have a suggestion? Or need support? Please report it in the 'Issue' tab above or on our Discord




