Thoughts on Working with Inklewriter for a Visual Novel

A place to discuss things that aren't specific to any one creator or game.
Forum rules
Ren'Py specific questions should be posted in the Ren'Py Questions and Annoucements forum, not here.
Post Reply
Message
Author
User avatar
ArachneJericho
Regular
Posts: 196
Joined: Sun Jun 22, 2014 2:04 am
Projects: Kaguya Hime
Tumblr: mousedeerproductions
Location: Seattle, WA, USA
Contact:

Thoughts on Working with Inklewriter for a Visual Novel

#1 Post by ArachneJericho »

So at first I thought that my workflow for getting from idea to code would resemble the following:

1. Outline the scenes and connections between them roughly in Twine.

2. For each scene, write up a full version using screenplay format to indicate where audio, visual, and camera effects go.

3. From the screenplay, translate to code.

4. Lots of debugging.

But I discovered several problems with Twine that frustrated me mightily.

- Twine 1.4 doesn’t run on Linux, which my vital ideas bouncer uses.

- Twine 2.0, which runs in HTML5 browsers, wouldn’t allow me to archive to a file format which I could share with my ideas bouncer.

- Twine 2.0 also did not use accounts to preserve data in the cloud, and thus there was no change of sharing easily with my ideas bouncer.

- Twine 2.0’s proofing copy was unreadable for my ideas bouncer.

- Twine 1.4’s proofing copy randomly spat out nodes in no particular order, instead of doing something like a graph traversal, which wouldn’t be perfect, but would be a hell of a lot better.

- Twine 2.0 does not feature syntax highlighting, even though Twine 1.4 does.

- Twine 1.4’s layout algorithm is laughable.

- Gods help you if you have more than 50 nodes in your story in either Twine 2.0 or Twine 1.4. There’s no consolidated view to make scanning through nodes easier.

So despite the power of Twine’s programming language, I ended up frustrated, with the tool getting in the way. And I didn’t even want to use that programming language to full effect anyways; what I wanted was a way to share my outline and browse it effectively.

Then I ran into Inklewriter.

Now, on first blush, Inklewriter doesn’t seem anywhere near as powerful as Twine. And it isn’t—in terms of the programming language. As it turned out, however, Inklewriter’s immense power lies in its drafting and writing capabilities, not its language (which is limited to ifs, flags, counters, and a tiny bit of a randomizer). Inklewriter does exactly what it says on the box—it lets you write. And what is any Visual Novel without good writing?

At first I just used Inklewriter in a manner similar to how I utilized Twine. Oh, yes, it was annoying in a way—paragraphs are actually individual nodes in Inklewriter, whereas you could have as many paragraphs in a single node in Twine as you liked. And I missed being able to set variables when you selected a specific link. Also, the map began to get annoying with so many nodes.

But then my wonderful ideas bouncer pointed out that I needed to baseline Alex’s personality. (You see why it’s so important to me to be able to share with my ideas bouncer.) And I found myself needing to write up, very quickly, a dream sequence featuring a series of questions and answers that each had four variations and boosted specific stats.

I idly began to write up the questions, adding simple stat counters on the way to remind myself which answers boosted which traits.

I found it easy, with the serif font, to read what I wrote, so I decided to experiment with writing a nearly full first draft, describing roughly what the player would see in a scene, and wrote the most expressive dialogue I could (without getting too long in the teeth; there’s a particular balance with that) since I couldn’t rely on visual cues from character sprites.

And something almost magical began to happen. Suddenly I understood why each paragraph was treated as a node: you could join any paragraph in a scene with another, which meant you didn’t have to present silly single-choice transitions between scenes (something I had to do in Twine if I wanted to separate out scenes that followed sequentially). That was powerful in a way I hadn’t initially thought of.

I got a chance to play with the content box (which lays out every node, and is searchable) while connecting the paragraphs together. I discovered that I could search for loose ends simply by typing “loose end”. This made searching for dangling nodes much easier than anything Twine could provide (Twine 1.4 slightly darkens the title bar of the tiny square of a scene/whatever to indicate it’s a loose end, and Twine 2.0 has no such indicator).

At first I was concerned that the linear nature of writing in Inklewriter would get in the way of thinking in a programmatic way about how the game itself would be laid out, and that it might be difficult to remember loose ends—but the content box takes care of finding loose ends, as does the map view. And you can use both the content box entries and the map nodes to automatically navigate to the specific node for editing.

Ah, the map. The map has enough room in each node to show most of each paragraph, which is different from Twine (in Twine, different zoom modes still won’t show you more text), which meant I really could mostly read my story in the map. Which of course meant that I actually worked better in a programmatic manner than I did in Twine. I still wish there was a way to capture the map so I could share it.

There are complaints that the map can get too complicated if your story is significantly interconnected enough. I discovered, however, that if you use sections properly, you can break the map up into chunks without having to, as in Twine, create separate projects/files for each one. There’s a plus, too; you can see the last nodes that connect up to the starting node for a section, and click on them to navigate to the previous section. I don’t think I’ve seen a complex Visual Novel not use chapters in some way (but on the other hand, they could always exist).

I did get annoyed, however, that nodes tagged with the same section name weren’t actually treated as part of the same section, problematic when you have interleaving paths. So I solved that by actually providing an explicit sync point when needed. I had to use flags to then split back into the separate paths until they interleaved again, but I found that little bit of complexity worth it.

Backtracking is by default tuned down; there’s a setting you can use to turn on backtracking for every node, which meant that the reading copy I could share with my ideas bouncer was effectively a playable proofing copy.

When I switched over to reading mode myself, I discovered that the author of a story has a few special debugging powers during read mode:

- the ability to track counters explicitly (for instance: pedantry + 1 will show up where it occurs, and also indicate its current value in your current playthrough).

- the ability to see all the choices even if some of them were hidden by if statements; the ones that would have been hidden are marked in pink.

- the ability to see when and where counters and flags are set. Stories during playthrough scroll downwards instead of having nodes disappear, so you can track every choice made and find every location of modified variables.

I could debug simple logic in other words, in a way I couldn’t easily do in Twine (Ren’py at least allows you to visually track changing variables using developer mode and the console, but doesn’t feature the other debugging features here). I could actually outline a large amount of the logic as well as the text.

That blew my mind.

And of course, Inklewriter autosaves to the cloud, which is nice.

So I’m changing gears, and my new workflow is thus:

1. Write the scenes and choices and flag/counter logic in Inklewriter.

2. Debug simple logic in playthroughs.

3. Translate to code in Ren’py. Where I would have had an extra step for screenplay format, I instead simply write Ren’py code to do the framing etc.

4. More advanced debugging.

Inklewriter isn’t perfect, mind you. There are a few feature requests I have:

Ability to capture sections of maps to PNG files to share with ideas bouncers. (Although I was already told that the Inklewriter devs would not consider this.)

When nodes are labeled with the same section name, they should be placed in the same section. This removes the need for fake sync points as I did above.

Variables that can hold strings and do string comparisons. This would really round out the expression set and simplify certain kinds of programming.

Ability to download an “archive” of a story and import such an archive so it can be directly shared with an ideas bouncer.

Ability to create Android apps instead of Kindle Active Content (which you need to pay a fee for). This is mostly because I hear that Amazon is slated to end its Active Content program. Correction: there's already the ability to create Kindle ebooks, not active content, so no need to worry about active content.

I also always make sure to close the inklewriter tab when I’m finished with work for the day. There’s a strange bug that made some links between nodes disappear, which was… disturbing. But I found all the nodes again, thanks to disconnected nodes appear in the top of the content box.

I’m very pleased with Inklewriter so far. And I’m redrafting the prologue as well, since now I’m pretty unsatisfied with it, compared to the work I did on “The Dream”.

Don’t use Inklewriter if you’re freaked out about your work being in the cloud. That’s one of the few major downsides of the application. But otherwise, I’ve found it and its methodology creativity-boosting thus far.

User avatar
planktheory
Regular
Posts: 35
Joined: Thu Aug 30, 2007 4:44 am
itch: mykanthrope
Location: Washington State
Contact:

Re: Thoughts on Working with Inklewriter for a Visual Novel

#2 Post by planktheory »

Thank you for sharing your workflow and your experience with the program.

I've had a few cursory glances at Inklewriter for drafting purposes--and Articy Draft has been sitting on my Steam Wishlist for some time now. I'll definitely try a dive at Inklewriter for an intro to a PnP Campaign that I've been meaning to get to that I started in Twine with Sugarcube.

Post Reply

Who is online

Users browsing this forum: No registered users