Guide to Creating

Scenario Editor is a implement that allows the community from **Dinogen Online** to create their own games,

However, it can be hard to navigate around, so here is a tutorial on aesthetics, cinematics, and quests, **3 main sections of Scenario Editing.** The full guide can be found here, by UPBoss, one of my friends. This guide will only cover three topics, three which I decide are the most important.

To find help, join the Dinogen Online discord.

## Cinematic

**Triggers** are the fundamentals of a Scenario Cinematic. Some simple ones are:

* startCinematic
* endGame
* addQuest
* updateQuestObjective
* addQuestObjective
* executeFunction
* createObject
* setHUDEelement
* addToVariable

These **triggers** are important if you are creating a mission based Scenario. We will be focusing on Cinematic triggers in this section.

### General

**A cinematic is a cutscene** where dialogue is spawned. It can be used to move on to other action or can start your mission. They are used in dialogue or cutscenes for important objects such as Helicopters and Vehicles. The cinematic is caused by the action **startCinematic.**

### Setup

To **start a cinematic, create a trigger** and create an action **startCinematic**. Every cinematic has an unique ID, so naming them **cinematic\_1 or cinematic\_0** is suggested. Dialogue is potrayed by three values-delay, text, and object ID. There are more, such as action **triggerId** can be used to execute sound effects using another trigger, and **cameraTargetId** can be used to set a focus on a specific character talking. This is different from **objectId, which shows the avatar and name for the person talking.** You can use cameraTargetId to set the camera to other objects keeping the character you want to speak still talking. You can also use **triggerId to trigger actions to spawn in more characters.**

## Quests

**Quests** can define the objective of the Scenario and result in a victory. Quests are defined by an **ID** so to help organize, you can name it quest\_0. Be sure to count from 0 as in **JSON**, 0 is 1.

The **Quest Objectives** can be named from 0, so objective\_0 and objective\_1 depending on how many objectives you want. The **Target ID** is another term for the **ID of the object that completes the objective,** so if an objective is to kill an enemy, you need to define the enemy's ID. In this case, it points an arrow towards the enemy if done so correctly.

### Objectives

The Objectives are side quests for the player to complete. An easy way to remember how to format them is the actions and events:

* objectUsed (levers and crates)
* objectKilled (enemies)
* doorOpened (specifically for the door)
* cinematicEnded (a cinematic ended)
* addQuestObjective (adds an objective if another is completed)
* updateQuestObjective (completes an objective)

Formatting a objective is simple. **Three triggers are required, firstly, the trigger that starts the quest and objectives.** Next, add an objective for when it is completed, so if you are using the objective to kill a certain character, then for the action you would put **objectKilled**. This will allow the event to start the **action which would be to complete the quest objective**.

There are two simple ways to make an objective. Another which is way easier is **using a HUDE element**This shows how many enemies are left and removes one every time you kill one. When the bar reaches 0, you win.

### Setup

Firstly, you need **three triggers.** Create one named **trigger\_EnemiesBar**. Set the event to **gameinit.** It should already be there for you. You will have to use the action **setHUDElement**. This will allow the bar to show. For the label, you can put down Hostiles Left, and for the variableName, you need to put down numHostiles, or anything else you prefer. Then, create another trigger preferably titled **trigger\_enemyKilled**. For the action, set it to **addToVariable.** The value for this action should be -1, and the variable name should be the one you set on the **HUDElement.** The opposite setup should be used for **trigger\_enemyAdded**. The event should be objectCreated and it should be set to a character on Team 1. Then, create an action that will add it to the Variable, except for -1, put down 1 instead. **You should then have a functioning bar that will remove enemies once you kill them and add them.**

### Win

To implement winning, another trigger should be used that preferably should be titled **trigger\_Win**. Remember, you can set these triggers to any name you desire. **Add the event objectKilled and the action endGame**. The winning team should be you. There is no need to include a loss trigger, as if every player dies it automatically ends the game for you. As for the win trigger, you have to set a **condition.** Conditions can limit a trigger triggering if something hasn't happened yet. For this instance, use the condition variableReached. **The value should be 0, as when no enemies are left, the player should win.**

## Aesthetics

Aesthetics are not only limited to map objects. They can also be connected settings, which can help define your scenario. Some include music, an emitter, and a **worldType.** For instance, you can use worldType to set your **scenario to night, or emitter to imitate snowing.** However, if you want no respawns in your scenario, there is a setting that allows that. However, it is recommended to allow revives and disable respawns for a overall improved experience.

### Map

To create a map, my suggestions are eliminated. **Your creativity is far wide as maps will not affect any triggers you made.** Think of it as creating a game's design, and the triggers are a game's infrastructure. However, some good objects are:

* Barrels (explosive and moveable)
* Crates (breakable and moveable)
* Armory Tables (decorations)
* Crates (interactable)
* Furniture (decorations)
* Foliage (aesthetics)

With any luck, this guide will surely help you on specific topics you have a hard time understanding. Be sure to check out the official guide by Justin and the semi-official guide by UPBoss.