We now have a front end spec!
This commit is contained in:
400
docs/front-end-spec.md
Normal file
400
docs/front-end-spec.md
Normal file
@@ -0,0 +1,400 @@
|
||||
# Stasis Warden UI/UX Specification
|
||||
|
||||
This document defines the user experience goals, information architecture, user flows, and visual design specifications for Stasis Warden's user interface. It serves as the foundation for visual design and frontend development, ensuring a cohesive and user-centered experience.
|
||||
|
||||
## 1. Introduction
|
||||
|
||||
### 1.1. Overall UX Goals & Principles
|
||||
|
||||
#### 1.1.1. Target User Personas
|
||||
|
||||
- **Strategy Game Enthusiast**: Players who enjoy deep, strategic gameplay with emergent narratives. They value complex systems that interact in meaningful ways.
|
||||
- **Narrative-Focused Gamer**: Players who are drawn to story-rich experiences where the narrative unfolds through gameplay mechanics rather than cutscenes.
|
||||
- **Indie Game Supporter**: Players who appreciate unique, creative games that push boundaries and offer something different from mainstream titles.
|
||||
|
||||
#### 1.1.2. Usability Goals
|
||||
|
||||
- **Immersive Experience**: Create a seamless diegetic interface that reinforces the narrative of being the ship's AI.
|
||||
- **Intuitive Expansion**: Make the room expansion and crew management systems easy to understand and execute.
|
||||
- **Clear Feedback**: Provide immediate, understandable feedback for all player actions.
|
||||
- **Strategic Depth**: Offer meaningful choices in room selection and crew assignment that impact gameplay.
|
||||
|
||||
#### 1.1.3. Design Principles
|
||||
|
||||
1. **Diegetic Design**: All UI elements should feel like part of the ship's systems, not overlaid on them.
|
||||
2. **Retro-Futurism**: Embrace the aesthetic inspired by the *Alien* franchise with CRT effects and pixelated graphics.
|
||||
3. **Tactile Interaction**: Make interactions feel physical and satisfying, reinforcing the analog nature of the ship's controls.
|
||||
4. **Progressive Complexity**: Start simple but allow for deeper strategic layers as the player progresses.
|
||||
5. **Narrative Integration**: Every UI element should contribute to the story of rediscovering the AI's identity.
|
||||
|
||||
## 2. Information Architecture (IA)
|
||||
|
||||
### 2.1. Site Map / Screen Inventory
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A[Main Menu] --> B[Game World - Ship View]
|
||||
A --> C[Load Game]
|
||||
A --> D[Settings]
|
||||
A --> E[Quit Game]
|
||||
B --> B1[Resource Panel]
|
||||
B --> B2[Crew Roster]
|
||||
B --> B3[Ship Map]
|
||||
B3 --> B3a[Power Core Room]
|
||||
B3 --> B3b[New Room Selection]
|
||||
B3 --> B3c[Cryo Stasis Room]
|
||||
|
||||
B2 --> B2a[Crew Member Details]
|
||||
B1 --> B1a[Resource Details]
|
||||
```
|
||||
|
||||
### 2.2. Navigation Structure
|
||||
|
||||
**Primary Navigation:**
|
||||
- Point-and-click interaction on the ship map for core gameplay actions (selecting rooms, assigning crew)
|
||||
- Dedicated UI panels (Resource Panel, Crew Roster) for managing resources and crew
|
||||
|
||||
**Secondary Navigation:**
|
||||
- Temporary UI elements (Room Card Shelf) for specific choices
|
||||
- Contextual menus that appear when interacting with game objects
|
||||
|
||||
**Breadcrumb Strategy:**
|
||||
- As this is primarily a single-screen game with diegetic UI, traditional breadcrumbs aren't applicable. Instead, we'll use visual focus states and temporary UI elements to guide the player's attention.
|
||||
|
||||
## 3. User Flows
|
||||
|
||||
### 3.1. Primary Gameplay Loop
|
||||
|
||||
**User Goal:** Progress through the core gameplay loop of generating power, expanding the ship, awakening crew members, and assigning tasks.
|
||||
|
||||
**Entry Points:**
|
||||
- Starting a new game
|
||||
- Loading a saved game
|
||||
|
||||
**Success Criteria:**
|
||||
- Player successfully generates power through manual clicking
|
||||
- Player unlocks a new room using power
|
||||
- Player selects a room type from the Room Card Shelf
|
||||
- Player awakens a crew member
|
||||
- Player assigns a crew member to generate power automatically
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A[Start Game] --> B[View Power Core Room]
|
||||
B --> C[Click Power Core to Generate Power]
|
||||
C --> D[Accumulate Sufficient Power]
|
||||
D --> E[Click Adjacent Locked Door]
|
||||
E --> F[Confirm Unlock Cost]
|
||||
F --> G[Unlock New Room Space]
|
||||
G --> H[Room Card Shelf Appears]
|
||||
H --> I[Select Room Card]
|
||||
I --> J[Build New Room]
|
||||
J --> K[Enter Cryo Stasis Room]
|
||||
K --> L[Click Stasis Pod]
|
||||
L --> M[Confirm Awakening Cost]
|
||||
M --> N[Awaken Crew Member]
|
||||
N --> O[Assign Crew to Power Core]
|
||||
O --> P[Automatic Power Generation]
|
||||
P --> C
|
||||
```
|
||||
|
||||
**Edge Cases & Error Handling:**
|
||||
- Player attempts to unlock a door without sufficient power
|
||||
- Player attempts to awaken a crew member without sufficient power
|
||||
- Player tries to assign a crew member to a task they're already assigned to
|
||||
|
||||
**Notes:**
|
||||
This flow represents the core loop that players will engage with repeatedly. Each cycle should feel satisfying and progress the narrative of rebuilding the ship and rediscovering the AI's identity.
|
||||
|
||||
## 4. Wireframes & Mockups
|
||||
|
||||
### 4.1. Primary Design Files
|
||||
|
||||
Since this is a solo passion project, we'll likely be working directly in the Godot engine for UI implementation. However, for documentation and planning purposes, we can use simple sketches or digital mockups to visualize the interface.
|
||||
|
||||
### 4.2. Key Screen Layouts
|
||||
|
||||
#### 4.2.1. Main Ship View
|
||||
|
||||
**Purpose:** Display the top-down map of the ship with integrated UI elements for resource management and crew roster.
|
||||
|
||||
**Key Elements:**
|
||||
- Diegetic CRT monitor frame
|
||||
- Top-down ship map in the center
|
||||
- Resource panel on the left side
|
||||
- Crew roster panel on the right side
|
||||
- Temporary Room Card Shelf at the bottom (appears when needed)
|
||||
|
||||
**Interaction Notes:**
|
||||
Players will primarily interact with the ship map through point-and-click. The Resource Panel and Crew Roster will provide persistent information and quick access to key game systems.
|
||||
|
||||
**Design File Reference:**
|
||||
For implementation, we'll be creating this directly in Godot's UI system.
|
||||
|
||||
## 5. Component Library / Design System
|
||||
|
||||
### 5.1. Design System Approach
|
||||
|
||||
For this solo passion project, we'll create a simple, focused design system that supports the retro-futuristic aesthetic and diegetic UI principles. The system will be implemented directly in Godot using its UI nodes and custom shaders.
|
||||
|
||||
### 5.2. Core Components
|
||||
|
||||
#### 5.2.1. CRT Monitor Frame
|
||||
|
||||
**Purpose:** Create the diegetic context by framing the entire interface as a CRT monitor display.
|
||||
|
||||
**Variants:**
|
||||
- Standard frame with scan lines
|
||||
- Optional "glitch" effects for dramatic moments
|
||||
|
||||
**States:**
|
||||
- Normal operation
|
||||
- Glitch/distress state
|
||||
|
||||
**Usage Guidelines:**
|
||||
Should be visible at all times during gameplay, subtly reinforcing the narrative context.
|
||||
|
||||
#### 5.2.2. Resource Panel
|
||||
|
||||
**Purpose:** Display and manage key game resources like Power.
|
||||
|
||||
**Variants:**
|
||||
- Simple numeric display
|
||||
- Icon + numeric display
|
||||
|
||||
**States:**
|
||||
- Normal display
|
||||
- Low resource warning
|
||||
- Resource gain animation
|
||||
|
||||
**Usage Guidelines:**
|
||||
Should be clearly visible but not distract from the central ship map.
|
||||
|
||||
#### 5.2.3. Crew Roster Panel
|
||||
|
||||
**Purpose:** List all awakened crew members and provide access to their details.
|
||||
|
||||
**Variants:**
|
||||
- Compact list view
|
||||
- Detailed crew member view
|
||||
|
||||
**States:**
|
||||
- Idle
|
||||
- Crew member selected
|
||||
- New crew member added
|
||||
|
||||
**Usage Guidelines:**
|
||||
Should update in real-time as crew members are awakened and assigned to tasks.
|
||||
|
||||
## 6. Branding & Style Guide
|
||||
|
||||
### 6.1. Visual Identity
|
||||
|
||||
The visual identity of Stasis Warden is heavily inspired by the retro-futurism of the *Alien* franchise. This includes a pixelated font, CRT scan lines, and a green or amber monochrome color palette for the main display.
|
||||
|
||||
### 6.2. Color Palette
|
||||
|
||||
| Color Type | Hex Code | Usage |
|
||||
| --- | --- | --- |
|
||||
| Primary | #00FF00 (Green) | Main CRT display color, primary UI elements |
|
||||
| Secondary | #FFD700 (Amber) | Alternative CRT display color for specific states |
|
||||
| Accent | #00BFFF (Blue) | Highlighting important information or interactive elements |
|
||||
| Success | #00FF00 (Green) | Positive feedback, confirmations |
|
||||
| Warning | #FFA500 (Orange) | Cautions, important notices |
|
||||
| Error | #FF0000 (Red) | Errors, destructive actions |
|
||||
| Neutral | #CCCCCC (Light Gray) | Text, borders, backgrounds |
|
||||
|
||||
### 6.3. Typography
|
||||
|
||||
#### Font Families
|
||||
- **Primary:** Pixelated font (e.g., "Press Start 2P" or similar)
|
||||
- **Secondary:** Sans-serif font for any non-diegetic text (if needed)
|
||||
- **Monospace:** For any code-like displays or technical readouts
|
||||
|
||||
#### Type Scale
|
||||
|
||||
| Element | Size | Weight | Line Height |
|
||||
| --- | --- | --- | --- |
|
||||
| H1 | 24px | Bold | 1.2 |
|
||||
| H2 | 20px | Bold | 1.2 |
|
||||
| H3 | 16px | Bold | 1.2 |
|
||||
| Body | 12px | Normal | 1.3 |
|
||||
| Small | 10px | Normal | 1.3 |
|
||||
|
||||
### 6.4. Iconography
|
||||
|
||||
For a retro-futuristic aesthetic, we'll use simple, geometric icons that match the pixelated style.
|
||||
|
||||
**Icon Library:** Custom-designed pixel art icons
|
||||
|
||||
**Usage Guidelines:**
|
||||
Icons should be simple and immediately recognizable, matching the overall aesthetic.
|
||||
|
||||
### 6.5. Spacing & Layout
|
||||
|
||||
**Grid System:** 8px grid system for consistent spacing
|
||||
|
||||
**Spacing Scale:** 4px, 8px, 16px, 24px, 32px, 48px, 64px
|
||||
|
||||
## 7. Accessibility Requirements
|
||||
|
||||
### 7.1. Compliance Target
|
||||
|
||||
For this initial version, we'll focus on basic accessibility principles rather than formal compliance standards. However, we'll design with future compliance in mind.
|
||||
|
||||
### 7.2. Key Requirements
|
||||
|
||||
**Visual:**
|
||||
- Color contrast ratios: Ensure sufficient contrast between UI elements and backgrounds, especially for text. Even with the CRT aesthetic, text should be readable.
|
||||
- Focus indicators: Provide clear visual indicators for interactive elements, especially important for keyboard navigation.
|
||||
- Text sizing: Implement scalable text options to accommodate players with visual impairments.
|
||||
|
||||
**Interaction:**
|
||||
- Keyboard navigation: Ensure all core gameplay actions can be performed via keyboard, not just mouse. This is particularly important for players who may have difficulty with precise mouse movements.
|
||||
- Screen reader support: Implement basic screen reader support for UI elements, though this may be limited by the diegetic UI approach.
|
||||
- Touch targets: Ensure interactive elements are large enough to be easily clicked, important for potential future touch-based platforms.
|
||||
|
||||
**Content:**
|
||||
- Alternative text: Provide alternative text for important visual elements, particularly for the Room Cards.
|
||||
- Heading structure: Implement a logical heading structure for UI elements to aid screen readers.
|
||||
- Form labels: Ensure any form elements (like save/load dialogs) have proper labels.
|
||||
|
||||
### 7.3. Testing Strategy
|
||||
|
||||
For this solo project, we'll implement a basic testing strategy:
|
||||
- Self-testing with different display settings
|
||||
- Seeking feedback from community members with accessibility needs
|
||||
- Using available accessibility testing tools for Godot if they exist
|
||||
|
||||
## 8. Responsiveness Strategy
|
||||
|
||||
### 8.1. Breakpoints
|
||||
|
||||
| Breakpoint | Min Width | Max Width | Target Devices |
|
||||
| --- | --- | --- | --- |
|
||||
| Desktop Small | 1024px | 1279px | Smaller desktops, laptops |
|
||||
| Desktop Medium | 1280px | 1919px | Standard desktops, laptops |
|
||||
| Desktop Large | 1920px | - | Large desktops, ultrawides |
|
||||
|
||||
### 8.2. Adaptation Patterns
|
||||
|
||||
**Layout Changes:**
|
||||
- The diegetic CRT monitor frame will scale to fit the screen while maintaining its aspect ratio.
|
||||
- The internal layout of the ship map and UI panels will adjust to maintain proper spacing and readability.
|
||||
- A zoom feature will allow players to toggle between a full-screen CRT view and the default view. When zoomed in, abbreviated resource and crew displays will appear within the CRT screen itself.
|
||||
|
||||
**Navigation Changes:**
|
||||
- Since this is primarily a point-and-click interface with persistent UI panels, navigation will remain consistent across screen sizes.
|
||||
- The zoom toggle will be easily accessible but disabled during critical gameplay moments like room card selection.
|
||||
|
||||
**Content Priority:**
|
||||
- All core UI elements (ship map, resource panel, crew roster) will remain visible at all screen sizes.
|
||||
- When zoomed in, abbreviated versions of the resource panel and crew roster will be displayed within the CRT screen.
|
||||
- The Room Card Shelf will scale appropriately when it appears and will be the focus during card selection, preventing zoom interactions.
|
||||
|
||||
**Interaction Changes:**
|
||||
- Mouse-based interactions will remain the primary input method, with keyboard navigation as a secondary option.
|
||||
- The size of interactive elements will scale with the UI to maintain usability.
|
||||
- A dedicated key/button will toggle between zoomed and default views, with clear visual feedback for the current state.
|
||||
|
||||
## 9. Animation & Micro-interactions
|
||||
|
||||
### 9.1. Motion Principles
|
||||
|
||||
1. **Tactile Feedback**: All animations should feel physical and responsive, like interacting with actual machinery.
|
||||
2. **CRT Authenticity**: Animations should respect the limitations and characteristics of CRT displays, with subtle scan lines and phosphor glow effects.
|
||||
3. **Purposeful Motion**: Every animation should serve a clear purpose, either providing feedback or guiding the player's attention.
|
||||
4. **Subtle Enhancements**: Animations should enhance the experience without overwhelming it or causing distraction.
|
||||
5. **Consistent Timing**: All animations should follow consistent timing patterns to create a cohesive feel.
|
||||
|
||||
### 9.2. Key Animations
|
||||
|
||||
1. **Power Generation Click**
|
||||
- **Description**: Visual feedback when clicking the Power Core
|
||||
- **Duration**: 100ms
|
||||
- **Easing**: EaseOutBack
|
||||
|
||||
2. **Room Unlocking**
|
||||
- **Description**: Animation when unlocking a new room
|
||||
- **Duration**: 300ms
|
||||
- **Easing**: EaseInOutCubic
|
||||
|
||||
3. **Crew Awakening**
|
||||
- **Description**: Sequence when awakening a crew member from stasis
|
||||
- **Duration**: 1000ms
|
||||
- **Easing**: EaseOutElastic
|
||||
|
||||
4. **Resource Gain**
|
||||
- **Description**: Animation when resources are gained
|
||||
- **Duration**: 200ms
|
||||
- **Easing**: EaseOutQuad
|
||||
|
||||
5. **CRT Scan Lines**
|
||||
- **Description**: Continuous subtle scan line effect
|
||||
- **Duration**: Continuous
|
||||
- **Easing**: Linear
|
||||
|
||||
6. **Room Card Shelf Appearance**
|
||||
- **Description**: Animation when the room card selection appears
|
||||
- **Duration**: 250ms
|
||||
- **Easing**: EaseOutQuart
|
||||
|
||||
## 10. Performance Considerations
|
||||
|
||||
### 10.1. Performance Goals
|
||||
|
||||
Based on the PRD requirements, let's define our performance targets:
|
||||
- **Page Load**: Initial game load time under 5 seconds on minimum hardware
|
||||
- **Interaction Response**: UI interactions should respond within 100ms
|
||||
- **Animation FPS**: Maintain 60 FPS for animations on minimum hardware, 120 FPS on recommended hardware
|
||||
|
||||
### 10.2. Design Strategies
|
||||
|
||||
To meet these performance goals, we'll implement several design strategies:
|
||||
|
||||
1. **Efficient Asset Usage**: Use simple, optimized sprites and UI elements that won't strain lower-end hardware.
|
||||
2. **Limited Concurrent Animations**: Restrict the number of simultaneous animations to prevent performance drops.
|
||||
3. **Level of Detail (LOD)**: Implement simplified UI elements when the game is running below target FPS.
|
||||
4. **Smart Rendering**: Only render UI elements that are currently visible or likely to become visible soon.
|
||||
5. **Caching**: Cache frequently used UI elements and animations to reduce processing overhead.
|
||||
6. **Shader Optimization**: Use efficient shaders for CRT effects that can scale down on lower-end hardware.
|
||||
7. **Batching**: Group similar UI elements together for more efficient rendering.
|
||||
|
||||
These strategies will help ensure that the UI remains responsive and visually appealing across all target hardware configurations.
|
||||
|
||||
## 11. Next Steps
|
||||
|
||||
### 11.1. Immediate Actions
|
||||
|
||||
1. Review this specification with stakeholders (in this case, the development team or solo developer) to ensure alignment on all aspects of the UI/UX design.
|
||||
2. Begin creating visual mockups or prototypes for key screens, particularly the main ship view and Room Card Shelf.
|
||||
3. Develop a style guide that captures all visual elements, including colors, typography, and iconography.
|
||||
4. Create a component library in Godot that implements the core UI components defined in this specification.
|
||||
5. Plan the implementation approach for the diegetic CRT monitor interface and its zoom feature.
|
||||
6. Define acceptance criteria for each UI element based on the interactions and animations described in this document.
|
||||
7. Set up a feedback loop with potential players to validate the design decisions.
|
||||
|
||||
### 11.2. Design Handoff Checklist
|
||||
|
||||
Let's make sure we've covered all the necessary elements for a smooth transition from design to development:
|
||||
|
||||
1. ☐ All user flows documented
|
||||
2. ☐ Component inventory complete
|
||||
3. ☐ Accessibility requirements defined
|
||||
4. ☐ Responsive strategy clear
|
||||
5. ☐ Brand guidelines incorporated
|
||||
6. ☐ Performance goals established
|
||||
|
||||
With these next steps, we're well-positioned to move from specification to implementation while maintaining the vision of an immersive, diegetic interface that supports the game's narrative of rediscovering the AI's identity.
|
||||
|
||||
## 12. Checklist Results
|
||||
|
||||
No formal UI/UX checklist has been run against this document yet. It's recommended to:
|
||||
|
||||
1. Create a UI/UX checklist specific to game interfaces and diegetic UI design
|
||||
2. Review this specification against that checklist to ensure all critical elements have been addressed
|
||||
3. Document the results of that review here
|
||||
|
||||
This would be an important step before finalizing the specification and moving to implementation.
|
||||
|
||||
With this, we've completed our front-end specification for Stasis Warden, covering all the key aspects of the UI/UX design. The document provides a comprehensive guide for implementing the diegetic CRT monitor interface that will immerse players in the experience of being the ship's AI.
|
||||
Reference in New Issue
Block a user