构建多用户研究
你如何实际连接两个参与者,以便一个人的动作能够到达另一个人的屏幕?
本指南涵盖逐步点击的机制:启用多用户模式、分配角色、连接参与者以及保持它们同步。有关何时使用多用户设计、最佳实践和现有示例研究,请参见多用户实验设计。
下面的四个步骤对于每个多用户研究都是相同的,无论它实际测试什么。一旦您使它们正常工作,“附加示例”部分展示了这同样的四个步骤在三种不同设计中的重用。
先决知识
建议具备Labvanced的基础知识,例如事件如何工作以及变量的使用,以便跟上下面所用的术语。
构建基础架构
启用多参与者模式
Labvanced研究默认是为一个参与者构建的。只有在研究告知将同时运行多人时,Role_Id、Distribute Variable、同步等多用户工具才会存在。
在右侧的设置中打开,然后在特殊功能下点击多用户研究并点击Transform。这将显示两个字段:Number of Participants(最少2)和Maximum Parallel Sessions。有关此操作解锁的设置完整列表,请参见多用户研究。
此点击无法撤消(确认对话框本身标记为Transform Permanently)。首先决定参与者数量,并在此之前复制研究,如果您也想要单用户版本。

使用Role_Id分配角色
启用多参与者模式后,每个参与者仍在运行实验的相同、未区分的副本;尚未有任何东西将它们区分开来。Role_Id为每个参与者提供了一个身份,您可以对其操作,而不收集任何个人信息,这样它们的实验可以开始执行不同的操作。
添加一个事件,使用Trial and Frame Trigger → On Frame Start,然后一个Control Actions → Requirement Actions (If... Then... Else If)动作:
- 添加要求: 左侧 →
Variable→ 选择Role_Id;比较 →equal;右侧 →Constant Value→Number→1 - 然后: 添加适用于角色1的任何操作,例如
Set Object Property以显示目标图像 - 添加其他情况: 添加适用于其他角色的操作

通过Distribute Variable连接参与者
不同的Role_Id可以在每个参与者面前放置不同的内容,但它仍然无法在它们之间移动信息;每个参与者的实验仍然是隔离的。Distribute Variable是唯一将一个参与者实验中的值推送到另一个的动作,这实际上使研究感觉像是共享而不是并排进行。
在适合您设计的任何触发器上,例如Button Click Trigger或Enter on Input Trigger,添加Variable Actions → Distribute Variable Action:
- 分配值给: 所有参与者或选定参与者
- 选择目标变量和价值: 接收参与者屏幕上的变量,以及它应该设置为的内容
- 阻塞: 如果超过一个参与者可能在同一时间写入相同的目标变量,请开启此选项

priceArray,启用阻塞和设置防抖速率限制。 保持参与者同步
参与者在研究中的移动速度并不相同。如果没有同步点,一个参与者可以在他们等待的值尚未分配之前达到后续画面,此时看到的只是空白或未完成的状态,而非另一个参与者的响应。
在参与者需要保持同步的画面上,例如在另一个参与者回复之前,没有一个人应提前进入,启用框架设置下的Sync Frame Start。所有人都在该画面上等待,直到所有参与者到达。

附加示例
上述四个步骤没有变化。变化的是分配的内容以及同步点的位置。三种变体的示例,从最简单的开始:
共享计数器
基础架构的最简单版本:两个参与者都看到相同的运行总数,任一方都可以添加。
- Role_Id: 在这里不需要,因为两个参与者的动作是相同的。
- 分配: 在
Button Click Trigger上,将值分配给所有参与者,目标变量SharedCount,值=SharedCount + 1。 - 同步: 不需要,因为没有试验边界来限制参与者。
这确认了多参与者模式和分配变量在添加基于角色的逻辑之前正常工作。
导演-匹配描述任务
一种参照性沟通任务:一个参与者(导演)描述目标物品,另一个(匹配者)从一组候选项中识别它。
- Role_Id:
Role_Id1显示目标图像和文本输入。Role_Id2显示候选图像而没有目标。 - 分配: 在导演按下回车键触发后,将文本值分配给匹配者屏幕上的
Description变量,启用Block,因为一次只能有一个描述在进行中。 - 同步: 在下一个试验框架上启用
Sync Frame Start,使导演在匹配者选择候选人之前无法进入下一步。
这与图像描述演示背后的结构相同。
轮转报价与响应
一种经济交换:一个参与者提出一个共享金额的分割,另一个则接受或拒绝。
- Role_Id:
Role_Id1显示建议分割的输入。Role_Id2在提案到达之前不显示任何内容。 - 分配: 在提案方的提交触发后,将建议的值分配给回应者屏幕上的
Offer变量。 - 同步: 在结果框架上启用
Sync Frame Start,使得在回应者回答之前,任何参与者都看不到结果。
这与最后通牒游戏背后的结构相同。
这个模式的一个真实例子,使用随机抽取的金额而不是手动输入的金额:Role_Id等于1触发Draw Random Number动作(在50到150之间的离散均匀抽取,保存到amountToSplit),紧接着Distribute Variable将amountToSplit发送给所有参与者,并启用Block。

amountToSplit,然后分配变量将其发送给所有参与者并启用阻塞。