Skip to content

Client data fixes v1.0.0 — b303 (2022-02-11)

Latest

Choose a tag to compare

@JordanRO2 JordanRO2 released this 05 Aug 11:06
· 23 commits to main since this release
cbee033

Patched client data archives for Ragnarok Online 2 build 303 (2022-02-11).

Drop these four files into your client's Data folder, replacing the existing ones.
Back up your originals first — or restore them from a clean client install, they are unmodified stock files.

file md5
ITEM.VDK 3e576b5946a86eed045c387e85574020
ACTOR.VDK 530841dca2d67fd7dde1297a90138c42
ITEM1.VDK f78b100cb8760d8e2ad200b13e5a8cb1
DATA.VDK 7b99f8d05369b6cd61d214635de2c1a7
Rag2.exe f8e7a86b0c3be00d3441909c43eb2a3b

Verify with MD5SUMS.txt / SHA256SUMS.txt before installing. Rag2.exe goes in SHIPPING, not Data.

Executable fixes (28)

Rag2.exe carries byte patches on top of the stock build 303 executable — 324 bytes changed plus a small added code section. Highlights:

Large-Address-Aware. The stock client is capped at 2 GB of virtual address space and dies once it crosses that, usually after an hour or several zone loads. The crash shows up under half a dozen different signatures — writes to address 0 in zone loading, an int 3 in the SpeedTree allocation-failure handler, assorted null dereferences — all from the same root cause. This lifts the cap to 4 GB.

Crash guards. Dungeon-entry null dereference plus 38 null-vtable-call guards on RMI and UI paths, derived from real minidumps — including one on the item-tooltip path (a re-entrant null vtable call caught live), one on the honing/polishing packet path, one on the equipment-UI skill-name path, and one on the skill-icon linked-UI teardown path.

Quality and performance. 16x anisotropic filtering, full-resolution textures, high-quality shaders kept at far and mid LOD, no per-frame Sleep(0), inlined hot-loop singleton getters, view-cone culling.

Run python exe/patch_client.py --list in this repository for the full catalog of all 72 fixes and which are on by default.

What is fixed

Soulmaker doll stray shadow. A doll cast a shadow at another player's feet instead of its owner's. SOULDOLL_28.nif was the only doll mesh using CPU skinning; its only GPU-readable geometry held the bind pose, which is authored at the character origin, so any frame drawn before the CPU deform finished put a doll-shaped silhouette on the ground.

Hanbok (Woman) statue deformation. On a Noel ranking statue the dress stretched away toward other models. Same root cause: the statue render path assigns a GPU-skinning shader based on whether a mesh has a skinning modifier, never on whether that modifier is GPU-capable — so a CPU-skinned mesh got a shader whose bone matrices were never uploaded, and it drew with whatever the previous statue left behind.

Chieftain Great Sword rendering inside-out. TWOHANDSWORD_09.nif was authored fully inverted — both triangle winding and normals — so the two agreed with each other while both faced inward. Both are corrected; the model now matches healthy weapons on face orientation and normal agreement alike. Also affects five other items sharing that mesh.

Odinguitar (Noel) inside-out. The four Noel variants had the same defect. Their non-Noel siblings measured correct and are untouched.

Stolen Dartboard showing flowers on male humans. Comemark_Male_Back_01.nif was the Flower umbrella asset packaged under the wrong filename. It shipped correct in 2014-2015 builds and broke by 2021. Replaced with the human-female file, which measures geometrically identical to the genuine 2015 male one.

103 meshes moved from CPU to GPU skinning, across 40 files — costumes, weapons, monsters, NPCs and player transform models. Only 104 of the client's 32,949 skinned meshes used the CPU path at all; it was an authoring accident rather than a design choice.

Modernised shaders, carried over from earlier work: per-texel specular driven by the artist's gloss and mask maps rather than one uniform highlight, plus SSAO and outline defaults.

Clean (stock) archives

The four *.clean.VDK files are the unmodified stock archives — byte-for-byte the original
build 303 (2022-02-11) data, provided for reverting or verification. To use one, rename it to drop
.clean (e.g. ITEM.clean.VDKITEM.VDK) and drop it in Data.

file md5
ITEM.clean.VDK c82ccc877218e2586400ce6c1a151925
ACTOR.clean.VDK 9560d9eece500dc162e90ebd8f95d9b2
ITEM1.clean.VDK 5402c004f0dc4603fbcb45e5e9eceb26
DATA.clean.VDK 51477073c54cb475da73d3fe4e978a59

Reverting

Restore the four stock archives and the stock Rag2.exe from a clean client. Every file here is rebuildable from the pristine 2022-02-11 archives plus the sources in this repository, so nothing is lost by going back.