Map Merger: Difference between revisions

From BeeStation Wiki
Jump to navigation Jump to search
imported>Thot slayer
m (close dreammaker ffs)
imported>SpaceManiac
(Rewrite for commit hook-based mapmerge)
Line 1: Line 1:
/tg/station uses a tool called the '''Map Merger''' to minimize differences between versions of maps and lay them out in a format known as TGM, developed by Remie. This makes changes easier for maintainers to review and less likely to conflict with changes made by others.


Before any change to a map, it is good to use the Map Merger tools. In a nutshell, it rewrites the map to minimize differences between different versions of the map (DreamMakers map editor rewrites a lot of the tile keys). This makes the git diff between different map changes much smaller. More recently a new way of laying out the map was invented by Remie, called TGM, this helps to further reduce conflicts in the map files.
There are two ways of running the tool, each requiring some amount of setup. If you have trouble or need help, ask in [[Community|#coderbus]].


This is good for a few reasons
== Basic Setup ==


1) Maintainers can actually verify the changes you are making are what you say they are by simply viewing the diff (For small changes at least)
# '''Install Python 3.6 or greater''': If you don't already have Python installed, [https://www.python.org/downloads/ download and install] version 3.6 or greater.
# '''Ensure Python is in your PATH''': For Windows users, ensure that you check the "Add Python 3.6 to PATH" option in the installer.
# '''Install dependencies''': For Windows users, run <code>tools/mapmerge2/requirements-install.bat</code>. Non-Windows or advanced users can manually run <code>python -m pip install tools/mapmerge2/requirements.txt</code>.


2) The less changes there are in any given map diff, the easier it is for git to merge it without running into unexpected conflicts, which in most cases you have to either manually resolve or require you to remap your changes
== Use as a Git Commit Hook ==


This method requires slightly more setup, and requires you to be using git rather than just downloading the source, but requires no manual intervention after setup. For this reason, it is the recommended method.


However - to do all this is going to require you to put some elbow grease into understanding the map merger tool.
# '''Install the hook''': Windows users run <code>tools/hooks/install.bat</code>. Other platforms run <code>tools/hooks/install.sh</code>.


If you have difficulty using these tools, ask for help in [[Community|#coderbus]]
Now, any time you create a commit, the map merger runs automatically and bases your changes on top of the previous version of the map stored in git. The dialog box or console output of the commit will show the map merger's log. You can check the git commit log to review changes, or run <code>tools/mapmerge2/precommit.py</code> manually to review changes before comitting.


== Using the tools ==
== Manual Use ==
{|
|-
|'''1. Install Python 3.5 or greater'''
|If you don't have Python already installed it can be downloaded from: https://www.python.org/downloads/ - make sure you grab the latest python 3, again, it must be 3.5 or greater
|-
|'''2. PATH Python'''
|This step is mostly applicable to windows users, you must make sure you ask the windows installer to add python to your path.
|-
|
|This image shows the correct setting to ensure is set https://file.house/DA6H.png
|-
|'''3. Prepare Maps'''
|Run "Prepare Maps.bat" in the tools/mapmerge/ directory.
|-
|'''4. Edit your map'''
|Make your changes to the map here. Remember to save them!
|-
|'''4a. Exit DreamMaker'''
|We're about to rewrite the entire MAP into a better format that works better with git, if DreamMaker is still open you may accidentally resave the map or autosave, undoing the next step.
|-
|'''5. Clean map'''
|Run "Run Map Merge - TGM.bat" in the tools/mapmerge/ directory.
|-
|'''7. Check differences'''
|Use your git application of choice to look at the differences between revisions of your code and commit the result.
|-
|'''8. Commit'''
|Your map is now ready to be committed, rejoice and wait for conflicts.
|}


==Gotcha's==
This is the older method, and is simpler but requires careful manual use each time you want to make changes to the map. Each time you want to edit a map, follow these steps:
*Reviewing the map in dreammaker after mapmerging but before committing changes to git., this will cause DreamMaker to rewrite it back to the dmm format, stage your maps with git add, then view in dreammaker and once you've verified they look good, use git commit (not restaging) to commit the changes
 
*Leaving DreamMaker open while running mapmerger, can sometimes cause DreamMaker to write over the TGM's changes
# '''Prepare maps''': Run <code>tools/mapmerge/Prepare Maps.bat</code> to save a backup of all maps in their current state.
[[Category:Guides]] [[Category:Game Resources]]
# '''Make your changes''': Don't forget to save.
{{Contribution guides}}
# '''Exit DreamMaker''': Optional, but ensures that you don't accidentally undo the map merger's work.
# '''Run the map merger''': Run <code>tools/mapmerge2/mapmerge.bat</code> and select the map you edited to merge.
 
== Gotchas ==
 
Leaving the map open in DreamMaker or reviewing it after running the map merger makes it possible to accidentally save and overwrite the merged map with an unmerged map. Close DreamMaker entirely before running the map merger or be extra-careful not to overwrite the changes the map merger made.

Revision as of 01:33, 29 December 2017

/tg/station uses a tool called the Map Merger to minimize differences between versions of maps and lay them out in a format known as TGM, developed by Remie. This makes changes easier for maintainers to review and less likely to conflict with changes made by others.

There are two ways of running the tool, each requiring some amount of setup. If you have trouble or need help, ask in #coderbus.

Basic Setup

  1. Install Python 3.6 or greater: If you don't already have Python installed, download and install version 3.6 or greater.
  2. Ensure Python is in your PATH: For Windows users, ensure that you check the "Add Python 3.6 to PATH" option in the installer.
  3. Install dependencies: For Windows users, run tools/mapmerge2/requirements-install.bat. Non-Windows or advanced users can manually run python -m pip install tools/mapmerge2/requirements.txt.

Use as a Git Commit Hook

This method requires slightly more setup, and requires you to be using git rather than just downloading the source, but requires no manual intervention after setup. For this reason, it is the recommended method.

  1. Install the hook: Windows users run tools/hooks/install.bat. Other platforms run tools/hooks/install.sh.

Now, any time you create a commit, the map merger runs automatically and bases your changes on top of the previous version of the map stored in git. The dialog box or console output of the commit will show the map merger's log. You can check the git commit log to review changes, or run tools/mapmerge2/precommit.py manually to review changes before comitting.

Manual Use

This is the older method, and is simpler but requires careful manual use each time you want to make changes to the map. Each time you want to edit a map, follow these steps:

  1. Prepare maps: Run tools/mapmerge/Prepare Maps.bat to save a backup of all maps in their current state.
  2. Make your changes: Don't forget to save.
  3. Exit DreamMaker: Optional, but ensures that you don't accidentally undo the map merger's work.
  4. Run the map merger: Run tools/mapmerge2/mapmerge.bat and select the map you edited to merge.

Gotchas

Leaving the map open in DreamMaker or reviewing it after running the map merger makes it possible to accidentally save and overwrite the merged map with an unmerged map. Close DreamMaker entirely before running the map merger or be extra-careful not to overwrite the changes the map merger made.