Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Iris 3 Plan / Roadmap #802

Open
cyberpwnn opened this issue Jun 10, 2022 · 0 comments
Open

Iris 3 Plan / Roadmap #802

cyberpwnn opened this issue Jun 10, 2022 · 0 comments
Assignees
Labels
Enhancement New feature or request Extra Help Needed Extra attention is needed Medium Priority Plugin Won't Fix This will not be worked on

Comments

@cyberpwnn
Copy link
Collaborator

cyberpwnn commented Jun 10, 2022

Iris 3 is an overall goal to refine all features and support more platforms in a more efficient way.

New Capabilities

  • Multi-Platform: Support for Forge, Fabric, Sponge & Headless along with Bukkit & any other platform that comes up.
  • Ability to generate portions of chunks vertically (multicore per section instead of per chunk)
  • Better support for custom content such as entities blocks and biomes.
  • Faster, more stable updates especially to new versions

Engine Architecture

To accomplish all this, the engine itself is its own project as a downloadable jar (downloaded by the platforms on demand)

  • Engine
    • Services
      • Platform
      • Data
      • Mantle
      • Seed
    • Mode
      • Feature 1
      • Feature 2
      • Feature 3

Platform Service

The platform contains all methods and events used for the engine to properly interact with the platform. A valid platform must be able to do the following

  • Provide an iterable of all possible blocks registered (namespace and key)
  • Provide an iterable of all possible biomes registered (namespace and key)
  • Optional capability to create a new biome with a custom color at the minimum
  • Convert IrisBlockData into whatever platform data is needed to generate the chunk
  • To provide basic checks on blocks such as is solid, can go on grass, etc.

Data Service

The iris data system just like before is responsible for loading and processing json and object files along with any new types of data, they are loaded managed and cached here

Mantle Service

Performs just like the mantle currently does. Can store anything anywhere in any layer.

Seed Service

To avoid seed issues all seeded roots will be housed in a service in which any part of the engine can request a new sub-seed derived from the world seed there are multiple kinds of seeds. The world seed is protected to avoid temptation of using the direct seed.

The seed service also acts as a factory for all RNG objects & generator objects. It is recommended you create generators through the seed manager and not via tier constructors.

Initialization Seeds

These seeds are constant with the world seed and they normally are a seed procedurally created with the world seed and a name (hashed) into a new seed.

Indexed Seeds

Indexed seeds take the world seed, a name (hash) and a position such as 4 or even 3,56,77. These seeds are constant to the world seed and specific position

Mode

The mode organizes features and is responsible for calling services and loading data to generate terrain

Features

Features are not in a pipeline and instead can depend on one another.

Feature Dependencies

A feature can depend on multiple other features to be completed before it can be started, this allows iris to find the optimal multi core path to generating all features in order in the most efficient way. Such that

  • Terrain
  • Biome
  • IMantle
  • Decoration
  • OMantle (depends on Terrain,IMantle)
  • Cave (depends on terrain)

would result in

  • Terrain, IMantle, Biome, Decoeation in parallel
  • OMantle, Cave in parallel
@NextdoorPsycho NextdoorPsycho added Won't Fix This will not be worked on Enhancement New feature or request Extra Help Needed Extra attention is needed Medium Priority Plugin labels Jun 16, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Enhancement New feature or request Extra Help Needed Extra attention is needed Medium Priority Plugin Won't Fix This will not be worked on
Projects
None yet
Development

No branches or pull requests

2 participants