Current Project: Black Mountain
Gruedorf Post 2021-06-13
- Progress on the layout/world map
- Drew six maps
Decided to ride the momentum of map making for now. Filled out the maps to complete the initial forest area, drew a little town, and have started the transition maps to the next area (which is actually more forest, but centered around an abandoned and blocked road).
The numbers on this week sound like a lot of progress but honestly I was hoping for more. I'd also like to tackle something that needs some more thinky work in the next week, so I have more to write about! There's only so interesting "yep drew some maps" is, week after week.
I guess the good news is that eventually I'll run out of maps to draw. Theoretically?
Gruedorf Post 2021-06-06
- Finished up the cave I was working on
Not much to report. I've (almost) finished the cave I was talking about last week. This means that the game's maps up to the first boss fight are ready to move on. I've got to draw the boss' "lair", and then another town.
I'm not sure exactly what I'll do after that. I'm waffling on whether I want to just forge ahead and keep drawing maps, or if I want to go back and fill in what I've got. I've got a few more maps in the forest area I've been working on that the player doubles back to after visiting the town, which then takes you to the second boss fight. I'll probably just go ahead and finish those maps, and then start filling them in, which will mean making some more monster art and starting to tackle some things I want to fix up in the battle system.
Alternatively I may just try to ride the momentum of map-making and try to get all of them done for the whole game (or at least all the maps that you actually need to visit -- there will be a number of places that only exist for side-track stuff). Then you'll be able to walk start-to-finish, and I'll get a better sense of how big it all feels, and then I can start to cut down or expand as necessary. I'm not convinced I'll get a good understanding of that without stuff like monsters in place, so we'll see.
See you next week!
Gruedorf Post 2021-05-30
- Made a lot of headway on a new map
You know, I was thinking about it. A very, very classic staple of jRPG maps is the Cave. Really, in a lot of ways they're almost the quintessential dungeon in fantasy stuff in general! I suppose this could probably be traced back to Tolkien's books -- The Hobbit especially involves a great deal of the protagonist grubbing around in caves that aren't ancient ruins or whatever. Just caves. Since it's Tolkien, this probably dates back even further; I suspect Beowulf was gallivanting about in caves when he was off killing Grendel and his family.
It seems a little absurd, though, right? When was the last time you were in a cave? If you're not a professional or hobbiest spelunker, it's not really something you generally do! Caves are unpleasant places; they're formed by flowing water which absolutely does not care about making anything resembling a nice safe floor for you to walk in, or making tunnels anything other than a claustrophobic nightmare. Maybe caves are over-done, you know?
So anyway, the next area I'm working on in Black Mountain is a cave.
So I fell into a trap of my own devising. I had gotten pretty quick at drawing the maps I'd been working on, and foolishly believed this means that I could just steamroll through and become an unstoppable map-drawing machine. Unfortunately I failed to account for the fact that my speed was based on the fact that I had developed a quick shorthand for drawing the forest maps I was working on.
Then I started drawing a cave and realized that I have no clue how to draw a cave. They're terrible! I'm not convinced any RPG has ever featured a realistic cave (see my rant above). So I had to actually force myself to do real work and figure out the shorthand I would be using.
(As a reminder, the stuff I'm drawing now is not a final version of anything -- the entire goal of this current "draft" version of the game is to just stand up a beginning-to-end version as quick as possible*, so I can start evaluating it as a full game and I can start showing it to others. Then, either through my own work or those aforementioned "others", we'll start making it look good.)
Anyway, I started and re-started several times on my first map. Just like with the rest of my maps (see the process discussion back in https://verge-rpg.com/topic/35/gruedorf-kildorf-s-devlog/8) I started with a quick, dirty sketch of the area, and then resized it to full size for the level drawing. I ended up trying several approaches before I eventually found one that struck the right balance of fast and readable.
I'm still not completely happy with it, but as I keep having to remind myself, it took drawing three or four full forest maps before I was happy with that shorthand.
Have a good week!
* I'm actually doing an awful job of doing it as quickly as possible. I'm taking far longer than necessary on the art, but I'm hoping that the time spent will translate into less time trying to explain incoherent chicken scratches to an artist, later.
Gruedorf Post 2021-05-23
- I don't actually remember
This week sure was something. Between a hectic week at work and setting up a new computer, I'm not sure I actually got much of anything done on Black Mountain this last week. My drawing tablet isn't even set up on the new computer yet. THAT SAID, I am taking some time off for the next bit, so I will have plenty of time (in theory) to get things set back up and get back into the flow of things.
Gruedorf Post 2021-05-09
- Worked on a map
Too busy to get a lot done this week, but at least some progress is still being made! Far better than just letting it lie fallow for months. I'm optimistic that the next couple of weeks will see my free time opening up a bit, but I also feeling like I'm inviting a curse on my own head for saying that. Well, we'll see!
Gruedorf Post 2021-04-25
- Added obstructions to map I drew last week
- Got bridges working
I wanted to talk about a topic that is one of my personal bugbears for any top-down 2d games: bridges. Specifically, bridges where the player can walk on top of, or underneath them.
Traditionally you've got essentially two layers of "stuff" -- what is behind the player sprite, and what is in front of it. Other things that are on the same layer as the sprite, but are tall (so sometimes the player should be drawn in front of them and sometimes behind them) complicate things a bit, but you can fix that by sorting the sprites by their position and layering them that ways.
When you have a whole section of the map, though, that should be drawn in front of the player sometimes, but not others (e.g. if they approach a bridge from underneath it vs. from on top of it), it's a whole other issue. The drawing is relatively easy to deal with, KIND OF, but once you have other entities occupying the space, and when you might have events that should trigger when you're on top of the area but not below it, things get rather complicated!
It may seem like a weird thing to fixate on, but it can allow for more interesting map exploration flows, and it's always kind of fun to revisit an area you've been in but from a different angle. In that sense, it's like the other "walk around the map stuff" I was writing about a few weeks ago, but it's a little more subtle since it's not something the player does specifically, it's mostly about presentation. In the best case, it's not really something the player ever thinks about. Of course you can walk under a bridge if there's ground under it.
VERGE in particular did not handle this well. You were able to modify the renderstring in real time (which allowed you to handle the drawing reordering, sort of) but there was only ever one entity-layer entry; if you reordered the entity drawing it reordered it for ALL entities. If you had any NPCs in the vicinity of the bridge they followed the player's draw ordering. If you wanted to trigger some zones only if you were over the bridge, you had to manually do checking on things in the zone. It was a pain.
When I built SimpleQuest I knew I wanted this to be a solved problem, in particular because I was using it as a way to build out a framework for RPGs I wanted to use for bigger things, and others might use. I only ended up including one bridge, as a proof of concept, but the functionality was there. None of the code was something I could carry over, but I carried over the principles, and one of them was the way of handling this particular problem.
With the Black Mountain engine, my layers are much more complex than just a single tile map or a list of sprites -- in fact, each Map is made up of one or more MapLayer objects. The MapLayer objects contain at least two tilemaps (more, if you want to add them), any arbitrary extra sprites which can sort above or below the tilemaps and entities, a shadow layer, obstructions, and a container for entities, including step event shapes. When checking for triggering events (attached to entities or otherwise) I only check the ones in the player's current MapLayer entity container; similarly an entity will only collide with obstructions that are in their current MapLayer. Moving between the layers means identifying a good transition area where, when the player passes them, they should go from one layer to the other. The actual move is accomplished by "just" moving the player entity into the other layer's entity container (it's a little more complex than just a reparenting, but not much).
Anyway, this all works now. I had been using the MapLayer setup for some time now, so really the work this week was just writing the layer switching code (which, as I said, isn't that complex). Still, I'm glad it's done, and I can now continue building maps with the assumption that it's available.
See you next week!
Gruedorf Post 2021-04-18
- Rebuilt my "complete" map template at a new scale (I know, I know)
- Redid the blocky draft for the first dungeon
- Drew another full-scale map (hooking it up still to be done)
Like I said last week, this will be a short update. I've got another map almost bashed together, and need to get it into the game. Hoping to get a couple more done for next week, but we'll see.
See you next week!
Gruedorf Post 2021-04-11
- Figure out that I've been drawing maps to the wrong intended scale
- Figure out what the right scale is and how to draw them
- Start building out the first "dungeon" map
Maps! They're hard. I'm building them in a bit of a strange way.
Since I'm not building the final maps for the game at the moment, I am trying to develop a workflow that strikes a balance between a couple of points:
- It has to be relatively fast
- It has to be relatively easy to change
- It has to be something that I can give to artists and they can understand it all well enough that they can see how to improve it (and hopefully enjoy it as-is)
I would normally just make some tiles and use tilemaps. That's something I pretty familiar with, but it turns out... I'm not actually very good at tile art. It takes me a long time and I fuss with it a lot. I could just use some coloured squares, but then I'm losing out on my third goal -- it's not clear what things are. I could FIND some tiles to use but I have a terrible problem that if I sit down to find "relatively good" tiles to work with, I end up looking for the PERFECT tiles. I also don't want to be constrained by what someone else decided to put into their tileset (and if I let myself start drawing my own tiles then we end up back at the beginning of this paragraph.)
While I'm not a great pixel artist, I am semi-competent with a pencil. All of the art you see in the game so far (in earlier posts) has been drawn by me (I primarly use a Huion tablet and Clip Studio). So I've also been pencilling the maps.
This COULD lead to a lot of terrible waste. The first part of the game is set in a forest, so rather than signing myself up to spend the next ten years of my life drawing trees (though I'm sure I'd be quite good at drawing trees by the end), and to avoid having to fight with pasting things in the right order, I'm still using a "tile" engine internally. Godot's Tilemaps, to be exact.
The other problem with pencilling something is that it is very easy to focus on one thing and ignore the larger picture. With tiles this is kind of okay (most of the time) because you're focusing on some details in a tile and then piecing together the larger picture late. If you're actually producing a map's layout and its "pencils" in one go, though, this isn't good. It's a work in progress, but I've been gradually refining the process...
First, I start in Clip Studio. I've got a file where I am drawing the entire game (well, it WILL be the entire game eventually) in one big image, with blocky pixels. It's drawing at roughly a one-fifth scale, and it looks kind of like this:
As you can see it is very light on details. I'm doing some mental planning as I work on this, and have some references within other documents (mostly in Google Drive so I can peck something into them from my phone if I come up with an idea while I'm not at my computer), but they're quite messy. The grid is a grid overlaid by Clip Studio and it is very very roughly set at about one tile per square.
Since I have all of the maps in the one image, I can also make sure that they line up and roughly fit with each other. This is important to basically no one in the world other than me, but I like that I can do it.
When I decide to move further with a map, I make a new image that is 1:1 full size for that map, and I clip out the section I'm working on from the big "complete game" image, and blow it up to the right size. Then I start pencilling in the shape of the map over it.
I actually work with the rough map more transparent than in the image, but I upped the opacity so it was more obvious. I'm drawing in red because there is a psychological effect that black lines seem more "finished" (or so I've heard), and I want this to feel like a draft. It's just a pencil drawing, so it's not set in stone.
You'll notice that there are some features drawn on the map, but I mentioned this is supposed to be a forest. There are no trees! Earlier in development, I pulled out three sizes of trees (cleverly named "small", "medium", and "large"), and I've divided them into the "below the player" and "above the player" parts. It turns out that Godot's Tilemaps have a very loose definition of what a "tile" is. It can be any image -- whether or not it's the supposed size of the tile. This means I can just treat my two pieces of tree as tiles on two layers.
So I import my pencilled map into Godot, and then start dropping in the reusable parts like the trees. If they are thing that should exist on the same layer as the player (e.g. a barrel that you can both walk in front of or behind) then I have a separate "entity" layer for them.
The last step to make it useful is to put in the obstructions. I use CollisionPolygon2D instances for this, which Godot has native editing support for. It makes things very colorful.
Then I run the game and wander around to see if I messed anything up! (Spoiler: I usually did.)
I've got a lot of map drawing ahead of me. I'm not really entirely sure about this process yet; I'm worried it's not quite fast enough. This won't necessarily make for very exciting Gruedorf posts!
But that aside, my next several weeks will probably be a bit constrained anyway. My wife and I are gearing up to move in the while, so we're doing the whole finding-an-apartment-and-packing-everything-we-own thing. I'm going to do my best to still post on Sundays, but I probably won't take the time to ramble nearly as much.