2018/02/13

Dialogue writing basics

!!!Grammar correction submits!!!
I've seen all the emails and the submitted fixes will be present in 1.12. I will try to organize the grammar fixing better in the future. I appreciate your efforts greatly. I will probably organize grammar "hunting season" after different version releases, so you can submit me corrected diag files without interfering with scripting fixes.

I have probably not answered all the submits (there was an veritable flood of them) but I've gathered all the fixes and implemented them.


Dialogue writing basics
I wasn't expecting such a large amount of people flocking to write for the game before I'd get my docs in order. Trying to compile this blog post has made me realize I'm not very good at creating tutorials, but here's my cruddy tutorial.


First
Familiarize yourself with the Teraurge setting and style and decide if you can/want to write for it. Read (in order): Contributor Guidelines, Content Guidelines, Teraurge bible and play the game. The mentioned documents can be found here.


Second: Set up diag_white
Get Notepad++ and import "diag_white" custom language into it. The diag_white can be found in writer docs google folder here.
How to import diag_white custom language into Notepad++

The diag_white will color different parts of the scripting language so writing valid script is easier.

Diag format explained
The dialogue script is essentially just a chain of addresses (indexes) and instructions to go to those addresses (pointers). The indexes are in curly brackets { } and pointers are in square brackets [ ].

The pointers are paired with player dialogue options that trigger them. And indexes are paired with npc dialogue that is shown when that index is accessed. The different dialogue branches are separated by dialogue dividers ||

The dialogue branch matches the depiction inside the game fairly closely. The dialogue inside the quotation marks is placed inside an animated speech bubble and the unquoted descriptive text is show in before dialogue and after dialogue boxes.


The player dialogue options can be hidden and unhidden using //showif and //hideif scripting. The functions are placed inside index and pointer brackets but they are separated from the indexes and pointer with a divider. The functions are executed when the pointer or index is accessed. The scripting also supports multiple functions separated with commas. Multiple functions are executed in sequence from left to right.


The writers docs folder has a complete list and explanations for different scripting functions in scripting functions google doc file. The writer docs are here.


Character folder
When you create a character with dialogue you should create a folder with the character's name at database/characters/ inside the game installation folder.
The folder should contain diag.txt, stats.txt, character.png and "pictures" folder for scene sketches.

The stats.txt contains all the different attributes and text information that defines the character. You can set a default_env for the character so the debug menu knows what environment you want the character to be presented when the encounter is opened from the debug menu. The stats.txt also contains the character's cards and shop items inside special brackets.


You can also change text and speech bubble colors by assigning different hex color values to the text_color and bubble_color. There's a handy online hex color picker here. I would advice against very bright colors.


Basic character structure
The most commonly used character structure uses two diag files (diag.txt and diag_questions.txt) To store different aspects of the character. The main diag.txt stores the character intro that leads into more permanent "convo hub" that houses questions entry and event/quest stuff. A new start index is then saved so the player starts from a different index than default "start", usually convo hub starting index is "met". The new start index is defined with save_index function.


The diag_questions.txt is used for storing very text heavy questions the player can ask from the character. The questions hub basically just loops trough mostly linear pieces of content. The diag file changing between diag.txt and diag_questions is accomplished with the change_diag_file function.

The writers docs folder has a complete list and explanations for different scripting functions in scripting functions google doc file. The writer docs are here.

The 1.12 tutorial content will give concrete examples about this kind of structure and


Teraurge_janitor
The game already comes with a small program called "teraurge_janitor" and it's situated inside the "database" folder. If you start the program it will greet you with an empty console window. It currently only has one command and it's check character_name.

If you write "check shyni" into the command line and press enter, the program will go through all the diag files inside "shyni" character's folder and check if all pointers have an index and if all indexes have a pointer. Note that the program will only check files that start with "diag".
Error readout for Shyni. The yellow errors here are mostly from different check_stat functions.

The non critical errors are show yellow and critical (soft locks) are shown in red. Note that the program cannot check pointers inside functions so it will always throw up an yellow error for indexes that have the pointers pointing at them inside functions like "check_stat".

The program will be expanded in the future to cover more cases and check more stuff.


Future writer comforts
The version 1.12 will feature a debug screen for writers to easily test and debug their characters. The debug menu isn't complete but it has the most important features. It will be expanded in the future to make the debugging less of a hassle.

You can start encounter with any character from the right menu. Pay no attention to "colossus_hfy" character.

The 1.12 also comes with completed "Exampla" example character that features a snarky annotated tutorial and shows off a simple character dialogue structure. The version also comes with different "empty" character templates.

The game was created to be modded and I've dedicated a lot of coding to make it as easy as possible. I can see more avenues helping people script for the game but I have to crunch the hours to get the results. But putting in the hours creating the writer tools will increase efficiency and speed of the content creation.

I will now concentrate on getting 1.12 ready. My inbox has calmed down so I encourage writers to contact me for help.

2 comments:

  1. Thank you for this! I was thinking about writing scenes for a few characters you have in the stylesheet file. Now I know how to do it. :)

    It was a good idea to open up the game for modders so even if you abandon it once still can be continued by the fan community.

    ReplyDelete
  2. I played around a bit with the current version; the only real technical issue I've had is from running it in a virtual machine and that's just because of my setup, not a problem with the game. It does seem like it'd be reasonable to try and make a character or the like, just need to see if I can come up with a good concept for one.

    ReplyDelete