Posted June 14, 2023 by Nat Quayle Nelson
I don't play many visual novels, but in the ones I have played, I always love it when you can pull up a log of the recent dialog. It's such a great feature because I'm constantly zoning out or getting distracted lol. And as a writer/artist I'm not very happy with glossing over parts of well-written content. I want to go back and make sure I absorb everything, so I use features like this in VNs, and I always watch TV with subtitles and rewind when I get lost or confused.
I gather that VN fans have come to expect/demand a dialog history feature. Newer Phoenix Wright games have this, and hell, Tears of the Kingdom has it, too:
Ren'py has this feature built-in. If I could go back in time by a few years and give Ren'py a shot before making my own engine for this, I would. But I'm in too deep at this point, so I had to implement my own dialog history window.
Here's what I came up with in my engine:
I'm trying to keep all UI in the game extremely simple. Text-only (though not strictly on an ASCII grid or anything). The X button on my windows is just a label set to "X". For the up/down buttons on the history window, I knew I could use "^" and "v". which I think is how I've seen it done in true ASCII games. But I don't want to UI to look so wonky that the up and down buttons aren't even symmetrical. So I just used "v" for down and flipped the same text sprite upside-down for the up button. Success!
I should probably let scroll wheel input also control this. And arrow keys. And maybe add a draggable scrollbar (ick--hard to do something like that in HaxeFlixel when you're too stubborn to use the provided ui library).
I also realized this week that I hadn't even considered adding gamepad support yet. Much left to do... But I'm closer than ever to having all the core features ready for beta testing.