Proposal: a "role-defining" chip
The original motivation for this suggestion is that it is difficult to make inventions with circuits that require any specific game roles (an example is ^DiscGolfTemplate). It would be nice if we could save any game roles that an invention needs with the invention, spawn it in any room, and it just works with any other roles that might already be in that room.
The proposal is a "role-defining" chip that has no inputs. Each "role-defining" chip can be configured to specify all features of exactly one role. (No "inheritance" from other roles but cloning of chips covers some of the use cases of this inheritance feature.) The one output of a "role-defining" chip is a unique ID of that role, which is unpredictable but constant while a room instance exists (similar to object IDs).
The Role Mapper chip gets an additional optional input which expects a role ID. If this input is connected, the Role Mapper chips uses that role, otherwise it works as it does currently (for full backwards compatibility).
If multiple roles of "role-defining" chips are enabled, the most recently enabled role is the active one. If any role of a "role-defining" chip is enabled, it overrides any other user-specified roles.
And that's it! With this, if an invention requires a role, you can just add a "role-defining" chip and connect its output to the new input pin of all Role Mapper chips that use that role. Since the roles that are defined this way don't use any kind of inheritance, they play nicely with any other roles that are defined in the room where an invention is spawned.
Other advantages: 1) "role-defining" chips get rid of the inheritance concept of game roles and replace it by familiar cloning of chips. 2) The use of roles in Role Mapper chips is visually represented by connections between chips instead of being hidden away in the configuration of chips and the room setup. 3) Role Mapper chips could use dynamically changing roles (depending on the game mode etc.).
Open question: how to represent roles from "role-defining" chips in the current user interface in the watch menu? There are many options: from just a message that the active role is provided by a chip, to listing all enabled roles that are provided by chips with configured names of all roles and a read-only interface to inspect the roles.
EDIT: When I wrote the description I did not understand how role inheritance works currently. (I'm pretty certain that role inheritance was changed since I last checked it.) With the current way inheritance works, there should be some changes to this suggestion, for example, by allowing inheritance of settings and giving the most recently activated role precedence over previously activated roles.
marked this post as