Visual Novel Framework - Full System

Greetings everyone! I recently released my Visual Novel Framework on the marketplace. I’ve been making visual novels in UE4 for about 2 years now, so this is a comprehensive system designed to handle large branching scripts and detailed character sprites with multiple layers and costume changes.

Here’s the marketplace link: Visual Novel Framework - Full System in Blueprints - UE Marketplace

Here’s the trailer:

Here’s a breakdown of the main included features:

  • Flexible scene system using datatables
  • Includes instructions of how to convert your external scripts into usable .csv files
  • Ability to branch scenes based on conditions
  • Voice acting can easily be inserted into scenes as Sound Cues
  • Characters can spawn in 3D space OR display in a UMG widget
  • Complex, flexible choice system
  • Automatically tracks and saves player choices
  • Supports cycling choices so player can see more than one option
  • Supports nested choices (a choice within a choice!)
  • Characters can contain several layers for dynamic use (hair, mouth, clothes, etc.)
  • Change character costumes and hair as story progresses
  • Saving and Loading system
  • Animated blinking and mouth movement (even in UMG widgets!)
  • Auto Mode
  • Supports skipping or rolling back through text
  • Allows you to easily add dynamic camera angles to your scenes, such as character closeups
  • Includes a basic menu system with gamepad functionality
  • Options for text speed, text size, and audio levels
  • Change levels and sublevels between scenes
  • Full Gallery system to display CG illustrations and unlock them as player progresses
  • Persistent data that can be used for CGs and more

The documentation is here: including a few video tutorials to help you get started. I will make more video tutorials and add to the documentation as questions arise. I hope you all enjoy this framework, and I’ll answer questions as often as I can!

I may not check the forums too often, so if needed, you can email me through this contact page: Contact - Woodsy Studio

Hello everyone! I have added some features to the VN Framework since its initial release. Here’s a quick list:

  • New system for displaying characters as widgets
  • Side portraits and spawned sprites now use the same source sprites
  • StatLog added to the framework. This tracks stats that are affected by choices
  • Added character nickname feature, so you can display custom names for characters during each scene
  • Persistent data now includes a SceneLog and MCLPersistent array. Skipping is enabled or disabled depending on what the player has already seen
  • CGs can now be added as sprites OR textures

I have made several tutorials for the VN Framework, as you can see here:

Converting scripts to datatables:

Character Creation:

Launching Scenes:

Creating Sprite Sheets in UE4 and Setting Poses:

If you would like to see additional tutorials, please let me know and I’d be happy to make them!

Hello, is this framework can support full 3d ? I mean instead of sprites I want to use 3d rigged models with animation.

So It’s been two months since I’m using this system. I saw lots of dialogue plugins but this is much easier. especially lots of things are built-in (like save system, Achievement and …)

I post this because it explains things that not mention by the developer in documents or it was hard to understand, so I asked her and she kindly responded, So basically I’m sharing those here so everyone can use it.

How to make choices?

So basically add Choice*_* into the SpecialEvent. The first * is the number of choices made in the scene. And the second is the number of choices in total. Let’s say in your first scene you have two choices… that’s easy you just write Choice1_1 and Choice2_2.
Ok, so let’s say you want another two choices in your SECOND scene. Well, it’ll be Choice1_3 and Choice2_4.

I have a choice in choices (Nested choices) and it won’t work, Why?

For that use _Nest at the end of the choice. (like Choice2_2_Nest) and at the end of the Nest (before the next ChoiceStart) add DiamondbackChoice (be careful how you write as this is case sensitive ). If you don’t use Nest, then the system will mix the choices and get into a loop, but if you use Nest, it ignores the Choice and ChoiceStart of that nest and look for the correct one. You can download the data table below to understand. (663 Bytes)

What is this X after choice? What are these numbers?

You use X when you don’t want to give a number (she explained it in “**THE “CHOICEX” OPTION”) **

but the numbers after the choice (like Choice6_21) it means in total there are 21 choices in Masterlog and it’s the sixth choice in the current scene.

I have a Choice*Start and it ignores the text of this column, and jumps to the next line?

Probably you didn’t type anything in Choice*_* column. If your text field is empty in that section, then it would ignore the line for your Choice*Start.

How can I add Column to Script lines? (like SpecialEvent or Speaker column):

1.first add it to “ST_ScriptLines”

2.then open SceneTemplate_BP and search for “Make ST_ScriptLines”

  1. Connect your new column from “Break ST_ScriptLines” to “Make ST_ScriptLines”

What is the Stat system? How many types are there?

Currently, there are only two stats for each character. He/she like it or not. Even if you give 100 for a choice (like Stat0+100) it would print like you just add one.

This is actually good for tracking if a character is a friend? Mad? Enemy? And whatever using this system.

How can I add more character to the Stat system? How does the system work?

Go to WD_Dia and open BuildStatMessage and add the name to the “Switch”.

the number must be the same with your character name in CharacterDT. For example, you see Jessica as the number 0 in CharacterDT. And in BuildStatMessage she is set as 0. So if you put Stat_0+1 It adds +1 to Jessica and prints her name.

**I want to edit command in rows (like Text, SpecialEvent, and …) **

Go to Print Next Line in the SceneTemplete blueprint, from there you can find your next step.The easier step is to create your own column.

What is “not equal to 0” error?

The Print string “not equal to 0” is a warning that the MasterChoiceLog index for that choice has already been used. Use the next free number.

I update this as I work…