ef01d01ba5839bd09f288f8f9aee10e63e23702e
VR Charades Research Project
Structure
app.apk- VR Charades applicationexperiment-scripts/- Control scripts and web interfacedata-analysis/- Analysis notebook and face/hand tracking datavideos/- Recorded experiment footagevrcharades-unity/- Unity source codeVR_Charades_Paper.pdf- Research paperEinverstaendniserklaerungen.pdf- Consent forms
Installing the VR Application
Sideloading via SideQuest
Before running experiments, you need to install app.apk on your Quest Pro headsets using SideQuest:
Prerequisites
-
Enable Developer Mode on your Quest Pro:
- Create a Meta Developer account at https://developer.oculus.com/
- Install the Meta Quest mobile app on your phone
- Add your Quest Pro to your account
- Go to Settings → Developer Mode and enable it
-
Download and Install SideQuest:
- Download SideQuest from https://sidequestvr.com/
- Install SideQuest on your computer (Windows/Mac/Linux)
Sideloading Steps
- Connect Quest Pro to computer via USB-C cable
- Put on the headset and allow USB debugging when prompted
- Open SideQuest on your computer
- Verify connection - SideQuest should show your Quest Pro as connected (green dot)
- Install the APK:
- Click the "Install APK from folder" button in SideQuest
- Navigate to and select
app.apk - Wait for installation to complete
- Launch the app:
- In VR: Go to App Library → Unknown Sources → VR Charades
- Or use SideQuest's "Currently Installed Apps" section to launch it
Repeat for All Headsets
- Install the APK on all Quest Pro headsets that will participate in the experiment
- Ensure all headsets are connected to the same Wi-Fi network
Running Experiments
Prerequisites
- Create and activate a virtual environment:
# Windows
cd experiment-scripts
python -m venv venv
venv\Scripts\activate
# Linux/Mac
cd experiment-scripts
python3 -m venv venv
source venv/bin/activate
- Install dependencies:
pip install -r requirements.txt
Experiment Scripts Overview
- app.py: Web interface for controlling the experiment and word list
- server.py: UDP relay server for communication between VR clients
- control.py: Command-line tool for setting VR client modes and server IP
- index.html: Web UI served by app.py
- word-list.txt: Default list of charade words
Setup Instructions
1. Network Setup
- Connect all VR headsets to the same network as the server
- Note the IP addresses of the VR headsets (you'll need these for configuration)
- Important: Update
experiment-scripts/server.pylines 19-20 with your actual VR headset IPs# Replace these example IPs with your actual headset IPs DEVICE1_ADDR = ("YOUR_PLAYER1_IP", 5001) # e.g., ("192.168.1.100", 5001) DEVICE2_ADDR = ("YOUR_PLAYER2_IP", 5001) # e.g., ("192.168.1.101", 5001)
2. Start the Relay Server
cd experiment-scripts
python server.py
3. Start the Web Interface
cd experiment-scripts
python -m fastapi dev app.py
Then navigate to http://localhost:8000
4. Configure VR Clients
Tell clients which server to connect to:
# Windows PowerShell (replace with your actual VR headset IPs)
cd experiment-scripts
$env:TARGET_IP="YOUR_PLAYER1_IP,YOUR_PLAYER2_IP" ; python control.py "IP:127.0.0.1"
# Linux/Mac (replace with your actual VR headset IPs)
cd experiment-scripts
TARGET_IP="YOUR_PLAYER1_IP,YOUR_PLAYER2_IP" python3 control.py "IP:127.0.0.1"
5. Set Experiment Condition
Choose one of these modes:
# Dynamic Face only
$env:TARGET_IP="YOUR_PLAYER1_IP,YOUR_PLAYER2_IP" ; python control.py "MODE:1;1;1;0"
# Dynamic Hands only
$env:TARGET_IP="YOUR_PLAYER1_IP,YOUR_PLAYER2_IP" ; python control.py "MODE:0;0;0;1"
# Dynamic Hands + Face
$env:TARGET_IP="YOUR_PLAYER1_IP,YOUR_PLAYER2_IP" ; python control.py "MODE:1;1;1;1"
# Static Face only
$env:TARGET_IP="YOUR_PLAYER1_IP,YOUR_PLAYER2_IP" ; python control.py "MODE:1;0;0;0"
# Static Hands only (requires controllers)
$env:TARGET_IP="YOUR_PLAYER1_IP,YOUR_PLAYER2_IP" ; python control.py "MODE:0;0;0;1"
# Static Hands + Face (requires controllers for hands)
$env:TARGET_IP="YOUR_PLAYER1_IP,YOUR_PLAYER2_IP" ; python control.py "MODE:1;0;0;1"
6. Prepare Word List
Shuffle the word list for randomization:
# Windows PowerShell
cd experiment-scripts
Get-Content word-list.txt | Sort-Object {Get-Random} | Out-File word-list-shuffled.txt
# Linux/Mac
cd experiment-scripts
shuf word-list.txt > word-list-shuffled.txt
Web Interface Usage
Once you have the web interface running at http://localhost:8000:
Setting Up a Charades Session
-
Configure Player IPs
- Enter the IP addresses of Player 1 and Player 2 VR headsets
- These should match the IPs you used in the
control.pycommands
-
Prepare Word List
- Copy your shuffled word list from
word-list-shuffled.txt - Paste it into the large text area on the right side
- Click the "Modify" button to generate interactive word items
- Copy your shuffled word list from
-
Set Game Parameters
- Current Player For Acting: Select which player will be acting out the words
- Time (s): Set the time limit for each word (e.g., 30 seconds)
- Last Word Status: Set to "None" for the first word
Running the Experiment
Manual Mode (Individual Words)
- Enter a word in the "Word" field
- Select the acting player (Player 1 or Player 2)
- Set the time limit
- Click "Send" to transmit the word to the VR headsets
Automatic Mode (Word List)
- After clicking "Modify" with your word list, the interface shows all words with timers
- The system automatically starts with the first word and counts down
- During the session:
- Mark words correct: Hover over a word and check the checkbox if guessed correctly
- Visual indicators: ▶ = Current word, ✅ = Correct, ❌ = Time expired
- Stop the session: Click "Stop" to end early
Exporting Results
- After completing the word list, click "Save as CSV"
- This downloads a CSV file with word name, correctness, and time remaining
Mode Details
Mode format: <show_head>;<show_facial_expression>;<show_eye_rotation>;<show_hands>
- Dynamic modes: Real-time face/hand tracking
- Static modes: Participants use controllers instead of natural movement
Unity Project Details
Unity Version
- Unity Editor: 6000.0.49f1 (2024.1.19f1)
Key Dependencies
- Meta XR SDK Core: 76.0.1
- Meta XR SDK Interaction: 76.0.1
- Meta XR SDK Movement: 76.0.1 (local file dependency)
- Unity XR Interaction Toolkit: 3.1.1
- Unity XR Hands: 1.5.0
- Unity XR Management: 4.5.1
- Unity OpenXR: 1.14.1
- Universal Render Pipeline: 17.0.4
- Unity Input System: 1.14.0
- Unity Timeline: 1.8.7
Build Requirements
- Unity 6000.0.49f1 or compatible
- Meta XR SDK 76.0.1
- Android Build Support module
- OpenXR support enabled
- Quest Pro development setup
Description
VR Charades research platform for studying multimodal communication in virtual reality. Includes Unity VR application for Quest Pro with face/hand tracking, experiment control scripts, web interface for session management, and data analysis tools. Built with Meta XR SDK for investigating dynamic vs static interaction modes in collaborative VR environments.
Languages
C#
47.4%
Jupyter Notebook
15.4%
ShaderLab
14.9%
Mathematica
4.6%
GLSL
4.1%
Other
13.6%