When Vicarious Visions needed a platform-independent level editor in less than six months, it went with a .NET/3DS Max hybrid solution, and here explains the integration process and the reasoning
Developing Vicarious Visions' unified level authoring tool, which became known as APPLE (Authoring Plugin for Placing Level Entities), was an ambitious task, as the editor had to be platform-independent, genre-independent, and running in less than six months.
The resulting tool, however, would prove extremely helpful to the studio's designers, enabling them to move between projects without having to learn new applications:
"The first option we considered was to build a standalone level editor tool from the ground up. This approach would allow us total control over the new application and give us the freedom to customize the user interface and subsystems to fit the needs of the designers and artists at Vicarious Visions.
Building a new application from scratch would have required time and engineering resources for building a rendering engine, user interface engine, file I/O and numerous supporting subsystems. After looking at the volume of work which would need to be done just to get a basic system off the ground, we concluded that an alternative needed to be found.
The artists and designers at Vicarious Visions are 3DS Max users, so we decided to research how to leverage the existing functionality of 3DS Max to create our level-building tool. The traditional solutions for adding new functionality to 3DS Max involve either writing plugins in C++ or using MaxScript. With the release of 3DS Max 9.0, there was a third option to consider when new behaviors and functionality needed to be added to 3DS Max -- .NET controls."
One of the immediate limitations the crew saw with creating a a level editor that works independently of projects and engines is that it had to be built on a generic set of functionality, ruling out any sort of in-game level editor:
"Another limitation was the number of developers who could give full-time support to the level editor. This number turned out to be two; one engineer and one technical artist. As exciting as writing a level editor from the ground up sounded, this option was becoming very unlikely.
We chose to avoid 3DS Max's C++ API for two reasons. The first is due to the scope of the code we were writing in 3DS Max. Most of the code would be for scene manipulation and event registration, which is something MaxScript is already very good at. The other reason comes from maintaining the code across major 3DS Max versions. MaxScript often 'just works' in a new version with no modifications, but C++ plug-ins need to be re-compiled against the new API.
Additionally, the requirement of having Visual Studio configured with the 3DS Max API, and having a strong knowledge of C++, makes plug-ins far less accessible to otherwise capable people. Lastly, the need to utilize both 32-bit and 64-bit workstations at Vicarious Visions meant maintaining two versions of our plug-ins. We began to look for solutions that could run in either environment."
You can read the full technical feature
on Vicarious Visions' platform-independent level editor, including details on its implementation and issues the studio encountered with its integration (no registration required, please feel free to link to this feature from other websites).