Kyle is Famous

Kyle is Famous

Not enough ratings
How to Use the Editor
By pluberski
An overview and then in-depth discussion on how to use the Kyle is Complete editor, as well as a full list of commands and their possible values!

Blah blah blah read this, get writing!
2
   
Award
Favorite
Favorited
Unfavorite
Introduction
WHOA. You've gotten every single ending in Kyle is Complete? I respect you. AND I implore you to maybe take a stab at making one of your own!

The Kyle engine is pretty easy to use but has enough customization options to functionally recreate Kyle is Complete from scratch yourself. This guide written by me (John, Kyle developer) will take you through the general use of the Kyle editor and all of the various functions you can use! There is a quick reference guide in the editor if you ever just need to look up some syntax of something similar.
Basic Use
First, click on "Custom Stories" and the "New" button. That will bring up a fresh story that has some prewritten text. You can delete all of it or keep it around to act as a little skeleton for yourself - either way works!

Kyle stories are divided into sections (think like "The Kitchen" or "Outside"). The writer (you) can use as many of these sections as you want, and you can name them whatever you want. You might notice that in the example that pops up when you create a new story, there are four different sections: [properties[, [default], [afterchoice2], and [timeout]. Three of these sections are built-in sections for the editor and one is something that a user could make.

-----------------------
[properties]
This is ONLY a way for the editor to get some extra data about your story, like your author name and how much time the player should have. None of this will be displayed in game. For a full list of that data can be stored here, look later in this guide.

[default]
This is where your story will start, 100% of the time. Every Kyle story will need this. Make sure you have one!

[timeout]
This is the section that will be navigated to when the day ends in your story. Keep in mind that you can change this section name in the properties section (more detail about that below!)

[afterchoice2]
This is a section that I made as part of my test story. There is nothing special about it.
-----------------------

If a player is currently "in" one of these sections (except [properties], of course), the story will progress line by line until the section is over. A section should always end by either A. navigating to a new section, or B. ending the game. If a section does not do one of these two actions, the story won't progress and the player will be sad!

Navigating to Sections
So how do you "work" with this "sections" concept? Like, in practice, how should it work? Well, let's look at this little story that I made.

You'll see first that I have a default section and 23 hours in my adventure. The default section has a command at the end of it to take the player to the kitchen. And at the end of the kitchen section, I'm taken to the office. And at the end of the office, I'm taken to the kitchen. And back and forth and back and forth until I've taken 23 moves, in which case the "timeout" section is automatically navigated to, the player falls over, and an ending shows.

I can make as many of these sections as I want as the writer. But flipping through them one by one in a "linear" story is pretty boring, huh? Let's talk about how to add in choices.

Choices
Adding in choices to your Kyle story is fairly easy. Let's take a look back at that "initial story" that gets created when you click the "new" button. See that symbol that is followed by the word "Choice 1?" It's the ` symbol, which is found right above the tab key on your keyboard. This is the way to tell the Kyle engine that you're about to give the player a set of choices to choose from.

In this story, when the player enters the default section and goes through a couple lines of text, they will encounter a textbox that says "This is text that shows during the choices" and be presented with "Choice 1" and "Choice 2." What happens if the player chooses one of the other is shown by the text directly below each choice symbol. NOTE: the editor knows what to assign each choice by whether it is tab-indented or not. All text that gets read inside of a choice must be indented by one tab.

In this case, if the player were to choose Choice 1, they will go back to the "default" section and get the choice again. But if they choose Choice 2, they will instead navigate to the "afterchoice2" section and get a different ending!

Choices can be nested inside of each other, although I personally recommend dividing each choice out into sections like is demonstrated in this story just to keep things more organized for yourself. Just remember to use more tabs to tell the editor what each piece of text goes to!

Can I have choices that only appear if a player has done something else in the world, like getting an item? Yes. Look in the "Variables, If/Then Statements, and Variable Choices" section.

Commands
Your Kyle story would be pretty dull if it was just bits of text following bits of text without anything to break things up. There are a set of commands I've put together that will help you interact with the engine to do more things like play sounds, give the player items, store data, and other things.

What is a command? Well, we've seen one already! {navigate . . . } is a command that navigates from one section to another. As it turns out, other commands look pretty similar. One command you might have noticed in our test story is the {end . . .} command. This command will end the story for your player, showing a bit of text and setting some data in the editor to remember that the player got that ending. An example of using the end command would be like this:

{end TestEnding This Text Will Show}

This will display the ending screen with the text "This Text Will Show" and the game will use "TestEnding" as an ID in storage to remember what ending the player got.

Some other commands that the editor has are

{sound SoundID}
{item ItemID}
{guion}

And several others. An exhaustive list of commands and their use will be at the end of this guide.
Variables, If/Then Statements, and Variable Choices (Advanced)
After you've written a story or two in the editor, it becomes pretty clear that it's hard to do compelling writing without some way of telling whether the player has gone to a place, gotten a thing, and then change what dialog they get depending on it. That's where variables come in.

For the non-programmers, a variable is essentially a fancy word for "a bit of data." In this case, that "data" is always a number. The Kyle engine can remember numbers temporarily (for the duration of that run through your story) or permanently. You can do this through some commands:

{set NameOfData value} (this is the temporary version}
{store NameOfData value} {this is the permanent version}

NameOfData is any word you want to use to refer to your number. It could be "HasSeenChickens", "IsBug", or anything else. "value" is any number, although most often you'd want to simply just use 0 or 1.

So what can you do with this data? There's a few different things.

Firstly, you can change dialog based on what value one of your variables is. This is done with the ~ symbol, which is on the key right above the tab key. The way you would write this is as follows:


This would make the editor check if NameOfData is currently set to 1 (and if so, that's the text it will read), then check for if its set to 2, and then if neither of those are the case, it would read the text that's below the final ~ symbol. Keep in mind that, like with choices, these commands are tab-sensitive. Two things: firstly, please don't add extra spaces next to the ~ symbols. And also, the final ~ sign will NOT read anything after its text if it's at a lower tab indent.

In addition to these "If/Then" statements, there is one other way you can use your variables to change the text the player gets. Choices can have a check for a variable to tell them if they should display or not. If the variable check passes, the option will appear in blue instead. The way you would write this is as follows:


This will give the player the "Restriction" option ONLY if NameOfData is set to 1.

Using these variables is a matter of decision up to the writer. You could have a variable to decide whether a certain character has been talked to that day, or whether the player is going through the story for the second time, or anything else. Use this functionality creatively! It's arguably the most important thing you can do to make your story engaging.
Full List of All Commands/Property Tags
--------------------------------------------------------------
Commands
--------------------------------------------------------------
{navigate sectionName}
Changes the player to be in the section named sectionName

{end EndingID Text That Will Show. . .}
End the run through your story, setting EndingID in storage, and displaying Text That Will Show. . .

{set VarName value}
Set a variable to value (e.g. 0, 1, 99) in temporary storage.

{store VarName value}
Set a variable to value (e.g. 0, 1, 99) in permanent storage.

{sound soundID}
Plays a sound with soundID (see below for a list of all possible sounds)

{item itemID}
Gives the player an item and automatically sets a variable that is associated with that item (see below for a full list of items and their variables).

{remove item itemID}
Removes a single instance of itemID from the player's inventory.

{guion}
Shows all the GUI elements.

{guioff}
Hides all the GUI elements.

{location text}
Sets the location text to whatever "text" is.

{add varname num} {subtract varname num} {multiply varname num} {divide varname num}
Perform math operations on a variable.

{addstore varname num} {subtractstore varname num} {multiplystore varname num} {dividestore varname num}
Perform math operations on a variable in permanent storage.

{varname}
Add this inline in normal text to print out the value of a variable.

{effect effectID}
Plays an effect with ID effectID.

--------------------------------------------------------------
Property Tags
--------------------------------------------------------------
time=number
Sets how much time there is in your story. Use -1 if you want to disable the timer.

timerunoutsection=sectioname
Sets what section should be navigated to when the timer runs out.

title=name
Sets the title of your story!

previewimage=imagedir
Sets the preview image directory when uploaded to the Workshop. This line is stripped out in the version that the players download.

description=desc
Sets the description of your story!

tags=tag1,tag2
Sets the tags that will be used on Steamworks if uploaded

resetgoesto=sectionname
Sets which section the "Reset" button should go to in your story.

untiltext=text
Sets the text reading "Time Until End" at the bottom of the screen to "text."

hourstext=text
Sets the text reading "hours" at the bottom of the screen to "text."

--------------------------------------------------------------
List of Items
--------------------------------------------------------------
phone
ballofbugs
artifact
batteries
bugpuppets
claymore
flashlight
lard
litflashlight
change
notes
key
tehcnojim
timetravelbox
armor
clothes
suit
pasties
gabby
food
badfood
amnesia
gossip
lizarddemon
ghost
santa
naughtynicelist
elfbag
santasuit
hotdogsalesman
hotdogsuit
hotdogs
pen
letters
rewrittenletters
standparts
marketing
isdetective
detectivesuit
puppies
tastinghelmet
suctionhands
magnifyingglass
magicwipes
hascase
detectiveid
cds

--------------------------------------------------------------
List of Sounds
--------------------------------------------------------------
flashlight
batteries
ballofbugs
change
key
timetravelbox
notes
artifact
lard
claymore
bugpuppets
technojim
eatingbugs
eating1
eating2
pourlard
putonclothes
putinbatteries
rachelbreathing
swallow
upgradebox
unlock
slamhead
smash
smashartifact
murmur
broadcaststart
kylebecamesanta
kylecrunchelves
kylegetelves
gethotdog
getpen
getletters
getcart
rewrite
dogpant
tastinghelmet
openbox
rumble
penstroke1
penstroke2
magicalchuckle
buttonpush
slamheadcar
knocks
portal
artifactdestroy
destroybugcaller
bitebottle
gettimetravelbox
knockmansion
bigdoor
fryingpan
housedestroy
slamdesk
tearface
facesnap
tearfacebothhands
jamhandgrab
downvent
dropblade
paperstack
trip
ceilingdestroy
swordfight
isdetective
getoutofbed
opencloset
slamdoor
opendrawer
sitatdesk
penclick
shutdrawer
crouchdown
getupfromchair
uncrouch
closecloset
footstep
openfridge
closefridge
lookatpantry
makefood
gooutside
footstepconcrete
entertechshop
grabtechnoshoulder
exittechshop
reenterhallway
gabbyopendoor
leavegabbydoor
pickthroughcarpet
closepantry
becomeghost
ghostthroughdoor
ghostthroughdoor2
combthroughmold
leaveharry
producenotes
endofday
lookforhotdogs
continuelookingforhotdogs
rummageindrawer
rummageinroom
insertinbox
turnonflashlight
entermarketingagency
leavemarketingagency
slabtwistturn
fridgehoist
startfridgeswallow
continueelfsearch
searchthroughdrawers
silverwareoncookies
eatsilverware
spitfork
shakeattendant
putarmsdown
putarmsup
melt
carhorn1
carhorn2
entercityhall
exitcityhall
throughtunnel
enterdetectiveoffice
leavedetectiveoffice
chairforward
chairbackward
throughtunnelnavigation
enterdolarstore
exitdolarstore
crumple
cd1
cd2
cd3
throughtunnellong
talktocivs
grabphone
bitephone
gotojail
thinkhotdogs1
thinkhotdogs2
thinkhotdogs3
thinkhotdogs4
thinkhotdogs5
thinkhotdogs6
suckhotdog
santamagic
fartexplode
headspin
smashfacewithstuff
reindeer
elfexplode

--------------------------------------------------------------
List of Effects
--------------------------------------------------------------
shakesmall
shakelarge
shakeintermit
startrain
endrain
startfrogs
endfrogs
startspotlight
endspotlight
25 Comments
The L 7 Dec, 2024 @ 12:52pm 
Maybe that's because this was written by the maker of the game :steamthumbsdown:
Tobindog100 7 Dec, 2024 @ 12:04pm 
This Is Just A Copy Of The Guide That Is Ingame :steamthumbsdown:
★Noveria★ 24 Dec, 2023 @ 10:03am 
Nevermind, turns out that the choice stays white if it's checking for a value of 0. :ponyisland:
★Noveria★ 24 Dec, 2023 @ 8:24am 
How exactly do I make it so a choice is only usable once? I think I can probably make it work with variables, but then pretty much every option would be blue, I think. Is there another way?:ponyisland:
TrueEnder 25 Nov, 2022 @ 9:05am 
nvm seems like it's an issue with using time=-1 while having no timeout block. that said, i can't figure out how to properly add the "skip intro" button as referenced much earlier.
TrueEnder 25 Nov, 2022 @ 8:39am 
having issues with "resetgoesto", it's just going to the void. How do I avoid this?
PixelHavoc 8 Aug, 2022 @ 5:14am 
can you change the colour of text???
The L 7 Nov, 2021 @ 6:19am 
About the vaca, that's no problem, I have patience! And I tried changing the time value mid-story, it doesn't seem to work.

Yellow options, yes please! That'd be great!

Discord, hell yeah! I'm in!
pluberski  [author] 7 Nov, 2021 @ 5:26am 
http://discord.gg/TPNFGCd

If you want join my Discord - there's some people there that may or may not be able to discourse with you about the editor too. :)
pluberski  [author] 7 Nov, 2021 @ 5:24am 
Oh, and as for the yellow options - not yet. Is that a feature you'd like added?