Hey y’all. Welcome to the time of emails.
I’ve been listening to a lot of Nightjars recently — Modjeska1 is an eternal favorite album of mine. It’s about (among other things) queerness, growing up with a thing-inside-you-that-you-can’t-ever-really-name, and leaving things behind whether you want to or not. It’s melancholy in a way that fits the present moment well. I really recommend checking it out:
Favorite tracks: Bird in the Nighttime, Genesis, Camp Pendleton.
This past week I’ve been doing a lot of playtesting for FISH FEAR ME in preparation for the big demo! Just two weeks away if all goes well. I’m running as far as I can with content right now: the first two or three hours of the game may be playable, but what about the next two or three? There are six unlockable boats and thirteen weapons, but it really should be eight boats and twenty weapons, and a few more secret fish, and lure quests still need implementing,2 and… You get the idea.
The unlock system went through a lot of backend iterations, of:
Boats need to be unlocked, so let’s write the unlock conditions in the boat select menu.
Wait, no, we also need to reference that data elsewhere and writing it twice is hazardous. Let’s put it in the boats themselves.
Ugh, it’s really annoying to have to select every boat individually to see what its unlock conditions are. What if the RoundManager (giant gameobject that holds all game data) had a special BoatUnlock struct?
Wait, I need to be able to unlock weapons too. And probably more stuff later. What if there’s just an UnlockCondition struct that can be tied to any object?
Great, so now I have an array of boats, an array of BoatUnlocks (which are each just a reference to a Boat and an UnlockCondition), and every WeaponInfo has an UnlockCondition and an unlockedByDefault variable.
But why do I need both a Boats array and a BoatUnlocks array? The only boat that never gets an unlock is the first boat. So I should get rid of the Boats array and accept that BoatUnlocks will have a null unlock for one boat.
The way it’s checking the unlock conditions is also pretty slick (I set it up so I can have it reference any variable being tracked in the backend, including stuff like “how long is the longest fish of this species that’s been caught” and “how many days has the player survived in this boat”) — it’s really powerful as long as I triple-check for typos because it’s all string-passing lmao. Remind me next week to tell you about how I accidentally made all these big important functions run on negative-one-indexed arrays…
There’s less than two weeks to demo launch now and I… might actually be ahead of schedule? I still have a ton to do, but it’s, like, four days of work when I’ve got seven remaining.3 It’s a good place to be.
Y’all had a lot to say on this topic! If you missed it, I recommend checking out the previous newsletter for context. Here’s a few quotes I found to be resonant (emphasis mine):
Princess Pengy: […] that's the thing about the internet and social structures, right—an audience is not a social group. that's just people who occasionally see your name in their notification feeds. the things folks living on the online truly need is community and people devoted to you and the things you do, and that's the kind of bond that transcends shitty decisions made by billionaires. that's what determines who's going to pay attention when you announce that you need to switch platforms, who's going to actually connect with the things you put out there, and who's going to pull through for you when structures crumble. cuz cockroaches can't really thrive in isolation, right? they're social creatures. we are too, and just because we have all this distance between us doesn't change that. and as long as we remain social creatures and maintain that desire to connect with people who provoke emotion within us, I think creators are gonna be alright.
Clarity Flowers: I think people often get really caught up on the “audience” as a commodity: if the follower count goes up, that means you’re winning. But being in the music scene makes it pretty clear that there are “people who listen to your stuff on spotify” and “people who buy your music on bandcamp” and “people who go to your shows” and “people who like your hot takes on twitter" and none of these are necessarily the same people and some are much more valuable to be cultivating.
gotyaoi: Off the grid games selling: getting out the cd burner and infiltrating a scholastic book fair.
Shel: Year of cockroach: Time to sneak around and be smelly.
Of note: when I was replying to that last email, I was given the following auto-response options:
I’m currently writing this twelve hours after Cohost went read-only. I’d rather not dissect my own feelings in front of an audience — lord knows I’ve done too much of that in my life — so instead I’ll ask this. What are you most looking forward to in the coming weeks? What are you trying to bring forward with you? What challenges await you as you try?
Let me know what you think! Same as before, I’ll collect some of your answers and put ‘em in the next newsletter. See you next week!
— Heather
P.S. Personally I’ve been getting into having an RSS reader. It doesn’t scratch exactly the same itch, but I’m trying to lean into the discomfort. I’ve also been getting really into doing the dishes lately, which comes with its own set of challenges (dirty dishes) and delights (clean dishes).
Extreme HTHRFLWRS knowers will recognize the first track on the album, 17, from the credits sequence of Genderwrecked. ↩
Update: Lure quests have now been implemented! It took about half a day, and most of that was spent trying to be good enough at the game to confirm that they worked. ↩
I do four-day workweeks because I make my own schedule and if I try to do five days I literally lose my mind. ↩
Want to respond to the discussion questions? Email me at heatherflowersbusiness@gmail.com!