Hi, I decided I might as well make portions of my development diary public. :p But really, why?
Laziness. [1]


More seriously:
Visual novels tend to have a higher reliance, from a videogame design standpoint, on writing/narrative design. In game design, those are my strengths.
Easier graphics handling. As a videogame format, they have a lower reliance, on average, on complex graphics handling. I don’t mean at the level of “here is pretty art” (that’s still hard!) but “How do I optimize hitbox detection for this complex 3D animation of an attack, complete with custom particle effects?” I cannot tell you how many times I’ve seen budding game designers step into video game development and coding and get derailed by the fine points of graphics implementation before they have functional mechanics even at the level of paper prototype or placeholder simple-ass wireframes. (Hi, this is me!) In any case, I’m sticking to 2D.
Game Engine: Unity with the visual novel extension Naninovel. Down the line, I’d like to add WWISE (game audio middleware).
Please do not worry about my music VSTs, DAW, and software. That’s the one area where I’m arguably oversupplied. 🙂
I picked this setup for several reasons:
Widely available resources and support for Unity. Beyond being one of the industry standards, Unity is the main system used on the videogame audio/composition/sound design side of ThinkSpace Education, so getting familiar with it is not a bad thing. (I am on intermission, but pursuing an M.A. in media composition there.)
Naninovel is designed for visual novels. I bought it on sale such that I also have access to the source code of the current build.
Unity’s integration with WWISE (and Fmod), since part of the intent is to work through the pipeline for audio/music as well, as it’s directly relevant to my master’s program. I’m on intermission, but I’ve been interested in this for a while.
Others I looked at:
Godot. General-use open-source/free game engine. I looked into this long enough to ascertain that specific visual novel libraries/packages/? are not as well-developed as in (say) Unity. I do want to play with it at some point, though!
Inform 7. Interactive fiction (IF), now open source/free. I love parser IF. I’m familiar with Inform 7 (…and have coded in Inform 6). To my knowledge, however, the audio integration is bare-bones. Audio is a niche use case in parser IF so that’s expected, but also runs up against my wanting to use this to work through implementing game audio.
Ink from Inkle Studios. This is terrific narrative scripting middleware that I’ve wanted to play mo.re with. I have toyed with it a bit and it looks excellent for narrative prototyping as well. The IDE is terrific! For an online taste of this, BTW, try Inklewriter for creating choice-based games/stories!
Narrat. Narrative RPG game engine. Free, open source. It does support VNs, although the original use case was “coding a game with Disco Elysium vibes/mechanics.” The dev states that if you want broader coding flexibility (which I might), this might not be the best port of call. The audio integration uses Howler. I’d like to explore this at some later point, but not with this specific project.
Python. I don’t think I need to introduce this language! I got partway through Yet Another Roguelike Tutorial in Python and enjoyed it a lot! The main advantage for me is that Joe (husband) codes in Python for work, so in-house tech support. :3 But I don’t want to reinvent the wheel either; at that point Ren’Py (see below) is a better choice for my use case.
Ren’Py with extensions in Python. This would have been my second choice! Ren’Py is a venerable game engine for (English-language) VNs. I think to use WWISE specifically, one would need to go into WWISE’s WAAPI client for Python. I have not tested this, though.
Twine. I’ve used this before and enjoy it, but the audio handling is basic (since it’s intended for hypertext games delivered on the web). My recollection is that to go beyond what it does natively, you need to go into Javascript. Also, I hate dealing with “mind map” visuals for complex branching vs. code in text. (This is a minority opinion.)
Unreal Engine. Look, I respect what one can do with this, but this is wildly overkill for a glorified choose-your-own-adventure-style slide show in 2D. :p
You might ask why I’ve ping-ponged around exploring so many options. Some of these I already knew of or had worked with on a hobbyist level.
The other answer is that—look. I want to spend the time up-front to look at: What is the best development environment and game format for the intended play experience, story, themes? For which the answer could hypothetically been PICO-8 or “this thing that you code on an ancient TI-85 graphing calculator.” (Ask me sometime about how Wiggins & McTighe’s pedagogy textbook Understanding by Design was terrific game design prep.)
I have a number of desiderata I haven’t detailed here, but the other answer hinges on the fact that I prefer to blow time up-front in (essentially) fake R&D exploring options to find the one that makes the most sense for my use case. I would vastly prefer not to have locked myself into a codebase (etc.) and discover 73% to completion (lol) that I need to ditch it and refactor the entire thing for a completely different system. Signed, I still have the half-coded Frankenstein’s monster of a parser IF game from two decades ago I started coding in Inform 6 before Inform 7 was announced, and which remains incomplete because I ran out of steam refactoring the code.
But Yoon, you ask, what about the game design document? It partially exists and needs work, but also, this post is long enough as it stands. 🙂 More anon.
—Yours in calendrical heresy,
YHL
[1] My household laughs at me whenever I claim “laziness” and points out that things I have been doing for fun in the last six months include: gesture drawing, reading up on audio plugin development in JUCE and/or C++, Armenian ethnomusicology, and applications of optimal transport. On the other hand, I’d argue that sometimes gritting your (my) teeth and learning things properly the long way around is the “laziness” solution, vs. haring off after shortcuts that are mirages in reality. :p