Originally published at a denizen's entertainment. You can comment here or there.
Increasingly less recently I had been discussing with Pazi a game project. I wanted to do something useful so I offered to craft a little program module which could generate 'realistic enough' star systems. Something that would not simulate stellar formation and evolution directly, but which could use information derived from those simulations. I suspect such a tool could find a few uses, all of roughly the same sort, but apart from being useful I mainly think it a pretty nifty idea. Of course I would need to first finish my current project, but that is badly in need of finishing anyway.
Trying to determine what I would consider a 'first finished' version, not the first steps I would take in writing it but what it would need to do for me to consider it getting to completed. That, and some sorting out in my mind of how to approach the workings of this thing.
My thinking is to start with the star itself and build up the system around it in a sort of abbreviated history. Presumably, get it working for single stars before worrying about multiple systems, unless those turn out not really harder to put in. We get a few basic figures for the star, stuff like mass, spectral type, luminosity, then use those to proceed. Stellar mass typically correlates with disk mass available immediately after its formation, determining how much material is available to form planets and potential early migration activity for them. Plus, the distances at which various sorts of planets can form. I think we can relate those figures to get some nice functions for populating planets from. Start by placing giant planets, unless consensus has changed on the order of formation, then the little ones, abstract some pseudo-orbital-evolution and there we have our own impromptu planetary system.
Each planet's numbers - semi-major axis, eccentricity, mass, composition - get to interact with the host star's numbers, and we get a rough guide to the world's likely surface conditions, atmosphere and chemistry of note. There might be more than one class a given world could fall into.
I find the prospect of this fairly daunting. I imagine for an experienced programmer it would fall into the class of 'relatively simple' but for me, it's not. I'm only just barely learning, still. But I look forward to accomplishing this. I suspect the first thing needing doing is collecting papers with relevant modelling statistics to use; been wondering if it might be much harder too to get information for moons and small bodies.
I worry I have somehow done badly by describing my goals in the terms I have, rather than some technical description of coding intentions, but suspect this to be a silly worry. Am expecting to be learning a lot of how in the doing, and believe it is advantageous to have clear ideas on what I want the outcome to be.
Once that 'first finished' version is working I would want to add some fancier abilities, like aging. This would be needed anyway to incorporate giant stars since those again modify their planets as they age and expand and brighten, but also would be useful for incorporating very young stars still in the process of forming planets and details like at what point terrestrial worlds are likely to become tectonically dead. I suppose an approach that might work is to generate values for the whole system's duration (at least, mark points when things change and the values before and after). I suppose it is unlikely this program would get used for anything that depicts time-spans long enough for stars to visibly age, but at least for some sort of manual editing or inspection it would not end up generating a new history every time the age is tweaked. Perhaps too much, but I cannot help but feel it would be a useful approach somehow.
As for populating a larger 3- or 2-dimensional space, I suspect that would be harder to do, maybe want for another tool that talks to this one. Currently I'm thinking finding a good way to place stars in a field would be a more difficult thing to do than getting population kind distributions for various stellar environments. Hopefully by the eventual time I get to attempting that I will know much better.
That's main thoughts and plans on this for now.
[At Systemic can be found an excellent example of why this will likely be difficult to do. At the moment our models aren't reliably predicting the sizes of giant planets in some important situations. And we're still finding situations where our models are in error, which is why I suspect I will have to aim for 'realistic enough' and post refinements as astronomers make refinements. Or as soon after as I am able to.]