Bug Fix: Fixed Blank Map feature - it works again.
Bug Fix: System was not generating any minor worlds - this was due to code that was intended to cap the number of minor worlds plus gas giants plus belts plus the main world to fit in 20 available orbits. Some legacy data in Traveller Map has more system objects than 20, enough to break the script.
Bug Fix: When the main world is a satellite, the planet it is orbiting (whether a Gas Giant or a Big World) now has other satellites generated correctly. Previously the main world would be the only satellite of the planet.
Save and reload your work: When on the System page, you can save your modified system and re-load it at a later date. The data is stored within your browser. This allows you to manually alter any aspect of your star system, taking advantage of the calculators built into T5 World builder, and work on it over time before exporting it to your favourite format.
Import and Export systems: In addition to saving your work within your browser, you can export it as a JSON file and also import saved JSON files.
Native Intelligent Life and Native Life: if the T5 rules generate native intelligent life, the world now automatically has native life.
Bug Fix: When the number of worlds in a system was not specified by Traveller Map data, the number was not being generated randomly. Now fixed.
Data interpretation: Many worlds in the OTU have a 'worlds' statistic of more than 12. This has the potential to break the system generator if worlds plus gas giants plus belts plus the mainworld exceeds 20 orbit 'slots'. For now, if the 'worlds' statistic is more than 12, it is reduced to 12.
Bug Fix: Native Intelligent Life was not generating correctly.
Edit World Details: All planet and satellite details can now be edited when you press on the Details button next to them. This allows all values including the UWP to be adjusted. All details are automatically recalculated if needed in real time.
Jump Points: As part of the new Edit World Details feature, every world's Jump Point is calculated in kilometres, including accounting for the parent star and parent planet (if the world is a satellite). Also included is a table of travel times to the Jump Point from 1G to 6G.
New Satellite Option: Under System Options, you can select an option that prevents tidally locked worlds having any satellites. This comes from my own experimenting with Universe Sandbox - satellites of almost any Traveller size are torn apart if the world is close enough to the star.
Download World Details: When the system is generated, there is a check-box to indicate you want all details of each world downloaded with the system data. It is checked by default. So I'm generally assuming you want more detail rather than less.
Small worlds: The system generator now distinguishes between Asteroid and Planetoid belts and worlds that end up size 0 through modifiers or size limiting (typically satellites). You can now generate and edit the details for these particular objects. The diameter is randomly generated, ranging from about 260km - 700km.
New Barren Option: Under System Options, you can indicate that if the main world population is zero, all minor worlds will be generated as barren (i.e. population, government, law level and TL will be zero). If left unchecked, the T5 rules will be used, which can result in notional populations of less than 10.
Bug Fix: When the size of the world is less than five and hydrographics more than seven, oceans were not being placed. This is now fixed.
Bug Fix: System orbit based Trade Classifications (e.g. Hot, Cold, Twilight Zone) now automatically update when orbit is adjusted.
Bug Fix: Map was placing cities in every hex in Size 1 worlds regardless of population. Now fixed to operate according to T5 rules.
Layout: changes to the home page to take advantage of a wider space for "Enter, Review and Change World Details".
Noble Estates: option added to allow noble estates to be placed on ocean or sea hexes.
Multiple world maps: option added to allow up to 10 maps to be generated at once. This helps users hunt through several maps at once to find a suitable one.
Code Optimization: when the code needs to fetch individual hexes, it uses an associative array to look up the hex instead of iterating through all the hexes in a map to find the correct one. Hopefully this gives a significant speed increase for future development where we want to do more complex stuff.
Minor bug fix: map key for world maps was oddly offset off the map for smaller sizes (1, 2 and 3) and spilled over the right edge for larger sizes.
Bug fix: black and white map and noble state flags were not being read correctly.
Bug fix: for Terrain Hex and Local Hex maps, the 'shore line' now works as intended - "creeping" ocean or ice cap from neighbours onto the current hex.
GET Data parameters: added a 'pbg' parameter for more conveniently specifying the 'Population Multipler, Belts, Gas Giants' in a star system.
Bug Fixes: Fixed information about the random seed, system name and sector names in the URL passed to both the system and map generators.
Bug Fix: Updated the API documentation to reflect developments in the code.
Layout change: Changed the layout of the main T5 World Builder page to put map and system flags at the bottom, in anticipation of more options being added.
Bug Fix: The trade classification "Lk" (i.e. satellite is tidally locked to its planet) was not being correctly applied to satellites. This had the consequence of the rotational period formula generating rotations much larger than the orbital period because the formula takes into account the planet's mass and distance from it.
Display change: Star data (mass, luminosity and radii) is now spread over several columns, making the table look a bit better.
Bug Fix: Stars in legacy data drawn from travellermap.com include disallowed classifications. To make the data work, star data is converted as follows:
1) All stars in the format "M9 D", "F6 D" etc. are converted to the identical class with size "V" instead.
2) F0 - F4 VI are converted to F5 VI
3) K0 - K5 IV are converted to K6 IV
4) M0 - M9 IV are converted to the identical class with size "V" instead.
In addition, the code was falling over when it did not find any star data. In these cases a pre-fill of the star is not attempted but other data is filled out.
If you find a sector is not loading any worlds and is not leaving the message "No World Data available" it is generally because there is something in the legacy data the code does not like. Please bring these cases to my attention! A sector name is enough.
Bug Fix: Noble Estates will no longer be placed in open ocean.
Equator Line: All world maps now have a dashed line at the equator.
Blank Maps: Under the Options on the main page you can generate a blank world map of sizes 1 to 19. I invented this to help with analysis, and thought others might want it too.
World Details: When a system table is generated, every world now has a "Details" button next to it (but not gas giants, stars or planetoids). For the moment, this just adds information appended to the system page for more detail, including randomly determined atmospheric compositions for atmospheres 10-12, temperatures at day, night and in the seasons, and so on. These are drawn from Grand Survey. This is an 'alpha' release and the code still contains bugs although no fatal errors that I can see.
System maps. When a star system is generated, there is a new 'Create system symbol map'. It creates a symbolic map of the system in the style of Joshua Bell's prototype code found here: https://travellermap.com/tmp/sys.html.
Place Several Noble Estates option added. This will place a number of World Hex level Noble Estates based on the Nobles field. One Noble Estate World Hex will be placed for each of Knight, Baronet, Baron, Marquis, Viscount, or Count. Two estates will be placed for Dukes, and Four for Capital Dukes. When the World Hex Map is generated, the number of Terrain Hexes placed as Noble Estates varies based on the type of nobility of the estate. For a Knight Estate, one Terrain Hex will be placed; Baronet is two; Baron is four; Marquis is eight; Viscount is sixteen; and Count or Duke is thirty-two. Thus, the correct number of Terrain Hexes is placed for each noble, bearing in mind for that Dukes there is more than one World Hex of estates.
Names of celestial objects can be edited. In the system generator, the user can add names to all objects and they will form part of any download of the system.
World name on maps. The world name as edited in the system generator is now added to the map. The system name (i.e. the main world name plus hex and sector) is also added; some modifications to map layout as a consequence.
Layout. Generate buttons are now at the top of the layout rather than the bottom.
Coding rationalisation. This will make it easier to expand in future, BUT there may be bugs. I have tried many combinations successfully for all options but it is difficult to test for all options. Please report bugs!
Minor fixes and enhancements this time around: the Main World is now placed according to the T5 rules: if it is an asteroid belt, it is placed randomly without considering the habitable zone. Otherwise it is placed according to a roll that can place it in the orbit just inside the HZ, in the HZ orbit, or the next orbit outside. Similarly, the main world will be rolled for a random chance to be a satellite.
To help placing the main world where Referees feel it must be a planet or must be a satellite, I have added options to force this choice. I also added back the option for a black and white map (sorry, Marc, it was taken away by accident!). I have also added an option to stop the placement of a Nobel Estate if desired.
Satellites are now placed in different orbits - except for Ring Systems (fix to come).
The BIG change: the system generation table. Energy Absorption (i.e. one minus Albedo), Greenhouse effect and Average Temperature are now calculated for each world.
You can now adjust the orbit or decimal orbit up or down using the arrows. This allows 'fine tuning' of planets positions to suit the temperature you envision is average for that world. The values are recalculated for you.
The download formats have changed. You can download the system in HTML format - it is a plain unstyled format of the data (no functioning buttons. Additionally, the data can be downloaded as plain text, or as CSV which can be opened by spreadsheet programs.
Marc Miller's requested feature was an interesting challenge and I dropped working on other code to make it work.
Each map now has a "<" and a ">" button above it. They slide all of the terrain left or right over the world map. This allows slight adjustments to get important hexes (e.g. the starport and main town or a noble estate) into the centre of a map or triangle.
The initial attempt simply got each hex to grab its west or east neighour's terrain to rotate the terrain around the globe. The intriguing problem was that the polar regions ended up distorted because of the way that hexes north of the pentagons move west or east - because suddenly, relative to the middle part of the map, the hexes are 'moving faster'.
The solution I implemented simply moves the top and bottom regions more slowly than the middle region. This does not remove the distortion, but minimises it so that the polar regions keep the rough shapes of the terrain they have relative to the rest of the globe. Moving back and forth an arbitrary amount will still distort the shape. But it should be robust enough to make a minor adjustment without completely changing the map.
To understand this problem, I had to print out a larger world (I chose a Size 9 world) with 50% hydrographics to give some interesting shapes, and then cut it out and fold it into the duodecahedron to visualise the problem. It was fun!
This release contains two updates. I have re-worked the Sector list - and unfortunately I have had to do away with multiple milieux of the same sector.
HOWEVER, what I have added is that the last sector selected by the user is now automatically saved. When the page is loaded again, the name of that sector is selected by default, and the worlds of that sector are loaded into the 'Select a world:' list.
Marc Miller has requested a feature whereby we can move the rendering of the hexes east and west so that the main town with the starport or the city with the starport can be shifted towards the middle of a world triangle. This is possible but will take some time. It will be extremely awesome when I get it done. Even if I do say so myself. As a first step, I have simply stopped the starport being placed in the half-triangles the current east and west edges of the map. This can still leave the starport positioned awkwardly on a half-hex between two triangles.
I am proud to announce that the system generation table now includes a link to map any world in the generated star system. At the touch of a button, you can generate a map for any planet in Chartered Space, or your own Traveller Universe.
The next step will be to make the names of objects in the system editable so that you can download more meaningful data. I will also be working on downloading and uploading your own data into the system generation table so that you can save it and keep working on it. This is an important precursor to being able to edit and generate details for each world such as gravity, temperature and so on.
Download As HTML and Download as Plain Text buttons added to the generated systems page. The plain text file is a fixed-width data file - each systme entry is padded with spaces. The HTML is an HTML file that includes the style sheet used by the T5 World Builder pages. This means you can open it in your favourite word processor to edit it and save it.
Future formats to be added for the system are tab-delimited and CSV. CSV format allows the results to be imported into spreadsheet programs.
If the sector you select from travellermap.com has no world data, the world selector will now say so. All data from travellermap.com is now available to play with. Where a sector does not have names for its worlds, the sector hex coordinate for each world is displayed in the world selection list.
Bug fixes to get World Hex, Terrain Hex, Local Hex maps working correctly. Also fixed the Download Map buttons that stopped working. System data table cleaned up slightly.
All travellermap.com sector data - Official OTU or not - is now accessible from the Select Sector drop-down box.
Published a draft Traveller5 extended star system generator. At present it is little more than a proof-of-concept leveraging the code created for the Map generator.
It is published as a separate web page because I'm lazy and I developed it as a separate page in my sandbox. However, it will be integrated into one page in the near future with a title something like 'Traveller5 World Builder' with buttons for either generating a map or a system.
Then the real fun starts: after developing the system format more and clarifying naming conventions for unnamed objects, put a link next to each world (not Gas Giants or Planetoid Belts to generate a map.
In generating the extended system, there are some departures from the T5 rules and interpretations.
The main world is always placed in the first available Habitable Zone. This will change in future and the table on p. 408 of the T5.09 rules will be used. I did this to simplify things while I worked out how to determine system zones and other system related conventions.
Determining whether a given Satellite is Close or Far is done using the Book 6: Scouts throw (roll 2D: 7- = close, 8+ = far), and then rolling on the relevant column of table 2c on p. 408 of the T5.09 rules.
Size zero is allowed for objects other than Planetoid Belts. This is especially important for satellites because where a satellite's size is equal to or bigger than its planet, I have implemented the original T5 core rule that it is reduced to the planet's size minus 3 (p. 437 of the T5.0 core rules). In these circumstances, it should be interpreted in a similar way to Size 'S' of the original Book 6 extended system generator.
Ring system orbits are rolled for using the 1D table found in Book 6: Scouts on page 28.
Feedback is welcome - e-mail me at firstname.lastname@example.org. I acknowledge there is still much work to be done.
Implemented a polyfill for URLParameters to ensure links to particular maps are more robust and the code is simplified.
Layout and style changes to make the user interface more logical and with a clear order.
The new random number generator is faster, and the app can cope with up to size 20 worlds ... but you may have to tell the script to 'continue' if asked because it will take time. My aim of being able to generate Size 33 ('Z') worlds is still unfulfilled.
Layout has been modified to include tool tips and adjusted so that the 'Generate Map' button is more prominent and at the top of the screen.
There have been many backend coding changes to make the app more robust into the future. There will be a few more changes to the user experience and background code into the future.
The rules interpretations will be better documented at some point in the future and circulated for discussion.
Many thanks to Joshua Bell of travellermap.com fame for casting a professional eye over the website. He raised a host of issues which I am working through.
The first change is a to the general user experience. So there have been major changes to layout. Navigation bar to explanatory and background text introduced. User input now gathered at the top with less scrolling down to buttons to get the action going.
For now, functionality is the same. There will be changes to the random number generator coming to speed up generation - this matters for larger world sizes. There will also be various background changes to the code based on inexorabletash's feedback. But one thing at a time!
As always, feedback is welcome. Just e-mail me - I have a gmail account - jonathan dot a dot sherlock.
You can now drill down to the World Hex, Terrain Hex and Local Hex levels. Click on an individual hex in any hex map to drill down to the next level. All maps include a key and a scale.
I have roughly documented my interpretations of the rules in this PDF file. As always, feedback is welcome - I have a gmail account - jonathan dot a dot sherlock. I would very much like feedback on interpretations of the rules, but also on website layout and, of course, any bugs.
You now have the option to generate a map in black & white. This makes it easier to photocopy.
The API is now open in a similar way to travellermap.com.
The "API Documentation" help button under the "Select A World" heading gives more information about how to use it.
Every map generated also has a URL posted beneath it to enable a direct recreation of that map using the world data just used.
I have changed the random number generator to a faster algorithm with the seed still exposed. If you have saved seeds, many apologies, they will no longer produce the same map.
It is now much faster. Although trying to generate a Size 20 world will give the 'script is taking too long ... continue or stop script' message, if you continue, it will generate the world. Try it, it's fun (just substitute "L" for the size digit in any UWP).
This release fixes issues with World Hex maps and contains many background updates to rationalise the code.
If you click on a Frozen Lands hex next to an Ice Field hex, the Ice Field now "creeps" onto the Frozen Land in a similar way that ocean "creeps" onto land to give wriggly coast lines.
Half-hexes for Twilight Zones are now imposed on World Hexes and are a bit wriggly.
Ice-caps now "creep" onto neighbouring hexes World Hex maps.
Overall, the World Map provides an abstracted collection of world hexes, while each individual World Hex map provides more of the "crinkly bits" so beloved by Slartibartfast.
In this partial release, precipices and the two precipice lines for chasms are now traced onto World Hex Maps. I am not completely satisfied with the results.
The generator picks a random hex edge for the start, a random non-adjacent hex edge for the end, and picks a start and end hex from those edges. Then it traces a random path from one to the other.
The script does lock up occasionally because of a do..while loop that becomes infinite somehow when generating a World Hex Map with a chasm. But it happens so rarely I thought it worth a release.
The two precipice lines of a chasm are in different colours so you can see what the generator has attempted to do even if the line turns out to be a funny shape.
This is a partial new release. World Names with UWPs are now bigger and at the top of the world map. The Download as PNG button now renders the SVG graphics at a higher resolution.
In future I plan to implement letting the user choose the resolution of the PNG button. At present a typical size 5 world is about 300kb - 400kb with the new resolution. The trade-off will be better resolution for a larger file size.
But most exciting for me, click on the background (not the terrain symbol!) of any hex on the world map and you get a map of that world hex. I acknowledge this may cause issues with touch-screen devices.
World Hex Maps are only in draft form. I am still to implement Chasms and Precipice lines; the rules simply state "draw a precipice line through the hex" and I need to decide how this will work to be suitable squiggly and work in with shorelines and other terrain.
At present, World Hex Maps do not take into account half-hexes in Twilight Zones. I also want Frozen Lands and Ice Fields in Twlight Zone and Frozen worlds to have "shorelines" that are squiggly in a similar way to normal oceans and lands operate now.
So check out a favourite world map, then generate a variety of World Hex maps. You can download them in SVG or PNG format.
Instead of over-writing the world map when the "Generate Map" button is pressed, a new map is added. The map download buttons are now produced for each individual map. This allows users to generate multiple world maps for different worlds without starting again and still having access to previous maps generated in a particular session. It also allows for using different random seeds until a satisfactory result is produced.
Marc Miller has e-mailed in some great suggestions. I will be working on them next, but for now I want to implement World Hex maps. I will work on Marc's suggestions after that, before getting back to Terrain Hexes and Local Hexes.
I also had a request to implement a 'Seed Me!' button. This quickly creates a new random seed. This means you can load or enter a world, generate a map, and if you don't like it, press the "Seed Me!" button and generate another map. You can compare all the maps you have generated before downloading your preferred one.
The seed for random numbers is now exposed. Enter any string upto 256 characters in length, or leave blank for a random seed. If you wish to save a seed, copy and paste the seed for yourself. I may add a "saved seed" library for individual users using cookies or an equivalent.
Ocean placement is now randomised, not just world triangles marked off as oceans. Maps are now looking heaps better.
This meant I had to change the definition of a 'continent' for the purpose of placing features that the rules require placement of 'one per continent'. A continent is simply all the land hexes in a particular world triangle, regardless of whether they are separated by ocean or not.
To get around world of lower size (less than 5) and higher oceans (more than 7 for hydrographics), the program now simply selects a certain percentage of hexes overall as ocean hexes instead of trying to place separate oceans in neater shapes. The randomly placed hexes on these kinds of worlds generally work out to a reasonably pleasing shape given there are few land hexes left.
To simplify placement of settled areas, all settled areas must now be placed on land or islands.
I will be working on exposing the random seed generator next.
Twilight Zone now works except for Size 1 worlds. For now, all settled areas (cities, towns, arcologies, starports, cropland and rural areas) are still placed randomly, ignoring the Twilight Zone.
Users will have the option, in future, to control where settled areas are placed. But I need to change the way that oceans are placed which will change assumptions about what constitutes an 'ocean' and what a 'continent' is.
UPDATE: Size 1 was easier to implement than I anticipated. Now also done.
Map key added.
Rendering of world details with neat black outline added. Open to feedback on design.
Map can now be downloaded in either PNG or SVG formats.
Option added to select a world from OTU sectors using travellermap.com data.
Users now enter comprehensive T5 data, or modify what was loaded before generating and / or downloading a map.
BUG FIX: to enable worlds to load in Chrome.
Map generator first published. User input a name and UWP and number of resources, and the generator calculated Trade Codes and generated the map.