# Final Steps To Master NarrativeFlow <a href="https://www.youtube.com/watch?v=4mDk_p6UUao" target="_blank"> <img src="https://narrativeflow.dev/DocsImages/Walkthrough%20Part%203%20Video%20Thumbnail.webp" alt="Walkthrough Part 3 Video Thumbnail"> </a> In the previous part of this walkthrough, we learned almost all of the remaining features in NarrativeFlow and how they speed up and improve your workflow. In this third and final part of the walkthrough, we'll discover the last few features. We'll also talk about how you can use features you've already learned about in perhaps non-obvious ways to further speed up designing your stellar narrative. We're so close to becoming NarrativeFlow and Narrative Design pros, so let's dive in now! ## Advanced Quick Access And Text Style Usage In part 1 of this walkthrough, we learned how the Quick Access menu works and how to define items for it. In the example for that, we simply inserted a name. Since then, we've learned about variables and text styles. Let's say that every time we insert the player's name into our narrative, we want it to be a special color. So we define a variable, such as `[PlayersName]`, and a text style, such as `{sky-blue}` & `{/sky-blue}`. Then, it's as easy as inserting both the variable and the text style, and boom, you've got your styled player's name every time: `{sky-blue}[PlayersName]{/sky-blue}` What if there's an even easier way though? There is! All we need to do is simply define a Quick Access item like this: `{sky-blue}[PlayersName]{/sky-blue}` And instead of having to insert both the variable and the text style every time, all it takes is two clicks to insert them both at once! Let's look at some more uses of Quick Access, as well as some non-obvious uses of text styles. For example, let's say that in your narrative you wanted to tell the player which button to press, such as during a tutorial sequence: "To jump, press the `A` button." Instead of displaying a letter, you want to display an image/icon of the `A` button. This is especially the case for controller buttons that aren't a letter. How do you do this? Thankfully, there are several different ways we could accomplish this in NarrativeFlow. One example is you could define a unique Quick Access item with a value like `<a-button>`, and tell your game engine to look for and replace that with an icon. You could also use text styles to accomplish this: `{icon}A-Button{/icon}`, and tell your game engine to replace that tag and its content with the relevant icon, in this case the A button. You could easily define an emoji tag as well: `{emoji}smile{/emoji}`. Some games, especially games whose narrative is mainly presented through text boxes, will sometimes implement a pausing effect in between specific words, or even have specific words be "printed" slower than normal in the text box. This creates various emotional effects and adds "life" to their dialogue. To implement a pausing feature, you could define a Quick Access item like this: `[pause]` This variable could signal to your game engine to wait, for example, 1000 milliseconds before continuing to print the next word in the text box. To implement a slower printing word functionality, you could define a tag like this: `{slow}I am text that prints slower than usual{/slow}`, which could signal to your game engine to print text within those tags slower than other text. NarrativeFlow was designed to facilitate an environment where you can finally tell the story YOU want to tell, so there are *several* ways you can define how to display and enhance your narrative in NarrativeFlow. Ultimately, YOU have the freedom to decide how you want to accomplish something and what your game engine does with your narrative. These are simply some examples of how you could accomplish something unique, complex, or uncommon that may not be as obvious. ## The Script View - A Different Perspective Of Your Narrative Content For Easier Review And Editing If you've ever wanted to view your narrative in a document-like format or needed to review your narrative for typos, consistency, or grammar and didn't feel like opening each node at a time (seriously, it'd be a pain), then the Script view is your hero. The Script view let's you view the narrative-content Nodes in the currently open Experience from a document-like perspective. This is also where the upcoming translation features will be, which will allow you to easily add translations for your narrative. Let's try the Script view now. Go ahead and create an Experience with the following Node chain: ![[01 - Node Chain For Script View.webp]] Then, let's click the "Script" button in the workspace toolbar. Now we're in the Script view! ![[02 - Script View.webp]] We can see five items: a flow start, three dialog items, and a flow end. The three dialog items are our three Dialog Nodes. Any changes we make to them are the same as making changes to the Nodes themselves. Each item has two parts: an input field, and a Presented Text area to the right of the input field. I mentioned that the Script view lists all of your "narrative-content" Nodes, not *all* Nodes. Let's go back to the Nodes view and add a Variable Node in our chain. Now, when we go back to Script view, nothing changed there. This is because Script view was designed to clear the technical clutter and help you review your narrative, check for typos or grammar mistakes, easily make changes to several Dialog and Choice Nodes at once, etc. So instead of displaying all Node types, only the actual narrative content—your Dialog and Choice Nodes—are displayed, as well as items to signify how your Dialog and Choice Nodes are connected. Let's go back to the Nodes view and replace the variable Node with a Choice Node, creating a branch in our narrative. ![[03 - Node Chain With Choice Node.webp]] Now, when we return to the Script view, we can see that our Choice Node, because it has more than one choice, tells us that our narrative flow splits into multiple branches and provides buttons to automatically scroll our view to that item. In addition, we now also have items at the beginning of those branches that allow us to quickly navigate back to the item that created that branch. ![[04 - Script View With Choice Node.webp]] A gray line across the view means that the item following the line is the start of a branch. A purple line across the view means that the item following the line is the start of a separate Node chain. Narrative in video games—especially intertwined, non-linear, complex narrative—can become a web of links. While NarrativeFlow does it's best to display branching, sophisticated narrative in a way that makes sense, some narrative chains may be quite difficult to list in a cohesive, effective manner when presented in a document-like format like Script view. This is simply the nature of non-linear narrative. And this is why *both* the Nodes and Script views are available, not just one or the other. While the Nodes view is great for designing the "logic" and flow of your narrative, Script view provides a different perspective tailored for reviewing, editing, proofreading, and polishing your text. And as mentioned earlier, this is also where the upcoming translation features will be. At the top of the main workspace when in the Script view, you'll notice that the toolbar has a few different elements compared to the Nodes view. First, in the Script view, there are buttons to insert Quick Access items, Variables, and Text Styles directly into the Dialog and Choice fields. Next, there are two settings to display either only the text input fields or the Presented Text areas, which allows you to clear some of the visual noise if you don't need both to be visible at once. ## The Data Table Modal - The Right Place For The Rest Of Your Text Experiences and Nodes are great places for your narrative chains. Yet where should your item, character skill, or region descriptions go? Should your in-game codex be designed as Nodes? If so, how would that even work, and would that really be the most efficient way to implement just simple pieces of individual, isolated text? Thankfully, NarrativeFlow has a purpose-built feature for this: the Data Table modal! Let's open the Data Table modal by clicking the button in the Menu Bar labeled "Data Table". This modal looks almost exactly the same as the Quick Access modal, with a key difference being that you can use the Quick Access menu here to insert any of those items if you need them. Let's say you wanted to define descriptions for the skills of each character. First, create a new group and give your new item a name. This name is how you'll tell your game engine where to retrieve the content you associate with this item (i.e. the information "stored inside" it). For example, I'm going to name my group "Player Skill Descriptions", and give my first item the name "Wind Blade". Then, all we need to do is fill in the value field with a description. ![[05 - Data Table Modal.webp]] Any text-based data that doesn't need the power or functionality of Nodes can easily be added to your Data Table and used anywhere by your game engine however you want. And just like Quick Access items, dialog, choices, etc., you can add text styles and variables to your Data Table items. # Final Thoughts And Thank You You did it! You made it through the entire walkthrough and learned how to design your masterful narrative with NarrativeFlow. *You're amazing*. I know you can craft something incredible. Something that makes the world a better place and bring smiles and laughter to people. So, truly, *thank you* for your time, your patience, your enjoyment, and your trust. Creating NarrativeFlow was a journey that started over 8 years ago, right before my parents got a an ugly divorce which resulted in my mom, sisters, and I losing pretty much everything. And after my mom died horrifically a few years later, I promised myself I would help make the world a better, happier, more productive place. NarrativeFlow is one part to accomplishing this, and I truly do hope and pray that *your* life is enriched and blessed through this effort. You can be sure that your support fuels this goal. Unlike many people I knew growing up, I won't betray others, I won't give in to greed, and I won't give up on humanity. *Thank you,* ***- Mitch***