Doomsday Script (Proposal)

From Doomsday Wiki
Jump to: navigation, search
Proposal
Requires:
Roadmap

In libdeng2, a new command language and kernel will replace/combine console commands, .cfg files, InFine scripts, DEDs, text-based metadata Info files, and UI logic. The name of the language is Doomsday Script and it will use the file name extension .de.

Features

  • Defines a single language powerful enough to encompass all the legacy scripting subsystems.
  • Brings the power of evaluated expressions to DEDs (and everywhere else, for that matter).
  • Similar to Python in semantics, although lacks object-oriented features (such as inheritance).
  • Fully serializable at runtime: parsed scripts and runtime namespaces can be sent over the network, and saved to savegames/demos.
  • Script namespaces (which include variables, records and functions) can be attached to the world, maps, objects, and thinkers.

Considerations

  • What is the name of the new language?
    • Doomsday Script.
  • Support for old DEDs, scripts, etc. should be retained. This is mostly possible by defining the syntax wisely, but there may be cases where compatibility is broken. Should there be an import plugin for the old files?
    • Files in old format (DED, InFine, .cfg) should be converted on-the-fly using a plugin that reads the old syntax and outputs the corresponding .de source.

Open questions

  • In the interactive shell (i.e. the "console"), some measures should be taken for making it more convenient to quickly check and modify (Config) variable values. What support is required in the script engine to allow such convenience features?

See also