The following screenshots are from the mission creation tool, "Missile", I developed for Monolith Productions, for use on The Matrix Online.
The target user for this tool is familar with Windows application standards, preferably technical, but not a developer. The design aimed for long-term usability over first-time learnability.
Missile is used by mission designers to specify the items, characters, and goals for a specific quest or mission in the game.

Missile needs to perfrom several startup tasks before the UI can be displayed. This window shows a log of those tasks, and can be used to diagnose configuration errors. By default, the release build of Missile hides this window when the UI is shown.
World data is also loaded at startup, but as this can take several minutes and isn't needed immediately, it is loaded on a background worker thread.

This shows a mission loaded into Missile. The top part shows mission-wide settings, while the bottom part is the "phase editor". A mission can consist of several phases that are played sequentially.
There are three rooms in this mission, and an "NPC" (Non-Player Character, a person in the game controlled by the computer instead of another player) s highlighted in one of the rooms. The bottom right set of panels let the mission designer configure the NPC. In this case, the NPC is a group of 3 characters set up as hostile, and will chase after the player.

The mission-wide settings can be collapsed down to tabs, to maximize the space available for configuring elements and goals.
On this screen a computer is selected.

If you right-click on an element, you can see which goals this element is hooked up to. Here, the selected computer is tied to the "Search the computer" goal.

A mission consists of several goals the player must accomplish to complete the mission. Each goal as one or more events. Here, the "Search Computer" goal is satisfied when the player retreives the message from a computer in the mission.
Event type selection![]() Several different types of events are available. |
Event source selection![]() Most event types come from an object (though some are triggered by the player.) For events with a source, the compatible items are listed. |

Here, a new event had been added to a goal. The event is to kill a group of hostile NPCs. In this case, the selected NPCs only appear some of the time; when they don't appear this event can't be completed. If this made it to production, the player would not be able to complete this mission.
The red bars show the data error created by this event. The tool user will not be able to publish this mission until all errors have been cleared.

A list of all warnings and errors in a mission can be displayed. Double-clicking an item in this list will navigate the user to the appropriate place in Missile. (In a compiler, this is similar to clicking an error after a failed compile to go to the source line.)

Mission designers can browse through existing missions to open them, and filter by author and category. It is also possible to do content searches on the currently filtered missions. (Content searches are done through XPath queries over the internal mission XML format.)

This form shows the interface for building mission content searches.

This form shows the next and previous missions from the current mission search.
If there is a number on the Windows clipboard, that number is pre-filled as a Misssion ID. This lets designers copy mission numbers out of bugs and open then faster than search by name.

Perforce (website) is a source control system. Missile integrates with this system so that mission changes can be properly saved into Perforce, and assigned to the correct Jobs.

Opening a misison will prompt the user to save the current mission. Instead of using a standard Yes/No/Cancel MessageBox, I wrote a custom comfirmation form that tries to more clearly explain what a choice means.
(Update: I have since written a better MessageBox replacement, based on proposed Windows Vista UI Guideliens. See: UserPrompt.)

The startup log is also available in a tab in the About Box.

User preferences. Information can be entered for integration with the source control (Perforce) and bug tracking (DevTrack) systems.