What makes a good level editor?

I’ve recently started working on a small level editor for my game engine, and I’d like to collect some ideas before I proceed any further. Here’s the current state:

It’s an ingame-editor written in Lua (Allows for easy modification), but just an early prototype. A lot of the essential systems still need to be implemented, so that will be my priority for now.

What I’d like to know is:
• Which level editor do you enjoy using the most, and why?
• What are the must-have features any level editor should have?
• If you had the chance to change something about hammer/the level editor you’re using, what would it be?

Would you have any use for the following features?
• Importing 2D images as sketches for the 2D viewports
• Multiplayer collaboration, to allow multiple people to work on a map at the same time

This is mostly a side project I’ll be working on over the next few months, but I’m not much of a mapper myself, and I’d like to avoid any potential pitfalls.
I’m open to any ideas / suggestions, anything that comes to mind!

Multiplayer collaboration is best

You might find this pretty useful and interesting;

Yes, the above is a great video. These videos are similar (if a bit more rambly), but I think I’ve already linked those to Silverlan previously.

Hammer is my preferred level editor, mainly because of the geometry editing tools. It’s very fast for blocking out shapes and spaces, and I feel that it allows for more interesting level design than a workflow that relies more on modular meshes. I think that Valve recognizes this too, looking at the Source 2 version of Hammer. Its geometry editing tools are very different (more similar to modelling tools like 3ds Max) but immensely powerful, and they play upon the same strengths that classic Hammer has.

3D camera movement is also very important to me. Being able to noclip around using WASD and mouse controls allows me to get a much better feel for the composition and scale of the map, and how it will be perceived by the player. By contrast, the fact that Bethesda’s Creation Kit seemingly only lets you orbit, zoom and pan the camera (5:45 in the above video) is just mind boggling to me.

Some points to address your prototype, specifically:

  • The first thing I always do after a fresh Hammer install is lower the grid colour intensity and enable the Dotted Grid option, as it makes the 2D viewports much easier on the eyes. I hope that that will be possible here too :smile:
  • Fast and reliable navigation in the 2D viewports can be just as important as controlling the 3D camera. My preferred method of navigating the 2D viewports is by zooming out/in from/towards the position of the mouse cursor. I also frequently use the hotkeys Ctrl+E and Ctrl+Shift+E to center the 2D and 3D viewports on the current selection.
  • A useful feature of Hammer is that when you create a new brush in a 2D viewport, the position and size of the brush along the ‘unseen’ axis (e.g. the Z axis when dragging in the top-down viewport) is automatically based on your previous selection. For example, if I have a multilevel building and I want to add a wall on a specific floor, I can simply select another wall on that floor and then use the brush tool in the top-down view. It will then immediately have the correct dimensions.
  • The ability to duplicate objects by Shift+dragging them is similarly useful.
  • The Source 2 version of Hammer (and the old version, to a degree) lets you work pretty much exclusively in the 3D viewport, if you want to. This can work wonders for productivity, so it might be worth designing the tools with that in mind. In that case, I would also recommend adding the option to dock the object properties (and similar dialogs) in the toolbar on the right, so that you can keep the 3D viewport maximized without having to repeatedly open and close overlapping windows.
  • Azerty controls, or at least the ability to bind controls and shortcuts.
    Having to change the language of the keyboard with alt+shift everytime you want to switch between navigating in your level and typing something is a fucking nightmare.

[quote=“ashton93, post:3, topic:228128”]

You might find this pretty useful and interesting;


Thanks, that helps a lot!

Are you using hammer’s camera tool for the mouse movement? I wasn’t sure whether that’s actually used a lot or not.

Didn’t even know you could do that in hammer, thanks for the tip! Will definitely add that.

Zooming works like it does in hammer, I just have to tweak the movement speed somewhat. I’ll make sure to add those other features, too.

I’ve created some tools for gmod a long time ago which allowed you to manipulate brushes in 3D, would something like that go in the right direction? (Starting at 01:30, and 03:30 in the video below):

I won’t add anything for specific keyboard layouts, but I’ll make sure to implement custom keybindings.

apart from whats been added pressing x in hammer brings up handles in the 3d view where you can resize, move and rotate the brush in the 3d view and the resizing will snap to the grid size, what would also be cool is the ability to make a brush in the 3d view :slight_smile:


I find it cumbersome to switch to the camera tool for that, so I always hold down the space bar and left mouse button inside the 3D viewport. You can also press Z as a camera movement toggle, but I don’t use that very often.

I’ve been using ue4 lately, leading me to suggest having a content browser that contains every asset and entity for use in a drag and drop system. This speeds up my workflow a bit compared to hammer’s dropdown lists


There might also be something to learn from the open source hammer alternative Sledge.

A realtime lighting preview would be immensely helpful

not crashing after moving the camera

tools tips with the option to turn off for beginners when you hover over the icon a tool tip pops up giving a discription of its use and a key bind to the tool you hover over

Thanks, didn’t know about that. You can create brushes and selections in 3D now, I’ll also add 3D scaling / moving / rotating / etc. later on:

There’ll be a 3D grid as well, just gonna have to find a good way to implement it without obstructing the view too much.
I’ve also improved the 2D views (Textured +Wireframe view of objects).
Right now you can change the grid size for each grid individually. I’m not sure whether I should keep it like that, or if I should change it to a global grid system (One grid-size control for all views instead of one for each)?

Already in, almost all entities can be previewed immediately.

Thanks, that drag and drop system seems like a great idea, will definitely add that!

I’ll make that a top priority. :v:

I’ll try to implement something for custom keybindings / custom shortcuts, tooltips are already planned either way.