I want to make a Visual Novel using C++ , but from where do I start to make something easy to access for the designer too?
I was thinking of using Data Tables for dialogues and choices and just… jump from one Data Table to another when the scene changes, but I have a couple of questions:
is it doable? Are Data Tables easy to access and weightless?
is there a better way to store dialogues and player choices as you go through the story?
I used json for creating procedural systems. There is one problem with files like json: they are not packaged by default into game files, you need to watch it yourself. Yes it is possible, not hard, but it is your responsibility.
Data Tables are nice, however have you seen Data Assets?
You can make data asset loader/manager, that scans certain folders for data asset of a type/class.
Then you can make folder structure corresponding to quests/story chapters. You put your data asset in those folders (that have some certain filename+folder naming convention).
Add to this blueprintable editor tool to see and modify them. And on top of it all you have tree structure (from file folder system), you can modify story just by moving Data asset file.
And you can also create editor tool that reads json and creates all data assets in correct folders.
But can a Data Table store a Data Asset too?
I want the designer to be able to add whatever they need when required, so, would it be able to create a Data Asset Character, for example, and then, the Data Table, when referencing which character is doing what, have a Data Asset of said character as one of its members?
Data tables are kind of arrays of data assets (each put in single row).
You can either use google doc (and tables there) then import whole data table into unreal.
Or edit data tables in unreal (it is tedious manual labor in unreal).
Or you can use bunch of data assets and use folder structures to make hierarchical data (like different branches for quests etc. (you do not have hierarchy in data tables). Data assets can be opened in asset browser and edited there, can be created in editor tools, or just copy existing data asset and edit it.
So data tables = linear array of “data assets”
Data assets = no array, but you put everything in folders, have folders hierarchy, can use folders names and data asset nemes together with custom loader to forr eg. Load folder with subfolders for some quest branch etc.
In my opinion, the ideal solution would be to create a custom Graph with dialog stage nodes with dynamic pins for each answer option. This way you (your designer) can create branched dialogs easily as possible.
There is not as much information on the net as we would like, and that is only about basic things. You will have to look at a lot from the engine source code.
You need everything related to UK2Node, UEdGraphNode, UEdGraphSchema_K2.
SGraphNode for custom visual.
FBlueprintEditor, FBlueprintEditorUtils, FEdGraphUtilities will also be useful.
This sounds like the easiest solution.
But, since I want to make it as easier as possible to use for non UE users… do you think I could just make a Dialogue Editor, just to handle the dialogue portion, instead of filling rows and rows with dialogues and choices?