• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

TriggeringPlayer(Cutscene)

Level 2
Joined
Mar 2, 2025
Messages
7
I am working on an RPG.

I have a title screen that I would like to fade to black after TriggeringPlayer clicks on new game and starts a cutscene that only they can see.

Is this possible? Any advice on where to get started?
 

Uncle

Warcraft Moderator
Level 73
Joined
Aug 10, 2018
Messages
7,871
It would be pretty difficult to create a cutscene (cinematic?) for one player. It's definitely possible, though.

You can use a Dialog button or custom UI for the "new game" button.

Then for the actual cinematic, here are some ideas:

1) Create local Special Effects and treat them like Units. Special Effects can play Animations and be moved using Timers.

2) You may be able to use Units if you abuse the Set Unit Skin action. If that action can be done locally without desyncing then you could change the skin of unwanted units to an empty model which would appear "invisible". You could still drag select them though, if that's a problem. Also, you'd want to disable their collision so that they don't interfere with one another.

3) You may be able to use the Ghost ability (invisibility) + modify Vision settings temporarily. For example, remove all shared vision to/from your Player and create the cinematic units under their control and give them the Ghost ability. This should make them only visible to you.

4) Use custom UI frames to have a sort of "powerpoint presentation" cinematic, you see this a lot in modern games. You could even use a series of images played frame-by-frame fashion to create an animation. Think the animated cards in Hearthstone, for example.

To create something locally you need to use GetLocalPlayer(). Be very careful as this will cause desyncs if you run the wrong function inside of it.
 
Last edited:
Top