Release Notes for 384

Notes for Release 384


Client Difference Log

API Changes

Added Class StudioData : Instance [NotCreatable] [Service] [NotReplicated]
	Added Property int64 StudioData.SrcPlaceId {RobloxSecurity} [Hidden] [NotReplicated]
	Added Property int64 StudioData.SrcUniverseId {RobloxSecurity} [Hidden] [NotReplicated]

Added Class EmotesPages : InventoryPages [NotCreatable] [NotReplicated]

Added Property bool Player.GameplayPaused [<💾> Save-only] [ReadOnly] [NotReplicated]
Added Property bool StarterPlayer.UserEmotesEnabled {✏️RobloxScriptSecurity}
Added Property Color3 ViewportFrame.Ambient
Added Property Color3 ViewportFrame.LightColor
Added Property Vector3 ViewportFrame.LightDirection
Added Property Enum<StreamingPauseMode> Workspace.StreamingPauseMode  [NotScriptable]

Added Function void GuiService:CloseInspectMenu()
Added Function bool GuiService:GetInspectMenuEnabled()
Added Function void GuiService:InspectPlayerFromHumanoidDescription(Instance humanoidDescription, string name)
Added Function void GuiService:InspectPlayerFromUserId(int64 userId)
Added Function void GuiService:SetInspectMenuEnabled(bool enabled)
Added Function bool Humanoid:PlayEmote(string emoteName) [Yields]
Added Function void HumanoidDescription:AddEmote(string name, int64 assetId)
Added Function Dictionary HumanoidDescription:GetEmotes()
Added Function Array HumanoidDescription:GetEquippedEmotes()
Added Function void HumanoidDescription:RemoveEmote(string name)
Added Function void HumanoidDescription:SetEmotes(Dictionary emotes)
Added Function void HumanoidDescription:SetEquippedEmotes(Array equippedEmotes)
Added Function void MarketplaceService:PromptBundlePurchase(Instance player, int64 bundleId) {RobloxScriptSecurity}
Added Function void MarketplaceService:SignalAssetTypePurchased(Instance player, Enum<AssetType> assetType) {RobloxScriptSecurity}

Added Event GuiService.CloseInspectMenuRequest() {RobloxScriptSecurity}
Added Event GuiService.InspectMenuEnabledChangedSignal(bool enabled) {RobloxScriptSecurity}
Added Event GuiService.InspectPlayerFromHumanoidDescriptionRequest(Instance humanoidDescription, string name) {RobloxScriptSecurity}
Added Event GuiService.InspectPlayerFromUserIdRequest(int64 userId) {RobloxScriptSecurity}
Added Event HumanoidDescription.EmotesChanged(Dictionary newEmotes)
Added Event HumanoidDescription.EquippedEmotesChanged(Array newEquippedEmotes)
Added Event MarketplaceService.PromptBundlePurchaseRequested(Instance player, int64 bundleId) {RobloxScriptSecurity}

Added Enum StreamingPauseMode
	Added EnumItem StreamingPauseMode.Default : 0
	Added EnumItem StreamingPauseMode.Disabled : 1
	Added EnumItem StreamingPauseMode.ClientPhysicsPause : 2

Added EnumItem AssetType.EmoteAnimation : 61
Added EnumItem AvatarContextMenuOption.InspectMenu : 3

Added Tag [CustomLuaState] to Function Instance:IsA

(Click here for a syntax highlighted version!)


What specifically was the optimization for IsA? I’m curious.


This API change seems to provide some clues.

Added Tag [CustomLuaState] to Function Instance:IsA

When a function has the [CustomLuaState] tag, it means that the function directly interfaces with Lua’s C API rather than going through Roblox’s normal reflection system. There’s probably more to it than just this though, and @zeuxcg might be able to elaborate further.


In our VM, strings are a bit more magical than they are in regular Lua - in Lua they are interned, so that many operations like table lookup never need to look at the string data; we have extended the interning to also work with our reflection data so that when doing __index/__newindex/etc. reflection doesn’t need to look at string data either. IsA is now also using this interned optimization so that it doesn’t need to do actual string comparisons.


So the emote wheel is enabled now?

How can we make use of this feature? It says it’s live, but…


There’s a property under the player called GameplayPaused, as well as some new properties pertaining to streaming under the Workspace.

I actually made a place to demonstrate how it works a few weeks ago:


Huh, I’m not able to find the property for it.


The enum is in the game, but workspace.StreamingPauseMode just…isn’t there. I’m able to find the Enum for it, however.

It’s not enabled yet.
It’s not enabled yet.

1 Like

So it’s technically not live yet? Alright. Any estimate for when it will be?


This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.