ID:2241374
 
Applies to:Dream Maker
Status: Open

Issue hasn't been assigned a status value.
The map editor in BYOND is trash. Throughout the years I've worked with BYOND, it has consistently managed to make me and others refrain from making things because it is just so awkward and clunky to work with. I've had more than one project die because I got to the point where it was time to make maps and I realized I had to deal with the headache that is the BYOND map editor.

I don't think anyone who has ever tried to work in BYOND for an extended period of time would disagree with me, the map editor is long overdue for an overhaul.

There are a lot of things that could be done to improve it- but most importantly I think the biggest core features it needs to be less of a pain would be these:

* 1. A different UI for how tiles/turfs/etc are displayed.

The way tiles are displayed in BYOND's map editor is a nightmare. Currently they are treated like files and sorted in collapsing folders using their parent. I don't understand why this is the primary and ONLY way one can view tiles in the map editor.

There should be a way to view and sort tiles differently, something more along the lines that other map editors offer- for example, Tiled.



A display more along the lines of the tileset in that picture should be possible in BYOND. Now, I'm aware that you can sort of get a similar display by abusing Instances, but that comes with a whole other slew of issues and if every turf and obj has different properties in your game (not shared variables), you can't easily do this.

There SHOULD be a way to configure easy-to-use and easy-to-read tilesets and order them how you want for your projects. Even if it's a little extra work to organize the tiles themselves in to workable tilesets, I am sure many developers would gladly do it to give themselves an easier time overcoming the cancer that is this map editor. Hell, you could even keep the "collapsing folders" type deal BYOND currently has and just have it display the tiles differently.

"But I like the way tiles are displayed currently, and I have many tiles in my project that look the same but have different names and/or properties, and many of the tiles in my project are invisible! I would not be able to use a tileset like that effectively in my project!"

Make it optional.

The best solution here isn't to give us a full-on replacement. It's to give us options.

* 2. A different way to maneuver around the map within the editor.

This is a no-brainer. Currently our methods of controlling the map include.. the scroll wheel and some scroll bars, and the mini-map. Unless you have some sort of extra features on your mouse that let you easily scroll sideways, this is just clunky and annoying to work with.

The simple addition of better "camera controls" would make the map editor a million times easier to work with. Currently, there is sort of already something in place- you can use the arrow keys and the numpad to move around but it is extremely slow and it is apparently incapable of registering multiple keypresses so you can't move the map editor display diagonally by holding two arrows at the same time.

Home, PgUp, End and PgDn also "jump" screens but the way this works has always been endlessly confusing to me due to how a keyboard is laid out vs. which buttons do what. Sure, PgDown makes you shoot down a screen and PgUp makes you shoot up a screen. That makes some sort of sense- and after all, the way those keys are laid out on the keyboard relative to eachother means it should make sense. But when you factor in Home and End (which make you shoot a screen to the left and a screen to the right respectively), it absolutely falls apart. I would compare it to playing a Shooter on a console and having half of your camera controls inverted, and on a different thumbstick. It would be better if screen-jumping was just handled by just holding down ALT or something and hitting the arrow keys. (I forget if ALT is already used for something- it probably is, but you get the idea.)

Except that still doesn't make traversing the map easy. Because the arrow keys are in an awkward spot to reach if your main method of putting stuff on the map is the mouse. You should be able to do all of this with WASD. As far as I know WASD does nothing in Dream Maker, and I don't imagine it's incredibly hard to add this functionality.

I still think you can make it even better though. I should be able to traverse the map and place things with one hand. If it's feasible, you should be able to drag the map by holding M3. I know M3 already has a function in BYOND but compared to what I'm suggesting, I think it's a pretty useless one that could be relocated elsewhere.

Navigating the map should not be this annoying.

* 3. Brush types, Flood Fill, More Tools.

I'm sure this has been suggested before, but the mapper should have more functionality. Maybe it's not feasible- I'm not sure why it wouldn't be but if that's the case then why is it not already in the mapper?

There's no flood fill, there's no line tool, there's no oval tool and there's no alternate brush types or selection types at all. The map editor has a total of 3 basic tools to work with. I don't know about you, but as far as I'm concerned that's just not good enough.

(This one is less important than the other 2 in my opinion, but still worth mentioning.)
I know your pain.

As much as I'd love to see this happen, I don't see it ever becoming a priority while only one person has the ability to deliver such a project.
Not only it woudn't be a priority what can be done with the map editor its already in, anything else is not feasible.
http://www.byond.com/forum/?post=1620724

I don't particularly disagree, but the vast majority of BYOND projects don't take advantage of the things the map editor does particularly well.

You can also keep a second tab open with another map and use it like a tile palette. It doesn't have to be included. Just paint it, then you can copy/paste stuff into your working map in blocks.



A quick suggestion for #1:

In the left file/browser panel put a third tab with a dropdown called tileset.

The tileset is basically just a specialized DMM with 4 layers: /mob, /obj, /turf, /area

Creating a tileset opens the map editor, but the tile coords are ordered top to bottom rather than bottom to top.

When you use the left tab: "tileset", you can select from the DMT files included in the project (DMT files don't compile into the DMB.), and then you can just straight pick by clicking from this tileset and drop them down on any map in the editor panel.



For #2:

Currently pressing any key that BYOND doesn't recognize starts a name-search through the file tree. I'd really prefer this feature doesn't go away, but I'd suggest it only work with the file/object free is actually receiving focus. WASD while hovering over the map editor, or arrow keys for lefties is good, but the big thing that's missing is the middle click.

Currently middle-click does the same thing as left click. Middle click and drag should drag the viewport. (Drag left = move viewport right by number of pixels / zoom moved)

CTRL/Mousewheel, Mousewheel scrolling is nice, but middle mouse panning is something I'm pretty used to. Shift + middle mouse panning should multiply the drag distance just like SHIFT+Mousewheel / SHIFT+CTRL+Mousewheel.


For #3:

Yep.
In response to Ter13
Ter13 wrote:
http://www.byond.com/forum/?post=1620724

I don't particularly disagree, but the vast majority of BYOND projects don't take advantage of the things the map editor does particularly well.

What does it do well, exactly? As far as I can tell it is worse than every other map editor for every other game engine in just about every way. I worked on a project once with a group of indie devs who made their own engine that could run games on the dreamcast. Their in-house map editor was more robust and easier to use than BYOND's.

You can also keep a second tab open with another map and use it like a tile palette. It doesn't have to be included. Just paint it, then you can copy/paste stuff into your working map in blocks.

It's true that you can technically do this but it is not efficient at all, especially if you actually care about your maps looking good.

Take a look at this map:



Trying to create cliffsides like that is already difficult with the way BYOND handles tiles. Even if you did make a separate map that had all the tiles laid out for you, just imagine how painful and tedious it would be to constantly be switching back and forth between the 2 maps to select different bits of the tileset.

I like your suggestion for #1. Being able to just map out a tileset and then have it displayed on the side for you to access while doing your actual mapping would be incredible, and I feel like it's something that would not actually be terribly difficult to implement. (Especially when you consider how difficult some other, less useful and less utilized features of BYOND must have been to implement.)
Someone needs to make an in depth Map editor with byond itself. The only concern is maybe the lag could be worst then the current map editor.
It's true that you can technically do this but it is not efficient at all, especially if you actually care about your maps looking good.



I agree. It's not efficient. The above took probably around 6 hours, and I'd reckon it's a 64x96 area.

The biggest thing though that you'll notice is that there's no tile edges. They don't blend into one another.



But at runtime they do. All the individual tile blending variations occur at runtime, according to a highly customizable JSON-backed autotile joining lookup table.

What BYOND does well is that it's incredibly flexible in what it allows you to do with respect to mapping. Another thing you'll notice is that the left side of the view has everything that's on the map visible there. Every object defined in the world is right there.

BYOND allows you to customize instances without having to hardcode the data. I've never seen it before in any other engine.

Yeah, the UI's dated and needs work. But I will also say, to some degree, there's a lot there in terms of the map editor that falls down to people not knowing how to use the damn thing in the first place because they never read more than ten sentences of the guide back in the day before giving up. A huge amount of the way the map editor is supposed to work is actually documented in the guide. Nobody knows about some of it. It's weird.

See that sheet of tiles outside my editing area in the top-right? That's me dragging around a palette of tiles with me while I work. Anything I need, I just keep it in view and CTRL+SHIFT+Mouse1 and I can keep moving quick.


Let's not chalk this up to me just disagreeing with you though.

The three suggestions are good. It's just nice to have some input about how a feature would work in addition to why it should be that way and a use-case.

Having the above features would probably have halved or better the time that I was working on this little region.
In response to Ter13
Ter13 wrote:
It's true that you can technically do this but it is not efficient at all, especially if you actually care about your maps looking good.



I agree. It's not efficient. The above took probably around 6 hours, and I'd reckon it's a 64x96 area.

The biggest thing though that you'll notice is that there's no tile edges. They don't blend into one another.



But at runtime they do. All the individual tile blending variations occur at runtime, according to a highly customizable JSON-backed autotile joining lookup table.

As cool as that is, it's not always feasible to have tiles do things like that. I'm pretty sure it is just straight up not possible to code any sort of autotile joining for the cliffs I posted due to their nature.

Feel free to disagree with me there but I personally don't see any feasible way of having auto-tile joining that is capable of making cliffsides as intricate as this:



What BYOND does well is that it's incredibly flexible in what it allows you to do with respect to mapping. Another thing you'll notice is that the left side of the view has everything that's on the map visible there. Every object defined in the world is right there.

BYOND allows you to customize instances without having to hardcode the data. I've never seen it before in any other engine.


I'm aware of instances and that's actually that I use for mapping in my own projects. I still think it doesn't work all that well, and would way prefer the tilesets I mentioned earlier.

Having the above features would probably have doubled or tripled the time that I was working on this little region.

You're saying that having the three features I suggested would make your workload bigger? Did you mistype here or did I read that correctly?



Also, did you actually map with those tiles before BYOND added 200% and 400% view? You have incredible patience if so.
Bump #513
https://github.com/monster860/fastdmm

Its not a proper replacement but it's better than nothing.
You're saying that having the three features I suggested would make your workload bigger? Did you mistype here or did I read that correctly?

You are reading it correctly. I just wrote it backward. Yeah, would have halved or more my workload.

Also, did you actually map with those tiles before BYOND added 200% and 400% view? You have incredible patience if so.

Yes. And no.

#define GOD_DAMN_IT_TOM

#ifdef GOD_DAMN_IT_TOM
#define MAP_ZOOM 4
#define ZOOM_FIDDLE matrix(MAP_ZOOM,TILE_WIDTH*(MAP_ZOOM-1)/2,0,MAP_ZOOM,TILE_HEIGHT*(MAP_ZOOM-1))
turf
transform = ZOOM_FIDDLE
obj
transform = ZOOM_FIDDLE
mob
transform = ZOOM_FIDDLE
world
icon_size = TILE_WIDTH*MAP_ZOOM
#endif


Jam that at the bottom of the DME. It's an ugly hack, but... Yeah. We resort to weird things because certain feature requests sat in the forum from 2005 to 2017 with multiple: "Yeah, we ought to do this!" bumps.

It also induces some real weirdness when dealing with overlapping turfs and stuff. Also... Well, don't even think about doing nudges and offsets while the zoom is active unless you plan to regex the entire map and fix the values after you divide them by the zoom value.
BUMP!+++

@Lummox + you know what? If working on the map editor is gonna take all your time and you want to focus on all the syntax work you have for 512...A tool/converter/way to import TILED maps to DM would be the best thing ever.
http://www.byond.com/forum/?post=2138495 having this would be pretty helpful would be an easy way to have something sort of like his first suggestion
In response to Kidpaddle45
Kidpaddle45 wrote:
BUMP!+++

@Lummox + you know what? If working on the map editor is gonna take all your time and you want to focus on all the syntax work you have for 512...A tool/converter/way to import TILED maps to DM would be the best thing ever.


The SS13 guys already made one, you could also make one yourself. Both formats are plain-text when it comes down to it.

I've tried really but working with text files and converting etc... is really not my strong. Would anyone be willing to share how they converted TILED to DMM with the rest of BYOND? O.o
In response to Kidpaddle45
Kidpaddle45 wrote:
I've tried really but working with text files and converting etc... is really not my strong. Would anyone be willing to share how they converted TILED to DMM with the rest of BYOND? O.o

Check out PJB3005's post above. That may be what Nadrew's referring to.
+1
Bump. I consider this to be the #1 thing BYOND needs that could actually be reasonably implemented without putting a huge burden on development.
You'd be surprised, the map editor is hell to work with. There's a reason even "simple" improvements to it take a long time, if they ever become anything. It would probably take a bit more development time than you'd expect.
In response to Kozuma3
Kozuma3 wrote:
Bump #513

Page: 1 2