157 lines
4.9 KiB
Markdown
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
|