Jump to content

Single Player Mission Design Part 2: Your First Cutscene (Radiant Tutorial)


Linken

Recommended Posts

Welcome to Part 2 of this tutorial series, my name is Linken and I’ll be your host for today!

This is the tutorial for those wanting to use Radiant. I will make an Entity Modding tutorial later on.

If you haven’t viewed Part 1 yet, or would like a refresher, I encourage you to view it first before continuing on.

Today we’ll be doing a very basic cutscene involving a single NPC. I will write this tutorial in two ways, one way we’ll be using Radiant, and the other way will be done with entity modding. Please feel free to follow along with either or both tutorials.

By the end of this tutorial you should know the basics to do your first script, and you should also begin to understand which method of mission making you like best for your own projects.

Please keep in mind as we go through this I’ll be doing this tutorial in my own personal preference for completing each step. I highly encourage you as you go through today’s tutorial to think about your own favorite practices so you begin to form a technique that best suits you.

 

PREPARATION WORK

Only a few steps you’ll need to complete before beginning this tutorial, regardless of which tutorial you want to follow.

 

Please download this file and extract the contents to your Jedi Academy base folder, this contains today’s map file and already compiled BSP. Those wanting to learn entity modding can discard the map file and keep the BSP file.: https://drive.google.com/file/d/1uZfCp9Gs6OM-c6mpDtL2J2-Q0Zety8lJ/view?usp=sharing

 

Additionally, in your base folder, create a new folder called “scripts”, and inside your “scripts” folder, create another folder called “tutorial_2”

 

Optionally, feel free to download this file and place it inside your base folder, this will display several missing system textures: https://drive.google.com/file/d/1jMBe8No9KO0E7y0LGqjm7L8FNRahMCRt/view?usp=sharing

 

2xGre5awNy7DnmDn3XCFCy65e5rU25TR8aRTrXXD0esUJegDzIwwUGqgNf-BZ_-Asj54P-k3tabJ1iM_LpFG-ptT4GrBjsr_ezHdFFcoARlOx1u1Y3LF2f_J6eGQ3Ytu9VelhBRT8x7zsXZ93RAv8C9tq7Fv9NbXEew6CHs_dIq016B4owe_-EK88Q2umg

GETTING STARTED

Today our map will be nothing more than a simple room. Four walls, ceiling and a floor. Good enough for today’s lesson.

 

In Radiant, open up the provided map file and bask in my super-basic map making! Or….y’know…..just draw your own room and add an info_player_start entity. I promise you my feelings won’t be hurt 😁

 

Whichever way you want to do it, your radiant camera should be inside this room.

 

sgYt9aI-mawNp6_f_mj_LNvpswutgT_W8b-D46qpRGGVCQEVAmAuL0QEpbBCMCqhGirHLUqOnCzv0JvqzCI-5AlZjzpvaApm86YHk7uWdmHA_VwpP4Ck4Z6D2TILAlaLaYHmYvV3JpdOb9sXXsmhxDPg35andyUsWTMCX1GVC-rONvdwsRywbBdbz0s-5g

 

Our cutscene today, we’ll have a Jedi NPC walk forward a few steps, turn on his lightsaber, and perform a flourish, and say a sound. Then a reborn NPC will awaken from his meditation, stand up, turn on his lightsaber, say his own sound, and pull out a second lightsaber (GASP! WHAT A TWIST!)

 

So overall today we’ll be diving headfirst into NPCs, performing animations, movement, commands, cameras, and map entities used for missions.I know this sounds like a lot, but trust me, it’ll lay out a great foundation for you to get started on your own projects!

 

TARGET_SCRIPTRUNNER

CREATING THE SCRIPTRUNNER

Regardless of how many scripts you write, your map will be FILLED with target_scriptrunner entities. These are the entities used to execute icarus scripts. The good news is that their location doesn’t matter at all. Right-click on the map editing section of Radiant and look for “Target”, hover over the option then click on “Target_Scriptrunner”

 

3G3EyW7G7kdP_kpztCVvf3xQVvcJDV5-g8JkP1mOi7M4VuVie9anlcU7nShSn1zSu55PA-UG8s4ZfYbgc9PWTW4itqQYuBM5DQhra3TvPacR8ewe2hO3ko4y6MET6MRugXEVF6EIcpyfRvoO6CEKz7U6dhoaXAHlrTKxclr5BkO1kez0Q3nqGZ_zFqtWUw

 

When your scriptrunner entity is created, it should be highlighted by default, if not, select the entity and press your N key to bring up the Entities window. You should see something like this:

 

fAXUzjVU8PnIpreJ1y01x3SnVwQ-l15ya5CJ-RpFPMsE0ZTWBfsdLqEJxPNvQG-qPkm2XiLet_-gFO1K5chWvkduJtgB_8QjWOcVoVjQB8YXCAij4wPVff1Fchga4lI6WPI2uOaF1nG_8HZWpftjV8ZWcdcY-5J4MIvEmDKJV42P-aIRVFV2eqnuot98Pg

 

You’ll see a few checkboxes labeled “runonactivator” and “inactive”, you can ignore these for the tutorial. You can see in the upper section of the window what these checkboxes mean. People using this version of Radiant can see similar information on most other map entities, very helpful stuff!

 

The first thing we want to do is tell this scriptrunner to tell what script to…..well….run.

 

In the “Key” field, type “usescript”, and in the “Value” field, type “tutorial_2/tutorial_start”. After that, press enter. The window should look like this:

 

2S6bkQeFQswvhOpymcAohhYhXFWk81IKrBQZdqDnppVq85bGZLqYG3hkrRFcm3m3wRB8CQ4R-T1lafof51DHazUXVOjEvl_8iDrLmVE_clVRmzfz9z2u3jItq-zSUOAJpLTq1A-l85eW99HP_eT4vUNXuonSG-h_i2b4z1DF7JZhHanO-rUd1zaorX7L1g

 

One more thing we need is a targetname, this tells the game the name of the entity. Targetname has a few other uses for other map entities, but we’ll get to that in the future. To give the entity a targetname, in the “Key” field type “targetname”, and in the “Value” field we’ll call it “start”. Once you press Enter, your window should look a little something like this.

 

AAThZegVhkW0dFnROZSUU2PrzRk0EAwNQ-5fGXBPidSBlq-j5aYcDR_DKlC3cu3A8SbU7HEuuD_cSnmyjGqZB9RRHAVwfiAjLsVNGRKSx4dqOvumqXmi7Nq5WPn-lnnpvayRXtJ9kzrZ20GXt5p353v_1RhjF28V29uIBQ8Y3mAIFMSmYWgM_gLo8qFLAA

 

Alright, so now we have a scriptrunner, but right now, the game won’t trigger it! So let’s do just that!

 

There are two methods to trigger this script runner entity. I’ll go over both, you just use what you prefer.

 

METHOD #1: INFO_PLAYER_START (PREFERED)

Select the info_player_start entity (make sure the scriptrunner entity is not selected (ESC key) and press your N key to bring up the entity window.

lQ9tfZYxTJ8ibjMZHxrqeX-SGnyKj6ABcRiyxerjTYQMaKJGcMG218cyQWPx977UEmaoQBId5C_4A56DmfEiRF0zLWFiDtog5v7O1vtgav9y_5iyG0YoYeRzU8dVy98T2PTWvNcwXGdweX5645yahd7X0WL5YVw_QYfdih0jWBRd3p7TF9iV1TXbUvJinQ

In the “Key” field, type “target”, and in the “Value” field, type “start”. Once you press enter, the player_start entity will now target the scriptrunner when you spawn in the game. To verify the connection has been made, you should see a line and arrow between the two entities.

 

REExYkOX_bNFsL-gqcvi4MMdwVg3KEfDNNpUQ0MrPYUGiAORwjzj1zr85FfN516TiWQHlr2rkPNViwTSp47WyLGVLSYlkdjw40LADvcQPPzXaoY6KlNswySmTIGulcB1Q_XJIv0a-4ywtElKTy-lGdu4XNRW5zjjqH1iuPaccMDerleM64VeXaWjBVCuOg

 

JADBz1d-tZVst5I2uI45FSk_U830R7hNFix_Tt9flKRynwepqUE6QF6_NfU0hf5wzmaaDB71OyoAxZJhJZzn_PNx_ILDzpAmzozrBNz_K6MIxLaaL_Mq-KpujEIqb-of9VLrlQdl7eMFzWnzwKQm5zMR-KwMKgtiX29HgYhYJDIjX0wAbdXIa3QpCKUpGA

 

Alternatively, if you select the info_player_start entity first and then select the target_scriptrunner entity (yes, the order matters), press CTRL + K on your Keyboard and the player_start entity will target the scriptrunner automatically

METHOD #2: TRIGGER_ONCE

Draw a brush surrounding the info_player_start entity and texture it with the “Trigger” texture (found under System). Should quickly mention that the trigger texture may appear as a red/blue and black checkerbox with “Shader not Found” written inside instead of the green “Trigger” texture. This will not affect your ability to create triggers or do anything else in radiant, however if it annoys you, feel free to download the mapextras pk3 file I’ve included in the “Preparation Work” section of this tutorial.

 

tUb9hXdsvp7QlAyH63Ovg-_hcy3N81TQ-QnwjsZYHSfsNJmDOsGsidvUL62rqjGhVrnc86GjkA8Q3SpxH-yx9tOuJ_-68UJSw2rj9VPuZ3uHFa0ClxLudBY6aDS1yVj5RaemFL_47Pz31zWDsFcTkjmzDzHSs0pL45zQ-PJwITiWrgY-qWJBBqFXlzaPbw

 

With the brush selected, right-click in the map editor and look for “trigger”, hover over it and then click on “trigger_once”.

 

9bXrENtM_PoLIdY6iEaZ3HecehgkMIucz2HB3ceNgyEcxyllSqXTFkCWPIuAFZ13lmX8We1tMaYmXaLd3mLMjRpySrko4qaZOK5V6dOlGR5F996z7Jvw6p4tqwa-fkejrnJP-Y9hgcjRSb5URWauUNf5BYq8KltbeMRVIKQDiiEVsYOSUiWV6OZF19HQQA

 

Once completed, press your N key with the trigger selected to bring up the entity menu. In the “Key” field, type “target”, and in the “Value” field, type “start”. Press Enter and you should see something like this:

0ArFHUQu2GSTpN2Tz4w0WT4CQiBrBcZgjCsl3ll-bRnGTjaBXn-BWXxdPE67VeAFtNCXOsxx9F9McgHnVECdkTirJaocSrmIVBMjDyi9t6R-hrp8f1jBD3LzXEcgJtsa28xsjhszQ7ajLoVAJbtt0PNIvywd_opNo2KI5GCipEmii1r2Xzm3ltu6q59GDQ

 

Then to verify the connection is made, in the map viewing area of Radiant, you should see a green line and arrow connecting the two entities.

 

miX_NXxL3lXxqqKWTkXCVmTdT7mT7YyNC8O5yFPlWraIf6Wg1LEjYy8idxD5KriG-e35l2rCJKa4aWexiwf1cz3ZLD55TBGHl48cEN07C8vhoH5vGHhAsfvJFWzNAQNJe4clsgfESctOegLjNbQMDBtllLqZm0QdkPrt8_SJ39SHldYoLE3gq_HECOk2Jg

 

Alternatively, if you select the trigger brush and the scriptrunner (in that order) and press CTRL + K, the two entities will connect automatically.

 

A BASIC CAMERA

Before we make the cutscene, we want to give our script something to do so we know that everything is working properly. We’ll start by creating a basic camera that turns on once you spawn in the game, holds for 2 seconds, and then exits.

 

Now I’m going to be completely honest with you. I absolutely HATE creating cameras like this and I moved past this a long time ago. However, I feel that it’s necessary to share every method I know of to help you on your journey. That being said, after this brief tutorial on creating cameras in Radiant, I will no longer be using this method throughout the rest of this series. Don’t worry, I’ll explain other methods.

 

CREATING THE CAMERA

 

A typical radiant camera consists of two entities, a “Ref_Tag” and an “Info_Null”. The Ref_Tag is where the camera is located on the map, and the Info_Null is where the camera is pointing.

 

To create a ref_tag, right-click in the map editor and select ref_tag.

 

eo5O-MOSQG1nvMWm1hbYE_lOH5BV8qg3w_tfQo40EZ8jZq4u2XDuhEK4eqJ3PP-rnh9OTLu-TiOguCPIrDmvuv3CuAU2deU_Q2ZrBhpiDmJU94YFWtxnywtG_3vDkJOhydThmWobvl_XTnW91YuGobbyb74wXMcHDQSXt8sH4Q-18JnNUVsn5wRdRaxsmw

 

Move the ref_tag to wherever you’d like (I’m placing mine directly above my spawnpoint). After you’re pleased with the location, right-click again on the map, hover over “Info_”, then click on “Info_Null”

 

FVVIzOEYec8_VF7LmgbERlPIb4mo8P4KiEoemF_Mw3tum8V83-7beYYLo89Bpz1Tso3i12LK4Sb7k7GLVLa0gD4xDxbCw8_5ppob_QZPy0BXFP5Sx0dGBH3HD-YQUFzo2cBG364YwydW9SfGBJ-KE6m9SYgUYXLPj1d0pxpr5Bk-LLM-tIMJGxDQmfJuKA

Move the info_null to wherever you’d like (I’m putting mine directly in front of the ref_tag but moving it a few squares down).

 

Once you’re pleased with your camera’s position, let’s get these two connected!

 

Select the ref_tag and info_null (in that order) and press CTRL + K to link the two together. If you did this correctly, a blue arrow and line should be seen between the two entities, verifying the ref_tag is targeting the info_null.

 

XG2-7QDdWHUVqfRaQA3ugQWp1zPuEVjgwjcOJ3KwM_u46pFaNtONz5tx82uMqT9s3JD5FH-wcfvmriryM5UgUudF8d8-DTaeASHFSOVb8R5DI_yZivDpl3ExCu9ccR2f9wMrLcydB4gF99Lr93EIPXAufIV8IG9d-ceyJwT4RPbyQwYFgJDG_C_pzyMizQ

 

Select the ref_tag entity and press N to bring up the Entity Menu. For the script to be able to use the camera, we need to give the tag a targetname, so let’s do that! In the “Key” field, type “targetname”, and in the “Value” field, type “camera1”. Press Enter to apply your changes. Once you’re done, it should look like this:

 

he1Zxyh8Ds-2CNmBqxQYJjO4cCdDHA_h0eSNaO9EODVZ_RQFR9ABEiDCpz-ggOAzZIHxFy6TzfQDFKwidwB1KBdEIfe3hTiXIWkjcZL_2Xs34-XDEAf8ewMQfTa0H9Wa5iSTM1dnpGf8OfqdR9SUFhZ_WSE2gc1YuOfZFrhu4xQdYx5w3sMF5VwPUlDIUw

 

Now that you have your camera set up, let’s go ahead and compile our map so we can use it in game!

 

On the upper toolbar of Radiant, click on the Build menu and then select the option that’ll only give you the BSP (should be the first option that says Q3Map2).

 

xq9pePkYadw0KKqq6n1FjY1fxNs3ZOOgmjQuwQrmDj8D43QRYmByKuTsHsLDxomq-ulcHHSDOssQj52pvPL-x0Wnk0opvAScrk-2xqay_HbHVCfsWU97cQ0q6RL60LqQMXPL6zXFyVr5yCfkX4YzR-0co7FpbBG3Sm7UNbV-fPjNvBGY7faR_suh9-ljcA

 

Once your map is done compiling, you should see a confirmation in the console at the bottom of the program. Since this is a very tiny map, compiling should be done by the time very quickly. Much larger/complex maps will take a bit longer.

 

tC3spBd2ezvqVswS9LHzcaRrFjakGguP8Xlq-4qW3RH9vjoxEveQJAyOb4IzRNRnxo_BWX2O4bn-dvpBjw0i6gpMRf26_PV65TxfxRcNU9lRZjWns5n9s7ERMGcnBgY7jwiI1PlzjenrmOMUoTErCKHQoZkCgH_sMeth5seXuZjo1eX7KMaZYFUktWM_6g

 

Now that the map is compiled, let’s head over to BehavED and create our script!

 

YOUR FIRST SCRIPT

Open up BehavED and look for the Camera Command on the left-side of the window (should have a pink camcorder icon). Double-click the command or drag & drop the command to the main window below the “rem” command already applied (all new scripts will show a comment by default, you can use it or remove it, doesn’t matter). Once you complete this, you should see something that looks like this.

 

KI4Gm2wel1437nmfxgY3PVObc0ZdRNi_LVRlY9DAb0s-Laz5e820_pyCNXrRNWLCkVAaGvvNSxPgPFtAETj6JtBSSoLQIyFH64LxOfzLqA-v54VTo7atjS53WMJO3llJWF_6FrN3dfKjeS70ALi6q3vPF2pbqcB6CEbe_V33xcAlO8VpJTDBxl7EeuzH8A

 

By default, when applying a new camera command, the camera will start off with the “Enable” Command by default. Every cutscene will start with a Camera Enable command, so leave this command as it currently is.

 

Double-click on the camera command 3 more times (or alternatively, select the first camera command and press your Spacebar 3 more times) to create 3 more camera commands for a total of 4 commands.

 

Before we start telling what camera to use, let’s go over each camera command (that I know) and what they do.

CAMERA COMMANDS

  • ENABLE: Puts the game in “Cutscene Mode”.

  • DISABLE: Takes the game out of cutscene mode and returns to normal gameplay.

  • MOVE: Moves the camera to a particular location (typically a new camera)

  • PAN: Rotates the camera to the specific angle

  • ROLL/TRACK: I never use these and don’t know what they do as of typing this.

  • FOLLOW: Follows an entity automatically and keeps the camera focused on them.

  • FADE: Applies a Fade effect to the game (such as a bright white flash of light or a fade to black), this is a command that can be used during normal gameplay.

  • SHAKE: Shakes the camera at a certain intensity, this is also a command that can be used during normal gameplay.

  • PATH: Applies a ROFF file for the camera effect. Also never used by typical modders. Is used in Jedi Outcast during the opening cutscene of the first Nar Shaddaa level.

 

Now let’s do our camera!

 

Double-click on the 2nd camera command and on the Dropdown menu, click on the “Move” Option. Once the move option is selected, you’ll see a button un-grey itself out called “Re-Evaluate”. It is VERY important that you always click on “Re-evaluate” when the opportunity presents itself, otherwise your script will not work at all.

 

Once you click on Re-evaluate, the window should change to look like this.

 

DrJ6rxsKgCB3RinYpk7ay5hy1aJMgZoRgt3CakDDN47ARzhxLt0wIXpNlgerjrFq_HCxxlCvBxC93DqHbk2QSjZ5mvikPjH8HxrqbfLS21p-TklViReT-OUoK3vX4V6ejw-bZZyDy7vG97pKluH9MdyAmmhgNf6-GU0c52OYhpOaI1R8JVeEWHI5dL7wpg

 

To apply the camera to the script, there are a few steps. Follow along as best you can as this can get a tad complicated for beginners.

 

Next to the middle dialog box (the one with all the 0s inside) you’ll see a button called “Helper”. Click on that and your window should change to something like this:

 

HIX5Y-VXXpzN2oC8cPRdCu3xMTwXykxvg42spfBPkupj2IEaf7CZCJQDDivX5_7DSMkFhC7wEVPcZxCt5I43dxCR7FmvbEavwDzRK97TuVyOQT8AskG0FlEwCT5x07FBm6h4fq9VYkMjwhNI6khL6AT-vGs_UlOeNZqKz7Oksz9xfkXFAF9Be0J_rJEbTg

 

On the 2nd dropdown menu, which says “Origin”, click on the button next to it that says “Tag”. The 0s should changed into something like this:

4fkW1WjCgel6uJLnVbUV1GR9EHa8veNNQecCVfehgtiOBUga4ZEGRTGpXSmRjUtoysiA1lP9OaEEwjbtUaBjzh3taSNVcXLStHmB9Q-fpBtUXav1kLPi9Y4cUCko-_WsPSgju_UQo2WFx0OM-tZSYZCVhdcp_tO4TQSb66OWqGU6yETwSpDnUvYPyvxhvA

 

Where the text says “targetname”, replace “targetname” with the name of your camera, which we named “camera1” earlier. MAKE SURE TO KEEP THE QUOTATION MARKS. Once you’re done, it should look a little like this:

 

KStQUaoly8wseveKPAnrgUNt72a4lf5ZhfjmhxxmyN-9bTHdcB12ZfDNEEz5yRmWpEu6sWPIj13BgVxOBALoAdnQFPKM-32S2OV8fQ77RLvkfYF156xMWsaFDOk6iMtipep_BHrSwpxlaZxCdF13E3I8VNsKnCBHM6DIQLGrrA-MpE4KMT7Oe1x0JHA0yg

 

Click on OK. Now the game will move the camera to that position. Now let’s get the camera pointing in the right direction.

 

Double-click on the 3rd camera command to bring up the dropdown menu. Expand the menu and select the “PAN” command. Click on Re-evaluate once selected. Your window should look like this:

 

THOcKuNUPmguvDcYOa1s5koUGgjiO83fMvM099xzhi_6MIm9T6NYRo1Lxy8vlBV1oaQcG-Z4XINUzBTbpAqCN_IgI6keZF711scVuWg-P4G9bDdnzWiep60V4e7QnsMU6MbbXTndZz-Kx_x6iiWxBjBqVLmk_H4u1Be8Df0C5SmME6uvdq36Ycd8OnDcDQ

 

You’ll see three sets of dialog boxes, we’re only going to focus on the 1st one for this tutorial. We’ll never use the 2nd one (I still don’t know what it does as of writing this). The 3rd one we’ll use at a later time.

 

Similar to the MOVE Command, we’ll also be applying a tag to the PAN Command. Follow along as best you can.

Click on the “Helper” button next to the 1st dialog box so your window looks like this:

 

y9R1kmFiJrJ6iqGk1Uev70UA6JXJeOU6psg9Mpi2XuiKPyndanHZqzaz2astgBJbf7mB6nwUAUnSZrZfs40jhST_SYWSFu5po3MEUAo1B9ymweIPWkqLREQbeZAcuuPWf1Er8ZI8KvWrM8XC2Trp_hwsvhDbDaZ6k1sCzXuOf5L2-LckXtlhGlj6Gcupgg

 

Click on the Dropdown menu which says “ORIGIN” and select the “ANGLES” option. After that, click on the “Tag” button. Your menu should look like this:

 

d5riaNKHB0495TAv1CCigiiXwdBoBXdkNAVl6BAX-iGJXniwuUjJEs8_rX7JnNkWxna5HVLuMUNu8JDNOgt2OnpXkHpkTc_gIRN7vJTqruBHlLY8hlc0UH_dRcGfc135hDqFP06tOnt0_H7plMvPT-f250gdmTstCNsawqXJSSt2u6eIGmoBOv-Ja3WAow

 

Change the targetname to the name of your camera, which we named “camera1” earlier. Again, make sure to keep the quotation marks, else your script won’t work. It should look like this once you’re done.

 

nvx4NWo-JUU9tUbAaYi1vY1hhoNU8fxxHCoLjADgyvVPZ85MZKvJmzrpuXP8axQDFD04kqb1iHtAo-7mJM3DwjNzUERf1hNTgsaQOzfSkxCoa2iYTYWqnU8FGYejSGXNthavBzNEHDYD4Xb6NqRqOVydTLkP12FYVFSOvVtPDgrbhHxcS89gSanM7WAjjw

 

Click on OK to apply your changes.

 

Now to take the game out of “Cutscene Mode”, double-click on the final Camera command we made earlier and in the dropdown menu, click on the DISABLE command. Again, click on the Re-evaluate command, your window should look like this:

 

6xA5mlqrtkPHASYC_uj2imh6SYs8xjXUi_aRJqVCX2qIW-JPLFFCsxnVwCvfvoJ7F9qzwJwK8dqlIfmQzmVOisHe0ucDZ_pzjTFKbC14FnrVoXFgWdLUz123SStvLkh3rjIbZNScihNtTzVsN094fd9S2-qkUwmH4b04zWwyomh4xlBQDxwdHBy4ANW1wg

 

Click on OK and let’s review our script! If your script looks like this, you’re on the right track!

 

0B2b3_YQmGOB4gH58c_dCl-9cbLWPqr6ivr_cazfhu3m9_f-5eOm8o6RQfJm3p-L7g7DYg-6rJY4dBKSlgJmv5hKB7ALYlHpRoYerLpOc-zvcixGJvAuL7XjLBxnFv7nrlK5_q6u9d-AqIr3R7HqzGIJOsGLp-crJdHppp1HYang40SlMcFQeD1vMUv_sw

 

Now, if we were to load in our map right now, we wouldn’t see our game in camera mode. The reason for this is because we haven’t told the script to wait. When creating a script, a bunch of commands grouped together will be immediately executed with little to no pause in the order that they were written. So technically our game would go to our camera and then exit, but the action would be so fast we would never see it. This is where our trusty “Wait” command comes in!

 

Create a new “Wait” command (make sure to select the one with a stopwatch/clock icon and not the red light one) by double-clicking or dragging and dropping the command into your script.

 

Drag your new wait command in between your Camera Pan command and Camera Disable command. Keep in mind when you drag an existing command through your script, the command will be placed under whatever command is being highlighted. When you’re done, the script should look like this.

 

pi1wGRVeTrSqPhX_u_-rb0zQCXVn6_fzYVuQTZLPvuBWVEwpRKpTnpxp_LXN9gFp3ihwxTSCKBl_h9Sy1gqJk3NHQWLBAJF2U1BeUYnCo2_7Bsb3MZ6wvKcd-S4D5tc7u8qoeH5061JxOD31_BZL3B4MtaOpcSIf9INSlRBfslTkUxdffenZJOTAhmXJgA

 

Double-click on the existing wait command to bring up its options, you’ll see a dialog box inside with the number 1000 inside. Keep in mind when doing wait commands, they are always done in milliseconds. Also keep in mind that 1000 milliseconds = 1 second. Change the value to 3000 (3 seconds), and click OK. Your script should now look like this:

 

mrH_Wzplo6Rn7jsuHLbRKSgliH5tb5YTnU_LLewwlvXr7iEUx3XQKgaP7VFyGiKUv93DSKoD9b1QgRCapebB_owlN38jNeaNcqgy44tyFSJMScKozS47_zq_XMpjcZwVzVsXI_Hw7NNGrTEbcIfhQuevsxipUaSc13dMIzZUswU2RHi9xQ37MyD_pyb4IQ

 

COMPILING YOUR FIRST SCRIPT

Our script is done, so let’s compile it! Click on the big Compile button near the lower-right corner of the window. If you haven’t saved your script by this point, the program will ask you to pick a location to save your script. Save your script inside the tutorial_2 folder I asked you to create at the beginning of this tutorial, and name your script “tutorial_start” as we referred to it while creating our target_scriptrunner in radiant from earlier.

 

Your script should now be saved and compiled in your tutorial_2 folder!

 

xw0mrBgwIiLoDPmoldGoE1l6pRsPZxdhYPTjpbAF_q4EnSbP5pfKGyNY87ZAtzSHnKAl_N4DlLtxKBefu4a3_4d6JwnvbaFxD7SLcdSsc0m9UFrc3X8r37vMzt0fzc7I8NQQBtJPm0bgsFUppIPz0DQuUZDmWg0A_5bKjnbAy6KXHXGn2oWnRTg45nhMLg

 

Now the moment of truth! Start up Jedi Academy and in the console type “devmap tutorial_2”, wait for the map to load, and see your camera in action! For 3 seconds, then you’ll be in normal gameplay.

 

Here’s my camera in action:

2zNgMbQVfWbz25wLX9VNfd9acC_pwlttr0B-ltphq5KJbR0NC4PBJPVdxYQkdq-UfTzMGsfY3oNPGr3De-xxklvtSBJSBJRRdWZej3JvQycqm75tL7wsIescVEX3kvMA2v7GzN4VFemUxee09Ew5LD9EjOTglmOolHUFvJNya_7EC5_-1JcC-T24jKh0qw

 

If you followed everything correctly, you should see similar results! Well done! If not, double-check your work and keep trying until you get it right!

 

NPCS

Unless you’re planning on having beautiful music involved in your cutscene and having a bunch of cameras tour every nook and cranny of your mission, you’re probably gonna need NPCs.

 

So let’s go ahead and add some NPCs!

 

Here’s gonna be our goal for these npcs starting out.

 

  • There will be 2 npcs, one Jedi, and one reborn.

  • The Jedi will have its Red Team skin applied and will carry a Green lightsaber (as opposed to its default yellow one)

  • The Jedi will be doing all of the major movement for this scene.

  • The Reborn is a Boss NPC

  • The Reborn will spawn in a meditating position, facing away from the Jedi, with its eyes closed.

  • The Reborn will carry a Red lightsaber and another secret Orange lightsaber.

 

Let’s start with the Jedi!

 

THE JEDI

 

Somewhere in the map, right click on the map editor and create an NPC_Jedi map entity

 

o-U04YlF3xSHwZyVcfWUYb3q4uibjo0vvJbwvWb5XV38Dvn6wemR34PsK8VhTTS9V64z69LEBvav2yH6oq7re4GIOCV8Z_Y3fnbqkwxfGTOT1yoeHe32F1_1LJtEX5PukcTBOQznU4E3kMD9GY1Yc9N_JbxTxVZKMImmr1X4Y5aTAZyCvcO_PQucEt5hSA

 

The Jedi NPC will appear as a large red box with an arrow sticking out, the arrow illustrates what direction the Jedi will be facing when he appears ingame.

 

Vadiv2gftGA32iRkRM5XHQAnZKqmWHqwTDH7rh2e-gKWYoTPEYiMZ0xyEpdqwFyzm1NGX_cOdOscL1sFQi1yzbtI5fmjQI8vfUJmim4jRgyrimqKBpmfV1wc39uvHaUuMCZWC5RCCXosTc58PTsuCU82OifLMu4wZ_8RDIHBoaoP1vmPn4mXfBK0aHbgXg

 

Press your N key to bring up the entity menu for the spawner entity, and follow along with the next few steps closely.

 

Starting off, you’ll see a cluster of checkboxes labelled “trainer, master, and random”. Many special NPC spawners like this feature similar commands, while the generalized NPC_spawner entity won’t feature any of these. Feel free to click on any of them at your leisure, I’ll just be keeping mine as its default appearance.

 

E5BAyRxVkbBbSh_mFW64l4-8AEGjEUAgIjXzig8MkY6yrMQwMQKNZp3_hOPbe1IaRuNN6gUA8dH9AmuWgX_QjQnMyOH3Y3py3f9AKLr46i-y4UlQ56qywc2--RwauhpZlokEukD_PdI399dyXGqObHyBdi3lHycEscx7zyMZtxc-3g4cJac7NyZawzH8bA

 

Locate the checkbox labelled “cinematic” and check it. Your window should look like this (notice spawnflags 32 was added automatically). Putting the NPC in cinematic mode will halt its typical behavior indefinitely, and will not actively seek out enemies. Some ingame actions can trigger the NPC to do some actions, but since we’re doing something very basic we don’t need to worry about this.

 

Later down the line I will show you some techniques you can use to prevent any unwanted actions.

_lhDdJhYeKhTAvoflo1R8mivez_je6bcYMeoB56IAz4jfIfpCT2iPmw1zNuA3kIyATpMWR6dd7K887i7eCe0kpwodIa5_b7L8T3xScwb2-gOr_x8oLTl73FfZ3mUwDu5I4pPonu656TkQuHKvlNxqcapj4yNpA-tToq7VZo208I4BB4tt2Uyena4FliCsg

Next we’re going to give this NPC something called an “NPC_targetname”, an NPC_targetname is what the script is looking for to affect a specific NPC. In the “Key” field, type “NPC_targetname”, and in the “Value” field, type “Jedi1”, press Enter. Your window should now display the NPC_targetname.

 

fJy-iosjKQ-md4WOODRg1N874ZBrwz8Ll70pdXXkEu9WCMFm78IuSJXcUzwBrFhvuatXdI7WNaxoAiewokg4SXz1y6nEsFN9OJo8Xb8oyZvfFirLQfGEqqzSfNzw2raYQ6LAk7mJc9GBBKPOynjTP3Jq3spBoopbpCCGE-Z4Z494HlGXppnXylufpecWhg

 

Now I said earlier that we want our Jedi NPC to have its Red team skin and a green lightsaber. You may be thinking “I can’t see any options! WTF!” That’s perfectly alright, this is where our next part of scripting comes in. We’re going to declare a Spawnscript!

 

A spawnscript is a type of script that is executed for a specific NPC when it's spawned into the game, very simple. There are other types of scripts, but I will save those for another time.

 

In the “Key” field, type “spawnscript”, and in the “Value” field, we’ll call for a new script and we’ll call it “tutorial_2/jedi_spawn”. Press Enter and your window should look like this (you may need to scroll down a little to see it):

 

QPtzakorhApAg7HbiCXD-omKIKpI0DybdkiJVjgJuEKDO2-3rJdl-etCoEkzOim5FDWAZHvW4awD6apg1PUkVdhopizV8maeaHxlYySIVjC_ZNGrEq8F-24AZdI3Mhq9hWGOlxAlN3QSmGXsLqMjUX-KD0c0X5NDKXFkPaeGJ8tCVgBBuC6NlDGqr6DqMA

 

Finally, we’re going to change the direction our Jedi is facing when he’s spawned, since right now he’s facing the wrong way!

 

In the “Key” field, type “angle”, and in the “value” field, type a number that forces the NPC to look toward the center of the room. For me it’s 270. You can also use the dialog box labelled “angle” if you’re using the same version of Radiant I’m using. Other versions of radiant have a number of angle buttons in a clock-type pattern. Regardless, make sure your NPC is facing the right direction. Once you apply an angle, the NPC spawner arrow should also change to reflect its new location.

 

eh1QJhyCciyJzFsRfy5786vrMG3qCzPoBOWqrbZYxdcFKi5-BE-gM5Jyvim9sSMq9Hk3z7JasHFVDgjZFTdnggBXqxZ-Xu7C65_WPfthbcAXio6k1IcO1D_Vdn3kRHoCNRP9I9SyDJ5yDH3NGxPyxvpYw5dJGhXUmhwDE-P0somm6oH2Cts1sACqI3bgeQ

KIOGpIBfao97bSu7c9AU8tpa1Qb5xjuVjPSfIAoleDxhIPVe94WIJStjbIlcgDeubffdV_m74zNLl9jBk369Yihfmzyr-34PQB1CnoUXp7p80ZMXIAuGbXtRuvh2eRZ3uD3MPPDc4rtbeu-YBTaHq0C2HFVT1TSIAS7nEFR_sRTd-mL8pFGlj1vEDi5hpw

To create the Jedi’s spawnscript, open up BehavED and start a new script.

 

On the left-side of the program, double-click on the “Set E”Set_Types” command twice to create 2 set commands. Your script should look like this:

7OJXx0HuQv5So4rlo9M00FAz9nlNHjUN7FETBJddRjS32Ov4yVfLm4oiQv3fIugtkaQZL4DNFGshl1YDqgMFUeaAu6Kp_3ZYyVY9rXS_zkPm26a-fqPLRUb-iD3vM6pqiFWh54pvM80ojIu1dc-KSjTqcVG06sOGaNaynXgu6oLXtxJZ_DHTwEhQIkmMbg

We’ll first start off with setting the Jedi’s appearance.

 

Double-click on the first “Set” command to bring up its options menu. Then expand the Dropdown menu. Unfortunately this part requires a very careful eye for beginners as this menu is not the best organized and there’s no easier way to search for commands. There are some sections to help with navigation, so just keep these in mind. I will try to be as specific as possible during these next few steps to help you out.

 

Scroll down the dropdown menu using either your arrow keys or (my preferred) your mouse wheel and look for the SET_SKIN command, which is located at the bottom of the “// Scripts and other file paths section” (near the top, just below all of the SET_PARM commands). You can also hold down your left mouse button and move it down for even faster scrolling!

 

PRO-TIP: There can be instances that the dropdown menu will close immediately when expanding it or any other dropdown menu in BehavED. If this occurs, either restart BehavED or hold down your mouse button and use your mouse wheel or arrow keys to navigate each option.



 

HYrmyROcW514qTyRkBG-0GnH0RFx55t6IZjy_5ha-LW-ALVzrNx0w2UiNWB5OLUqF_CskUS8yXmgEkdzNTqSa-zOBzbh7QRgdnF-S2yZv_W6ZP8hlssvEmLZSuZdJxEYFhPcDFtM7BdD1WwwYNOEM1F3mOBjsQocmh3ch6ZFRtuVoYB0USKJngHIlel5Qg

 

(You will not see the SET_MODEL - SET_GENDER options in your copy, these are unused commands meant for Galactic Legacy but aren’t used, so don’t panic!)

 

Once SET_SKIN is selected, click on the Re-evaluate button and your window should look like this:

B4nwjrX4tK6pBQZk6LkFFDye47dbHBNC9TB_1iHO6-sQm5-hpW0ARDoJTqAV0HWpNo8OJ5rgzXWatN2kNjOTnZoSP5BqoTT6QelCEMHVPQ99IecXfFT9C1W1xSTjWxMCiDb1p6rba_Dyxpn4tPgUSvAAWQs_wacJwep1SQOFwjfQVF9K4254pIkJ9X5fgA

 

If you’re familiar with modeling or skinning, this file path should be familiar to you. Change the value in there to “models/players/jedi/model_red.skin”. To delete the previous value faster, double-click on the text inside to select everything then press your Delete or Backspace key (unfortunately Ctrl + A doesn’t work). Your window should look like this:

 

glxkcYq1r5WYRXSOyZIO4-f09_UKayqcuilcXaaWEmlq4DwdTi9fPSY0-7fYhRdrcnf1TxjZo5s1_88AHKaiP28v2W-2uwSUhdws_NA9hnfoPtZYL6dCTfzi7LInTkqPcOMUn-eRlfeEV2mntvzBzv_-Z-VBZQ-HfFf2CMNUv_N-BP_hLbrSSTr2RvORhA

 

Click on OK and verify your script looks like this:

 

_6LFRV0GlR6_K21TzN2txAW89k-P7h3ZXtMoCyYJDukuWEuG5kAnUAsRITY5zhmKcfjGXPruc9HIcd8wjANmTw_zyBR-sdcRnHvTc9XTjL3bIJVGnXq9MaNvAwD93eDH52myi9cxh385TgAb44r-TXBYenfCqJzryH8KQnZ2mHZ8UT93O19IUXMBMgtDHA

 

Next we’ll set the NPCs lightsaber color.

 

Double-click the 2nd “Set” command, and navigate the dropdown menu to look for the command SET_SABER1_COLOR1. This command will be located near the bottom of the entire dropdown menu in the “// Special Tables” section.

 

fLqrvdL2F-VnmNGHCR8HVjNAwibTfTdxuuq_BiKMMSTNB6aD36uCejonDXGHWB5qAkz_EYAHxUWpyAScrZKi-sG0qc61N1TJlc54vBgTWqm3yspTpIHFcqeyF9IOpQFn9xev687lbocrWNvoPHdXXrXoDhyRTS9s9asDbeZ_0czCzp3Sn9a1h0DNW3Zm9w

(SET_FORCE_STASIS_LEVEL through SET_FORCE_FEAR_LEVEL are Galactic Legacy-only script commands so you will not see them.)

 

Once you have the command selected, click on Re-Evaluate and you’ll see a dropdown menu. This new dropdown will display all saber colors currently featured in Jedi Academy. Expand the dropdown and click on the “Green” color (or really any color, I’m not judging). Once your color is selected, your window should look like this.

 

ufLc9q26wtMzLVY4yybJHoJVW7QteeM-x193MiNUmni8U8jHjTspxku6DLnciNDXCME3X4RH6nrGueNAC4qEmJmApbpQUZ7FFAjzgIP6Q3kzAAjHqa1KeOI96pn6hsk8IwirW_qT3OEnBQ9Pw55GlII5byzjmAY9wvNRTOx8PKzcnEpJzaB6bIKVP5n95w

 

Click OK and verify your script looks like this:

 

KRGNYVwKUJ-djuprRipiA0d-vAqlhYlS0Uktk9wm8jvteCOSZIuqFGDlJzDctDM72Gr5U9gy_7kYnIyyyHrg9t_NC98uSfyNx2YpoSgVt0jEmhkYk1Qvz3a2qu8YJRupCbUs8aLkNPEiIS4fXXZHrBSlrflNox_T8WFOpe7f4SpD0nYz2tE__GWcXxtVBA

 

Once everything looks good to you, click on the Compile button and save the script in your tutorial_2 folder and call it jedi_spawn.

 

Verify your script is in the right folder

 

CTtvPgWDQg6_q0PZKCpdsl9i4X78AZj3HzFdTlBDWh_Zw59yJG2shSUWlOgQBoCnrCqHZi_XDimtIy0-pfrx_uLKIPTTjSYbXChAd9dIxuRl9_T_Mw2HnCLiiCHS_S-u2rX5ol1KKu_yXlE0aYaD2xKwKas2-MPxPZDpqcVETtPI6msDdljayxa9mDpmtg

 

Now let’s test it! Compile your map and open Jedi Academy. If you did everything right, you should see a Jedi in red clothes holding a green lightsaber. If you want to verify the saber color, use console commands to set your team to enemy (playerteam enemy) and bump into the Jedi. He should ignite his green saber.

 

yd04ufg9HfoVzD8EZGpRJKQ_hbydgSEUA1NyGDZ4I1VRKFhi4DXPrtcvibtTYn1V4fA2lUttSAfbv_hXJUFjRmNr_23jCT6s1gvgc1seAv65_jYjIuUQ425hFlJs3126d3H6mnaOxS4ih4ZnHf1c3q5laRZyfwettzebsDmrsLiGUB8WOcrZ5v5P4HxeSg

 

Now let’s do the Reborn!

 

THE REBORN

 

Back to Radiant, right-click on the map editor and select the NPC_Reborn map entity.

 

66uGHc6PkAv5QGdas9qAk88sF9AZpe2isUYqAiyW-XBEEuEQ9hEFNBIywHUw2FApEkJ7zIS-JsYLQZMvrOFI0uiiDe0NIfFTrppYGL1wa5vCCRlz2jIAt0r_K0a9wyZ_jGXZ0AC9jAqe2tKV5skhkB0A0V7p-aRXrXgskxdgp5u_ETkSu-rhsVpkaKC0LQ

Similar to the Jedi NPC, press N to open the Entity menu. In the checkbox section, tick the boxes labelled “cinematic” and “boss”. Unlike the Jedi, whose NPC we did not change, we are changing the NPC for the Reborn spawner to spawn the boss npc. Again, this is only a function of the special NPC spawners and is not featured in the generalized NPC_spawner entity.

 

cWv4ro-Z-VNQZcO9VQqLlwYho3azMdnkiDYEA7zAHl5cu_Bnh93DEot2CSitTOs6aWSLB3K9gRYCeSDc85U_JS49ehf8j5_nY7FRLW0IoKLZRfUFb6iY56KgEHFAM2PLTHgl_tR6hfh1HJhD2hN5K45eCR5Fgo0-SsKmJ40YemenIRgb07qq_BP9MgBWsg

 

Keep in mind that while the spawnflags value is 40 instead of 32, the game will still recognize that this is a cutscene NPC. How? It’s a code thing.

 

Now that that mystery is solved, let’s go ahead and set the angle he needs to be facing and his spawnscript.

 

In the “Keys” field, type “NPC_targetname”, and in the “Value” field, type “reborn1”

 

Set his angle to face away from the Jedi (so for me it’s 270)

 

Finally, in the “Keys” field, type “spawnscript”, and in the “Value” field, type “tutorial_2/reborn_spawn”.

 

The final product should look like this.

 

4_S0A3aFfihu8qR7pftOvkAhSsUX--4XtjghhIVrJ01sTcVURtLz4tUlhdMuhEOVXBIH7tFe_ca9QkosHwngHCsA2D9Qw42yhe6cnlw0UhKyXd7Zz4pUbsWP6UaT9M0tQv5j2OcYiPBbh6-dl5sVgOCMeujch8Q4HcxuexlsvlGDTIf_gper72VjMrBe2A


 

Now that our Reborn is set up, let’s go ahead and compile our map once again.

 

Open up BehavED and start a new script. This one will be a little different from the Jedi as we’ll be adding a few extra commands. Once again, just follow along as best you can.

 

In BehavED, create four SET <E”set_types”> commands using your preferred method. Your script should look like this:

 

Vj_nkhysfaVORglv4QLtM2ufIoHdvZqPB2g5PDuPYoJ6skeMsxqh8scNnk7UzadU0qfGL0S6H0BCxXMeRjvcFNMnuxnipX90pv-bPR83iU7gqrkCWP-NjnxXddUBRBxgTC1OPvmoiN9oRKFPiL2d8ae-wCavYfW2lrff3PS5YSiBzKOjfCWttF2KBNd9Ig

 

On the first SET command you created, double-click the command to open up the event editor. On the dropdown menu, you’ll be looking for a command called SET_WEAPON. You can find this command in the // Special Tables section of the dropdown menu, which is near the bottom.

 

AWZJg9udx2qRM7NjlnFCr8zvDaG3acPEgcSlS-oLE2O1DwXk37O7wuH-sw8oeI_8hE_KlTrnL1tEFpenzwC70bbbvLWYnEY_sR_UlqzpEZjHxtCZwXwRYFCRHgFfYz5pYot3aYLhMcolkFtIp0PYPUg67YfMMZOa58UY7_KA9IDWct4OIOtLkpxm3Pm5AQ

 

Once you click on SET_WEAPON, click on the Re-evaluate button so a new dropdown menu is displayed which will show off a list of every weapon featured in Jedi Academy.

 

cmrFto8lvzQsXkcy6k-nyzv0tHcLbKvUfPH-1AtZeZmbpCD4XyCCkTzholSg26LfiNxvPo_pxXPEoZRpFDc2lDhFpKRXjh8EvdI99UykxXsXZm5Bp5OUNlfFjgNRlL1-mjsWAToEf4T8KCsc4asyr5gf6XnoEUCYbgeI8_DVmyCpTLMgJCfEWI1ClBSifQ

 

Expand the dropdown menu and click on WP_NONE, which will remove the NPC’s current weapon. Why are we doing this? Because I don’t want this reborn to be holding his weapon while meditating.

 

Click OK and verify your script looks like this:

 

o-Qv1zodhmJ-GxZAwYUGr7Sj_1oZb7txYqHf7-6mWicj8y-a0y8DvwIUcD0Xl9Laa4SL4OWlgadIX4FVKeVwPbD9XgmT2WrlmhP4ouYhSD_wCRSoXMLj38F7fHsJbDbzeaDz3kySouh8EWPo_hhM5BSIBb_pFSvVNwr0P57EKaZ82QtDsFr1IjGCS-rKAw

 

Next we’re going to shut the Reborn’s eyes. On the 2nd SET command, double-click it and on the dropdown menu you’ll be looking for the command SET_FACEEYESCLOSED, which you can find in the // Floats section located close to the middle of the dropdown menu.

 

WAkTyPt-IHgj9H58eqUkRvhQ0BwoTkoL8dXSBJ777PZbSeK_cEO5T1_BaBK6mLtwFJluEjYKazeJfrfI1nKD0X62gblGAu7IPCNDtXFBOSD-Pynh3G978NjoyfNalTMWfEMqyvGvJbIqJJHjyvXF7SPSp4vnz_2WixJ5QvlxkBPoQTTxhIzVRBz-tXNISw

 

Once again, click on Re-evaluate, and the number 0.00000 will appear. This number will tell the game how long to keep the npc’s eyes shut. As we want the Reborn to keep his eyes closed for an unknown length of time, we’ll just put the value at -1, like so.

 

-dyFvi59o-Pp-gSGraxm9BluuMsfiFO0aL-C__T3aYUwCdgDi7_4DNFUjW5sdKcg8V41-1OyuSairI3cxAGTBwB8FfDIwu-zi1cX8RXVpAZpDj_V0ucux1DNkn0PTqveuP_fjUTDtUnyrEnGdCS17RS3ue0--V_rA3eRtQik4lMt9QdrHC6cfMbMKdnn8g

 

Click on OK and verify that your script looks like this:

 

G1K8ikuOWONn9NQnTS1vMgcwdMCyAteukq95ruKkuZIP_hhFwvr09x3rA1Wd6lxA6v23fFf7ieBkaaU1e_8ukgHfTQS7LGEGkm3kcLBg7SsbxU65N8QJqCdxZqF-sj8HwhZDzHlZy4VH-54kHzkGO9nhqUUotijVLATug9CsThoGHmgjc3H75ueik6VmMQ

 

The last two SET commands we’ll be using to control the Reborn’s meditation animation. I personally find it best to declare any animations last just to make sure everything else looks good before we continue.

 

On the 3rd SET command, double-click the command and on the dropdown menu look for the command SET_ANIM_BOTH, which you can find in the // Special Tables section close to the bottom of the dropdown menu.

 

9XT2CIYuJ2zmQGkIxk4jmgK_iGBxg0H1SRBSjvlETbPl27xoYZcI0WaiRUcApGT9DrwVtzk6cffcq7SHlAMij3E9EEAC3HkXbKn12r5SPS6GuhQnVo-zL9T0ysDpgXPzzCQT6LXGqnAxzYhC3SV94wjCFQGXwYaH71R_9xMyRLy7QBLX-bS1d2By6gJM-Q

 

Once the command is selected, click on Re-Evaluate, and a new dropdown menu will appear. This dropdown I will be perfectly frank with you, is simply the worst. It’s coarse, rough, irritating, and gets everywhere.

 

Expand the new dropdown menu and look for the animation BOTH_SIT2, which you can find in the “// BOTH_SITTING/CROUCHING section around the middle of the menu. Once you locate the animation, click on OK and verify your script looks like this.

-kWMOcQHFt1KysdXp_mXF8vJvNgTi-aZ4DLATdU_d5BDjDT47Qk944IKAKKj8TfJ4mEslSnEFSRX60d-q0ssAuTj5-rxyXiX3yhK8WJrFeQ-lvpO5e673vyxQ7WqxFysx0-U8RN0ZZ2fJI7_lfk7N9s-qeVIkkXnevZF-oY0o1ILl43ROoA8BiylhHulGg

 

Now if we don’t do anything else, the Reborn will perform the animation then return to his default standing animation. We don’t want him standing up yet and want him sitting for as long as we need him to. This is where our fourth SET command comes in!

 

Double-click on the final SET command and in the dropdown menu, look for the command SET_ANIM_HOLDTIME_BOTH, which you can find in the “// ints” section close to the middle of the dropdown menu.

 

h2ClMZ1mWsSj4C97Z3h_EqX7qhanuPH_HxJypxSx87sV5RLgkZyvuqzYVwJ9Vk-lRJA-6w9DSo4SUQliIoOkUkXjAQl9wHnF-iabMOzXotyuZEhDJmd2XoBmy1Q1-6m-pMDE3y4PFkZQU0APovJtOetBwOAxpd950awRVXGiFK48BD_tqKE4SpMYirJs4A

 

Once you find it, once again click on the Re-evaluate button and you’ll see the number “0” in the value box. As we want this Reborn to meditate for as long as we need him to, set this value to -1. Click on OK and verify your script looks like this:

 

s9BctKPwGMNejrxMb7hiYzUlJ3O_Cu4G5GD_LVqqkx-7sOSdTGtZplBh3jhlsGPMTY1XDTWTicNRtngcwP6F43sZzpF8NydDRJHk1FwYkRL0qULk2_UcHzG5BOx_5_McPxwZ4gFDKinxyZ0WoFksQzT-K9XH0G8dWkIXtpKrcIt4VeQCrucw2L4CW0SrKw

 

Now that this script is completed, let’s go ahead and compile it! Save your script to the tutorial_2 folder located inside your scripts folder and name the script “reborn_spawn”, like how we called it in our map from earlier.

 

Now let’s test! With everything completed, we’ll go ahead and test that both our Jedi and Reborn are where they need to be and doing what they need to be doing. Start up Jedi Academy and load your map, and verify that your Reborn is meditating!

 

wKnTEX2cQneSJ-kZ7U933_zLz4ZvENsQrTeoWLzouWDSn8-NsE44jqrp6TE-_U55b3KHOKVAx15w_uGq40TTmiFMnJKCqJnkSy5ZLHT1icB3O71-CQBnakeIF1Lgb-r_pETFLM3lrrKfB0uoJ5-6xjBHM_ep1xCyDnplS9kmNMNl-oT5fZSBIKM1FoRDCQ

 

Alright, now our NPCs are in place! Let’s make ourselves a cutscene!

 

THE CUTSCENE: JEDI MOVEMENT

So the first step we’re going to complete is getting our Jedi to move. We want him to walk a few feet forward and stop at a certain place. So let’s do that!

 

Back in Radiant right-click on the map editor and select waypoint_navgoal.

 

RPYlYBkhzVg7VWgq2YF8CYXUR7_ZOJT3bbxV5ZLgdNxUWavGp6LRAFUU8HhO3Z2gB8_6fJzclTDbRBgXyvUJ6W1bc6RzQA3kcA6JmdTltSSJABgVorxIPIZNCa0w4CLVOj9HdlOwEYsbFgEvUeLB5ePpSYl4Wp7EFeQMRfXCZb8GSDncnjUqf5cFWVSOiA

 

A green rectangular prism will appear on the map, a waypoint_navgoal is essentially a location for the NPC to move to when commanded to do so in the script. Now there are a few things to keep in mind when using navgoals.

 

You want your navgoals to be a decent distance away from an NPC, if the location is too far, one of two things may happen:

  1. The NPC will not move to the navgoal at all

  2. The NPC (if a Jedi/Sith) will force jump to the navgoal.

 

Neither are things that we want happening, so we’re going to take a few steps to prevent this.

 

First though, the location. Move the navgoal to your desired location (I’m going to place it fairly close to the Reborn).

 

Once you’re pleased with the location, press your N key to bring up the entity menu. In the “Key” field, type “targetname”, and in the “Value” field, type “jedi_move”. Press Enter and verify that your navgoal looks like this:

 

kPUb_sZhdIiav9M6VPbEhEQ5SO2UvSk-558Z557D0M8zGcU4Sn3GpNWVxITaQgH0Te3Zp0lAQlY4XtgKIFBZs0sbB7UP2oflo1BWegpB4tudp-DnOy-rD2fPWh5skunf43ek-Lrpbooncz9HDW5DPygNeHhZBIZ7JjoRpA9ji_UaiawesOCniQppCAZg8A

 

Exit out of the entity menu and right-click once again on the map editor and select “waypoint”.

NMXypa2t0fVSr1kSlgs_Rr_XydsySY8GxbAkF-7XmZRg_HSCnAbPRsVhKQk23JJr9qAVT4tRG42y5VpJi81gCyj81ke_8ZkADy-Ikmb2fFtU-gFNuHJzoasGJeXwvbpopwNlCQ1p1zfmrEcQHy4s1g8dqcFq6ltUOUQaEsQ0CcY1DfI8EIwyyaISn80bCg

 

A waypoint helps npcs to create a path from Point A to Point B. This entity is essential for any map you’re intending to use for Single Player as it helps allied npcs to follow you accurately. If you ever experienced problems while playing on a map trying to lead your npc friends and they get stuck constantly, a lack of waypoints is the reason why.

 

Place the waypoint on top of the Jedi’s NPC spawner so the two overlap each other. Once you’re done, create a second waypoint using a method of your choice (Copy and Paste works well) and place it on top of the waypoint_navgoal. Now our Jedi should have no issues going to the navgoal!

 

hjMu-PkKOIPaEHiemHt_ZoPh48WzMii8GyHRwyk1Oqhbyfyw55-qrzyBBdwzjqzBGKF0kK7CytvVEBjYdGK0REony2pjknQubbeDalfp5_s-AK-I7oeja-jzorQCdnkNIP3zunLxU1tcs-JZjsB2DsZhHeaZwQwUmCokwlCEeirZulse9P_I8AgX6miD2Q

 

Select both waypoints you placed and press Ctrl + K to link the two together. This time, the order will not matter. If done correctly, a yellow line and arrow should be seen between the two, connecting them together.

 

Now let’s do some cameras!

 

THE CUTSCENE: CAMERA PLACEMENT

At this point in the tutorial, I strongly encourage you to take some creative liberties with your work. We all have our own opinions for the best camera placements for a cutscene. If you disagree with my choices, I completely understand and you can still follow along with this the same way.

 

For our cutscene I’m going to utilize a total of 4 cameras with the following purposes:

 

  • Camera #1 will be a close-up shot of the Reborn while he’s meditating, the Jedi will walk up from behind.

  • Camera #2 will be a close-up shot of the Jedi after he reaches the navgoal

  • Camera #3 will be a straight shot of the Reborn as he stands up and turns around

  • Camera #4 will be a straight shot of the Jedi as he prepares for battle

  • We’ll return to Camera #3 when the Reborn prepares himself for battle

 

Now this section will take some trial and error, take your time with this and most importantly, have fun!

 

SETTING UP YOUR TEST

To help you test your cutscene as quickly and efficiently as possible, let’s edit our first script a bit!

 

In BehavED, open up your “Tutorial_Start” script and select the MOVE, PAN, and wait commands. Copy each command 4 times and edit each camera command to read “camera2”, “camera3”, “camera4”, and “camera3” in that order. Once your edits are made, your script should look like this:

 

tYuqJPOQZDkHwJrLETNIzQMuMFblWuTkQKOJi79dvnFqGsT4ydGSs-ZRMnoOuweWMxiwLCj9ejPob8V2Cf4tbCdDglo2Ht8w-2FFxQghuH35vIDXD77lede-u6shdWpWYwzYI1NK__KWkLMS-QTApz9xWy_Pl258dW6JWiK1KiC1F93EZtrUrbRl4pfT3w

 

This will ensure that once we position our cameras, we can test them quickly. Since we know what cameras we’re using, and in what order, we can perform this step in advance!

Back in Radiant, copy and paste the first camera we wrote earlier 3 more times for a total of 4 cameras. Place them where you want for now so you can select them when you need them. As you copy and paste each camera, change each ref_tag’s targetname to read camera2, camera3, and camera4. Some versions of radiant will do this step for you (how convenient!).

 

CAMERA #1

For our close-up shot of the Reborn we’ll use the first camera we created earlier in this tutorial.

 

TW6EcGlqPz560j1f-mSrNn8eXfv_ciwGpy3xhYIimAP6wuFi_awHzDiE59ampaJ6dmZtun3JJe9fh9neofVhVzHJEjRzeTb12nSKJafs9MVgEtwj6bFxkT-WEyzNb79t6hB56ss6SAylQ4yrq3DPzNF9tcPxZhXOCk9RolvlQDNumRtarETPe-X1wNFPtw

 

Take the first camera and position it fairly close to the reborn and lower it to about halfway down the NPC spawner (to account for the Reborn meditating at the start). If you use the same camera we made at the start of this tutorial, you can compile your map and start up your map immediately to check your work. I’m doing a slight angle shot just to add a bit of dimension.

 

6ZknO2MZ750bjyxLbnMd7-vrlIqGsSedJ59ENF7pauzuBL5sHzTGt-qVokhlb3ThituLcdPSGpFKAGXgZL99D-sFcH04dAwJrod7HRq4siw_U0ovzNmO_11eYYM6TC1POB-QuauFJb8lVXehPaVqHkgCTa7uTfKzIN-A8BE4pd7iS-BAoCuoNpi_eu3lfw

StwdiSZR6OJ5Z0veZ9i1gE9eddwwggTjyr91vxXnSQakabwAHLDUOmprq91Ksj4Pb_sgKpgNHyZWiZZTgcVh-Fpam85ardHoyxQdjne4gOupdzwjq1shZeLGuwsBJ8J8Rge_N0DtnYE8Qa0x4hCwBTz37RsTKMRI57xM4O6DRgg-TRxgZmCsiaE8FsIS0g

 

Verify that your ref_tag has a targetname of camera1 and is linked with its appropriate Info_null (there should be a blue-ish line and arrow connecting the two).

 

YDY4vd8i3pu2VevfocEC0Ot5N3tuta9c5S0UWaoqLmF0QXVtg2t3bGROp6o0oy8h_3Ve1deMDH9vyU5yDS-Jojv6nVtmwK7jCA7ZKTvqu7qhtNnbEkP3YTk8eyp-UqKCCfLciXPINIYhl6-GxZMYyUoCX96WfEmTrMOypkSYnTw2vcn7VIxXJFLMaopWTQ

 

Continue checking and testing your camera placement until you’re satisfied with your camera placement. Ultimately I chose to use this placement:

 

INzD2PebdN3r4qpl1ivRvN3KYqUSsddR0pwppF7K0CWOgTk_6ldxDOLSmrgBPkQmtvemPWybnA4O0ZCdXg5gzxwp9ykM7BrCJOZp_x8aLPlXPdMwvJ8NMflS0h4wua4B3-UO0YIHAXcYvmOF4O-5-R54bR0zvXtktU6oT_u4XGczNSQPGffp916j7aV2pA

 

CAMERA #2

For the second camera, I want it to also be an angled shot of the Jedi, but placed where he should walk to once our cutscene gets going.

 

Select camera2 and its info_null, and move both entities close to the navgoal entity.

 

g7aVSwjkkfywK4jFvSD0bw2g07luoMT3zYxsAhqA8ffD3BNFUMQoRepfnq3Aj_5L3WLexJSjFzrrAdDnzxROYKrXmelrA_YkPw0jNjrxFPNh7cDosl5xfw4Lqwvu_67_Zdy0dpxBsde8bjXH1_-7iqMCE7YXPuRAjzUCXA0EtiWqquT-jp80R2Y0XYCJWg

 

Now what about testing? What can we do to make sure we have the angle and shot we want?

 

You have two options, you can copy/paste the Jedi’s NPC spawner for a reference; placing it where the Jedi would end up. Or move the original spawner to the navgoal’s location. Regardless of which option you pick, continue to adjust the camera until you get the desired camera; compiling and testing until you are satisfied. Ultimately I decided to use this shot:

 

tGPqd-xi5kcUeZeRCE_Vy74NNShTFg1b09tRf1YVjl5Cfn0-CjS78fQn7cQdx2S9xuxbpqL5s4VVY-YAvdDLhDaGbea3x7nYJHBjEXENIOuDWb5YSV5uus4xJprUZNtnFlqKpUUrwPcixG7IBGV4pbraag8exlO1MOkoeCimavz56OwGpEp8-TOEHoxV1w

 

CAMERA #3

For Camera 3, this will be used for a full shot of the Reborn as he stands up and prepares for battle, and is the only camera we will call twice in the script.

 

Grab your Camera3 ref_tag and its info_null entity and position the camera to your desired angle. I will be placing mine to face behind the Reborn, attempting to keep room in the shot to keep the Reborn’s whole body in frame when he stands up.

 

nmoxCR7VWosjNKxDFBVzid6Tj5PQT5IhR_SOi7EkXmm5H9uiOeAuVc5nk_GMVhrr5PHmaYv8b-bNTUNbbSABejqp2_d7G5Eye5sK5lBD5hsVcxWnbDCTaDskXHKaSh4-mx-OxiBBySbRGsImpoLC2y1p3fOAmZJTsJMamc427WKGmsdiZteVq4HWYsvNhw

 

Like the other few cameras, adjust and choose your angles until you’re satisfied with your camera work. Ultimately I went with this shot:

 

ZA9WxMUbBTH9t4uld-SlJkrnq1pFiEh0cQyuPcexrUFHBTIfn9r9x5Ii49RvKIpoMcv1QwKWwzKfJCWxf3od2438Ybm6Xlx_n5TGq89f4RT4f5mE-Lj2OMnU0Ttn-V1PivioPcgoAfur9Mt1xCF7BLU3HGZZJiMrZ3gZoHu-G8LwYyak8Qx8kAL68nREkA

 

CAMERA #4

For our last camera, similar to Camera 3 but facing the Jedi instead. Select your Camera4 ref_tag and its info_null and position the camera to face the Jedi. Choose an angle best suited to your liking and continue testing until you’re satisfied.

 

T81WwK_4ZqmbxSh-r3oHYSfOqvEIjs73kLbtHsg9_R1dxQ_oAJm4OoGblHOo2S-hkZk0oM_fQjMF_JSaJCvzkq8B-MqYGGAkvaet0dXoJZ8mQsMA9huQRy6kqosulLxx06IM2W0UU0tb1jlhKNg68dRNax47N-mn37eFFvnGQ7qSOTnC-MSH085TIQoQNA

Ultimately my shot looked like this:

 

5Y-WwAUNNc97PF_3-vjWSI88GSpgwAebmOLu3DW7rnnKRveBIYSJxRVjB1wFv0lSBUtjSLE94FP5kfZ_xOpfPySpPcM02-rt31SgbNtxVLKfp38IZvJ78S9SzAxD7vpY6C4XjYX87CemNv6_H3RHXtiWu5ZcKx8X3JVlvt_X8DdLLGcoCAvnfk4AhEI05g

 

Alright! All of our cameras are placed! Now let’s make a cutscene!

 

PUTTING IT ALL TOGETHER

The stage is set, everything is set up. Now let’s make a cutscene! Move your Jedi back to his original position or delete the extra NPC spawner, depending on your testing method. Compile your map if you haven’t done so already. You can close Radiant now, you won’t need it anymore, unless you want to add more to your cutscene. But I won’t be referring to Radiant anymore for the rest of this tutorial.

 

Back in BehavED, open up your Tutorial_Start script and let’s do this!

 

MOVING THE JEDI

 

Under the first camera command, we’ll begin our process by creating an affect command for our Jedi. This affect command will tell our Jedi to move to the navgoal we placed earlier, and walk (not run) to it.

 

Under the camera1 move and pan commands, create an affect command, and double-click on it to bring up its editor window.

 

Ig2I_0Jl-vTuCIeZBcFuVKIHGFN9Z3WlklLRqX-ObViZQVY7d4qZjjwokt_CF4h-PPcgYesBupZEydd00qlGOyAsjnodKb1H_LkrbOdbjgoRh58wLzeiZLqCYXfbwYTeICC3CC9j0TNJAYZHBbT2GoES-2vH1IIaUSLXe5vzGf5XVpHZyZOuOvuNdaFUmg

 

In the dialog box that says “DEFAULT”, change the “DEFAULT” value to Jedi1, and click OK. Your script should look like this:

 

LkzlsAUW25bc84wwViSLgzJbDDtD39TNqtdevoYOexBnUhbJyvNyB-8Tq4GsMPkd01E49LNA84cC_qXKloitt0lkokIfpMy5GqVkebem_k9YYhtJ-YCBXJIs20EbBHc2U__84qO3uMu8KqEW3rllIQTtJL3-YEJ3_h4_DrfvuxLlzjXlkifd9YMEBx8Kxw

 

Expand the affect command for the Jedi and create two SET<E”set_type”> commands. To help with placement, keep the affect command selected and expanded to make sure both commands are created inside the affect. Your script should look like this (notice the small indent for the two set commands, verifying they’re both in the affect command):

 

_sJ8Xu8hnG6TtXQ-iR65SJvlp_8VgBI7gKmEzRJ7OchrE8SbDf6yju5FCTyMr9cWI-NTAuO1s9e29Nle0GEByoajAiIppCYshIJt3GGnGgn_8Buih1SgPvmOkTlMe2JldzlzXOxCRqtyWf4OVsk1jcgJrXJAOEIex9ZtXjr6ufce7dGPa_dbjBLVivTT6A

 

Double-click on the first SET command to bring up the editor, and navigate the dropdown menu and look for the command SET_WALKING. This command can be located in the “// Booleans” section of the menu, near the bottom of the dropdown menu.

 

ealhB_F3PTO7vIQjPsC-okfOUveOPGcx9SklLv4b1bQ4GbrlmZMta04X8wFi7mbSZOffuuJ9GLPL4woBnxFfs3T2tdbbnsy6Ms62rneN2rC3XVf36w13IteHT4RR8xgcuXPQpblmfc7Z7WFAaujpaUVJDmXUce1Nj4i0f7bZ4bNQ6RmKEXPR3HB7YP8E4Q

 

Click on the Re-evaluate button and notice the new dropdown menu which should say “false”, expand this new dropdown menu and select the “true” option. Click OK and verify your script looks like this:

 

ipDxm9gNd-1Zpd52TUCIPEOD4UvOJe1PWF-yiiuhl9TFV7Q_Ew9MIIPHrmSF9TM1CI-TjVMdZWqHgerFEvi1KQd7CnZ-QSZ_2DXlUovzbAsBIXt-yl5E_eQbehl4RnOyduJhpNs-BrVpMSJWIhMcftqAtXDbXD6caxX7cKBtEaVlsOXmiOMJ7REss4yq7w

 

Double-click on the 2nd SET command and expand the dropdown menu. Look for the command SET_NAVGOAL, which can be found in the “// Standard Strings” section near the top of the dropdown.

 

ssOGlejEEuisDhh68LWBFkKLK03sEa01cTFrvxMx-tksiETlbQlZvUf4CJHiUU0Y9s227ob4cth2t1uHLV5B83GS56CXhJmePaWdcVBk1SuA2PODTDazMBViAukM2wODffRg-cx-juwDJvf8teaI5R2C9X7zr0gHT5-9qX-MNnachn__7dOq-E_QTgWWeQ

 

Once found, click on Re-evaluate, and in the box that says NULL, type the name of our navgoal from earlier, which is jedi_move. Click OK, and verify your script looks like this:

 

au2ZTiuQTkNESaG4GLVMHPfK64wTKEV1SGw5ooDosHT5IvEJTgyCn1Q8nWTe2t373y6IPlUJFJ6CExvK-rE23Gql7XOd3cXvHlsLo2UO_psoAEuILPHNg_u8lTe0AePd4mXyrAb5pIN8oIxWljUEHutp0bB9sIwkwc_iE_yG-XczI3_OtEBtPjkhhdofLg

 

Now our Jedi will move to this location!

 

JEDI TALKING

Once the Jedi moves we want him to say something, and we want him to talk after reaching his navgoal with Camera 2 focused on him.

 

Under the camera2 move and pan commands, create a new affect command and have it target Jedi1. Inside the affect command, create a Sound command. Once you’re done, verify the script looks like this:

 

FaoDLd33XN6dmyB-rzCbxoMb4zSQE9n7igJmmY_l9bKYc2cejLW3h6I39k9fdS1-0FfutcqHqEYlDN_P1Zyx7zQyADqVecsfn5Jg1j3zPE3y2pGwPGN5bJwyhUcA1j2UW-z_pkPwUC8cN8HUB_opgncp9vJzeFyMTwTRtZTuKvWIUutAB9sFrOSvQxsMbQ

 

Double-click on the sound command to bring up its editor. You’ll see a dropdown menu with the default value CHAN_AUTO, and another box which says “FILENAME”. We’ll go over the channels and what they mean in another tutorial, so for now expand the dropdown menu and select the value CHAN_VOICE. Click on the Re-evaluate button and paste the following text into the FILENAME box: “sound/chars/jedi1/misc/anger2.mp3”. The editor window should look like this:

 

qK_-Aycb2aXQ5m6zNLRNDMkw7q6XaiIMleM4AJ_pIwLh8tH0d-zTVYBiYvK1RVB8ZxFP1mvifBcpOzRwTqhDkR5bnS-uKtLBhSjAuTTrr3e4lSdgx88-MpHTlw_LPzababiqMQk1-ZdsApyYq05_Unfzh6xtdI3ONquM3tzU7ra4A8b1FByUJUYk6z79Cw

 

Once you click OK, verify your script looks like this:

 

_KUPGHX3c1BdWedxuSP6ghJfVRCsc4cv4TRKvUWWkktgCVku0Q4raA_wAjcsmOJZCj6KSkGeEummZlwMTfk1RBQQOoNg7e-jlxO3wPyrNpqWqkgk8-BpqDBVBM37eIzdJw5DB6IXre8jghUGvCpnfuIuqpE0hipRJ83V_gA7lanJsiQhper2zyIpkDpLfA

 

Now as it’s currently written, there will be no pause between the camera changing and the Jedi speaking his line of dialogue. So let’s add a little pause! With the affect command selected, double-click the wait command to create one in the Jedi’s affect. I’m going to leave the wait command at a 1 second pause, but feel free to change the pause to your own liking.

 

QJo0E7I9BIsba25l8FdgcLKmuMaEFTREDr-mruhRdyDSamKa4xN3CftkQWKHYd6-iyVrDCs6I-FODcoYa_dXazMhlu5RLQQgTeIgvIPxS7rBV9CsFM8ngcFDGTNSNYcjWCVgYRyQv902hkRM_-zUm9FoC_zpd5XllLV4Pzo-AbNIG_Hnuh2n5FSC5wmNnQ

 

REBORN ACTIONS

 

Now that the Jedi has spoken, it’s time to make the Reborn react! Under the first set of Camera3 move and pan commands, create a new affect command, and have it target Reborn1, like so:


 

L0auILRWHrR9-8MaX8YBc1PHPHGFhZ2l-ls_aJarBaT9xaiPt-1xlYNJTnNYyxNbLN1MFsZXpyWGzbLEyuqey_gb6dbD1r8BBmD8dMotaBQxL8hVtoxnrNU2RcR3-msR4a9zUT6-ekI4ptCpFg61dLL-RmWygo-evMKG_1x7eJTAFCaCm3IIF_oF4se4Sw

 

We’re going to have the Reborn perform a few actions:

  • Play an animation to stand up

  • Face the Jedi

  • Pull out his saber

  • Speak an aggressive line of dialogue

Let’s get ourselves set up!

 

In preparation, create three SET <E”set_type”> commands and 1 sound command inside the Reborn’s affect. Verify your script looks like this before continuing on:

 

ntZPYGam5-xJZhXcR46-2pHEQnI4dlKuIwAWxwUBOYo0CPpoBnG0pnYSHhPjI5OfBX9ccDWezAqMxDQbmd5uoXT1_oqpV44A2VpXbZCidmzBRokpzqMoAaxKHOwPEO_9khcz7ii7hJl0k4P4u1XNQEHeT0haJIXT2TWBriW8xA2Zk9nzCTiRB17NblGLzA

 

To start, let’s have our reborn stand up! Double-click on the first SET command and on the dropdown menu select the SET_ANIM_BOTH command, located in the “// Special Tables” section near the end of the dropdown menu.

 

5VATw-SUqjdhgofQEz1qofgQrWjoCnyfFukkYLEOdTF_wZmycb67lIseZPWraIF2OLaDK_4LZGrdvXHTO97Bouk0UPrwM-2dli56PxnoTRg6FNHCXSaBwhvCVG6lgK2txv5DE3FRmt5BkcHo9kRP_M982C3O8UjHmIWMjhsF8PObR-8OYf3GEcwARvY7sA

 

Click on Re-evaluate and click on the new dropdown menu to look for the animation BOTH_SIT2TOSTAND5, located in the “// BOTH_SITTING/CROUCHING section near the middle of the menu.

 

pMQIwmQkp9FRGY28XyRbrFsznB4x4bbNreeMini1J-RcJZGHWs9tP4r8a3MCAf1N76AroSRIU1yKQ4xnvurSWMMIfwlRVblslA8jz-CBxSUlMP6BUWJ0dQfXwu4r4LALoBFzPOLnVBg3kMD2aKxK4Gw1tEKA2NKM0XKm4MQcUMxfnizBTmAChAw3vWfBhA

Once this is selected, click OK, and verify your script looks like this:

 

hOV97wcVR3XUUwa8pAyGR8GtEELzR4W95lB9R_KmgNGrUpCD5hw87_0cxxDOJd-f53J95FpTrwYWsStt1w3DEjoxc403uSJs2QnMgR2m6s6ABN2F3aTXLvk4bas-xvKCODfPI98jAI8kkKIGn9LzdG5MUx7YSPRSAnpE1M2nnh3recdjZrhWzS7k6AIrJQ

 

Double-click on the 2nd SET command and expand the dropdown menu. Look for the command SET_WEAPON, located in the “// Special Tables” section of the menu close to the bottom.

 

zFhnwiNq1lTDLvksUxQhrFtetvG9-k6FsTO6HjdQC1woR_zxfINQXGGjohhzvDsstz9M9KG0op7Zp_pnVnHjghDgmpiVSDi_F4bLbT-TqhemMjeww2_X7pGoCYjVbevg6M8RPig6o09VuYmOtIIPSvtpxToj3Vh6wUueJkjVRYXjKvLTLzrSuXTZoN5Jmw

 

Once selected, click on Re-evaluate and on the new dropdown menu that appears, select WP_SABER

 

05LqPpmK49I5HzUEwPmuk3fnKeSUgW1kBt920KxefgeRpvN-yqpPXPfiRAswamKVMCiBDakkHJ-Cc0XPm6U44TnSfprHmi5seCyHFFhe3JR2YUwA1EN2PlL3FwcCQOAtEqRott4HepKKvjfYIR_KkP-Nhn38NktC3W_x0mXQRIiyUvGuuWxUDm6dNewKeg

 

Click OK and verify your script looks like this:

 

KrMgPaIrtNZGLhoTtnhYaepIACvmc_-TSUaHAP8-AQMtotSVMz96sV3q5cfjYu5XeTHwA5ttUMnG1D1kuWtDOcZF5jQNuuJV0O8-Dr6tsDtqeDksB-74DiUXXgMF2l7_Y7Z7yBWHXNCW_4JpoROeplfCvGU4jDpN2z5nB-1dmJHtYlHxBWmshNGWsLWA9g

 

For our last SET command, double-click it and expand the dropdown menu. Look for the command SET_VIEWTARGET and click on the Re-evaluate button. In the box labelled “NULL”, type the Jedi NPC’s targetname, which earlier we called Jedi1.

 

W_wxuN2mw_Ng4pSIaHzuxHyffl1NsLNUsll4XbifRclAfBBp5O-iGwEgwrS1dK-1khR13UwqADm1zcCQ0hh8deO1ENIc0WpJ0_e6zMjDA9Kk1aPc-_O9NrFU-JQqawunBKcQ5dOJnN03Ppm3QSdMmFL677mHfXeEVD8ig0rj9r9ym81grPdiwmPxUuDVww

 

Click OK and verify your script looks like this:

 

VIa2VLnWlGBPiWd3TgqPgwn8vawMyOyPt0rAOP2GXUz6IxnewC-2PWuzTjaJlg_DkOSXXyNb748oZGNGAqFvKTGVkqRpDVmQuk76l0cD3wcch2XzkxpiWorGFUPT5T5WtKWpHWyUSxnDY7Fcd3g61ILB75zCnZgNakRWKD8dGFfelfN6icz6nTKkXy3LPA

 

Finally for the sound command, double-click on it to bring up the editor. Expand the dropdown menu inside and select CHAN_VOICE. Click on Re-evaluate, and in the box that says “FILENAME”, paste this text inside: 

 

“sound/chars/reborn2/misc/anger1.mp3”

 

The window when you’re done should look like this:

 

T7SAevnFajY0NE58pLSxF93ocTqgW9eWRYPbC1z9OhAbSBo3gNuJd7Yi9Rk_8O6bjebCovh4LKGhqM3o8q4HBz3UZgN-pOA4j5aEk2MA9dufUNdejQ581VHf4rbCNtEZTxLytMjTX1QE7Y2OmLhZihQxKrfPqbK-1GGLI0L17JtX9acdeJ4Jv4c8QadGqQ

 

Click OK and verify your script looks like this:

KhfG-pQjTeiE-NDxbFS3ym-y5buP4WS-sH0u_qjwBd8RPPRGPD5hOUf8N8D1gYB6G94cVzLifLe53IChxRYKKp6Ug1pq4DPmuJWms9P5IaBnZTr0MCmRi0cFi7T6LoqXMggzXK7P-HvG4Rf_q4BP9lwg_wJo6INveWfHQ4MVB5mf6t_KSBWbg_I0Veyu-A

 

Now if we were to execute this, the Reborn would perform all 4 actions at the same time. We don’t want that, so let’s add some pauses! Create a few “Wait” commands and place them and edit them as shown in the below screenshot. Make your own personal changes if you would like. Also lengthen the wait prior to the Camera4 move/pan commands to 6000.

 

2XTz8t91xfvsmusNYXbv1hrwWZnm12aPBGAb8M34lkcDthhC68e-9YK7VcXZvonYxJZtNA6_uh3s7MQfQC3Fwif6LC6tSW5EXa-5nNbuxXN0qbVRn_VI7GTTH79esq0D-kmKIE6OUy5oUEh_or1zYG8YL0Il0012_ixMPDSQJItPlsR90lIn5UMPY8ROHQ

 

One last thing before we move on, we need to open the Reborn’s eyes back up! Create a new SET command under the Animation Command and create a SET_FACEEYESOPENED command, located in the “// Floats” section of the menu, close to the top of the menu.

 

yzq_sp-GCK6NmIM-kJ7mH5C7pxzuypKpzVawLu0rD1oJLo6zMDZPqsl0rQ3NDSipWpeQSzU0uKqe41I1G0NRjVKexAQCeabEsz5-SNPZn7PCW6J1GG5DdeG6pjcHiMUrUA0GnXXX4yaHdSiuFfyigZC5QausoDFdQxoSbet_X15ZjttLbKwiTBWVOPQjew

 

Once you select the command and click “Re-evaluate”, type “1” as the value for the command. Your window should look like this:

 

5FO86NHWbajHQV3SFFuSupuFwNlAlsIw3ft3BqZXpQrdk7d0NI2u5UN1a3TmGIZN-xTz6ucV1qol_R3i9n360oyH3D1v_0OayuFrkwlsRAXfiKEGScBjDNkMzh4pszhe7iIIXGyYsTsBfJHLgqymx19jeFiOFHN-L7NwnLdotKb73iYss6WNXPuzEnMl4g

 

Click OK and verify that your script looks like this:

 

6WJ2exYxVa8QNvmwAoj5vkmqKtIwk8VT1L4sHHyTvR7lJZGUsKYf4cgV9GGnHHmheaSq8Xm3HFUEoKcLxeS43TbRV2CqnXJCn9duxWxW2J0A9UI4PMdG86vM9lx-3E82P-hf_13JNU1VGVOzNd39s3GrLfdaHH2qCt_djid9G-cblH6b4fRUDCE9jISieA


 

JEDI RESPONSE

The Jedi isn’t gonna like that very much, so let’s make him turn on his saber, and let’s also have him perform a fancy flourish to show that he means business!

 

Create an affect command under the camera4 move/pan commands and have it target “Jedi1”. Inside the affect command, create two SET commands. Verify your script looks like this:

 

i52dE4liTuo0xkVIolw_40uOFuRa5au0yVXWsv1WhZuw2h5KrqpsfCd-xUHHLd9STTLnPO6SSt9y3B95NhWiQ23p_chin_drwSmmHFAvYaPDR4bjkzkf22Vi8A3q_wGjXA7eOM14jyFH-edR75slDOvksSDqT3PMu6VNqYeMuYLJ6C_Iy7qd1GFcKsJgOQ

 

Double-click on the 1st affect command and look for the command SET_SABERACTIVE, located in the “// Booleans” section of the menu near the bottom.

 

hbjUXewiLfFg6pil8r6Fm39i6DwakexIwqf7c1T3QtKhXExBdgE9nPfJERt24zVy7wt6UeU8pnvGmXcbfa9sIZBQwXLADpbu5-_H94KWbkDDYKQzqPhguexDMk1-9N1MEIjY0ROFvSmHbqxy2bl1eQBGGhSikUpZcVG2hWY4mn59W4xy1dQgZUbCzL3pTA

 

Once the command is selected, click on Re-evaluate so the boolean dropdown menu appears. Select “true” for the option and click OK. Verify your script looks like this before continuing:

 

cYW9b1XZ_0Y5PrSUl8Tw0-I02ZIBUyxIdK0wSgDsM286nA23Tz6qtqcjz8urgl9QSH1sM_ZWeX-duAvSPf1EfGv9C4BfaXcPvUs-evOG0l8knoVP8Zm0zGVivBltSH_V5_r2wYeL7o8_r4_zrQclahMbQWIfiNj-vFrjys0MHFjWeuMcTpDJHbiwB-9iiA

 

Double-click on the 2nd SET command and select the SET_ANIM_BOTH command located in the “// Special Tables” section of the dropdown menu near the bottom of the menu.

 

E9C8sLovnlxjBFqY_ZhF28vS6CShsce_HWHN_REBZxmtgQo8dulxWYLsqPZGaMWNjDXS5apc7rtdHOjsW6ywpTtZwxNtR_1FmTBIp_SChAZRCuJi7wttlo9bJejIVA3Qa4tcZIAp42M4f5Hg3kbMYuHxseBSCvIfV_zDQ-ih1KVjz7FKzbKY4wRwOERBcg

 

Click on “Re-evaluate” and in the new dropdown menu, look for the animation BOTH_SHOWOFF_STRONG located in the “// BOTH_ACROBATICS” section of the menu near the bottom of the menu.

 

iTBUnT2O04KYLnyg7cxsyXrOJZMG4-Q5JFr2oSJce-Z4--Bq-gaNSCQv0t2HXWWbt9w5tvL8gWVDTr-peo1bkUXQ9uT4Jxbq9Xj4uuUfng7JiSKr5BhCO8Ohm_yU5KNnF89KfkYeO-5NVurYMup5oCtQXyraJ4hhR387UGcJXtoVtxgvWuTE7nf7JhMwrw

 

Once it’s located, click OK and verify your script looks like this:

 

ZkqlJwrlYPD2hE_Cq6KZr_Htpb1W_hyS2EbrpWmqdbwII8tSbFTSv4CEXB6mn_2NHV--4lykgs5eLL7sBwbUYRA8Q-iycI8QnAlK9_BFtcB0fTVBV0cIdeGcE8wCFuxLOjLnsy5ZDYkfhpFuzqvgk9OELIctIT8IBJsnoJpX1HFCiXJqygJS_5U0Y71-fg

 

The Jedi has now responded and looks confident! What will the Reborn do?!

 

REBORN RESPONSE

 

We’re going to have the Reborn pull out a surprise 2nd saber and perform an animation! That’ll certainly make the Jedi fear for his life, because 2 sabers are better than 1….right?

 

Under the final camera3 command, create an affect command and have it target “Reborn1”, inside the affect, create 4 SET Commands. Verify your script looks like this before continuing:

 

NPUx_tVU-GcF7gWsEi8i68nUeM4p8ZdnwvC1uut1zfJXQtx0gE0U_TuwNEzRqCzb7TD7kQXxoEuH6MGM_ZK3Kb5xIJN3u3qu8iuIFb1ljTY1U5H8sWdwVsbYSVWiv_BGu0931KJx3tpUF_prOALOBJQiNbpzhqhEmzPs9l6gOusosF0nx8RmctSAnY5r0Q

 

Double-click on the first SET command and locate the command SET_SABER2, located in the “// Standard Strings” section of the menu near the top.

 

QCo16QSvM6DP1kygI2Xhf5KQyJrXcX89dyitgCdNKzQbGUkKmTdq5IPd1BO6dMUg-3H7RyybsIADooHqOV0u2X7yc7Kgf97M4KHMSmmd_6RJJFz1bz802RZQXLRES-VhPqg1oBDht0e8yRFdUfsWp5g9_xdwvKKtp97vK1NBNPZlhUfs9Z3sAeCgSj_zAg

 

After clicking on the SET_SABER2 command, click on the Re-evaluate button. The value box will change to say “none”. Change the value of that box to “reborn” and click OK. Verify your script looks like this.

 

soBN5jqchSe9w_eFBLnIxDT9q8eRdWEWKn0aBzLpfU1e1sLdh5uGR-1MDDP716OmLoCcDkgA1w9PumJ4kJQCR2hQ0qiyaO_CQJYfRPqiIMtGSWyItOHoRcvEq-EnwREmWho9a7Qu_FTAI8TKk3NLftVL4Gb-fr5YYEBLeXoeVOVEHMYgP4ViTtwjumpFNg

 

This second saber is unique to this reborn! He wanted an orange saber! So let’s give him one! Double-click on the 2nd SET command and locate the command SET_SABER2_COLOR1 in the “// Special Tables” section of the menu, close to the bottom.

 

haeJP5ZVgaCZFgPGia_719G3X9pF3vJ9RwFFNF04_S4SLUw3Bmr-OS_ngurhxqyApG-mOKaWFI9p9NENOocl7mUavWiMYkokYZKNSz9ULiN3CFyksFA12SNnQ0pDuIdOItaF6ccv39EqvHTQO-MCiDm5mz9VSdJz5oLBG4LK7xMy3QMrlKjXOfzU0of7EA

Once selected, click the Re-evaluate button and select the “Orange” color (or whatever color you want). Click OK and verify your script looks like this:

 

Ws1Q6cuNjMsg304utNhWclqgJq3IJKwVCRXptQHGK5gFwFrPVyxj2B_UgD6yWqMfkFZ_NEuUSasRI39uyyTEOoNUodhqHNFGSbAkGut5h0cFFW-kA3VsDuw_aMwLBaVlSwhyzOkPW7KNUjMvGtzQrABoHOvXTcIw12rW-PNnbFFMTlCR8s8RaV4A6yBchA

 

Now we had two other SET commands, but guess what? Delete them! Because we can reuse prior scripts!

 

Expand the previous “Jedi1” affect and copy the SET_SABERACTIVE and SET_ANIM_BOTH commands to the Reborn’s affect. Verify your script looks like this:

 

66K8fGAwwSF2neAYOprU2CkKhw1UMgf6MlKTp_loyLKv1oMLltuf2sR-pf6KhvWAUdFtfxjMpggdWNSFtQE1RR02x3oJygFR9zcFFegq3nOdVJJE3aDgy4dk397SqCLSxMsQQs-NLdh5NruYCJcpB9xgdQuSk1I5jAWkj8pjek0Pec8PloxIFLtLoJ67Og

 

Double-click on the SET_ANIM_BOTH command and expand the dropdown menu with the animations. Select the animation BOTH_VICTORY_DUAL, located just below the previously used animation:

 

WSx2IxZ_xCZVKryyY-LC3VW0myKHVdyJskbtGTCDPhyGWU1lcVg3vAhOGlkc8e72l2r6b8XaPWc-5nfoy59eDHoiNZSaZXNixXujpua3J3ohQEh7TyZJoHM-Om8e-SKJcccFShnSRObkPzEyuNzGUTNNmw3RkAq-RqPIvQ6RJlZrew2pvU9bmDSDWPPvvw

 

Click OK and verify your script looks like the following.

 

9AB3rxKgxRR10HookZxPI2-zt1595hlXxhUcqDt7Awb-91eQNjBuTDsY7VJAGpVKgh-TKGaGGBqb6mXbOHUtkqxQD5KK6RIo0HnS-J10xSoZcGB3MBjlP2rveVDiGDPZcgYyqBof3s8zJiePJe0GBie0O0Q_UYTTZ3wdvcPnNiT0YYLN6GgVufHO0r2j0A

 

Create a wait command at the top of the affect for the reborn and leave it at the default 1000 milliseconds to allow for a natural pause. Edit the final wait command prior to the CAMERA DISABLE command to 5000 milliseconds instead of 3000 milliseconds.

 

nhMSYhlIpYJrQR9CXvm5p7-LbwCxF5v7iQYZfcuIaD_xnoyZyfQByhwtJhFpWNRQ2Igncw0H3gD2YiaRV3bbrWGNu0zIpCjhywlSSF8protwhFlOkroHHpZbI2jnxPLjMyVvSPGWocEr-ms6TIL4bxS2AiR-MTZSxV4ViJKigNhCukWUcB2nl5r0Bnx-ow

 

And with that! Our cutscene is completed! Load up Jedi Academy and watch your very first cutscene!

 

I know that this was a very long tutorial and we went over a lot. If you’re still struggling and you’re very confused on where to go from here, that’s perfectly fine! I will include my full solution as a download for you to review and learn from. But I hope between now and when I release my next tutorial I have given you enough information to start building up your own stories!

 

In Part 3 I’ll go over additional and more efficient methods to set up your cameras, camera movement, and tasks.

 

Until then, keep scripting my friends! Please DM me if you have any questions!

 

LINK TO MY SOLUTION: https://drive.google.com/file/d/1ypwO2V0slT34tBjB0sajCf1L7nPk7Fgi/view?usp=sharing

Lwkill and OCD2 like this
Link to comment
  • 1 month later...
23 hours ago, ykas2 said:

The tutorial is a bit too detailed, but absolutely great and absolutely unique. Please, don't abandon it. My result:

 

Very well done! I know I went a bit overboard on the details but since this was the first tutorial with actually making a cutscene, I felt the need to be as hand-holding as possible. Everyone learns in different ways, so I tried to accomodate as many as I could.

 

Also I'm very sorry I haven't released a part 3 yet. When I wrote the tutorial, I was in the middle of some major developments for Galactic Legacy, and unfortunately now the workload has increased exponentially. I promise I'll make more tutorials when I can.

ykas2 and Kessno like this
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...