Novelation Scripting Language – First Draft

What’s new in Novelation

Hey everyone! Just wanted to give you an update on how Novelation is coming. Due to feedback the Novelation UI was completely reworked, and the system is far more flexible than it used to be! Gone are the days of restrictive naming conventions and the busy work of setting up a new screen. The old system was flawed, and it tended to hide some of its inner workings to appear more user friendly. This didn’t give the kind of control you would want on your project, so everything is now visible and editable by the user. On top of all this there has been a lot of back end work done to make Novelation more modular, thus preparing it for its future of updated features.

If you missed what Novelation is, check out the post here for details!

Novelation Scripting Language

The Novelation Scripting Language, or NSL for short, is the scripting language that Novelation uses to interpret your story into a visual and audible experience. Think of it as the script to a stage play, with you as the writer and director, and Novelation as the actors. It is designed to read like a stage play so that it is easily read even in a larger story. It needs to be simple enough to write, to avoid strict rules and use simple wording that is easy to remember. So I would like to show you the first iteration of NSL. Be warned, it is a very rough idea of what NSL is going to be.

//anything that begins with these two slashes '//' is ignored, which is useful for placing comments!

//this is the label denoting a new scene, in this case the starting scene.
#scene start:
screen 'MainStage' //this changes the screen we are on to the 'MainStage' screen.
background 'Backgrounds/Battle1' // this changes the background to the 'Battle1' background.
music 'Music/Calm' //this starts playing the music file 'Calm' on a loop.

//This simply puts the text in a text box with no name box
"The world seemed still, but there was a foul odour in the air. Something was coming."

//This does the same thing as above, but all the character data from the character Frii is attached to it.
//This includes things such as: Font, color, name, and direct access to character images.
Frii: "Looks like I'm not alone after all. This should be fun!"

sound 'Sounds/Enemies/Roar' //this plays a one shot sound file, in this case 'Roar'.

//This takes things one step further, because we are setting some parameters for our dialogue.
//Parameters are set by placing a comma after the initial function and supplying the variable you wish to alter.
//In this case we are assigning the dialogue with a sound file for voice acting, as well as overriding the font and color for the text.
//By default the font, color, ect. are determined by the character's data. If no character is specified it uses the global settings.
Frii: "There you are, show me what ya got!", sound = 'Frii/Cocky', font = 'Fonts/Default', color = '255, 0, 0, 255'

//In this case we are using 'Beast' as a character name without actually having a character named 'Beast'.
//This will use the default font and color settings unless specified.
'Beast': "Leave, outsider!"

scene 'battle' //this leads to the 'battle' scene, so it will exit our current scene.


//this is another scene. Scenes are highlighted in purple for easy searching
#scene battle:
screen 'MainStage' //we are already on this screen, so this will actually do nothing. Though it is nice to always specify this for when you are testing out individual scenes.
background 'Backgrounds/Battle2', transition = 'Fade' //This will change our background to 'Battle2'. We have set the transition to fade effect.
music 'Music/Combat' //Currently we are playing 'Calm' on a loop, but only one music will be played at a time so 'Calm' will stop playing and 'Combat' will start playing on a loop.

//so this seems similar to a previous example, but notice how for the font we are setting it to 'Frii.font'?
//this sets the font to the font that the character 'Frii' uses, even though we aren't officially using the 'Frii' character.
'Frii': "Woah, that was a close one!", sound = 'Frii/CloseOne', font = Frii.font, color = Frii.color

//this is just a standard line
"The beast goes in for another attack."

//Notice how we are setting the 'wait' parameter to false? By default it is set to true for sounds.
//When wait it true it will wait for the sound to finish playing before continuing, but in this case it will start playing it and skip straight to the next action

sound 'Sound/slash', wait = false

wait 500 //this will cause a delay of 500 milliseconds before moving on

//whatever is between the <i> and </i> will be italicized
Frii: "Ok, <i>now</i> this is getting personal!", sound = 'Frii/Personal'

//There is a scene after this one, however, because we never told it to go to it this is where our game will end.
#scene victory:
screen 'mainstage'
Frii: "Hah, I knew I would win!"
screen 'Credits' //this will go to our credits screen, and because nothing is after this the game would also end here (if this scene could be reached).

And here is a clean version of it without the comments:

#scene start:
screen 'MainStage'
background 'Backgrounds/Battle1'
music 'Music/Calm'

"The world seemed still, but there was a foul odor in the air. Something was coming."

Frii: "Looks like I'm not alone after all. This should be fun!"

sound 'Sounds/Enemies/Roar'

Frii: "There you are, show me what ya got!", sound = 'Frii/Cocky', font = 'Fonts/Default', color = '255, 0, 0, 255'

'Beast': "Leave, outsider!"

scene 'battle'


#scene battle:
screen 'MainStage'
background 'Backgrounds/Battle2', transition = 'Fade'
music 'Music/Combat'

'Frii': "Woah, that was a close one!", sound = 'Frii/CloseOne', font = Frii.font, color = Frii.color

"The beast goes in for another attack."

sound 'Sound/slash', wait = false

wait 500

Frii: "Ok, <i>now</i> this is getting personal!", sound = 'Frii/Personal'


#scene victory:
screen 'mainstage'
Frii: "Hah, I knew I would win!"

screen 'Credits'

Announcing Novelation – A Visual Novel Tool for Unity

Hello everyone! I would like to present to you Novelation, a visual novel toolkit made for Unity 5. It is in development right now, and I need your help to build it!

 

Why Unity?

Novelation takes full advantage of Unity’s rich feature set. It can be exported to 21 platforms, has a suit of graphics options, and Novelation makes extensive use of the new UI. The new UI allows for quick and easy layout customization, with minimal programming required! It is an industry standard, and as such is well documented and the support community for it is larger than that of any other game engine. You are also able to take full advantage of Novelation’s source code, which was done in C#. If you dislike Novelation’s interface or want to modify one of its features, you are free to do so!

 

Current Features

Novelation is still in the early stages of development, but here are some of the key features already in:

  • Exportable to 21 Platforms
  • Fully Modular UI
  • Flexible rendering resolutions
  • Support for multiple aspect ratios without designing your UI around each of them
  • Source Code Access
  • Easy Screen Creation and Editing
  • UI preview as you build it
  • High Performance
  • Debugging Tools

Screens are simply things like the title screen, credits, the main game screen, ect. I wanted a way for you to easily make and switch between these different screens. The debugging tools are a must for those who are not familiar with Unity, so a lot of work is being put into them. I already have more advanced debugging features such as recovering lost screen data. This is just short list of what Novelation has to offer and it will grow with time.

 

Planned Features

Well for the most part, that is up to you fine folks! I am looking to make the tools you need to work your craft, so who better to ask than you? I want to know what all you need to make a visual novel, and what kind of workflow you are looking for. Though I do have some general features I want to put in:

  • Drag and Drop Scene Scripting
  • Node Based Scenes for easy overview and editing of you branching paths
  • Novelation Scripting Language (optional use)
  • Screen Transitions
  • Animated Characters
  • Skip Feature
  • Auto Advance Feature
  • Save and Load

As time goes on I am sure this list will continue to grow, I want to make the tools you need to bring your stories to life.

 

Design

So for the overall design I want the user to be able to stay away from coding, but not exclude it entirely. Anything that can be done in the scripting language should also be able to be done within the Novelation interface. I want to allow creators to get that story out of their head with minimal resistance. Novelation actually started out as a way for the narrative designer at my studio to get ideas out of his head without needing our programming staff to assist him. This way he can write stories in his spare time and actually release them as full games! That simplistic approach is the ultimate goal of Novelation, while still allow for complete control by more advanced users. And if you know C# the sky is the limits, as you will have complete access to Novelation’s source code!

 

Final Remarks

So, I want to hear what you all think of Novelation. I will be putting up some videos of it in action when I get the time, but for now I need to know a few things. Does this sound like something you guys would like? Why or why not? What sort of crucial features do you need to get those stories out of your head? What sort of features have you always wanted but never had an easy way to implement them?

For any questions simply post them below and I will answer! I thank you all for your time in reading this, and look forward to continuing development with you all  :)