bevy/notes/outline.md
2019-12-01 01:16:15 -08:00

2.6 KiB

Bevy Outline

High Level

  • ECS at its core (but only where needed)
  • Simple api backed by flexible systems
    • ex: PBR renderer built on a render graph system
  • Flexbox ui
    • simple, standard, good implementations exist
  • 100% rust (except for the few cases where this is impossible)
  • Batteries included
    • 2d/3d rendering, ui, physics, networking, etc
  • Editor: also a "game"
    • dogfood components
  • Fast app compile times (< 5 seconds)

Dependencies

  • Legion ecs
  • wgfx-rs
  • nalgebra
  • nphysics/ncollide

Outline

  • Core
    • Shared
      • Types
        • enum PropertyValue
          • DATATYPE_WRAPPERS_HERE
          • Analog: godot's Variant
        • struct Property
          • Description: Dynamic data
            • Ex: exported to editor, uniforms in shaders
          • Tags: HashSet<string>
        • struct Texture
      • Components
        • Parent
          • Children Vec<EntityId>
        • Properties
          • HashMap<string, Property>
        • Mesh
        • Armature
        • Material
      • Systems
        • UpdateArmatureTransforms
        • SyncPropertiesToMaterialUniforms
    • 3d
      • Components
        • Transform
        • GlobalTransform
        • PhysicsBody
        • CollisionShape
        • RigidBody
      • Systems
        • CalculateGlobalTransform
          • Dep: Child, GlobalTransform, Transform
        • UpdateCollisions/NCollide
          • Dep: CollisionShape, PhysicsBody, GlobalTransform
        • UpdateRigidBodies/NCollide
          • Dep: PhysicsBody, RigidBody, GlobalTransform
    • 2d
      • Components
        • Transform2d
        • GlobalTransform2d
        • Element
        • PhysicsBody2d
        • CollisionShape2d
        • RigidBody2d
      • Systems
        • CalculateGlobalTransform2d
          • Dep: Child, GlobalTransform2d, Transform2d
        • UpdateCollisions2d/NCollide
          • Dep: CollisionShape2d, PhysicsBody2d, GlobalTransform2d
        • UpdateRigidBodies2d/NCollide
          • Dep: PhysicsBody2d, RigidBody2d, GlobalTransform2d