140 lines
4.2 KiB
Markdown
140 lines
4.2 KiB
Markdown
# Python Game Tools - 2026 Best Practices
|
|
|
|
**Stack:** Arcade 2.8, PyQt6, Data Visualization (Matplotlib, Plotly), Pydantic v2
|
|
**Target:** Arcade 2D UI overlays, loot probability visualization, data dashboards
|
|
**Last Updated:** 2026-03-14
|
|
|
|
---
|
|
|
|
## 2026 Best Practices
|
|
|
|
### Arcade 2D UI (Python)
|
|
|
|
| Pattern | Description | Use Case |
|
|
|---------|-------------|----------|
|
|
| **Sprite-based** | Sprite class for UI elements | Overlays, buttons |
|
|
| **Scene Manager** | Scene switching for UI flow | Menu → Game → Results |
|
|
| **Event-driven** | Pygame event handling | Input processing |
|
|
| **Delta Rendering** | Only redraw changed regions | Performance |
|
|
|
|
### Data Visualization
|
|
|
|
```
|
|
Matplotlib → Static charts, probability distributions
|
|
Plotly → Interactive dashboards, real-time updates
|
|
Seaborn → Statistical visualizations, heatmaps
|
|
```
|
|
|
|
### Transparency Patterns
|
|
|
|
| Feature | Description | Benefit |
|
|
|---------|-------------|---------|
|
|
| **Loot Display** | Transparent probability tables | Player trust |
|
|
| **Drop Animation** | Visual loot acquisition | Engagement |
|
|
| **Rarity Indicator** | Color + text (non-color dependent) | A11y |
|
|
| **Statistical View** | Distribution histograms | Data insight |
|
|
|
|
### Performance Targets
|
|
|
|
| Metric | Target | Measurement |
|
|
|--------|--------|-------------|
|
|
| **Frame Time** | <16ms (60 FPS) | `time.perf_counter()` |
|
|
| **Memory** | <150MB | `memory_profiler` |
|
|
| **Load Time** | <2s | Startup benchmark |
|
|
| **GC Pause** | <5ms | Profiler |
|
|
|
|
---
|
|
|
|
## Game Design Integration Patterns
|
|
|
|
### Arcade 2D UI Overlay
|
|
|
|
```
|
|
Layer System → UI layer above game layer
|
|
Alpha Blending → Transparent backgrounds
|
|
Event Propagation → UI events before game events
|
|
```
|
|
|
|
### Loot Probability Visualization
|
|
|
|
| Pattern | Description | Implementation |
|
|
|---------|-------------|----------------|
|
|
| **Probability Table** | Exact drop rates display | Pandas DataFrame |
|
|
| **Pie Chart** | Visual rarity distribution | Matplotlib |
|
|
| **Histogram** | Drop distribution over time | Plotly |
|
|
| **Expectation Curve** | Cumulative drop chance | Statistical plot |
|
|
|
|
---
|
|
|
|
## Accessibility Compliance (WCAG 2.2 Level AA)
|
|
|
|
| Requirement | Implementation | Verification |
|
|
|-------------|----------------|--------------|
|
|
| **Color Independence** | Text + icon + color for rarity | Grayscale test |
|
|
| **Keyboard Navigation** | Arrow keys, Enter, Escape | Manual audit |
|
|
| **Screen Reader** | Text descriptions for charts | axe-core |
|
|
| **High Contrast** | 4.5:1 minimum ratio | Contrast checker |
|
|
| **Reduced Motion** | Toggle for animations | Device testing |
|
|
|
|
---
|
|
|
|
## Ethical Engagement Standards
|
|
|
|
### No Dark Patterns
|
|
|
|
| Forbidden Pattern | Replacement |
|
|
|------------------|-------------|
|
|
| **Hidden Rates** | Transparent probability display |
|
|
| **False Scarcity** | Honest drop rate claims |
|
|
| **Manipulative Odds** | No misleading rarity labels |
|
|
| **Sunk Cost Display** | No "you're due" messaging |
|
|
| **Timer Pressure** | No artificial purchase timers |
|
|
|
|
### Transparency Requirements
|
|
|
|
```
|
|
- Display exact drop rates (e.g., "1.5%")
|
|
- Show total opens for statistical context
|
|
- Clear rarity definitions (Common/Rare/Legendary)
|
|
- No hidden weighting algorithms
|
|
- Honest RNG disclosure (no fake random)
|
|
```
|
|
|
|
---
|
|
|
|
## Code Examples
|
|
|
|
### arcade-ui-overlay.py
|
|
Arcade 2D UI overlay with layer management
|
|
→ See: [`arcade-ui-overlay.py`](./arcade-ui-overlay.py)
|
|
|
|
### loot-table-visualizer.py
|
|
Transparent loot probability display
|
|
→ See: [`loot-table-visualizer.py`](./loot-table-visualizer.py)
|
|
|
|
---
|
|
|
|
## Testing Guidelines
|
|
|
|
| Test Type | Tool | Target |
|
|
|-----------|------|--------|
|
|
| **Unit** | pytest | Per-commit |
|
|
| **Visual** | pytest-matchers | Per-PR |
|
|
| **A11y** | Manual audit | Per-component |
|
|
| **Performance** | pytest-benchmark | Per-sprint |
|
|
| **Integration** | pytest-asyncio | Per-release |
|
|
|
|
---
|
|
|
|
## Related Documents
|
|
|
|
- [AGENT_GUARDRAILS.md](../../docs/AGENT_GUARDRAILS.md) - Mandatory safety protocols
|
|
- [TEST_PRODUCTION_SEPARATION.md](../../docs/standards/TEST_PRODUCTION_SEPARATION.md) - Test/prod isolation
|
|
- [OPERATIONAL_PATTERNS.md](../../docs/standards/OPERATIONAL_PATTERNS.md) - Health checks, circuit breakers
|
|
|
|
---
|
|
|
|
**Authored by:** Claude Code (Anthropic)
|
|
**Document Owner:** Project Maintainers
|
|
**Review Cycle:** Per-sprint updates
|
|
**Last Review:** 2026-03-14 |