Level Editor

Started by
7 comments, last by bobjones9190234324 12 years, 11 months ago
Hey guys,

I am looking at writing a new level editor, all the editors I have looked at like Hammer and UnrealEd have a BSP brush based system for drawing basic geometry. This seems like a very dated feature and it seems like you could create much better geometry in a professional 3D package instead.

So what do you guys think? Is it still an important tool or do you think that is something that is not really needed anymore.

Thanks!
Advertisement

Hey guys,

I am looking at writing a new level editor, all the editors I have looked at like Hammer and UnrealEd have a BSP brush based system for drawing basic geometry. This seems like a very dated feature and it seems like you could create much better geometry in a professional 3D package instead.

So what do you guys think? Is it still an important tool or do you think that is something that is not really needed anymore.

Thanks!


You definitly don't "need" to use BSP. The main point behind BSP was to reduce the number of triangles sent to the graphicscard to an absolute minimum. With modern hardware this is less important and can even reduce performance as while it keeps the trianglecount down it increases the number of drawcalls you have to make. (We can render a 50.000 triangle VBO with a single drawcall, with BSP that 50.000 triangle object would have to be hundreds or even thousands of smaller objects and while quite many of them wouldn't be rendered at all those that do get rendered would need a drawcall each, with the speed of modern GPUs the cost of a drawcall is very high by comparison to the cost of rendering a triangle)

While BSP isn't a good choice for rendering anymore (it was a good thing before we got VBOs or back when we used APIs like Glide to send our geometry to the graphicscard triangle by triangle) its still useful for things like colission detection.

You still want to have some form of space partitioning, simply building a complex scene in a 3D package and dropping it into a game will result in some really awful performance.
[size="1"]I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!
N.B. it's a "CSG brush based" system ;) --- after the CSG brushes are converted into a polygonal mesh, BSP is the algorithm that spatially divides the scene.

Yes I'd agree that making your own CSG modeller is a waste of time when there's already lots of good modelling programs out there. You'll notice that even in CSG-modelled worlds like Valve's games, they still decorate those worlds with A LOT of content from "normal" modelling packages.

The last few games I've worked on have used Maya/Max/XSI to build their environments (instead of a CSG editor like Hammer).

Yes I'd agree that making your own CSG modeller is a waste of time when there's already lots of good modelling programs out there. You'll notice that even in CSG-modelled worlds like Valve's games, they still decorate those worlds with A LOT of content from "normal" modelling packages.


I have to disagree with you here. While you're not going to make "final art" all that often using built-in brush tools, they speed up the process of whiteboxing significantly. Instead of having to deal with a typically complex art pipeline for whitebox iteration, CSG brush tools give level designers a way to iterate in-engine, often while the game is running. This shaves days off the design cycle of an average-sized level.

Check out my new game Smash and Dash at:

http://www.smashanddashgame.com/


While you're not going to make "final art" all that often using built-in brush tools, they speed up the process of whiteboxing significantly. Instead of having to deal with a typically complex art pipeline for whitebox iteration, CSG brush tools give level designers a way to iterate in-engine, often while the game is running.
FWIW we had real-time refreshing of most assets, including level art. Designers could indeed update their whitebox (we called them greybox) mesh in Maya, hit the export button, and the changes would show up in game while they were still playing it. This was on a pretty crappy engine too - I'd expect this feature in any engine I used these days.

I have to disagree with you here.  While you're not going to make "final art" all that often using built-in brush tools, they speed up the process of whiteboxing significantly.  Instead of having to deal with a typically complex art pipeline for whitebox iteration, CSG brush tools give level designers a way to iterate in-engine, often while the game is running.  This shaves days off the design cycle of an average-sized level.

I can imagine why: testing the size of rooms or if a corridor or platforms are too big is much easier with a build-and-play editor.

The key thing would be the tweak, the ability to build something and test it very quickly to realize what needs to be altered without spending time exporting files and compiling maps.

[quote name='JBourrie' timestamp='1305511948' post='4811294']
While you're not going to make "final art" all that often using built-in brush tools, they speed up the process of whiteboxing significantly. Instead of having to deal with a typically complex art pipeline for whitebox iteration, CSG brush tools give level designers a way to iterate in-engine, often while the game is running.
FWIW we had real-time refreshing of most assets, including level art. Designers could indeed update their whitebox (we called them greybox) mesh in Maya, hit the export button, and the changes would show up in game while they were still playing it. This was on a pretty crappy engine too - I'd expect this feature in any engine I used these days.
[/quote]
Maybe I've had bad engine luck, but I've never used an in-house engine that does this effectively. Of the five in-house engines I've worked with, I've only seen that functionality in one of them and it took about a minute to refresh a Maya file (way too long for whitebox iteration). In our most recent project, we did all of our whiteboxing using the prototype (built in Unity) just so we wouldn't have to go through the painful art pipeline for testing.

So in my experience, I only expect that sort of functionality from an off-the-shelf engine like Unreal or Unity (even though I'd like it in every engine).

Check out my new game Smash and Dash at:

http://www.smashanddashgame.com/

Like you mentioned [color="#1c2837"]narpas BSP is sorta a really dated feature unless you plan on programming game's on a low end machine/console and plan on adding lots and lots of geometry. Like Quake 4 or Doom 3 level sizes. Now if I was you, I would look into frustum view culling and just enable back face culling and OpenGL/DirectX pretty much do the rest of optimizing. Now if you plan on making outdoor scenes I would high suggest you get a oct tree system going. They are very easy to make if you want to make your own. ;) Also look into visleafs if you want to experiment a little on hiding certain parts of a level thats not being shown.
[color="#1c2837"]
[color="#1c2837"] Now on designing the level editor you can do this two ways. Make a in game level editor or 3rd party level editor. There are pros and cons about this, keep in mind.
[color="#1c2837"]
[color="#1c2837"]In Game Editor:
[color="#1c2837"]Pros:
[color="#1c2837"]Much more flexibility how it looks and can be much be heck of a lot easier to cross platform.
[color="#1c2837"]
[color="#1c2837"]Cons:
[color="#1c2837"]You have to make everything from controls such as buttons. (If you plan on using a bunch of buttons/controls, make a tree search system to figure out what button the user clicked)
[color="#1c2837"]
[color="#1c2837"]Making a 3rd party Level Editor:
[color="#1c2837"]Pros
[color="#1c2837"]You can still use 3D/2D views of your game engine and save on performance by letting the operating system create dialogs for tools.
[color="#1c2837"]
[color="#1c2837"]Cons:
[color="#1c2837"]A little more difficult to cross platform... (I suggest using wxWidgets or simply use SDL to do everything in one window if you want it too)
[color="#1c2837"]
[color="#1c2837"]Anyways I hopped this helped out a litte.
Check out my open source code projects/libraries! My Homepage You may learn something.
Thanks for all the help guys!

This topic is closed to new replies.

Advertisement