Releases: VIRUXE/rage-cli
Release list
rage-cli 0.18.0
Maps, manifests and exterior plots.
resource info now reads map data, not just drawables and textures: a .ymap's name, parent, flags, streaming and entity extents and an entity table (archetype, position, heading, scale, lod distance, flags; --limit N, --json); a .ytyp's archetypes and interiors; a _manifest.ymf's dependencies in PSO, RBF or XML form. Names come from the built-in list, the harvested list, --names FILE and the stems of files next to the one inspected.
resource dump writes any Meta or PSO file (.ymap .ytyp .ymt .ymf .pso) out whole, as XML in CodeWalker's layout or as JSON.
rage names harvest | info | lookup: the hash-to-name list, built from the game's own archives (every file stem and every name in its XML metadata; a couple of minutes), kept in ~/.rage-cli/names.txt or RAGE_NAMES.
plot draws exterior maps: each entity marked where it stands, with its model placed there from the folder or from the game through the index, else its bounding box, else its mark (--props N, --no-props). The default scale lowers itself to fit large areas. On an interior plot only entities near the interior are drawn, so a resource's bundled vanilla chunks no longer frame the page.
The game index gained drawable locations and archetype asset bindings (cache format 7): run rage index build again (about 7 minutes on a Steam install). Depends on rage-formats 0.2 and rage-render 0.2.
🤖 Generated with Claude Code
rage 0.17.3
Placement dedupe for vanilla interiors measures "the same spot" as a 0.5 m distance rather than a per-axis box, and the plain entity lists of a superseded .ymap are collapsed by the same rule, per archetype, so the placement fallback never sees the interior twice. No other changes.
rage 0.17.2
Polish release for rage plot, on rage-render 0.1.1.
Fixed
- Resource folders: a directory link pointing back at its own parent no longer recurses forever; a subdirectory that cannot be read is skipped with one stderr line instead of aborting the plot; linked files are still drawn.
- The drawable limit is now "fewer than 200" as documented (200 exactly used to load).
- Vanilla interiors: the index keeps every
.ymapthat places an interior (two unrelated maps sharing a file name no longer hide each other) andplotcollapses placements within 0.5 m, so a DLC copy replaces the base game's. The index cache is format 6 and rebuilds itself on first use;rage index infonow reports placement rows. - Labels (rage-render 0.1.1): placement reserves the text halo so labels never touch; labels that fall off the map are counted apart from crowded ones and are never dropped early; each SVG gets its own clip-path id so several plans can share one page; SVG labels adjust letter spacing rather than stretching glyphs; raster text respects the map clip.
Tests
- The multi-interior warning ("N interiors loaded, drawing X") now has an automated test.
rage 0.17.1
Fixed
rage plot: interiors whose.ytypstores room boxes as half-extents around a point other than the MLO origin (v_bahama, for one) drew as concentric rooms with a tiny limbo. Rooms that nest inside each other are now recognised as unpositioned and their footprints estimated from props and portals, as already happened for origin-centred boxes.
Docs
- A Samples table in the README: one picture per kind of media
ragewrites (PNG, JPEG, WebP and SVG plans; grid, single-view, painted and transparent renders; single textures and contact sheets; navmesh and collision OBJ files), each with the command that produced it. The plot samples are the cat cafe interior over its navmesh and Bahama Mamas from the game files.
rage 0.17.0
The first release since v0.13.0 under the new name: the binary is rage, built on the published rpf-archive 0.10, rage-formats 0.1 and rage-render 0.1 crates. rage update keeps working from any installed build; see "Upgrading from rpf-cli" in the README if you still run rpf.
rage plot — a top-down plan of an interior (0.17.0)
rage plot <input>... -o plan.svg draws a floor-plan of an MLO from whatever it is given: a FiveM resource folder, loose .ytyp/.ymap/.ybn/.ydr/.ynv files, or a vanilla interior by archetype name through the game index (rage plot v_bahama -o plan.png).
- Rooms coloured and named, portals on the doorways (exterior ones dashed), props as labelled dots, collision floors and walls underneath, navmesh polygons on top.
- Grid with world-coordinate ticks, scale bar, north arrow, legend and a caption that says where the placement came from.
--floor-z Zor--z-range LO,HIdraws one storey; a warning tells you when rooms stack.--layerspicks layers;--labelsnames portals and props;--marker x,y,labelpins points.- PNG, JPEG, WebP or SVG by output extension. The SVG keeps labels as text and embeds the mesh layers as an image.
- Only the interior's own collision is placed through the MLO instance; vanilla world-space
.ybnchunks in the same folder are drawn where they are. Escrow-encrypted models are counted and skipped. When a.ytypstores room boxes as unpositioned half-extents, room footprints are estimated from props and portals.
rage navmesh plot is gone; it prints a pointer to rage plot. The game index is now format 5 (interiors, their placements and collision names); an old cache rebuilds itself, and rage index build is about 7% slower.
Since v0.13.0
- Renamed from
rpf-clitorage-cli; the resource parsers and the renderer moved torage-formatsandrage-render. rage navmesh:info,cell,export,ybn-obj,buildandrewriteto inspect, fetch, export, generate (from collision, carving placed props out of the floor) and round-trip navmesh cells.rage screenshot: external texture dictionaries resolved through a game-wide index (gtxd parent chains, resident dictionaries as a fallback); the camera frames the dominant geometry island.- The index ranks archives base → update → DLC so later packs override earlier ones.
v0.13.0: 0.13.0: GitHub-based version checking and self-update
rpf update
- New
rpf update check/rpf update installcommands: check GitHub for a newer release, or download and install it in place. - A passive daily check (cached, silent, opt-out via
--no-update-check/RPF_NO_UPDATE_CHECK/CI) prints a one-line note on stderr when a newer release is available. Never delays a command — checked in the background, reported only after the command finishes. rpf update installverifies the downloaded binary against aSHA256SUMSfile, now published alongside every release, before replacing the running binary.
See the README's new "Updating" section for details.
v0.12.2
screenshotsummary now separates geometries whose shader has no diffuse texture (N with no diffuse) from ones whose texture is merely missing; no--ytdcan fill in the former. The clause is omitted when the count is zero and the untextured total is unchanged.
v0.12.1
screenshot --viewsrenders each view once, in first-seen order (iso,front,isono longer draws iso twice).--gridhelp and README state that the sheet keeps its own dark background regardless of--background.- Built on rpf-archive 0.9.1: drawables whose shaders bind their albedo as
TextureSampler(GTA IV / Max Payne 3 conversions) now render textured, and 18 label-font glyphs are back to the Adafruit reference shapes.
v0.12.0
screenshot renders .yft fragments with their wheels and physics children: the body is posed by the fragment's bone transforms and every child with a mesh is placed by its physics transform. Empty wheel slots borrow the front/rear wheel mesh; right-hand wheels are mirrored. The summary line reports part and wheel counts (e.g. 5 parts (4 wheels)). Built on rpf-archive 0.9.0.
v0.11.0
screenshot --paint #rrggbb
Vehicle bodies rendered white because the paint colour is not stored in the YFT (the game applies it at runtime from carcols metadata). --paint tints every geometry drawn with a vehicle_paint* shader and leaves glass, lights, tyres and interiors alone:
rpf screenshot ./nested/levels/gta5/vehicles.rpf adder.yft --views front,left,iso --grid --ytd adder --ytd vehshare --paint "#8b1a1a"
Built on rpf-archive 0.8.2 (RenderOptions::paint, is_vehicle_paint_shader). Closes #1.