ProgressContributeHow it worksFAQAIMods
Download

OpenRAC · unofficial community project · Mods · Legal · GitHub · Discord

Progress is read from the projects' repositories on the server and refreshed every ten minutes. For scripts and AI tools: progress.json · llms.txt

  1. Home ›
  2. Mods ›
  3. Difficulty

Difficulty

by OpenRAC contributors · v1.2.3 · 336 downloads

A slider for everything that makes the game hard or easy: enemy count, damage, speed, prices, ammo, bolts and health. Presets Easy, Retail, Hard, Brutal and a seeded Chaos.

⚠NativeChanges gameplayPALNTSC-U

Didn't open?

Install opens the OpenRAC launcher, which installs the mod and everything it needs. If nothing happened, the launcher is probably not installed yet.

Already have it? Try again, or copy the link and paste it in the launcher under Mods → Add from a link.

Get the launcher
Source
  • About
  • Details
  • Relationships
  • Versions
  • Files
  • Comments

About

Difficulty

A slider for everything that makes Ratchet & Clank hard or easy, for OpenRAC's native port (PAL v2.00 and NTSC-U discs): how many enemies there are, the damage Ratchet takes and deals, how fast the enemies and Ratchet move, what weapons and ammo cost, how much ammo a shot takes and a weapon holds, how many bolts drop, Ratchet's health and what health pickups give. Presets fill them in: Easy, Retail, Hard, Brutal and Chaos, which rolls new values for every level from a seed. With every slider at 1.0 (the Retail preset), or with the mod off, the game is the PlayStation 2 game.

It needs an OpenRAC built from master on 2026-10-21 or later (the game's hook points for damage, hits, ammo, deaths, the level load and Ratchet's speed). An older one refuses the mod and names the missing hook point.

Playing

Install it from the launcher's Mods tab (Add from a link: https://github.com/OpenRAC/rac1-mods), switch it on, choose its settings and play. Settings count from the game's next start; the enemy count and the prices from the next level loaded.

The presets

The presets are buttons above the settings in the Mods tab: each sets every slider and the Chaos switch, and the button of the values the sliders have is lit. Move a slider after and that is what plays (no button is lit then). This mod's presets need an OpenRAC launcher built on 2026-10-22 or later.

Preset
Retail (default)Everything 1.0: the game as it is
EasyFewer enemies (0.75), half the damage to Ratchet, 1.5 times the damage to enemies, slower enemies, cheaper weapons and ammo, more ammo, more bolts, 8 cells of health, double health pickups
Hard1.5 times the enemies, twice the damage to Ratchet, enemies 1.2 times as fast, 1.5 times the prices, a quarter more ammo per shot, less ammo and fewer bolts and pickups
BrutalTwice the enemies, three times the damage to Ratchet, half the damage to enemies, enemies 1.4 times as fast, 2.5 times the prices, half the max ammo, the bolts and the pickups, and 2 cells of health
ChaosEvery slider at 1.0 and the Chaos switch on: each level rolls its own values, every slider within its Chaos range below, from the seed

With Chaos on, a slider you move off 1.0 holds on every level and the others roll. The game's log says what plays: sliders, retail or chaos, and then every value.

The full table, slider by slider:

SliderRangeEasyHardBrutalChaos range
Enemy count0.25 to 40.751.520.5 to 2.5
Damage to Ratchet0.25 to 40.5230.5 to 3
Damage to enemies0.25 to 41.50.750.50.5 to 2
Enemy speed0.5 to 20.851.21.40.7 to 1.6
Ratchet's speed0.5 to 21.1110.8 to 1.4
Weapon prices0.1 to 50.751.52.50.5 to 2.5
Ammo prices0.1 to 50.51.52.50.5 to 2.5
Ammo per shot0.25 to 40.751.251.50.5 to 2
Max ammo0.25 to 41.50.750.50.5 to 2
Bolt drops0 to 51.50.750.50.5 to 3
Max health0.25 to 2210.50.5 to 2
Health pickups0 to 420.750.50.5 to 2

The sliders

SliderWhat it changes
Enemy countAbove 1: copies of the level's enemies beside them when the level loads (3 means about two copies of each). Below 1: that share of the free-roaming enemies left out (0.5: about half). Only enemies free of the level's scripts are copied or left out: never bosses, turrets, mines, spawners, the enemies of a wave or of a "defeat them all" door, nor any the story or another object needs (see which mobys count as enemies). A copy stands on the same floor, in the open, 2.5 to 4 units from its original; where there is no such spot, it is not made. Copies drop no bolts and are not remembered as killed. How many copies a level gets is limited by room: see how many enemies
Damage to RatchetHow many cells of health a hit takes, on average: 2 is two cells a hit, 0.5 a cell every other hit, 1.5 one then two. Falls, crushers and other instant deaths are the game's
Damage to enemiesThe damage of every hit on an enemy, a turret or a boss: your weapons, the wrench, explosions
Enemy speedHow fast enemies and turrets move, turn, animate, aim and fire: the clock their own code runs on. Bosses keep their own pace
Ratchet's speedHis walking and running speed (jumps and gravity are the game's)
Weapon pricesWhat the Gadgetron vendor asks for each weapon, and what NPCs ask for the gadgets they sell. The nanotech upgrades on Orxon cost what the game says
Ammo pricesThe vendor's price for each round of ammo
Ammo per shotRounds a shot takes, on average (0.5: every other shot is free, 2: two a shot). A gun never fires empty, and its last rounds still fire when a shot would want more
Max ammoHow many rounds each weapon holds (and what a weapon comes with). Ammo you already have over a lower maximum is not added to, and the game may cut it down to the maximum when it loads
Bolt dropsBolts from enemies and crates. 0: none. Rewards the story pays (the bolts NPCs give, races, the codebot) are the game's
Max healthRatchet's cells of health, from what you bought (4, 5 with the Premium Nanotech, 8 with the Ultra): the HUD has places for 1 to 5 cells and for 8, so the nearest of those at or below. 2.0 makes 4 cells 8; Ultra's 8 is the most
Health pickupsCells each nanotech pickup gives, on average. 0: none

Chaos

SettingDefault
ChaosoffEach level rolls its own value for every slider left at 1.0, from the seed (the Chaos preset switches it on)
SeedblankFor Chaos (and the events): the 8-character code the log shows (seed 0A1B2C3D) plays the same rolls again, and any other word gives its own. Blank: a new seed at each start, shown in the log
Chaos eventsoffEvery few minutes of play, one of these for 45 seconds: Turbo Ratchet (1.5 times as fast), Slow motion (the enemies at half speed), Frenzy (the enemies 1.5 times as fast), Double time (both), Glass cannon (twice the damage both ways), Iron hide (half the damage to Ratchet), Bolt rain (three times the bolts), Ammo famine (twice the ammo a shot), Trigger happy (a quarter), Nanotech surge (three times the health pickups). The log says when one starts and ends. With any preset
Minutes between events3
TraceoffFor bug reports: each level's values and every max health change in the game's log

With Chaos, each level's values come from the seed and the level alone, so the same seed is the same game: share the code from the log.

How many enemies

The game keeps one pool of 255 slots per level for everything it makes as it goes: shots, sparks, bolts, debris, pickups (Drek's fleet has 399). OpenRAC's port gives most levels 767 (all but Rilgar, Blarg Station and Quartu, which keep 255); the mod reads the pool's size from the game as each level loads. When the pool is full the game cannot make what it wants, and on Gaspar its lava sparks nearly fill a console's 255 already. So the copies take only what the game can spare: 160 slots always stay free for the game, and a level's copies take at most the rest (95 of 255, 607 of 767). An enemy whose own data is larger than a spawned object's place (0x80 bytes) costs slots for that too, and nearly every enemy's is (0x1C0 to 0x460 bytes): a copy takes 5 to 10 slots, so a level of 255 gets about 11 to 17 copies at most (Rilgar's smaller amoeboids, about 28) and a level of 767 about 60 to 100, fewer where few of its enemies are free of its scripts (Umbris none). On Gaspar the sparks keep another 255: no copies in a pool of 255, up to 352 in one of 767. The log says what each level got: level 4: 41 copies of 23 enemies (255 free slots, room for 95 beside the 160 kept for the game; 60 reserved for pvars; 3 without a clear spot). With a high enemy count the copies are spread: each enemy gets one before any gets a second.

Which mobys count as enemies

The game's objects are classified in classes.tsv, 158 of them: 39 enemies (copied, left out, timed, hit harder or softer), 5 roamers (left out, timed, hit; never copied: they fly a path, drop in on a cue, or are too big to stand beside the original), 9 turrets (timed and hit; fixed to the level, so never copied or left out), 5 bosses (only the damage to enemies applies to them) and 100 left as the game has them. Everything not in the table is left as it is.

Left as the game has itWhy
Ultramech (Quartu), giant ClankThe Ultramech fight's boss is scripted; giant Clank is you
Space fighters, interceptors, Blarg ships, Qwark's starfighterThe ship levels and the scenes' ships are left as they are
Bolt thievesA scripted chase: the bolts are the level's
Mines, homing minesHazards laid out by the level, in patterns
Spawners, nests, eggs, the gadgebots' padsWhat a spawner makes is the game's (and it reuses its group's enemies as templates)
The Glove of Doom's bots, the Drone Device's dronesYours
Plasmabot hatch, sentrybot alarmWhat the enemies come out of or answer to
Sand mice, frogs, the miners and constructorbotsWildlife or workers, not known to attack
The Veldin robot enemy, the grass bombthrowersTheir update is shared with the vendor's, the grass's and the plants'
Deplanetizer guns, robot heads and arms, helicopters, airships, logging machinery, doors, liftsStory or scenery
Batalia's deserter, codebotsHelpers and NPCs

And among the enemies, only those free of the level's scripts are copied or left out: a moby in a group (a wave, a door that opens when all are defeated), one another object names, one that names another, or one the level's file does not describe is left as it is. When in the story an enemy is there (before its planet's mission is done, after it, or both) is the level's own: the game places only the enemies of the part of the story being played, and only those are copied.

How it works

Each value is changed where the game takes it, through OpenRAC's hook points (stable ids, hooks), or once a level at its source; nothing is patched every frame, and with a slider at 1.0 its hook calls the game's own function exactly as the game did.

SliderWhere
Damage to Ratchetrac1.player.take_damage (Hero_TakeDamage, which takes one cell a call): called that many times on average
Damage to enemiesrac1.combat.get_hit (MobyGetHitMessage, how every enemy reads the hit it takes): the hit's damage scaled once, however often it is read
Enemy speedEach timed class's update, rac1.moby.<class>.update (the behaviour catalogue's hook points): the tick's time constants scaled for the call (the game's movement and timers are written in them), and the moby's animation speed
Ratchet's speedrac1.player.approach_speed (Hero_ApproachSpeed): his ground speed eases toward his target speed scaled
Prices, max ammoThe items' table (D_L00_001C43B0 on PAL), rewritten from the level's own values at each level's load (rac1.level.load_gameplay): never scaled twice
Ammo per shotrac1.weapon.take_ammo (TakeAmmo)
Bolt dropsrac1.moby.record_death (SetDeathBits, which records a death and drops its bolts)
Max healthgMaxNanotech, kept to the upgrades' count times the slider each tick in play
Health pickupsrac1.moby.nanotech_ball.update: the cells the pickup gives
Enemy countrac1.level.load_gameplay (LoadLevelGameplay): after the level's objects are placed and before any has run

Saves: the mod writes nothing into a save. Max health, prices and the enemies come back as the game has them when it is off; only the ammo you had stays as it was when you saved.

The tests check the presets (each sets every slider and Chaos, in range, Easy easier and Brutal harder than Hard), the sliders' ranges and clamping, that Chaos's rolls and events are the same for the same seed, that every catalogue class that fights is classified, the pool's guard on a level laid out in memory, and the library as the port loads it.

Building

From the repository's top (see README.md). The classes' header is generated: after changing classes.tsv, run python3 tools/gen_classes.py <SDK>/catalogue/rac1/classes.json <OpenRAC>/sdk/bindings/rac1.ids.lock.

Details

Id
difficulty
Type
Native (runs native code)
Author
OpenRAC contributors
License
GPL-3.0-or-later
Mod interface
1.1 (release ✓)
Games
Ratchet & Clank (PAL, NTSC-U)
Systems
Linux, Linux ARM, Windows, macOS, macOS Intel, Android
Impact
Changes gameplay
Tags
gameplay
First released
22 Oct 2026
Updated
29 Oct 2026
Hook points
rac1.player.take_damage, rac1.combat.get_hit, rac1.weapon.take_ammo, rac1.moby.record_death, rac1.level.load_gameplay, rac1.player.approach_speed, rac1.moby.nanotech_ball.update, rac1.moby.plasmabot.update, rac1.moby.blarg_turret.update, rac1.moby.machinegun_turret_30.update, rac1.moby.minibomber.update, rac1.moby.sharkigator_35.update, rac1.moby.gem_lock_turret.update, rac1.moby.sentrybot.update, rac1.moby.moby52.update, rac1.moby.robosquawker.update, rac1.moby.spiderbot.update, rac1.moby.grazing_critter.update, rac1.moby.moby211.update, rac1.moby.big_axebot.update, rac1.moby.scoutbot.update, rac1.moby.bomber_tank.update, rac1.moby.moby294.update, rac1.moby.moby326.update, rac1.moby.blarg_bomb_thrower.update, rac1.moby.circular_saw.update, rac1.moby.blarg_gun.update, rac1.moby.fleet_turret.update, rac1.moby.blarg_trooper.update, rac1.moby.birdbot.update, rac1.moby.wb_moby.update, rac1.moby.amoeboid.update, rac1.moby.moby573.update, rac1.moby.peckbot.update, rac1.moby.trooper.update, rac1.moby.sand_shark.update, rac1.moby.extermibot.update, rac1.moby.extermitank.update, rac1.moby.helicopter_gunship.update, rac1.moby.floating_enemy.update, rac1.moby.horny_toad.update, rac1.moby.paratrooper.update, rac1.moby.moby1048.update, rac1.moby.sharkigator_1059.update, rac1.moby.moby1068.update, rac1.moby.machinegun_turret_1126.update, rac1.moby.moby1196.update, rac1.moby.mountable_turret.update, rac1.moby.toxic_crab.update, rac1.moby.psytcopus.update, rac1.moby.moby1246.update, rac1.moby.blarg_space_commando.update, rac1.moby.moby1267.update, rac1.moby.linked_turret.update, rac1.moby.blarg_commander.update, rac1.moby.moby1382.update, rac1.moby.wandering_helper.update, rac1.moby.path_follow_moby.update

RepositoryReport a bugReport a problem with this listing

Relationships

Requires

Nothing: it works on its own.

Versions

  • v1.2.329 Oct 2026PAL, NTSC-U635.0 KBinterface 1.1+

    Built by the build workflow from 892c17401da544daf7efa229b5e672f892e2fe46, against the OpenRAC mod SDK 1.10.1.

    Install: paste this repository's address in the OpenRAC launcher's Mods tab, or add a .zip there.

  • v1.2.229 Oct 2026PAL, NTSC-U63.1 KBinterface 1.1+

    Built by the build workflow from ce23cb3d0d99db6ce3bad49bddce5290f3a57f5e, against the OpenRAC mod SDK 1.7.0.

    Install: paste this repository's address in the OpenRAC launcher's Mods tab, or add a .zip there.

    Didn't open?

    Install opens the OpenRAC launcher, which installs the mod and everything it needs. If nothing happened, the launcher is probably not installed yet.

    Already have it? Try again, or copy the link and paste it in the launcher under Mods → Add from a link.

    Get the launcher
  • v1.2.124 Oct 2026PAL, NTSC-U62.5 KBinterface 1.1+

    Built by the build workflow from 43f9c26b15074ccbf8db99851c93954e26cda211, against the OpenRAC mod SDK 1.3.0.

    Install: paste this repository's address in the OpenRAC launcher's Mods tab, or add a .zip there.

    Didn't open?

    Install opens the OpenRAC launcher, which installs the mod and everything it needs. If nothing happened, the launcher is probably not installed yet.

    Already have it? Try again, or copy the link and paste it in the launcher under Mods → Add from a link.

    Get the launcher
  • v1.2.023 Oct 2026PAL, NTSC-U61.1 KBinterface 1.1+

    Built by the build workflow from 76cfc9199b265ac20f35e860887c54364f77a805, against the OpenRAC mod SDK 1.3.0.

    Install: paste this repository's address in the OpenRAC launcher's Mods tab, or add a .zip there.

    Didn't open?

    Install opens the OpenRAC launcher, which installs the mod and everything it needs. If nothing happened, the launcher is probably not installed yet.

    Already have it? Try again, or copy the link and paste it in the launcher under Mods → Add from a link.

    Get the launcher
  • v1.1.123 Oct 2026PAL, NTSC-U60.9 KBinterface 1.1+

    Built by the build workflow from afbe9102c4c0f08bafc696e1a04737a3864d0815, against the OpenRAC mod SDK 1.3.0.

    Install: paste this repository's address in the OpenRAC launcher's Mods tab, or add a .zip there.

    Didn't open?

    Install opens the OpenRAC launcher, which installs the mod and everything it needs. If nothing happened, the launcher is probably not installed yet.

    Already have it? Try again, or copy the link and paste it in the launcher under Mods → Add from a link.

    Get the launcher
  • v1.1.022 Oct 2026PAL, NTSC-U60.2 KBinterface 1.1+

    Built by the build workflow from 5b6b2693c90695ba9ecc55ff198c52e328b5eec5, against the OpenRAC mod SDK 1.2.1.

    Install: paste this repository's address in the OpenRAC launcher's Mods tab, or add a .zip there.

    Didn't open?

    Install opens the OpenRAC launcher, which installs the mod and everything it needs. If nothing happened, the launcher is probably not installed yet.

    Already have it? Try again, or copy the link and paste it in the launcher under Mods → Add from a link.

    Get the launcher
  • v1.0.022 Oct 2026PAL, NTSC-U60.5 KBinterface 1.1+

    Built by the build workflow from 9ed9d0f549ae0ec4a1353376860aecabf3fe0881, against the OpenRAC mod SDK 1.2.0.

    Install: paste this repository's address in the OpenRAC launcher's Mods tab, or add a .zip there.

    Didn't open?

    Install opens the OpenRAC launcher, which installs the mod and everything it needs. If nothing happened, the launcher is probably not installed yet.

    Already have it? Try again, or copy the link and paste it in the launcher under Mods → Add from a link.

    Get the launcher

Files

8 files in v1.2.3
  • lib/
    • android-arm64/
      • difficulty.so
    • linux-aarch64/
      • difficulty.so
    • linux-x86_64/
      • difficulty.so
    • macos-arm64/
      • difficulty.dylib
    • macos-x86_64/
      • difficulty.dylib
    • windows-x86_64/
      • difficulty.dll
  • openrac-mod.json
  • README.md

Comments

No comments yet. Tried it? Say how it went.

Comment on GitHub

Didn't open?

Install opens the OpenRAC launcher, which installs the mod and everything it needs. If nothing happened, the launcher is probably not installed yet.

Already have it? Try again, or copy the link and paste it in the launcher under Mods → Add from a link.

Get the launcher
Version
v1.2.3
Size
635.0 KB
Updated
2d ago
Discs
Ratchet & Clank: PAL, NTSC-U
Systems
Linux, Linux ARM, Windows, macOS, macOS Intel, Android
License
GPL-3.0-or-later
Downloads
336

⚠ Runs native code on your computer. Every file is checked against the signed mod list before use.

Install opens the OpenRAC launcher, which adds what the mod needs and keeps it up to date.

Difficulty · v1.2.3 · ⚠

Didn't open?

Install opens the OpenRAC launcher, which installs the mod and everything it needs. If nothing happened, the launcher is probably not installed yet.

Already have it? Try again, or copy the link and paste it in the launcher under Mods → Add from a link.

Get the launcher