Virtual tabletops (VTTs) are a great way of playing role-playing games together when you can’t meet physically. They make it easier to play with people from all over the world, and are a nice substitute when it becomes impossible to bring the old gang together in the same location any more.
One of the main attractions for these programs when compared to general-purpose meeting/teleconference software is their focus on displaying maps to the the players, enabling you to fight your miniature battles digitally. And maps are always an important aspect in most role playing games. I myself actually use VTT software to display the battle maps, even if my group always meet physically at my place and roll physical dice, because I can more easily do things like display the map on a projector, and only display what the players see (automatic fog-of-war/lighting/sight ranges).
So, today we will look at how to take those dungeon maps you’ve lovingly crafted in DD3 and make them available for use in the a VTT environment. Now, there are lots of different VTT software to choose from out there, and I can’t really cover them all, but I’ve tried to cover some of the more popular ones, such as MapTool, Fantasy Grounds, Roll20 and D20Pro. And many things, especially all the various concerns when exporting the map from DD3 will be the same for most software solutions, so this article should help you out no matter the system.
The Dungeon Map
The first step is obviously to make your map. While you can of course export any type of map to a VTT, it is battlemaps that takes the most planning and consideration to get right because you need it to line up with the internal grid in the VTT software, otherwise moving the tokens/miniatures in the VTT software is going to be problematic. To make this map, I am going to be using DD3, since it is the best tool for making battle maps in Campaign Cartographer, no matter if it is a dungeon map, a floorplan map of the inn for the great bar fight to end all bar fights, or an outdoor battlemap in the forest. Exceptions here are Modern and Sci-Fi maps, where I would use Symbol Set 3: Modern and Cosmographer respectively, but if this is the case, don’t despair, as everything in this article will be the same for those kinds of maps.
For this tutorial, I’ll be making a floorplan map of a basic inn to be used for a battle map. Even if you have an existing map you want to use, I recommend you read through the section above related to creating a map. You can download my example map.
Scale
As I have talked about in other articles, scale is important. If I have scale under control, figuring out the exact parameters needed for export is easy; if you don’t, you’re probably ending up using the try-fail-try again method. So, know what you are going to map, and how large it will be. For example, if you wish to map the room for the bar fight, decide how large the room should be, or at least have a rough idea, and make a map that size. If you are unsure of the final size of things, you can always make the map itself larger, but do make sure to draw the room at the correct size, don’t just draw it to fill the map are and think about size later.
When making a new map in CC3+, remember that the map size is expressed in feet (or meters for metric maps). And remember that in CC3+, you are working with actual map distance, not miniature distance. This means that if your RPG system calls for 5 foot squares for the combat grid, you design the map so that the squares are 5′ inside CC3+, not 1″ which is the actual size on a miniature scale printout. Note that some RPG systems actually use miniature scale distance inside their rules, if this is the case, try to figure out what distance that actually represents in the game. Also, don’t think in pixels at this step, that is a consideration when we export the map, but we don’t define the actual map in pixel sizes.
Now, how large is an actual inn? Clearly, they come in all sizes, so there isn’t a fixed answer here, but for my case, I am going with an inn where the taproom fills most of the first floor (which is the only one I am going to map), with beds upstairs, and storage in the basement. I think 40 by 30 feet should be a good size for the building extents. I’ll give myself some room for some outside details, so an appropriate map size here is 80 by 70 feet. Note that I always choose sizes that match up with the grid size I am going to use. If I where to map a similarly sized inn in metric instead, I would make the map 30 by 24 instead (Both 30 and 24 are easily divisible by 1, 1.5 and 2, all of which are used for metric grid sizes in different RPG rule systems.)
Note that if you have an existing map you want to export, these guidelines about how to set up a new map might not help you. I’ve added a paragraph to the end of this article explaining how to handle an existing map which may not be to scale.
Grid
Always set up a grid in your map, matching the grid size from your rule system, such as 5′. The grid should be the very first thing added to your map (you can add it straight from the new map wizard). When working with the map, make sure the snap grid is on when placing things like walls, pillars, supports and such, to ensure these align with the grid. You’ll probably want to turn off the snap grid when placing free-standing symbols though.
Drawing the Map
As you draw the map, make sure to draw things in the appropriate size as we discussed above. Use the grid to guide you here, make sure to get the sizes of rooms and other features correct.
Exporting the Map
With the map draw, the next step is to export the map for use with your favorite VTT. I’ll discuss the general settings and considerations here, but look below for some extra considerations for some of the popular VTT solutions which impact your choices here somewhat.
The first thing you need to do is to calculate the export size of your map. To do this, you need to know how many pixels per grid square your VTT requires. This number is listed below for some common ones, but for now, let us assume that the VTT wants 50 pixels per grid square. See the section about importing the map below for the actual value for many popular VTT’s.
My example map is 80 by 70 feet, but since each grid square is 5 foot, that means that my map is actually made up of 16 by 14 squares. Multiplying this by 50 pixels, gives me an export of 800 by 700.
For my metric example of 30 by 24 meters, assuming a grid size of 1.5 meters, that results in 20 by 16 squares, which multiplied by 50 pixels, is 1000 by 800 pixels.
If you want your map to behave properly when loaded into your VTT, it is very important that you do this calculation correctly, otherwise the tokens won’t line up with features in the map the way you intended. This is also why I told you above that scaling your map correctly is very important.
Note that if you just wish to export part of the map, you can easily do this, if this is the case, just calculate the export size from the grid squares you want to be part of your export. Just make sure that you export the same squares as you used for your calculation, otherwise the map won’t align properly in the VTT.
Note that 50 pixels per grid square isn’t really that high of a quality, so if your VTT supports it, you may consider something larger. But this also means the map takes longer time to load for your players and consumes more bandwidth. Personally, I prefer 200 pixels per grid square, as this makes the result look much better, but this also makes the resulting images much larger, and don’t work well unless all the participants have a very fast internet connection. This isn’t even supported by all VTTs. When using maps online, you often have to compromise between the best visual look and the best performance.
Grid
Before exporting your map, turn off the grid by hiding the GRID sheet. VTT’s have their own grid anyway, and you’ll probably prefer to use that. Of course, the VTT grid cannot be configured to go below some elements like I can with CC3+, so if you have used such techniques in your map, you can of course keep the CC3+ grid and disable the VTT grid instead, but in most cases, I recommend just using the VTT grid.
Snap Grid
Turn on Cursor Snap at this point. You should use a snap grid using the same distance as your grid (for example 5), and with only 1 snap division. This is to ensure that when exporting the map, we only select whole grid squares, and that our selection is accurate, which is very important in the relation tot he pixel size we calculated above. You may wish to edit one of the existing snap grids or make a new one.
Exporting
To export the map to an image for use with the VTT, go to File -> Save As. In the dialog, pick either Rectangular Section JPEG or Rectangular Section PNG. The JPEG option generates smaller files which are better for online use, so I generally recommend this, although if you want lossless compression, you need to go with PNG.
Hit the options button, and enter the values we calculated earlier for width and height under Pixel Size. Ignore the resolution box, it won’t do anything for us here. You can also set the options at the bottom of the dialog to what you want, there are no “wrong” settings here.
Once you click OK in the settings box, and Save in the Save as dialog (after specifying a name/location for your image), CC3+ will ask you (at the command line) to pick the first corner. Simply click in the top left corner of the map, just inside the border. Since cursor snap is on, your cursor should snap to the right location once you get close. CC3+ will then ask for the opposite corner. Simply move the mouse cursor down to the bottom right corner, it should snap like it did with the first corner, and when the selection rectangle looks right, just click.
CC3+ should start exporting your map, this can take some time if you do a large export, but once it is done, you should have your image file ready to use in your favorite VTT.
Note that the choice of Rectangular Section is extremely important here. Normally, this is the option we use when we want to export just part of the map, but for battle maps, it is very important. If you look at our DD3 map, you’ll see that it as a thin yellow frame around the map. A simple frame, but it still helps round out the map. However, remember when we calculated the map pixel size above based on the grid squares in the map? That border is outside the grid, and throw off our calculation if we where to include it. Additionally, most map templates also have a white border (a screen) outside this simple frame to hide entities (like symbols) that stick out beyond the map border, a regular save would have included this as well, messing up our calculations even more (and because calculations needs to be exact, it doesn’t work well to just try to remove these in an image editor after exporting). However, with rectangular section (combined with the snap grid we set above), we can ensure that we only export the actual map content inside the border, or we can easily export just part of the map the same way, since our snap grid is set up to only pick whole squares.
Importing the Map into the VTT
Now, this step depends heavily upon the VTT used. I can’t cover all VTT’s here, but I have written instructions for the more common ones. Note that these are not full instruction on how to use these VTT’s, I am only concerned in how to get a DD3 map into them as a battle map.
MapTool
Image Size
MapTool allow you to specify the number of pixles per grid square as you please, but the default value is 50 pixels/square unless you change it. Note that MapTool refers to this as Pixels per Cell.
Usage
To insert your map into MapTool, go to Map -> New Map. In the Dialog, notice the Distance per Cell and Pixels per Cell values. The default is 5 and 50, meaning that the grid will be 5 units (MapTool doesn’t differentiate between metric and imperial units here, it just shows raw numbers, assuming players know what units they are using, so for a 5′ grid, enter 5 here, and for a 2m grid, enter 2, don’t do any conversion). If you want a higher quality, you can set this to 100 pixels per cell, and then you would obviously use 100 in the export calculation above instead of 50 as we used in the example.
Now, click on the Map button, then on Filesystem, and simply browse to the file you exported from CC3+.
Fantasy Grounds
Image Size
Fantasy Grounds uses 50 pixels per grid square by default, but when you add a new map, you need to define the grid size manually, so you can really use whatever you want here.
Usage
To use the map in Fantasy Grounds, after you have started/loaded a campaign, click the Maps (or Images) button in the right toolbar (Fantasy Grounds supports skinning, so things may look a bit different depending on skin).
In the Dialog that opens, click the ‘Folder’ button. This will open a file explorer window focused on the image folder for this particular campaign. Simply drag the exported image file into this window, and it will be available in the Images & Maps dialog inside FG.
Now, adding the actual grid is a bit tricky. You’ll need to add it, otherwise token’s can’t snap to grid, but it can be a bit tricky to line it up perfectly. The way to do it is to open the image in the software, right click inside the image, pick the Layers Option, and then the Set Grid option. Now, click and hold in the map, and drag out a single grid square. The size is listed inside the square, release the mouse button when the size is correct. The issue here is that this also sets the location of the grid, which means it is difficult to get it to line up with the grid from CC3+. For some maps, that doesn’t matter (remember, we exported the map without the CC3+ grid visible), but for other maps elements in the map (such as walls) are arranged in a way so you really want the grid cells in a particular location.
There are two ways to handle this. One of them is to simply export the map with the grid from CC3+, as this gives you something to align the FG grid on. However, if you can’t get this 100% correct, you will have two grids offset from each other, which looks bad and can be confusing. Another option employed by many map maker is to put some kind of indicator on the map, for example a rectangle off to the side of the map exactly one grid square in size which you can then use as a guide. Also note that even if you place the grid wrongly, FG has a grid toolbar where you can nudge the grid around one pixel at a time, as well as increase/decrease size, so it is pretty flexible, it just takes a bit of work getting there.
There are also several tools posted in their forums to auto-align grids, but I haven’t tried any of these.
Roll20
Image Size
Roll20 uses 70 pixels per grid square, so replace 50 by 70 in my example calculation above to export an image suitable for Roll20. For my example image of 80 by 70 foot, that should result in a file of 1120 x 980 pixels. Also note that Roll20 have a maximum file size of 10MB, so this limits the maximum dimensions of the map. Generally, since jpg is smaller than png, I recommend using that.
Usage
To upload and use a map in Roll 20, first click the page toolbar (Blue ‘paper sheet’ button in the top right), then create a new page. Access the settings for the new page, and set the height and width settings matching the number of grid squares in your map (16 by 14 in my example). Also, if your grid size is different than 5′, change the page scale setting to match. Once you are done, click on the new blank page in the toolbar to load it.
To upload the map image, click the Art Library button at the top of the right panel (chat window), and then click upload, select your file, and wait until it is done uploading. It might appear that nothing is happening, but the image should upload, the box will display a text indicating when the upload is complete. You can now close the upload box.
Then, in the toolbox to the left, click the marker button (second from the top) and select Map & Background. You can now just drag your map image from the library to the right over to the gridded area. Roll20 don’t give it the right size by default, so use the handles to enlarge the map to fill the entire area. Since we already set the page size to be the exact same size of the map, you should just drag the resize handles until it fits. Note that you may need to vertical and horizontal individually, because Roll20 don’t insert the map at the correct aspect ratio when you drag into the canvas in the first place.
D20Pro
Map Size
The default value for D20Pro is 100 pixels per grid square, although you can freely change this value. To create maps for the default size, just use 100 in my calculations above instead of 50. For my example map, that means the export size should be 1600 by 1400 pixels.
Usage
In the Content Library window, hit the Map Library button, then click the Create button. Then in the new dialog that shows, just pick Image from File, and browse to the appropriate image file. This brings you to the grid adjustment window, and if you exported the image for the default grid size, it should be positioned perfectly already, just click Next and Finish and the map is ready to use.
My Map isn’t to scale – What Now?
I did outline earlier how important it is to keep your map correctly scaled. It is a common beginner mistake in CC3+ to not pay attention to scale, and just draw something that looks right, but that approach quickly causes a lot of extra work later. However, if you already have a perfectly good map, you don’t have to redraw it just to make things right, we can still get it exported to that VTT. Let us look at the relevant cases.
Note that these cases are only considering battle maps. For an overland map, getting it accurately scaled in the VTT is probably not relevant, so just go with your best guess.
My map has a grid, and thing looks right
If your map already have a grid, and everything looks visually correct with it, you can simply pretend that the grid is the size you need to be, no matter what the distance tool in CC3+ actually says. Simply decide that the grid is 5′ (or whatever), and do the calculations above with that as a base. Is your map 28 by 43 grid squares and you want 50 pixels per grid. Well, then the export resolution is simply 1400 by 2150, simple as that. Just try to avoid partial grid squares if you can. Only count the whole squares, and when you export, make 100% certain that you only export the area covered by the grid (Using the rectangular section export type). If you can figure out the actual size of your grid (using the Info -> Distance tool), you should be able to set up a snap grid matching it like we described above which help you during export. If not, you can use modifiers like the intersection modifier to pick the grid corners exactly when exporting. Being exact is important though, otherwise your grid is likely to get out of step with the VTT grid.
My map don’t have a grid, and I don’t know the scale
If your drawing have a scale bar, you can just measure this to get a sense of scale in the map. For example, if you measure the scale bar using Info -> Distance, and 5′ along the scale bar measures as 20′ in CC3+, you know you can just create a grid with size 20, and just pretend that this is actually 5, and proceed as I outline in the paragraph above.
If the map don’t have a scale bar, look for other elements in the map you can determine the size of. For example, on most battlemaps, doors are 5′ wide. You can then measure this door, and then proceed in the same way as I described for the scale bar above.
If you don’t have anything in the map that can help determine the scale, then the scale is probably not that important for that particular map in any case. I suggest just trying to add a grid to it, start with a 5′ grid, and if things look right, just proceed with the ‘My map has a grid’ section above. If it doesn’t look right sizewise, just undo, and try with a different grid size, either larger or smaller, until you find something that works. Doesn’t have to be a whole number, decimals are fine if needed.
Map elements aren’t aligned properly to the grid
You might be able to find an appropriate grid size, but end up in the situation where the grid seems offset from the map content, for example, that 5 foot wide corridor is split between two halves of a grid cell instead of centered inside one cell. Assuming that this affects your whole map and not just a single corridor, you’ll need to simply align the grid.
If you look in the Grid Overlay dialog, you’ll notice that it contains a Select Points button right above the apply button. If you click this, you get to control where the grid goes, so you can start it somewhere else than in the bottom right corner. This also creates a snap grid for you with the same offset, so you have your snap grid for exporting ready when you hide the visual grid (I recommend only having ‘Corners’ enabled for the snap grid for this purpose). So, once you have found a grid position and size you like, count up the squares, do the calculation as described, and make sure you only export the whole cells. Since the grid in the VTT is calculated from the edge of the image, this should then also lead to the grid in the VTT being correct.
I have some issues exporting my DD3 map to Roll20. I followed the instruction by the letter but end up five squares too short. But only horizontally. Vertically it fits fine. Any idea why this could happe? There is no calculation error on my side. I checked it over and over again.
Is the map proportions correct in Roll20? Roll20 allow you to resize the map image non-proportionally, so you can easily get the wrong number of rows.
Other things you can check is the image size of the actual image you exported from DD3. Check the pixel sizes. Is it correct in both dimensions based on what you expected?
Does it appear to be anything wrong with the exported image (missing pieces, etc)? If the image looks perfectly fine, and matches that you see in DD3, there have to be a calculation error somewhere.
Note that I did have a calculation error for the Roll20 image myself in the article. The formulas where correct, but the height of the final image should be 980 pixels, not 780 as I initially wrote.
My mistake was, I only tried to resize the map image proportionally. I just had to increase it just a bit more horizontally. That easy. Shame on me and thank you very much.