How to make a visual novel alone in a month and still survive -- somehow

There is always this feeling of amazement that fills me at the end of a project: just a while back there was nothing, and now there is something... As good or bad it may be.

I partecipated in NaNoRenO 2019 during March, and now I have a small kinetic visual novel to show for it: One Last Salty Kiss (OLSK for short), a romantic love story on the beach. It's been a very instructive month, full of twists and turns, so here I'm going to share with you the most important lessons I learned in these 31 days of development.

This post is spoiler free,  so go right ahead.

Tripping on the first step

Starting strong is the best way to reach the end. Everyone knows that, right? Well, then I was in deep s**t, apparently: I started right away with a mistake that almost stopped me dead on the tracks. But let's go in order.

When I write a story, I want two things clear in my head: a strong start and a wholesome ending. Once these two are in place, the plot just becomes connective tissue between these two pillars. This will probably send shivers down outline heavy writers, but that's how I always wrote, and it never let me down. Well, at least not until now.

For OLSK, the ending was a good wrap, but the start was average at best. Stories about amnesia aren't an easy sell considering how cliché it is as a plot device. But that isn't the main problem of the story.

The thorn in the plot is Azzurra. It hurts to say this after how close I got to the character, but we have to talk cold facts, here. She is, without spoiling too much, pretty "limited" as a character. Usually this can be interesting, because it's fun to see how a character can work around its limitations. However, Azzurra is kind of an extreme case here, and she ended up being quite passive, which made the central part of the plot slow. Like, really slow. It's no use to have an interesting ending if your readers are going to fall asleep before getting to it. I could have just cut that out and go straight to the business part in the ending, but since this was a love story cutting away interaction between characters was just going to collapse everything.

I noticed this stalemate halfway in the first draft, and I was frustrated for not noticing such a simple problem before starting. I had barely written half of the story and I was already stumped.

I pushed through the first draft with the nose pinched: it wasn't going well at all. The first reread was brutal: boring, insipid, and uneventful. I had the mouse at least twice on the "delete draft1.txt" option, and the desire to just call it quits was high. Writing something else from scratch wasn't an option either, since I know well that changing direction like this halfway in a game jam is just a recipe for disaster.

What changed my mind, then? Well, I'd say that my natural stubbornness was a factor: I wanted to make this story for NaNoRenO 2019, and nothing would change that. But what helped me push forwards was the feeling that there was something in that initial draft that was still salvageable, after all.

I cracked my finger and started the second draft right away. It was a complete rewrite from scratch, but it was worth it: the end result, despite being dirtier than soil, worked around the problem, and built some resemblance of a plot. How did I do that? Well, in the end Azzurra had only one way to create drama here, and I had to squeeze as well as I could. And I did, and the end result ended up being decent. The relationship between her and Michele felt a little fast, and the plot as a whole a little slow, but it struck a balance miles ahead from that horrifying first draft.

The project, as far as I see it, started in that moment.

This is the first lesson that I learned: when you have something, anything, it is always better than having nothing. Because you can fix Something, but you can't fix Nothing.

Looking in the right direction

While the project didn't start on the right foot, I got back on track quickly, mostly because I knew that here the project would make or break based on only one aspect: deadline management.

Wait, what's so special about deadlines? Isn't that about slapping a date on a goal? Well, no, if you think about it. When you define a deadline, what you're really doing is defining a hierarchy of priorities. You tell yourself to do something before something else, and if you give priority to trivial stuff, the holes in the foundations will soon make everything collapse. And this is accelerated tenfold in the limited context of a game jam.

My objective was to have a finished script by March the 15th. If this sounds conservative, it is, and that's why I put this kind of deadline. Did I respect it? I didn't, of course, but it was still very important to have this reference point. It put some pressure on me on the second part of the month, where I needed to focus on the most.

And right when I felt I was getting up to speed again after the initial slip, I did a terrible mistake, one that almost broke the whole project: I decided to give a hand of polish to the script.

I didn't exaggerate before when I said that deadline management can be the death of a project if used badly. I know, because that's almost what happened to OLSK. Did the script need to be cleaned up? Sure. Did I need to do it now, with half of the game still up in the air? Nope.

I ended up losing at least a week rewriting the script, and entered the last ten days of the jam with a barebones GUI, half of the graphics completed and none of the sounds or musics or animations done.

Yeah, I was starting to feel the water rise. And this is what I learned: set your deadlines correctly, or you're going to face the consequences.


In the last stretch of the jam, time was the number one priority. There was a lot of stuff to do still, and not enough time for it all.

So, what to do? Well, there is only one choice when you don't have enough time to do everything: cut.

Cut, cut, cut, trim, clean, shave, like a barber on too much caffeine.

I hate this phase, as important as it may be. It's hard to give up something that has been a core part of the project since the beginning. It's very stressful to confront the original idea you had in your head, and realize that what you're going to share is going to be a truncated copy. Either that feature is going or the whole project is. And that isn't really a choice, isn't it?

The saving cut for the project was removing Michele's sprite. Initially, Michele was an on screen character just like Azzurra and Giovanni, with his own animations and expressions; I wrote the whole script with another face on screen, which is why some of the dialogue feels a little stiff at points. I had already done the lineart of his sprite, but finishing it up, adding expression and adding them to the script wasn't going to happen in the tiny time frame I had left. It was painful, but I was already so short on time that it would have been hard to complete the story even with this cut. So Michele's sprite was out.

Unfortunately, it doesn't end here. Fast forward to March the 30th, the day before the end of the jam. The whole game was complete, despite having barely any animations at all, but it was still missing an important part: the music. Yep, the whole game, just hours before the deadline, was completely mute.

All I could do in a Sunday morning was just making some quick patterns that is really a stretch to call music. Everything recorded straight to Audacity from the keyboard without any editing. It's better than nothing at all, sure, but I think anyone can notice that it's hardly rich in terms of audio. Luckily, the ambient sound of the waves filled up some of that silence, and I feel that if it wasn't for the atmospheric setting, the whole game would have felt a lot worse.

That said, this was so disappointing that I'm thinking about making a new and more complete soundtrack in a future version of the visual novel.

But, despite all the problems, on the 31st the game was complete. Rough, and sorely needing proofreading and bug squashing, but complete. And that's only possible thanks to the cuts I decided to take in the last part of the project.

And this is the third lesson I bring to you: clench your teeth, and cut boldly. And, as limited as it may be, be happy with what you've made.

The most important lesson

None of the lessons I learned today were new to me. And it's incredible how much I can fall back in the same pits despite having done that before. Multiple times. This can be frustrating, and hard on your self esteem.

But this brings up the last lesson that I've learned, and that I keep relearning everytime I feel like things are getting though: never give up. Because you're going to make mistakes, and that's perfectly fine, as long as you don't let them stop you. Keep learning, share your work and move on. This is how we grow.

Please consider giving One Last Salty Kiss a read, and let me know if you do! The best part about completing something is hearing feedback from other people. Thank you for reading, and I'll see you on the next project.


Get One Last Salty Kiss

Download NowName your own price


Log in with to leave a comment.

Look forward to playing it. What did you create it in? Ren'py?