Cutscenes: Difference between revisions

From The DarkMod Wiki
Jump to navigationJump to search
No edit summary
m (adding category tag)
 
(18 intermediate revisions by 2 users not shown)
Line 1: Line 1:
==Intro==
''Contributed by Grayman. Leave comments and questions [http://forums.thedarkmod.com/topic/11690-cutscene-wiki-page/ here].''


This article discusses the use of cameras and conversations to create map cutscenes.
This article discusses the use of cameras and conversations to create map cutscenes.


Though information on these topics already exists (see Resources below), there isn't a single place that shows you how to create a scene using these features.
Though information on these topics already exists, there isn't a single place that shows you how to create a scene using these features.


Hopefully, the following will fill in that gap.
Hopefully, the following will fill in that gap.


The information is presented in five parts:
Before you begin, you should have a basic understanding of how to edit with Dark Radiant, and how to build and run maps.


* Cameras
'''Part 1: Cameras'''


* Splines
'''Part 2: Splines and Camera Movement'''


* Conversations
'''Part 3: Lighting, Placing the Player, and Conversations'''


* Extras
'''Part 4: Extras'''


* ''Somewhere Above the City''
'''Part 5: "Somewhere Above the City"'''


Each part includes a map which you can edit to test things. You should have a basic understanding of how to edit with Dark Radiant, and how to build and run maps.
{{Template: Cutscenes}}


==The Scene==
{{tutorial-editing|sort=Cutscenes}}
 
[[Category:Video and cutscenes]]
In the scene we'll be creating, a City Watch guard is meeting an informant to hear about an upcoming bank heist. The script is simple: the two actors walk onstage, talk, and depart. The map is called ''Snitch''.
 
==Cameras==
 
===The Map===
 
Download the file ''snitch1.zip'' and extract it into your ''darkmod'' folder. This includes a map with a dressed set, the two actors, a player start near some handy buttons, and a script to run the scene.
 
===Camera Creation===
 
Open the map ''snitch1.map'' in Dark Radiant. In this map, center stage is the bulletin board on the north wall (+Y direction) of the courtyard. The two actors wait offstage, the guard at the end of a hallway to the NE, the informant on a porch to the West.
[[Image:Camera1.jpg|200px|thumb|right|Camera1]]
 
Let's add the first of four cameras. Create the entity ''darkmod/func/func_cameraview'' and move it so its origin is 32 units over the top of the bush in the SE corner. ''func_cameraview'' is the camera. Give it the following key/value pairs:
 
* "name" "Camera1"
 
* "trigger" "1" (this camera will work when triggered)
 
 
When setting up any scene, you should first present a ''Master Shot'' to give the player a sense of where the scene is taking place. Is it in a dining room, in an alley, on the roof of a Builder cathedral? Camera1 will be our Master Shot camera, pulled back enough to present the courtyard and show where our scene is taking place.
 
===Pointing the Camera===
[[Image:target_null_1.jpg|200px|thumb|right|target_null_1]]
 
Camera1 needs to be told where to look. To give it a focal point, create the entity ''darkmod/base/target_null'' and place it near the center of the bulletin board. Give it the following key/value pair:
 
* "name" "target_null_1"
 
It's a good habit to use matching numbers in your camera/target pairs if you'll be using multiple cameras in a scene.
 
To point the camera at its target, give Camera1 the following key/value pair:
 
* "target" "target_null_1"
 
For a standing shot, this is all you need to do.
 
===Starting and ending a shot===
 
Camera control is done through scripting. Let's look at the script that controls Camera1. Open ''snitch1.script'', which sits alongside ''snitch1.map'' in the ''maps'' folder.
 
If you haven't worked with scripts before, here's an overview of the file:
 
<pre>
#ifndef __SNITCH_SCRIPT__
#define __SNITCH_SCRIPT__
 
void Roll1()
{
  ...
}
 
void Roll2()
{
  ...
}
 
...
 
void main()
{
}
 
#endif /* __SNITCH_SCRIPT__ */
</pre>
Script parts:
 
* The ''#ifndef, #define,'' and ''#endif'' directives prevent this script from being included more than once.
 
* ''main()'' is a function (program, routine) executed once at the start of your map. Use it to initialize script-based activities.
 
* Each ''RollN()'' is a function to be executed at some point as the player plays your map.
 
Let's look at the function Roll1():
 
<pre>
void Roll1()
{
  sys.println("Roll1 running"); // debug
 
  $Camera1.activate($player1);  // Switch view
  sys.wait(13); // duration of view
 
  $Camera1.activate($player1);  // Return control to player
}
</pre>
 
What does each line do?
 
* ''sys.println()'' prints a text line to the console. This is useful when you're unsure whether a particular function is executing or not.
 
* ''$Camera1.activate($player1)'' triggers Camera1. ''$Camera1'' is the name of the entitiy, ''activate'' is what you want it to do (in this case, trigger), and ''$player1'' is the name of the entity triggering it. Triggering a camera removes control from the player and paints the screen with whatever the camera is looking at.
 
* ''sys.wait(13)'' says to wait 13 seconds. So our shot is 13 seconds long.
 
* The second ''$Camera1.activate($player1)'' deactivates the camera and returns control to the player.
 
[[Image:target_callscriptfunction.jpg|200px|thumb|right|Roll1]]
Now, how do we run this function? Find the ''info_player_start'' in the SW corner of the map. Next to it you'll see three buttons with three yellow cubes above them. Each cube is a ''darkmod/targets/atdm:target_callscriptfunction'' entity. Each button is targeted to activate one of these entities, which, in turn, calls a function in the script file.
 
The leftmost ''target_callscriptfunction'' has these key/value pairs:
 
* "name" "Roll1"
 
* "call" "Roll1"
 
So when you push the leftmost button, it triggers Roll1, which calls the function Roll1().
 
===Looking at the results===
 
We're ready to try this out.
 
Save the map, build it, and run it:
 
* dmap snitch/snitch1
* map snitch/snitch1
 
When the map starts, both actors will begin walking toward the billboard. Once they've reached it, press the leftmost button on the wall to your right. Camera1 takes over and paints your Master Shot on the screen for 13 seconds. When it's finished, control returns to you.
 
===Adding a second camera===
 
There are two path_corners in front of the bulletin board. Create another ''func_cameraview'' and move it so it's between the billboard and the top of the leftmost path_corner.  Give it the following key/value pairs:
 
* "name" "Camera2"
 
* "trigger" "1"
 
Create another ''target_null'' and place it near the top of the rightmost path_corner. Give it the following key/value pair:
 
* "name" "target_null_1"
 
==Splines==
 
TBA
 
==Conversations==
 
TBA
 
==Extras==
 
TBA
 
==''Somewhere Above the City''==
 
TBA

Latest revision as of 04:33, 22 November 2018

Contributed by Grayman. Leave comments and questions here.

This article discusses the use of cameras and conversations to create map cutscenes.

Though information on these topics already exists, there isn't a single place that shows you how to create a scene using these features.

Hopefully, the following will fill in that gap.

Before you begin, you should have a basic understanding of how to edit with Dark Radiant, and how to build and run maps.

Part 1: Cameras

Part 2: Splines and Camera Movement

Part 3: Lighting, Placing the Player, and Conversations

Part 4: Extras

Part 5: "Somewhere Above the City"