Iris icon indicating copy to clipboard operation
Iris copied to clipboard

Iris 3 Plan / Roadmap

Open cyberpwnn opened this issue 2 years ago • 0 comments

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

cyberpwnn avatar Jun 10 '22 10:06 cyberpwnn