Another System Generator: As Above So Below

New update dropped this afternoon. This is v0.9.3. It had more in it then I originally intended.

An edited summary of changes this version:

1. **Mongoose Editable System Fields:** Many Mongoose system fields now inline-editable. Edited fields are highlighted and persist in the workspace JSON. This includes the ability to add names to each world and moon.
NOTE: Some fields, like atmosphere, are still not editable and you still cannot add or delete worlds or moons. I would like to eventually allow a user completely build out a new system by hand with full control, so I still have it on the list.
2. **Corrected Stellar Generation Tables:** Star physical properties (mass, diameter, surface temperature) are now derived from accurate per-luminosity-class tables with subtype anchors, rather than a single averaged value per spectral type. Giant, dwarf, and subdwarf stars now have physically distinct and correct statistics. NOTE: White Dwarf and Brown Dwarf stars have one simple average used for their key stellar information. Thank you to @Dodo98
3. **Fixed Missing Companion Rolls for Primary Star:** Previously, only secondary stars (Close, Near, Far) received a companion roll. The primary star now also rolls for a companion, matching the full rules requirement that every star in the system gets a companion check. Thank you to @Dodo98
4. **Improved HZCO calculations**
5. **Accordion Display Polish:** Cleaned display and added atmospheric pressure to UI.
6. **Octagon Filter Symbol:** Added an octagon as a new shape option in the Advanced Filter styling panel.
7. **Gas Giant Ring Visibility:** The ring symbol on gas giants is now 2–3× thicker, making it clearly visible when zoomed out to subsector or sector scale.


View attachment 7950

Our next set of releases (v0.10.x) will center on revamping our routes/filters/customization and metadata. I'll make another post tomorrow with my thoughts on my goals for that series and would enjoy hearing anyone's thoughts on what improvements they would like to see.

In the meantime please do continue letting me know how you use this program (I love the pics) and the issues you find.
Nice update! But I already have another bug report. ;) The DM for Gas Giant Quantity is incorrect. It should be +1 instead of +2. And I'm a little confused by how the rolls for Terrestrial Planets are displayed. For one thing, it’s not clear from the line “Terrestrial Quantity: Rolled 2D6 for 8” whether -2 has already been subtracted or not. And then I’m a bit confused by the line “Add D3: Rolled 1D for 4.” If, as described in the rules, a D3-1 had been rolled here, the result couldn’t possibly be 4.

And I have one more question. To what extent does the generator take the system spread into account when placing the orbits? I’ve put together an Excel file that allows me, among other things, to calculate orbit placement according to the rules, and I consistently get different results than the generator. So I suspect there might be a bug here, or that you haven't implemented this rule.
 

Attachments

  • Screenshot 2026-04-19 230833.png
    Screenshot 2026-04-19 230833.png
    5.2 KB · Views: 14
  • Screenshot 2026-04-19 231203.png
    Screenshot 2026-04-19 231203.png
    3.4 KB · Views: 11
Nice update! But I already have another bug report. ;)
I built these logs specifically for the people who cared enough. I am thrilled someone is looking at them and challenging things. At work we had entire QA teams whose jobs it was to find everything little thing. Here I have to rely on the kindness of strangers. My expectation is there are still dozens of bugs, but as we knock them off one by one they get smaller and less impactful.

So let's knock these off in patch v0.9.3.1.

The DM for Gas Giant Quantity is incorrect. It should be +1 instead of +2.
Agreed. Single Class V (main sequence) stars should be +1.

I see the problem (the table I loaded into rules was not being used). This has been updated in v0.9.3.1.

And I'm a little confused by how the rolls for Terrestrial Planets are displayed. For one thing, it’s not clear from the line “Terrestrial Quantity: Rolled 2D6 for 8” whether -2 has already been subtracted or not. And then I’m a bit confused by the line “Add D3: Rolled 1D for 4.” If, as described in the rules, a D3-1 had been rolled here, the result couldn’t possibly be 4.

That logging is confusing and unacceptable. I have updated it in v0.9.3.1.

This is what it was trying to say:
The "Terrestrial Quantity: 8" is the raw 2D6 roll; a -2 is applied silently in code afterward (giving a base of 6) and isn't shown. The "Add D3: 4" is the raw 1D6 before D3 conversion — ceil(4/2) - 1 = 1 is the actual value added. The final count is 7.

This is how it should work now in v0.9.3.1:

Terrestrial Quantity: Rolled 2D6 for 8 - 2 = 6
DM (Fixed): -2
Base count: 6 (>= 3, adding D3-1 bonus worlds)
Bonus Worlds (D3-1): Rolled 1D3 for 2 - 1 = 1
Terrestrial Planets: 7

And I have one more question. To what extent does the generator take the system spread into account when placing the orbits? I’ve put together an Excel file that allows me, among other things, to calculate orbit placement according to the rules, and I consistently get different results than the generator. So I suspect there might be a bug here, or that you haven't implemented this rule.
An excel spreadsheet on system spread! We are cut from the same cloth. You are right, I do see a problem looking at it now and I want to resolve it. I am going to DM you so we can really get into the weeds.
 
I was, yes, but seeing how useful your system generator is, I might just go ahead and use it now. Got some custom subsectors to generate.

Oh, and two thumbs up for this generator, much appreciated!
To be honest the version number doesn't mean much. I will keep adding and patching based on people's bug reports, suggestions, and my own needs. If there is something you are waiting for let me know and I will see about getting it out quickly.
 
Sweet. Is yours online somewhere where I can play with it?
Also, some parts of it still require >M3 (hardware raytracing and mesh shading are used for the ultra-zoom ins) - and it's not exactly performant. I dump the entire geometry into the BVH and let hardware sort it out. I'm working on it. (edit: and I mean primary visibility is still a g-buffer raster pass, but GI is path traced. I'm not sure how to turn it into a web app, but also I had presumed that many players - you're one - already have their own tools that do substantially the same thing)
 

Attachments

  • Screenshot 2026-04-20 at 1.17.30 PM.png
    Screenshot 2026-04-20 at 1.17.30 PM.png
    3.8 MB · Views: 12
Also, some parts of it still require >M3 (hardware raytracing and mesh shading are used for the ultra-zoom ins) - and it's not exactly performant. I dump the entire geometry into the BVH and let hardware sort it out. I'm working on it. (edit: and I mean primary visibility is still a g-buffer raster pass, but GI is path traced. I'm not sure how to turn it into a web app, but also I had presumed that many players - you're one - already have their own tools that do substantially the same thing)
Well, we don't zoom down to planet surfaces at 1.5m altitude yet. But let's put it on the list!
 
I'm playing catchup to threejs anyway - I bet you could (in a few days) get ahead of where I am. I really do think that the days of general software are over - special-case, special purpose software is easy now.
My last traveller generation program was built by hand and took me years. Claude et al are a big help these days.

What program do you use for your planet? Are the generator and browser separate?
 
Well, we don't zoom down to planet surfaces at 1.5m altitude yet. But let's put it on the list!
Yep, and make sure you can zoom out to local group and local galaxy. You never know just how bad a misjump will be:
 

Attachments

  • Screenshot 2026-04-20 at 1.33.14 PM.png
    Screenshot 2026-04-20 at 1.33.14 PM.png
    1.1 MB · Views: 9
  • Screenshot 2026-04-20 at 1.34.13 PM.png
    Screenshot 2026-04-20 at 1.34.13 PM.png
    8.2 MB · Views: 9
  • Screenshot 2026-04-20 at 1.36.04 PM.png
    Screenshot 2026-04-20 at 1.36.04 PM.png
    4.5 MB · Views: 10
My last traveller generation program was built by hand and took me years. Claude et al are a big help these days.

What program do you use for your planet? Are the generator and browser separate?
It's one common database. These are all my own programs and they're all tied to each other (there's a common set of classes that I use that set up the Metal 4 / MetalFX instances and can swap between non-metal and metal depending on the scene scale requirements and lighting requirements. The world generator was its own (python) program for a long time but has been brought into native Swift now. I use Rebound + ReboundX for nBody simulation - that has also now been adapted to swift. I had been using my own RK45 integrator for a long time that I finally discarded in favor of just using Rebound. That's all integrated at this point - or almost integrated.
 
It's one common database. These are all my own programs and they're all tied to each other (there's a common set of classes that I use that set up the Metal 4 / MetalFX instances and can swap between non-metal and metal depending on the scene scale requirements and lighting requirements. The world generator was its own (python) program for a long time but has been brought into native Swift now. I use Rebound + ReboundX for nBody simulation - that has also now been adapted to swift. I had been using my own RK45 integrator for a long time that I finally discarded in favor of just using Rebound. That's all integrated at this point - or almost integrated.
Very impressive and very cool. Something for me to aspire to. Thank you for sharing.
 
Back
Top