Going from single-level to multi-level game

So, the first level of my project is nearly in the state I want it to be to start making another level.

But, currently, EVERYTHING is on the same event sheet. Everything. The first level’s event sheet. Weapons, UI, enemies, everything except main menu and pause menu handling.

I know the first step would be picking out every object that I want to reuse through different scenes, and making them global objects.

But what about external event sheets? What about functions?

Is there anybody willing to give me a few tips on how and when to use these?

Are there any other features relevant to making a multi-level game that I don’t know about?

I did it recently, so it’s still kinda fresh in my memory:

  • First step, make a backup. :grin: Never trust my memory!
    image
  • If necessary, clean-up your scene and your events sheet (remove empty, disabled, obsolete, etc).
  • Duplicate your scene (right click in the scene list).
    image
  • On the original scene, delete everything that is unique to the first level. This will be your base.
  • On the duplicate, compare with the original to delete everything else, making sure you don’t delete too much. This will be your level.
  • Copy all the events of your base to a new external events sheet.
    image
  • On your level events sheet, add a Link special event to load the external events (base).
    image
  • On both your level and your base, group your events nicely and add comments. Troubleshooting may become harder now that things will be split up.
  • Make your reused objects global, as you said.
  • Don’t care about your functions and behaviors, they’re already outside scenes.
  • If you have graphical UI that will be reused (pause menu, buttons, etc), copy-paste them to an external layout.
    image
    Then delete them from your level scene, and add an action on your base sheets to load them.
    image

And that’s about it.
Then, to create a new level, duplicate your level scene, rename the duplicate and edit it.

2 Likes

Hey, thanks a lot for this guide. It’s pretty clear, but it does raise a few questions more, which I’m immediately going to pelt you with :slight_smile: :slight_smile: :slight_smile:

Following this method, level scenes become external layouts, right?

As in, you don’t make the game load a different scene for each level, you make the game reload one basic scene where then the different level layouts are loaded via an action (which particular lever layout is loaded is presumably determined by global variables)

Can you use the event sheet of a scene used as external layout? I mean, is the event sheet of the external layout loaded taken into account, or is it ignored? Do I have to set up the instructions for external layouts in another external event sheet?

How do groups interact with global objects and regular objects? Because I use a lot of group-based logic. Can a group include both global and scene-local objects?

What about layers? What if the empty scene doesn’t have the same layers defined as the layout loaded?

I’m asking all these questions because depending on how these issues fare, I might feel more comfortable keeping levels as self-contained scenes, and only use external layouts for the UI (to avoid remaking the UI for every level)

On both your level and your base, group your events nicely and add comments. Troubleshooting may become harder now that things will be split up.

I keep a pretty tidy event sheet so far, I want to think…

Here’s with everything “closed”

Here’s one of the “folders” (groups) open

Almost everything is enclosed in its own group within other groups.

Following my method, each level is a scene, but all share the same external events sheet (base). My base handles camera movement, custom cursor, music, UI buttons, etc. All that is common to all scenes.

In my game, the levels use the same objects in different ways, so I need to have events linked to them and/or different settings/behaviours.
I can’t speak for all games. :slight_smile:

External layouts are only graphical, they have no events. External events sheet are only instructions.

Groups can mix objects, global objects, and probably groups and global groups.
But

All the assets, objects, groups and layers called somewhere must exist there, or it won’t work.

Oh sorry, I misunderstood + I only ever made use of external layout once.

Sounds golden, I’ll follow it.

What happens if there’s a conflict between external events and current scene event sheet?

It will conflict just like if it was in the same sheet.
The events from external sheets are added to the sheet, right where you insert the Link action.