Grim's Cutscene Engine

Documentation | Plugin | Source

A while back, I had a need for a cutscene engine for one of my projects that was capable of producing cutscenes like the ones you’d see in off-platform games during a story mode or something similar to them. However, as far as I searched for one, I was unable to find anything like it that had already been made and was public, with the closest thing being the TweenSequence Editor, of which this plugin’s interface was heavily inspired by/based off of.

Due to a lack of such a plugin existing, I decided to make my own, which is capable of importing and exporting cutscenes. The cutscenes themselves support the addition of subtitles, and a special type of keyframe known as an “Action” which are basically functions that get executed at the defined time in the cutscene, and you can add custom actions to suit your needs and the editor will be able to use them upon reopening the place (as long as the module is somewhere in ReplicatedStorage, it will work perfectly fine).

By default, the engine has an Explosion action, an Emit action (for particles), an Animate action (to play an animation on a humanoid), and a Sound action, some actions can be bound to a specific instance whilst others can be bound to no specific part, in order to add actions which require a specified instance, you will need to have an instance selected in the editor.

The main features of this engine are:

  • Animation of any instance in workspace
  • Subtitle support
  • Actions
50 Likes

(post marked for deletion for privacy reasons)

7 Likes

It’s mainly helpful in the case where you want to make a proper cutscene for your game, like the ones seen in story games where it shows some important part of the story taking place before it continues onto the gameplay.

I believe that the documentation should explain well enough how to use it, but if not, I’ll consider making a video on how to use it at some point when I have the time.

6 Likes

I agree with LIVONO, a video would represent what it looks like and how it works much better than explaining in words, otherwise it sounds amazing and I might use it.

6 Likes

I still prefer going with animations and RunService, but cool resource! You don’t see many of these! :+1:

4 Likes

Looks good to me! I’m gonna use it!

2 Likes

That should be fixed now :sweat_smile:

I’ll look into making a video for it in the future once I’ve got the time to, and I can agree that words definitely cannot describe it as efficiently as a video could!

2 Likes

I’ve only started looking at this tool and already I see it has more functionality than CutScenify, and seems easier to use than Moon’s animator.

  1. You have a very clear UI using a timeline approach which is very familiar to anyone who has done animation
  2. You pre-load the most basic thing of moving the camera around using Camera.CFrame, and it is totally simple to understand and use, and all the EasingDirection settings are there to change for each keyframe. (though the coloring of the dropdown made it difficult to see you could scroll down)
  3. You can select any item in the workspace and track properties of that item to create new keyframes for changes in that property
  4. You can add animations by animationId, emitters, sounds, and explosions, and you can extend it further by adding your own custom actions via modulescript.

Like I said, I’ve only scratched the surface, but it looks promising!

5 Likes

I’ll take this feedback and see about changing the coloring of it or adding a border to it!

Familiarity and ease of use was definitely the primary goal of this system, as are the many systems I am currently in the works of producing (atm, these other systems are a UI engine with a visual editor and a Particle engine that also has a visual editor and support for 3D objects).

3 Likes

I can’t quite figure out how to get the subtitles to work though. IU understand the required structure of the script, but I don’t know where to put the script. I’ve tried several places.

1 Like

For subtitles, if you have a module anywhere in the game that contains the subtitles data, you can simply add a new index to the cutscene’s module like so:

Subtitles = path.to.module
2 Likes

nice, but can you show a demo video of your plugin being used :+1:

1 Like

In-love with the plugin’s intended idiomatic nature; definitely see myself using this over the existing alternatives with enough polishing.

Here’s a few issues/suggestions that you could take a look at:

  1. it seems that the plugin refuses to work in team create studio sessions? I’ve been able to quickly fix this by parenting the SubtitleEngine GUI directly to CoreGui

  2. Unsure of whether the feature of setting our own increments & animation lengths via the editor is a thing - would love to see this realized if it hasn’t been already

  3. In some occasions, changing the camera rotation in the midst of editing seems to apply the same rotation to the rest of the existing keyframes

  4. Confirmation prompts for action execution (e.g. delete, clear) as well as a mouse-hover tip display - to prevent user error. I’ve clicked on, what seemed to indicate a loop functionality to later find out that it clears the scene.

  5. Undo, Redo functionalities are probably going to be an absolute essential, especially for users like me who make a lot of mistakes

1 Like

Ah, this is likely due to the fact TeamCreate gives each user in the server a Player object, but I believe some fixes I am working on will solve this.

If you mean how long a cutscene can be, the length of it extends as far as the last keyframe goes. You can actually zoom out/in for the timeline with the mouse wheel and pan through the timeline by clicking the mouse wheel and dragging. It was a slight assumption here that most people would check out the documentation for the plugin, which has an entire guide explaining a great majority of the interface, perhaps I’ll directly link to the interface here to make things clearer.

I’ll certainly take the hover tooltip idea into consideration and see about adding a confirmation window for actions that are potentially “dangerous”.

I’ll look into adding a change history as well.

3 Likes

Ahh, this makes sense. I do admit that I’ve skimmed through the documentation :sweat_smile:

Nevertheless, I still think an entry field for extending/shortening the timeline (as seen in roblox’s default animation editor; refer to the attached) would come in handy for trackpad users and make this functionality a bit more obvious.

image

3 Likes

ah… it completely slipped past me that this might not have full support for trackpad users, I’ll look at implementing support for trackpad panning/zooming functionality

2 Likes

If you can just use a scroll bar on the timeline that would be better.

2 Likes

I don’t know how a scrollbar would work since the timeline doesn’t have a set-in-stone or pre-defined animation length

1 Like

seems its not working right now

when i click the plugin button, nothing happens

2 Likes

If you’re in team create, it’s a known issue that it doesn’t work due to team create having a Player instance for each user in the server. And a fix is in progress alongside some other changes

2 Likes