gadget114514 / SceneStreamer

A small utility that makes it easier to stream additive Scenes in Unity.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

M3 Engineering Test
=============

The Unity project includes a set of scripts located in Extensions/SceneLoader. This SceneLoader 
feature allows for the streaming of additively-loaded Scenes, which is very important not only 
for game performance, but also for collaboration on large teams. 

The test should be return within one week’s time. Plan to spend a reasonable amount of time on 
your improvements, and prioritize quality over quantity.

Please comment on any problems you see, even if you don't end up addressing them. Feel free to ask 
questions about project and Scene setup.


Project Setup:

* We encourage you to install a version of Unity 2020.1 from https://tinyurl.com/y6h9f6l6
* Open Assets/Scenes/Track.unity
* Hit play, and observe that Scenes are dynamically loaded and unloaded to form the current parts 
  of the track.
* In the Track scene, you will see a few instances of the SceneLoader
  - "Debug - LoadAllScenes" instance of SceneLoader allows you to load a whole set of streamed scenes,
    such that a content creator can work on an entire level.
  - Other GameObjects contain SceneLoader instances, along with trigger volumes that control when 
    Scenes are streamed at runtime.
* Scenes are streamed using Addressables


Requirements:

Create an Editor window that manages SceneLoaders for a given master Scene (in this case, Track.unity is 
a master Scene). For possible inspiration, reference other Level Streaming features online.
The Editor window should support the following features:
* List existing SceneLoaders
* Indicate what trigger volumes load which Scenes
* Allow for the possibility of adding a new/existing Scene to the Master Scene (i.e., the tool will create all required GameObjects 
  and components for loading an additional Scene).

Your new feature should be as user-friendly as possible, with the audience being level designers and 
artists. Feel free to change anything in the project that you like: code, GameObject structure, level
layout, project structure, etc.

Return project submissions by creating a fork of this repository, and sharing your new branch's URL.

Supply a summary of the work you performed along with your new zip file. Items to mention
should include:
* Modifications made to the project
* Limitations of your implementation
* (Optional) Future improvements you might make to the feature, were time not an issue
* (Optional) Whatever thoughts you had about this test!


Bonus Point Issues:
- Currently, you must use the inspector on each SceneLoader to change behavior. Could all this be (optionally) 
  controlled from your new window?
- Is there a way to build a node-based visualization of the Master Scene?
- Could/should the trigger volumes be part of the SceneLoader itself, instead of being a separate object?
- There is currently no visualization for the trigger volumes that trigger SceneLoad actions, other 
  than the default BoxCollider gizmos.
- Currently, Scenes need to have contents positioned properly in world space. Maybe the loader could 
  use an offset to position loaded contents?

About

A small utility that makes it easier to stream additive Scenes in Unity.


Languages

Language:C# 100.0%