Difference between revisions of "Version Control"

1,202 bytes removed ,  01:43, 31 August 2019
added supporting pages
imported>Qazaaq
(added see also)
imported>Qazaaq
(added supporting pages)
Line 1: Line 1:
What is Version Control?
<BR>
The [[Version Control]] system allows multiple developers to work simultaneously on a single [[Data File]].
The [[Version Control]] system allows multiple developers to work simultaneously on a single [[Data File]].
The [[Creation Kit]] does this by merging the contents of a multiple child plugins into a single master plugin.
During production of [[Fallout 4]], the team at Bethesda used ''version control'' as a way to manage multiple artists, producers, designers, and programmers all working together on the same content.
Using the version control system is essential to working on team projects.
The [[Creation Kit]] ''version control'' system is also capable of providing intergrations with conventional source control managers such as [[Perforce]] or [[Git]].
This page will document the process of mod collaboration with multiple contributors.
The primary way the [[Creation Kit]] provides ''version control'' is by merging the contents of a multiple child plugins into a single master plugin.
This document will not cover how to use external revision control software such as ''Perforce'', or ''Git''.
Using the ''version control'' system is essential to working on team projects.
 
This document will cover mod collaboration with multiple contributors.
This document will '''not''' cover how to use external revision control software such as [[Perforce]], or [[Git]].
This document assumes basic usage knowledge of the Creation Kit.
This document assumes basic usage knowledge of the Creation Kit.


= Setup =
= Setup =
Line 11: Line 15:
This will involve creating directories, network sharing folders, editing [[Initialization File]]s, and creating a master [[Data File]].
This will involve creating directories, network sharing folders, editing [[Initialization File]]s, and creating a master [[Data File]].


=== Understanding Data Files ===
The .esp files are "Bethesda Plugin Data Files"
* This is the standard file type created by the Creation Kit, to save your mod
* It contains all of the asset reference data used in your mod
<br />
The .esm files are "Bethesda Master Data Files"
* This is the file type you'll see used by DLC
* It contains the same information used by .esp files, but it can have references merged into it
<br />
In the context of using version control in the Fallout 4 Creation Kit:
* The .esm master file will be your primary mod file, containing all the level and asset reference data for your mod. When you're ready to distribute your mod, it's the .esm that you'll upload.
* The .esp file will be the file you and your project contributors use locally to make all your changes. After you merge your changes into the .esm file, the .esp won't contain any references
* The first time you save your mod, it will be saved as .esp (you do not have a choice)
* It will become .esm the first time you do a merge to prepare it for multi-contributor collaboration


=== Create Directories ===
=== Create Directories ===
Line 17: Line 37:
* <code>...\steamapps\common\Fallout 4\Merging\VersionBackup</code>
* <code>...\steamapps\common\Fallout 4\Merging\VersionBackup</code>
* <code>...\steamapps\common\Fallout 4\Data\CheckInBackup</code>
* <code>...\steamapps\common\Fallout 4\Data\CheckInBackup</code>


=== Enable Windows Sharing ===
=== Enable Windows Sharing ===
Line 34: Line 53:
* Make note of the '''Network Path''' displayed, you'll need this for the next step.
* Make note of the '''Network Path''' displayed, you'll need this for the next step.


=== Enable Version Control ===
{{Enable Version Control}}


=== Create Master File ===
== First merge and creation of your .esm file ==
The Creation Kit version control system will need a master [[Data File]] to merge child plugins into.
Regardless of the content, once the mod has been saved as an <code>*.esp</code>, you must perform a first merge to create your initial <code>*.esm</code> file.
There are various ways to create new master files with community made software.
Some of these include [[XEdit]], [[Wrye Bash]], or any hexidecial editor.
There are even more software projects that can be found with an internet search.
 
Create a new master plugin.
 
 
=== User Information ===
Use the windows command line to get your ''User Name'' and ''Computer Name''.
You can optionally execute the batch file below to get configuration information.
 
====== VersionControl.bat ======
<source lang="winbatch">
@ECHO OFF
ECHO Use these values to configure the Creation Kit version control system.
ECHO.
ECHO Computer Name: %COMPUTERNAME%
ECHO User Name: %USERNAME%
ECHO.
PAUSE
</Source>
 
====== Example Output ======
<source lang="text">
Use these values to configure the Creation Kit version control system.
 
Computer Name: KS07
User Name: Scrivener07
 
Press any key to continue . . .
</Source>
 
 
=== Initialization Files ===
* Navigate to the <code>...\steamapps\common\Fallout 4</code>, the Fallout 4 directory.
* Open\Create the <code>CreationKitCustom.ini</code> [[Initialization File]].
* Populate the <code>CreationKitCustom.ini</code> with the following:
<source lang="ini">bUseVersionControl=1</source>
 
* Add the following lines (anywhere under the "[General]" heading):
 
<source lang="ini">
SNetwork Path=\\COMP-NAME\Merging\
SNewVersionBackupPath=\\COMP-NAME\Merging\VersionBackup\
SNetworkMasterPath=\\COMP-NAME\Merging\Data\
SLocalBackupPath=Data\CheckInBackup\
</source>
* Note:
*: - There is a space in "SNetwork Path"
*: - Replace "COMP-NAME" with your computer name, displayed on the window in the above screenshot
*: - Do not omit the "\" at the end of the paths above, or this will not work properly
*: [[File:versioncontrol_creationkit.png]]
 
 
* Finally, open "CreationKitPrefs.ini"
* Scroll to the bottom of the file, and add the following lines
<source lang="ini">
[WhoCanMerge]
YOURWINDOWSUSERNAME=1
</source>
* Note:
*: - Replace "YOURWINDOWSUSERNAME" with your actual windows username
*: [[File:versioncontrol_creationkitprefs.png]]
 


= Understanding Data Files =
* Navigate to your <code>...\Steam\steamapps\Common\Fallout 4\Data</code> directory.
<br />
* Copy "Fallout4.esm" to <code>...\Steam\steamapps\Common\Fallout 4\Merging\Data</code>.
.esp files are "Bethesda Plugin Data Files"
** If you don't copy this file, the merge process will error out.
* This is the standard file type created by the Creation Kit, to save your mod
* Next, open your <code>*.esp</code> as the ''Active File''
* It contains all of the asset reference data used in your mod
* After the file has finished loading in the Creation Kit, click "File" -> "Data...", or the open folder icon.
<br />
.esm files are "Bethesda Master Data Files"
* This is the file type you'll see used by DLC
* It contains the same information used by .esp files, but it can have references merged into it
<br />
In the context of using version control in the Fallout 4 Creation Kit:
* The .esm master file will be your primary mod file, containing all the level and asset reference data for your mod. When you're ready to distribute your mod, it's the .esm that you'll upload.
* The .esp file will be the file you and your project contributors use locally to make all your changes. After you merge your changes into the .esm file, the .esp won't contain any references
* The first time you save your mod, it will be saved as .esp (you do not have a choice)
* It will become .esm the first time you do a merge to prepare it for multi-contributor collaboration
 
 
== First merge and creation of your .esm file ==
<br/>
Once you've saved your mod as a .esp (regardless of the content), you must do a first merge to create your initial .esm file:
<br/>
* Navigate to your "Fallout 4\Data" directory
* Copy "Fallout4.esm" to "Fallout 4\Merging\Data"
** If you don't copy this file, the merge process will error out
* Next, open your .esp as the Active File
* After the file has finished loading in the Creation Kit, click "File" -> "Data..." (or the open folder icon)
* Select "Fallout4.esm" in the list, and click "Details..."
* Select "Fallout4.esm" in the list, and click "Details..."
*: [[File:versioncontrol_data_Details.png]]
*: [[File:versioncontrol_data_Details.png]]
* When asked "Do you want to use an empty list to save memory?", click "Yes"
* When asked "Do you want to use an empty list to save memory?", click '''Yes'''.
* You'll now be shown a new popup titled "File Details", but it will have no contents.
* You'll now be shown a new popup titled '''File Details''', but it will have no contents.
** On your keyboard, press Shift+Ctrl+B
** On your keyboard, press {{key press|Shift|Ctrl|B}}.
* You'll be asked if you want to update the Bit Array Files, and warned it can take several minutes. Of course, click "Yes".
* You'll be asked if you want to update the '''Bit Array Files''', and warned it can take several minutes. Of course, click '''Yes'''.
*: [[File:versioncontrol_update_bit_array_file.png]]
*: [[File:versioncontrol_update_bit_array_file.png]]
* When it's finished, you'll see "Updating bit arrays...Done" in the bottom status bar of the main window
* When it's finished, you'll see "Updating bit arrays...Done" in the bottom status bar of the main window.
*: [[File:versioncontrol_update_bit_array_done.png]]
*: [[File:versioncontrol_update_bit_array_done.png]]
<br/>
<br/>
Now you're ready to create your .esm file!
Now you're ready to create your .esm file!
* Ensure the .esp mod file has been opened as the Active File (this should have been done earlier, but do it again if you restarted the Creation Kit)
* Ensure the <code>.esp</code> mod file has been opened as the ''Active File''. This should have been done earlier, but do it again if you restarted the [[Creation Kit]].
* You'll notice that you have a new little Version Control icon from when we enabled it in the Creation Kit. Click it.
* You'll notice that you have a new ''Version Control'' [[File:Version Control Icon.png]] icon on the [[Editor_Interface#Toolbar|Editor Toolbar]]. '''Click it'''.
*: [[File:versioncontrol_button.png]]
*: [[File:versioncontrol_button.png]]
* For this tutorial, I created "MyMod.esp", and I duplicated the "aaaMarkers" Cell from the base game Fallout4.esm
* For this tutorial, I created "MyMod.esp", and I duplicated the "aaaMarkers" Cell from the base game Fallout4.esm
Line 218: Line 156:
<br/>
<br/>
<br/>
<br/>
== Merge process and workflow of the individual team member ==
== Merge process and workflow of the individual team member ==
<br/>
<br/>
Line 267: Line 204:
* [[CreationKit.ini]]
* [[CreationKit.ini]]
* [[CreationKitPrefs.ini]]
* [[CreationKitPrefs.ini]]
* [https://support.microsoft.com/en-us/help/4092694 File sharing over a network in Windows 10].
 
== Links ==
* [https://www.creationkit.com/index.php?title=Version_control Skyrim - Version Control]
* [https://www.creationkit.com/index.php?title=Version_control Skyrim - Version Control]
* [https://www.creationkit.com/index.php?title=Mod_Merging Skyrim - Mod Merging]
* [http://geck.bethsoft.com/index.php?title=Version_Control Fallout 3 & New Vegas - Version Control]
* [https://cs.elderscrolls.com/index.php?title=Version_Control Elder Scrolls III & IV - Version Control]
* [https://support.microsoft.com/en-us/help/4092694 File sharing over a network in Windows 10 at Microsft.com].
* [https://www.perforce.com/ Perforce - Source Control Manager]
* [https://git-scm.com/ Git - Source Control Manager]
* [http://wiki.tesnexus.com/index.php/Version_control_primer Elder Scrolls IV - Version Control Primer at NexusMods.com]
* [https://www.youtube.com/watch?v=6eInvAyMXoI Wheeze's Creation Kit Tutorials - Skyrim Version Control]
* [https://www.youtube.com/watch?v=6eInvAyMXoI Wheeze's Creation Kit Tutorials - Skyrim Version Control]
* [https://www.perforce.com/ Perforce - Source Control Manager]
* [https://git-scm.com/ git - Source Control Manager]




[[Category:Editor Reference]]
[[Category:Editor Reference]]
[[Category:Tutorials]]
[[Category:Tutorials]]
Anonymous user