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 email@example.com. 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.