   User Interface for level editor
  I need to ask for some opinions for a level editor I'm writing.My game project is the C# Megaman Engine (YouTube), and right now I'm writing the editor. There main form that shows the stage lays out all of the screens based on how they're joined, so that you can see how they connect and the overall layout of your stage.So the issue I'm having is that people can make levels that don't layout in a logical way. This is fine, but it causes problems when displaying it. For example, someone could make a trick room where when you leave one way, and come back the same way, you end up in a different room than where you started. Or one room could loop back on itself. In any case, it may easily be impossible to lay out all the rooms properly.What would be an intuitive interface for showing rooms in this case? I'm thinking that a room that doesn't fit should be moved away some distance until it does fit, and draw a path with arrows between the two joined rooms. But then how would you expect to manipulate these joins? By dragging the screens / join lines around?When you add a new room, would you expect it to be placed on this form, or would you have to drag it onto there and hook it to the other rooms yourself?   
  It would be very difficult to create an intuitive way to display irregular room relationships on your map editor. If you're only going to have a few such rooms, I wouldn't spend that much time on the problem.What I think is a good way is this:Make a separate mini-window containing the irregular room. When you click on one of those rooms, the entrance room is highlighted in a color, and the exit room is highlighted in another color. To change the room relationships, create an option its contextual menu that lets you select the entrance/exit room.This design would be pretty intuitive to me.   ;  One way would be to eliminate the possibility of such connections entirely by having the user drag and drop screens in a screen grid.Otherwise, a spaced out view that shows connections as lines doesn't sound like a bad idea to me. Dragging lines between various screen blocks should work just fine. Multi-segmented lines and the ability to drag screen blocks around would be useful if you intend to make much use of irregular connections. Think of infinite loops like A-B-C-A-... and overlapping rooms. You may want to define anchor points or specific tile amounts for each connection, so a room can have multiple connections on one side to rooms of various sizes.   ;  We've got a similar concept in our level tools.  We have a trigger area.  Different things can happen in a trigger area.  It can be a scripted sequence, or an item spawn, or whatever other game code should be triggered.One of those triggers is a "door".  Parameters are the level/zone, coordinates within the zone, and the facing direction.The UI for the tool is a main window of the zone with a smaller sub-window for trigger-specific details.  The UI for the door trigger has the sub-window display the target zone with the target destination and orientation.This feels fairly intuitive, although it might just be from familiarity with the tools.In game, when the player runs over the trigger the appropriate system script is run.  When the door trigger is run, the zone is loaded (if necessary) and the player is positioned at the coordinates and orientation specified in data.   