Version Control

From the Oblivion ConstructionSet Wiki
Jump to navigation Jump to search



What is Version Control?

During production on Oblivion, the content team -- artists, producers and designers -- used version control as a way for everyone to work on content in the oblivion master file simultaneously without overwriting each other's work. Version control is a way for multiple users to work on content at the same time, and also provides a way for merging plugins into the master file.

Version Control Workflow

A copy of the master file (oblivion.esm) resides on the network with corresponding FID and FUD (oblivion.fid, oblivion.fud) files. Each user also has their own local copy of the master file, which is what the editor loads. If you look at the folder where Oblivion is installed, you'll see the executables that run the game and the editor reside in the root folder, and the master file is in the Data subfolder.

The FID file is used to track which form IDs have been used and the FUD file is used to track which users have which forms checked out. The master file contains all the data. Each user has a unique ID, generated as needed and stored in the ConstructionSetNetwork.ini file on the network. When a user changes any form in the editor it gets checked out to them by marking the form's entry in the FUD file with their ID.

When a user has made changes they want to save, the data is saved locally into a plugin file (mychanges.esp). The plugin file will be familiar to modders. All Oblivion DLC content (Horse Armor, etc...) are contained in plugin files, as are fan made mods.

These local changes are put into the shared master file by checking them in through the version control dialog. This clears the FUD user data for the checked in forms, removes them from the local ESP file and replaces their data in the network master file with the new data. Additionally, new forms are assigned an unused ID by checking the FID file and then inserted into the network master file.

Constructionset.ini Settings

[General]
bUseVersionControl=1 - this turn on version control functionality in the editor
SNewVersionBackupPath=\\SERVER\tes4\oblivion\VersionBackup\ - this is the folder where back up copies are put on check in
SNetworkMasterPath=\\SERVER\tes4\oblivion\Data\ - this is the path to the master file (ESM) used for check in
SNetwork Path=\\SERVER\tes4\oblivion\ - this is the path to the ConstructionSetNetwork.ini file

The paths need to be full UNC paths where the first entry is the name of a computer.

You can also do all this locally on your own computer. Working locally you still must specify a machine name. For example:

SNetworkMasterPath=\\ComputerName1\c$\Projects\PS3\Oblivion\game\data\

Make sure you update all three paths to use the local computer path name.

The [WhoCanMerge] section of the constructionset.ini turns on special functionality in the File Details window for any user. In the INI you were given you'd want to replace "acheng=1" with your login ID instead.

Special Data Functions with Construction Set

In the Data files window where you select the master file and plugin files you want to load, there is a "Details" button. Clicking this will open the File Details window for the selected file. The File Details window displays a list of every FORM in the file. There is a lot of maintenance functionality tucked away in here. Select any item in the list to use these functions. Some highlights are:

Ctrl+Shift+O- creates the optimized version of the ESM for consoles
Ctrl+Shift+B- regenerates the FID and FUD files from the currently loaded data - I think this creates them from scratch, too.
Ctrl+Shift+V- validates the file by verifying that version control can find all of the currently loaded forms in the file. This won't find every offset problem but is a quick way to verify group sizes.
Ctrl+Shift+U- updates the size of the selected group form based on the data it finds in the file

System Requirements

Make sure you have at least 1 GB of RAM (2 GB is optimal), a P4 2.4 GHz processor or faster, and at least 1 GB of free hard drive space as this is very memory and CPU intensive.