Synchronizing World of Warcraft Between Two Computers

Playing Warcraft on two different computers can present some real challenges to a player, and the more customized you make your user interface, the harder the challenge. How do you keep your UIs consistent, your addons updated, your preferences shared between the computers?

You can do it manually, which can be a real pain if you like to roll a lot of alts. Smart profile use can help, but it only goes so far – at some point changes need to be synchronized between the computers, and only so much of your interface is stored on the Warcraft servers. Trying to keep your interfaces up to date can be a nightmare if you’re an altoholic, and more trouble than it’s worth even if you’re focused only on a single toon.

I finally found myself in the situation where I need to keep my Warcraft information synced between two computers, an old Macbook (2008 model) and a shiny new Mac Mini. They share similar operating systems, but have very different video capabilities. The Macbook has a 13″ screen and integrated video chip; the Mac Mini is hooked up to a 25″ monitor and has an actual graphics card.

Here’s how I did it.

ONLINE SYNCHING WITH DROPBOX

My goals were simple in concept, if not in practice:

  • Provide the same user interface, including keybinds, general bar layout, addon configuration. Logging in to a character on one computer should feel the same as logging in on the other.
  • Changes made on one game should be propagated to the other automatically. I don’t want to have to make an update in one place and then manually make it again on the other computer.

I thought a bit about how I could approach these goals. My setup was very addon-heavy, with a lot of custom keybinds through Bartender, using the Naga to both push buttons and move my character, and a suite of addons which I’d manage depending on the character’s current role.

It was, in all honesty, probably overengineered. (But that’s a different set of posts.)

I could:

  • Nuke all of it and use the default UI. This would get me my first goal, as well as providing an extremely fast load time and better responsiveness on my aging laptop. But it’s also restricting – I would have to make sure that I didn’t make any changes, and that I’d need to configure things like the bar setup on each computer separately anyways.
  • Redesign and periodically copy over the interface files from one computer to the other. This would help keep me synched up, but requires remembering to do it. That’s bad, I’m forgetful. Also, a simple copy means that you can have file conflicts between the two systems with no resolution system. When you make different changes to the same character, one or the other will be lost when you resolve the conflict.
  • Schedule an automatic periodic direct sync between the two machines. This reduces the chance of file conflict, but doesn’t eliminate it unless the sync is scheduled very frequently.
  • Use an online syncing program to sync the files as soon as a change is detected, usually on logout, reducing the conflict chance to nearly zero – since I can’t be logged in on the same account at the same time on two different computers.

Some other events happened which caused me to very seriously consider nuking all my addons and going back to a default interface, but after some thought I decided to go with an online synchronization service called Dropbox. Dropbox is one of several services available that you can try for free, and their free version is perfect for this task.

Plus I already use it to transfer files, so, you know, Dropbox was pretty much a no brainer for me.

Now, the problem with most online sync services is that they monitor a specific set of folders on your hard drive, usually within their own directory structure, for files that have changed.

The files that control the UI are in the Warcraft/WTF and Warcraft/Interface folders, however. So unless I put my entire Warcraft installation in the cloud – which gets expensive – I was going to have to find a way to make it so Dropbox knew about those two folders.

This is where symlinks come in.

SYMBOLIC LINKS

Symbolic links, or symlinks, are pointers on your file system that look like one address for files, but point to another location. If I have a folder in my home directory called “Website Logs,” but I don’t want to actually keep all the log files within my home directory, I could make that folder into a symlink and put the files where I really want them to be, say in an archive directory or somesuch.

Symbolic links are often the answer for problems like this.

  • Dropbox monitors a folder called Dropbox in my home directory (~/Dropbox/).
  • Warcraft stores UI data in the Interface and WTF folders in the World of Warcraft directory (usually /Applications/World of Warcraft/Interface, etc.).
  • By moving the UI folders into the Dropbox folder and putting a symlink in the WoW folder, WoW thinks that the data is right where it should be, while Dropbox syncs it whenever something changes.

(I’m going to use Mac/UNIX directory structures in my examples, but the concepts are the same in Windows.)

Before I did anything else, I made a complete backup of each folder I was going to be touching – just in case. Take your time when working with files!

To create a symlink you use the ln -s command in Unix. The format is ln -s target link, where you specify the destination – where the files should really be stored, what your symlink points to – and then the name of it.

To keep things easy, I created a Warcraft folder in my Dropbox folder. This means that my targets are both going to be in ~/Dropbox/Warcraft/.

On the machine with the UI I wanted to use as a base (the server):

  1. Move to your Warcraft installation directory:
    1. cd /Applications/World\ of\ Warcraft/ (or wherever your WoW installation is)
  2. Copy the current Interface and WTF folders to Dropbox with:
    1. mv Interface ~/Dropbox/Warcraft/
    2. mv WTF ~/Dropbox/Warcraft/
  3. Create the symlinks:
    1. ln -s ~/Dropbox/Warcraft/Interface Interface
    2. ln -s ~/Dropbox/Warcraft/WTF WTF

When I look at a full list of the directory (ls -lah), I see my symlinks for Interface and WTF, along with their destinations, in my home directory (/home/username/Dropbox). A quick check of the Dropbox folder and I’m able to confirm all my files are where they should be, and the symlinks are up!

My final check on the source computer is to fire up WoW and validate that everything still works. If I’ve made a mistake, it shows up in here pretty quickly.

It goes without saying that syntax matters in UNIX, and small changes can have big repercussions. ~/Dropbox/Warcraft/Interface is different from ~/Dropbox/Warcraft/Interface/, for instance. If you’ve never tried symlinks before, take your time and practice. There’s a manual page for it – type man ln and you can read it.

I did all of that work on my server, since it was shiny and new, and I was making a lot of changes to my UI to take advantage of the big screen. Setting up the laptop was very similar, but because it was going to be receiving the files I didn’t want to move the WTF and Interface folders into the Dropbox folder – instead:

  1. Rename the WTF and Interface folders (WTF became WTF 20120101, etc.)
  2. Create the symlinks from WoW to Dropbox, just like above.

This points WoW on my laptop to look at the interface files stored in Dropbox – which are the same ones from my server. It was pretty cool opening up WoW on my laptop and seeing the UI I’d created on my big screen in all its glory.

Except… wait.

WoW looked really good on my laptop. Really good. Better than it’d ever looked before.

Uh oh.

EXCEPTION HANDLING, VIDEO SETTINGS, AND OMGWTFBBQ

It didn’t take me long to realize that not only was I looking at not just the addons, keybinds and bar layouts of the server on my laptop – I was looking at the same video settings. The video settings were turned up way higher than WoW normally allows my laptop to handle, and with good reason – my laptop can’t handle very much.

So after I shut down WoW, I realized that I needed to sync most of the settings, but not all of them, if I wanted to avoid using my laptop to actually cook BBQ.

The video settings are stored in ../World of Warcraft/WTF/Config.wtf, a plaintext configuration file. The other UI elements are stored in WTF/Account/. So what I needed was the ability to sync everything in WTF/Account/ but not the Config.wtf (or Launcher.wtf file.)

Symlinks to the rescue!

On the server:

  • I didn’t change a thing. This way the Config.wtf will be backed up and I can use it, or not, if desired.

On the laptop:

  • I deleted the symlink and restored the /Applications/World of Warcraft/WTF/ directory from backup. (i.e. I renamed WTF 20120101 to WTF in the finder.)
  • I went down a level and backed up the Account directory, renaming it to Account 20120101.
  • I created a symlink for the Account folder only:
  • ln -s ~/Dropbox/Warcraft/WTF/Account Account

Doing this allowed me to keep the UI layout unified between computers, without threatening to fry my laptop’s video card (and me underneath it!)

Each computer now has its own video settings, while sharing the same UI.

It may not look as good on the laptop, or have as much space due to UI scaling, but it has a consistent layout and feel – which is what I really wanted.

Also, it won’t set my laptop on fire.

ON UNIX COMMANDS, WINDOWS, AND TECHNICAL DISCLAIMERS

While I’ve been working with the seedy UNIX underside of Mac OS X, this technique should be adaptable for Windows. Vista and higher has a mklink command which functions similarly to ln; however, since I don’t run Warcraft on Windows, I can’t really test the function out. It should work, but computers can be funny.

I also know that a lot of users aren’t comfortable working from the command line on either Macs or Windows. I’m going to toss out a disclaimer right now – the code I posted above is suggestions about what worked for me, not a script that you should just copy and paste and expect to work 100%. It’s not. This is more of a recipe than a shell script to execute – a guide to how to make syncing your WoW interface seamless, not a prescription to making it happen. If you’re not comfortable with a command line interface but want to try this out anyways, make a lot of backups. Copy your WTF and Interface folders somewhere safe on both computers before starting. Check each step to make sure the computer did what you expect.

If you’re willing to take the plunge into Terminal, I think you’ll find the command line very fulfilling. Stuff like this becomes possible without waiting for someone to make an app that does just the right thing. It’s not rocket surgery!

For me? I’m enjoying playing with my UI on my laptop, and seeing the changes mirrored on my desktop the next time I log in.

Good luck!

8 Comments

Filed under Cyn's Guides To Almost Anything, Cynwise's Battlefield Manual

8 responses to “Synchronizing World of Warcraft Between Two Computers

  1. You brought a smile of satisfaction to this old UNIX hand, Cyn. (And a chuckle for the WTF directory name!)

    • UNIX totally spoils me. I don’t know how to really make a computer a computer without it – they feel like appliances otherwise.

      I love the WTF directory. I don’t know how they got that in there, but the fact that it’s the most important user directory in WoW makes me smile every time I have to type it out. 🙂

  2. When I become less lazy I shall have to try this with my computers. I’ve tried using Curse to keep my addons in sync between computers (mine is mostly for keeping auction house business up-to-date) but their sync system isn’t that intuitive. And I forget to hit the button. And when I first started it I hadn’t made many backups and I wrote over lots of things (foolishly!)

    I’m working on Windows, but it shouldn’t be too difficult to do something similar. If I stop being lazy, that is. :3

  3. Acadia

    For all those windows users out there the commands you will need are:

    mklink /d c:\dropbox\Account c:\”World of warcraft”\WTF\Account

    This will create your symbolic link from your wow install to the drop box. So do this on your main computer.

    Next use the following command on your other system:

    mklink /d c:\”World of Warcraft”\WTF\Account c:\dropbox\Account

    to form the returning link.

    Of course change your addresses to refer to the ones you would like copied.

    If you are having trouble getting these commands to run, check your spelling or activate the command prompt in `Administrator mode` by right clicking the command prompt icon and selecting `Run as administrator`.

  4. Rob

    I’ve been doing something similar to this, but for a different reason. I figured I’d use DropBox as a backup of my WTF settings in case something craps out – then I just copy the WTF folder back from the Dropbox folder.

    I would use Windows’ Synctoy to send a “snapshot” of my WTF folder to the Dropbox folder, and on my Macbook Pro I’d create a symlink in my Dropbox folder that pointed to my WTF folder on my MBP.

    This seems like a better option, although the question I have has more to do with how Dropbox handles syncing… What if my PC craps out and wipes my WTF folder (assuming, like you I move it to the dropbox folder) – will Dropbox then say “These files have been deleted. Better delete them in the cloud”, which will then delete the files on my MBP? The “help” section at dropbox.com didn’t have a lot of clarity on this.

    In case you haven’t guessed, I was having some trouble with my Windows PC – random BSODs with no reference to what caused the problem (0x0000008b). Sometimes while I was playing WoW, sometimes when logging out, sometimes when the comp was doing nothing at all. If it happened during a WoW session, it would kill my WTF folder so I needed a way to pull the WTF settings back. I’ve since reinstalled Windows on that PC, so if it proves itself stable for an extended period of time, I’ll try this method out.

    (No need to point out the failure of Windows – the MBP is the newest comp I have, so you can see what direction I’m already moving.)

    Thanks for the writeup.

    • I’m not sure if Dropbox will let you recover incremental backups – in this case the files aren’t really deleted, so it’s problematic to use the “Restore Deleted Files” function.

      I use Time Machine for incremental backups on my Mac. That solves this problem nicely – if one host wipes your WTF, the other should have a snapshot.

  5. Psionikangel

    I know that probably some other UIs also do this, but Tukui resizes and scale automatically according to your screen resolution. I’ve found that to be invaluably awesome since I also switch from a 12′ laptop to a 20′ display with different resolutions.

    http://tukui.org/blog/