scratchfoundation / scratch-gui

Graphical User Interface for creating and running Scratch 3.0 projects.
https://scratchfoundation.github.io/scratch-gui/develop/
BSD 3-Clause "New" or "Revised" License
4.44k stars 3.54k forks source link

Multiple stages #1907

Closed zealton closed 4 years ago

zealton commented 6 years ago

Expected Behavior

As we want to build complicated projects, like multiple levels or scenes

we want to manage sprites/actor easily, not all in one place

Think in a normal Mario game, if we want to design a game with 2 levels, we need to put all things in one place

image

Different screen(stage) includes its own backdrops and sprites

It may also include some new blocks like switch to stage 123, when stage change to 123

kyleplo commented 6 years ago

Maybe as an extension?

brylie commented 4 years ago

Scenes are relatively common in game engines and allow developers to organise projects. For example, Godot Engine and GDevelop both have scenes as a fundamental organizing concept.

When the developer creates multiple scenes, they could transition between scenes with a "transition to scene {scene_name}" block.

benjiwheeler commented 4 years ago

Thanks for the feature suggestion! This would be a fundamental change to how Scratch works, but it is worth thinking about. I'm going to close it as an issue because we don't plan to implement it, but we will keep it in mind, and of course feel free to collect support for exploring it, and feel free to add on to this issue with more detail about how it could work with the Scratch editor interface!

brylie commented 4 years ago

OK, thanks. Having scenes is a natural metaphor for these interactive media experiences, akin to stages or scenes in movies, theatre, and other games.

Currently, when Scratch projects grow to have more characters, dialogue, interactions, mini-games, or other scene-like aspects, coders have to clutter up the single canvas with all of the elements and wire signals and visibility toggles through their code. This developer experience and would be simplified by allowing different scenes with scene transitions.

benjiwheeler commented 4 years ago

FWIW, Scratch Jr. has a similar kind of scene-based structure to what you're talking about.

For Scratch, we made tradeoffs that make some things easier and more natural, and others harder and more unexpected. Backgrounds, scenes, and sprite state resetting is something where we chose to make fewer assumptions about the kind of project kids are making, and tried to provide building blocks that let you build scene-based stories, but also other types of projects, without being constrained by a scene metaphor.

One approach is not better than the other, and we welcome other takes on these design questions. We'd love to see a scene-based approach implemented using the scratch-gui repo's code!

benjiwheeler commented 4 years ago

@kyleplo My sense is that a scene-based approach would involve changes to the underlying structure of the Scratch vm, and would thus be hard to implement as an extension. Any ideas for how this could be done?

brylie commented 4 years ago

@benjiwheeler can you point to an example Scratch project containing multiple scenes or mini games? I am curious to learn how to structure larger game concepts with Scratch.