Home Artists Posts Import Register

Content

Hey there, folks. I've been very busy working on the game but am taking a quick break to give the second July status update while it's still, y'know, July.

I'll come back to that in a sec, but first let's talk about this update's cover image.

New Main Menu

Each new release brings with it a new menu screen, and so too will The Morning After Update. I originally shared a totally different version of the menu background. It looked like this:

This followed the format of most of the previous releases' menus, but between the patterned background and number of guys, it just looked so busy. It also wasn't giving the "first thing in the morning" vibe I wanted.

Over the past year or so I've started doing more and more promo pics for the game that have a single color or gradient background. I'm going to keep heading in that direction, and that decision combined with choosing to only feature Connor birthed the final menu image. I also adjusted the layout, added some detail to the logo to make it pop, and created a new hover effect for when you mouse over an option.

I have a few ideas to make it even more dynamic, but I'm not sure if I'll be able to pull it off, so I'll keep that a secret for now...

I hope you like it! Now, moving on...

Where's the Dev Build?

I'm still diligently working away and am getting closer to finishing every day. I'm trying to get it done before July ends, but it's coming down to the wire, so we'll see. It's very close, but it often seems like for every 1 task I finish, 10 more pop up.

But some very good news is that during these past few weeks I've discovered ways to massively speed up my workflow. After my lamentations in the super long Game Status Update #59, I had some "aha!" moments. The changes I'm about to detail are so impactful to the process of making the game that I am 100% certain they'll lead to future releases coming out on a much faster schedule.

Let's get into it!

Coding - Simplifying Menus

So what was the first breakthrough moment? Any programmers out there, prepare yourselves—I only just learned about and implemented strings.

Let me give you an idea of how much of a nightmare my old process was. There are many different menus in this upcoming game update, and I wanted to customize the dialogue you see before making a new choice to represent choices you already made.

Let's say you first decided how you feel about Riley and Marco. You might then see "I know how I feel about Riley and Marco. What about Matt?" That required writing variants to account for every name that could replace Riley, Marco, and Matt in that sentence... plus other combos like three guys and Will, or two guys and someone Connor decides is his next conquest.

You can probably figure out how many different versions of that one line there grew to be.

The time it took to create this, even when copy-pasting and just typing in different names, was insane... and I still had even more versions slated to do. For whatever reason, it was only just a few weeks ago that I thought, "There has to be an easier way to do this" and bothered to look it up.

Here's how I do it now. I specify a name based on a choice, then use a bracketed string in the dialogue to fill in the blank with whatever name that is. The hundreds of unique dialogue lines from above? They've now been condensed into a single line for each combo:

That's it. That is it. This is seriously some basic stuff, so I definitely feel like a dunce. But hey, better late than never!

Coding - Simplifying Displaying Characters

But wait, there's more! Using strings makes even more of an impact due to a bit of code used with virtually every single line of dialogue—displaying different character expressions.

Up until now, I had each guy's sprites assigned a different name, covering their different outfits, states of undress, being totally undressed, wet, hungover, etc. I then had to remember those exact labels and make sure I referenced them correctly each and every time an expression changed—and expressions tend to last no more than two screens.

It wasn't necessarily difficult, but was definitely time consuming—in particular because of typos. Depending on how poorly I did, sprites might pop up with the wrong outfit, wrong character, not show at all, or at worst, trigger an error screen. The only way I previously knew how to find out if that happened was to play through as many different paths through the game as I could.

By using strings, I can now specify an outfit at the beginning of a section of the game, and then use one standardized label that'll pull the correct sprite. For Griffin, what might have been a series of images labeled like "standard d2", "standard d2 blurry", "standard jacket d2", "standard jacket andy d2", etc. now just uses "standard" every single time that expression appears in the game. Same for any character and any outfit.

To really make it clear how much easier this makes showing expressions, consider this—Alex has 70+ unique sprites. Matt has 80+. Connor has 125 and counting. All of those characters now use the same 20 or so labels instead of the 275+ that I previously had to remember—just for those three characters.

I think this example best shows the impact. If you chatted with Griffin at the club after the Skinema show, you may have noticed there are two versions of Connor that could be seen—shirt on or off. Every time his expression changed I had to write code that looked like this:

 

I already figured out how to fix needing to hide a screen before showing a new one, so with this new change added in, that entire code block has turned into this.

 

And Connor is automatically shown shirtless or not based on me specifying the outfit when you first make the choice.

For this specific example, doing it the old way took a long, long time. I had to not just type out that bigger block for every expression, I also needed to find every single variant route through the scene to check for issues like:

  • Accidentally hiding a screen that didn't exist, leading to multiple Connor expressions layering on top of each other.

  • Using "shirtless" in the "shirt on" spot and vice versa, making Connor put on his sweater or take it off at random.

  • Forgetting the "screen" part of "show screen," which could pop up an impassable error.

And even with how much time I spent on this, I still missed quite a few mistakes that needed to be pointed out to me once I shared the release.

So when I say the time-saving factor of this is huge, I mean huge. It makes expression changes trivial, which means less typing, less bug hunting, and quicker releases for you to play.

Coding - Simplifying Bug Hunting

Finally, my last coding eureka moment, another one that's going to hugely speed up production time, is figuring out a much, much more efficient way to check scenes for bugs.

Up until now, I was playing and replaying and replaying the game, making different choices to try and hit every bit of content to look for errors. I talked a little bit about how I considered making that easier in Game Update #51 by making a map of each scene that could chart different courses through the game.

Then it hit me—Danny, my guy, you can literally change the code whenever you want. You can just set the choice flags you need for a specific scene. There's zero reason to replay anything.

So now I just look at a scene, note which variables are relevant, and then temporarily set those choice flags as "True." I play the scene, change the flags, repeat a few times, and then done.

Like... what was old Danny doing? It's like I wanted this game to be super hard to make!

But hey, I've figured this stuff out now, and along with the other simplifications I've made like standardizing choice flag variables and how scenes connect, the work should go much smoother.

Writing - Simplifying by Combining Scenes

On the script side of things, I had a bad tendency of writing completely unique scenes specific to a character when it was completely unnecessary. Huge chunks of those scenes could be about anybody, and what isn't just needs a few lines inserted to address it.

One of the situations that gave me this realization was noticing that certain paths for Asher and Evan led to a Marco scene that was basically the same. So I just took the version I wrote for Evan, flagged anything specific to him to only show if you take that path, and then added in the variations you'd see on Asher's path.

This again is some basic stuff, but I didn't want you to feel like you were getting super generic dialogue that ignored your choices, hence writing different versions to begin with. But realistically, sprinkling in choice-specific dialogue while mostly keeping everything else static means less writing time for me and less time turning the script into a playable game.

What's Next?

So like I said up top, I'm working nonstop to finish this. I did have to take some time to actually implement the changes I talked about above like carefully sewing together redundant scenes, condensing menus, and making adjustments to sprite files & how they were coded so I don't have to change them later. I've only done the last one for what'll be in this update, but I will go back and change the sprite code for the earlier parts of the game at a later time.

Since I'm pretty sure you all want the game most of all, I've made it my only priority this month, which means I decided I'm going to skip July's Patreon galleries. I absolutely hate doing that, but I only have so much time.

For anyone who won't be a patron come August who wants to see the next galleries, please send me a message. I'll happily send you a download link for those galleries once they're finished! 

That's it for now. I'm off to resume finishing this build!

Files

The final menu screen for The Morning After Update. The background style is designed to be less "busy"—just Connor, and no patterned wall.

Comments

Ty

So proud of you for your progress! Great decision on skipping the galleries, very thirsty for the game release

Daniel Aguilera

Today is the last day of July? Will we get the game today?! 👏🏻🤞🏻🤞🏻🤞🏻🤞🏻

Ty

I was just coming here to say something similar haha