PlanetHex generates a planet from a seed and shows it two ways at once:
as a flat hex map on the unfolded icosahedral net, and as a globe. Both
read the same surface, so a coastline on one is the coastline on the
other.
Nothing about the surface is stored. A planet is its seed, its profile,
and whatever you have written on it, and the ground is rebuilt from
those every time it is opened.
The panels
- Left
-
Everything you can change, and nothing else. Four sections that fold
away: Profile for sector, hex, UWP and seed, Display for
the detail level and the view, World for the figures the profile
rolled, and Narrative. Click a heading to open or close it.
- Middle
- The flat map, with the worked-out figures for the world beneath it.
- Right, top
-
The globe, drawn at the size and the axial tilt the profile gives it,
and always at the finest detail whatever the slider says. It is the one
panel that draws the weather: cloud where the world has water to lift
and air to lift it into, heavy over the equator and along the storm
track of the fifties, thin over the dry belts that make the deserts.
It does not move — it is one afternoon, fixed by the seed, and
Clouds in the Display section clears it when you want the
coastline instead.
- Right, bottom
-
Local detail: the hex you are pointing at and the ground around it,
drawn far finer than the map can resolve. This is not a magnified copy
of the map — it reads the surface several levels deeper.
Making a world
New starts a fresh planet with a new seed, a rolled profile, a
starport placed on coastal land near its equator, and a city for each
further point of the population digit.
The seed says which world this is. The same seed always gives the
same ground. The UWP says what kind of world it is: Roll
takes a new one from Traveller's world creation rules, or type over any
digit. Gravity sets how tall the ground stands, air and water weather it,
hydrographics decides how much of it is underwater, and axial tilt and
pressure size the ice caps.
Detail chooses how finely the map draws the world: 362, 1442,
5762, 23042, or 92162 hexes. It does not change the world. A coarser setting
draws fewer hexes of the same planet, so the slider is safe to move and
safe to move back. The globe ignores it and draws at a level of its own,
since a hex of the coarse settings covers a swathe of a sphere you are
seeing all of at once.
Clouds draws the globe under its weather, and clearing it gives
the bare world back. It is the globe's alone: the map and the local panel
are read through, and a sky over them would be in the way.
Smooth beside the slider draws the ground without the seams
between its hexes. At the fine levels a seam is thinner than a pixel and
the map turns to haze; switch it on and the colours meet, switch it off
and the hexes come back. The selection and the point of interest rings
are drawn either way.
View chooses how all three panels colour the world, and it is only
paint: the coastline, the ice and the heights are the same either way.
- Orbital
-
What the world would look like coming in. Green where things grow,
brown where the ground is bare but weathered, grey where it is bare
rock, white where the water is frozen. It reads temperature rather than
height, so a world is jungle at its equator and tundra near its poles,
with dry belts in the subtropics where the rain has already fallen.
Axial tilt sets how far apart those temperatures are: lean the axis
past 54° and the poles take more sun over a year than the equator
does, and the world comes out iced at the waist and green at the ends.
This is what a new world opens in.
- Survey
-
Height as colour: blue sea, ground, grey and white peaks. A map, and
what to use when what you want to know is how high the ground is.
The World figures — tilt, day, orbit, temperature —
arrive rolled and are yours to overrule. One you have typed over is
outlined in gold, and reset beside the heading hands them all back
to the roll.
The pointer
- Map
-
Click a hex to select it. Drag to pan, wheel to zoom. Whatever you
point at is what the local panel draws.
- Globe
-
Drag to turn it, wheel to zoom, click a hex to select it. It picks its
own spin back up once you have been still for a moment.
- Local detail
-
Click one of the fine hexes to put a point of interest on it, or to
open the one already there. contours and 3d beside the
heading change how the ground is drawn, as described below.
Contours
contours over the local panel draws lines through the ground at a
fixed height apart, the way a walking map does: close together is steep,
far apart is gentle, and a closed ring is a summit or a hollow. One line
always lies on the coast, since the lines are counted from sea level, and
the rest are drawn at whatever round interval suits the ground in view.
The figure is given under the scale bar, in the same heights the readout
shows. Lines under water are drawn pale and lines above it dark, so that
neither is lost in the colour behind it.
Each line runs between the hexes it separates rather than across them, so
the ground either side of it is entirely above or entirely below that
height. The seams between hexes step aside while the lines are on, which
leaves the contours as the only lines on the patch; switch them off and
the hexes come back.
Relief
3d shows the same ground lit and standing up, seen from thirty
degrees above: a block of land with the sun low over your left shoulder,
the sea filled in at its own level, and cut earth down the sides. The
surface runs smoothly through the same heights the hexes are coloured
from, because a hillside is not made of hexagons. The flat view is the
hex map; this is the country it stands for.
Height is exaggerated by a fixed amount rather than stretched to fill the
panel, so gentle ground is drawn as gentle ground and two patches of one
world can be read against each other. Distance across the panel is still
true, which is why the scale bar stands in this view; distance up it is
foreshortened.
Contours belong to the flat view, and their switch greys out while
3d is on: what a contour says about a slope, a lit hillside shows. The outline round the selected
map hex goes too, since it is there to tie the patch to the map and this
view is not a map. Points of interest are still marked and named, but
they cannot be placed here — a click cannot be put back onto ground
that may be hidden behind nearer ground. Switch 3d off to place
one.
Points of interest
A starport is a place on the world, a city is a place the
profile does not name, and a comment is a note about one. Each has
a name and as much prose as you care to write, and each is marked on the
map and the globe in its own colour: red, teal and grey. They are placed
in the local panel, because the map's hexes are hundreds of miles across
and far too large to say where anything is.
A new world arrives with its cities on it — one per point of the
population digit, the starport counting as the first of them. They are
put where the ground is worth living on: where things grow, on a coast
where there is one, off the mountains and the ice, and spread out rather
than heaped in one bay. A world with no land to speak of puts them on the
water. Each carries its share of the world's people in its notes, the
largest first. A world names its places in one voice: the flavour
— polyglot, anglic, Vilani, named for a founder, or just numbered
— is drawn once per planet, so its cities sound like each other.
Those shares are not meant to add up to the population on
the summary panel: plenty of people live outside a city, and on a world
with a good starport plenty live in orbit.
Cities are ordinary points of interest once placed. Move them, rename
them, write them up, delete them.
Editing a digit that bears on where people live — starport, size,
atmosphere, hydrographics or population — places them all again on
the ground the new profile makes. Government, law level and tech level
say nothing about it and leave the map alone, and so does half a UWP
typed on the way to a whole one. Anything you have renamed or written on
comes back with it.
One to a point. Clicking an empty point offers Move Here, which
brings an existing one over with its name and its notes intact. The left
panel lists what is on the world — starports first, then cities
from the largest down, then comments. Choosing one goes to it: the panels
all move to its hex and the local view draws the ground around it. Click
it there to open it.
The readout over the local panel gives every hex two answers about its
ground, because they are two questions. Terrain is how high it is
— lowland, upland, mountain, peak. Ground is what it is made
of — rainforest, steppe, cold desert, bare rock, sea ice. Two hexes
at the same height, one at the equator and one at sixty degrees, are the
same terrain and quite different ground. Both travel in the hex table and
the GeoJSON a save writes.
The local panel draws a settlement as its limits: two teal lines, the
edge of the town and the line inside it where the building closes up,
cut the same way the contours are and drawn in the 3d view too, lying on
the ground and following it. The terrain underneath is left alone,
and on a world of billions the lines say where the city ends where a
colour could only say that it did not. Only there: a hex of the map is sixty thousand square kilometres, and the
largest city on Earth would be an eighth of one, so the map would be
claiming a great deal more concrete than there is.
Hex names
A hex is named F07R33C08 — face, row, and column,
counted on the finest lattice, so the name is the same whatever the
Detail slider is set to. A point finer than the map draws carries the
depth after a slash. Write one down and it will still mean the same
ground tomorrow.
Saving
A save is a folder holding one planet. Save asks first what to put
in it: the planet's own JSON always, the flat map as a picture at any of
the five detail levels, and any of the other formats below. The first
Save also asks where the planet goes, and later ones do not ask again.
Load opens the JSON. Nothing is sent anywhere — no server is
involved and no planet leaves this machine.
What you tick is remembered, so the save you want is the save you get
next time without setting it up again. The dialogue says how many files
it is about to write, since the finest levels take a few seconds each.
Exporting
The other formats are there so the world can be read by something that
is not PlanetHex. They all describe the world at the detail level the
Detail slider is on, since that is the map in front of you.
- Vector map
-
The hex map as an SVG: lines rather than pixels, so it prints at any
size and can be taken apart in Inkscape, Illustrator, or Affinity.
- Equirectangular plate
-
The world drawn again with longitude across and latitude down, which
is the one layout every mapping program, globe renderer, and terrain
tool understands. It is drawn pixel by pixel off the surface rather
than hex by hex, so it shows the coastline the world actually has. A
grey heightmap comes with it for the tools that want to build the
ground themselves.
- Virtual tabletop scene
-
The map as a large picture with the grid figures a Foundry or Roll20
scene asks for written beside it. The hex grid lines up within a face
of the net and not across the seams between faces, which is what
unfolding an icosahedron costs.
- Hex polygons
-
Every hex as a shape in latitude and longitude, with its height,
terrain, and whatever sits on it. GeoJSON, so QGIS, Leaflet, and
anything else that reads it opens the world as a map rather than as a
picture of one. Points of interest come as their own points.
- Hex table
-
The same again as a CSV: one row per hex, for a spreadsheet or for a
few lines of your own script.
- Traveller sector line
-
The world as one line of a sector file, tab separated, with the trade
codes worked out from the profile. Paste it into a sector file among
its neighbours and the world appears on the map. Bases, travel zone,
and stars are left blank, because PlanetHex describes the world and not
the system; the population multiplier, belts, and gas giants are rolled
from the seed.
- World sheet
-
One page about the world in Markdown and in HTML: the profile spelled
out position by position, the worked figures, your narrative, and every
point of interest by name and by hex. The HTML carries its own styling
and prints.
Where anything but the planet is exported, a small
-export.json goes in with it holding what a picture cannot
say for itself: which world it is, how many kilometres a hex is, and
which shade of grey the heightmap puts sea level at.
unsaved appears at the top of the left panel when the open planet
has changes that are not written down, and anything that would discard
them asks first.
Saving and loading need a Chromium browser — Chrome or Edge —
or the desktop build, which carries one. Firefox and Safari can draw a
world but cannot write one.
Licence
MIT License
Copyright (c) 2026 Steve Burrows
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
The application icon is the hexagons glyph from Tabler Icons by
Pawel Kuna, used under the MIT licence. Its notice ships with the desktop
build as LICENSE-tabler-icons.txt beside the executable.
PlanetHex generates worlds by the procedure in the Traveller SRD: the
Universal World Profile, the order the digits are rolled in, the
modifiers each takes from the ones before it, and the trade
classifications read off the result. That procedure is expressed here as
code rather than copied as text. No text, table, artwork, form, or map
from any Traveller publication is reproduced, and no setting material
ships with the application.
PlanetHex is an unofficial, non-commercial fan work, not affiliated with
or endorsed by Mongoose Publishing or any other Traveller publisher.
Fair use
Made under Mongoose Publishing's
Fair Use Policy,
which asks for this notice:
The Traveller, 2300AD, Twilight: 2000 and Dark Conspiracy games in all
forms are owned by Mongoose Publishing. Copyright 1977 - 2025 Mongoose
Publishing. Traveller is a registered trademark of Mongoose Publishing.
Mongoose Publishing permits web sites and fanzines for this game,
provided it contains this notice, that Mongoose Publishing is notified,
and subject to a withdrawal of permission on 90 days notice. The
contents of this site are for personal, non-commercial use only. Any use
of Mongoose Publishing's copyrighted material or trademarks anywhere on
this web site and its files should not be viewed as a challenge to those
copyrights or trademarks. In addition, any program/articles/file on this
site cannot be republished or distributed without the consent of the
author who contributed it.