23 June, 2025
Well, here's something that I think a lot of people are going to have mixed opinions on. I've recently completed my first visual novel and I used AI to generate the art, specifically OpenAI's Sora which really does excellent work in my opinion. I'll go into some details later about why Sora is so good for this job, but first let's talk about what I mean when I say "visual novel".
A visual novel is generally a story with pictures where the user clicks forward through dialog after each character speaks. There's a ton of different versions of this formula, but the one I landed on is very standard. My VN is named "Chatty's Cafe Adventure" and is a very lesbian story with a main character based on my Second Life cafe's LLM-powered chatbot. So, if you really think about it, there's two levels of AI involvement happening here! Chatty meets three interesting ladies during her day working at the cafe, and in the end she has an opportunity to go out on a date with one of them.
Pretty basic stuff for a visual novel, but I think it went well and it has its own charm to it, especially if the reader is previously familiar with my chatbot's personality (and me, I have a little self-insert moment, of course). It's not a long read, having only three chapters and one choice at the end, but it was my very first try at making a VN so I think that's a reasonable length.
I actually wrote a whole visual novel system to create this single visual novel, as it's meant to be displayed only inside of Second Life and there wasn't a previously-existing solution for this. Because of how I coded it, the story can be completely scripted by a notecard in the object's inventory which tells the object when to change images, what text to display, when a choice should be displayed and how it should be handled, etc. The idea of writing the system like this is that it'll be easier if I want to produce more stories later on, and also I plan to offer this system for other people to use as well.
Now, let's talk about the AI part of this process! I didn't use any AI for the coding itself, or for writing any of the story. Not that there's anything wrong with that, but just to be clear where AI was involved and where it wasn't. I can code, and I like to think that I can write, but where I generally fall flat is in making my own art. Other people may not agree with me, but I see AI as a good accessibility tool for helping people to make up for their deficiencies. I probably wouldn't have been able to make a visual novel at all without AI as I don't have the money to pay somebody else to make the art and I'm not willing to beg someone to do it for free.
I went with OpenAI's Sora model for creating the art because I think that it's really the best image generation model on the market right now, but also because of its character permanence which is something that I find is pretty unique to Sora. I can have it generate characters to a description that I give it until I find one that matches up with what I want, and then I can tell it to stick with that character and request multiple different poses and even to use that character in full scenes with other characters which I have made.
I have to say, to me it's pretty magical for me to be able to tag two different images of two different characters and then say, "OK, now these two are out on a date, this one is doing this and this one is doing that" and just...have it work. I mean, really think about that. It's mindblowing that we have this capability now.
Overall, I'm pretty happy with how everything came out. I really hope that I'm able to make another one soon! I need some ideas for a new story, and it does take some time to write everything down and generate all of the images, but the second one will (hopefully) be a lot easier now that I have the system itself written and I just have to twiddle around with a notecard. I really do hope that other people enjoy reading these, but at the end of the day it's kind of like this blog: I want to write some things down, and whether people actually read them or not is kind of a secondary thing.