Skip to content

(Idea) Breadboards: a player-level abstraction over gates #36

@Nebual

Description

@Nebual

Picture this: you've got your Flight Controller wired up: it has a dozen gates wired together so that WASD strafe your ship, alt+mouse-x rolls it, alt+mouse-y raises throttle, shift hits the turbo, and X enters Park mode resetting the throttle to 0. You like this setup a lot, and want to reuse it on the next ship, or give it to your friend, without having to write up a full wiring diagram that would get at least a B in Electrical class.

Enter Breadboards: a surface which can have Gates mounted to it, which can then serve as the "external interface" for the rest of the plane (thrusters, Pod Controller, etc). You can configure custom inputs/outputs for the Breadboard (Inputs: "Forward: bool, Strafe Left: bool, Throttle Up: bool" and outputs: "Rear Left Thruster: float, Rear Right Thruster: float"), which means other players (or you in a week when you've forgotten) don't have to dig through the dozen gates to figure out which "A" you're supposed to wire the Forward key to, they just wire to the breadboard's external ports. The breadboard has external/internal ports, which mirror eachother (so if "Forward" is configured as an External Input, it'll be an Internal Output for mounted gates to be wired to).

Additional functionality we could add later include:

  • automatic re-layout'ing of the gates/components on the breadboard into an attempt at a readable order (prioritizing left-to-right inputs to outputs)
  • hiding (or parenting) gates when not "open"
  • potentially built-in saving/loading of breadboard setups (likely reusing Duplicator libraries), including some preset ones

This would ideally lead to reusable Breadboards for common tasks, which can be "opened up" to learn what components they're composed of, and tinker with further.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions