Implementing cutscenes

Sorry, but your architecture only works if you take into consideration ALL possible combination of flags. You say “if music stopped and some other thing ended, start cutscene”. What if I have a third thread that’s supposed to change the state? It’s now “if A stopped and B stopped check C and decide”… that’s a nighmare.

I think you’re not aligned with us on the meaning of “cutscene”. In fact,

are the central topic in this discussion. A cutscene is whatever happens on the screen and you’re not controlling. It might be a different scene, like the monitor scenes in TWP, or a simple temporary loss of control, as in when you first meet the Sheriff (he does, in fact, refer to it as a cutscene) or when the last page of Ransome’s joke book flies out of the window.

These cutscenes, if triggered by timed events, need to take threads into consideration. A loop approach that just decides “which one” to start, isn’t powerful enough. I know, since I tried: when I first began my engin I wanted to use a minimalistic approach, the result was that the engine couldn’t support anything outside of linear execution paths.

There’s a reason why everyone is talking about threads.

Can you tell me a bit more about that? I took a look and saw it’s C++ based, so I’m already sold :stuck_out_tongue: but… I’ve always been thinking on extending my old engine (which was based on AndEngine for Android) but I wanted to leave Java, and Cocos2d-x seemed nice for sprite rendering and input handling but not for the tool UI.

ImGui is amazing. If you’re writting tools, it’s must-use.

2 Likes

As far as cut-scenes. They are always a pain. SCUMM had nested cut-scenes, but we used cut-scenes for things like opening a door because it turned off input, etc. Thimbleweed Park didn’t have nested cut-scenes and we just turn the input on and off as we did small things like open doors. My advice is to NOT do nest cut-scenes, it will keep you from using a sludge hammer to pound a nail.

A cut-scene should a) remember the camera position/room. 2) Remember who the camera was following. 3) Remember the input/UI state. Turn the input off, Turn the cursor/UI off, Do any other visual indication that you’re in a cut-scene.

When the cut-scene ends, it should restore the camera, restore the following, restore the input. Don’t just turn the input on, restore it to the old state. Same goes for the cursor/UI.

In SCUMM and TWP, a cut-scene would pause all global (non-room) running scripts. Each scripts has a “is_pausable” flag which could be set to tell the system that it should or should not be paused. 99% of the time, room local scripts should not be paused since they were often controlling animation, etc.

7 Likes

Thanks. What do you do for actors that are walking/talking/animating? Is it best to stop all of that dead, or to pause and resume?

Actors don’t automatically get stopped. There might be situations where one actor needs to be stopped due to their involvement in the cut-scene, but general we didn’t stop them. When a cut-scene starts, you don’t want it to look like the world froze. The world should keep moving along, you’re just taking control away from the player. The reason we paused global scripts was they most often are controlling world events we didn’t want triggering during the cut-scene. In the early SCUMM days, cut-scenes would most often leave the current room (the word “cut” came from cut-away from the game. So actors in the current room would be largely irrelevant. The reason cut-scenes can be a pain is there isn’t a one-size-fits-all solution. You end up hand coding all these odd situations.

6 Likes

Thank you Ron for confirming these (and more) little details about cutscenes. You’ve just convinced me to drop “nested” cutscenes from SCUMM-8. Like I said earlier, even though I added support for them, I’m pretty sure I’ve NEVER needed to use more than one for any of the tiny games I’ve made with the engine.

Thanks also for the tip about global/non-room scripts and having an is_pausable flag - as I’m currently not doing this (must have missed this in the SCUMM docs!) :nerd_face:

1 Like

The thing that fascinates me most about cutscenes these days is that they are not completly pre-rendered anymore but occur more within gametime now and adjust for instance what clothes the characters were wearing before they triggered them.

So if you get yourself some high enough police attention in GTAV (so they would shoot you on sight) before you trigger a cutscene this happens:

5 Likes

1:30: “This is fine.”

3 Likes

Hilarious, I got it once, at Franklin’s (new) house! :rofl:

Thanks @RonGilbert and @Liquidream - Thanks to your advice I’ve got cutscenes set up and working. A few more engine features and I might be able to start putting together a little game :slight_smile:

3 Likes

Here is some proof!

(@david if you need another reason for making a Zak McKracken sequel…
or a director’s cut…
or a remastered version…
or just a mailorder patch disk)

2 Likes

…then me and @Sushi will be your game breakers testers :grin:

1 Like

Oh! I’d love that!
We even finish each other’s…

1 Like

…sandwiches? :smiley:

2 Likes

And you read my thoughts too!

I was gonna say “I was gonna say ‘lunch’, but that works too”, but close enough!
So :clap::clap: for finishing my jokes! :smiley:

1 Like


3 Likes

Yoda is a developer :rofl:

But it’s not meant that way. :wink:

Developers must be multithreaded to write code this* tall?

* the original had the word this too