Avatar

The Waking Cloak Devblog

@thewakingcloak / www.thewakingcloak.com

Avatar

Intermission

The Ghost of Spacefarer Future is working very hard on his speech and has informed me that he needs more time.

SO!

I thought I'd give y'all an update on the things while that's going on. I've been making great progress on ProtoDungeon: Episode III and wanted to share what has been accomplished:

  • Fixed an issue where the player would get stuck in the walk state after getting a key or item
  • Updated the app name on Steam from "ProtoDungeon DX" to "ProtoDungeon: Episode III"
  • Fixed a box that could not be pushed (turns out it was embedded in a rock face)
  • Prevented a key from floating on the water when it should not float on the water
  • Fixed dash state having no way out except to slam into a wall
  • Fixed rotational checks when using a joystick to move
  • Settled on a new tall grass sprite/tile and will include it in the game soon
  • Switched to GameMaker's new(ish) built-in tile collision instead of my previous cobbled-together, extra-janky tile collision script
  • Implemented GameMaker's new fullscreen borderless mode and included it as a display setting, meaning people can now choose between real fullscreen and real borderless fullscreen (or the other smaller resolutions of course), instead of my cobbled-together, extra-janky window positioning shenanigans

Lots of detail and polishing work! Most of what's happening right now is playing through the game over and over, noting any roadblocks or bugs, logging them, and fixing them. Also, while the game is not yet feature-complete, I've started trailer planning, meaning I'm identifying everything that needs to be done so I can create a trailer. Excited about that.

Thanks as always for following along! I'm going to go see if ol' Future Ghost fell asleep.

Avatar

The State of Things Present

this post was available for patrons a week early! please consider supporting me over on patreon!

I kept trying to make this post fancier and better and more engaging, and then I realized I was doing that thing where I make myself too overwhelmed to actually finish and post it. The other thing was I kept gunning for a once-a-week posting, and uh… yeah that's not sustainable. So here we go!

The Ghost of Spacefarer Present appears before you He whispers, very quietly, yet in a voice that resonates: "Time to resurrect the Spacefarer"

Ok so the spacefarer (me??) was very tired, but he's awake now and doing things!

Life status

We moved! My wife and kids and I packed up and headed some miles south of our previous house. It was a risk for sure. We didn't know how things would pan out. We really needed to get away from our old environment, our old town, our old house. We loved that house, and we'd said so to each other many times even as we were halfheartedly searching for a new one. But at some point that house had become too burdened with bad memories and traumas, not to mention that after the pandemic, we had no more real roots there. Everyone had moved away, the communities we were involved with had disbanded or changed. And anyway, my wife would be starting a new teaching job down south.

We were fortunate enough to find a new house we loved, and fortunate enough to be in a position where we could actually make the move. I'm aware this is a privilege, given the economy and the market, and so I can only express my thankfulness and consider it a blessing, especially as we healed through our grief.

I have an improved office now! This is where I work on my day job (software/web dev) and my unday job (Studio Spacefarer). With my genetics stacked against me, but also with my desire to be able to keep up with my kids and be there for my family, I collected a standing desk, a walking pad treadmill thing, and an ergonomic keyboard. I'm walking or at least standing most of the day now, which has made a surprising difference already.

I was gonna post a wider view of the office, but my 3yo son ran up while I was taking pictures and started "working" (mashing the keypad), so this is automatically the better pic. Them's the rules.

Anyway, in short, we made it, and it hasn't been a smooth ride the entire time, but it has been well worth it. I've been able to get back into gamedev, which has been a huge boon to my mental health too.

Speaking of… (ghostly drumroll)

Game status!

The good stuff. Here's where I'm at presently with Episode III!

  • The game is completable from start to end (definitely NOT feature complete)
  • Jumping, swimming, and dashing all work like a charm and are super fun
  • Three enemy types have been added, including custom A* pathfinding for the sea monster
  • Two new collection mechanics (one is heart containers, the other will be a small surprise)
  • Depth sorting and fake-3D, as mentioned previously, which lets me do lots of fun effects
  • Day/night are now on a new system, and cave darkness is now a thing (I tried to implement this in PD2 but couldn't figure it out)
  • Palette swapping for night and lighting effects now uses GameMaker's built in layer effects
  • Much of the game is now decorated
  • Updated the game's palette to be more pleasing
  • Better borderless windowed mode, frame toggling, etc. (I'd made a post about a third party plugin I used to do this previously, but not long after that, GameMaker added an official setting to be toggleable at runtime, so I switched to that… much easier lol)
  • New audio library which has been a MASSIVE boon (Juju's Vinyl)
  • New flexible debug/inspector mode which allows me to change values on the fly more easily
  • State machine rewrite using structs instead of data structures--extremely flexible and less  error-prone (in fact the data structures here were the #1 cause of crashes in Episodes I and II)
  • Save system rewrite, also using structs instead of data structures (thus fixing the #2 cause of crashes in the first two episodes)
  • Adjusted the way walls get displayed in interiors--will make a post on this later
  • Lots and lots and lots and lots of bug fixes

Post end status!

I'm not exactly sure how to wrap this up lol, but y'all can be encouraging me, if you have the emotional space to do so! There's still a lot left to do on PD3, and it can be very daunting at times.

Next post up will be looking forward to the future of Studio Spacefarer. I'm very excited about this! Keep an eye out!

Avatar

The State of Things Past

this post is mirrored from the Studio Spacefarer Patreon! please consider supporting me, and you’ll get access to devlog posts, gifs, and other info before the public!

Like I mentioned in my previous post, The Waking Cloak has been in development for eight years.

ProtoDungeon: Episode III has itself been in development for a few years, pretty much since 2019 (oooof). I've gotten plenty of questions about how the project is coming, as well as the occasional question of whether The Waking Cloak / ProtoDungeon is even alive at all at this point. Thank you for asking this. It means people are still interested in these games.

Okay, but still, what happened? Why are things taking so long? Well, this post is the first in the Christmas Carol series, in which the ~Ghost of Spacefarer Past~ appears to explain things (wooo spooky explanation sounds).

Progress has been made, very slowly, on ProtoDungeon: Episode III. I'd love to have done more, but, well… in the time since I released Episode II, we continued adjusting to parenthood for our first kid, went through the pandemic, had a second baby (who is now almost 3yo), and survived through a series of really difficult events, which culminated in a move to a new house in a new town and the start of a new chapter (but that last bit we'll save that for the Ghost of Christmas Present so he feels useful).

But yeah, it's been a rough ride. My wife and I are intentionally open about what's been going on. At the same time, the internet is an extremely public place, and I don't want to overshare, or worse, trigger anything for anyone, so I'll try to keep this list brief:

  • Two miscarriages (the first one was late term, and absolutely, brutally devastating)
  • The loss of our faith community due to the pandemic
  • Loss of job for my wife due to the pandemic (the pandemic was unkind to teachers)
  • Loss of a dream job prospect for my wife (same issue)
  • The great Texas freeze and power outage (us huddling under blankets in shifts through the night with our newborn infant (he's fine now!))
  • Severe, life-threatening post-partum and post-natal depression
  • Family covid and two-week cabin-fever quarantines (twice, despite being vaccinated and careful)
  • The death of my grandma (we were not able to attend her memorial due to aforementioned covid and living on the other side of the country)
  • Multiple heart attacks for my father despite his active and healthy lifestyle
  • Autoimmune disease scare for my wife (may still be a thing, just dormant?)
  • etc., etc., ad infinitum.

A lot of people have had things significantly worse, so this is definitely not an attempt to "compare griefs" as it were. This is just context for, no matter how much I wanted it to be otherwise, the fact that I didn't have the mental or emotional (or temporal) space for creativity. It was one thing after another, and we were just trying to keep our heads above water.

Even when we'd mostly recovered from the hits that just kept comin', we moved away from what my wife lovingly refers to as the "trauma house", and she started a teaching job at a brand-new school. Both were good things, but they were pretty big transitions, and it takes time for the ol' brains to adjust. We love our new home now and have a bit more breathing room.

Okay but also I HAVE been working on ProtoDungeon. Dev was really sporadic, but it did happen. The next post will have more detail on the status of Episode III, but there were kind of two big things I worked on during the past three years, big shifts in the foundation of ProtoDungeon and The Waking Cloak.

First, I switched game perspective. I made a few posts about this a while back, but PD/TWC interiors were originally like Zelda interiors (where you see the insides of all four walls). There are good reasons to do this, but it was also kinda making me crazy. So I switched to a more natural front-perspective, keeping things consistent with the exteriors. It definitely was the right choice for the game I wanted to build, but it took time.

Second, and building on that, I made the game fully faux-3D. You can walk behind or in front of stuff--not something the old Zelda games did, and still pretty rare for 2D games. I was toying with the idea for a long time, but I played through an old PlayStation title, Alundra, and that convinced me it could be done. It's way harder than you might expect, and it was a massive block for me for literally years. I was able to slowly work my way past it and finally resolved it with a 3D z-tilting method, but dev slowed to a crawl.

And that's it for now! The ghost releases you from your vision of Spacefarer Past….

Thanks for reading :)

Avatar

2023: 8 Years and a Christmas Carol Devlog

this post is mirrored from the Studio Spacefarer Patreon! please consider supporting me, and you'll get access to devlog posts, gifs, and other info before the public!

Well y'all, I've been working on The Waking Cloak (and, by association, ProtoDungeon) since 2015.

Eight years.

Eight is a pretty terrifying number of years. I naively expected this do be done in maybe a few years max, so when Tumblr (the first place I started posting back in 2016) informed me was turning seven, it was quite the disorienting revelation.

I had to reprocess a lot of the emotions about how it feels to be a solo hobbyist dev, with others who are more well-funded or just with more staff and time "passing me by." Some beautiful games have come out in The Waking Cloak's genre, and are still coming out--Tunic, Death's Door, Mina the Hollower, to name a few.

That may be something that always stays with me (this definitely isn't the first post I've had with this sentiment haha). Still, I'm learning to reframe, re-teaching myself to be thankful, and actually really enjoying these other offerings folks are making. A friend of mine reminded me of the two cakes philosophy. As a developer, I see other games initially as something that will drown out my own offerings. But players will just see more games in the style they enjoy--more cakes.

All that aside, I've been really excited about where I'm going to take Studio Spacefarer next. I've been working on ProtoDungeon: Episode III behind the scenes more and more consistently (which means The Waking Cloak is getting its foundation of course). And I've got some upcoming announcements for y'all that I think you'll really like. So what's on the way? Gonna do this Christmas Carol ghost style:

  • The State of Things Past: Where development has been at, why it's taking so long, life status update, etc.
  • The State of Things Present: What's happening now, ProtoDungeon: Episode III stuff
  • The State of Things Yet to Come: This'll be the fun one--plans for 2024 and beyond for Studio Spacefarer, The Waking Cloak, and ProtoDungeon!

I'm hoping to be more consistent here on out. No promises--this IS a hobby--but I do have a plan too.

Until next time. :)

Avatar

Thanks beyond thanks for the reply - you'll definitely get credit (or at least a big tip if i can ever finish this project and get it out there), because you're among those I've learned from, and coming from a position of zero education and no modern programming knowledge, I can assure you: it's been difficult to piece together an education in game design with an improvised curriculum, so every little bit helps. While most people who get into this come from a programming background end up needing assistance with the art and music ends, I'm coming at it from the opposite side of the spectrum: I've been composing, recording, and engineering music since the magnetic tape era and doing digital design/animation for just as long, so it's just the coding I have to really apply myself to and make myself learn. I won't lie: it's been frustrating, trying to figure it all out by reading manuals and various youtube videos, reddit threads, and yoyo forums because while I'm able to learn the functionality of the code easily enough and there are a lot of helpful resources out there in that respect, context is everything and it can be maddening, trying to figure out how to apply what I've learned in useful or practical ways. For example, I've figured out enough to know that data structure grids can probably help me overcome my current problem with collisions (like you, I began building my 2.5d environment from that exact Matharoo video and even managed to write a pretty decent place-meeting-3d script from the ground up... until, like you, I hit my current impasse of being unable to figure out how to handle multiple collisions at once... but, unlike you, every alteration i make to my code only creates more problems), but while I understand how ds grids work, I can't figure out the proper context in which to apply them as a solution to my collision problem. So, I'm giving up and resorting to reverse engineering - when it comes to a lot of things, I can usually figure stuff out if i can just see it working under the hood, so i hope that's true for ds_grid collision implementation. I'm telling you this because I downloaded your suite of 3d scripts and intend to try and figure out how to implement them, working backward. I honestly don't mean to steal all your work, as you've been more than generous in helping people like me by sharing it in the first place, but it's hard to resist using it as a basis for my education because the physics of your project and your design process and ideas (like self-skinning objects) are so similar to mine. I can assure you, though: I won't be simply copying and pasting your functions, because I have no idea how to use them or from where to run them... it'll be trial and error (already, in trying to structure a Shaun Spaulding-style collision code (might as well start with what i know and see what works!) using your version of place_meeting_3d, I immediately encountered a "variable not defined" error in the instance-place-3d script it calls... maybe because I'm substituting noone for null, which is a variable gm doesn't appear to recognize, or maybe not... this is gonna be fun). At any rate... thank you. Sooner or later, I'll get past the physics and into the familiar territory of writing, drawing, and composing... but without your scripts, who knows how long that would take me! Shoulda gone to college... oh well.

Avatar

You're welcome, anytime! Gamedev is such a multidisciplinary thing that it's a LOT to try to do all at once, whether you're coming from a programmer position and aren't good at art, or an artist who doesn't know programming yet. College helps with foundational stuff, but what you're doing (researching and learning yourself and putting it into action) is a pretty powerful method and will carry you a long way

You're right, null is a macro I created to stand for noone. Hard to break my day job coding habits haha. It sounds like you're somewhat familiar with the debugger, but I highly, highly recommend learning it more (especially breakpoints and such) for figuring out stuff like "variable not defined". The GameMaker debugger can be a little misleading at times, but it's so much easier than all the guesswork. It's improving a lot in the latest updates too!

It's been a while since I've looked at my 3D collision stuff in depth (it kind of scares me now lol), but yeah, learning how the ds_list stuff works should help. It's basically just (if I remember correctly) grabbing a list of things the object is colliding with, and then checking whether or not they match up on the z axis. I don't want to necessarily say "collide" because it's not using the built-in GM functions for z-axis collisions, but it's checking the z position, height, and seeing if either intersect.

So basically: get a list of collisions on the normal x, y coordinates as a ds_list, then loop through the list and check for intersection on the z axis. If so, there's a 3D collision!

Gamedev is no joke, but you've got the right approach and you're making great strides, keep it up!

Avatar

Um... wow. You know that thing they say about how writing something down in detail can sometimes trigger a revelation? Within an hour of sending you that question, I fixed the problem: as I suspected, your script is perfect and does exactly what I needed it to do(and you'll be credited for it, I assure you!). After weeks of frustration and checking/doublechecking every bit of code and documentation, it suddenly occurred to me: what if GMS2's error reporting is misleading the direction of my troubleshooting? What if the error messages I keep getting are entirely arbitrary and not in any way related to the issue, even though they must be related in some way to the script (since it's the only script I'm using so far to utilize those layer functions)? What if the problem and the error messages represent an example of correlation devoid of causation, but I overlooked that possibility because the two began to appear at the same time? Well... yeah, that was it. Once I began to consider that possibility, I started going through related code and ended up slapping myself on the forehead rather roughly: I had forgotten that sprites created from surfaces aren't automatically drawn by the instances that create and assume them, and therefore neglected to specifically instruct the instance using draw_sprite. Once I did that, evrything worked brilliantly... such a simple solution. The debug report continues to throw those errors at me, and I have no idea why.... but my z-height objects are now skinning themselves as intended, so... thanks for the great code! Here's hoping this bizarre pair of messages from me will, at least, provoke a laugh... and I'm still looking forward to The Waking Cloak. cheers!

Avatar

So glad you were able to figure it out and that everything is working! You've probably heard this before, but software engineering calls that "rubber duck debugging", as in explaining your problem to a rubber duck usually helps you figure out the issue. I'm always happy to be a rubber duck lol

And yeah those layer error messages are weird. I think they're just noise. I tried to resolve them back then but at this point I don't even think about them anymore lol. Might be able to solve with a try/catch, except it's not actually throwing an exception. They don't seem to cause any issues either way!

Oh and don't feel like you need to give me credit for a script. Happy to share 😁

Avatar
reblogged

I'm in the early enough stages that I'm honestly not even sure who the main character is (other than that they will be a chicken of some sort) I think a lot of stories start character-first, so as a person who generally values characters over story, it's kinda funky that this ended up being a setting/story-first project lol (although I technically designed some random characters first, but idk if that counts if I wasn't really planning anything at the time?) anyway, that being said, "silent protagonist, y/n?" is something to consider. I remember I used to not like them as a self-insert device, but the concept kinda grew on me.  I do have a soft spot for the literal version (as in, character is literally perceived as mute), since difficulty in communication is always gonna be relatable for me So I think I'm leaning towards a silent protag, but the next decision is self-insert vehicle silence, or literal silence?

This is the kind of thing that's really fun to think about in gamedev. I made Tav literally silent for similar reasons. I started out talking about the self-insert aspect of Link, but what I really related to when I was a kid playing Zelda was the fact that Link didn't communicate much, or could be very easily misunderstood.

There's something about the comparison between the blowhard jerk taking all the credit vs the silent person working hard behind the scenes and not getting any credit at all. That's what I'm doing in TWC for sure!

Anyway, I'm definitely interested to see what you decide for yours!

Avatar

update de palette!

Finally got around to updating the browns on my palette. Bit of desaturation, bit of red hue, removal of the sour greenish-yellowish-tan color which I've always hated...

This is at least the fifteenth update to this palette, which I've been working on for pretty much six years now

Left is old, right is new. Check out the shipwreck, the tree trunks, and the dark sand! I was even able to get rid of a pointless mid-brown hue!

Avatar

In order to do borderless windowed, I had to turn off the normal window frame. Yellowafterlife came up with a plugin that adds the frame back, so now you can play windowed and actually move the window around, or even play with it "maximized" with a black background. "Fullscreen" borderless windowed still works of course.

Not the most exciting update ever, but I'm getting back into the swing of things. 🙂

Avatar

I think I'm finally ready to start being creative again. We had a very rough year with a lot of loss and grief, and I've been blocked for so long.

Hopefully y'all will be able to start seeing ProtoDungeon and The Waking Cloak stuff again soon ♥️

Avatar

What's up everyone? I hope your year has been a good one, and many blessings to you for this new year. ❤️

My family has gone through a lot this year with loss, grief, hospitalizations. I haven't been around much and haven't worked much on my gamedev. I had a lot of plans for 2022 and accomplished almost none of them, and I have been processing that as well.

The good news is my family is healing. I'm on meds now, and going to regular therapy and trying overall to do better for my mental health.

Given that the bird site is basically imploding, I'd like to move back here to Tumblr as my main base of operations. Y'all were where I started, and I like the vibe of this place. My hope for 2023 is, though I'm backing off social media as a whole, I'll be posting gamedev stuff here more regularly as well as over on Mastodon:

To start, here's the new logo I made for Studio Spacefarer, my solo hobbyist gamedev self!

I'd like to close with loving memory to our baby Wren. We didn't get to meet you in this life. I hope we'll meet again in the next. Love, Daddy.

Avatar

Hi there, if you're able to answer it I have a question about your z-height method. I've adopted your system into my game and am drawing the 3D platforms using tiles, not sprites - the z-height objects are being placed over tilemaps. Will this work with your method and depth sorting (z-tilt) or will I have to convert every platform to a sprite instead of using tilemaps? Just wondering what's going on in your game. Thanks so much in advance!

Avatar

It really depends! For moveable objects (blocks, etc) or decorations (trees, etc) it's a tilted sprite on an asset layer, or an object with a tilted sprite. For the most part I've got tile layers though, all set to specific depths that match the height they're at. My main ground layer is -96, and a cliff of "16px above" that would be another layer at -112. The sprite asset layers also have depths set similarly. Hopefully that makes sense!

You are using an unsupported browser and things might not work as intended. Please make sure you're using the latest version of Chrome, Firefox, Safari, or Edge.