Files
voider/Scenes/Testing/README.md

157 lines
4.9 KiB
Markdown

# Library Integration Test Scene
This test scene demonstrates all EinSoftworks utility libraries working together in a single integrated environment.
## Libraries Tested
-**EinSoftworks.Movement** - First-person character controller with bunny hopping and air strafing
-**EinSoftworks.Input** - Input management and action handling
-**EinSoftworks.Events** - Event system for state changes and notifications
-**EinSoftworks.StateManagement** - Movement state machine (idle, walking, airborne, crouching)
-**EinSoftworks.Camera** - First-person camera with mouse look
-**EinSoftworks.Utilities** - Math and physics helpers
## Reusable Scene Files
### TestPlayer.tscn
A reusable first-person player character scene that can be instantiated in any level.
**Features:**
- Full movement system with advanced mechanics (bunny hopping, air strafing, crouching)
- Integrated camera with smooth crouch transitions
- Gamepad and keyboard/mouse support
- Optional UI integration (works standalone or with TestUI)
**Usage:**
```gdscript
# Instance the player scene
var player = preload("res://Scenes/Testing/TestPlayer.tscn").instantiate()
add_child(player)
player.position = Vector3(0, 2, 0)
# Optionally connect UI labels
player.SpeedVal = $UI/TestUI/StatsPanel/VBoxContainerValues/SpeedVal
player.StateVal = $UI/TestUI/StatsPanel/VBoxContainerValues/StateVal
# etc...
```
### TestUI.tscn
A reusable debug UI overlay showing real-time movement statistics.
**Features:**
- Stats panel with speed, state, position, and velocity
- Clean, non-intrusive bottom-left placement
- Automatically updates when connected to TestPlayer
**Usage:**
```gdscript
# Instance the UI scene
var ui_layer = CanvasLayer.new()
add_child(ui_layer)
var test_ui = preload("res://Scenes/Testing/TestUI.tscn").instantiate()
ui_layer.add_child(test_ui)
```
## Scene Components
### LibraryTest.tscn
The main integration test scene demonstrating all libraries working together.
**Components:**
- TestPlayer instance with full movement capabilities
- TestUI instance showing real-time stats
- TestGameManager for event handling and player reset
- Test environment (floor, ramp, platforms, walls)
### TestGameManager
- Manages game state and event subscriptions
- Listens to movement events
- Provides player reset functionality (Home key)
### Environment
- Large floor for movement testing
- Ramp for testing slope movement and surfing
- Multiple platforms for jump testing
- Wall boundaries
## Controls
| Key | Action |
|-----|--------|
| W/A/S/D | Move forward/left/back/right |
| Space | Jump |
| Shift | Sprint |
| Ctrl | Crouch |
| Mouse | Look around |
| ESC | Toggle mouse capture |
| Home | Reset player position |
## Testing Features
### Movement Mechanics
1. **Basic Movement**: Walk around using WASD
2. **Sprinting**: Hold Shift while moving for increased speed
3. **Crouching**: Hold Ctrl to crouch (reduces speed and height)
4. **Jumping**: Press Space to jump
5. **Bunny Hopping**: Jump repeatedly while strafing to gain speed
6. **Air Strafing**: Strafe left/right while in air and turn mouse to gain speed
7. **Surfing**: Run up the ramp and maintain speed on the slope
### State Management
Watch the State label change as you:
- Stand still (Idle)
- Move (Walking)
- Jump (Airborne)
- Crouch (Crouching)
### Event System
Check the console output for event notifications:
- Movement state changes
- Jump events
- Speed change events
## Expected Behavior
1. **Smooth Movement**: Character should accelerate and decelerate smoothly
2. **Air Control**: Should be able to change direction slightly while airborne
3. **Speed Preservation**: Speed should be maintained between jumps (bunny hopping)
4. **State Transitions**: States should change smoothly without glitches
5. **UI Updates**: All UI elements should update in real-time
6. **Event Flow**: Console should show event notifications
## Performance
Target: 60+ FPS on modern hardware
The FPS counter in the top-right shows current performance.
## Troubleshooting
### Mouse Not Captured
- Press ESC to toggle mouse capture mode
- Mouse must be captured for camera look to work
### Character Not Moving
- Verify input actions are defined in project.godot
- Check console for any error messages
- Ensure all libraries are properly referenced
### No UI Updates
- Check that UI labels are properly connected to TestPlayer
- Verify TestUI script is attached to the UI Control node
### Events Not Firing
- Check console output for event messages
- Verify EventManager autoload is configured
- Ensure event subscriptions in TestGameManager._Ready()
## Development Notes
This scene serves as both a test environment and a reference implementation for integrating all EinSoftworks libraries. You can use this as a template for your own game scenes.
The scene demonstrates:
- Proper library initialization
- Event subscription/unsubscription patterns
- UI integration with game systems
- State management integration
- Input handling best practices