Povstalec / StellarView

Stellar View Minecraft Mod
MIT License
6 stars 3 forks source link

[SUGGESTION] More/Better Planets #5

Closed Noobly-Walker closed 3 months ago

Noobly-Walker commented 11 months ago

While I haven't seen any planets in the skies yet (I've been looking from time to time), I do know Venus, Mars, and Jupiter at the very least exist as textures in the assets. My suggestions are as follows:

Povstalec commented 11 months ago

I do have the textures, though I have not yet used them anywhere, since am missing the mechanics.

I know it would be easier to either have the planets orbit around the Overworld or stay in the same place relative to the sky, but I really want to make some simple to use system which players can use to define solar systems with individual planets and then simply select which planet of the system the dimension corresponds to and have the sky be based on that.

That way I could easily add different planets that would show up in the sky, which would be subject to apparent retrograde motion.

Your idea with Jupiter is quite nice and I may use it if I don't find a way to make the moons orbit around Jupiter in a believable way by having them move.

As for the idea with Uranus and Saturn, that's absolutely an awesome way to showcase the rings!

Mercury and Venus being the first to appear in the morning is also a cool idea. I was already pondering if I should have multiple star layers that would be visible at different times, so this would be a nice addition to that.

Noobly-Walker commented 11 months ago

What you'd about have to do is make a simple, hidden simulation of the solar system, then draw lines from the object representing the Overworld to all other objects, and then use the angles and what not to draw the various planets/stars/etc in the skybox, using the sun's location as the skybox's main point of reference as it would be too complicated to move it. With this accomplished, you can customize the orbital radius, eccentricity, inclination, etc of each planet individually, and it should show up correctly no matter what.

Povstalec commented 11 months ago

Yes that sounds good. The biggest problem is figuring out how to make that into something players could edit inside the assets folder and then parsing it to the game.

Noobly-Walker commented 11 months ago

You could take inspiration from Galacticraft or Universe Sandbox for that. Have a GUI that draws the hidden simulation of the solar system on screen, as well as the orbits of planets/moons. Then, click on an object, and you get sliders to change the orbit. But that might be a bit too involved and un-Minecrafty for what you're after.

Povstalec commented 11 months ago

You could take inspiration from Galacticraft or Universe Sandbox for that. Have a GUI that draws the hidden simulation of the solar system on screen, as well as the orbits of planets/moons. Then, click on an object, and you get sliders to change the orbit. But that might be a bit too involved and un-Minecrafty for what you're after.

What you described is just a GUI, I do like that idea, but that's not what I was talking about. Galacticraft had the planets pre-made and unchangable. I could make a GUI like that fairly simply (although given my texturing skills, it would take me a long time just to make it not look bad).

The problem is getting it to work in the first place, as I know next to nothing about how json (which are used for physically storing the information) files are accessed from the assets folder.

I know how to parse them from data folder when the game starts, but that's quite different as I have access to the server, whereas with Client-side mods (which Stellar View is supposed to be), access to server is required to be very limited (for example, doing things like spawning mobs, changing the actual light level and placing blocks is impossible), otherwise it would need to be installed on servers as well, which I do not want

Noobly-Walker commented 11 months ago

The GUI would merely exist to make tweaking settings more visual and therefore easier, and shouldn't need to involve the server. The alternative is to have something similar to the setting menu to adjust the galaxy's position in the sky, where it's a load of sliders and buttons.

The concern is, since there would be way more things to control for, it would be hard to make custom systems look good.

Povstalec commented 11 months ago

Yup, pretty much.

Hypothetically there might be a way to create a list of settings with unique naming, but that's thinking way too far ahead.

Noobly-Walker commented 11 months ago

JSON, right? I have some experience with that. I can make a skeleton.

{
  "mercury": {
    "orbitRadius": 0.39,
    "parent": "sun"
  },
  "venus": {
    "orbitRadius": 0.72,
    "parent": "sun"
  },
  "overworld": {
    "orbitRadius": 1.0,
    "parent": "sun"
  },
  "moon": {
    "orbitRadius": 0.0025,
    "parent": "overworld"
  },
  "mars": {
    "orbitRadius": 1.52,
    "parent": "sun"
  },
  "jupiter": {
    "orbitRadius": 5.2,
    "parent": "sun"
  },
  "saturn": {
    "orbitRadius": 9.58,
    "parent": "sun"
  },
  "uranus": {
    "orbitRadius": 19.2,
    "parent": "sun"
  },
  "neptune": {
    "orbitRadius": 30.0,
    "parent": "sun"
  }
}

Using some circle math and this JSON, you can loop through all the planets, and have them orbit the parent body. Another variable you could store for each planet is apparent size, to control how large each of them appear in the sky, so they don't have to be hardcoded. And you could just add more things as needed.

If this isn't what you had in mind, I apologize.