WorkShop 0005 StoryTelling

I have enjoyed this Workshop a lot, and I would have enjoyed it more if I hadn’t had to start it again 3 times. The first time, I forgot to save it, or I didn’t save it, I don’t remember it well. And the second time I had a weird supper bug in which all the Passages() were blocked and I couldn’t edit them.

But anyway I have to say that repeating it 3 times has helped me to find out how many macros, code, css and ways to tell a story work.

Root – Interactive History.

For my interactive story I’ve been a little inspired by the game “The Standly Parable.” Or somehow try to show the Narration as they did in this game. I have discovered that it is not easy to tell a story with rhythm, only with words and a few links… You need to get the person’s attention and not get bored. On this subject I have to investigate and learn even more.

On the other hand I have seen that Twine is a great tool, not only to create Interactive Stories, but as Story board with code. This is great. Because I see it as a great way to prepare your projects, and then move them to other platforms.

//Three Act Structure

It took me a long time to get started. I knew approximately what I wanted to tell, but I didn’t know which way to go or which routes I wanted, how many characters, if my characters were going to talk a lot or not. The only thing that was relatively clear was the protagonist and the finals.

https://i.imgur.com/e9QKNfc.png

It was stuck and I couldn’t go on. But thanks to my partner Elisabella I managed to continue my interactive story. She recommended me to do the Three Act structure. And there to go putting the strongest points of my history. And from then on I added more and more information, more text and more possibilities.

This methodology for narrative has enchanted me, it has made me see that stories can be taken out of the mind, in a more orderly and meaningful way.

Walking Dead

The Standly Parable

// Time Code

:: StoryTitle
Delayed Text in SugarCube

:: Start
<<timed 5s>>
It has been 5 seconds. Show the text!
<</timed>>

//Locks and Doors

:: StoryTitle
Lock and Key: Variable in SugarCube

:: Start
<<set $key to false>>

Rooms:
[[Back Room]]
[[Front Room]]

:: Back Room
<<if $key is false>>
    Items:
    <<linkreplace "Pick up the key">><<set $key to true>>You have a key.<</linkreplace>>
<<else>>
    There is nothing here.
<</if>>

Rooms:
[[Front Room]]

:: Front Room
<<if $key is true>>
    [[Exit]]
<<else>>
    Locked Door
<</if>>

Rooms:
[[Back Room]]

:: Exit
You found the key and went through the door!
<<link "Open dialog!">>
    <<script>>
        Dialog.setup("Dialog");
        Dialog.wiki("Text within the dialog window");
        Dialog.open();
    <</script>>
<</link>>

//Open Dialog

I used that Script to open a window, when pick up a object.

// Stadistics

This code modifies variables on screen, and updates them, to check them later. Although I have not used this code, I have left it here because I found it interesting enough to use in the future. Who knows.

:: StoryTitle
Player Statistics in SugarCube

:: Start
Empathy: \
<<link "[+]">>
    <<if $totalPoints gt 0>>
      <<set $empathy++>>
      <<set $totalPoints-->>
      <<replace "#empathyStat">><<print $empathy>><</replace>>
      <<replace "#pointsStat">><<print $totalPoints>><</replace>>
    <</if>>
<</link>>\
<<link "[-]">>
    <<if $empathy gt 0>>
      <<set $empathy-->>
      <<set $totalPoints++>>
      <<replace "#empathyStat">><<print $empathy>><</replace>>
      <<replace "#pointsStat">><<print $totalPoints>><</replace>>
    <</if>>
<</link>>
Intelligence: \
<<link "[+]">>
    <<if $totalPoints gt 0>>
      <<set $intelligence++>>
      <<set $totalPoints-->>
      <<replace "#intelligenceStat">><<print $intelligence>><</replace>>
      <<replace "#pointsStat">><<print $totalPoints>><</replace>>
    <</if>>
<</link>>\
<<link "[-]">>
    <<if $intelligence gt 0>>
      <<set $intelligence-->>
      <<set $totalPoints++>>
      <<replace "#intelligenceStat">><<print $intelligence>><</replace>>
      <<replace "#pointsStat">><<print $totalPoints>><</replace>>
    <</if>>
<</link>>
<<link "[Reset Points]">>
    <<set $empathy to 10>>
    <<set $intelligence to 10>>
    <<set $totalPoints to 5>>
    <<replace "#empathyStat">><<print $empathy>><</replace>>
    <<replace "#intelligenceStat">><<print $intelligence>><</replace>>
    <<replace "#pointsStat">><<print $totalPoints>><</replace>>
<</link>>

Empathy: <span id="empathyStat">10</span>
Intelligence: <span id="intelligenceStat">10</span>
Remaining Points: <span id="pointsStat">5</span>

[[Test Stats]]

:: StoryInit
<<set $empathy to 10>>
<<set $intelligence to 10>>
<<set $totalPoints to 5>>

:: Test Stats
<<linkreplace "Make an intelligence check?">>
    <<set _result to random(1, 6) + $intelligence >>
    <<if _result gte 15>>
    Intelligence Success! (_result >= 15)
    <<else>>
    Intelligence Failure! (_result < 15)
    <</if>>
<</linkreplace>>
<<linkreplace "Make an empathy check?">>
    <<set _result to random(1, 6) + $empathy >>
    <<if _result gte 15>>
    Emaphy Success! (_result >= 15)
    <<else>>
    Empathy Failure! (_result < 15)
    <</if>>
<</linkreplace>>

//Undo

:: StoryTitle
Programmatic Undo in SugarCube

:: Start
[[Enter the Darkness]]

:: Enter the Darkness
<<back "You are not ready! Go back!">>

//Creating Headers And Footers

//You have to create a Passage with name as showing down.

:: StoryTitle
SugarCube: Headers and Footers

:: Start
This is content between the header and the footer.


:: PassageHeader
This is the header!


:: PassageFooter
This is the footer!

I wanted to create a Header on all pages because I want the player to have access to his inventory at all times. and be able to go back and continue.

I have also added an If to check if the current passage is inventory, so that the inventory link does not appear in inventory….. Loop!

// AddItemsInventory

After a little research I finally found a way to add items to my inventory with a click! the command I used is <> that receives text, and you can add in half what you want to happen when the player clicks. In my case I have added it.

<<if $inventory.indexOf("Scissors") == -1>>
		<<link "There is a Scissors here. ">>
		<<addToInv "Scissors">>
                <<goto [[Scissor]]>>
		<</link>>
<<endif>>
<<set $pass to previous()>>
	<<if previous() is "izquierda">>
			<<if $bucle === 2>>
				[[Derecha]] 
			<<else>>
			<<set $bucle to $bucle + 1>>
				2 [[izquierda]] 
				vamos por el <<print $bucle>> paso

			<</if>>
	<<else>>
		1 [[izquierda]] 
	<</if>>

//RnG Choice

The moment Thinky leaves the house he has to decide whether or not to dodge! This attempt to dodge I have generated with the random() function, then check if X has come out, send it to a step and if it has generated another send it to another side.

The Code finally look like that:

<<nobr>>
	<<set _esquivar to random(2)>>
		<<if _esquivar is 0>> 
			<<set _out to "correr">>
			<<set _text to "Consiguio agacharse rapidapente y esquivarlo, el hombre tropezo, y se callo al suelo. Thinky aprovecho para ">>
		<<else>>
			<<set _out to "Continuar">>
			<<set _text to "Thinky intento exquivarlo como pudo, pero fue demasiado lento y fue empujado hacia la carretera. ">>
		<</if>>
		<</nobr>>
		Intentar 
                <<linkappend "esquivar. " t8n>>
                   <<print _text>> <<link _out>><<goto _out>><</link>>
		<</linkappend>>

//Funcion previous()

Using this function I’m giving dynamism to the story so that the character passing through the same places, have different events. But I have discovered a problem. And is that if you return with the macro <<back “back”>>, the function does not save anything.

So instead you have to use [[Back|”passage”]], using it so if you load the name.

Images

Main

//Links

// Twine Hosts

https://onezero.medium.com/this-brain-computer-uses-your-jugular-like-a-usb-cable-d02b4e76d26b?gi=785ef98789b

Music: Baclou [Full Length Dark Ambient Album], Moloch Conspiracy

https://www.newgrounds.com/audio/