• Finished (mostly) planning the rest of the maps
  • Started working on the first interior level of the Mountain

Missing Time

I actually didn’t intend to miss a week there; I thought I had posted and then discovered I hadn’t. I decided to just leave it until Sunday so I could get re-aligned. I have been getting a bit of work done, at least.

Maps

I have the majority of the important maps planned out now. There are a few sort of small incidental maps that I’ll need to add (a room connecting two doors, for instance), but more importantly the flow is basically there.

So I started on the first cave level. After entering Black Mountain, the party gradually works upwards through its interior, an abandoned temple and a small ruined town attached to it. The first level is the biggest of the three interior levels, and actually the largest single map in the whole game. It’s slow going because I am, of course, spending more time on it than I need to. There are a lot of rocks.

A screenshot of a cave with many rocks.

This is, of course, highlighting the drawbacks of my approach. Since I’m just hand-drawing every level “in place”, I’m spending a ton of time doing essentially repetitive work, like drawing various piles of rocks. Likely, in the final art, these piles will just be replaced with instances of reused artwork. I’m actually not sure whether I’m saving time or not doing it this way, but I know I would be spending a ton of extra time if I were painting it to a decent finished quality. As it is, it’s helping my practice drawing inanimate, natural forms like trees and rocks, which is a weakness I’ve always had in drawing. You can draw your own conclusions on whether it’s working, I guess.

Another screenshot of a cave with many rocks.

The Size of the Thing

The more I work on this the more I’m a bit troubled by the potential size of it all.

It’s a classic problem (previously written about by a miscreant you’ve likely heard of) for amateur map makers to end up with maps that are way too huge, and not visually interesting. In my earlier post about how I build my map (from April 11, 2021) I didn’t talk about how I was trying to keep myself from doing this, because I hadn’t worked it out yet. Now, though, I actually work on the map in units of “one screen”. I know how big the screen is, and I have a to-scale grid on my planning map of screen size.

The planning map, with an overlaid grid of “screens”.

This way, when I build an area, I’m thinking in terms of how much is on a screen at a time, so I can try to avoid having any “dead” screens where there’s nothing interesting, and hopefully the screens can be visually distinct to help the player find landmarks as they explore the map. Each individual map can be more than one screen, but I’ve been mostly keeping each individual map as only a few screens big.

I do still have the option, though, of making a map as one big map, and then splitting it up and letting you move through it screen-by-screen. At the moment I’m doing this for interiors, like the caves.

A planning map of a cave.

This is set up by something I built for SimpleQuest, years ago, and have carried forward – I call them “camera boxes”. Basically, I can define a set of rectangles on the map. At any given moment, if you aren’t in a camera box, I query the map to find one that you’re currently in. The camera is then locked to that box; it won’t scroll past the edges of that rectangle. As you move, as long as you’re still in that box, you stay in there. As soon as you step out, I figure out what camera box you’re in now, and quickly scroll the camera over to its new position, locked inside the new camera box.

This isn’t exactly a new idea – it’s built to simply mimic how 2d Legend of Zelda games have worked for decades. It’s a reasonably elegant way (at least for me) to define it for your maps, though. Sometimes I just want to take about straightforward stuff.

I’m not completely sold on having the separation of “outside is all separate maps, inside is always just a camera-box limited map” but that’s what I’m running with for now.