Well, now that I’m neck deep in the guts of it, I can give you some experience on working with it:
It’s basically screenplay writing for the stage, like a theatrical play. Write the action the viewer will see, write the dialogue, and remember that your exposition is going to need to be executed visually as well as textually. That means that you limit yourself, at times, to what your visual budget can do and what your artists+art sources can deliver for you on time, and on budget.
Structure planning is everything. The only reason I can tackle a story as crazy complex as Laika Dosha is that the ‘helix’ model of structure makes sure that after every plot point affected by player choice, another one comes along that is outside of player control. It sets up a pattern of action-response that remains dynamic, but doesn’t force me to set up things like forked story models and paths.
Blackgate, structurally, more or less splits at the root and goes 5-7 different ways, almost never joining up again as far as I can tell. It’s a bold move, but I think I’d tear my own hair out trying to emulate it.
As near as I can tell, Echo appears to be going the ‘Helix’ route as well, but I haven’t delved into their script files much.
On the actual writing itself:
Short lines of dialogue are preferred. Two sentences max per line, because you’re going to end up wall-of-texting a screen otherwise.
For both helix and fork models, be prepared to iterate the same conversation a LOT. If you’re crazy like me, that means the same conversation about the status of a space station, 49 times. 49. Different. Times. And they’re all a little different. Some are more different than others. My trick is to try to put one little nugget of story that’s unique to that iteration in each one. So this iteration might reveal that the protagonist is lonely, this other iteration might reveal that this protagonist screwed up and is trying to cover for it, etc.
Do your best to avoid monologuing for the sake of plot. Keep the characters pattering back and forth. If you simply must stuff some exposition in, make a scene of that in and of itself; lots of visual aids, and if it happens mid-conversation, have a character call another character out for taking so long to respond to them.
This might seem counter-intuitive, but: Don’t telegraph the results of a choice. Ask the player to make choices in the game that don’t have clear outcomes, not at first. Maybe not for a long time. A good example of this is in Blackgate, when you’re asked to choose a music station. There’s no explanation that later in the game that choice of music will have surprising consequences for something so seemingly inconsequential. In Laika Dosha, the initial choice tree asks the player right off the bat to establish their emotional and intellectual relationship with the idea of smelling a dead dog in space. What isn’t immediately clear is that choice has TREMENDOUS consequences down the road, and defines not only plot elements, but genre elements as well. People make choices without knowing their outcomes all the time. They guess and hope for the best.
Everything is foreshadowing, but the player doesn’t need to know that.
On the technical side of the equation:
-
Get comfortable with a powerful text editor for programming, such as Notepad++ or Editra. Personally I prefer Notepad++, because the macro tools are drop-dead easy, but it requires some configuration and study to work effectively.
-
Learn how to do simple macros and execute them, because that’s the difference between an “Oh shit, I didn’t format my dialogue right!” problem being a six hours of work solution, or six minutes of work with the right macro.
-
Ren’Py is super modular, and easy to use, but unfortunately not very well documented. Your best bet is to go into the script files of other games, and grab code, and adapt it for your use. It will tell you much more than the documentation will. Ren’Py script codes is very human-readable. Not quite QBasic, but close.
-
Ren’Py doesn’t care if you have one monolithic script file or a million little ones. Consequently, I recommend a million little ones, or at least discrete bites of the story broken up into chapters and subchapters in the scripts. It will make your bug hunting and overall work flow much, much easier.
-
If you run your project from the Ren’Py maker itself, you can make changes on the fly to the program scripts, save them, and then hit Shift+R in the Ren’Py maker to reload the game to the point you’re at. GREAT for fixing typos, visual direction problems, etc.
-
Narrator “Text goes here. It will show up without these quotation marks.”
-
CharacterName ““Text goes here. You’ll only see regular quotation marks despite the backslashes in this line.””
-
CharacterName ““Never use the % sign in your dialogue without a backslash. That will break the game.””
-
CharacterName ““If you absolutely MUST use the percentile sign, append it and all special symbols with a backslash. I’m 98% sure this will keep your game from crashing.””
-
CharacterName ““This goes for quotes within quotes, too. If you had just written the word “percent”, you wouldn’t have had to hit that backslash key at all.””
-
Overall I found that the learning curve isn’t terribly steep if you’re willing to dive into the scripts of other games and steal shamelessly, because it’s all pretty bog-standard code in the guts of most games.
-
IF/AND/ELSE/OR Boolean structure is frankly something you should definitely rip off from other games, because trying to reinvent that wheel is going to make you cry.
-
Indentations matter for Python code. They matter a lot. And you can’t usually use Tab to indent. Instead, it’s usually four strikes of the spacebar, per indentation level. Depending on your IF/AND/ELSE/OR Boolean structures, you might find yourself nested in 5-8 indentations deep. Sorry.
-
in a Ren’Py line means commentary. COMMENT TO EXPLAIN YOUR CODE. COMMENT EVERYWHERE SO YOU KNOW WHAT EVERYTHING DOES AT ALL TIMES. I guarantee you if you forget once, that’ll be the time you have to go bugfixing and can’t find why its broken.
On the art direction:
-
Artists are expensive, time is money, make sure you have a VERY clear idea what you want visually. My recommendation is spend the money on dynamic character poses. Characters are what the player will be seeing most of the time. For example, Molly from Laika Dosha has around 35 variants, of different postures, facings, expressions, etc.
-
Public Domain is your friend. Pixabay is your friend. Photoshop art media filters overtop of Public Domain imagery are your friend.
-
Creative Commons is also your friend, but it is a very annoying friend that requires VERY CAREFUL AND TEDIOUS RECORDKEEPING. If you’re going to respect a creative commons commercial license, you need to, NEED TO document everything. Exactly who the artist is/was, exactly where you downloaded it from, your sourcing, and modifications, and who you do and do not have to credit within the game itself for the imagery. Overall, licensing commercial art is actually less work administratively than creative commons is.
-
If licensing artwork from a commercial art repository, you still have to document that too. Make absolutely sure you license that art in a way that permits both commercial, promotional, and merchandising uses. Be prepared for automated image scraper programs to come and send you automated scary-letters of “We’ll sue you for using our images blah blah blah” and you have to send back your proof that you paid for the images.
-
Sound and music work the same way. You can license music and sound, and free stuff and public domain stuff is out there, as is creative commons. It all has to be documented. Make sure you do that. Even video! Check out this guy’s webserial fiction trailer, put together from some CC video and audio stuff: https://www.youtube.com/watch?v=LTRuYe7-yzE
Finally:
Be sharp on your dialogue. Visual Novels are very dialogue-heavy. Have a good ear for writing the way people talk, and sticking to it. Avoid ‘novel voice’ for dialogue. It will really show up. Get in the habit of reading your dialogue out loud to yourself as you write it. If it sounds corny, or just doesn’t flow, change it, adjust it. Talk like people talk, write like people talk.
Good luck, have fun.