# Milestones

## Hello world

Released as `0.0.1`: `Pre alpha 1`

- [x] From the ground up cleanup

## System

  - [~] Dependencies updater
    - [x] Tracy
    - [ ] ImGui
    - [x] FastNoise
  - Compile time
    - [x] Warnings
    - [ ] Unit build
    - [ ] Ninga
    - [ ] Clang
  - [x] CI build
    - [x] CMake package
    - [x] GitLab CI
  - Platforms
    - [x] Linux
    - [x] Windows
      - Mingw: requires picotls, picoquic and FastNoise compatibility
    - [ ] MacOS
  - [ ] Launcher / Updater
  - [ ] Review documentation
    - [ ] Code cleanup
    - [ ] Proper wiki
  - [ ] Proper logger
  - [ ] I18L

## Data

  - [~] Element hierarchy
    - [x] Raycast
    - [ ] Soft part break
    - [x] Relative position
    - [x] Rotate
    - [ ] Bounding hierarchy
    - [x] Merge World and Entities
    - [ ] Galaxy
      - [~] Orbit system
        - [x] Circular
        - [ ] Elliptic
      - [ ] Gravity referential
    - [ ] Collisions
      - [ ] Point
      - [ ] Step
      - [ ] Ray
      - [ ] Continuous
        - Bilateral advancement
        - GJK
  - Edits
    - [ ] More shapes
    - [ ] Rotate
    - [ ] Anchor
  - [ ] Multi-block system
  - [ ] Cross chunk structure
  - [ ] Lighting
  - [ ] Passive chunk save
  - Generation
    - SIMD
      - [ ] Double precision
    - [ ] Surface features
    - [ ] Biomes
      - https://imgur.com/kM8b5Zq
      - https://imgur.com/a/bh2iy
      - https://speciesdevblog.files.wordpress.com/2012/11/biomemap.png
  - [x] Data oriented
  - [ ] Inventory
  - [ ] Octree
    - [ ] Surface aware LOD
    - [ ] All levels (0-5)
    - [ ] Tree fill
    - [ ] Big edit queue
    - [ ] Update region level average
  - [ ] Area converter
    - [ ] Minecraft import
    - [ ] Base unit size change
  - [ ] Local generation prediction
  - [~] Modding API
    - [x] Define boundaries
    - [ ] Version handling
    - [ ] Client-Server negotiation
    - [ ] Save file index
    - [ ] List possibilities

## Graphics

  - [~] Disable VK for now
  - [ ] Slash screen
  - [ ] Proper UI
    - [ ] Pause menu
    - [~] Start menu
    - [ ] Using texture pack
    - [ ] FontAwesome (https://github.com/juliettef/IconFontCppHeaders)
  - [x] Define standard unit sizes
    - Terrain (area) 1:1m
    - Objects (part) 1-8:1
    - Models (instance) ~16:1 manual
  - Visual debug
    - [x] Chunk / Region border
    - [x] Area box
    - [ ] Collision overview
  - [ ] Effective occlusion culling
    - [ ] Use average
    - [ ] Cast from chunk center
  - Curvature
    - CubeSphere
      - [ ] Area corrected CubeSphere
      - [ ] Corrected Normals
      - [ ] Surface curvature
      - [ ] Curvature aware frustum
    - [ ] Healpix

### Raster

  - https://www.iquilezles.org/www/index.htm
  - [~] 8 for 1 contouring problem
  - [ ] Merge stochastic and triplanar
    - https://assetstore.unity.com/packages/tools/terrain/microsplat-96478
    - https://www.youtube.com/user/slipster216/videos
  - [x] Biplanar
  - [ ] Fix stochastic (needs regionPosition bound in f16 range)
  - [ ] Distance resampling
  - [ ] Tesselation
  - [ ] Better LOD selection
    - Dynamic to target fps
  - [ ] Planet scale LOD (using chunk level average)
  - [ ] Hard shadow
  - [ ] World lights
  - [ ] HDR
    - https://www.youtube.com/watch?v=iikdcAA7cww
    - Toon shading
    - Eye adaptation
    - GLSL gamma correction
      - https://github.com/skurmedel/shaders/blob/master/glsl/gamma_correct.glsl
  - [ ] Post processing
    - https://learnopengl.com/Advanced-OpenGL/Anti-Aliasing
    - Bloom
  - [ ] Procedural Skybox
  - [ ] Deferred
    - [ ] Ambiant occlusion
  - [ ] Cascaded shadow maps
  - [ ] Avoid transparent back-face
  - [ ] Translucency
    - Back-face depth based
  - [ ] Contouring service

### Ray

  - All of it
  - Probably v2

## Network

  - [x] QUIC protocol
  - [ ] Use in memory protocol
    - replace server_handle
  - [ ] Private messages
  - [ ] Commands
  - [~] Authentication
  - [ ] Clean kick
  - [ ] Check certificate
