Save System

From Titan Land LoP Wiki

The main feature that motivated Titan Land Lands of Plenty's development was the SaveNLoad system, developed in late 2016 by SonGuhun. The system originally used an external program and the in-game chat in order to sync data between players, until patch Warcraft III patch 1.31 introduced new syncing functionality to the game. The first version of the map to include a version of SaveNLoad that depended only on the game itself was 1.2.0-beta2.

Creating a Save

Many players like to build great things in roleplaying maps, but these creations can take hours or even days in order to be fully finished. Titan Land LoP was one of the first two Warcraft III RP maps that featured a save system. Saving these builds allows players to not only keep the awesome work that they are proud of, but also craft continuous stories over multiple sessions. This will be an guide on how to use the Save System, it is recommended that you READ ALL THE INFORMATION before saving or loading if you dont know how to do it.

  • Units
  • Terrain
  • Trees

Save types to make it easier to comprehend the differences ALL SAVES MUST HAVE UNIQUE NAMES, even if they are of different types. That means that you can't save your terrain and your units under the same save name. One popular way to handle this is to use slashes. For example, you could save your units as my save and your terrain as my save/terrain. This will also neatly organize save files inside your Documents folder into subfolders.

Saving All Units

The easiest things to save, especially for beginners, are units. You can save units simple by typing -save (save_name). This will instantly start the save process, which will save all your units, including your Neutral Units, that are outside of the Titan Palace. Things that are saved with units are:

  • Patrol Path
  • Custom Name
  • Hero status (for units that were made into heroes with -makehero).
  • Rect size, weather and fog (for Rect Generators)
  • Waygate destination
  • Ability list (for heroes only)
  • Rooted state (for Ancients)
  • Neutral ownership
  • Position in the map, flying height, facing angle, scale, RGBA values, team color, animation speed & tags, selectable state

The simplest part to save an build, the only thing required is to have everything ready, and them typing -save (SAVE NAME) in order to make the build save into your warcraft 3, this will save all units, buildings and decorations, but nothing else, including items, terrain, etc, make sure you are ready to wait, alt tabbing while saving may cause issues, and it takes time to save units and buildings, so it may take time, expecially if there are many units to save at once.

Saving Via Rect

Requires the usage of a rect, which is generated by a Deco Rect Generator. To spawn a generator, use the -rect command, then use -seln gen to select it. It is recommended to read each tooltip of the Rect Generator's abilities in order to become familiar with its functionality. Move the generator to the spot you want to save, preferably using its Move (Aligned with Terrain) ability (which is more appropriate for saving). Then use the Create/Destroy Rectangle ability to create your rect and use the Retract and Expand (WASD hotkeys) abilities to encompess the entire area that you want to save. In order to save using the rect, you must type on of the appropriate command while selecting the rect you want; this will save ONLY what is inside the rect, and nothing else.

Terrain

To save terrain, use the command -tsav (SAVE NAME).

Trees

To save Trees use the command -dsav (SAVE NAME).

Units

To save units, use the command -usav (SAVE NAME). This command can also be used to save your current selection of units, if you are not selecting only a rect generator.

Loading a Save

You can load a save your previously made using the -request (SAVE NAME) command. It doesn't matter whether you saved in multiplayer or singleplayer, you can load any save in in both modes. This command is used to load all save types (units, trees and terrain).

If you creating a save using a rect generator, you you can choose where to load your save. After typing the command, a special Rect Generator will spawn, and you will automatically select it and have your camera centered on its location. This rect generator has two movement abilities and two extra abilties: Return to Original Location and Load Here. When you are happy with the location where your save will be loaded, all you have to do is click the Load Here ability, and the save will be loaded.Now, once you have saved, you want to load it later, but in order to make sure everything is saved, there is an way to check it, on custommapdata Titan Land Lands of plenty folder on your warcraft 3 files, there is an list of your saves, from name to what they contain, this is how the game can save or load builds, its possible to give your build to someone by giving a copy and them said person placing said build in their custommapdata Titan Land LoP.

Moving a Build

When loading a save that was not made with a Rect, you can still change the location of your build by using the -load center (x) (y) command.

In order to move the build, you type -load center x,y with X being North/South and Y being East/West, the positives/negatives are:

  • North - Positive "X"
  • South - Negative "X"
  • East - Positive "Y"
  • West - Negative "Y"

For reference, the default size of a Rect Generator is 32 units by 32 units. So in order to move builds long distances, values in the thousands are required.

SaveNLoad Issues

One of the limitations of SaveNLoad is that it can be quite slow on older computers, so the game can become hard to play while a save is being loaded.

Multiple Players

When multiple Players are loading, they will take turns reading files from their computer. Each file will contain a certain number of units, trees or terrain tiles. That means that, if two players are loading, they will each load at half the normal speed, until one of their saves has been completely loaded into the game, at which point only the other player's loading continues. That means that no instability, lag or performance issue should arise when many players are loading simultaneously.

History

The first mention of a Save System for RP maps in WC3 was in a thread[1] and project[2] by Lord-Anarki, one of the creators of SotDRP. Three years later, both YARP and TL:LoP began development with their own implementation of Save systems. LoP's save system was developed before the map itself[3], and originally it was intended to be used in different RP maps.

The first popular Titan Land map to feature LoP's save system was Titan Land Kingdoms of Terfall. It was added in version 3.0 EAV5. Lands of Plenty was already in development at the time, but it was still unfinished, so an implementation in KoT was done to give the community access to saving/loading as soon as possible.

v1

Version 1 of the Save System was a very crude implementation, and did not see any use outside of early alpha versions of LoP.

v2

Version 2 of the Save System was a more robust implementation, which took inspiration from YARP. This version was the one used in Titan Land KoT. Originally it used hexadecimal encoding for unit type values, which eventually was replaced by WC3 own 4-character encoding. This replacement was only seen in LoP, KoT retained the use of hexadecimal values. LoP launched using this version of the save system, and support for v2 saves was dropped 8 months later in version 1.4.0.

v3

Version 3 of the Save System was implemented with the advent of patch 1.31 for Warcraft III, which introduced a new BlzSendSyncData native. This native allowed for easy syncing of text between players, and was a perfect replacement for a chat-based syncing system. The first non-beta version of LoP that featured this version of the system was 1.2.1.

v4

Version 4 of the Save System was similar to the transition of v1 saves to v2 saved. It did not completely change the method used for saving and loading, but it did introduce many new features. The most important features added were integrity checks for saves, which would help with the debugging of corrupt saves, and extended support for Rect saves, including the ability to easily load them anywhere on the map.

  1. Hiveworkshop thread by Lord-Anarki [1]
  2. WoFRP GitHub repo [2]
  3. Hiveworkshop thread on the original Save System [3]