Designing a visual novel engine – looking for feedback
Hi everyone!
I’m a software developer who has recently been experimenting with the idea of building a new visual novel engine. I’d love to hear feedback from anyone interested in visual novels, especially those who have experience creating them.
One of the core ideas I’m exploring is separating script logic from visual editing.
The story script, branching logic, conditions, variables, and other gameplay-related controls would remain in code. Visual elements such as backgrounds, character sprites, CGs, UI layouts, and scene compositions would be edited through a graphical editor. The script would then switch between predefined visual states by referencing IDs.
My goal is to improve workflows for larger projects by:
- Allowing artists and designers to preview and edit scenes visually.
- Reducing the amount of visual setup that writers or programmers need to maintain in scripts.
- Keeping narrative logic and presentation relatively independent.
For the scripting side, I’m also considering a language where VN-specific features are integrated directly into the language itself. For example, dialogue and narration could be written naturally inside control structures such as if statements, loops, and functions, rather than being separate commands.
I’d love to hear your thoughts:
- Does this workflow sound practical to you?
- What are the biggest pain points you’ve encountered when developing visual novels?
- If you’ve used engines such as Ren’Py, Tyrano, KiriKiri, Nscripter, or others, what did you like or dislike about them?
- Regarding scripting languages, what would you prefer:
- Something close to an existing language (JavaScript, Python, etc.)?
- A new language designed specifically for visual novels?
- Would you prefer:
- A stricter language with stronger static checks and error detection?
- A more flexible language with fewer restrictions but less tooling support?
I’m still in the exploration stage, so any opinions, criticisms, or ideas would be extremely valuable. Thanks!