Another big post! Really disjointed though..

And some art talk. Lots of variety!

Welp.

I haven’t written a blog in a little while now! Four and a half months I think! The game’s kind of been on pause for a bit! Apologies!

I’d like to write a bit more about my life, but I’ll keep that for after the fun game stuff. It’s kind of venty! Last blog I touched on changing the cat character’s (Paprika’s) design + sprite. I’ve pushed that further!

I’m pretty happy with this being her final design. I may change her fur colors, because I always default to “yellow-furred mammal” with designs, but still! She’s pointy and funny and awesome. I struggle to draw her consistently but I’m not making an animation or comic or something, I’ll just have to do textbox sprites and promo art, so it’ll probably be fine if I just throw bad doodles at the wall til I get something good (my drawing process is mostly this). The bell staff is bronze and purple, and belongs to her friend Parse and his cosplay as some JRPG character.


He’s gonna be there! In the game! Being really annoying and mean!

That’s it for art though! Next, we’re onto the worst technical thing ever (actually not the most technical thing in this post though): switching engines. Imagine that was in evil drippy text. I mentioned in the last blog post that I need to switch to Gamemaker’s new version, and apparently I bought a license key when it went on sale in like 2020. Original Gamemaker Studio (version 1.4) can’t export to Mac anymore thanks to some changes Apple made to allowed programs, and the controller support isn’t very good. The problem is that Gamemaker 2 (I think just branded to Gamemaker now?) kind of sucks. I’ve whined about this on Twitter before, I’ve whined to friends, it’s just awful. Windows aren’t stackable so you have to scroll around an endless workspace, code is harder to organize now since they removed storing individual chunks of code in drag-and-drop nodes, and the program’s memory usage is kind of insane. Like horrible insane. I have a reasonably good PC, and the amount of slowdown in it is incredible. I’ve never really seen an engine get ruined so badly.

I shake my fist at Opera.
So after about a week of porting things and working in GMS2, I ended up transporting it BACK to GMS1. I’m not kidding. You can’t port GMS2 projects to GMS1 like you can vice-versa, so I just kept copy-pasting code over one object/script/etc at a time. It was a tedious experience, but I can work a lot faster in GMS1. Like a lot faster. Did you know to delete individual objects in GMS2’s room editor, you have to select and hit the delete key? Versus GMS1 where you just hold shift and drag right click over anything you want gone. Miserable.
So I guess my plan is to either just port the game over to GMS2 last minute and fix all the weird issues, or just limit the release to Windows. I’m not gonna be doing a console release or anything, so it’s just a Mac release that I’m worrying about.

Apparently I mentioned in the last blog post that one of my goals was to set up an input detection system instead of checking individual keys, and I did get that working. When I put it in GMS2 it did fully work with any controller, even if it doesn’t now that it’s back in GMS1. Maybe Steam Input will help! Maybe I’ll port it back to 2 for the controller support! Who knows! But I did get basic controller support and consistent inputs working.

I did set up a basic playground for players to test the movement in, but then I scrapped the whole movement system. The original system was this weird “airslash -> dive forwards” setup, but I decided I want it to be more based around using your weapon like a whip, instead of careening yourself forwards midair. I’ll figure out a good middle ground, but I like what I have so far. I don’t have any not-outdated MSPaint documents explaining the movement system, so I’ll just explain it:
You throw out your bell like a whip. If it catches anything, it’ll pull it towards you or you towards it. If not, you can maybe jump out of the whip animation or something. Simple! There was a more Zelda-like GBC styled game with a tool like this, but I can’t remember the name… I think the whip movement lends itself pretty well to unique interactions for platforming.

Targeting is kind of weird still, and I think it’s a bit too forgiving, but here it is. If you ready your whip in the air, you get a little bit of hangtime before throwing it out. Bouncing off something (or landing on the ground) will give you another whip use. Right now I just have bubbles and a dummy grapplable parent object, but it’s basically all set up. Surprisingly simple compared to how overcomplicated that whole sword mechanic was! And people aren’t gonna be confused why a sword can’t hurt enemies.

There were some horrifying scary difficult aspects to getting the whip to work properly though. With single spaced apart targets everything worked fine, but what about when there were multiple in a row? The way GM runs its built in collision_line function, it just picks the highest priority instance in the line, which is the first placed, I think. GMS2 has a version that returns a list of all instances that are in the line being tested, but GMS1 doesn’t have that. It was overcomplicated to do that from scratch (I’m not a great programmer), but eventually I did get it working. The game would send out like 5 different lines to check (for more forgiveness in targeting), sort the list of everything in your sightline by closeness to you, and would pick a target only if it fit requirements, like if you were high up enough and stuff like that.

(Here’s a picture of the lines) (I probably don’t need this many)

And it worked! It would always prioritize the closest instance, it was awesome. Until I started getting memory leaks. In case you didn’t know, I’m not a great programmer. I was using a list data structure (single line of data, you can insert more data or take data from anywhere in the line) to return collision line instances, and ended up creating a new useless list every time the collision line function ran. And I had no idea how to fix it. It was returning the temporary list, so I couldn’t destroy it til after it was returned and that’s not possible. I honestly could’ve fixed it in a different way, but I was so terrified of memory leaks that I just settled on converting the entire thing to use arrays instead of lists. Which somehow took even longer than setting up the whole line list sorting stuff. Oh my god. It was evil. Arrays are evil. GMS2 has a ton of extra array-related functions, but GMS1 does not. At one point during this conversion I somehow broke the targeting system too? I have no idea how. I just messed with it til it worked again. I don’t know how I fixed it. I did not have a fun time writing functions for inserting values into arrays and sorting arrays’ objects by distance… I complained about my broken sorting script I’d desperately written from scratch, and she wrote out a bubble sorting algorithm in like 2 minutes and I stuck it into the engine and it worked perfectly. The relief was insane. It was so funny.

Along with the whip system, I also (finally) set up an animation state system. No more screen-filling if statements! Not a super long explainable thing, just nice that I just set an ANIMstate variable to like “jump” or “ground” or “whip out” or et cetera.

Other than that, the last thing I did (it was actually before any of this other stuff), was set up a palette swapping system! Most palette-swapping shaders made for GM are really not what I want, since they’re set up more for limiting the screen’s colors, or were just too complicated for me. LOL. So I really pushed myself to figure this one out (I have no shader/GLSL experience), and ended up with a system set up pretty great for me! I make my sprites black and white, and the script specifically picks out gray, white, and blue (instead of black), and replaces each of those with a color from a three-tone-palette set up on launch.

The set of palettes is stored inside a sprite file I can easily access and change! If I want to create a new palette, I just go into the script handling palette setup, add a new value and assign it a y-pixel position in this palette sprite! The game just runs through and creates palettes from individual pixels of this sprite at the start of the game. It’s great. Defines individual colors too, since the game’s idea of “white” is really a yellow, but instead of changing RGB values I just change the colors in this image. It’s perfect for me!

The last thing is fairly related. Up til the GMS2 port, if I wanted to set an object to display as entirely one color (say, display the checkpoint bell sprite as pure white when hit) -



- I would use this feature called d3d_set_fog, which is usually for setting the distance fog in GM’s primitive 3D mode, because if it was set back to “off” after something is drawn, just that sprite would be colored entirely in the color the fog is set to. Weird! But in GMS2 this didn’t work anymore, and if I do plan on porting the project to GMS2 again, I can’t keep using that. So I set up an easy replacement shader that actually kept breaking for some reason. I hate to say this, but I don’t remember how I fixed it. I just replaced stuff a few times and it worked. But now I have that working too!

I have no idea when the project will start moving a lot faster, but for now I just want to get fun movement that can be built on in a lot of ways.

I have this set of level color-sets, and my idea for the first level is pretty concrete, but some ideas are gone now thanks to the sword being gone. Screws can’t be drilled anymore since there isn’t a spin… so sad…

And that's it for Spin Crypt! (can I still keep the name with no spinning...?)

I’m at a very weird point in my life, but at the same time I think this is just a consistent aspect that isn’t really new, and isn’t really going anywhere; I struggle a lot with a lot of different problems, and I usually avoid sharing those on social media because it feels like you’re going insane saying you’re depressed on a Twitter page, you either have radio silence or people you don’t know asking how you’re doing. Insecurity and depression are very big issues for me! It’s very easy for me to fall into a pit where I feel like my work doesn’t matter. This is probably more of an issue since I don’t pursue any other major things in life, art + gamedev are my whole thing. I draw and draw and draw but I never end up feeling like my work matters or like anyone will really care that much.
I revolve around wanting to impress people, and it’s felt harder and harder to impress now. It’s just been like I’m defined by my mediocrity, and I don’t know how to ever escape that and actually do something standout good. I had to put a pause on my commission work, and had to just drop digital art for a bit. I’ve been just filling a sketchbook for the last month or so. Even then though, it’s been kind of hellish. I don’t know where any problems start and where they end, I don’t know if it starts with my art or with other insecurities and it’s like I’m just falling all the time.
I usually have gamedev to escape to but I got really insecure about this project for a few months and stopped touching it until May. It feels like I don’t even count as an artist anymore sometimes. I want to be putting out work so badly but I can’t! I just can’t anymore. I can’t draw consistently and that’s a really huge problem. I can’t consciously make changes or improve.

I thumbnailed out a 12-ish page long comic waaaay back at the beginning of the year, about my characters Moby and Zoey, about them discussing their species and fur colors. I think it was pretty solid, but then I changed their designs after getting stuck on lining. I’m not good at lining if the sketch is too detailed. I do good at drawing small, and lining usually means I’m drawing BIG!



I ended up deciding to redo a lot of it. My thumbnail sketches were supposed to just be thumbnails but I ended up detailing them just enough where they didn’t work as sketches, but they also were too specific to just follow them as guidelines. I’ll probably have to redo the sketches. I also changed Moby and Zoey’s designs a lot. I was already pretty fine with Moby’s design but ended up making him look like the epic face, which is pretty awesome.

I always got stuck on giving Zoey this massive long legs, but I have paper art of her now and she has silly stubby legs and is just cartoonishly large. It’s more fun now. Hopefully I can still get this out. I really want to be making stuff all the time.

I wanted it to take place in the beach area I grew up in but don’t live near anymore, but the more I’ve thought about it the more I’ve realized how limiting it is to write in a realistic setting for me. It doesn’t feel amazing! So I ended up diving through Google Maps and I’ve taken a lot of inspiration street-view screenshots of small coastal communities. I ended up visiting the small chunk of beach from near I grew up that I was going to draw them in, and ended up rethinking the comic’s exact location too.
I’m really challenging myself to think less realistically, and base less stuff off stuff I’ve seen.

I drew this background to a test panel...



Then visited the area I was inspired by a few months later.
I was bored with the original backdrop because sticking to realism that much is booooring! Boring!


(mouse drawings)

I feel weird discussing, like, my actual artistic intentions and inspirations and stuff because this project isn’t really anywhere close to done despite being so small. I went to VanCAF and was very inspired. I want to be making art again really badly, but I’m still kind of trapped in inspiration/ability/confidence hell.

I'd also like to share some random sketcbook excerpts.

Thank you again to anyone reading my blog :) I wanted to share my struggle and et cetera because it's been a while since the last post, and it feels weird keeping it all quiet. It's weird! Thank you for reading, I'll try to make an update sooner than in 4 months next time!