|
|
(20 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 technologies. | | 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 5 parts:
| | 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 - Camera creation, pointing the camera, starting and ending a shot, changing cameras, and the infamous "cinematic" spawnflag | | '''Part 1: Cameras''' |
|
| |
|
| Part 2 - Splines, camera movement | | '''Part 2: Splines and Camera Movement''' |
|
| |
|
| Part 3 - Conversation, vocals, camera position, lighting, where to place the player | | '''Part 3: Lighting, Placing the Player, and Conversations''' |
|
| |
|
| Part 4 - Animation, triggers, sound effects, objectives | | '''Part 4: Extras''' |
|
| |
|
| Part 5 - A step-by-step breakdown of the ''Somewhere Above the City'' cutscene | | '''Part 5: "Somewhere Above the City"''' |
|
| |
|
| Each part includes a (small) map which you can edit to test things.
| | {{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''.
| |
| | |
| ==Part 1==
| |
| | |
| ''The Map''
| |
| | |
| Download the test map snitch1.pk4. This provides 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 billboard 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)
| |
| | |
| "cinematic" "1" (this entity will move during filming)
| |
| | |
| | |
| 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 billboard. Give it the following key/value pairs:
| |
| | |
| "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 on your map.
| |
| | |
| | |
| ''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>
| |
| | |
| 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.
| |
| | |
| For ''snitch'', we'll be controlling each camera with a seperate script function in this file.
| |
| | |
| So, Camera1 will be controlled by 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>
| |
| | |
| ''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.
| |
| | |
| ''$Camera1.activate($player1)'' deactivates the camera, returns control to the player, and paints the screen with the player's POV.
| |
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"