Release Notes for 455

Notes for Release 455

52 Likes

Client Difference Log

API Changes

Added Class AppUpdateService : Instance [NotCreatable] [Service] [NotReplicated]
	Added Function void AppUpdateService:CheckForUpdate(Function handler = nil) {RobloxScriptSecurity}
	Added Function bool AppUpdateService:PerformManagedUpdate() {RobloxScriptSecurity}

Added Class AssetDeliveryProxy : Instance [NotCreatable] [Service] [NotReplicated]
Added Class PoseBase : Instance [NotCreatable]

Added Class NumberPose : PoseBase
	Added Property double NumberPose.Value

Added Class Actor : Model

Added Property Vector3 BasePart.AssemblyAngularVelocity [<📁> LoadOnly] [NotReplicated]
Added Property Vector3 BasePart.AssemblyCenterOfMass  [ReadOnly] [NotReplicated]
Added Property Vector3 BasePart.AssemblyLinearVelocity [<📁> LoadOnly] [NotReplicated]
Added Property float BasePart.AssemblyMass  [ReadOnly] [NotReplicated]
Added Property Class<BasePart> BasePart.AssemblyRootPart  [ReadOnly] [NotReplicated]
Added Property string PlayerEmulatorService.EmulatedCountryCode
Added Property string PlayerEmulatorService.EmulatedGameLocale
Added Property bool PlayerEmulatorService.PlayerEmulationEnabled_deprecated {RobloxScriptSecurity} [<📁> LoadOnly] [NotReplicated]
Added Property string PlayerEmulatorService.SerializedEmulatedPolicyInfo
Added Property bool Studio.Scroll Past Last Line

Added Function void BasePart:ApplyAngularImpulse(Vector3 impulse)
Added Function void BasePart:ApplyImpulse(Vector3 impulse)
Added Function void BasePart:ApplyImpulseAtPosition(Vector3 impulse, Vector3 position)
Added Function Instance Instance:GetActor()

Added Enum AppUpdateStatus
	Added EnumItem AppUpdateStatus.Unknown : 0
	Added EnumItem AppUpdateStatus.NotSupported : 1
	Added EnumItem AppUpdateStatus.Failed : 2
	Added EnumItem AppUpdateStatus.NotAvailable : 3
	Added EnumItem AppUpdateStatus.Available : 4

Changed the security of Function MarketplaceService:PromptBundlePurchase 
	from: {RobloxScriptSecurity}
	  to: {None}

Changed the security of Event MarketplaceService.PromptBundlePurchaseFinished 
	from: {RobloxScriptSecurity}
	  to: {None}

Changed the security and serialization of Property PlayerEmulatorService.PlayerEmulationEnabled 
	from: {RobloxScriptSecurity} [<📁> LoadOnly]
	  to: {None} [<💾|📁> Saves|Loads]

Changed the superclass of Class Pose 
	from: "Instance"
	  to: "PoseBase"

Moved Property EasingDirection
	from: Class Pose
	  to: Class PoseBase

Moved Property EasingStyle
	from: Class Pose
	  to: Class PoseBase

Moved Property Weight
	from: Class Pose
	  to: Class PoseBase

Removed Tag [NotReplicated] from Class PlayerEmulatorService
	Removed Tag [NotReplicated] from Property PlayerEmulatorService.PlayerEmulationEnabled

(Click here for a syntax highlighted version!)

23 Likes

chrome_H6vMtyk8cp

Thank you for this, will help terrain developers and games using the Underwater with terrain water into their games, and better terrain updates and adjustments would improve my development and gameplay on the platform.

Nice that Xbox now has 2SV for users that play on an Xbox, Somehow it didn’t had support if I recall from past posts anywhere, couple of friends of mine use Xbox and have 2SV onto their account.

17 Likes

The developer hub doesn’t treat markdown tags nicely. :stuck_out_tongue:

For those who are curious, the new tags are <smallcaps> and <sc> sᴏ ʏᴏᴜ ᴄᴀɴ ᴍᴀᴋᴇ sᴛᴜғғ ʟɪᴋᴇ ᴛʜɪs, because that won’t get annoying at all.

19 Likes

Interesting 450s – 0.453 was rolled back in replacement for 0.452.2 and two whole version notes get posted within 8 minutes of each other… :thinking:

Might as well call 454 and 455 twins. :man_shrugging:

Anyways:

What does this actually do? I looked on the Hub, but the documentation is blank (I know they need to still add it, but I’m curious right now).

Also:

Having this enabled and disabled–I wasn’t able to note much of a difference. What features are included with this?

Nevermind, I found this in the twin post:

10 Likes

CFrame:Orthonormalize()

Could you explain and give examples?

6 Likes

Yes, yes yes!

As someone who frequently works with terrain, both the water material and loading times are aspects to be improved above: and improve upon you have!

Underwater lighting has always been “murky,” where you’re not able to see far in clear water. Does “matching lighting conditions above water” apply to that too?

Really glad to see important post processing features added like sunrays, though. That will drastically improve the realism. :sun_behind_small_cloud:

Loading times can always, always be improved. Love that it’s receiving more attention- perhaps one day loading times won’t be a complaint/barrier to using terrain.

Thanks! :sunrise_over_mountains:

10 Likes

Actors are Parallel Lua related. More details will come when that’s put into beta.

12 Likes

if you know russian dont hurt me i used google translate


русский текст в источниках пог?

also actors are for parallel lua, activating the flag does nothing right now so, stay tuned I guess.

3 Likes

CFrames describe an object’s rotation as three direction vectors specifying which way the local X, Y and Z axis are facing for that object (LookVector is related to one of them, but there are another two as well). This is a very convenient way to encode rotations, as you can “add” together CFrames using only multiplication and addition of those vectors rather than needing expensive trigonometric functions.

However, that nice math breaks down if the three direction vectors don’t stay at exactly 90 degrees to one and other and exactly one unit long. Orthonormalization fixes this (Ortho = 90 degrees to one and other, normalize = make a vector’s length equal to one unit), bringing the axis back into alignment and making them back into unit vectors.

Normally when you set part.CFrame = myCFrame, the C++ code in there automatically does orthonormalization of myCFrame for you. You can observe this if you do:

part.CFrame = X
print(part.CFrame == X) --> Won't be true if X had to be orthonormalized!

However, some other objects such as HandleAdornments which also use CFrame don’t do the same orthonormalization (because it’s an unnecessary extra cost). Under some circumstances this means you can end up in a scenario where the axis of the CFrames you’re working with drift out of alignment and give odd results. This can be fixed by calling Orthonormalize on the CFrame once and a while.

TL;DR: The usage is very obscure, you probably don’t need it. The main reason I added it to the API is that implementing orthonormalization yourself can be tricky, so I don’t want people trying to hack together their own implementations in the rare case they do need it.

18 Likes

Here’s a fun obscure fact: The Tool object provides automatic CFrame orthonormalization to its Vector3 Grip properties. I’ve used this specific hack at least once in one of my projects. Nice to see that it’s finally getting added directly!

6 Likes

Yes!! This is a dream come true for me! No more will I have to botch together some incredibly hacky physics code in my anticheats that barely works.


I am curious, what is the performance impact of accessing these values? I assume its constant time. Additionally, what is the performance impact of writing them?

11 Likes

Can anyone give an ETA for the new physics APIs such as ApplyImpulse? I so happen to have a use-case right now where this would be super useful!

5 Likes

You shouldn’t count it soon because even if it gets enabled, if there are issues with it, we’re close enough to the end of the year now that we likely wouldn’t be able to ship a fix until the new year.

Roblox values stability for its developers during the end of year holiday season, so while some stuff may still be released, you should generally expect fewer changes than usual during that period.

6 Likes