Terasology/subsystems
jdrueckert 1cef7c10f8
refactor: address IntelliJ QAPlug plugin findings (#5149)
* make final fields static
* remove unnecessary local before return
* remove instanceof checks in catch clause
* avoid throwing java.lang.Exception
* remove null checks covered by instanceof check
* remove toString on String objects
* remove overrides that only call their super
* remove unused private methods
* remove unnecessary if statement nesting
* remove unused local variables
* use try-with-resources to close resources after use
* use equals() to compare object references
* fix broken javadoc references
* fix disallowed self-closing and empty javadoc elements
* fix bad use of symbols in javadoc
* fix disallowed list item tag in javadoc without surrounding list
* fix erroneous javadoc tags
* fix emphasize tags in javadoc
* remove illegal throws
* remove unused imports

Related:
Terasology/CoreRendering#75
Terasology/Furnishings#17
Terasology/Health#105
Terasology/Inventory#51
Terasology/Behaviors#114
Terasology/CoreWorlds#45
Terasology/FlexiblePathfinding#32

Adds to #3859
2023-11-11 14:19:09 +01:00
..
DiscordRPC Update build files to remove deprecation warnings 2023-10-26 08:06:08 +02:00
TypeHandlerLibrary refactor: address IntelliJ QAPlug plugin findings (#5149) 2023-11-11 14:19:09 +01:00
build.gradle Update build files to remove deprecation warnings 2023-10-26 08:06:08 +02:00
README.MD feature(subsystems): extract DiscordRPCSubSystem (#4233) 2020-11-14 21:07:36 +01:00
subprojects.settings.gradle style: improve code style (#4702) 2021-05-24 13:50:30 +02:00

Subsystems

Subsystems provide and extend engine functionality that might not be needed all the time.

A subsystem can provide an API to be implemented by other subsystems (API subsystem). Such an API subsystem does not provide any functionality on its own.

Typical examples for subsystems are:

  • platform integration (e.g., Discord)
  • native libraries usage
  • network activity

⚠️ Subsystems should not extend or provide gameplay features! Use Modules instead.

It is planned to allow combinations of modules with subsystems for new functionality in the future.

Comparation between Module and Subsystem functionality:

Module Subsystem
Boot at game start at game launch
Sandbox Yes No
Installing Yes, in-game download from server or repository No, with facade or engine only
Dependencies only another Modules any, except Modules
Build Script engine-driven free-style