I’ll be out all January doing an internship, and probably won’t have access to a computer, so I shall work hard during December and February. As this time I’m really getting into Maped, this is an official calling to all the Verge community: please ask for features, report bugs and give ideas of future development. So, people, any ideas?
Brush your teeth after every meal
Did I heard someone saying “brushes”?
Alas, behold! A simple brush system is now implemented.
Well, to be sincere, not fully implemented, you can’t undo it. But the idea is there. Variable size, square and round brushes (any other shape, a horsey maybe?)
The battle of the codes
So, this two week (three counting the previous update) of fighting against maped3 had been weird. I don’t know if it grew over the time from a nice little program to a mess of epic proportions (no offense to anyone who worked on it, it did it’s work nicely).
A big problem that has been standing against me is passing data around. This was the messiest part of the original, in my opinion. Sometimes the data is passed around in a big class, sometimes as parameters between classes, sometimes, the fields of the called class are updates, sometimes it uses globals, sometimes it passes data around and uses globals instead and sometimes the passed data are the globals.
A pretty dirty example is the current method for implementing undo and redo, the MapEventInfo class sent by the mapviewer contains a SetTile method that adds a set tile operation to the map OperationManager.
So I decided that a good idea (and to prepare for MDI) was to make classes that contain the information needed for operating: MapContext, contains all the data necesary to edit maps (Map, selected layer, selected tiles for painting, the map OperationManager), EditorContext, the common application data… I should add TilesetContext and EntityContext, at least, and make a proper editor for those.
Preparing the way to the future
I was reading last week’s update by Overkill, and started to think about which could be the best way of implementing multiple zone, obstruction and entity layers. The idea that came to my mind was “layer groups”. There is two kind of layers: graphic and logical. The entity layer is both of this, and the zone and obstruction layers don’t have much sense without an entity layer. This “logical groups” should exist anywhere in the layer list. And there should be named retrace hooks, also.
I liked the idea of waypoints (I imagine a pin in the map :3) also, they could be very useful for some things.
This pressed the panic button on an issue that has been bothering me: backwards compatibility. A simple way of knowing supported features for a format, would be to have a feature flags enum, as a property on each format encoder… But this poses a problem: what to do if the map you are trying to save doesn’t support a feature? for some things if fairly simple (like alpha blending, or waypoints, as they could be made into zones or entities), but for others, like the multiple logical layers thingy, is could be messy. Any opinions?

Woo, brushes! Sexy. Does it save them to the “brush” data section of a VSP format at all?
I noticed there was segments in the format for that purpose, but never really checked to see if it was “enough” to actually save the data you need.
Also, any plans to get brushes to work kind of like the clipboard tool, except saved? This is a big one for me, I’d like to have, say, a brush for a tree arrangement which I can plop down all at once and it’d do the obstructions and multilayering and all that magic automatically.
Also I’m fine with just having the old map formats upwards compatible (having loaders which check version number of the map in the header). And the features we’re adding can EASILY be upwards compatible.
I figure that it’s fair to assume people will use a new maped in conjunction with the new engine. I don’t expect an old Verge to be able to use new maps.
Even though it’d be nice, it’s a lot of work, and I don’t even see it being possible really.
Well, the real trick is to make a palette of user-definable brushes. And make the brushes so they’re any combination of tiles.
That way you get to make things like Tree brushes and House brushes and, yes, even Horse brushes.
Ben has the right idea with the brush stuff, optimally it would allow multi-layered user defined things. IE I could plot a tree with its above and below the ent layers, and its obs all with one click! It should probably have the option of auto adding the layers if they’re not available.
One thing that’s always bothered me with the current mapEd is that you cannot edit tile banks very well and when you do it doesn’t allow you to insert and re-index tiles.
Like in the tile set you used in the image above. You should be able to delete all those extra blank spots and have it keep the tiles already plotted into the map correct and not shift up.
This could run into problems with maps that use the same tile sets so that’d have to be accounted for. Perhaps a check of the last edit date of the tile set at the map start? That then updates the map to match the tile set?.
An option to cut a portion of the current map out into a new map would be heaven sent as well. For instance you work up a great little city and all it’s inner workings and then decide to break it up into smaller map chunks, with the cutting thing in place you would not be stuck with recreating the entire thing tile by tile again. (Yes I just did this…)
some type of map window (the one where you plot the tiles) scaling along with the editing of multiple maps at once would be great. I’m doing seamless maps for the most part so it’d be wonderful to be able to actually have them next to each other.
Awesome, Ioachim! Keep it up, my tiny brain will help when it can.
I too would like the brush tool to be able to stamp an arbitrary set of tiles onto the map. I think the copy/paste tool in Maped3 almost has this functionality.
Also, autotiling would really speed up the map-making process. A tough one. :/ It would probably require a new standard for vsps.
@matthew:
In regards to cutting a portion of the current map out into a new map, I totally had that same problem, and I’m working on a “Save Region” feature that will do just that.