Add Movement library integration with comprehensive test environment: include Movement.csproj reference, create LibraryTest scene with player controller, multiple test areas (bunny hop platforms, surf ramps, vertical tower, speed corridor), advanced lighting setup, input mappings for WASD/gamepad movement controls, and DebugHUD integration
This commit is contained in:
156
Scenes/Testing/README.md
Normal file
156
Scenes/Testing/README.md
Normal file
@@ -0,0 +1,156 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user