Tutorial How to - Create Good Cinematics

farold

New Member
Reaction score
3
How to - Create Good Cinematics
By farold​
Difficulty : Easy (I think :D)
Summary :
  1. Introduction
  2. Initializing Cinematics
  3. Cameras
  4. Terrain and Atmosphere
  5. Black Borders
  6. Sounds and Musics
  7. Precise Timing
  8. Unit Controls
  9. Transmissions

Introduction :
After some time of works, I'm glad to presents you my first tutorial in which I will explain how cinematics and cameras work and various tips and trickes to a good cinematic maker, as well how to create a very nice atmosphere and terrain.
So, let's go !
Your Tools :
The Basic World Editor
Nothing Else :thup:

Initializing Cinematics :
Cinematics don't start by themselves. They of course, require triggers to be activated.
Events :
A cinematic Initializing triggers can have different kind of events, for example when a unit enters a region, elapsed gametime is X. Cinematic-only map uses the Map Initialization event.
Conditions :
Well this is up to you to choose the conditions depending on what you want.
But take care of not adding conditions on cinematic only maps because they are generally useless
Actions :
This is the list of actions required to initialize a cinematic
Trigger:
  • Initialization
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Cinematic - Turn cinematic mode On for (All players)
      • Cinematic - Disable user control for (All players)
      • Cinematic - Turn on letterbox mode (hide interface) for (All players): fade out over 2.00 seconds

These are the basic one.
Trigger:
  • Cinematic - Turn cinematic mode On for (All players)

For a better understanding, here an image of what happens with this trigger.
cinemaicmode.png
Yes, this actions shows the letterbox and disable the cursor.
Trigger:
  • Cinematic - Disable user control for (All players)

This "hide" the cursor and preventing the player from selecting units or buidlings or even giving orders to them
Trigger:
  • Cinematic - Turn on letterbox mode (hide interface) for (All players): fade out over 2.00 seconds

The Letterbox will displays the unit's dialogue when using the Unit Transmission action (Which I will explain later)

There is other actions possible that are more used, expecially by the experienced cinematic makers and they are :
Trigger:
  • inematic Initialization
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Cinematic - Turn cinematic mode On for (All players)
      • Cinematic - Turn on letterbox mode (hide interface) for (All players): fade out over 2.00 seconds
      • Cinematic - Turn subtitle display override On
      • Cinematic - Disable user control for (All players)
      • Cinematic - Clear the screen of text messages for (All players)
      • Cinematic - Fade out over 0.00 seconds using texture Black Mask and color (0.00%, 0.00%, 0.00%) with 0.00% transparency
      • Sound - Clear the music list
      • Sound - Stop music Immediately
      • Sound - Set Ambient Sounds to 0.00%
      • Custom script: call StopSound(bj_nightAmbientSound, true, true)
      • Custom script: call StopSound(bj_dayAmbientSound, true, true)
      • Environment - Set sky to Lordaeron Summer Sky
    • type you want though--

Here an explanation of the actions :
Trigger:
  • Cinematic - Turn subtitle display override On

This force player the player to have subtitles turned. It's optional, throught.
Trigger:
  • Cinematic - Clear the screen of text messages for (All players)

Optional, this clear the screen of all the game messages displayed.
Trigger:
  • Cinematic - Fade out over 0.00 seconds using texture Black Mask and color (0.00%, 0.00%, 0.00%) with 0.00% transparency

This is optional but is used by many cinematic makers. It fade out with a black mask
Trigger:
  • Sound - Clear the music list

This Clears the music list.
Trigger:
  • Sound - Stop music Immediately

This stop the music currently played.
Trigger:
  • Sound - Set Ambient Sounds to 0.00%
    • Custom script: call StopSound(bj_nightAmbientSound, true, true)
    • Custom script: call StopSound(bj_dayAmbientSound, true, true)

Set the volume of ambients sound to 0%, like bird chirps. It's optional but recommended.
Trigger:
  • Environment - Set sky to Lordaeron Summer Sky

This is optional but it set the sky that will appear.

Cameras :
Cameras are objects that can change view of a player.
Here some example :
view1.png
To create camera, open the Camera Palette
33o1h6r.gif

Three buttons are avalaible
camerapalette.png

Create Camera : Create a camera based on the current view.
View the Selected Camera : View the camera as you should see it in-game
Set Camera to Current View : This modify the selected current camera and set to the current view. This is a great features and these hotkeys will help you :
Mousewheel Scroll-Up/Scroll-Down : to zoom in or zoom out
Right-Click, Hold, and Drag : to change your camera's position.
CTRL+Right-Click,Hold, and Drag : to change your camera's angle of viewing and angle of facing
CTRL+Shift+C : to reset to the game's default camera.

For now we need just the "Create Camera" button.
PS : You will have to use more than one camera to make a good cinematic. But I'm sure you already know it.
twocameras.png

Okay, we have now created a camera object. It should be named Camera 001. This is the naming convention blizzard has created for cameras :
- Camera XXX
The X symbolizes the camera number it is. The second camera created should be named Camera 002, the third one is Camera 003, and so forth. Anyway, this is just default naming, you are able to change the camera name and then by right-clicking on the camera in the Camera Palette and clicking on Rename Camera
2i9tp5c.gif

You will see lots of datas that you don't know what they do. Hopefully I will explain you what they do.
2jg6qa8.gif

  • Target X - This is the X-coordinate of the camera's target point. The X value represents the horizontal location of the camera. It can easily be changed simply by changing the camera position
  • Target Y - This is the Y-coordinate of the camera's target point. The Y value represents the vertical location of the camera. It can easily be changed simply by changing the camera position
  • Z-Offset - The height of the camera from the ground. Z-coordinates are basically the height of objects.
  • Rotation - This rotates the camera. The values can be in the range from 1-360 degrees. 90° is facing north, 180° degrees is facing west, 270° degrees is facing south, and 360°/0° degrees is facing east.
  • Angle of Attack - This modifies the angle of viewing. This does not modify the angle from up to down. The range of values is 1-360.
  • Distance - This represents the distance the camera is from the target point. This has a standard value of 1650.
  • Roll - Roll is just like doing a dog rolling over in the ground. The camera rolls over according to the input angle. Rolling can create amazing camera effects if used well.
  • Far Z - This is the range in which you can see far objects. So, if there is a tree 2,000 coordinates away. You can set this to 2,000 to be able to see that tree. The maximum is actually 10,000. Beware because this can cause lags if too many objects are seen in the same time.
  • Preview Values in Main Window - Basically allows you to actually see what you are changing in the editor while you have the options windows open. This is very useful for making minor modifications, without having to rename, change, exit, rename, change over and over.
Well, you learned how to create camera using the Camera Palette. To apply a camera in-game use this fonction.

Apply Camera Object (Timed) - This will apply a camera object that you have specified over a duration that you also specify.
There is some other camera functions that can be found here :
configureactions.png

Pan Camera (Timed) - This will basically move the camera to a position specified over a duration.
Pan Camera With Interpolated Height (Timed) - This function is pretty useful if you are using camera in a hilly map. So, it won't stay at a constant height, it will change based on the terrain.
Set Camera Field (Timed) - Sets the specific field to a value specified over a duration.
Rotate Camera Around Point - A useful function. This basically remplaces something that would require a timer and some extra functions. So it's doable without this function, but Blizzard added it, anyways. This will basically rotate around a point.
Lock Camera Target to Unit - This will make the camera is locked to a specific unit and cannot be moved except if the specified unit move. This is great for RPG's, since you can easily just attach the camera to the unit.
Lock Camera Orientation to Unit - This is a pretty neat function. It locks the camera to a specified unit like the above fonctions. But there is other features, it locks its current camera source in place, but then the target follows the unit. It is a neat feature because it doesn't just rotate, it also does some cool rolling based on the position of the unit
Stop Camera -
Current actions that implies camera movement like "Apply Camera Object (Timed)" or panning will be aborted.
Reset Game Camera - A useful camera function that will reset the values of the camera to the basic game camera.
Change Camera Smoothing Factor - This just makes scrolling more smooth, when using the mousewheel up and down.
Reset Camera Smoothing Factor - Resets the camera smoothing to its original value (0).
Set Spacebar Point - This will allow you to press the spacebar to snap your camera to a specific point.

Tips :
Preview camera motion :
When you create a trigger with a camera fonction, you will se a button on the right side of the screen called Preview Camera Motion. By clicking on it, you will be able to see how the camera look in-game.
previewcameramotion.png

Conclusion:
Cameras are very complex object but can be very useful and add a touch to your cinematics when you have mastered them. Try to play around with them to discover more nice functions.
Terrain and Atmosphere :
Sometime, Cinematic Makers won't believe that terrain and atmosphere are a very important part of cinematic. Good atmosphere combined with a neat terrain can really stun people.
Atmosphere :
To create a good atmosphere. A good atmosphere require four things which are :
  • Fog
  • Weather
  • Sky
  • Lightning
Fog :
Fog is a great way tochange the atmosphere. It can be found in Scenario --> Map Options
mapoption.png

Then click "Use Terrain Fog". I suggest using linear as fog type.

You may mess around with the two values, Z Start and Z End, though do not make them get too close together or it will look . If you let them get too close, it will most likely make one area light and another black. If you want to make the fog thick at the end, map makers usually modify it to be something like:
Z Start - 0.00
Z End - 3000.00

The "Z Start" is the thickness of the fog at the far point of view. If it's
really big, the fog at the far point of your view will be real light. If you make it really small, it will be thick at the far point of your view but the "Z End" is a little different though. It measures the thickness of the fog towards the nearest points. If you have the fog real high, it will be light near your nearest points, but it will be thick if you set it to a small value.
Combining these can make real nice fog, so try to set them to the right values.
The "Density" does not create too much effetct unless you set it to a really high value.
You can also change the color of the fog. You may set it to the color you want depending on how the atmosphere will be. If it is night in a spooky forest, I recommend Dark Blue or Black but if you want it sunny, you could use yellow.

Here an example of a blue fog :
bluefog.png
I just want to tell you that I did this in a very short time. Unfortunately, I have no time to make epicness
Weather :
Another way to add a nice touch to your atmosphere is Weather. If you want to make a sunny day use Rays of Light. But if it's night, you don't want to use Rays of Light but maybe Rays of Moonlight or Rains.
You can find the weather option here :
mapoption.png

You can choose the weather you want, click on OK then press "V" and you should see it in WE
It's also possible to create weather in-game and thus by using this trigger
Trigger:
  • Environment - Create at (<Region>) the weather effect <Weather Effect>

Sky :
Sky is important too. If you don't use the right sky it will look really ugly and you don't even use a sky, it will look very ugly
To choose a sky,
mapoption.png

You can choose the weather you want, click on OK then press "V" and you should see it in WE go to Files --> Preferences
preferences.png

Go to Visual and click on Sky Display, you will have a list of skies at your disposal. Check every sky and see which one fits better with your atmosphere.
Lightning:
The latest part of the atmopshere is lightning.
Lightning are also "light" and are divised into two categories,
Ambient Lights
Ambient Lights are lightning that cover the whole map, and are used to give the feeling that it's noon, night, dawn or dusk and are used in any map.
Here an example of an image of Barrens Dirt at day and at Night /
To be included...
Omnilight :
Omnilight are throught, lights tha cover a small area. The Lantern Doodads uses omnilight as well the Fire and Ice Trap in Doodad --> Cinematics.
Here an example of a Red Omnilight added to a campfire, with also a Night Ambient Light :
omnilight.png
Pretty cool, no ? :p
To disable Ambients Light and gives the feeling of being in a cave, uses this function :
JASS:
call SetDayNightModels("","")

Trigger:
  • Custom script: call SetDayNightModels("","")

Here's what it does with some additionnal lights :
omnilight.png
Yeah, I added an invisible Red Light, there
For those who want to create their own omnilight models, have a look at this tutorial, it will surely help you.
Terrain :
Terraining is also a very important thing in a cinematic. The fact that the map is a cinematic-only map and it cannot be played is sometimes a +, because you are able to scale doodads as you want, sue to the fact that tree and houses have almost the size of a peasant. You can also remove the pathing but make sure your unit don't walk throught a rock or it will be a little strange.
Black Borders :
To use Black Borders like these one :
blackborders.png
Go to Advanced --> Game Interface :
gameinterface.png

Check "Use Custom Game Interface" and Look for these three data :
Image - Cinematic Border
cinematicborder.png

Image - Game Menu Background
gamemenu.png

Image - Console Background
consolebackground.png

And Change them by :
UI\Widgets\EscMenu\Human\blank-background.blp
Music and Sounds :
Music and Sounds are very important in Cinematics and can really impress the viewwer if they are correctly used. Warcraft III Sound Editor already have hundred of sounds and some music to be used but if that's not enough, you can still try to look for good musics on Google.
To open the Sound Editor click on this button, you can find him next to trigger editor button :
1145d1165637724-cinematics-cinematictutpic03.jpg

In the Sound Editor you will find lots of music and sounds, to listen to a music/sound, select then press CTRL + A, or press the Play Sound button. If you found the music/sound you looked for, uses one of these button, depending on what you want :
1145d1165637724-cinematics-cinematictutpic03.jpg
Use as sound
1146d1165637724-cinematics-cinematictutpic04.jpg
Use as music
Hint : I usually use any sound/music as sound only because it don't work for me when using Music as Music and using it as sound or music is the same. But that's up to you.
To use a sound, use this trigger
Trigger:
  • Sound - Play Sound <gen>

But to play a music, through, you must use this trigger
Trigger:
  • Sound - Play (Music)

Hint : Sounds cannot be played at map initialization, use :
Trigger:
  • Time - Elapsed game time is 0.00 seconds

Instead
Hint : Remember to stop current music music before playing another one. This can be done with this trigger
Trigger:
  • Sound - Clear the music list
    • Sound - Stop music Immediately

Precise Timing :
What many Cinematic Makers don't know is that, Waits aren't accurate and this is very annoying because Waits takes always more time than requested. So, you may think you can tell the trigger to wait a little shorter and you thinks it will work then ? No, because the amount of delay varies, and this is annoying when you want to make accurate animations or something like that.
Throught, there is a solution : Trigger Queue.
Trigger Queue were added on Warcraft III :RoC editor but nobody use them, throught, they will be useful in cinematic as they are precise.
Basic knowledge of Variables and Trigger are required here :)
So let's begin,
Create a folder for both general and Initializations triggers. I recommended you to divide general and Initialization triggers by comments, like I does, it will help you finding the trigger you need. I created two triggers in the Initialization Part : One that fire at "Map Initialization" and one that begin at "Elapsed game-time is 0.00 seconds".
Create also a new folder called "Cinematic Triggers".
Queued Triggers don't require Events nor Conditions
Each triggers in the second folder should have three parts

  • Set Current Scene
  • Current Scene's triggers
  • Next Scene

Add trigger actions as shown:
Trigger:
  • Scene 01
    • Events
    • Conditions
    • Actions
    • -------- Set Current Scene --------
    • Set CurrentScene = (This trigger)
    • -------- Current Scene's Triggers --------
    • Camera - Apply 3rd Camera <gen> for Player 1 (Red) over 5.00 seconds
    • -------- Next Scene --------
    • Countdown Timer - Start NextScene as a One-shot timer that will expire in 5.00 seconds

Instead of 5.00 seconds, you should insert the time you want to wait until the next cinematic scene starts.

In the Trigger that fire at Map Initialization, add these actions
Trigger:
  • Trigger - Add Scene 01 <gen> to the trigger queue (Ignoring conditions)
    • Trigger - Add Scene 02 <gen> to the trigger queue (Ignoring conditions)
    • Trigger - Add Scene 03 <gen> to the trigger queue (Ignoring conditions)
    • Trigger - Add Scene 04 <gen> to the trigger queue (Ignoring conditions)

Until you reach the last Scene.

Remember that the next Scene's Trigger won't fire until the current Scene is removed from the trigger queue. To do that, create this trigger in the General Triggers

Trigger:
  • Next Scene
    • Events
    • Time - NextScene expires
    • Conditions
    • Actions
    • Trigger - Remove Current Scene from the trigger queue

Tips :
Escape function in playable maps
Canceling a cinematic in playable maps is easier using Trigger Queue. You don't need any boolean condition "cinematic is skipped" variable or all these if/then/else conditions with "skip remaining actions" any longer.
Just pause the NextScene timer and clear the trigger queue. Of course you should fade out and setup the things to continue playing, also, and place units in an area, if they were intended to move in the cinematic.

Removing Leak :

You probably realized that using lots of small trigger instead of big triggers using waits can cause lag. Every trigger takes memory, so you should try to reduce their count ingame. The best way to remove leak is using this action :
Trigger:
  • Custom Script: call DestroyTrigger(GetTriggeringTrigger())


At the end of the NextScene trigger. It will free the memory the trigger took before, but the trigger is no longer useable in any way. Anyways, I recommend that, because it will greatly reduce leak.
Units Controls :
To make great cinematics, especially great 1v1 battle cinematics, it's important to have control over units, and thus by changing their animations, scaling values, colors, creating special effect and more. To see what I'm talking about, you want look at The Spirit of Vengeance in wc3campaigns.
 

Tyman2007

Ya Rly >.
Reaction score
74
Nice tutorial :p

First thing that I noticed was the use of Map initialization for the cinematics. From my knowledge it's a little inefficient to use that. I was always taught to use Elapsed game time .01 seconds, mainly because if the map is initializing (loading) as well as trying to start all of the cinematic stuff it could bug out a little bit or cause a much longer unecessary load time.

Well, that's just my idea. You use a couple things that some tutorials fail to explain in this tutorial which is good! I've noticed that you've dipped into the game interface tool under the Advanced Options which is something I've almost never really seen done in tutorials.. I suppose if one doesn't have any skills with photo editing programs I guess they have no way to tell people from experience :p
 

farold

New Member
Reaction score
3
But it still looks good so far.
It's going to be finished today, hopefully
Nice tutorial :p

First thing that I noticed was the use of Map initialization for the cinematics. From my knowledge it's a little inefficient to use that. I was always taught to use Elapsed game time .01 seconds, mainly because if the map is initializing (loading) as well as trying to start all of the cinematic stuff it could bug out a little bit or cause a much longer unecessary load time.

Well, that's just my idea. You use a couple things that some tutorials fail to explain in this tutorial which is good! I've noticed that you've dipped into the game interface tool under the Advanced Options which is something I've almost never really seen done in tutorials.. I suppose if one doesn't have any skills with photo editing programs I guess they have no way to tell people from experience :p
Not dure for that Map Initialization setting, it always worked for me, but if someone else say the same thing as you, I will have to check.
Thanks for feedback.
 

farold

New Member
Reaction score
3
I left this tutorial some times before due to the fact I was occupied, but hopefully, I will finish it tommorow :thup:
 

Tyman2007

Ya Rly >.
Reaction score
74
I suggest grammar checking this.

You use a lot of improper grammar which can discourage people from taking this too seriously.

I can help you at that part.
 

tommerbob

Minecraft. :D
Reaction score
110
So far this is a great tutorial! I've already learned alot from it, especially about the

JASS:
call SetDayNightModels("","")


I've been wondering how to create a cave environment for a while now, and you just answered it. :)
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top