System Overview

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

You can think of 3ds Max Interactive as three main components working together: the project, the engine, and the editor.

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

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 your interactive app.

Multiple editors

In addition, one last point worth making is that the "editor" is not really a single monolithic entity as shown above. Although we hope that our main editor will be open and 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 3ds Max Interactive 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 built-in tool (usually the main interactive editor, the 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 interactive editor.