System Overview

Before you start thinking about how you want to extend Stingray, it's helpful to get a good understanding of how the overall Stingray ecosystem is set up.

You can think of Stingray as three main components working together: the project, the engine, and the editor.

You can create Stingray plug-ins that extend each of these three main components. For a complete discussion, see All the Ways You Can Extend Stingray.

Under the hood

The picture of the three components above is conceptually true when it comes to the general roles of the three components, but in fact the interactions between the editor, project content and engine are much more intricate:

A slightly fuller picture might look like this:

However, this picture covers the project authoring and testing workflow for Windows only -- it still omits other things testing and mirroring to other platforms, and deploying final bundles of the game.

Multiple editors

In addition, one last point worth making is that Stingray editing tools are not really a single monolithic entity as shown above. Although we hope that the main Stingray editor will be open extensible enough to support plugging in any kind of content authoring workflow or tools, the fact is that anything capable of producing content understood by the engine can be "an editor" by saving that content into the raw source folder.

For example, you can use other editing tools that are provided with Stingray as separate applications, like the Unit Editor or Texture Manager. You can use your favorite text editor for authoring Lua scripts and for editing raw SJSON content like levels and units. If your plug-in adds runtime support for some new kind of data format, you could use your own separate tools to create and manage that data in the project source folder.

You just have to make sure that whatever assets you add or modify end up being compiled for your target platform by a Stingray tool (usually the main Stingray editor, Unit Editor, etc.), or by calling the engine yourself on the command line with the right flags. See the engine command-line reference.

But in the context of this SDK guide, when we talk about extending "the editor", we mean writing plug-ins that run inside the main Stingray editor.