Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cinematic scenes #111

Open
datahead8888 opened this issue Jun 28, 2014 · 11 comments
Open

Cinematic scenes #111

datahead8888 opened this issue Jun 28, 2014 · 11 comments
Labels

Comments

@datahead8888
Copy link
Member

This is a task to create a cinematic scene editor user interface that is integrated with the level editor.

Before you panic and say this is too complicated, keep in mind we could start with the raw basics and iteratively progress. I think it would be good to create a UI and not do it strictly through scripting so that non programmers can easily edit scenes and to allow easier visual placement.

Requirements (we can add to these as needed):

  • Path editing for all objects
  • Timing and event control (probably through a series of visual tables)
  • Optional integration with scripting.
  • Automated Camera movement through the cinema user interface (using paths)

A good example of an interesting scene is a an army of furballs and Larries marching across the screen, with dark gray, ominous clouds moving in the background. Such scenes will really drive the plot and get the "button mashers" to actually see what's happening with the story.

@Quintus
Copy link
Member

Quintus commented Jun 29, 2014

👍 really good one. We will have to think about about how to integrate that properly, though. I think the cinematic scenes should always be a level on itself, incorporating them into a level you can play through afterwards would probably impose to much work. These levels will have an auto-finish property that will make them forward you to a real level after the scene has been completed.

Vale,
Quintus

@datahead8888
Copy link
Member Author

For now that sounds like a good idea in order to get this prototyped and in front of users. Long term I think it would be good to get cinema scenes to work in the middle of levels (which would require scripting and/or game editor hooks). We'd just want to abstract the code well enough that it's not a royal pain to change this later. We'd also want to choose a format in the level files such that we can change this later without breaking all old levels.

Ultimately, cinema scenes may have to function differently than levels, though. We may want a "field" with different rows of enemies marching in the distance, each scaled to a different size for different depths. This is not something I'd suggest for the first version of the cinema editor, though.

@datahead8888
Copy link
Member Author

@Bugsbane - do you have any experience with animation software (whether it be Flash or some other product (web or non web based))? You might be able to provide some good input on this.

Early implementations will probably literally be hacks on the level engine, but we may eventually consider adding some traditional animation features such as key frames to this. If we can get a better idea as to what tools would be useful for creating cut scenes using game sprites, it would be helpful. See some of the "learning from videos" posts I made on the forum - they give links to a couple well known sprite movies made in Flash.

@Bugsbane
Copy link
Member

do you have any experience with animation software

My masters degree is in computer animation, and I trained to work at Disney (although I ended up going into games / advertising instead), so yes, I'm familiar with 3DS MAX, Maya and Blender, all of which are way more complicated than what's needed.

What I would look for, would be the ability to select and move objects and / or groups of objects. Set position, rotation, scale, opacity keyframes at specific frames. Play sounds and adjust volume keyframes. Add text as an object. In terms of the gui, being able to select keyframes and move them, adjust interpolation curves (ie ease in, linear, ease out), and jump forward / backwards one keyframe or to the next keyframe. I would only show keyframes for currently selected objects.

Personally I would model the simple web based animation systems such as sprite based flash movies, more than the extremely complex ones found in most animation packages and even things like Unity. GooCreate has a nice system for this, but it's still way more than we need.

@datahead8888
Copy link
Member Author

I probably need to learn more about keyframes myself. What I know is that they deal with the timing of steps of animation and that everyone talks about them as being very foundational to any animation system.

Personally I would model the simple web based animation systems such as sprite based flash movies

This sounds like a good idea. We'd model the commonly used features. The advanced features would probably end up being specific to TSC, based on our level system, etc.

@Quintus
Copy link
Member

Quintus commented Aug 14, 2018

There will not be an entire cinematic editor in TSC 2.1.0, it is just too much work. What I'm most likely going to do is to provide a special way to script level objects easily in a special mannor. That's better than nothing, and we need to go forward. A fully-featured cinematic editor can be implemented later on.

@Quintus Quintus added this to the Version 2.1.0 milestone Aug 14, 2018
@Quintus Quintus changed the title Cinematic Scene Editor... Cinematic scenes Aug 14, 2018
@datahead8888
Copy link
Member Author

It took me some minutes to realize this issue tracker is ONLY for the 2.X series.
I think it'd make sense to consider filing the cinematic scene editor feature in the TSC 3 tracker. Otherwise we might consider having some sort of other tracker / list of items that are on the theoretical drawing board. It may be a long time (if ever honestly) for this feature to be implemented, but I don't want to lose sight of the idea.

@datahead8888
Copy link
Member Author

Also, it might make sense to talk a bit more before closing or changing many other features that won't get implemented in the 2.X series. What goes into the 3.X series is another debate, but having an easy way to browse the ideas would be useful. This tracker is going to become inactive after a few 2.X releases, anyways, likely.

@Quintus
Copy link
Member

Quintus commented Aug 19, 2018

Maybe add a tag "TSC3 consideration" and tag the relevant issues?

@Quintus
Copy link
Member

Quintus commented Mar 11, 2019

I have been thinking about this ticket. I think we can distinguish two kinds of scenes:

  1. In-level scenes, like Alex finding something and some smaller events happening around that.
  2. Large narrative scenes, like the prologue.

I propose the following.

I. In-level scenes

In level cinematic scenes can be implemented using a special DSL in the level script. In fact, I have already started implementing that. The level script could look something like this:

$Azdhor = UIDS[45]
$Alex   = UIDS[1]
$Alice  = UIDS[66]
$Book   = UIDS[100]

scene = CinematicScene.new do
  set_camera 100, -150

  warp $Alex, :to [100, -165]
  image $Alex 3, :set => "Alex.imgset"

  curtain # Show the scene

  walk $Alex, :to => $Book # Raises error if Y coord not the same

  # Have Alex take up the book
  hide $Book
  animate $Alex do
    image 1, :set => "Alex-Book.imgset"
    wait 0.2
    image 2, :set => "Alex-Book.imgset"
    wait 0.2
  end # Returns $Alex to original image

  # ...
end

# Play the scene once a certain point in the level is reached
UIDS[500].on_touch do
  scene.play
end

I'm not yet entirely content with this as it still requires too much manual typing. Given that our imageset files already contain the relevant timing information, I think it would be good to leverage that.

II. Large scenes

I suggest to add the concept of visual novel telling for these. For instance, the prologue features Alex investigating the eastern desert and finding the first book of the Chronicles. We can narrate this using full-screen pictures and some text. This would be much easier than trying to create a pseudo level for that and it gives room to show details that can't be reproduced in the level elements.

This is trivial to implement (I think). All it needs is a graphic artist willing to draw the scenes as full-screen pictures.

Quintus added a commit that referenced this issue Mar 15, 2019
The cScene class represents a control class for a new game mode,
MODE_SCENE. Entering this mode enters visual novel telling mode, alias
scene mode. In this mode, a single background image is shown at a
time, with text boxes to tell the story (yet to be implemented).

cScene is the superclass for all scenes. This commit adds a single
subclass that's currently still quite empty, cPrologueScene, and which
is intended to describe the game prologue.

Each scene can make use of separate "scene actions", where an action
describes something that is happening in the scene. For instance,
there are/will be actions for changing the background image, showing
text to the user, etc. cScene::Update() executes the list of actions
in a scene one-by-one, stopping on actions that request it, so that
the action gets opportunity to process user input.

This is part of ticket #111.
Quintus added a commit that referenced this issue Mar 18, 2019
This partly implements ticket #111.
@Quintus
Copy link
Member

Quintus commented Jul 15, 2019

I remove this from the 2.1.0 mile stone. We have the visual novel system now and we can supplement it with an in-level cinematic scene system in a later release. 2.1.0 is not going to have any story most likely (lack of artists).

@Quintus Quintus removed this from the Version 2.1.0 milestone Jul 15, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants