Map Merger: Difference between revisions

From BeeStation Wiki
Jump to navigation Jump to search
imported>Jordie0608
No edit summary
(Latest from TG (Licensed CC-BY-NC-SA 4.0))
 
(16 intermediate revisions by 6 users not shown)
Line 1: Line 1:
Before any change to a map, it is good to use the Map Merger tools. What these do is cut down the number of lines which Dream Maker thinks have changed, since it usually interprets any change to the map as a rewrite of all ~8000 lines.
BeeStation uses a tool called the '''Map Merger''' to make map changes easier for maintainers to review and less likely to conflict with map changes made by others.


The Map Merger tools presently only work for windows as they utilize .bat files.
There are a few ways of running the tool. If you have trouble or need help, ask in the Discord.


If you have difficulty using these tools, ask for help in [[Community|#coderbus]]
'''Summary''': for best results, open the <code>tools/hooks/</code> folder and double-click <code>Install.bat</code> to install the hooks, which will handle things automatically.
==TGM format conversion ==
The "map merge" operation describes the process of converting a map file written by the DreamMaker map editor to:
#Use a format more amenable to Git's conflict resolution, called "TGM" and originally developed by Remie. The TGM map format is like the standard Dream Maker map format, but arranged differently, meaning Dream Maker is able to open TGM maps.
#Keep the size of the difference between the old version and the new version of the map as small as possible.
This is accomplished by referencing the changed version of the map against the old version stored in the Git history.
=== Use as a Git hook (recommended)===
#'''Install the hook''': Open the <code>tools/hooks/</code> folder and double-click <code>Install.bat</code>
#*Linux users: run <code>tools/hooks/install.sh</code>
Once complete, the map merger will run '''automatically''' every time you commit in Git. The console log can be reviewed if there are any errors.
===Or: Run manually before committing===
You can also manually run a .bat file just before each time you commit:
#Ensure you have saved all your changes
#Open the <code>tools/mapmerge2/</code> folder and double-click <code>Run Before Committing.bat</code>
#Commit
===If you forgot to map merge===
For first-time contributors who committed map edits without map merging, a script is available to automatically commit a fix to your PR branch:
#Ensure you have no unsaved changes
# Open the <code>tools/mapmerge2/</code> folder and double-click <code>I Forgot To Map Merge.bat</code>
#Push your branch
==Automatic conflict resolver==
We also have a rudimentary conflict resolver to cover some cases that the TGM conversion couldn't prevent.


== Using the tools ==
When run, the console output will indicate whether further manual action is needed, including conflicting coordinates.
{|
=== Use as a Git hook===
|-
#'''Install the hook''': Open the <code>tools/hooks/</code> folder and double-click <code>Install.bat</code>
|'''1. Install Java'''
#*Linux users: run <code>tools/hooks/install.sh</code>
|If you don't have Java already installed it can be downloaded from: [http://www.java.com/en/download/index.jsp]
Once complete, the conflict resolver will run '''automatically''' every time you merge in Git.
|-
===Or: Resolve conflicts on an in-progress merge===
|'''2. PATH Java'''
If you are using a Git GUI which does not run the hook on merge, you can also run the conflict resolver on an in-progress merge by request:
|To test if Java is in your PATH, open Git Bash and type "Java". If it says "unknown command" you will need to add JAVA/bin to your PATH. See here for how: [https://www.java.com/en/download/help/path.xml]
#Open the <code>tools/mapmerge2/</code> folder and double-click <code>Resolve Map Conflicts.bat</code>
|-
#*Linux users: run <code>tools/hooks/dmm.merge --posthoc</code>
|'''3. Backup'''
Note that to use this, you must merge your updated local master branch into the branch with conflicts so that your Git GUI reports a conflict on the map file.
|It's not strictly necessary to, but usually a good idea to make a backup of your map at this point.
|-
|-
|'''4. Prepare map'''
|Run prepare_Map.bat in the tools/mapmerge/ directory.
|-
|'''5. Edit your map'''
|Make your changes to the map here. Remember to save them!
|-
|'''6. Clean map'''
|Run clean_Map.bat in the tools/mapmerge/ directory. Don't worry if it says there are ~8000 differences, just ignore that for now.
|-
|'''7. Check differences'''
|Use your application of choice to look at the differences between revisions of your code. If it's reading ~8000 line differences then you've done something wrong, go back and try again.
|-
|'''8. Commit'''
|Your map is now ready to be committed, rejoice.
|}


== Editing different maps ==
The Map Merger tools are configured for the main map, presently tgstation 2.1.3, and will not work if you're trying to edit a different map. To fix this, open both prepare_map.bat and clean_map.bat and change "set MAPFILE=tgstation.2.1.3.dmm" to the map which you're trying to edit. For instance, if you want to use the Map Merger tools for a map called "MyFirstMap.2", you would change it to "set MAPFILE=MyFirstMap.2".
[[Category:Guides]] [[Category:Game Resources]]
{{Contribution guides}}
{{Contribution guides}}

Latest revision as of 03:19, 29 March 2023

BeeStation uses a tool called the Map Merger to make map changes easier for maintainers to review and less likely to conflict with map changes made by others.

There are a few ways of running the tool. If you have trouble or need help, ask in the Discord.

Summary: for best results, open the tools/hooks/ folder and double-click Install.bat to install the hooks, which will handle things automatically.

TGM format conversion

The "map merge" operation describes the process of converting a map file written by the DreamMaker map editor to:

  1. Use a format more amenable to Git's conflict resolution, called "TGM" and originally developed by Remie. The TGM map format is like the standard Dream Maker map format, but arranged differently, meaning Dream Maker is able to open TGM maps.
  2. Keep the size of the difference between the old version and the new version of the map as small as possible.

This is accomplished by referencing the changed version of the map against the old version stored in the Git history.

Use as a Git hook (recommended)

  1. Install the hook: Open the tools/hooks/ folder and double-click Install.bat
    • Linux users: run tools/hooks/install.sh

Once complete, the map merger will run automatically every time you commit in Git. The console log can be reviewed if there are any errors.

Or: Run manually before committing

You can also manually run a .bat file just before each time you commit:

  1. Ensure you have saved all your changes
  2. Open the tools/mapmerge2/ folder and double-click Run Before Committing.bat
  3. Commit

If you forgot to map merge

For first-time contributors who committed map edits without map merging, a script is available to automatically commit a fix to your PR branch:

  1. Ensure you have no unsaved changes
  2. Open the tools/mapmerge2/ folder and double-click I Forgot To Map Merge.bat
  3. Push your branch

Automatic conflict resolver

We also have a rudimentary conflict resolver to cover some cases that the TGM conversion couldn't prevent.

When run, the console output will indicate whether further manual action is needed, including conflicting coordinates.

Use as a Git hook

  1. Install the hook: Open the tools/hooks/ folder and double-click Install.bat
    • Linux users: run tools/hooks/install.sh

Once complete, the conflict resolver will run automatically every time you merge in Git.

Or: Resolve conflicts on an in-progress merge

If you are using a Git GUI which does not run the hook on merge, you can also run the conflict resolver on an in-progress merge by request:

  1. Open the tools/mapmerge2/ folder and double-click Resolve Map Conflicts.bat
    • Linux users: run tools/hooks/dmm.merge --posthoc

Note that to use this, you must merge your updated local master branch into the branch with conflicts so that your Git GUI reports a conflict on the map file.

Contribution guides
General Development, Downloading the source code / hosting a server, Guide to git, Game resources category, Guide to changelogs
Database (MySQL) Setting up the database, MySQL
Coding Understanding SS13 code, SS13 for experienced programmers, Binary flags‎, Text Formatting, Guide to signals
Mapping Guide to mapping, Map merger, Exploration Ruins
Spriting Guide to spriting
Wiki Guide to contributing to the wiki, Wikicode