   Need input on designing map editor !
   Hey all. I am currently in a sort of coding-stasis, which is unusual for me considering that I typically have SOMETHING that I feel like doing, big or small. Anyhow. Right now the only thing I am motivated to work on is a map editor for a non-existent 3D engine (at the moment), and I am just playing with ideas in my head at this point about how I want to approach designing the way that users will design maps within this theoretical editor. So far I've just been considering the modeling methods in existing editors that I've seen over the years. I like the editor that was for Max Payne (MaxEd) whereas it was seemingly sector-based (reminiscent of WadEd for Doom and Build for Duke3d) by drawing a room on the ground and extruding it up, and I'd like to use a system similar, but I want to go more for a box-modeling method, where the user can select faces and extrude/scale/rotate, etc.. So that's what I have in mind.. But then at the same time I like the brush concept of the Quake engines, it makes it easy to just plop convex shapes into the game world, but I don't like the 3 axis-views of Worldcraft (and other similar brush-editors) as being the means for creating brushes. Because in my experience it can get confusing seeing the whole map along an axis.. I guess that I'm striving for an intuitive way to model worlds, in a way that is fast and hopefully fun. Ideally I'd like the editor to just be primarily a perspective view where you just basically fly around and draw on the world and manipulate it from that one view, somewhat like what the perspective view in 3dsmax/gmax or google sketchup. I already have all the programming knowhow for graphics and all that stuff, which is not the issue. I've experimented with different projects of varying complexity, but now I want to focus on doing some tools, and a world-modeler (which is more what I am striving for, as opposed to a 'map editor'). I am just stuck on the conceptual phase for this project, which tells me that it is probably a worthy project. Ultimately, I'd like to be outputting the same file that the engine will be loading, eg: have visibility information inherently stored in the map file, and ideally that visibility information would be generated as the user builds their world...instead of like with the Quake engines where the brushes have all their external faces that are just removed during the BSP preprocessing phase. Somewhat like the sectors of Doom maps being the crux of the visibility calculations in the engine. Above all I am looking for something that is versatile (in terms of the geometry that can be created) and also as efficient as possible (regarding the resultant data structures).. I also had an idea where I just stored initial geometries that the user designed, and then stored the operations that the user executed on that geometry and the parameters used (eg: scale face, rotate, subdivide, etc)... somewhat like the Werkkzeug (www.theprodukkt.com) application designed for making procedural content. So, I just want to get some more detailed ideas down, and cement some things in my agenda, but I'm sort of having a creativity block lately, and so I was hoping that maybe some of you folk could pass some of your own ideas my way? Maybe share something you thought was a good idea but never had a reason to go about implementing it yourself? Please share your feedback and input! Questions, comments, concerns ? Make a sweet world modeling program vicariously through me! Thanks and much appreciation! -Charlie   
  Radioteeth - sounds like a great start full of good ideas. Maybe a few too many?Consider who is going to use this tool - is it just you? Hard core modders or laypeople?I definitely would start with something like sketchup, but I might consider using brushes too because they do let you get great data out of the level - visibility and collision - even if they are hard to use.What about making a system where users can model objects easily, but also import models from other tools, and then 'make a brush' out of them. One of the things I have always found hard to do with most editors is create interesting geometry out of basic brushes - but if you could make any kind of brush and import it and use it over - that would be great.Being able to import whole models and place them inside your brush-based volume is good to. Most game editors that are brush based do that now. Its just impossible to make art easily with just brushes.I would also suggest the read/write format you store your level in be an intermediate format - you'll want to put all kinds of extra information in your editor that you won't want in the final data. You'll also want data optimized for different reasons between your level editor and your game. Export it to an intermediate 'radioteeth' RTXML file and then write a simple command line tool that optimizes it and writes it to readioteeth binary file 'RTBIN'. You can validate the data at the same time making sure there is nothing wrong with it.Best of luck with your project - its no small undertaking.S.   ;  When dealing with brush based construction an orthographic view is almost a must because you need to compare height and placement of brushes that are far apart along an axis. To cut down the number of views Radiant used just an X/Y orthographic view and a Z window for currently selected brushes. Since in the Quake editor the Z axis was up and down, this gave you a bird's eye orthographic view. The Z window will just display the height and position of brushes along the Z axis as a line. It takes a bit to get used to but the window is rather small.  Personally I prefer the 3 orthographic and 1 perspective view setup myself except when dealing with terrain editing. That's when I usually switch exclusively to perspective. The best idea would be to allow the users to turn on and off which displays they want.Support for importing models is almost a must now. Editors are generally used to rough out the basic shell of a level and place game objects. Most of the geometric detail work happens inside a modeling package as they already have great tools to do such and there's plenty of information on how to work with them. In fact a lot of teams just use the modeling packages to do all their geometric world work. A custom editor pretty much focuses on the game elements and not world building. The ones that do work from pre-assembled parts like the Neverwinter Nights editors which use tiles to create rooms and dungeons. Most of the editor itself is designed around editing scripts, dialog trees, NPC placements, editing data bases such as items and NPC's. Even FPS engine games now want you to focus your geometry editing outside the editor, such as Unreal Ed. It's primary job is used for creating Kismet sequences, particle emitters, and material creations. Pretty much most of the levels are constructed by placing imported static meshes and terrain editing.I guess basically what I'm recommending is create your game concept and engine first and then build an editor around that. Writing generic editors will probably cause more headache down the road because you'll have to keep adding features to it that weren't intended in the first place.   ; Hey, thanks guys. I suppose you're right about building the engine first. I have started in the past and lost sight of what I was doing because I didn't have good test data to work with. My whole goal is to eliminate the need for external modeling software, as well as undertake the creation of an effective tool, whether it be for my own use or for various game engines. But ultimately, I don't want to make an editor that imports geometry from another software, that defeats the whole point of making an editor in my opinion. I'd rather embody the necessity of external geometry modeling software inside my own tool. I suppose that I am actually asking for input as to what are the best and most effective methods for modeling that people use? I mean, I have watched z-brush videos, and that is just amazingly intuitive! I'd like to make a world editor that can do everything needed. I am perfectly willing to put the time and effort into a good tool. I am also willing to develop my engine around whatever output I end up formatting the resultant geometry data, whether it be a polygon soup, or a vaguely structured piece of data, etc.. I just want to be able to make relatively decent geometry with it, and for the sake of functionality I will be taking your suggestions and adding a geometry import function, but I don't want that to be the sole means of designing the world. Thanks again.  -Charlie