Core Update 1.0.207 - Scenes & Raycast Improvements

Highlights for Version 1.0.207

Welcome to our August 24th patch notes!

With this patch we are introducing Scenes! Scenes allow creators to easily divide up their games while keeping the same project content accessible across all scenes. A game can be made up of many scenes (e.g. main menu, tutorial, different levels) that display different information, and usually there is some way for a Player to get from one scene to the other. Transferring between scenes as a player is like transferring between games and there will be a loading screen.

All projects come with one scene by default called Main, which will be shown in the Scene drop down in the toolbar as the active scene. Publishing a game will allow you to select which scenes you want to publish.

See our documentation for more details and check out our forum post on how to migrate from child games to scenes.

Make sure to watch the patch notes live stream hosted by Team META on the Core Live Twitch channel at 9 AM PST.

Platform

  • New: Scenes
  • New: Selecting UI elements in the viewport will now allow you to "nudge" them along the snapping grid with the arrow keys. If snapping is turned off, the nudge applies by 1 pixel. If shift is held, you can nudge by the snap distance without actually snapping to the grid.
    • Known Issue: Selecting elements in the hierarchy will cause the arrow keys to navigate the hierarchy instead of nudging UI elements. Workaround is to select UI items in the viewport.
  • New: Friend chat window now has a minimize button which works similar to party chat minimize.
  • New: You can now double-click on friends to open the chat window.
  • New: The context menu for Core Content template objects has a new option "Create New Template". Unlike dragging into the scene, where it tries to match to existing templates, the original is always created as a new asset.
  • New: Updated the game details page to show if a game grants Reward Points.
  • New: We've added two new variants to the default drop operation (END key):
    • END+SHIFT will drop just the selected objects and not the whole hierarchies.
    • END+SHIFT+CTRL will drop all the objects in a hierarchy to let them land where they fall. The general effect is to compress a hierarchy. The parent/child relationship is maintained.
  • New: Attempting to use invalid animation stances on players will now warn the user.
  • New: We added a player volume multiplier to the player settings object. This affects footsteps, gear movement sounds with some skins, mount sounds, etc.
    • If you want no player sounds in your game, you can put this at 0.
  • New: Custom Properties have better highlighting when dragging and dropping items from the editor.
  • New: We added a minimum allowable slope field to the Object Generator tool.
    • This allows for projection of objects above the hierarchy object as well as below.
  • Changed: Updated the design for game tiles in the 2D browser. This design will better accommodate upcoming features and adjustments
  • Changed: Newly created parties will now default to public unless you are starting a new party with a friend, then those will default to private.
  • Changed: The Play with Party option now defaults to on for new parties.
  • Fixed: Party invites will now display exactly who sent the invite instead of just showing the party leader's name.
  • Fixed: An error in the material for 9slice grid glow, preventing it from changing the base color on the none-glowing area.
  • Fixed: You can no longer drag items from the asset catalog and apply them to items in the editor window that are locked in the hierarchy.
  • Fixed: Optimized Normal Map Tiling and reduced shader instructions on the vast majority of materials. This should lead to a small performance increase for everyone.
  • Fixed: Virtual folders that have been deleted will no longer be re-added if you import from Core Content again.
  • Fixed: Resolved a rare issue where the option to disable the microphone in game or party channels was not being respected.
  • Fixed: Re-parenting a UI object from a Panel or Scroll Panel will no longer reposition the object relative to the canvas space.
  • Fixed: Fixed a bug that could sometimes prevent the Reward Point Games tab from updating.
  • Fixed: An issue in the editor where all voice chat game settings options were visible, even if voice chat was disabled for the game.
  • Fixed: Dragging in a template that was exported from a folder will now create that folder.
  • Fixed: A bug where attempting to programmatically set the player mount would fail when mounting was disabled by Game Settings.
  • Fixed: Duplicate Virtual Folder assets will now be merged together.
  • Fixed: A problem that could cause creators to be listed in the Reward Point Games section of the Rewards Dialog without any games.
  • Fixed: After importing community content, the focus will now shift to the Core Content tab.
  • Fixed: The id for Virtual Folder assets should not change between saves.
  • Fixed: Joining a game as a party not working when joining a game from clicking on a weblink.
  • Fixed: A bug where modifying vehicle tire friction would affect all vehicles of the same class (4W or Treaded). This bug affected all vehicles in games, not just those using the script interface.

API

Raycast

  • New: We expanded World.Raycast and added:
    • World.RaycastAll
    • World.Spherecast
    • World.SpherecastAll
    • World.Boxcast
    • World.BoxcastAll

"All" in these method names indicate that it returns all of the hits along the ray, in contrast with the not-"All" version, which returns the first hit.

Each of these takes a table of optional params:

  • ignoreTeams: team index / list of team indices (as before).
  • ignorePlayers: player / list of players (as before).
  • checkObjects: object / list of objects to restrict collisions to.
  • ignoreObjects: object / list of objects to ignore.
  • shouldDebugRender: (bool, false) if true, will draw a debug display of the cast.
  • debugRenderDuration: (float, 1.0) the number of seconds the debug render display will persist before being erased.
  • debugRenderColor: (Color) if specified, the color to use for debug display, else use internal color logic.
  • debugRenderThickness: (float, 1.0) the width (in pixels) of the debug display lines.

Scenes

For Scenes we added several more APIs to the Player and World namespaces:

  • New: Added Game.TransferAllPlayersToScene(string sceneName) (server only) -- Similar to Player:TransferToScene(), transfers all players to the scene specified by the passed in scene name. Does not work in preview mode or in games played locally. The following optional parameters are supported:
    • spawnKey (string): Spawns the players at a spawn point with a matching key. If an invalid key is provided, the players will spawn at the origin, (0, 0, 0).
  • New: Added Game.GetCurrentSceneName() -- Returns the name of the current scene.
  • New: Added Player:TransferToScene(string sceneName, [table parameters]) -- Does not work in preview mode or in games played locally. Transfers player to the scene specified by the passed-in scene name. The specified scene must be a scene within the same game. This function will raise an error if called from a client script on a player other than the local player. The following optional parameters are supported:
    • spawnKey (string): Spawns the player at a spawn point with a matching key. If an invalid key is provided, the player will spawn at the origin, (0, 0, 0).
  • New: Added sceneId as a property to PlayerTransferData.

And More

  • Breaking Change: The animationEvent callback (both players and animated meshes) will now include the animation name as a third argument.
    • Events generated from the default stance on the player will return animation_stance as the animation name.

Core Content

  • New: Added Scene Portal component. This component will let players portal to different scenes between games.

  • New: Added thumbnail for Door and Teleporter components.

  • Changes and Fixes to Interaction System Package in Game Content:

    • APIUILibrary.IsCursorOver() should include an optional includeHidden parameter that will ignore hidden objects.
    • APIUILibrary.IsCursorOver() should return false for objects scrolled out of the visible area in a UIScrollPanel if includeHidden = true.
    • APIUILibrary should support non-UIControl objects in the hierarchy like Groups.
    • Multiple Drop Target Ids are now supported in the DraggableComponentClient DropTargetId custom property.
    • Added a dropTargetId parameter to the Dropped() callbacks.
      • This impacted most of the module and component scripts. If anybody has custom components using the Dropped() callback, these will break since parameter order has changed.
      • The callback signature changed from Dropped(position, normal, ...) to Dropped(position, normal, dropTargetId, ...).
  • New: Added four fonts:

    • Londrina Solid Black
    • Londrina Solid Light
    • Orbitron Bold
    • Oswald Semi Bold
5 Likes

If I'm reading this correctly, we can create an object for transferring between scenes that can determine the coordinates in which the player is spawned in the new scene?

If you are referring to this line:

  • spawnKey (string): Spawns the player at a spawn point with a matching key. If an invalid key is provided, the player will spawn at the origin, (0, 0, 0).

yea, use the spawn point object and add matching keys