0
\$\begingroup\$

I'm trying to make a RPG game (without the typical leveling and such. Just a roleplaying game) based on Wasted Youth Part 1 (which is an old flash game where you take control of a teenage kid sent to a boarding school for troubled children who keep getting kicked out of schools).

Here's an example of a cutscene in Wasted Youth Part 1: https://imgur.com/a/VTyGWlm

I've decided to go about creating a custom cutscene system due to the fact I find the timeline too limited for what I want to do.

I've also already made the basics of a cutscene system (it's very hacked-together and more servers as a proof-of-concept) shown here: https://twitter.com/SkullAberration/status/1079132052761518082.

One idea(along with pros and cons) I've already come up with is to store the cutscene in a separate scene with hardcoded(right word?) movement/animations/etc. This seems good since it helps me store cutscenes in an easy way and easily be able to customize what happens in the scene. An issue, however, is persistence. If a cutscene happens in a school cafeteria(as one does in WYP1) how, when I load the player back into the main scene, do I easily make sure they're in a cafeteria filled with people still?

If anyone has any information/suggestions on how I could go about creating a cutscene system like I've described(hopefully good enough), that'd be great!

\$\endgroup\$
  • \$\begingroup\$ You know you don't have to unload the cafeteria scene when you load the cutscene scene, right? \$\endgroup\$ – DMGregory Dec 30 '18 at 0:20
  • \$\begingroup\$ But what if the cutscene is the player entering the cafeteria with the people in it? \$\endgroup\$ – Ducktor Dec 30 '18 at 0:32
1
\$\begingroup\$

First off, Unity has a good tutorial on persistence. If you're not big on scripting, should probably check out at least a couple of their Intro to Scripting tutorials first, just to get used to the basics. Or jump right in, and look things up if you get lost.

Option 1: Save state, play cutscene, restore state

Decide what elements actually change in your cutscene: player location/orientation, moving NPCs ("cast"), items changing appearance or location ("props"), lighting conditions. Just before changing to the new scene, you store all that information. At the end of the cutscene, just before going back to normal-gameplay, you restore everything to its previous state that you saved.

Option 2: Animate anything

Almost any scene or UI element can be animated using custom animation clips. You play out your cutscene, then in the last couple of frames, "fade to black" and reset everything that was animated. It's a little more advanced, but you can also add Animation Events to trigger any code you want, including dynamic positioning, dialogue, or player-input.

There was a really eye-opening Unity live session a few years back, Animate Anything with Mecanim, as well as some more recent Unite sessions & blog posts (Creative Scripting for Timeline) that are worth checking out for ideas on how to get the most out of the built-in tools.

Option 3: There's an Asset for that

There are plenty of assets on the Unity Asset Store that already do this, if you're not specifically looking to write everything from scratch. My personal recommendation would be Adventure Creator, since it is well-documented & supported, is specifically designed for stats-light RPGs (what used to be called adventure games :), and it has a really good node-based visual-scripting system built-in, as well as scene-to-scene and save/load persistence.

I don't own it, but I do use it, and find it does everything I need it to and then some. It goes on sale periodically, but you can check out the fairly extensive demos/tutorials on the dev's Youtube channel (Chris Burton).

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ I know all of these already. I took it all into account when thinking of it. Maybe I wasn't clear, but by persistence I don't mean saving or loading data, I mean if I have a cutscene where the player enters the cafeteria full of people, when they exit the cutscene and get put back into the main scene they should still be in a cafeteria full of people. Regarding assets, I don't want to spend money and most assets I find regarding cutscenes are >£100. Anyway, I thank you for your help and suggestions but I've come up with a solution and are going to/have posted it. \$\endgroup\$ – Ducktor Dec 31 '18 at 0:28
  • \$\begingroup\$ Persistence also covers saving the end-result from the cutscene and applying it when reloading the main scene. And we just came off of about a month's worth of year-end Unity asset sales. But I'm glad you found a solution either way. \$\endgroup\$ – MandisaW Dec 31 '18 at 23:03
0
\$\begingroup\$

I've decided to go with the scene approach I mentioned, but with a few tweaks.

Rather than storing cutscenes in a separate scene, I will store entire missions + their associated cutscenes in a separate scene. This way I can keep persistence after cutscenes since I won't be changing scene afterwards and by the time the player has finished a mission, the world should be back to it's normal state/there would be nothing that should persist into gameplay.

Above all this, I'll have a 'world manager' that deals with the 'world' of the game. For example, if player has completed mission X then change NPC Y's dialogue to Z or if time of day is afternoon, put all NPCs inside the cafeteria eating.

| improve this answer | |
\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.