Stravant - DevComment: Sync 3d space comments between Edit, test, and live games

image

Introducing a new plugin for team collaboration: Add, edit, and remove comments on objects and locations in your game during editing, test plays or even testing in live servers, and have those comments reflected back into your edit sessions in real time! (Or not real time, if you don’t have an edit session open they’ll be reflected to the next editing session you open)

Link to plugin:

General Setup Instructions

  • The plugin includes a runtime which must be installed in the place for you to be able to add / edit comments at runtime. The first time you click the DevCmnt button in the Plugins tab in in a given place, you’ll be prompted to install this runtime. If you decline, you’ll only be able to place / view comments in Edit mode and not at runtime.

  • For team create usage, every player who wants to view comments in Edit mode must install the plugin. You don’t need to worry about micromanaging the plugin version, the plugin will let you know if some users in the session are using a newer incompatible version of the plugin and let you know that you should upgrade.

Add / edit / remove comments in any context

You can add comments in any context using the plugin. In edit sessions use the “DevCmnt” button in the GeomTools toolbar, and in running games use the “Add Comment” widget at the side of the screen.

  • Add comments in live games
  • Add comments in Team Test
  • Add comments in Play mode
  • Add comments in Team Create

Receive those comments in any context

You will see comments appear in real time in any context:

  • As another tester in the live game where they were added
  • In a local edit session
  • In a team create session alone
  • In a team create session with many other teammates

Controllable

  • The list of players who can add / view DevComments in the game is stored as attributes of “DevCommentAccessList” under ServerStorage. The plugin will automatically add any players who have been in an the edit session for the place to the access list, and you can explicitly give third party testers access by adding them to the list.

image

  • Comments are represented as StringValues with the tag “Comment” under objects in the workspace. You can freely copy/paste these comment StringValues and manually edit them and this will work as expected.

Robust

  • The system works with any number of players in a team create session having the plugin installed, the plugins different players have synchronize themselves to avoid any conflicts in handling plugins.
  • Comment replication is handled through a persistent journal in the place’s DataStores. If you don’t save the place after having comments replicated to it from a live game, those comments will be replicated again the next time you open the place, they won’t be lost.
  • Forwards compatibility built in. The plugin will let you know you have to update if someone else in the place has updated their DevComment plugin to a newer version which isn’t compatible.

The Deets

  • Github Repo, open to contributions
  • The plugin primarily operates by installing a runtime under ReplicatedStorage which drives the runtime behavior. When adding a comment in edit mode, plugin will prompt you asking if it can install this runtime (or update it if it’s out of date):

image

  • If you’d previously declined to install the runtime, but now want to, you can delete the “DevCommentDeclinedSetup” attribute under ReplicatedStorage. That’s how the plugin knows to not ask you again.
  • Whenever you add, edit, or delete a comment in a running game, an entry is added to the joural DataStore in the place.
  • There is a “_devCommentMostRecent” attribute under the Workspace, recording what the most recently processed journal entry is. In this way if you don’t save the replicated comments they will be processed again the next time you’re in an edit session.
  • In a team create session, only one player’s plugin processes the journal at a time. This is done by negotiating a lock kept under Terrain, the client which has the lock processes the journal to avoid conflicts / running into DataStore throttling by having too many clients watching the journal DataStore at once.
  • When adding a comment, if you click near a part’s center, the comment will be attached to that part, otherwise the comment will be attached to the world space location clicked. When a comment is attached to a part, the part is identified via name + local space positioning relative to the parent to disambiguate multiple child Parts with the same name.
84 Likes

Very cool little plugin you got very cool! But one thing is that its ui is kind of weird like over here:
image
the images arent correctly seperated and the theme also looks weird and its also quite stiff like no animation of any sort. And maybe make a notification of some sort that tells you if it is enabled? like a small little guide?

anyways these were just very small things.

7 Likes

The reason it’s fairly limited is that getting it to scale smoothly is really annoying, with any more complex UI stuff there it’s hard to avoid distracting popping as you get closer or farther away.

By theme do you mean how the icons look? Or what the colors of the main box are? The colors match the the Studio style guide colors right now.

6 Likes

Oh ok.

Kind of? like the icons do not match if your going for studio. And if you want to keep icons make the theme look like it.

5 Likes

This is incredibly useful for me as I often forget about small things I want to change, thanks!

5 Likes

Can you please make it possible to disable the “Setup DevComment for this game?” pop ups, theyre incredibly annoying in games that i dont want it to be setup

3 Likes

I’m thinking I’ll change it over to inserting the runtime the first time you click the button to add a comment in edit.

2 Likes

Thing is I don’t want the runtime, I only want the studio view. But it prompts me every time

1 Like

I really want to avoid the complexity of having to worry about whether you installed the runtime or not, I want you to just use it and have it work.

I’m also going to add a way to hide the runtime ingame if you don’t need it during a given session, in light of that is having the runtime a problem?

2 Likes

Updated with a couple fast follow-ups from feedback:

  • The install dialog is now only shown the first time you try to insert a comment now. If you decline, you won’t be prompted again and can just use the comments in edit mode. You can continue with placing a comment after installing or declining.

  • Changed the edit / delete icons slightly to be more consistent.

5 Likes

This is fantastic, just what my team needed.

I do have one suggestion though - could we get the test-mode menu to hide by hitting tab, like the leaderboard, so that we can still take screenshots without deleting the menu?

3 Likes

Doing it with the convention of on tab is a good idea. I was trying to figure out a good shortcut that people would remember to re-show it.

2 Likes

Another small update:

  • You can now toggle comment visibility ingame. Press tab on desktop or press the explicit hide button on touch devices.

  • The add comment widget ingame has been made more compact.

  • Added an update log shown when you’re asked to update the runtime.

3 Likes

When I add 1 comment, it seems to add 2 or 3 underneath it.

Edit: This only seemed to happen on first install while in studio. After restart it works great.

It would be really nice if you could move them once you’ve placed a comment down.
And a way to toggle visibility while inside studio.

For what kind of workflows? I was thinking that people would use these comments for stuff short enough that retyping the comment would be simpler than wasting space on an affordance to move them.

If building around a note and it’s in the way of my view it can be quickly moved to the side without the inconvenience of re-typing it.

Maybe I want to take a screenshot of a piece of work to send to team members and there’s a note in the way.

It seems like a necessary feature for notes to be integrated into studio without any friction or inconvenience.

Would the ability to temporarily hide the comments (which is something I’m going to add) handle basically all those use cases reasonably well?