Skip to content

Your first Custom Campaign

Julian Koberg edited this page Jul 27, 2025 · 129 revisions

Your first Custom Campaign

This following section will cover all the basics on how to create a custom campaign for NewSafetyHelp.
Please be aware, that this will require some basic entry creation knowledge.
I will be skipping the syntax and installation in this custom campaign part.
So, if you haven't made your first entry yet, be sure to check it out first.

Creating the custom campaign

We will first see how the custom campaign is defined and then how to add entries, calls, emails and videos to it.
Similar to how we created a simple entry, we also have to create a .json file in a folder. This will contain the options and settings for your custom campaign.

A simple custom campaign should look like this (Don't forget the braces {}, commas ,, the quotation marks "" and the colon :):

{
	"custom_campaign_name": "Custom Campaign Name",

        "custom_campaign_desktop_name": "Campaign Desktop Name",

        "custom_campaign_icon_image_name": "campaign_desktop_icon.png",

	"custom_campaign_days": 5
}

This defines the minimum to create a custom campaign. The first line:

"custom_campaign_name": "Custom Campaign Name"

Is the internal name of the campaign. It is best to not reuse the same internal name as others, as this could lead to mix-ups. This is also the name that entries, videos, emails, and callers will need to be associated with the correct custom campaign.

The line:

"custom_campaign_desktop_name": "Campaign Desktop Name"

Provides the name that is shown on the desktop, if you wish to have a name similar to an existing custom campaign, provide it here, as it won't interfere.

The remaining lines:

"custom_campaign_icon_image_name": "campaign_desktop_icon.png",

"custom_campaign_days": 5

The first line defines the icon that shows up on the desktop to switch into your custom campaign.
And the second line defines how long your campaign should go for. Please be aware that this merely a way for the game to be able to save your progress, so you don't need to use all the days. However, if you are going to have more days than provided in the file, it will not be able to save your custom campaign progress.

If everything worked correct, then you should be able to see this on the desktop when you start the game:

image

Testing and Debugging

Before learning how to add things to the custom campaign, it's best to learn some options to make testing easier. And how to identify problems.
First, how to always enable some default programs on the desktop.

"entry_browser_always_active": true
"scorecard_always_active": true
"artbook_always_active": true
"arcade_always_active": true

These will make the programs always be unlocked while in the custom campaign. This may be helpful if you wish to see your scorecard or all entries.
If you enable the entry browser, you see all your custom entries without needing to start a day.

If you are testing the different calls, it is helpful to be able to skip the waiting time. As such, you can use the following option:

"always_show_skip_call_wait_time": true

Now, if your custom campaign or any attached things do not work, always be sure to check the console for any errors. An example of a syntax problem in your file is:

image

As you can see, the mod was unable of reading a file. This could be due to a comma or quotation mark missing. So make sure to look for any red errors in the console if things do not work.

Another type of error are warnings. These tell you that something is missing or wrongly provided. These don't necessarily mean that something is wrong, but that something could go wrong or unexpected if not fixed. An example is providing a conflicting option, such as having a warning caller (A caller calls if you get too many answers wrong) and wanting the warning caller to also be a normal caller at the same time.
An example for this:

image

If you ever see your game stops working at some point, like after the 4th caller, and you don't see any errors or even warnings, it could be a silent fail. This could mean that you may be missing some caller after the current one. Just make sure you aren't forgetting something.

If everything worked fine (no red errors) but still is not working, then don't hesitate to ask others or even me for help.