Commands are now stored in a global queue, and a bot moves to the next command when finishing an earlier command. |
tl;dr: Last week I overhauled the bot-command system, I added wander behavior for idle bots, I added a dynamic speed-multiplier for specific behaviors, and I fixed a long list of small issues with power-line connections.
What happened last week?
Highlights
- Overhauled the bot-command system.
- Fixed many command-transition issues.
- Implemented missing commands.
- Refactored commands to use a global queue.
- Added a wander behavior for idle bots.
- Added support for applying a dynamic speed-multiplier for specific behaviors.
- Fixed a long list of small issues with the logic for power-line connection updates.
Laundry list
- Commands system:
- Fix station and bot recycling.
- Add support for entity-instance-specific command disablement.
- Add support for station and wire repair commands.
- Replace obsolete BotCommand enum with Commands enum.
- Disable bot-stop command when idle.
- Fix an issue where bot commands would fail if they had interrupted a previous command when they were triggered.
- Fix an issue with LevelControls not correctly switching-off disabled state.
- Fix an issue with run-wire overlay-buttons not always switching back-and-forth with cancel buttons correctly.
- Refactor command system to use a new global command-queue.
- Clean-up some bot-command-transition logic.
- Automatically select the closest idle bot when starting a new command.
- Fix bot idleness tracking.
- Consolidate _clear_command_state with _cancel_command and fix some edge-cases with how/when commands were being released.
- Fix an issue with navigation_state.triggered_by_player being reset before trying to access it.
- Wander-when-idle behavior:
- Fix a bug in WanderBehavior that could cause movement to always be rightward.
- Update player-navigation logic to not assume that PlayerNavigationBehavior will either always be enabled or disabled.
- Have bots wander around a bit when idle.
- Fix a long-standing issue with an intra-surface edge-calculation using an invalid stopping distance that wasn't accounting for max-speed limits.
- This was causing characters to sometimes suddenly teleport at the end of a movement.
- Prevent exclamation-mark from showing each time the wander behavior triggers new movement.
- Fix an issue with WanderBehavior not correctly detecting when the character is already at the edge of the movement boundary.
- Fix issues with behavior transitions when opening and closing the radial-menu and selecting the player for point-and-click navigation.
- Fix bots to correctly resume wandering after navigating to a target.
- Fix initial bot wander.
- Speed-multipliers for specific behaviors:
- Design a new proxy pattern to support using a modified version of MovementParameters, which greatly reduces the amount of logic I need to change to support non-global changes to speed-multipliers.
- Write and publish a deep-dive devlog post on a proxy pattern for Godot with read-only reflection.
- https://devlog.levi.dev/2022/05/an-easy-godot-proxy-pattern-with-read.html
- Update get_direct_property_map to work for more types of objects.
- Create a read-only proxy for MovementParameters.
- Use the MovementParameters proxy to apply a movement-speed multiplier depending on the current behavior.
- Create a read-only proxy for PlatformGraph.
- This in turn references the new character-instance-specific read-only MovementParameters proxy.
- Power-line connection logic:
- Fix an issue with wires being removed as soon as they're connected to the second station.
- Update station highlights when connected/disconnected to the command-center.
- Configure better wire-attachment positions per station.
- Update the command-center to use 4 separate wire-attachment positions.
- Don't select station when clicking on run-wire as the second station.
- Add a connection-status message to station info-panels.
- Fix ability to tap on the station, rather than its overlay button, in order to select the second station for running a wire.
- Fix station/bot/wire connection updates for the many possible edge-cases of adding and removing entities.
- Fix an issue with command-center-connection events not always firing.
- Fix an issue with not being able to select the command-center second when running a wire.
- Fix an issue with deselecting the first-selected station when selecting the second station for running a wire.
- Fix an issue with overlay buttons not resetting back to "run-wire" from "cancel" when resetting station selections.
- Update the info-panel when a station's is-connected-to-command-center status changes.
- Miscellaneous:
- Fix an issue with closing radial-menus when stations/bots are destroyed.
- Fix an issue with default stats values when loading.
- Rename enums to not be plural.
- Fix an issue with LevelControl disabled mode false-positives.
- Add support for getting the bounds of a ShapedLevelControl.
- Have bots walk to the side of the command-center when they are created.
- Fix health label z-index.
- Rename DefaultBehavior to StaticBehavior.
- Rename ChoreographerBehavior to NavigationOverrideBehavior.
- Move stop_on_surface logic from Bot to SurfacerCharacter.
- Fix solar-collector outlining.
- Show station highlights at the start.
- Update station art.
- Add a color-override parameter to ScaffolderPanelContainer.
- Fix support for disabling the welcome-panel.
- Remove obsolete bot-powered-down logic.
- Remove obsolete right-click-to-cancel logic.
- Remove ability to select bot for player-nav by releasing touch on the radial-menu center.
- Fix regressions with HUD panels capturing mouse events.
- Trigger HUD fade when opening the radial menu.
- Rename Command to CommandType.
- Rename BotCommand to Command.
- Review linear algebra and 3D math.
- https://gamemath.com/book/
- Create concept art for line-runner and barrier bots.
- Start sketching pixel-art for other character concepts.
What's next?
- I'm going to take some time this week to review C++ and 3D techniques, and to explore the Unreal game engine.
- I'll also probably create some new art for additional bot and station types.
🎉 Cheers!
Comments
Post a Comment