Tools and experiments
Last changed on
A new section is born: Tools & Experiments. This section comprises various kinds of sub-pages, more or less complex, that expose (and will gradually expose more) some of the engine's aspects. They are also a very initial step to be able to interact with the engine.
This is released now for just about the same reasons the data explorer was initially released: I got fed up with command-line output which, while easy to set up and manipulate, does have some drawbacks:
- Limited in the number of dimensions available
- Even though one can control color and the like and play with ascii-art-like decorators, let's face it: the output format is severely limited and sometimes hinders clarity.
That does not mean command line is not used; on the contrary, it is used constantly thanks to its lightness and speed. What it does mean is that, when a nicer presentation is needed, it lacks power and flexibility.
Anyways, the new section, as of yesterday, offers the following initial tools:
Build your own system
This tool allows you to declare a system's following parameters:
- Its star's solar mass in sun units (1.0 == Sun)
- Its star's age, as a multiplier of 1.0: for example,
0.1would generate a system whose star is 10% of its total lifetime and1.1would generate a star at the end of its giant phase - A unique "seed", useful to pin down a system while changing its star's age. Note that changing a star's mass while keeping the seed identical will result in a completely different system.
The output is similar to what is obtained via the data explorer or the 3D explorer, with a difference: all data is generated on a unique page. This results (unfortunately! :-)) in the output page being quite heavy. Even though the engine time to generate the system's data keeps on being fast, the view/template layer struggles and results in horribly long server-side times in the range of seconds! I shall maybe go back to that page and improve it by lazy loading some of its components, but that will be for later.
Time dilation
Extremely simple but useful, and a first glimpse at an engine internal actually already in place in the 3D explorer. Some may have already noticed, but planets and satellites, when going back to them after a reload of getting far away enough from them and then back nearby (so as to trigger a server-side regeneration) - actually move along their respective orbits. The problem is: I have not had the time yet to implement movement client-side, although that is on my to-do list.
My issue is that a galaxy runs on a server-side specific clock; this clock keeps track of elapsed time since the "beginning of the universe". Since the server is authoritative, including for stellar entity positions, all the client must do is apply rules of orbit radius / angular speed as declared by the server, interpolate and render, and probably wait for a periodic 3D position update from the server, adjust the rendered position if needed and "ghost" along a reasonable trajectory while waiting for the next update.
Although this does not seem like much to do, it has server-side implications that I have not come around to tackle yet. But it is in the works.
Another use for this page is of course to get a feel of how much time would pass in the real world for an action to be performed in the virtual world. While the engine tries to mimic a continuous time flow (hence not turn-based) and will try to assign reasonably realistic virtual world action durations, playability should not forgotten. I mentioned in the About page that the game would not be fast-paced and it won't.
However, given the technological levels the virtual world will enjoy, some "virtual world actions" would happen in a few virtual picoseconds (battle calculations run by semi-sentient quantum computers and the like). So we have a problem: if such a virtual action takes 1 nanosecond and the engine defines its time distortion as 100, then how on earth am I to keep track of time deltas of 0.01 nanoseconds in the real world? As far as I'm aware and since I do not have an atomic clock at hand, this is impossible.
So other solutions must come into play, one probably including fluff. But will try and cover such questions in an upcoming post about technology and the tech tree, which has reached the stage of early embryo. :-)
Star lifetime
A convenient way to generate some of a star's characteristics and their evolution over the star's life (and afterlife, during its giant and stellar remnant phases). At the moment, one can play with the following parameters:
- The star's solar mass at birth/ignition, from 0.08 to 150.0 solar masses.
- A "slice of time" or step increment, from 0.01 (1%) to 0.1 (10%)
- The starting point in the star's life from which to generate characteristics
- The ending point in the star's life from which to generate characteristics
The data output is of course not the complete data and a lot more happens behind the scenes.
A few convenience shortcuts are provided with typical examples of what can be obtained using certain parameters.
Star Mass/Luminosity/Radius 3D graph
This is a first at 3D data visualisation using Babylonjs. :-) Its actual use is to get a nice (and hopefully informative) feel of how a star's population is spread along the three following dimensions: mass, luminosity and radius.
For simplicity's sake, all values are expressed in solar units. They are then easier to normalise and intuitively easier to grasp - to me at least: I find it easier to understand that a star is 1.5 times the mass of the sun than a star has a mass of 2,982,750,000,000,000,000,000,000,000,000 kg. 8-}
The main entry point into generating the star statistics is to enter a number of virtual cubes, whose usefulness was initially described here. The galaxy where these cubes are generated is 100% random at the moment. i.e., it is seeded absolutely randomly.
In order to get a critical mass of stars (pun intended) and get a meaningful graph, one should enter a reasonable number of cubes; the tool supports usage of up to 1000 cubes. The resulting number of generated stars is also output and is the consequence of a cube density of 10 plus randomness.
Playing with scales
The scales along the three axes can be manipulated and apply the following formula, where x is a normalised mass, luminosity or radius and a is decribed below:
The three range inputs enable manipulation of the a parameter above and obtain exponential- or logarithmic scales depending on its value:
- with
aequal to1.0, the scale is linear. The problem with it is that the range of masses, etc is huge and results in differences being visually erased. Hence the need to "amplify" them visually. - with
agreater than1.0, the scale becomes logarithmic-like - with
agreater than1.0, the scale becomes exponential-like
I hope you enjoy. :-)
New tools…?
Yes, extra new subpages will come, at an uncertain pace and more or less as dictaded by my need for easier readability and/or prettier presentation. :-)
Please signin to add your comment.