构建一个多用户研究
你如何真正连接两个参与者,让一个人的行动传达给另一个人的屏幕?
本指南涵盖逐步的机械操作:启用多用户模式、分配角色、连接参与者并保持同步。关于何时使用多用户设计、最佳实践以及现有示例研究,请参见多用户实验设计。
以下四个步骤对于每个多用户研究都是相同的,无论它实际测试的是什么。一旦你让它们工作,“附加示例”部分将展示在三种不同设计中重复使用的相同四个步骤。
先决知识
建议具备基本的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,然后分配变量将其发送给所有参与者,已启用阻止。