[GRUEDORF] Kildorf's Devlog
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-05-02
- Finished up a map, completely did another, and started on a third
Got in some decent work this week but nothing really to ramble about. Still working on finding some place to move. See you next week!
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-05-16
- Finished a map, started a new one
I know that saying this is asking for trouble, but my time should free up a bit in a couple weeks. Hopefully that’ll mean more to actually show off, AND a return to my ramblings. This is a threat.
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-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-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-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-20
- More maps
- A droppable ladder
Hey, did you know it’s Sunday? I forgot.
One thing that I appreciate in map design is when you traverse a map multiple times, but when as you go through you open up little short cuts for yourself. I’ve actually implemented the first instance of this in Black Mountain; a rope ladder.
You first encounter the rope ladder rolled up at the top of a cliff. There will be a small cutscene drawing attention to it (mischievous forest spirits up to no good, naturally). You’ll go far, far out of your way to work around a different path and eventually come to the top of the cliff.
If you use the ladder, it’ll flop down, and what was an impassable cliff is now a climbable area.
Aren’t you clever?
This will be useful, because just north of this area is a small boss fight (mischievous forest spirits, again) and then a town. In the town you will be tasked with doing something that involves returning to the forest and unlocking a new area – I certainly don’t want to have to walk all the way back through a damp cave system to get back and forth while testing, so why should I make the player do it?
Gruedorf Post 2021-06-
- More map work
Eugh, I wasn’t at my computer a lot yesterday because I was trying to give my hand a rest (I tweaked it weirdly so it was aching over the weekend). It’s feeling improved, but not all better! Anyway, I never got around to posting here yesterday so I’m a day late.
Even disregarding that, I wasn’t super happy with my productivity this week. I’ve been trying to chip away at it each day, but that hasn’t always been happening! Such is life, I suppose.
Gruedorf Post 2021-07-07
- (Mostly) finished forest maps
- Started planning out the maps for the second half of the game
Things have continued on their recent slow trajectory. I meant to get back on my normal posting schedule by posting on Sunday, but I didn’t do that, so now it’s Wednesday. Ah well.
I’ve gotten all of the forest maps drawn (though not brought into the engine yet). I’ve got some more caves to draw to link up some parts of it, but I decided to instead finish up the planning/“blocky” versions for the maps for the rest of the games. They’re coming along! There are three (kind of four) distinct areas in the second part of the game (Black Mountain itself) and the biggest one is done(ish?), and I’ve got some preliminary sketches of the rest.
I’m actually starting to worry about the size of the game – Black Mountain was supposed to be a small game that helped me get a process worked out and some engine development out of the way. My map-focused development so far has made it easy to imagine larger (and more) maps than I probably need. For the time being, though, I’m going to keep on with the current plan and build out the draft maps. That was the point of the drafts, after all. I need to focus more on getting through them instead of getting bogged down in details while drawing them… but I’m also cutting myself some slack since this is a very personal project, I figure if I’m having fun doing the details then I could certainly be spending my time in worse ways.
I just need to balance that “having fun” against “taking forever”, because it’s ALSO fun to finish things.
Here’s a “work in progress” of the entrance to Black Mountain (that I thought was finished until I looked at it just now and realized I didn’t finish the ruined walls that are sketched out on the ground there). This is a small rest area between the last section of the forest (an abandoned, ruined road) and the first section of Black Mountain (the partly-flooded, lowest level of the interior).
I’ve also been spending some time doing some drawing. I realized that maybe I should warm up a bit each day before working on the maps, so I have been. Warming up is actually mostly pen/hand-control exercises, and then I do a bit of free drawing or some figure drawing or whatever. Lately I’ve been looking a bit at artists I admire and trying to break down what they’re doing and seeing if I can synthesize the bits I like into my own stuff. It’s nice to be drawing again, I think?
Gruedorf Post 2021-07-25
- Finished (mostly) planning the rest of the maps
- Started working on the first interior level of the Mountain
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.
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.
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.
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.
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.
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.
bengrue last edited by
There’s so much here that I like, my dear nemesis.
I’m glad we think about screens similarly. Maybe we should chat about story graphing. I have a technique that I like…
Gruedorf Post 2021-08-02
- Continued work on the maps
I had a busy week, so I didn’t really get a ton of time to work on Black Mountain. I made sure to get a bit of drawing done on the big map I’m working on, at least.
Gruedorf Post 2021-08-08
- Decided to take a break from Black Mountain
- Made most of a town!
And Now For Something Completely Different…
The grind on the Black Mountain maps has been wearing me down. I’ve been finding it hard to feel motivated the last couple of weeks, and I’m not the best a “relaxing” at the best of times – I’ve been finding myself in that awful loop of not feeling up to working on my thing so I just kind of try to do something relaxing but have the buzz of anxiety in the back of my head about how I should be “productive”.
Brains are dumb.
Anyway, there’s actually something that is somewhere in between actually relaxing and being productive! I am a huge sucker for games that feel like you’re doing something productive; I have to be careful sometimes with games like Cities: Skylines or Factorio or I end up going to bed when I intended to get up in the morning. Turns out, one step from that is to do something productive that feels like a game.
Enter RPG Maker MV and yet another unnecessary sequel! RPG Maker can be used to build some solid, real games – but also if you lower your standards it can be used to make dumb, terrible games, but (comparatively) very easily!
Or, more fully known as SimpleQuest 2: The Heroic Legend of the Epic Quest for the Mystic Crystals of Power. I might add more to the name, who knows, a game can always use an extra ALPHA MEGA TOURNAMENT EDITION or something added on there.
SimpleQuest (as you might remember) was a smallish game that I built as a test game for an engine that I abandoned. It followed the adventures of a guy named Hero (because his parents had high expectations) dealing with a dragon that was (supposedly) terrorizing a small town. I also built it (almost) entirely of freely available assets.
SQ2:THLOFEQFTMPCOP is a follow-up sequel that literally no one asked for. It follows Hero as he reunites with his sister, “Treasure Hunter”, his childhood friend (and “secret” crush!) Wizard, and their travelling companion Corwin, who has a normal name and does not understand why they keep calling him “Healer” no matter how many times he tells them his real name. This time they’ll be hunting down four crystals of power and squaring off against an evil wizard who has an unsettling fondness for orbs. I’m taking a similar tack and only making assets when they are “necessary”; I’m editing sprites to make the main characters and I’ll (probably?) draw some portraits for the characters, but I’m going to spend as little time doing asset creation as possible.
Will I keep working on this? I don’t know! I’m going to work on it for a bit as a break, and I’ll try to keep it in mind as something I can come back to in the future if I need another break. I don’t really want to spend an extended period working on it instead of Black Mountain but so far it’s working as a bit of a mental trick to help me just chill the hell out, at least a little.
Have a good week!
Ah, and I wanted to mention: Nearly all of the art you see above is from a CC0 pack of assets by Mighty Palm: https://themightypalm.itch.io/the-mighty-pack
Have fun! Now that I’ve tipped my hand, if someone else makes SimpleQuest 2 faster than me then I will… uh… probably just keep making this one. No one else but me can possibly remember the order of the words in the subtitle, so I’m not too worried.
kildorf last edited by kildorf
Gruedorf Post 2021-08-15
- (SQ2) Bigger overworld map
- (SQ2) A few areas
- (SQ2) Confronting RPGMaker’s limitations
Expanding the World
Stuck with working on SimpleQuest 2 this week. I’m looking forward to getting back to Black Mountain, kind of, but I still needed the “break”. I expanded the overworld map from a meager 20x15 tiles to a whopping 62x62 – exactly one quarter of the original Dragon Quest’s overworld map size. I filled out a lot of it while thinking about the structure and story of the game. I’ve added the first other areas outside of the initial town, Seaside, including a small logging camp, a second town (Lakeside), and the entry area for the first dungeon.
It’s still fun. It’s nice to have an existing set of graphics to work with. I’m starting to edge into the place that I always, eventually, end up with RPGMaker, though…
RPGMaker is a lot of fun. It’s very good at making exactly the game it was built to make – a pretty standard jRPG with about half the bells and whistles you want. The other half of those bells and whistles though… Yikes. Here are two of the things I’ve been wrestling with:
Cutscenes with the whole party in them. jRPGs tend to go one of two ways: You’ve got a silly conga-line of people trailing off behind you (with a total party length significantly longer than the width of any town in the world), or you’ve got the lead character standing in for the whole party. I personally lean toward the second for reasons both technical and taste-related, but I can appreciate the first. The default in RPGMaker is the conga-line, but you can toggle that off. Easy!
Until you want a cutscene. It turns out that when you’re writing a cutscene, if you want to control the sprites of the rest of the party, you… can’t. Full stop. They are simply not available for targeting in the event scripting. This is true whichever style of party display you’ve chosen. Even dipping down into the JS layer does not give you a good way of accessing them. No problem, right? Just spawn new sprites! Wrong! You can’t do that either, and if you could, you’d still have no way of targeting them.
The result? Every single map has three hidden entities (or “events” in RPGMaker terminology) that I teleport to the player for a cutscene, can script, and then hide them at the end of the cutscene. These have to be created in the editor, and they must be in the same “slots” on each map, because you also can’t reference an event by name. I’m working with this by creating a template map that just has those three events, and creating a copy when I’m making a new map instead of starting from scratch.
Multiple copies of vehicles. RPGMaker has the classic three RPG vehicles built right in: a boat that can go in shallow water, a ship that can go in any water, and an airship that can fly anywhere but can only land some places. It’s easy to change the look of them, and put them wherever you want. You can hide them until they’re created/discovered, move them around as parts of events, etc etc.
What you cannot do is have more than one of each. You must have at most one boat in the entire world, one ship, and one airship. (You also cannot easily change which tiles are allowable for boats vs ships, but that’s a problem for another time I guess.)
I’ve figured out a scripting solution for this where I can put dummies down in the world that, when activated, will swap places with the actual boat, letting you use it seamlessly as if it were a boat (and leaving the dummy in the boat’s previous location so it can be swapped back later if necessary). This is offensive to my sensibilities, but whatever. It works, though I am still trying to figure out exactly how to persist this across map loads (i.e. I want ALL of the various boats to stay where they were, not just the last one you used, when you come out of town.)
I’m sure I’ll keep finding things that annoy me, and maybe being annoyed with RPGMaker will chase me back to Black Mountain faster, who knows? I’ve barely even scratched the surface on combat in SimpleQuest 2, so I’m sure there will be more to complain about.
I also dumped most of a glass of water directly in my keyboard this week. I’m seeing if it’ll work once it’s dried out, but things aren’t looking good. Thankfully I have a million keyboards kicking around so it’s not ideal but at least I’m not stuck in “I literally can’t type things into my main computer” territory.
See you next week!
Gruedorf Post 2021-08-22
- (SQ2) Fixed boats
- (SQ2) Started dungeon interior
I actually didn’t get much done this week. I did finally get a bit done today, though, and figure out how to have multiple persistent copies of vehicles, and started on the interior of the first dungeon. Trying to figure out how to get switches to animate correctly now.
Here’s a picture of Lakeside, the town where you will get your first boat! That is way past the dungeon I’m now working on, I’m not really sure why I did things in that order.
Gruedorf Post 2021-08-29
- (SQ2) Made a switch work
- Back to Black Mountain!
- Moved on to the next map, got it mostly roughed in
Whoops, nearly forgot to post. No pictures this time, just hastily written words.
SimpleQuest 2 Switches
On the SimpleQuest 2 front, I got a wall-switch to open a door to work. At least, it switches back and forth, it doesn’t open the door yet. This shouldn’t have been as difficult as it was but it took some time for me to realize that the asset pack I was using has the switches laid out in a way that doesn’t work for RPGMaker. There is not (as near as I can tell) a way to just play an arbitrary sequence of frames; in fact, sprites are generally packed into a sheet with seven other sprites, and the actual animation they play is pretty baked in. I’m sure it can be changed with plugins etc etc but anyway…
Point is, the switches in the (absolutely great) Mighty Pack are presented as just a series of three frames for different colours. To make it work I had to copy them around and turn it into a full sprite with the three frames (plus an extra that I made just because) are mapped to the switch sprite’s 4 directions. Then, to play the switch flipping you just animate the sprite “rotating” in place. This is how chests and doors in the built-in assets are animated as well!
Back to Black Mountain
And then I decided I really wanted to work on Black Mountain again. I’d kind of churned out of drawing on one of the cave levels, because it’s a big map and it’s got a lot of details. I gave myself permission to leave the rest of the details… un-detailed, and move on to the next map (the next floor up, which is an abandoned/ruined town that was carved into the middle of Black Mountain). It’s not quite as big (the interior floors of the Black Mountain cave system get smaller the higher up you get, since the mountain is roughly conical) and has gone pretty quickly. It’s got a bunch of interior maps (since there are “buildings”) but those should mostly be a screen or two, so no biggie – and I’m going to be skipping the unimportant ones for now. (Unimportant is defined as “you don’t need to go there to complete the story”.)
It feels good to be back on the game. Hopefully I can keep making decent progress! Have a good week!
Gruedorf Post 2021-09-06
- Roughed in all of the big maps
Whoops. Normally I post on Sunday but Labour Day made me kind of miss that I needed to post yesterday. But anyway… working on more maps! I’ve got rough drafts of most of the “big” maps — the exteriors and the big dungeon levels. There’s are still interiors to draw but the end of the marathon is in sight. Then I need to do more marathons!
Anyway, yeah, have a good week!