1.5M ratings
277k ratings

See, that’s what the app is perfect for.

Sounds perfect Wahhhh, I don’t wanna

April 2021

Alright, so I’m a bit late here, haha. April had a good start but ended kinda crazy. Our two-year-old got sick for a few days (just a cold, not the ol’ COVID-19), which wiped us out, and then she had a lingering “mood” for the rest of the week, lol. General exhaustion made me more interested in playing games than making ‘em (currently playing Rune Factory 4, which is a good time!). So no fancy images and stuff this time. Hope y’all don’t mind a bit of text.

Anyway, here are the news.

When playing with a gamepad, I’ve noticed the eight-directional movement feels really clunky with the stick. This clunkiness happens in a lot of older games too, for both eight- and four-directional movement. For example, on NES Online and SNES Online on the Switch, I can’t use the joystick at all. I have to use the d-pad.

In the first two ProtoDungeon episodes, I mitigated some of the issue by tinkering with some of the thresholds, but when I started testing a gamepad for Episode III again, I realized this was still not ideal.

Juju, who wrote my old input system, is working on a new open source input system. I haven’t contributed code, but I did give my input (hehe) very early on. Now after coming back to look at it, it seems to be just what I need. So I spent the first week of April swapping out input systems (which isn’t as easy as you might expect if you’ve never done it before, BUT it was way easier than I expected). Then I modified the movement code to use the new input_direction(), which gives much finer control to the stick.

But that much fine control–fully omnidirectional–was actually fairly nauseating. It was difficult to walk in a straight line. I ended up rounding the input direction to the nearest 22.5 degrees, meaning we were now at 16-directional movement. It feels really good! And as I played more over the month, I tweaked it further to lend more weight towards the ordinal directions (north, south, east, and west), in addition to scaling the speed slightly based on how far you’re pushing the stick. In my opinion, it’s now preferable over the d-pad or arrow keys (though don’t worry, I do the majority of my work with the arrows, and they are very functional and fun.)

The new input system also gave me an easy way to set gamepad axis thresholds, which is something a few people have already asked for. This is a setting in the behind-the-scenes file, but probably not an option I’ll add in game yet since that requires some rework on menus.

Then on a whim, I threw in gamepad vibration! This wasn’t related to the input change… I just wanted to do it, lol. It was a small thing that took me about 30 minutes but adds a surprising amount to the game. I can choose the intensity of the vibration based on what’s going on, and I added a setting for players to control the overall intensity (or turn it off). There’s no menu option for this yet, either. Hopefully I’ll get time for that in Episode IV.

I created a free GMS2 extension out of my vibration system called Good Vibes! It can do all kinds of fancy stuff using animation curves, and it handles some of the weirdness of GMS2’s vibration functionality too.

Next, I created a Linux virtual machine to allow me to export stuff to Linux! I tested this successfully with the current version of PD3. Tried to immediately export PD1 and PD2, but those projects don’t exactly work anymore–I’ll need to do it from the current project after I go through and apply engine changes to them (current project always contains all episodes, don’t worry, nothing is lost).

Finally, I ended this month’s changes on two separate things, neither of them finished: true borderless window toggling and proper depth sorting.

Borderless window toggling in Windows isn’t something possible with vanilla GameMaker. I got a small DLL from a friend, though, that can force the toggle. The only reason this isn’t finished is because the application surface gets stretched weirdly, and I haven’t figured out how to offset it properly yet. This one isn’t required to go live at all, so not sure when I’ll get back to it.

Depth sorting IS required, though, and that’s what I’ve been wrapping up. My z-height system is pretty complicated, and the old depth system didn’t always work–and when it didn’t, there wasn’t much that could be done about it. Occasionally you’d get weird overlaps where the player was under the ground tiles and so on. I did come up with a depth method that would’ve resolved it, but unfortunately it would’ve gone past the supported min and max depth that GameMaker can handle. So I switched to a simple grid sort system, where I can basically just chuck everything into a ds_grid, sort it, and then trigger each object’s draw event in order by iterating through the grid.

There are a few kinks to iron out. First, I need to fix cliff sprite generation. Cliffs create their own sprites based on the tiles beneath them–this way they can be properly sorted so the player can either walk on top of them or behind them. Currently there are some bugs with the generation so that the sprites are too tall and they don’t properly handle animated tiles.

Second, I need to get enemy sorting working too, which will be much easier when I’ve put enemies back in the game. :) The old way was to manually set their depth based on the player position, but that won’t work anymore. That said, with the new grid sorting method, this may not be an issue at all. We shall see.

devlog devblog gamedev game development The Waking Cloak ProtoDungeon gamemaker

March 2021

I’m back!!!

Oh man it feels good to be doing gamedev again (and actually enjoy it).

So first things first, we had a baby!

image

This lil guy is super cute and has made an awesome addition to our family. As you can probably guess, this is why I spent a few months not doing gamedev. Even when I had time, I didn’t have the emotional or mental bandwidth to work on ProtoDungeon. And that’s to be expected!

But there was another issue: a weird bridge bug. Essentially, you could walk under a bridge… and if you tried to walk on it, you’d fall through it. I could not figure this thing out. Collision was working, options were all set up correctly, etc. Every time I thought about working on my game, I knew this bug was facing me down and I’d have to address it. And I couldn’t get over the mental block.

So I took another tack (I make it sound like this was a choice, but it was more a compulsion): something I’d been thinking about for a while was learning 3D. I wanted to see if I could get some kind of fusion between 3D and pixel art. I won’t go into all that here, but I had a good time, and it really primed the creative pump. If you’re interested here’s my twitter thread, and here’s a thing I made:

image

At last, around mid-May I had worked up enough courage to finally address the bridge bug back in ProtoDungeon. My 3D journey not only got me some cool skills, but warmed me up. And also the more I thought about it, the more I was sure it was due to one particular piece of code: the edge slip.

This was here so you didn’t run into scenarios like this, where you’re “floating” on the edge:

image


Basically it would slip you off the edge if you were that far over it. Makes sense, right?

Well, unfortunately, there are a LOT of weird edge cases (haha) where this is straight up broken. Like the bridge. The bridge was so narrow that it just always assumed you were on the edge, so it’d just push you off (rude). And there were plenty of places where you could fall off and just get horribly stuck.

And, sure enough, deleting that code made all of these things miraculously start working.

That felt really good. And even better, I felt like I could keep going! I decided to listen to something my instincts had been saying about the lv3 boots: the dash roll wasn’t working.

The lv3 boots, while equipped, would transform the roll into a dash, making it faster and giving you i-frames (invincibility).

image

This was fun, but it had problems. It wasn’t intuitive or consistent with how the other items worked. I could’ve figured out a way to teach the player how to use it, probably, but it also wasn’t particularly useful. It meant, first, I’d have to contrive some kind of environment mechanics to make the dash useful, and I don’t want to get too contrived. And second, it meant the standard roll was not actually very useful at all.

I brought this up on the Studio Spacefarer Discord server and after some discussion, I decided to go back to one of my very early ideas from years ago: adding a Pegasus Boots-style dash which the player uses by holding down the item button, “charging it up” via a jump and sprinting on hitting the ground. It sounds complicated, but it feels really good. No invincibility, just crazy speed. Then the roll could get the i-frames, making that more useful too. So behold, the new dash:

image

And, uh, yeah, this is SUPER fun. And while it’ll be useful in puzzles and stuff, it’s also a good way to just get around (as long as you don’t crash into anything… or maybe even if you do). The boots are all about travel and movement, and while a dash-roll could be included in that, I think a dash-sprint gives a lot more bang for your upgrade buck.

I’m happy to say I got a lot of other stuff done in March, even though I only worked about two weeks total. Here’s the full list…

Changelog:

  • Fixed some incorrect z-object cliff placement .
  • Added bridges that work with the new system (can go over/under them).
  • Fixed a bug that caused bridges to be submerged at the wrong level.
  • Things fixed by removing the edge-slip code.
  • Fixed coming out of the water onto a ramp.
  • Fixed umping up to a ramp.
  • Adjusted the ground logic to prevent getting stuck when falling down a ledge onto a ramp.
  • Completed moving the beach “down” on the z-axis to accommodate tide rising and falling.
  • Removed the old roll dash for the lv3 boots and replaced it with a sprint dash which can be “charged up” with a jump.
  • Added i-frames to the roll.
  • Force the switch to the “item get” state to prevent issues with sprinting and rolling into items.
  • Started testing various other previous bugs to see if they were resolved with the latest changes (a few are, so far!).

That’s all for this month. Thanks for reading!

devlog devblog The Waking Cloak ProtoDungeon gamemaker game development pixel art

DEVTOBER 05 - 08

Alright, here’s another round of Devtober posts. Making some good progress. :)

[05]  Episode III summed up in two words: Cliff Stuff. All I ever do is cliff stuff. Save for a few twitchy areas, most of the south part of the map is complete (cliffwise). Look how much neater it is than on day 1!

image

[06]  Got tired of cliffs so I made an inspector to inspect the cliffs (and other things). (I’ve been using this CONSTANTLY since I added it, good times)

image

[07]  Today. Today was gonna be the day I fixed cliffs once and for all. (reeeeeally hoping to wrap up cliff bugs in the next few days….)

image

[08]  Holy crap, I think I fixed it. “Negative” cliffs (z height values under 0) were causing so much trouble. I solved it like a true hackzor: make EVERYTHING positive. “Sea level” is now z 96 instead of z 0. Suddenly it all works.

I’m ironing out a ton of smaller wrinkles now. This change affects loading, object placement, etc. Made lots of good progress on those today though!

image
devtober devlog devblog gamemaker game development protodungeon

Spacefarer Newsletter: September 2020

Alright, here we go!

I picked up where I left off in August: wrapping up the tileset for the episode. Water details, beach details, waterfalls, spikes, cracked floors, etc. Lots of work, especially since I haven’t done a lot of art recently. I’m really proud of the improvement here though.

image

Next I started on another big task: enemies! I’ve done these before in The Waking Cloak, so there’s a decent framework. Definitely still a big deal, though, given how much I’ve already done on this episode. 

I have two enemy types planned, one of which I’m (creatively) calling a hopper (not the official name but probably what it will be called in code forever). In terms of gameplay it’s like a cross between a goomba with butt spikes and a tektite. Will this be annoying to deal with? Maybe! Hopefully not too much. That’s what testing is for.

image

Anyway, to give you an idea of what went into this single enemy:

  • AI - fairly simple, just runs every step and has a chance to trigger the jump state
  • States - idle, jump, death
  • Art - sprites for all states, facing both east and west each
  • Hitbox logic - hopper hurts player with spikes, player hurts hopper without spikes
  • Jumping - tweaking this to feel right without being too fast or too often definitely took some time, as well as flipping the spikes orientation
  • Player impact - tricky to get that little bounce without feeling mushy
  • Confining to a single area - will be useful for all enemies
  • Work out bugs with pushing the player on hurt - will also be useful for all enemies
  • Enemy manager - keeps track of enemies, deaths, etc.(I ended up putting this on the backburner for another episode; will be mostly useful when I have multiple rooms)

The other enemy? I want to keep it a surprise.

I took a break from enemy design to update the save/load functionality. Ever since I added saving and loading in Episode II, whenever the game had updates, there was a high likelihood that a save file from the old version of the game would break in the updated version.

The reasons for this are numerous and complicated, but the fix is to add save file versioning. With this, I save a version number to the save file, say, 1.2.0. When I make changes to the game, I will also update this number in the game itself.

For example, say a player saves and quits their game in a certain location. Then say I move that entrance to a room in version 1.3.8. If the player updates and they will not be able to load in the proper location and instead might load inside of a tree or a wall and be unable to escape. Thus the fix: the conversion script would check the save file version (1.2.0) against the game version (1.3.8). It would run a line of code to check whether the player is in that position, and if so, move them to the new room entrance.

I wrapped up the hopper, then did a quick bugfix for the cliffs. There was a case where if you jumped at a cliff and hit the ledge just right, you could do sort of a glitchy jump where you weren’t falling or getting up on the cliff. It didn’t hurt anything, but it didn’t look good. I actually got frustrated trying to replicate the bug after fixing it which… uh… I guess means I fixed it.

Then I circled back around to ramps. Westward-facing ramps had incorrect height calculations, meaning they act just like eastward-facing ramps, so I fixed that.

Some more attempts at ramp collision made me question whether I wanted to still do them or not. Of course I’d still have north-facing stairs, but collision is much simpler on those. Since I only had one east/west ramp in the level design, I removed it and decided to only do north-facing ramps.

NEXT… the fun part! The culmination of all my plans for the dungeon, creating the map in Tiled, painstakingly building the new mechanics, and so on: actually creating the dungeon room.

image
image

Of course, I’ve changed the functionality of the boots since I last planned the dungeon. This has been a pattern starting back in Episode I, and it’s a result of taking theory and putting it into practice. For the boots, here’s what changed from my initial design notes:

  1. Lv1 - Jump height has been reduced from 16px to 12px. I decided partway through level design that not only could you jump over pits, but you could jump up cliffs. But jumping up the standard height of 16px breaks a lot of design; cliffs would have to be very tall to serve as blockers, and various other obstacles break too. 12px jumps let you go up 8px cliffs without jumping over various obstacles. However, the map design did not yet account for 8px cliffs.
  2. Lv2 - Diving has been added. Not sure how I overlooked this, but here we are. Diving below the surface is great for ducking under projectiles and maybe finding some secret stuff.
  3. Lv3 - The dash no longer serves as a “long jump.” This solves a handful of redundancy issues (mainly jumping/swapping), but it did require a map update. Instead, dashing only acts as temporary invincibility and a faster roll. This will still let you dash through attacks and so on, but not over pits, and I plan to use this in Episode III.

So I made quite a lot of changes, all told, from the Tiled draft to the room in GameMaker.

I broke one of the cardinal rules of programming: instead of making small changes and testing often, I got lazy(?) and made a BUNCH of changes and didn’t test for days. I figured adding collision tiles and water tiles and cliffs wouldn’t cause too much trouble.

Well. They mostly worked. But the first foray into the dungeon was pretty janky with loads of bugs. It was honestly pretty discouraging, and I wanted to just stop and give up for a while. But I started breaking down the problems into more manageable chunks. That was enough to keep me going. Here are the bugs I tackled this month:

  • Made tile collision respect z-height.
  • Fixed an issue with the east area border snapping the player back.
  • Prevented jump in midair
  • Fixed camera dip when diving
  • Fixed cliff sprite generation drawing invisible layers (usually leading to garbled, neon-colored cliffs)
  • Prevented teleporters (stairs, cave entrances, etc.) from triggering when submerged.
  • Fixed camera movement issue when loading the game that started the player in the wrong room (sometimes within a wall).
  • Fixed issue with being able to jump into tile walls and get stuck.
  • Fixed cliff collision box calculations (I messed this up earlier this week when messing with tides interacting with cliffs).
  • Made one high cliff at the bottom of one of the areas shorter, thus fixing a bad collision issue.
  • Rigged up a way to allow high tide to smoothly allow you to walk onto floors at both 0 and 16 (the secret is to lower all adjacent cliffs by 16 at high tide).
  • Fixed invisible daytime tiles when loading a daytime save file.

I also rigged up a way for “tides” to work, meaning tiles and collision changes depending based on day or night. 

image

Near the end of the month, I took one more swing at (north-facing) ramps. This ended up being a whole thing. I couldn’t use my stair object like before because the player actually has to change z-height. I temporarily forgot how triangles worked.

image

It’s hard to see here, but the player needs to make it up to a z-height of 48. However, she’s only getting up to about 37. This completely baffled me for about an hour. I tried changing the calculation, the collider, and so on, with no results.

Well. As it turns out, I was trying to force the hypotenuse of the triangle (the ramp) to be the same size as the sides (the ground and the cliff). This isn’t physically possible, lol. When you’re only factoring in two dimensions, this isn’t an issue, but when you add the z axis (even if it’s faked), you have to obey the laws of geometry.

image

(still some work to do here; ramp movement is very fast and the shadow is all over the place, but it does work).

After that, the bugs were getting me down again, so I decided to switch gears. I added the boots, chapel keys, regular keys, and some rocks! This doesn’t sound like a lot, but it goes a long way towards making it a real, functional game.

And lastly: October is going to be fun! I’m doing Devtober! I effectively do this anyway–a little bit of game development every day–but it’ll be good to join everyone again. My goal is to have everything playable by the end of the month from start to finish (but not necessarily bug free). Wish me luck!

Peace out. Here’s an early enemy bug.

image
gamedev indiedev devlog devblog ProtoDungeon GameMaker pixelart pixel graphics zelda

Spacefarer Newsletter: August 2020

I spent the first week of August cleaning up cliff and z-object stuff. Not very glamorous! I was definitely ready to move on, but it had to be done. Everything I mentioned at the end of the July newsletter? I tackled it.

  1. Falling off ledges now works properly. This was surprisingly difficult.
  2. Tile animations on z objects is now handled… 
  3. Building cliffs is much less painstaking now. The objects automatically resize themselves for proper collision, and the sprites are all color- and number-coded.
image

And more: lots and lots of weird cases and stuff fixed. Cliffs at a “negative z” (below sea-level, essentially) were a whole ‘nother animal. They’re still a little janky, and I’ll have to do more manual intervention for these.

image

Also, area transitions were only based on x and y, so throwing z into the mix messed those up hardcore.

Once I got past all that, I decided to tackle swimming!

image

Talk about a switch. Cliffs took me a few months. Swimming took me, like, a couple days. Even the stuff I thought would be hard (falling off waterfalls, slippery momentum, etc.) ended up being more or less built in to the systems I have, lol, so I basically just wrote a line or two of new code for those. Diving took an extra few days on top of that, mostly just because I went back and forth on how to modify the z.

image

Next came rolling. (You might say we’re on a roll.) This was the first bit I’d copied over from The Waking Cloak project in ages. The Waking Cloak will eventually be built afresh on the ProtoDungeon foundation, but I guess the old code does still have some useful stuff in there!

I did spend an evening converting my mess of move speed/direction/vectors to create a Vector2 struct in 2.3. Structs are a nice breath of Object-Oriented Programming in GameMaker. :) Then I leveraged this so I could easily modify the direction of rolling, jumping, etc. I could have done all this without, but it makes it easier.

“Rolling” in the water will be a dash. Unfortunately, in doing all this, I broke the “slippery” friction on water, which for some reason took me a few days to fix.

Roll cleanup from there involved allowing jumping into a roll and rolling into a jump. For gameplay purposes, these don’t let you jump further or anything, but it adds some usability. Without this, if you press the “roll key” right before landing, nothing happens, and it feels clunky. With this, if you press the roll key while jumping, the character will roll immediately when they hit the ground. It feels really good!

image

I updated the controls to match the new rolling. Space and shift now both trigger rolls for keyboard, and the left face button does so on the gamepad. This also meant I had to update the control remapping settings (which needs a UX overhaul, I’m breaking a couple guidelines here, but no time for that now lol).

Next came the dash. This only took a few days, since it’s basically the same as a roll, just faster (not shown in the video, I sped it up after recording) and with a cool afterimage effect! I had to take a video instead of a gif to capture the full effect (gif framerate is too low, so it’s much more “blinky”). Anyway yeah, click this giant link to watch, lol.

And then I rounded out the month by updating various tiles and sprites. It was pretty tough to get back into the swing of things, art-wise. Thanks to the Studio Spacefarer Discord server, though, I’m pretty happy with the direction things went.

image

Check out the “before” in last month’s newsletter.

Oh, also, on the penultimate day of the month, I felt like taking a quick break from all of everything to install rt-shell, a plugin that lets you do debug commands. My previous debug method was a list of hotkeys. It was pretty limited! The new one is extensible (I can write my own scripts), so it’s gonna be really helpful.

image
gamedev devlog devblog indiedev ProtoDungeon TheWakingCloak pixelart zelda newsletter

Spacefarer Newsletter: July 2020

Another month, another letter delivered right into your very phalanges!

Looking back over my development notes from this July has been pretty encouraging. It’s easy to feel like you’re not getting anywhere, so this is one reason I love keeping logs. This July, I got pretty close to grinding to a halt because I took on too much stuff, and it almost seemed like that’s how the whole month had gone. But no!

So picking up where I left off in June: tile collisions. Tile collision is a much nicer approach to creating walls for the player. It increases game performance and is much less time consuming and irritating to place than collider objects. And these tile collisions work! But they had a weird jitter when colliding that is no bueno. After loads of debugging and conversations with PixelatedPope, we discovered that the collision method was not precise enough to work with tile collision. So I put that change on the backburner.

And then I tackled jumping.

In last month’s newsletter, I talked about how this was all pretty easy to get working. And it was. But there’s another dimension (ha ha) to all this, and it’s the most complicated one: adding a z axis.

Now, many of you are probably familiar with x and y axes. In a 2D game, x is the “width” of the game world, east/west, and y is the “height” of the game world, north/south. The z axis is the “depth” of the game world, up/down. This is actually way easier to represent in 3D games, because 3D requires all three dimensions to be… y’know, 3D.

image

Displaying this z-index in a 2D game is pretty tricky. It’s not like you can just move stuff closer to the camera. That would just look like you’re increasing the size of things. Instead, you use the y-axis to represent the z-axis too. And while that’s a little tricky, it’s not the hardest part. The hardest part is doing this:

image

Essentially to get the depth all working properly (player can walk behind something but then jump on and walk in front of that thing), I had to use an object (you can’t change tile depth). But since I don’t want to make a bespoke object for every single raised platform, this object is a bit more clever. It creates its own sprite by drawing all the tilemaps under it onto a surface and then pulling the sprite from that surface (a surface is basically just a thing you can make GameMaker draw to).

And then you have to get the depth and z and so on set up correctly and blah blah technical stuff. If you’re making a game in GameMaker and you want to get jumping working with the z-axis, go check out this 5-minute video by Matharoo.

Alright, alright, so that’s a big deal, but that’s all the major stuff I should improve on for this episode, right? Don’t want to bite off more than we can chew. And that is where you would be wrong! :D

See, with jumping, we have a problem: the exterior and interiors are drawn at different perspectives. Outside is drawn from the front looking down (you see the fronts of walls), while interiors are like looking down into a box (you see all four walls). This would mean I would have to have two different ways for jumping to work based on whether you’re outside or inside. That’s confusing for everyone.

Currently (well not currently anymore), the interiors follow the classic Zelda perspective. It’s like you’re looking down into a box of a room and can see all four walls. This is so that you can easily see doors on walls, bomb those walls, etc. However, in order for you to see Link and all the enemies and stuff in the rooms and not just have it be the tops of their heads, these are drawn to another perspective, almost like they’re all “laying down” on the ground.

image

This decision was made for a good reason (you can see doors on all walls), but it’s also super weird if you think about it. It also gets complicated when you have multiple “layers” in a room because then you have to do stuff like this:

image

And this is confusing. I had players who were confused. They didn’t really know what layer they were on, whether they were going up or down, etc.

The solution is this: make everything use the same perspective. This unifies the exterior and interior; cuts down on weird walls; reads more clearly for the player; allows for a single, intuitive jumping system; and, I think, is just way nicer to look at.

Before:

image

After:

image

Okay, so yeah, I also have to redraw a buuuunch of tiles. Whee. But it’s for a good cause.

While I was at it, I updated my palette some more. I learned about “hue shifting” in color ranges, and there are a few colors that I’ve felt dissatisfied with for a while anyway. I removed one of the grays, opting instead for a similar light blue that was already part of the palette, then did a similar thing for a dark green. Then I changed some browns to make them a little less heavy and bland.

Drew a new version of the ocean tiles that I’m finally happy with! And I drew all kinds of tiles for a seafarin’ ship which was fun. I drew some waterfall tiles too, and new cliffs (8px and 16px variants). Lots of art to get done, and I’m pleased with how it’s going.

image

As a bit of a break, I did some long overdue optimization. Tall grass was apparently accounting for 11% of each step’s processing power, which is kind of insane. Turns out every single grass object was checking collisions with every single collider and actor object. All I need is to check for tall grass so I can display the “rustling” sprite. So I flipped it around so the actor object was doing the checking, and voila, we gain like 100 FPS. I then went through and set a few different objects to deactivate when they’re not in the current area, as well as triggering the deactivate script when the room is loaded, and suddenly another +100 FPS. Hopefully this will make things run faster for some of you folks on old potato machines.

Near the end of the month, Pixelated Pope got back with me with some fixes for the jittery tile collision. After a few tests, I implemented it in my PD3 project. It took a few attempts (the GMS2 beta was being a bit unstable), but eventually it was working! Shout out to Pixelated Pope for his hard work on this system.

image

And finally, I started to put it all together. This ended up exposing a lot of issues with my system, some of which I still have to resolve. Namely, 1) walking off an edge is too lenient, but if I make it stricter, the player gets stuck the cliff, and 2) my system to draw tiles on my z object does not properly handle tile animation. Oh, and building these cliff objects is painstaking.

BUT.

YEAH THIS DOES WORK. It’s pretty fun clambering around!

image

That’s it for this month! Onward to August!

devlog devblog gamedev indiedev newsletter ProtoDungeon The Waking Cloak

Spacefarer Newsletter: June 2020

Well, month two of this newsletter! We’re still doing this thing!

image

This gif isn’t really related to anything in this newsletter, but I wanted to share this because 1) there will be a few paragraphs without images and I want to provide you with some interesting content, 2) I’m sort of possibly doing more camera rework which you may hear about next month… who knows, and 3) it’s hilarious.

So anyway, yeah, I got a lot done this month. I installed the GameMaker Studio 2.3 beta, created the ProtoDungeon 3 project, and put together the git repository. Of course, I ran into a fair few bugs when transitioning to the 2.3 beta. Namely, the player would always just slide to the right…

After quite a lot of debugging (is my input library working? is there an object on the player pushing the player? are there two players pushing each other?), I discovered that the player was pushing herself. Some stuff had changed behind the scenes that messed with one of my collision checks. Easy to fix though!

Then I fixed up some ancient camera issues that have been around since the dawn of time. The camera was originally created to follow the player with lerp (short for “linear interpolation;” this is what makes the camera move smoothly). This lerp caused all kinds of little visual quirks if I wanted to instantly move the camera anywhere because it was trying to “smooth out” that movement. And it was inflexible too. Well, now I have more control over it; stuff most people probably won’t notice, but it makes things much easier on my end and does actually get rid of those quirks.

As sort of another giant rabbit trail (bear trail?) from starting actual work on Episode 3, I implemented the new floating HUD. I thought I had a ton of code that would be impossible to untangle due to the way the camera compensated for the HUD being at the bottom… but this was surprisingly easy. Now, there’s some rooms that aren’t big enough causing problems, and I’ll have to go through and resize all of them (most of Episode I will be this way). Anyway, super pleased with the new direction on the HUD here.

Before:

image

After:

image

And then the main feature: I worked on the new boots! The boots have a lot of different functions, but I’m trying to get the main one: jumping! This also went much faster than expected. I do have a lot of polish to apply still, but it does work.

image

Fun fact: it’s the same sprite as the ring spell object, and it ends up kinda looking like the Mario jump. I dunno if it’s gonna stay that way… but it’s not bad?

Also, please watch these gifs. I had a lot of funny moments working on jumping.

Lastly, I ran into a tile collision tutorial, so I (perhaps unwisely) chose to convert my collision system to that. It’s much more performant and way easier to change in the workflow, but it will require me to fix a few collision issues I’ve sort of been masking until now. Will this pan out? Who knows.

image

I’m pretty excited at my current pace of development. Of course, I’m not over-optimistic enough to say this episode will be done soon, though. :) 

gamedev indiedev devlog devblog ProtoDungeon the waking cloak studio spacefarer game boy color zelda

Spacefarer Newsletter: May 2020

Hey everyone! I’m trying a new thing. :) Welcome to the first monthly Spacefarer Newsletter. These might get a bit snazzier in the future, but for now, behold:

It’s been a while since I did anything on any gamedev project, so I needed to ease myself back into it.

image

I started by doing some maintenance on StudioSpacefarer.com. I hadn’t ever added ProtoDungeon: Episode II–the change was only in my drafts, lol. So I added that. I did some touch-up on the CSS and some link repair (The Waking Cloak discord has been the Studio Spacefarer discord for some time now). 

image

I also requested access to the GameMaker Studio 2 v2.3 beta. This has a ton of features such as sequences, tags, try/catch logic, and so on that I’ve been really longing for. Lots of stuff that will improve both my workflow and performance of the game. And… at the end of the month, I received access! I have a list of several things I want to get to that will take advantage of these new features, but the main one will be converting my cutscene engine to use sequences. This means the logo, the intro/outro scenes, and even the menu and transition animations! These are currently pretty fragile, so I’d love to make them more solid.

image

I freshened up the Studio Spacefarer Discord server channels with some emoji. Thanks to Mazzymon, a regular and mod, for the suggestions. I also did some other maintenance on links and freshened up bot powers to keep those pesky spammers and meanie heads out.

image

AAAAND…. (drumroll please): I wrapped up level planning for ProtoDungeon: Episode III! This took a lot more time than expected (as usual, lol). This hasn’t been the most creatively fertile times… lots of stress with the whole coronavirus deal, taking care of family, etc. Also Episode III is larger than the first two episodes, and I daresay I’ve put lots more effort into this one too. I’m pretty proud of it. It’s closer to my final vision for The Waking Cloak’s level design, at least for a single self-contained level (whereas TWC will have a lot more interconnection between areas).

After that, I moved on to enemy design. I’ve got two bad guys planned for this episode, not including the boss or passive traps. There might be room for one more enemy, but there’s already enough going on that I’ll probably keep the scope down here. :)

And there you have it! May!

gamedev indiedev devlog protodungeon the waking cloak studio spacefarer gamemaker