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.)
- 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/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, 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
On the machine with the UI I wanted to use as a base (the server):
- Move to your Warcraft installation directory:
cd /Applications/World\ of\ Warcraft/ (or wherever your WoW installation is)
- Copy the current Interface and WTF folders to Dropbox with:
mv Interface ~/Dropbox/Warcraft/
mv WTF ~/Dropbox/Warcraft/
- Create the symlinks:
ln -s ~/Dropbox/Warcraft/Interface Interface
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:
- Rename the WTF and Interface folders (
WTF 20120101, etc.)
- 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.
WoW looked really good on my laptop. Really good. Better than it’d ever looked before.
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.