Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

Devlog # 5: The Perfect Portrait Postmortem

(There is a mirror of this post on the page for The Perfect Portrait)

The end of the month sees me releasing a new game, The Perfect Portrait! So this monthly devlog is mostly going to be a postmortem for it. At this point the secret I've been holding about this game is out, but if you have no clue what I'm talking about, then I suggest you play the game and heed the note at an ending screen. You can also skip to the So what now? section if you don't want to read the postmortem. Or you know, just read on because I can't tell you what to do lol.

I have a rule of never explaining my games, but this one I feel is pretty blatant lol. Plus, I'd rather state outright to eat the rich and fuck ai generated art than to be ambiguous about it.

Story concept:

So I've had this idea of a face changing O2A2 game for a while. It was inspired by the music video for Circus P's song Copycat, and the original game concept about was a people pleaser wanting to impress you on a date while trying to hide their true self, and you have to convince them to either show their true self or one of their various faces.

And then in January I read The Picture of Dorian Gray, and I had the funny thought of "haha what if his portrait was painted by an AI art generator, what would his meltdown be like" and then my brain exploded and the rot had set in.

So while waiting for the jam to come around, I wrote notes and planned out what would happen story wise and most of the mechanics because Dorian Gray had become my brainrot for a few months. (I mean it still is lol.) My previous O2A2 entries had always been within 1000 words by the time I finished writing it after the jam starts, but I was so excited to finally make TPPor that I went over the word limit and I had to axe an ending and reconfigure one (which was Ending 1 btw, I only figured out to place it in the intro section when I realized how funny it was with him answering a robot's answer for forever)

I will say, this year I haven't been actively working on a new game because I have a lot of updating and housekeeping I should put more focus on. When the jam was announced it was so excited and I realized I was just itching to make a vn from scratch again, and I feel like you can kinda sense it in this game lol. This message is brought to you by the fact that taking breaks is a good thing, because I wouldn't have had so much energy on this if I hadn't been taking a dev hiatus.

That being said, I was blown away from all the nice comments and reactions! I said it in the release post, but I was pretty worried about how this game was going to be received only because it's so topical and topical subjects are bound to age badly. But then I thought Well the concept hasn't aged badly since its inception in January. If anything, it's aged kinda well considering at the time of development, there was techbro talk about surpassing death and art jobs diminishing in several countries. If this game's message were to age badly, I hope it's because AI would be actually helping artists somehow, and that rich CEOs would be able to get their heads checked with a fun and educational French apparatus. 

The background:

Someone had asked me how I was able to get the background to do many colors, and there's two answers to this.

A sample for how I created the room for The Perfect Portrait
One is that the entire background has some transparent spots in it, particularly around the canvas area. This is so I'm able to make Renpy generate a color behind the background, and then the canvas would be colored! There's also some transparent brushstrokes to make it look like the color from the canvas was reflecting in the room, which helps with the mood of the scene and helps differentiate which ending you're on.

As for the image itself, Ren’Py has a function called ColorizeMatrix that I love to abuse lol. Basically, it takes the darks of an image and the lights and changes them into different colors depending on what hex color you use. I used this a ton on No !@#$s Left to Give, and it works fantastically on a really painterly background. Doing this combined with the transparent canvas can give me so many variances with just one background! :D

The changing faces:

A lot of comments noted the expressions I used, and not gonna lie, I am really happy people saw all the faces I made! Drawing all those faces, out of everything in the game, took the longest to do and I'm glad the hard work I put into it paid off. I'm also grateful O2A2Q took two weeks instead of the usual one week because if it didn't, I would not been able to pull this off because of time restraints.

Literally. I noted my progress as I developed the game, and at around day 5 and 6 was when I was able to make a basic build where the faces would still look fucked up, but there would be one set of facial styles dedicated to a scene instead of 4 per scene. It still would've worked thematically, but I really wanted randomized facial styles to really emphasize the game's themes and Beauregard as a character.

As for the code to randomize the faces, I've been admittedly figuring out this code for a while because I initially want to utilize it for future games where the characters dress up differently per day, or a Ramona Flowers-type character that does their hair in a different color and style frequently. Sure I can make a specific sprite for a specific scene for a specific time, but I like the randomness factor since it feels a lot more spontaneous and honestly more realistic than a outfit you’ve seen multiple times.

Background code for the expressions used in The Perfect Portrait

How I executed the expressions used in The Perfect Portrait

Here's a look of what it looks like in code.

The sprite file conatining all the expressions for The Perfect Portrait

And here's what the sprite file conatining all the expressions looks like.

Basically, each image file has a tag in brackets for the artstyle. This style is then stored in a bag of sorts (renpy.random.choice), and each time the game is started from the title screen, the game takes a tag from the bag and uses that as the facial expression being displayed

The way it's used in TPPor is admittedly not super optimal lmao, but it was the only way I could find to at least make it easy for when I had to draw new faces. Like yes I did have to specify each name for each expression, but it means I wouldn't have to go back into the script and edit the face declarations. All I needed to do was to update the randomizer declarations with the face tags after exporting them.

Admittedly it isn't super hard to come up with a list of expressions and styles. I already knew I wanted to do some joke portraits and literal paintings, and I've gotten inspiration from music videos like What You Gonna Do by Bastille and the aforementioned Copycat to reference. Some expressions I came up with on the fly because it was meant to be planned and looked way cooler than intended, or I made a mistake but it looked cool anyways lol.

The hardest part however, was drawing and editing them all and also testing them all to make sure they show correctly in game. I had more faces planned, but I ran out of drawing steam unfortunately. Ah well! It still looks great in the end.

(And its a good thing I stopped drawing those expressions when I did, because the moment I published the game literally I got fucking sick lmfao. Thankfully it was a simple cold and not COVID and it lasted a week for me, so at the time I'm writing this I'm feeling better!

Final Thoughts:

I’m super proud of this one! Honestly, there isn’t much I’d really want to change story or character-wise since I did all I could within the limits, and everything I had to axe made for a better story in the end. I guess the only bummer was that this story was meant to be more sci-fi in nature and the art style and general look doesn’t convey that. The original notes had me using a sci-fi sounding door when Graey goes in and out of the room, but I favored the brushstrokes because of how versatile it can be.  

I asked my lovely partner and music composer Dan Vallerand (whom you should buy music from or else I'll eat the food in your fridge) to make a sci-fi-ish music track that sounds like your sins catching up with you, and he made a couple of tracks for me to choose because he's sexy like that. And of goddamn course I went with the one that sounds the least sci-fi lmfao, but conveys the feelings I want the game to exude the most.

Honestly I’m okay with sacrificing the sci-fi theme for the artstyle and music I went with because IMO the painterly look and the piano conveys the mood and weirdness of the game better.

So what now?

Well I'm still going to truck along for UI updates on Wolf's Wool and Pillars on Poppy Hills, and then the artbooks. There are small updates I’ve done on my smaller games regarding self voicing in some sections since I noticed it was wonky in some parts of TPPor before fixing it, and apparently Ren'Py updated so that it didn't glitch out while using the text animation tags. I had a work around when I initially made No *!@#s Left to Give and it gave me a headache to update that game in particular, but all should be fine now with all my smaller games.

As for future games, it's the same as I said in the beginning of the year: I'm not actively going to be working on a new game until the next O2A2 jam. I mean, I may be working on stuff in the background, but it's going to be lowkey because of my life situation (which again, don't worry because the situation is not bad actually, just regularly needs my own personal attention so I can't really dev on a regular basis.) I love doing small jams like O2A2 because it's so brief and not super time consuming that I can focus on something new compared to a longer game. 

But until then, I’ll just be working on stuff in the background, and they will come out when they are ready. :D Hope you all had a great month, and be sure to check out the other games submitted for the Only One of Any Asset Jam 2023 ~ Queer Edition! There’s a ton of good stuff there.

          ~Knickknack PJ

Support this post

Did you like this post? Tell us

In this post

Leave a comment

Log in with your itch.io account to leave a comment.

(+1)

Thanks for the write-up on the influences and how you did the code, as it was super informative and fun to read! Ah, I think it might be because I rushed straight to play the O2A2Q entries that were on my radar when I got back to my own home pc after being tired from travelling, but I didn't notice that there was a random factor for the faces. Only that it was REALLY spooky about how I keep on seeing new faces if I start up the game from the very start (for this reason I never skipped the intro).

Ending 1 is hilarious and definitely took thinking-outside-the-box remembering what choice combos I had not tried before. Fun way to close the game with a little puzzle hunt.

The sci-fi influences are still tangible by how there are android clones in Graey's likeness. It's kind of a unique blend that there's a tackiness and being extra by imitating the baroque style from the past what would befit a billionaire like him.

One day I shall also do a proper comment on the game page.

(+1)

No problem, and thanks for the comment and kind words!

The randomization is admittedly still somewhat restrictive because I have a specific set of expressions to be shown on specific parts. (This is intentional though, for art direction's sake.) But even then, I'm glad its giving off the reactions I was hoping for haha. Glad finding Ending 1 was a blast for you too! And that is true about the android clones and Graey's general look, since my only option to give the sci-fi feel was through text. 

Glad you enjoyed this devlog! Thanks for reading! :D

Mentioned in this post

A short visual novel about a robot running an AI art generator painting the portrait of a narcissistic megalomaniac.
Visual Novel
Play in browser
A short abstract visual novel about what you feel about having too many or too little !@#$s left to give
Visual Novel
Play in browser
An abstract visual novel about wondering what you are under the crumbling cover.
Visual Novel
A visual novel about wanting to become something or nothing.​​
Visual Novel