Skip to content

Creating A New Scenario#

Alright, now comes the part we've all been waiting for. Creating a new scenario is as simple as hitting the + New Scenario button in the main window of the Scenario Mode. This will open a folder with all the files for your new scenario, set up to form a minmal working example. It will also be placed into the correct folder of the game automatically.

In the game you should already be able to see the newly created scenario in the list of scenarios, with the title Title and some default information filled in. You can already start it, but it'll be a very short adventure. Of course having it end instantly is not very useful, so let's change some things!

Info

Student Transfer will have to reload when you create a new scenario, so the game might lag or hang for a few seconds after you clicked the button. This is normal and the game will return to working order very quickly, so don't panic.

Now, first things first: Tell us something about your scenario! For this you'll have to open the scenario.json file, which will look something like this:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
{
    "description": "Description",
    "title": "Title",
    "tags": [
        "tag1",
        "tag2",
        "tag3"
    ],
    "label": "scenario_template",
    "version": "0.0.1",
    "author": "Author",
    "prefix": "example"
}

This file tells us some meta-data about your scenario and it should be pretty self-explanatory. The items to the left of the : tell you what it is that data is used for, the right-hand side is the actual data for that field. If you want to change the title of your scenario for example, you would do this:

1
"title": "Jamie's very peculiar adventure",

Warning

Though not strictly necessary, it is recommended to properly version your scenarios. The version string is split into three numbers like this 1.2.3. Each position has a name: major.minor.patch, following the SemVer standard.
You do not have to use all three numbers, for example in Student Transfer itself, for a long time we followed a very simple rule using only the major and the minor numbers:
If new content is added or this is the first release, increase the major number.
If no new content is added but resources are changed or code fixes are rolled out, increase the minor number.
We would recommend you stick to the same or at least similar style of versioning, since it will allow your users to easily figure out what the newest version of your scenario is as well as allow the game to properly update your scenario if it's installed via the GUI and already exists.

The only thing you have to watch out for is the label part. This should always contain the name of the label that your story starts off in (by default it is scenario_template), but you can - and should - change that to a more descriptive term. If you adjust it, just take care to change it in this file as well, as this is how the game knows where to start players off in your scenario.

Warning

If you don't change the starting label of your scenario, you will quickly encounter conflicts with other scenarios if they did the same. This makes the game worse for everyone, so please take care to choose a starting label that is unique to your scenario.

To actually get some content into the scenario you will have to edit a few things in its story file. .rpy files are actually regular text files, so you can open them with every text editor, however we would recommend something like SublimeText, Atom, Visual Studio Code or Brackets to increase your storywriting experience beyond that of receiving a rimjob using the bushy end of a broomstick. These will also support syntax highlighting, if configured correctly, but that is a topic for another chapter or perhaps the documentation of the respective text-editor itself.

Tip

It is recommended to develop your scenario on a clean installation of Student Transfer. This prevents you from accidentally using resources of other scenarios without packaging them into your own, something that many people will only figure out after they release their scenario. To prevent such oversights, using a clean copy of the game for development is recommended.

Customizing your scenario#

Opening up your scenario file (which is named template.rpy in the beginning) you will be confronted with an extensive amount of highly sophisticated code:

1
2
label scenario_template:
    "Hello World!"

Line 1 is the most important for you: label scenario_template:
This is the entry point into your scenario. Ren'Py works by jumping between "labels", which describe sections of content. To make your new scenario work, you will have to choose a unique label that is not used anywhere else in the game. To make this easier, putting the prefix scenario_ in front of whatever name you decide on will most likely make it work. Remember that labels are case-sensitive, so scenario_Test will not be the same as scenario_test. This label is also the one you should put into the scenario.json file that we discussed above. If they don't match, your scenario will most likely not function correctly (or at all, for that matter).
It is necessary at this point to tell, or rather, beg you to please, please put a prefix or suffix in all label names within your scenario, as this greatly reduces the amount of conflicts you might otherwise cause when installed alongside other scenarios. Not everybody can go to label beach: at the same time, naturally, even if they really want to.

Here is an example of how a modified version could look like:

1
2
label scenario_test:
    "Hello World!"

And within the scenario.json file:

1
"label": "scenario_test",

Provided you have changed some meta-data in the scenario.json file, if you now restart or reload the game, the default scenario from before should have changed, displaying the text you modified previously. The content of the scenario will obviously be the same as the example scenario since we didn't make any changes on that front yet, but this is the basic starting point for setting up a new scenario.