Battlemaps and art
AI Battlemap Generator for Foundry VTT
Ask for a map in plain words. Familiar draws it at the grid you asked for, builds the Foundry scene, and on request reads the picture and puts the walls and lights in.
The same chat draws portraits and transparent tokens for the sheet, icons for items and spells, edits art you already own, and files all of it in an Art Library you can drag from. It runs inside Foundry, on your own API key: no credit pack, no fee per image, and where your provider reports a cost, the module prints it under the image.
What you see
- One brief in the chat asks for five battlemaps, each in its own style: a tavern as an oil painting, desert ruins as an aerial photo, a forest clearing as ink cartography on parchment, a flooded crypt as a pencil sketch, a harbour at night as pixel art, plus a handout of a troll climbing out of the stream in that clearing.
- The maps arrive in the chat one after another, each under its own Generate Scene call with the price the provider reported and Activate scene, Finish this map and Share under it.
- Activate scene pulls the table to each map in turn; the new scenes line up in the Scenes sidebar as they land.
- The troll handout arrives last and goes to the table chat, with Send to canvas and Create scene under it.
Real outputs, exact prompts
Every map below is an unedited output from a live session, and the prompt you read with it is the exact ask, word for word. Under each map: the provider and model that drew it, the grid the scene was created at and, where the module printed one, the cost. How the grid and the scene itself get built is in the Battlemaps chapter further down.
Whole locations
You describe the location and its parts, a whole place rather than a single room, and Familiar wraps that brief in its own top-down, gridless battlemap framing.






Five styles from one message
All five came from a single chat message, the one in the clip at the top of the page. Each ask ends in a Style clause, and that clause sets the look of that one map only; the campaign default (painterly, in this session) was untouched afterwards.





Same brief, six models
One ask, sent six times, with only the image model changed in the settings between sends; the chat passed the description through as the image prompt each time, and the campaign style stayed painterly. Ordered by how closely each output kept the top-down framing. OpenAI and Leonardo report no price per image, so those two cards show the grid alone. Seedream 5 on fal.ai timed out three times on the same ask and has no map to show.
"Make a battlemap of a coaching inn at a crossroads, large: the common room with a hearth and long tables, a kitchen with a larder, a stable block with stalls and a hay loft, a walled yard with a well and a parked wagon, and the road forking outside the gate. Use this description as the image prompt, word for word."






Six more styles, across models
Six further Style clauses, each on a different model and each a different place. Where a model leaned out of the top-down frame, its card says so.






Finish this map: walls, doors and lights from the picture
A generated map is a picture. One click makes it a room.
- Under every map Familiar generates sits a Finish this map button. It is opt-in per map and never runs on its own.
- Press it and the AI reads the rendered image, then places walls, doors, windows and lights with the same tools you would use by hand.
- It checks its own work: darkness up, a screenshot, a look at where the light stops, and the walls the light gives away are corrected before the map comes back.
- Windows are real windows, light passes and sight does not. Doors are real Foundry doors: open one and the light follows.
Strongest on interiors with straight walls, a tavern, a barracks, a dungeon of rooms and corridors. Still experimental on organic caves, where a tunnel bend can land a wall a few dozen pixels off.
What you see
- The picked map sits in the chat with a Finish this map button under it.
- The AI reads the map and places walls, doors, windows and lights on the scene while the tool calls stream in the chat.
- It sets darkness to full and takes a screenshot: the lit hall stops at the walls the AI placed, the rest of the manor stays dark.
- It restores the darkness you had and hands the scene back.
From a sentence to a playable scene
Type what the encounter needs and where it is. The result is a Foundry scene, not a download.
- Size in table words: small for a tavern brawl, medium for a typical fight, large for a battlefield, screen for a map that fits one monitor, huge for a whole harbour quarter. Or give the squares yourself.
- Ask for four candidates and pick the one you like; only the chosen map is applied.
- The scene dimensions come from the grid you asked for, and on providers that accept exact sizes the image is requested at exactly that shape, so the art lines up with the squares your tokens move on. Diffusion models cannot count squares, so none is asked to draw a grid; Foundry overlays its own.
- When a provider can only return a shape that does not fit, Familiar applies it anyway and tells you the stretch percentage instead of hiding it.
- Create scene turns any image into a scene: under a generated illustration or on an Art Library card, it prefills a name and a best-guess grid you can overtype, warns live when the squares would stretch the picture, and can activate the scene and pull the players in one go.
What you see
- You describe the village, its parts, and say huge for the size.
- Four candidates arrive in the chat; you pick one and it becomes the scene background.
- Activate scene pulls the table to the new map, and the grid lines sit flush on the squares in the picture.
- Create scene from any image: the size chips prefill the squares, and overtyping them shows how far the picture would stretch.
Tokens and portraits from the sheet
Maps are half the prep. The same chat draws the people who stand on them.
- Ask for a token and the art comes back with a transparent background, goes onto the actor, and drops into Foundry's dynamic token ring. Tokens already on the map that carried the old art follow the new one.
- Ask for a portrait and it lands on the sheet, for a player character or the NPC they are three minutes from meeting.
- Nothing to type: on an actor sheet, the Familiar entry in the header menu opens the chat with the ask already written.
Not every provider can return a transparent background. Familiar checks yours can before it bills anything, and when a token comes back opaque it says so in the result instead of applying it silently.
What you see
- Open the sheet header menu and choose Familiar: Generate Art.
- The chat opens with the ask prefilled; you say portrait, token, or both.
- The portrait lands on the sheet, and the placeholder token on the map is replaced by the transparent cutout inside the ring, next to the ordinary tokens.
Icons for items, spells and features
Ask for item art and the icon appears on the item: loot sitting in the world, a spell, or a class feature on a sheet.
- The item sheet has the same Familiar entry in its header menu as the actor sheet, so a bare inventory gets icons one line at a time without leaving Foundry.
- The icon lands on the item sheet and in the chat, with its cost printed under it.
What you see
- The item sheet has the same Familiar entry in its header menu.
- The ask is prefilled; the icon lands on the item sheet and in the chat, with its cost.
Change art you already have
Every stored image Familiar made carries an Edit button, and anything else you can name in the chat. Say what should change.
- Take the ruins map and ask for it at night. Put the same NPC in plate armour for the second act.
- Optional: click two corners on the thumbnail to point at the part that should change.
- Edits come back one at a time and land beside the original, never over it; the Art Library files each as an edit with a link back to its source, and a Try again button gives you another take. The multi-candidate picker is for fresh maps.
- Hand back a character image on a later call and the same face comes back with it, which is how a recurring NPC stays recognisable across sessions.
- The reference can be anything Foundry already stores: an earlier generation, an actor portrait, an item icon, a scene background. Up to eight of them in a single ask.
The region is a hint, not a mask. The whole image is regenerated from your instruction, so nearby details can still move. Editing belongs to the provider, so it follows the one you brought. fal.ai and OpenAI's GPT Image models both do it. On OpenRouter it depends on the model you pick, and Familiar checks before it spends anything. Leonardo and NanoGPT cannot edit, and say so. On the same provider an edit costs more than a fresh image, so it is the wrong tool for a map you could simply ask for again.
What you see
- You name the image in your Foundry files and describe the change: a stormy, rainy night.
- The edited version arrives in the chat with its cost.
- Set as scene background swaps it onto the live scene; the tokens stay where they were.
Everything you generate has a home
Nothing you generate is lost in a folder.
- Every image is filed as a page in a Familiar Art journal for its kind: Battle Maps, Scene Backgrounds, Portraits and Tokens, Items, Other Art. The page carries the prompt that made it, the provider, and what it cost.
- The Art Library window, opened from the journal sidebar or the token controls, shows the same art as a gallery: tabs per kind, a search box that matches your prompt text and not only the name, and thumbnails that load as you scroll.
- Under each card sit the actions the art supports: share it to the table, send a prop to the canvas as a tile, turn a map into a scene, edit it, or remove it from the library.
- Cards drag onto the canvas. A portrait or token drops as that actor's token, exactly as dragging the actor from the sidebar would. A prop, item or handout drops as a tile centred where you let go, snapped to the grid unless you hold Shift. Battle Maps do not drag; a map wants to be a scene, so its card offers Create scene instead.
- Players cannot see the library until you share something from it.

Demo clip coming
What the clip will show
- Open the Art Library from the journal sidebar: tabs per kind with their counts, the search box, and a card per image with its actions.
- Type part of a prompt into the search box; the cards narrow to the art whose prompt matches.
- Drag a token card onto the canvas and it drops as that actor's token; drag a prop and it lands as a tile, snapped to the grid.
- On a Battle Maps card, Create scene opens the dialog prefilled with a name and a grid.
Your key, your cost
The subscription pays for Familiar: the tools, the rules engine, every update. It never pays for pixels. Image generation runs on an API key you make at a provider of your choice and paste into the Image tab; the provider bills you at its list price and Familiar adds nothing on top.
Three things Familiar never does: meter your generations, mark up your provider, or hide the price. Where the provider reports what a call cost, the module prints it under the image and the Art Library keeps it with the file. Where a provider reports nothing, Familiar shows nothing rather than guessing.
New models arrive when your provider ships them. The Image tab fetches the provider's own model list where one exists and takes a model name typed by hand where it does not; no tier to unlock, no waitlist. Which model does what is the provider's business, and the table further down says where each one falls short.
Each generation is sized to spend the least it can. A battlemap is requested at the shape of your grid and no larger, backgrounds are stored as WebP when that is smaller, and the upscaler only runs when you ask for high quality. What you generate stays in your world, in your Foundry data folder; Familiar resells nothing and stores nothing of yours on servers of its own.
A few list prices, quoted with their source so you can recompute them:
- fal.ai FLUX.2 [flash]$0.005 per megapixelA 2048 by 1536 map is about 3.1 megapixels, so roughly 1.6 cents. Source
- fal.ai FLUX.2 [pro]$0.03 for the first megapixel, then $0.015 per extra megapixel, rounded upThe same 2048 by 1536 map rounds up to 4 megapixels, so about 7.5 cents. Source
- OpenAI gpt-image-2, 1536 by 1024$0.005 at low quality, $0.041 at medium, $0.165 at highOne landscape map at medium quality is about 4 cents. Source
Prices checked on 15 August 2026 on the providers' public pricing pages.
Providers and settings
Generation runs on the provider you bring, so what you can do follows that choice. Familiar reads each provider's capabilities before it spends anything and says so when a request is out of reach.
| Provider | Map at the exact grid shape | Transparent tokens | Edit with references | Upscaler | Cost shown under the image |
|---|---|---|---|---|---|
| fal.ai | Yes | Yes, through a background-removal pass | Yes | Yes, at high quality | Yes |
| OpenAI (GPT Image) | Yes, on gpt-image-2 | Yes, on gpt-image-1.5 and older; gpt-image-2 hands the token to 1.5 with a note | Yes | No | No |
| OpenRouter | Nearest aspect ratio, plus a resolution tier | Per model | Per model | No, the resolution tier fills that role | Yes |
| Leonardo | Yes | No | No | Yes, at high quality | No |
| NanoGPT | Portraits and illustrations only; a scene background comes back at the model's own shape, with a warning | No | No | No | Yes |
- Image generation ships switched off. The Image tab in Familiar's settings holds the switch, the provider, the key, the model, and the quality setting.
- Keys are stored in your Foundry client settings, in your browser, and never pass through a Familiar server.
- The Art Library toggle, the dynamic token ring, and the campaign art style are world settings: one choice per campaign, set by the GM. Out of the box the style is your provider's default. Pick Painterly, Realistic, Cartographer Ink, Hand-Drawn, or a sentence of your own, and every generation follows it unless you override it for a single image.
Works in Foundry v13 and v14, verified with v14.367. Model choice for the chat side lives in the model guide; the tool catalogue lives on the capabilities page.
Questions before your first map
What do I need before the first image?
Three one-time things: a Familiar licence, a provider key pasted into the Image tab in Familiar's settings, and the image switch turned on. Generation ships switched off, so nothing can spend against your key until you deliberately enable it.
Can it draw the walls too?
This page used to answer no, and for the generator itself that has not changed: generate-scene makes a picture, and a generator that guessed your walls would be worse than no walls.
What changed is that the guessing is gone. Finish this map is a separate, opt-in step you press under a generated map, and it verifies its own placement with a darkness screenshot before handing the scene back; the full description is further up this page. Map packs and Universal VTT imports that carry wall data work exactly as they did before, and Familiar never touches the walls of a map you did not ask it to finish.
Can I drive this from Claude Desktop or another MCP client?
Yes, and the tools have names you can point at: generate-image, generate-actor-art, generate-item-art, generate-scene, and apply-scene-candidate. In Familiar's own chat window all of them are available once a provider is configured.
MCP clients add one wrinkle worth knowing before you go hunting for a bug. Those clients hold a limited number of tools at once, so Familiar sends them a curated set: the art tools are in it, battlemap scene generation is not. Add FAMILIAR_TOOL_BUNDLES=scene-generator to your MCP config and generate-scene and apply-scene-candidate join the rest.
What does a map actually cost?
A few cents on most providers; the dated price list above quotes list prices with their sources. What you actually pay is what your provider bills you, and the module prints that figure under the image where the provider reports one, marked as approximate because some providers bill in their own units.
Which provider should I use?
fal.ai is the lowest-friction start: make a key, paste it, generate. OpenRouter is one key for both your chat model and your images. OpenAI's GPT Image models are strong, but the API may ask you to complete organisation verification (an identity check) first, which makes them a poor first stop. Leonardo needs a paid Leonardo plan before your key does anything. NanoGPT bills images against the same balance as its chat models. The table above says what each one can do.
Do my keys stay local?
Keys live in your Foundry client settings, in your browser. Image calls go from your browser to the provider you chose. They never pass through a Familiar server, and no proxy or metering layer sits in between.
Who owns the generated images?
The provider's terms decide, and most current image APIs assign the output to you. Check the terms of the provider you bring; that is the binding document, and this page is not legal advice.
Are the maps really grid-aligned?
Yes, and by arithmetic rather than luck: the scene is always a whole number of squares, and the image is asked for at exactly that shape. How that works is further up the page, including what happens when a provider can only return a fixed shape.
What about the maps and art people made by hand?
They stay the work of the people who made them. Someone hand-painted the battlemap in your module and placed every wall, light and ambient track on it; Familiar reads that craft and runs the table on top of it. It does not redraw a map someone painted or rewrite the adventure it belongs to. When it does generate, it is for a gap you have not filled: a side room the module never mapped, an NPC nobody drew, a night version of one scene for one encounter.
The line the Foundry ecosystem draws is personal use at your own table versus selling generated assets, and Familiar sits on the first side of it. What you generate stays in your world, on your key, and Familiar resells nothing.
Try it at your next session
Two weeks free, then $6 per month or $48 per year. Your image provider bills generation separately, at its own prices. Everything else Familiar does at the table is on the capabilities page.
