Hello, everyone!
It’s been a little while since our last blog post, where I created a “beginner’s guide” to getting into visual novel development. Since then, 2020’s been crazy, and I hadn’t had the chance to write up a new post.
Today, I’d like to answer some questions sent in to the Two and a Half Studios Curious Cat (feel free to send in more, I will be happy to answer them!). These will be on a range of topics, from programming to writing, to everything in between. Hopefully you find this helpful, and I will continue these posts into the future.
Let’s start off with our first question!
I'm thinking of making a visual novel that has both a male and female protagonist. How does one code the game so that whenever the player character is referred to in third person by another character, they use the appropriate pronouns [he/she] etc?
This is a really interesting one! On paper, it’s very simple – have the player choose between the female or male protagonist, then switch out a couple of variables that contains the pronouns.
However, English happens to be an annoying language sometimes, and you’ll need different variables based on which word you need changed. Let’s look at an example below.
“[He] said that [himself]. It’s [his] decision.”
In that sentence alone, we have three words that need to be altered. He need to be changed to She, himself needs to be changed to herself, and his needs to be changed to her.
While there are a few ways to accomplish this, I will go over a very simple way for you to do it. This will be using “interpolation”. You can view the official Ren’py documentation here.
default he = "he" # defaults the gender to male
default him = "him"
default his = "his"
default himself = "himself"
define j = Character('John') # defines the letter j to be John
label start:
menu: # creates a menu that players can choose from
"Male protagonist":
pass # If the male protagonist is chosen, we don't change the pronouns
"Female protagonist":
$ he = "she" # If the female protagonist is chosen, we change to she/her/herself
$ him = "her"
$ his = "her"
$ himself = "herself"
j "[he!c] said that [himself]. It's [his] decision."
Let’s take an indepth look at how the above code works.
Firstly, we set up four variables that contains the pronouns. For ease of writing, we call these variables “he”, “him”, “his” and “himself”.
Then, we assign a value to these variables. For now, we set them to be male pronouns by default. You could set it to default to female, it doesn’t matter.
Then, inside the game we ask the player to choose a protagonist between the male and female character. If they choose the male character, we leave the variables alone. If they choose the female character, we change the variables to female pronouns.
However, we don’t change the name of the variables. So “he” will equal to “her”, etc.
This means that when we type out the sentence, we use the male pronouns by default. If a player choose the female protagonist, then “[he!c] said that [himself]. It’s [his] decision.” will display as “She said that herself. It’s her decision.”.
Also, you may notice the !c after the first he. This will force the first letter of the word to be a capital, so you will use this if your sentence starts with a pronoun.
Instead of using !c, you can set up more variables that use capital letters, like this:
default He = "He"
default Him = "Him"
default His = "His"
default Himself = "Himself"
Hopefully that helps! There are other ways to accomplish this, but this should be the simplest way to get started.
Any advice/tips and tricks for writing scene descriptions? How about dialogue? How do you prevent the writing from seeming stale, especially when it comes to also needing to handle coding aspects which might interfere with the general flow of the writing?
Even though it’s very cliche to say, my main advice for working on scene descriptions is to read and research. Find authors both with a similar style to you, and those that are very different, and look at how they describe scenes. I also find that a visual stimuli helps a lot when describing something.
Even if you don’t yet have that background/sprite/whatever you’re trying to describe, take a look on google or pinterest and find a picture you think looks somewhat similar. See what you can find that inspires you.
Past that, here’s some tips I would give:
- Use sensory language. Ground your players in your world, make them feel what your characters are feeling. Sometimes the smallest details will make your story feel real and alive.
- Make sure to break up your scene descriptions with dialogue and inner thoughts. It’ll be much more interesting to readers, rather than giant blocks of description.
- Less is usually more. Visual novels tend to be quite dialogue heavy, so you don’t need to spend too much time describing every small detail.
- Understand your characters well, and try to think how they would respond to situations, rather than the way you would.
- Conversations should all be purposeful (unless you’re writing slice of life or similar!) so think about what each character is trying to achieve. Sometimes, this can be “hidden”, and intentions can be between the lines.
- Try not to have too many monologues. Let the other characters talk, too!
- Speak your lines aloud to yourself and see if they sound realistic.
Obviously this isn’t as easy if you’re not both the programmer and the writer, but this is what I would recommend the most.
Lastly, I really recommend letting your writing sit for awhile after you finish with it before going back over it with a fresh mind.
Any general tips for a solo writer/programmer who's thinking of starting their first VN? Assuming all writing/programming/editing is done solo and art/music is commissioned separately?
Thank you for sending in this question!
I’ve wrote up a would-be “guide” on getting started with visual novel development (which you can read here) but I’ll try to go over some other tips and tricks for you.
I am also a writer and programmer, so hopefully you find this helpful.
Firstly, I’m going to assume you play visual novels yourself, and you’re aware of what you need and what’s achievable in a first game.
Let’s break it down into two lists. First, things you’ll do yourself, and second, things you’ll need to commission/outsource for.
- Planning/Outlining
- Writing
- Programming
- Marketing/Advertising
- Sprite/CG artist
- Background artist
- GUI artist
- SFX/Music
- Logo
The first thing you’ll want to do is work out the scope of your project. How many routes, endings, characters, any special features etc. I really advise that you start small-medium so you can finish a project. You’ll learn a lot from it, and go into your second game with lots of new knowledge.
From this, you’ll want to start outlining and working out the story details. What will happen in the common route? When will the character routes start? Will they all follow the same formula, or will each route be totally different to the last?
Next, I’d actually advise to have a play around in your engine of choice. I’ll assume you’re going with Ren’py. Take a look at the tutorial, and have a mess around in a test project so you can try to understand the basics. If you’re new to programming, this part may seem a little scary, but I promise that the very basics are extremely simple, and once you understand them, you can work on learning the more complex things.
Once the outline is complete (or complete up to a demo, if that’s what you want to start with) I would begin writing. Work on giving each charater their own voice and personality, and focus on making the writing enticing enough to draw in others.
As you write, I would recommend starting an asset spreadsheet. Keep notes of every background, sprite and CG you’ll need, with a small description beside it. I also use this to mark when I’ve sent the information to the artist, and when I’ve received the finished piece.
As for art, once you have the character planned there’s nothing stopping you from starting it right away. In my experience, art is the part of visual novel development that will take the most time, so I usually start it straight away. The first thing you’ll want is probably sprites, but you may think about getting “concept art” of the characters first. I find concept art useful if I’m not ready to get sprites, as I personally find writing a lot easier once I have a visual representation of the characters. For 2 of my games so far, I’ve decided to get concept artworks. Just keep in mind this is an additional cost.
If you know exactly what you want for your backgrounds, it’s also good to get a head start on those, as your CG artist will need to reference them.
Although I’ve waited awhile to talk about it, you should really start marketing once you have something to show. It takes a long time to build up an audience, and if you wait until you launch your game to start marketing it and sharing it with the world, no one will know it exists. We started marketing our first game as soon as we had a sketch.
As I advised to an above question, if you’re editing your own work then I would suggest you write, let it sit for awhile, and then come back to it. I edit my own work, and the longer you leave it alone, the more it will feel like someone else wrote it when you go back to it. The awkward sounding sentences will stick out, spelling mistakes are easier to spot, etc.
So, now you have a script (either complete or not) and you want to program it. Dialogue is probably the easiest thing to program, and if you’ve played around in Ren’py a little, you’ll have no problem with this part.
define j = Character('John') # defines the letter j to be John
default bg test = "images/backgrounds/test.jpg" # defines "bg test" to be the image "test.jpg", which is located within the images/backgrounds folder
label start:
scene bg test with dissolve # shows the background with dissolve
j "Hello, this is John speaking" # John's dialogue
How you do sprites will depend on whether you have whole images per sprite, or your sprite is broken up into parts (different clothes, expressions, arm positions etc.). If you need help with layeredimages or coding sprites, feel free to send in another question.
The more difficult part will be coding your GUI. Once you have the knowledge of Ren’py’s screen language it’s not difficult, but it’s quite hard starting out. You may want to find someone to assist you with this or walk you through it OR find a GUI artist who also provides the code.
Finding artists can be quite tricky sometimes, but there’s a few places you can look for them. Lemmasoft forums, Deviantart and Twitter have been very useful for me. I would advise to be very upfront with artists about what you want, and make sure they’re on board for a longer project. It sucks to have to lose artists half way through.
Once you’ve done all of this, congratulations, you have a basic game. The above was mostly a mini guide with some extra commentary, but I’ll leave some more tips below.
- Join VN Dev communities. There’s quite a few discord servers (BL Dev, Otome Dev, Yuri Dev, the Ren’py server, etc. Become involved with the community and you’ll learn a lot.
- Make use of Twitter’s hashtag events. There’s quite a few you can use to gain some visibility. #WIPWednesday, #ScreenshotSaturday and #IndieDevHour all come to mind. Make sure to research the times these should be posted at.
- Don’t be afraid of asking questions. If you don’t understand how to do something, someone else will.
- Get someone to have a look over your script and get their opinion after. This doesn’t need to be technical, just how it made them feel. Get a sense of whether your writing is doing what you want it to do.
- Work out how much of a budget you have early. Don’t be afraid to cut scenes, characters, CGs if they aren’t important.
- Start a Twitter, a facebook page, a tumblr, an instagram. You can even look into other things, like Reddit and Amino. Cultivate your following.
- Make sure you know who you’re marketing to.
- Consider joining a game jam at some point and trying out working in a team.
Phew, that was a long one! I go much more in-depth in the blog post I linked to above, but in general I say for your first project… just play around, go wild, try out things even if you’re going to cut them after. Work out your strengths and work on your weaknesses. Just enjoy the process of creating, and don’t worry about it being perfect.
Afterword
Thank you all for the wonderful questions.
I went a little overboard answering some of them, but I hope you found them helpful. I am always happy to go further in depth if there’s anything you don’t understand. You can find me on Twitter here.
If there’s any other questions you would like to submit, I will leave our CuriousCat open, and pick out questions every now and then.
Until next time!