Level editor design
Monday, May 14, 2012 at 12:25AM
Kevin Conner in Design, Level Editor

Lately I've been designing the level editor for Degrees, and I'm really enjoying it. I'm inventing a creative workflow and a tool to support it. It's rewarding to think that at the end I'll be able to just sit and make levels with no friction. Here's my idea of a nice level editing workflow:

  1. Concept
    • Design a level on paper
  2. Shape
    • Create the shape of the level
    • Define zones with portal planes
    • Add fog volumes?
    • Test and refine for navigability and performance
  3. Gameplay
    • Add enemies
    • Add items
    • Add scripted things?
    • Test and refine for gameplay and performance
  4. Appearance
    • Add lights
    • Create palette transition triggers
    • Add ambient sounds?
    • Paint the voxels
    • Test and refine for appearance

If you've read the second ECGC post, you'll recall that Valve builds levels by testing as they go, saving artwork for the end. I think the idea was to get the play experience right before you dedicate time to the appearance, because sometimes you need to scrap a whole room or a whole level. That sounds like a great place to start. Besides that, I've learned a lot from using UnrealEd and Scrivener. So I'm planning a four-pane 3D editor with a builder brush and properties for each selectable thing.

When I was younger I would fool around with Unreal Tournament, and there were a lot of things I loved about UnrealEd. But I had no idea what order to proceed in, and I'd have to go back and redo things. That was a lot of unnecessary pain. To clarify the right order, I'm building in a global mode switch for the stages of the editing workflow. You're either working on the shape of the level, or the gameplay within that environment, or the appearance of the environment. These modes really just limit which options are available at any given time, but I think it will pay off, especially if I end up releasing the editor to users.

I also want to support a really fast testing cycle. Since the game loads levels on the fly anyway, and since the editor will run on a Mac and the game runs on different iOS devices, I may as well do it live over the network. I'll make a separate build configuration for the game to act as an editor client. The editor will act as a server for multiple clients, so I can test gameplay and performance on different iPhones and iPads at the same time. After connecting to the editor, the game will poll for changes and refresh itself whenever the level is rebuilt. The game can also send profiling data to the editor, which the editor can show as a buffer of messages that you can filter.

Article originally appeared on Degrees, a game in progress for iPad and iPhone (http://degreesgame.com/).
See website for complete article licensing information.