mirror of
https://github.com/R0m1k3/xtremflow.git
synced 2026-10-24 07:28:05 +02:00
feat: security overhaul (proxy ssrf fix, streaming sanitization, docker optimization)
This commit is contained in:
1 parent
6d87ada2b8
commit
8df9a37baa
810 files changed
+131090
-151
No files matched your search
@@ -0,0 +1,93 @@
|
||||
# Playtest Planning - Validation Checklist
|
||||
|
||||
---
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- [ ] Playable build available
|
||||
- [ ] Build is stable (no crash blockers)
|
||||
- [ ] Test objectives defined
|
||||
- [ ] Participant criteria established
|
||||
|
||||
---
|
||||
|
||||
## Planning
|
||||
|
||||
- [ ] Playtest type selected (internal/external/focused)
|
||||
- [ ] Session duration appropriate for objectives
|
||||
- [ ] Participant count sufficient (5+ for patterns)
|
||||
- [ ] Team roles assigned
|
||||
|
||||
---
|
||||
|
||||
## Session Structure
|
||||
|
||||
### Pre-Session
|
||||
|
||||
- [ ] Welcome script prepared
|
||||
- [ ] Consent form ready (if recording)
|
||||
- [ ] Setup instructions documented
|
||||
- [ ] Accessibility accommodations considered
|
||||
|
||||
### Gameplay Session
|
||||
|
||||
- [ ] Focus areas identified
|
||||
- [ ] Observation guide created
|
||||
- [ ] Intervention rules defined
|
||||
- [ ] Note-taking template ready
|
||||
|
||||
### Post-Session
|
||||
|
||||
- [ ] Interview questions prepared
|
||||
- [ ] Questions are open-ended
|
||||
- [ ] Time allocated for open feedback
|
||||
|
||||
---
|
||||
|
||||
## Observation Guide
|
||||
|
||||
- [ ] Key signals identified (confusion, frustration, engagement)
|
||||
- [ ] Recording format defined
|
||||
- [ ] Quantitative metrics listed
|
||||
- [ ] All observers aligned on what to watch
|
||||
|
||||
---
|
||||
|
||||
## Documentation
|
||||
|
||||
- [ ] Playtest plan document complete
|
||||
- [ ] Observation template attached
|
||||
- [ ] Note-taking template included
|
||||
- [ ] Report template prepared
|
||||
|
||||
---
|
||||
|
||||
## Logistics
|
||||
|
||||
- [ ] Build deployed and accessible
|
||||
- [ ] Hardware ready and tested
|
||||
- [ ] Recording equipment checked (if applicable)
|
||||
- [ ] Quiet space secured
|
||||
|
||||
---
|
||||
|
||||
## Post-Playtest
|
||||
|
||||
- [ ] Debrief meeting scheduled
|
||||
- [ ] Report deadline set
|
||||
- [ ] Action item review planned
|
||||
|
||||
---
|
||||
|
||||
## Completion Criteria
|
||||
|
||||
- [ ] All team members have plan document
|
||||
- [ ] Observers understand focus areas
|
||||
- [ ] Templates are ready to use
|
||||
- [ ] Build is stable for session
|
||||
|
||||
---
|
||||
|
||||
**Completed by:** {name}
|
||||
**Date:** {date}
|
||||
**Session Date:** {playtest_date}
|
||||
@@ -0,0 +1,297 @@
|
||||
<!-- Powered by BMAD-CORE™ -->
|
||||
|
||||
# Playtest Planning
|
||||
|
||||
**Workflow ID**: `_bmad/bmgd/gametest/playtest-plan`
|
||||
**Version**: 1.0 (BMad v6)
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Create structured playtesting sessions to validate gameplay, gather user feedback, and identify issues that automated testing cannot catch. Playtesting validates "feel" and player experience.
|
||||
|
||||
**Knowledge Base Reference**: `knowledge/playtesting.md`
|
||||
|
||||
---
|
||||
|
||||
## Preflight Requirements
|
||||
|
||||
- ✅ Playable build available
|
||||
- ✅ Test objectives defined
|
||||
- ✅ Participant criteria known
|
||||
|
||||
---
|
||||
|
||||
## Step 1: Define Playtest Objectives
|
||||
|
||||
### Questions to Answer
|
||||
|
||||
1. **What are we testing?**
|
||||
- Core gameplay loop
|
||||
- Specific feature
|
||||
- Difficulty curve
|
||||
- Tutorial effectiveness
|
||||
- Overall experience
|
||||
|
||||
2. **What decisions will this inform?**
|
||||
- Design changes
|
||||
- Difficulty tuning
|
||||
- Feature prioritization
|
||||
- Ship/no-ship decision
|
||||
|
||||
3. **What metrics will we collect?**
|
||||
- Completion rates
|
||||
- Time-on-task
|
||||
- Failure points
|
||||
- Player sentiment
|
||||
|
||||
---
|
||||
|
||||
## Step 2: Choose Playtest Type
|
||||
|
||||
### Internal Playtest
|
||||
|
||||
**Best for**: Early validation, bug finding, quick iterations
|
||||
|
||||
| Aspect | Details |
|
||||
| ------------ | ------------------------- |
|
||||
| Participants | Team members, other teams |
|
||||
| Duration | 30-60 minutes |
|
||||
| Frequency | Weekly or per-milestone |
|
||||
| Setup | Minimal, informal |
|
||||
|
||||
### External Playtest
|
||||
|
||||
**Best for**: Unbiased feedback, market validation
|
||||
|
||||
| Aspect | Details |
|
||||
| ------------ | --------------------------------- |
|
||||
| Participants | Target audience, external testers |
|
||||
| Duration | 1-2 hours |
|
||||
| Frequency | Monthly or milestone |
|
||||
| Setup | Formal, NDA if needed |
|
||||
|
||||
### Focused Playtest
|
||||
|
||||
**Best for**: Specific feature validation
|
||||
|
||||
| Aspect | Details |
|
||||
| ------------ | ---------------------------- |
|
||||
| Participants | Selected for specific traits |
|
||||
| Duration | 20-45 minutes |
|
||||
| Frequency | As needed |
|
||||
| Setup | Specific build/scenario |
|
||||
|
||||
---
|
||||
|
||||
## Step 3: Create Session Structure
|
||||
|
||||
### Pre-Session (10-15 min)
|
||||
|
||||
1. **Welcome & Context**
|
||||
- Brief game description (no spoilers)
|
||||
- Session goals (what we're testing)
|
||||
- Comfort check (breaks, questions)
|
||||
|
||||
2. **Consent & Setup**
|
||||
- Recording consent (if applicable)
|
||||
- Controller/input preferences
|
||||
- Any accessibility needs
|
||||
|
||||
3. **Instructions**
|
||||
- "Play as you normally would"
|
||||
- "Think aloud if comfortable"
|
||||
- "There are no wrong answers"
|
||||
|
||||
### Gameplay Session (30-90 min)
|
||||
|
||||
1. **Observation Focus Areas**
|
||||
- Where do players get stuck?
|
||||
- What do they try first?
|
||||
- What surprises them?
|
||||
- Where do they express frustration/joy?
|
||||
|
||||
2. **Note-Taking Template**
|
||||
|
||||
```
|
||||
[TIME] [LOCATION] [OBSERVATION] [PLAYER REACTION]
|
||||
0:05 Tutorial Skipped help text Seemed impatient
|
||||
0:12 Combat Died to first enemy Frustrated, retried
|
||||
```
|
||||
|
||||
3. **Intervention Rules**
|
||||
- Let players struggle (within reason)
|
||||
- Note when you want to help
|
||||
- Only intervene for:
|
||||
- Critical bugs
|
||||
- Genuine distress
|
||||
- Session time running out
|
||||
|
||||
### Post-Session (10-20 min)
|
||||
|
||||
1. **Immediate Reactions**
|
||||
- "What was your overall impression?"
|
||||
- "What stood out most?"
|
||||
- "Would you play again?"
|
||||
|
||||
2. **Specific Questions**
|
||||
- Feature-specific feedback
|
||||
- Difficulty perception
|
||||
- Clarity of objectives
|
||||
|
||||
3. **Open Feedback**
|
||||
- "Anything else?"
|
||||
- "Questions for us?"
|
||||
|
||||
---
|
||||
|
||||
## Step 4: Create Observation Guide
|
||||
|
||||
### What to Watch For
|
||||
|
||||
| Category | Signals | Record |
|
||||
| ----------- | ------------------------------------- | ------------------ |
|
||||
| Confusion | Pausing, wandering, repeating actions | Location, duration |
|
||||
| Frustration | Sighing, repeated failures, quitting | Cause, frequency |
|
||||
| Engagement | Leaning in, exclaiming, continuing | Features that work |
|
||||
| Boredom | Checking phone, disengaging | Drop-off points |
|
||||
|
||||
### Quantitative Metrics
|
||||
|
||||
- Time to complete tutorial
|
||||
- Deaths per section
|
||||
- Items/features discovered
|
||||
- Session duration
|
||||
- Completion rate
|
||||
|
||||
---
|
||||
|
||||
## Step 5: Generate Playtest Plan Document
|
||||
|
||||
### Document Structure
|
||||
|
||||
```markdown
|
||||
# Playtest Plan: {Build/Feature Name}
|
||||
|
||||
## Overview
|
||||
|
||||
- Build version: {version}
|
||||
- Session date(s): {dates}
|
||||
- Objective: {primary goal}
|
||||
|
||||
## Participant Criteria
|
||||
|
||||
- Target: {player type}
|
||||
- Experience: {gaming background}
|
||||
- Count: {number}
|
||||
|
||||
## Session Structure
|
||||
|
||||
### Pre-Session (15 min)
|
||||
|
||||
- Welcome and consent
|
||||
- Setup and preferences
|
||||
- Brief instructions
|
||||
|
||||
### Gameplay (60 min)
|
||||
|
||||
- Free play / guided tasks
|
||||
- Observation focus: {areas}
|
||||
- Intervention threshold: {criteria}
|
||||
|
||||
### Post-Session (15 min)
|
||||
|
||||
- Immediate reactions
|
||||
- Structured questions
|
||||
- Open feedback
|
||||
|
||||
## Observation Guide
|
||||
|
||||
{observation_template}
|
||||
|
||||
## Data Collection
|
||||
|
||||
- Recording: {yes/no}
|
||||
- Notes template: {attached}
|
||||
- Metrics: {list}
|
||||
|
||||
## Team Roles
|
||||
|
||||
- Facilitator: {name}
|
||||
- Note-taker: {name}
|
||||
- Technical support: {name}
|
||||
|
||||
## Post-Playtest Analysis
|
||||
|
||||
- Session debrief: {date}
|
||||
- Report due: {date}
|
||||
- Action items review: {date}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Step 6: Post-Playtest Analysis
|
||||
|
||||
### Synthesize Findings
|
||||
|
||||
1. **Pattern Identification**
|
||||
- What issues appeared multiple times?
|
||||
- What worked consistently well?
|
||||
|
||||
2. **Severity Assessment**
|
||||
- Critical: Blocks progression
|
||||
- Major: Significantly impacts experience
|
||||
- Minor: Noticeable but manageable
|
||||
|
||||
3. **Recommendations**
|
||||
- Immediate fixes
|
||||
- Design considerations
|
||||
- Further investigation needed
|
||||
|
||||
### Report Template
|
||||
|
||||
```markdown
|
||||
## Playtest Report: {Session}
|
||||
|
||||
### Summary
|
||||
|
||||
- Participants: {count}
|
||||
- Completion rate: {%}
|
||||
- Overall sentiment: {positive/mixed/negative}
|
||||
|
||||
### Key Findings
|
||||
|
||||
1. {Finding with evidence}
|
||||
2. {Finding with evidence}
|
||||
|
||||
### Recommendations
|
||||
|
||||
| Issue | Severity | Recommendation | Priority |
|
||||
| ------- | -------- | -------------- | -------- |
|
||||
| {issue} | {sev} | {rec} | {P0-P3} |
|
||||
|
||||
### Quotes
|
||||
|
||||
> "{Notable player quote}" - Participant {N}
|
||||
|
||||
### Next Steps
|
||||
|
||||
1. {action item}
|
||||
2. {action item}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Deliverables
|
||||
|
||||
1. **Playtest Plan Document** - Session structure and logistics
|
||||
2. **Observation Guide** - What to watch for
|
||||
3. **Note-Taking Template** - Standardized recording
|
||||
4. **Report Template** - Post-session analysis format
|
||||
|
||||
---
|
||||
|
||||
## Validation
|
||||
|
||||
Refer to `checklist.md` for validation criteria.
|
||||
@@ -0,0 +1,208 @@
|
||||
# Playtest Plan: {BUILD_NAME}
|
||||
|
||||
**Version**: {BUILD_VERSION}
|
||||
**Created**: {DATE}
|
||||
**Session Date(s)**: {PLAYTEST_DATES}
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
### Objective
|
||||
|
||||
{What are we trying to learn from this playtest?}
|
||||
|
||||
### Build Information
|
||||
|
||||
- **Version**: {version}
|
||||
- **Platform**: {PC/Console/Mobile}
|
||||
- **Content**: {What's included in this build}
|
||||
- **Known Issues**: {List any known bugs to ignore}
|
||||
|
||||
### Success Criteria
|
||||
|
||||
{How will we know the playtest was successful?}
|
||||
|
||||
---
|
||||
|
||||
## Participants
|
||||
|
||||
### Target Profile
|
||||
|
||||
- **Player Type**: {casual/core/hardcore}
|
||||
- **Genre Experience**: {familiar/unfamiliar with genre}
|
||||
- **Age Range**: {if relevant}
|
||||
- **Other Criteria**: {specific requirements}
|
||||
|
||||
### Recruitment
|
||||
|
||||
- **Count**: {number of participants}
|
||||
- **Source**: {internal/external/panel}
|
||||
- **Compensation**: {if applicable}
|
||||
|
||||
---
|
||||
|
||||
## Session Structure
|
||||
|
||||
### Pre-Session (15 minutes)
|
||||
|
||||
1. **Welcome (5 min)**
|
||||
- Introduce yourself and the team
|
||||
- Explain what they'll be doing
|
||||
- Emphasize: "We're testing the game, not you"
|
||||
|
||||
2. **Consent & Setup (5 min)**
|
||||
- Recording consent: {yes/no}
|
||||
- NDA: {yes/no}
|
||||
- Collect demographic info: {yes/no}
|
||||
- Hardware preferences
|
||||
|
||||
3. **Instructions (5 min)**
|
||||
- "Play as you normally would"
|
||||
- "Think out loud if you're comfortable"
|
||||
- "Ask questions anytime"
|
||||
- "You can stop at any time"
|
||||
|
||||
### Gameplay Session ({DURATION} minutes)
|
||||
|
||||
#### Free Play vs Guided Tasks
|
||||
|
||||
- [ ] Free play - Let player explore naturally
|
||||
- [ ] Guided tasks - Specific scenarios to complete
|
||||
|
||||
#### Focus Areas
|
||||
|
||||
1. {Area 1 - e.g., Tutorial effectiveness}
|
||||
2. {Area 2 - e.g., Combat feel}
|
||||
3. {Area 3 - e.g., Navigation clarity}
|
||||
|
||||
#### Intervention Threshold
|
||||
|
||||
Only intervene when:
|
||||
|
||||
- [ ] Critical bug prevents progress
|
||||
- [ ] Player is genuinely distressed
|
||||
- [ ] Session time is running out
|
||||
- [ ] Player explicitly asks for help
|
||||
|
||||
### Post-Session ({POST_DURATION} minutes)
|
||||
|
||||
#### Immediate Reactions
|
||||
|
||||
1. "What was your overall impression of the game?"
|
||||
2. "What moment stood out the most?"
|
||||
3. "Would you play this again? Why or why not?"
|
||||
|
||||
#### Feature-Specific Questions
|
||||
|
||||
1. {Question about focus area 1}
|
||||
2. {Question about focus area 2}
|
||||
3. {Question about focus area 3}
|
||||
|
||||
#### Open Feedback
|
||||
|
||||
1. "Is there anything you wish the game had?"
|
||||
2. "Anything else you'd like to share?"
|
||||
3. "Questions for us?"
|
||||
|
||||
---
|
||||
|
||||
## Observation Guide
|
||||
|
||||
### What to Watch For
|
||||
|
||||
| Signal | Examples | Action |
|
||||
| --------------- | -------------------------------------- | ------------------------- |
|
||||
| **Confusion** | Pausing, circling, re-reading | Note location, duration |
|
||||
| **Frustration** | Sighing, repeated attempts, quitting | Note cause, frequency |
|
||||
| **Engagement** | Leaning in, exclaiming, "one more try" | Note feature |
|
||||
| **Boredom** | Checking phone, rushing, disengaging | Note when drop-off begins |
|
||||
| **Discovery** | "Oh!", trying things | Note what triggered it |
|
||||
|
||||
### Metrics to Collect
|
||||
|
||||
- [ ] Time to complete tutorial
|
||||
- [ ] Number of deaths/failures per section
|
||||
- [ ] Features/items discovered
|
||||
- [ ] Total session duration
|
||||
- [ ] Completion rate
|
||||
|
||||
---
|
||||
|
||||
## Note-Taking Template
|
||||
|
||||
```
|
||||
Participant: ___ Date: ___ Observer: ___
|
||||
|
||||
TIME | LOCATION | OBSERVATION | REACTION | NOTES
|
||||
-----|----------|-------------|----------|------
|
||||
| | | |
|
||||
| | | |
|
||||
| | | |
|
||||
|
||||
Key Moments:
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
|
||||
Overall Impression:
|
||||
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Team Roles
|
||||
|
||||
| Role | Responsibilities | Assigned To |
|
||||
| ---------------- | --------------------------------- | ----------- |
|
||||
| **Facilitator** | Welcome, instructions, interview | {name} |
|
||||
| **Note-taker** | Observations, timestamps | {name} |
|
||||
| **Tech Support** | Build, recording, troubleshooting | {name} |
|
||||
|
||||
---
|
||||
|
||||
## Logistics
|
||||
|
||||
### Equipment
|
||||
|
||||
- [ ] Game build installed and tested
|
||||
- [ ] Controllers/input devices
|
||||
- [ ] Recording equipment (if applicable)
|
||||
- [ ] Consent forms
|
||||
- [ ] Observation templates (printed)
|
||||
- [ ] Compensation (if applicable)
|
||||
|
||||
### Environment
|
||||
|
||||
- [ ] Quiet, private space
|
||||
- [ ] Comfortable seating
|
||||
- [ ] Water/snacks available
|
||||
- [ ] Clock/timer visible
|
||||
|
||||
---
|
||||
|
||||
## Post-Playtest Process
|
||||
|
||||
### Same Day
|
||||
|
||||
- [ ] Quick team debrief (15 min)
|
||||
- [ ] Consolidate raw notes
|
||||
- [ ] Flag critical issues
|
||||
|
||||
### Within 48 Hours
|
||||
|
||||
- [ ] Synthesize findings
|
||||
- [ ] Identify patterns
|
||||
- [ ] Draft playtest report
|
||||
|
||||
### Report Delivery
|
||||
|
||||
- **Due Date**: {date}
|
||||
- **Distribution**: {team/stakeholders}
|
||||
- **Format**: {document/presentation}
|
||||
|
||||
---
|
||||
|
||||
## Notes
|
||||
|
||||
{Any additional notes, special considerations, or reminders}
|
||||
@@ -0,0 +1,57 @@
|
||||
# Game QA workflow: playtest-plan
|
||||
name: gametest-playtest-plan
|
||||
description: "Create structured playtesting sessions for gameplay validation and user feedback"
|
||||
author: "BMad"
|
||||
|
||||
# Critical variables from config
|
||||
config_source: "{project-root}/_bmad/bmgd/config.yaml"
|
||||
output_folder: "{config_source}:output_folder"
|
||||
user_name: "{config_source}:user_name"
|
||||
communication_language: "{config_source}:communication_language"
|
||||
document_output_language: "{config_source}:document_output_language"
|
||||
date: system-generated
|
||||
|
||||
# Workflow components
|
||||
installed_path: "{project-root}/_bmad/bmgd/workflows/gametest/playtest-plan"
|
||||
instructions: "{installed_path}/instructions.md"
|
||||
validation: "{installed_path}/checklist.md"
|
||||
template: "{installed_path}/playtest-template.md"
|
||||
|
||||
# Variables and inputs
|
||||
variables:
|
||||
playtest_type: "internal" # internal, external, focused
|
||||
session_duration: 60 # minutes
|
||||
participant_count: 5
|
||||
|
||||
# Smart input file references - for understanding game mechanics to test
|
||||
input_file_patterns:
|
||||
gdd:
|
||||
description: "Game Design Document for mechanics to validate"
|
||||
whole: "{output_folder}/*gdd*.md"
|
||||
sharded: "{output_folder}/*gdd*/*.md"
|
||||
load_strategy: "FULL_LOAD"
|
||||
game_brief:
|
||||
description: "Game Brief for understanding core pillars"
|
||||
whole: "{output_folder}/*brief*.md"
|
||||
load_strategy: "FULL_LOAD"
|
||||
|
||||
# Output configuration
|
||||
default_output_file: "{output_folder}/playtest-plan.md"
|
||||
|
||||
# Required tools
|
||||
required_tools:
|
||||
- read_file
|
||||
- write_file
|
||||
- list_files
|
||||
|
||||
tags:
|
||||
- qa
|
||||
- playtesting
|
||||
- user-research
|
||||
- design-validation
|
||||
- feedback
|
||||
|
||||
execution_hints:
|
||||
interactive: true
|
||||
autonomous: false
|
||||
iterative: true
|
||||
Reference in new issue
Block a user