Writing a community guide
Guide author6 min readUpdated
What you get, what a pack looks like, the steps from your first guide to publishing, and the checklist before you do.
On this page
What you get#
If you write leveling guides, you can use everything Polestar uses for its own:
The guide format
.guide files. The compiler fills in
quest titles, givers and coordinates from the reference dataThe game facts in data/forever/*.json (quests, NPCs, objects, items, zones, map frames and more) that the compiler and the data builds read; built locally by data build., so
accept 7 is a whole line.The checks
lint checks every guideOne route, written as a .guide file and compiled to Lua; its id reads like forever/alliance/human/01-elwynn-forest. against the game's data, and
playtest plays each one to the end in the real addon, without the game.In the game
You publish the result as your own addon, under your name and a license of your choice.
Quick start#
You need Node 24 or newer, and Lua 5.1 or LuaJIT for play and playtest.
PACKS.md, "Setup" has the install command for each system.
git clone https://github.com/fitzforge/polestar.git
cd polestar
npm link # puts `polestar` on your PATH
polestar data build # the reference data every guide command reads
polestar doctor # checks the setup and prints the fix for anything missing
cd .. # your pack goes beside the clone, not inside it
polestar new my-pack # asks for the id, title, author and licence
cd my-pack
polestar dev --play # lint and build on every save, with the browser playgroundWhat a pack looks like#
A community addonEvery other pack, a separate addon made and supported by its author, listed under Community guides (GUIDE_PACKS.md). is built from a pack: a folder with a pack.json and
your .guide files.
my-pack/
├── pack.json your addon's id, title, author, version and licence
├── guides/
│ └── westfall.guide your guides, in any layout
├── LICENSE the licence you chose
└── README.md for your players{
"id": "joe-routes",
"title": "Joe's Routes",
"author": "Joe",
"version": "1.2.0",
"license": "CC-BY-4.0",
"website": "https://github.com/joe/joe-routes"
}guide joe-routes/northshire
title Northshire Valley
faction Alliance
race Human
levels 1-4
zone Elwynn Forest
step Deputy Willem
accept 783
turnin 783
accept 7
step Kobold camp
kill 6 x10 quest 7.1
step Back to the abbey
turnin 7The tools build the addon from these: the TOC, your credits, the compiled guides and the license files. Don't edit the built files: change the pack and build again. PACK_FORMAT.md describes every line of them.
From first guide to published#
- Start:
polestar new my-packwritespack.json, an example guide that already passes every check, a README for your players and theLICENSEyou chose. In a clone of the public repository it also writes a GitHub workflow that checks every push. - Write:
polestar find <text>prints quest, NPC, object, item, inn and flight-point lines ready to paste. In the game,/polestar whereprints where you stand as a guide line. - Check:
polestar lintchecks every guide against the game's data, andpolestar playtestplays each one to the end, for each race that can reach it and each class it has steps for. - Try:
polestar playopens the real addon in your browser with your pack loaded, andpolestar installcopies it into the game's AddOns folder (restart the game the first time). - Build:
polestar packwritesdist/<folder>-<version>.zip, byte for byte reproducible. - Publish: upload the zip as a new addon project on CurseForge, Wago or GitHub. On CurseForge and Wago, mark Polestar as a required dependency so addon apps install it too. With the template's workflow, a version tag on GitHub builds the zip and attaches it to a release.
- Update: raise
versioninpack.json, runpolestar packagain and upload the new zip.
Before you publish#
The tools check these. lint reports them, and compile, install and
pack stop until they are fixed:
-
pack.jsonhas anid,title,author,versionandlicense. The id is 2 to 32 lower-case letters, digits or hyphens, and not one Polestar reserves. A title or an author name is at most 64 characters. - Every guide id starts with your pack id and a slash
(
ashka-emberway/westfall). - The addon folder is not named
Polestarand does not start withPolestar_. By default it isPolestarPack_and your title (PolestarPack_EmberwayRoutes). - A
website, when you give one, starts withhttps://orhttp://. - A
nextline hands over only to a guide that exists, is for the same faction, and that the characters of your guide can follow.
Read the rest of this section290 words
lint also warns while LICENSE still holds the placeholder line new
writes for a license it has no text for.
We ask these of you. No tool checks them, but players need them to tell your addon apart and to reach you:
- A name of your own that can't be mistaken for Polestar's addons.
The tools put "Polestar Community:" before it in the AddOns list. Say
on your addon page that it is a community addon for Polestar, and if
you write your own
notesline, keep that clear there too. - Your name as the author: the name players will look for.
- A version you raise with every release.
- A website or support link in
website, so the Community guides page shows players where to report problems. Say the same on your addon page and in your README. - A license of your choice.Polestar's LICENSE-EXCEPTION.md lets you publish a community addon built by its compiler, including the reference data the compiler puts in it, under any terms you like.
- Your own guide text.Don't copy text from Polestar's own guides:
the license exception does not cover it. Handing over to one of
Polestar's guides with
nextis fine, since that points to the guide rather than copying it. - Support for it.Players are told to report problems to the author, so answer them where you publish.
How your addon shows in the AddOns list
The TOC places your community addon under Polestar's entry in the Quests
category, titled "Polestar Community: <your title>", with the line
"Community addon for Polestar by <author>" unless you write your own
notes. Polestar's own menus show your title as you wrote it. Community
addons built before this name read "Polestar Pack:" until you rebuild them;
Polestar reads both.
Import strings#
A single small guide can go to players as one line of text instead of an
addon: they paste it on Polestar's Import page (/polestar import). Use it
for a quest chain, an item, a mount, an errand; a route or a set of guides is
a community addon.
| Import string | Community addon | |
|---|---|---|
| For | one small guide | a whole route or a set of guides |
| You run | polestar export <file.guide> | polestar pack |
| Players | paste it on the Import page | install it, then restart the game |
| Updates | raise the guide's version and share the new string: players press Update | raise version in pack.json and upload the new zip |
| Size | one guide of at most 60 steps (and 50,000 characters) | no limit |
polestar lint && polestar playtest # the same checks as for an addon
polestar export guides/cozy-sleeping-bag.guide > cozy.txt- The guide still lives in a pack:
exportfinds thepack.jsonabove the file, and the guide id starts with your pack id (yendi/cozy-sleeping-bag), so two authors' guides never collide. The string carries the guide and your pack'slicense; its author is the guide'sauthor, else the pack's. exportlints the pack first and refuses a guide with errors (another guide's errors do not stop it). It prints only the string on stdout, so> file.txtkeeps just that line.- A guide's
versiondecides between Import and Update in the game: raise it when you share a new string. - A
nextor route choice may lead only to one of Polestar's guides or to a guide the player imported before;exportnames the guides to import first. Polestar refuses a string whose guide leads anywhere else. - A guide id under the id of a community addon the player has installed stays that addon's: the string is refused.
- In
polestar play <pack>(andpolestar dev --play), Copy import string beside the guide picker gives the string of the guide picked.
The format of the string is in PACK_FORMAT.md, "Import strings". Strings are covered by the same license exception as community addons.
Where to go next#
| You want to… | Read |
|---|---|
| Write your first pack, step by step | PACKS.md, "A first pack in 15 minutes" |
| Write guides by playing, from the simulatorThe route model and search that finds and scores leveling routes (node tools/polestar.js sim, SIMULATION.md)., by hand or with an AI assistant | PACKS.md, "Four ways to write guides" |
| Look up a guide line quickly | GUIDE_CHEATSHEET.md |
| Read the whole guide format | GUIDE_FORMAT.md |
| Fix a lint message or an in-game problem | PACKS.md, "Lint messages" and "In game: statuses and problems" |
| Update after a game patch | PACKS.md, "Updating" |
| Know exactly what the tools write | PACK_FORMAT.md |
Questions, or a community addon to show? Players and authors meet on the Polestar Discord (opens in a new tab).