Ncpatch

From Unofficial Homecoming Wiki
Jump to navigation Jump to search

Overview

ncpatch is the format used by NCsoft to distribute patches for City of Heroes using the NCsoft Launcher utility.

Format Description

The NCsoft Launcher distributes patches as compressed files with the extension ncpatch. The files are compressed using the RAR format (literally just renamed from .rar to .ncpatch).

Within the archive at the root is a folder with the same name as the containing archive, usually in the format of: CityOfHeroes_Main_$FromVersionTo$ToVersion, where $FromVersion is the version that is to be patched, and $ToVersion is the desired resulting/final version. Inside this folder is an xml file named PatchManifest.xml which instructs the NCsoft Launcher on how it should apply the patch, along with miscellaneous information such as MD5 checksums and file lengths (both pre- and post- patch).

Along with the PatchManifest.xml file, in the examined patch, is a folder named ProductFiles (defined in the manifest- name might be variable). This folder contains Xdelta based patches with the extension .X-D-E-L-T-A. Based on an examination of PatchManifest.xml, it would appear that only the changed files are named, and not with the patch file itself not explicitly named. The name of the patch file can be surmised based on the individual 'Path' elements defined in the manifest, with the extra extension .X-D-E-L-T-A, this makes it fairly simple simple to figure out what to patch, even if the manifest is ignored.

It should be fairly trivial to manually patch a City of Heroes installation, using only a program that can open RAR archives (such as WinRAR or the open source 7zip), along with the xdelta utility (a copy is actually present in the root of the NCsoft Launcher directory).


Example Layout of a Patch

This patch would update City of Heroes from version 1950.201102120907.1.0 to version 1950.201102230015.1.0. This patch will modify a total of 12 files, 2 in the City of Heroes installation directory, and 10 in the piggs subdirectory.

 CityOfHeroes_Main_1950.201102120907.1.0To1950.201102230015.1.0.ncpatch
     -> CityOfHeroes_Main_1950.201102120907.1.0To1950.201102230015.1.0
         -> PatchManifest.xml
         -> ProductFiles
             -> version.ini.X-D-E-L-T-A
             -> cityofheroes.exe.X-D-E-L-T-A
             -> piggs
                 -> bin.pigg.X-D-E-L-T-A
                 -> geom.pigg.X-D-E-L-T-A
                 -> geomBC.pigg.X-D-E-L-T-A
                 -> geomV1.pigg.X-D-E-L-T-A
                 -> geomV2.pigg.X-D-E-L-T-A
                 -> mapsMissions.pigg.X-D-E-L-T-A
                 -> misc.pigg.X-D-E-L-T-A
                 -> player.pigg.X-D-E-L-T-A
                 -> playerFemHuge.pigg.X-D-E-L-T-A
                 -> playerMale.pigg.X-D-E-L-T-A