Collaborating on a Map Editor

baronvonarrow

28-03-2008 17:45:18

I'm interested in collaborating with people on an open source, ETM-based map editor engine. I will be needing one soon, and it's the kind of tool that really makes sense to be shared, at least partially, across projects. As long as we make it effectively plug-in-able, it should be easy to work with a bunch of projects.

Besides the basic terrain deformation and texturing found in the ETM Sample app, my project in particular would need the following features:
1) Scenario management - xml files which define all the available maps
2) Object placement - again using XML
3) Support for multiple tilesets
4) Support for loading external heightmaps as RAW, PNG, etc.

I'm more than willing to contribute these features to any existing map editing tools that are out there. Shoot me an email at samewavelength@hotmail.com if you've got an existing editor you'd like to help with, or if you're interested in starting a new collaboration.

baronvonarrow

31-03-2008 14:52:00

No interest yet? I suppose I'll get started then. What kinds of features are people interested in?

CABAListic

31-03-2008 17:14:13

I certainly think it's a great idea, (lack of) tools is Ogre's greatest weakness. It's just that it's currently out of scope for me, I'm already behind schedule on other things I'm working on.
I'd suggest starting with the "basic" terrain editing functionality as that's generically applicable to any need. Then, to make object placement widely useful, it would need to have a very good abstraction layer since usually it won't suffice just to place some Ogre meshes. Most games have their own kinds of entities which would need to be placeable instead.

kungfoomasta

31-03-2008 17:43:18

Editors are very game specific. Some games/applications will have a lot of non-interactive background objects, so simple placement would work, however some will have a large portion of interactive objects, which have game specific functionality. If you wanted to make a flexible, expandable, and customizable system for all people to use, it would probably be component based. Its a lot of work.

baronvonarrow

31-03-2008 17:47:37

Yeah, agreed. Abstraction is what every map editor seems to be lacking.

Are there any good libraries for windows-style UI? I want to avoid MFC like the plague, but CEGUI seems a bit nasty for tool use. The tool UI seems like my biggest weakpoint.

I'll draft up a prototype over the next couple of weeks with the following features in order of priority:

1) Rip off the current ETM editor code as a shell
2) Scenario file organization. Organizes multiple maps. Save/load. [e.g. have one scenario.XML file, which references each individual Map##.XML file.]
3) Map metadata through abstraction : saveToXML(), loadFromXML(), etc
4) Multiple tilesets
5) load from heightmap
6) most basic I_GameEntity abstraction:
-saveToXML()
-loadFromXML()
-getOgreEntity() // for display purposes

probably use of I_GameEntityFactory class to create them. Factories to be programatically loaded by the map editor project


Please add more feature requests if you think of them. Also, any advice about what to do about the tool UI would be greatly appreciated.

baronvonarrow

31-03-2008 17:50:28

Editors are very game specific. Some games/applications will have a lot of non-interactive background objects, so simple placement would work, however some will have a large portion of interactive objects, which have game specific functionality. If you wanted to make a flexible, expandable, and customizable system for all people to use, it would probably be component based. Its a lot of work.

Yeah, but the idea is to supply baseline editor that can be extended, through code, with other projects. It won't be bad with a real design plan :P

CABAListic

31-03-2008 18:03:19

Are there any good libraries for windows-style UI? I want to avoid MFC like the plague, but CEGUI seems a bit nasty for tool use. The tool UI seems like my biggest weakpoint.
Depends on what you call "good". IMHO there is no really good one for C++, and developing GUI applications with C++ always feels like a pain in the ass to me. The major problem for me is that there is no GUI toolkit which really uses modern C++, so development feels quite awkward and clumsy at some point.

Anyway, for cross-platform development the two most prominent choices are wxWidgets and QT.

baronvonarrow

31-03-2008 18:09:21

Yeah, I just stumbled across wxWidgets. Looks like what I'll do.

Presumably I should open up a sourceforge project for this?

I'll have something to show in a few days.

SongOfTheWeave

03-04-2008 11:43:23

I'd recommend wxWidgets too. I'm doing my editor with CEGUI and while it's a great game UI, it's a poor "serious application" UI. I'm wishing I'd done it "properly" from the start and used wxWidgets

baronvonarrow

04-04-2008 17:52:49

Yeah, that's what I'm trying to avoid.

Hey - if I setup the wxWidgets side of things, care to collaborate a bit? What kind of features does your project require?

SongOfTheWeave

08-04-2008 10:17:34

GUI features my project needs:

  1. - Expandable/Collapsable Tree Widgets
    - "Colourable Text", by that I mean, colourable by letter rather than per edit box.
    - I'd like some drag'n'drop stuff but thats not critical
    - I'd also like to be able to feed it primitive input events from OIS. I'm not sure how wxWidgets works in this regard... does it tie you in to it's own input system?[/list:u]

    I've also rather liked utilising the xml layout system that CEGUI provides.. I'm not sure if there's something equivalent in wxWidgets and this isn't really a critical point. It's just kinda nice not to have to recompile every 2 seconds while you're wiggling widgets around so the line up nicely.

    [edit]
    What good is the "list" tag on these forums if it doesn't put bullets in! I can type a fake list with hyphens perfectly well on my own.
    [/edit]

CABAListic

08-04-2008 11:05:47

[OT]
List works fine. Maybe you forgot to insert [ * ] before each point?
  1. List[/*:m]
  2. List[/*:m][/list:u]
    [/OT]

SongOfTheWeave

08-04-2008 11:39:04

[OT]
List works fine. Maybe you forgot to insert [ * ] before each point?
  1. List[/*:m]
  2. List[/*:m][/list:u]
    [/OT]



Ooookay... looks like we can file this one under PBS&C (Problem between screen and chair, for the uninitiated.)