Happy 500!
Client Difference Log
API Changes
Added Class BreakpointManager : Instance [NotCreatable] [Service] [NotReplicated]
Added Function Instance BreakpointManager:AddBreakpoint(Instance script, int line, Instance condition) {RobloxScriptSecurity}
Added Function MetaBreakpoint BreakpointManager:GetBreakpointById(int metaBreakpointId) {RobloxScriptSecurity}
Added Function void BreakpointManager:RemoveBreakpointById(int metaBreakpointId) {RobloxScriptSecurity}
Added Event BreakpointManager.MetaBreakpointAdded(MetaBreakpoint breakpoint) {RobloxScriptSecurity}
Added Event BreakpointManager.MetaBreakpointChanged(MetaBreakpoint breakpoint) {RobloxScriptSecurity}
Added Event BreakpointManager.MetaBreakpointRemoved(MetaBreakpoint breakpoint) {RobloxScriptSecurity}
Added Class DebuggerUIService : Instance [NotCreatable] [Service] [NotReplicated]
Added Class MetaBreakpoint : Instance [NotCreatable] [NotReplicated]
Added Property string MetaBreakpoint.Condition {RobloxScriptSecurity} [Hidden] [ReadOnly]
Added Property int MetaBreakpoint.Id {RobloxScriptSecurity} [Hidden] [ReadOnly]
Added Property int MetaBreakpoint.Line {RobloxScriptSecurity} [Hidden] [ReadOnly]
Added Property string MetaBreakpoint.Script {RobloxScriptSecurity} [Hidden] [ReadOnly]
Added Property bool MetaBreakpoint.Enabled {RobloxScriptSecurity} [Hidden] [ReadOnly]
Added Property bool MetaBreakpoint.Valid {RobloxScriptSecurity} [Hidden] [ReadOnly]
Added Function int MetaBreakpoint:Remove(Function status) {RobloxScriptSecurity}
Added Function int MetaBreakpoint:SetCondition(Instance condition, Function status) {RobloxScriptSecurity}
Added Function int MetaBreakpoint:SetEnabled(bool enabled, Function status) {RobloxScriptSecurity}
Added Function int MetaBreakpoint:SetLine(int line, Function status) {RobloxScriptSecurity}
Added Class MetaBreakpointContext : Instance [NotCreatable] [NotReplicated]
Added Class ScriptChangeService : Instance [NotCreatable] [Service] [NotReplicated]
Added Class StudioAssetService : Instance [NotCreatable] [Service] [NotReplicated]
Added Function string StudioAssetService:SerializeInstances(Objects instances) {RobloxScriptSecurity} [Yields]
Added Class StudioScriptDebugEventListener : Instance [NotCreatable] [Service] [NotReplicated]
Added Class ToolboxService : Instance [NotCreatable] [Service] [NotReplicated]
Added Callback Objects ToolboxService.ProcessAssetInsertionDrag(string assetId, int assetTypeId, Objects instances) {RobloxScriptSecurity} [NoYield]
Added Class Plane : Constraint
Added Property bool ImporterMeshSettings.Anchored
Added Property Enum.RigType ImporterRootSettings.RigType
Added Property bool TextSource.CanSend
Added Property int64 TextSource.UserId [ReadOnly]
Added Function bool AssetImportService:IsAvatar() {RobloxScriptSecurity}
Added Event Instance.Destroying()
Added Enum RigType
Added EnumItem RigType.R6 : 0
Added EnumItem RigType.R15 : 1
Added EnumItem RigType.Rthro : 2
Added EnumItem RigType.RthroNarrow : 3
Added EnumItem RigType.S15 : 4
Added EnumItem RigType.Custom : 5
Added EnumItem RigType.None : 6
Added Enum TextChatMessageStatus
Added EnumItem TextChatMessageStatus.Success : 1
Added EnumItem TextChatMessageStatus.TextFilterFailed : 2
Added EnumItem TextChatMessageStatus.Floodchecked : 3
Added EnumItem TextChatMessageStatus.InvalidPrivacySettings : 4
Added EnumItem TextChatMessageStatus.InvalidTextChannelPermissions : 5
Added Tag [NotCreatable] to Class TextSource
Changed the parameters of Event Explosion.Hit
from: (Instance part, float distance)
to: (BasePart part, float distance)
(Click here for a syntax highlighted version!)
We reached 500! With that aside, I can’t wait to integrate breakpoints into a plugin of some sorts! I wonder what the implications are for Rojo and external tooling. Looks exciting, keep up the great work!
Removed
Just so you know, your link (here) still points to your CloneTrooper1019 github url, so it has to go through a redirect to get to the MaxiumumADHD one.
That this symbolic number represents a hope that, one day, who knows, we will have an official tool.
I hope we don’t have to wait for another 500 versions for this…
Instance.Destroying.
Thats it, that’s the post.
Vector3. Generating a Vector2 is both less useful (because our 2D APIs take angles as an input to begin with rather than unit vectors) and easy enough that I didn’t think the API pollution was worth it:
local theta = random:NextNumber(0, math.pi * 2)
local vec = Vector2.new(math.cos(theta), math.sin(theta))
More info on this to come once all the pieces come together, but if you’ve been following the “destroy on server doesn’t destroy on client” issue then this comes as part of the solution to that.
I was messing around with on sitetest studio with an FFlag and noticed it wouldn’t fire if you deleted from the explorer. Is it intentional for this to only fire if you destroy it through Destroy?
Things you delete from the Explorer aren’t actually Destroy
ed… otherwise you wouldn’t be able to undo their deletion! On that note, if you’re making any kind of user plugin, you should make sure to remove things via .Parent = nil
instead of Destroy
to properly support Undo / Redo.
Never knew Touched and TouchedEnded events were trained in the skill of Plumbing! What does this actually mean?
Increased TouchEnded reliability.
Adding a constraint that will constraint attachment1 to the plane with origin at attachment0’s position with normal equal to attachment0’s primary axis.
I’m having trouble parsing what this actually means. Is this a new constraint? Can you give a use case for this if so?
Happy 500, congrats. This is a great milestone.
I’d like Parallel Luau to be updated to allow me to create parts in a desynchronized thread. Almost all code I write is designed to work in a multithreaded system. Example: Terrain generation.
Well, that explains a lot. Should we also set the Archivable
property to false
, or will Studio take care of cleaning up all nil
instances when saving / ending a session?
Still on topic, let me say that I’ve been waiting for the .Destroying
event for as long as I can remember. This will make handling instance-related memory leaks so much easier.
Now, let me take some (hopefully not against forum rules liberty) to talk about this update.
I’ve been using Roblox Studio for well over 12 years. I’ve witness the decoupling of animations from Humanoids, the evolution of the Roblox character, the introduction of the client-server barrier, the addition, removal and re-addition of user-uploadable meshes, one major redesign and two renames of studio.
I believe it’s fit to take this day to look at how far studio has come as a development tool, and how reliable it has been over the years. Despite my (sometimes incessant) complaints about studio updates messing with backwards compatibility, I find that my oldest of projects still work today with little or no change.
Today, I had the distinct pleasure of digging through and replaying one very old game I had stored (as an original .rbxml file, mind you!), only to find that all these years of studio updates had not reduced the magic it once was, but instead have added onto it. It has been a pleasure to be able to play my old games on a device that couldn’t even have been envisioned at the time the game was created without any issues, all thanks to the fact that not once have we been forced to move to a Roblox 2.0 or to abandon our original R6. Our engine has always grown with the community that builds on it.
So, I’d like to thank you all over at Roblox, for over a decade of continuous iteration that lead Roblox Studio to what it is today. We couldn’t have made magic without you.
Nothing about Studio is required there, the engine will, garbage collection will usually clean up instances just fine whether you Destroy them or not.
“Usually”… what’s the “usually”? That’s if you’ve connected to events on the objects being removed, and your event handlers have a (direct or indirect) reference back to the object itself. That will stop the object from being garbage collected because it’s a circular reference, but one that crosses over the C++ / Lua boundary so the garbage collector can’t understand it.
In that case, the Destroying will help, because one of the things that Destroy does is disconnect all of the connections. However, if you’re working with stuff that you need to support Undo / Redo, you’ll just have to manually Disconnect your event handlers properly when moving the object out of the hierarchy.
What is S15? Is it some kind of new R15?
I asked, and, seems to be related to the new skinned clothing & mesh stuff, and potentially the new facial controls. The S stands for skinned.
I also looked and found this somewhat old page explaining S15 imports on Roblox’s Avatar Evolution site:
If facial controls are part of this, I can’t wait for this absolutely disgusting, fear-inducing, going-to-find-and-attack-you-while-you-sleep creature to be an avatar I encounter in DoomSpire brickbattle:
For real, I honestly don’t know what it is about the facial controls stuff that get me so bad, and I’m being dead serious about this… Some of it genuinely induces a similar response in me that arachnophobia does, but like, worse. It’s uncanny valley, but on an entirely new level, and oh my god I know it’s going to be even worse when it moves on my screen.
Not all of it’s bad, in fact, I find the facial animations pretty cool overall… But some of those images I have seen I can never unsee
This is on our roadmap after v1
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.