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.
- 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):
- 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.