Core Update 1.0.227 - Network Relevancy and Audio Fixes

Highlights for Version 1.0.227

Patch Notes Header

Welcome to our January 18th patch notes!

The focus for this release has been quality of life fixes and improvements. We are also releasing a Network Relevance feature which allows creators to make networked objects dormant (not sending messages, but not completely destroyed) if they are outside of the relevant range. See notes below for full information.

Make sure to watch the patch notes live stream hosted by Buckmonster on the Core Live Twitch channel at 9 AM PST on Wednesday the 19th.

Platform

  • New: Network Relevance settings are available on objects when Advanced Settings are enabled for that object
    • This is a tool for creators to better optimize their games.
    • When an object is out of relevance, it goes dormant - meaning it will no longer send network updates. When it becomes relevant again, it will resume sending network updates.
    • This option is Critical (meaning "always relevant" by default). It can also be set to High, Medium, or Low, which are distances configurable in the Game Settings object.
    • The Game Settings object now has options for controlling specifics for relevancy:
      • Network Relevance Focus: This can be set to Player or Camera and defaults to Player. This specifies what object network relevance calculations are made in relation to.
      • Performance - Network: Options for configuring the high/medium/low distances for relevancy.
    • Learn more about Network Relevancy in your Documentation Reference.
  • New: The Voice chat indicators now show 1-3 lines to indicate speaking volume.
  • New: We added more controls to the Terrain material. It now has tinting with brightness and desaturation, also additional roughness multiplier and invert metallic flags.
  • New: We added additional parameters to all materials in the catalog, to more easily override their color, under the "Advanced" category:
    • Desaturate and Brighten Albedo.
    • Invert Metallic.
    • Ambient Occlusion Color.
    • Edge Brightness and Edge Roughness were exposed for versatility.
  • New: Generated Lua code for script asset reference parameters are now surrounded with require() in the Properties UI.
  • New: Added a "Add Type Annotations" checkbox option to the Properties UI to specify whether to add ---@type type annotations intended for Core's VS Code extension.
  • New: Added an option to toggle whether or not game audio continues to play when Core loses focus. By default, game audio will not play when Core loses focus.
    • This is particularly useful for events like the Game Awards, so users can now watch and hear when Core is backgrounded
  • New: After considering user feedback about our recently added Event Queue, we have added a new Gameplay Settings checkbox labeled "Networked Events / Enable Queuing" that allows you to use a 6400 byte backlog for network events that cannot be immediately sent, subject to the 1280 bytes/second bandwidth limit. Turning off queuing means that events that cannot immediately be sent trigger errors.
  • New: We changed the behavior of nested network contexts. Now, if you have a client context or server context under a static context, the children of the nested context will obey the nested context (client only objects on client machines, server only objects on server machines). This means the ClientContextFolder is destroyed on server, and ServerContext is destroyed on the client.
  • New: When changing the networked state of a template's root object, users will now be prompted to save their game to prevent the possibility of a game being left in a bad state.
  • Changed: You need to select "Advanced Settings" to see the "Is Advanced" setting.
  • Fixed: A collision bug on some ring primitives.
  • Fixed: A crash when deleting an instance of a template whose definition contains an object reference pointing at the deleted instance.
  • Fixed: An issue with the "Dialog" audio setting slider did not affect avatar vocal exertion sounds.
  • Fixed: An issue where updating a networked template to be non-networked could leave other scenes in a broken state.
  • Fixed: A crash when a deserialized Lua table contains a nil key.
  • Fixed: A bug where audio objects marked "transient" would behave differently in published games and preview mode (and clarified that "transient" is not supported except on sounds within a client-context)
  • Fixed: Audio objects Falloff and Radius properties now revert like other properties.
  • Fixed: An issue where speaking indicators would persist if a player left a game while speaking.
  • Fixed: Resolved an issue where painting and sculpting on rotated terrain did not work.
  • Fixed: A bug that could cause MUID conflicts when reverting a deinstanced template.
  • Fixed: A bug where an event could continue firing indefinitely.
  • Fixed: A bug where event names would not count towards the rate limit.
  • Fixed: An issue where preview clients in the editor could overwrite user settings, which could cause video settings to be set to low.
  • Fixed: An issue where users were not able to see that they previously upvoted/downvoted a game comment.
  • Fixed: An infinite loop when calling Destroy() on a parent object in response to a child's destroyEvent.
  • Fixed: A bug where the terrain paint/sculpt indicator was not cleared when entering preview mode from the Core Creator.

API

  • New: Add a GetAbs() function to all Vector types (2, 3, 4) that returns a copy of the vector with each component the absolute value of the original component.

    Property Name Return Type Description Tags
    GetAbs() Vector2/3/4 Returns a new Vector2/3/4 with each component the absolute value of the component from this Vector2/3/4. None
  • New: Added Input.GetActions():

    Property Name Return Type Description Tags
    Input.GetActions() Array<string> Returns a list of the names of each action from currently active binding sets. Actions are included in this list regardless of whether the action is currently held or not. Client-Only
  • Changed: UI.GetCursorHitResult and UI.GetCursorPlaneIntersection are deprecated in favor of UI.GetHitResult(Vector2 screenPos) and UI.GetPlaneInterSection(Vector2 screenPos, Vector3 pointOnPlane, [Vector3 planeNormal]).
    The behavior of the original functions can be reproduced with UI.GetHitResult(UI.GetCursorPosition())

    Property Name Return Type Description Tags
    UI.GetHitResult(Vector2 screenPosition) HitResult Return hit result from local client's view from the given screen position cast in the camera direction. Client-Only
  • New: Added player.collidedEvent and a physicsObject.collidedEvent which trigger when the moving object hits another object. You might want to register both events. Note that objects will collide with the floor, and will report floor collisions. Collisions may take a few frames to fully resolve, and may report multiple events during the collision.

    Property Name Return Type Description Tags
    collidedEvent Event<PhysicsObject object , HitResult hitResult> Fired when the object collides with another object. The HitResult parameter describes the collision that occurred. None
    collidedEvent Event<Player player, HitResult hitResult> Fired when a player collides with another object. The HitResult parameter describes the collision that occurred. None
  • Changed: Removed the deprecated MovementMode.SLIDING enum value.

  • Changed: Removed the deprecated and undocumented Player.isSliding and Player.flipOnMultiJump properties.

  • Fixed a bug with World.Boxcast(), World.BoxcastAll() and World.FindObjectsOverlappingBox() when the size vector passed in had at least one negative component.

Core Content

  • Fixed: An issue in "Hip Hop Music Score Set 01" where music track 05 and 06 played the same music track. The correct tracks will now play.

  • Fixed: An issue where Nature Ambience Jungle Bugs 01 SFX and Nature Ambience Jungle Mountain Bugs 01 SFX played the same exact audio source file. The "Mountain Bugs" variant is slightly altered and has a bit more insect/bug activity.

  • Fixed: The looping points to be much more smooth and seamless for the following audio assets:

    • Sci-fi Vintage Retro Energy Field Loop 01 SFX
    • Sci-fi Vintage Retro Energy Field Loop 08 SFX
  • Fixed: Removed excessive tail-end silence from audio source files for the following assets:

    • Sci-fi Mech Activate Powerup Plasma Energy 01 SFX
    • Sci-fi Mech Activate Powerup Startup 01 SFX
    • Sci-fi Vintage Retro Activate Large Short 01 SFX
    • Sci-fi Vintage Retro Energy Flutter Rise 01 SFX
    • Sci-fi Vintage Retro Energy Flutter Rise 01b SFX
  • The following music tracks and their variations have been updated to improve the overall tonal balance in the mixes. Some instruments and synths were re-recorded to help improve mix balance and clarity as well. Any other adjustments specific to these tracks will be otherwise noted:
    Based on the usage of these music tracks and how they blend with other sonic and visual elements in Core, there were some aspects of the overall tonal mix balance that had some room for improvement. These changes do not affect much of the character, mood or overall tone these tracks provide, but improves them in a way that makes for a much more pleasant and engaging listening experience regardless of their implementation in any game or when heard on any audio hardware.

    Tracks in the "Electronic Music Score Set 01" all had improvements to the drums by adding slight tape saturation and better 'glue' compression to ensure the drums compliment any forward-sounding tonal elements as well as being punchy at the same time in a more controlled manner.

    • Dark HypeStep! Rock Version
      • Main synths lacked some clarity and stereo separation. Textures of the synths were adjusted to add more high end, low ends were more controlled overall.
    • Skeleton Rave (both versions)
      • Filter automation added to main tonal synths
      • Shortened this track by removing the last 4 bars that were essentially just the intro that repeated twice.
    • Upbeat Dance Club
      • Added more aggression to the 'growl' synths and added a bit more synth elements during verse sections to make it more interesting.
    • Aggressive Dance Pumper
      • Ensured this new version did not distort as much in the low end
      • Created a new version of the main synth melody to layer on top to create a more 'crisp' sound overall to the main melody.
      • Added a few 'glitch elements' to some sections to make the track a bit more interesting during repeated sections
    • Digital Club Mix
      • Ensured this new version did not distort as much in the low end
      • Created a new version of the main synth melody to layer on top to create a more 'crisp' sound overall to the main melody.
    • Subtle House Club
      • Used a different but similar bass instrument that better complimented the bass drum sound
      • Adjusted the 'delay echo guitar' melody element to blend in a bit better with the bass
  • Changed: Tracks in the "Hip Hop Music Score Set 01" all had improvements to the overall mix by adding tape/vinyl simulation and had some organic elements (piano, bass guitar) improved either by changing the instrument or re-recording them for more accurate timing and intonation. Any vinyl 'intonation warping' still remains for the LoFi tracks, and is still only applied to the master track.

    • Violet Serenity LoFi
    • Reflective LoFi
    • Snappy Sub Bass
    • Spinning Trap
      • Main melody added some glitch effects to make it more interesting during the refrain. A subtle layer of the melody with a reverse effect was added to fill any air that previously felt like it was a bit too long and empty.
  • "Continue Play While Silent" smart property option in music assets removed. The default behavior going forward would be for music assets to continue playback track position even when silent. This is a much more polished and ideal behavior for music assets and also helped fix various issues, including an issue where music tracks would restart from the beginning when setting the "Music" volume slider in audio settings from 0 to a value greater than 0 every time.
    If you wish for music tracks to re-trigger or restart from the beginning when entering a trigger zone or radius, it can be easily scripted by using :Play() as you would do with any other audio object.

  • Layered Music Construction Kit asset fixes:

    • Fixed an issue where stems play out of sync due to some stems restarting when silent.
    • Fixed an issue where stems did not repeat after the first playthrough of the loop.
    • Fixed an issue where some stems were incorrectly set to stream from disk that caused sync issues.
5 Likes

UI.GetHitResult(UI.GetScreenSize()/2) isn't giving me the same results as with the former functions. For my particular game, players hover their mouse over 3D objects in the scene to highlight and select them. I am using a static camera with no movement which is slightly tilted down.

In case anyone else has a similar situation, what fixes it for me is using the actual cursor position instead of the screen size. So UI.GetHitResult(UI.GetCursorPosition()) is what worked for me. Just FYI in case anyone else gets stuck.

3 Likes

Thanks, I just edited that, the recommended way is UI.GetHitResult(UI.GetCursorPosition())

1 Like