Skip to content

SpringBoard as game editor #199

@gajop

Description

@gajop

I think we should consider using SpringBoard as a tool for making games as well. It is already possible to develop functionalities using the editor, but it is necessary to restructure them into game or map gadgets/widgets in order to actually use them. It would be better if instead we could simply use them directly when exported into a game or map.

Generally, the desired game creation procedure is as follows:

  1. Users start development of a new functionality in SB by creating a new Extension
  2. They add an Editor in order to have data fields, but the editor itself doesn't contain any logic outside of data validation.
  3. They create a Command which actually implements the desired functionality.
  4. In case the functionality depends on events, such as IO or game world changes, they implement a State which is the event handler.
  5. Finally, Editor can also export the data used to initialize the State.

Editor (SB-only data-preparation and export) + State (event IO) + Command (modifications) = Game functionality.

This idea would cover a lot of use cases, but would still miss some of them, most notably:

  1. Creation of game GUIs. Should GUIs be developed within the State?
  2. LUS unit mechanics. How can we make our states work as LUS event handlers?
  3. Unit/Feature Defs and similar. A def editor as a built-in functionality?
  4. Particle effects. Probably a particle effect editor or exposing an API to one such editor?

In addition, some changes are required to the State system. Currently, states won't get any events until they are set, and there can be only one State set at any time. We should allow registering additional listener states that can receive events. Still, only one state should(?) control the key and mouse, like it does in Spring.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions