Diagonal lines with the edge tool

Currently you can only draw horizontal or vertical lines in Shmeppy. Diagonal lines can’t be drawn. Several people have requested that the ability to draw diagonal lines be added to Shmeppy.

I’ve rejected this feature. I’m making this post to record why (though, as always, feel free to weigh in if you’d like to).

The Good: Accuracy

Sometimes walls are diagonal. That’s just a fact of fantasy living. It’s unfortunate that the only way to represent that in Shmeppy is this weird staircase pattern.


Having diagonal lines would allow the maps to be more accurate, and more quickly understood. GMs wouldn’t have to say “oh that’s actually a flat wall, it doesn’t have those divots to hide in… I just can’t draw diagonal lines…”.

The Bad: Fill Tool

Diagonal edges have a bit of bad luck. By themselves, diagonal lines are perfectly reasonable, I think they’d be straightforward to use and feel great for users.

The problem arrives when we integrate those lines with the rest of Shmeppy. Particularly the Fill Tool doesn’t play nice with diagonal lines at all.

The Fill Tool currently fills an entire cell. So if we were to allow diagonal lines for edges, in the example above you’d still have that weird staircase pattern, you’d just also have a diagonal line running alongside it.


Modifying the fill tool to allow users to partially fill cells would be very tricky. Not technically, but design-wise. From a UI perspective I think it would suck for users.

I’ve given thought about many different ways to do it. Every way I could do it adds a lot of complexity to Shmeppy’s UI and tends to go against every one of Shmeppy’s three traits at once.

I could leave the fill tool alone and just have diagonal lines, letting users decide when it’s worth it to use diagonal lines or not. But I think the amount of frustration and confusion users will experience when they can make diagonal lines but not partially fill cells is greater than the current frustration and confusion users experience when they can’t make diagonal lines at all.

This is a downside to implementing diagonal edges, and I think it’s a big one. Far outweighing the increase in accuracy I mentioned above.

Feel free to share your thoughts! I’ve covered the highlights here, but I’m happy to share more of my thinking around this if ya’ll would like. I’ve had many conversations with many people over a long period about diagonal lines, and have lots of thoughts.

I’m not sure there is a great solution here, because of the snap. Even if you went with the second option, user tokens would snap all over the place, creating an even more confusing scenario.

I’m not going to lie, it does make it hard in my mind on how I will translate slanted corridors and walls. The snap makes things clean and easy and it may be impossible to keep the ease of use in any slant solution.

The only solution I could think of may require some changes in your application logic that would effect measurement etc. The only solution in mind that works is to allow tokens to snap to either square spaces or dot/corners. AKA double the geometry snap for tokens. This may cause little to no issues, or be a pain in the butt. I think people could live with the stair step scenario if the slanted lines are still there (your second screen shot) if the token snap is changed and doesn’t affect usability in the extreme.

1 Like

In terms of a fill command that works with diagonal lines, would it be too complex to add a partial fill command that just fills one quadrant of a square? Fill is a click, partial fill could be alt+click or something, and it would just fill the part of the square you clicked on. Top right, bottom left, etc. I’m sure you’ve thought of this already, but I wanted to give my 2 cents. It seems like a fairly simple and straightforward solution to me which I don’t think violates Shmeppy’s three traits.

That being said, I haven’t suffered from lack of diagonal lines, and would not be sad even if they never come into existence. Everything I’ve drawn so far I’ve been able to translate into a grid, or use the staircase pattern without it seeming too weird.