Add state indicators to quick action buttons to make it easier to identify when a button is pressed and the current state associated with the button (simulations is paused, benchmarking is active, etc...).
Also change the background change button into a drop down menu.
I believe that SwarmJS could run significantly faster. It seems much slower than Waggle at present, yet both are using Matter.js for the underlying physics.
The idea would be to simulate the deposit, sensing, and spread of pheromones. A centralized disembodied agent that could compute a scalar field to guide the swarm would also be interesting to explore.
Add a code editor that allows users to dynamically define and use their own controllers for the specified scene from the UI without the need to modify the code and redeploy.
Uncaught TypeError: Cannot read properties of undefined (reading 'width')
at Object.fieldDiffusion [as func] (fieldsDiffusion.js:8:67)
at Scene.update (index.js:253:21)
at _renderScene (index.js:100:15)
Add ability to define static options that can be changed by the user and take effect after reloading the scene.
These will provide more flexibility as they can support options that do not work dynamically such as changing the environment size or robot size.
Static properties set by the user will remain into effect until the scene is changed or the page is reloaded.
Static properties definitions can be passed along with other scene configurations.
UI elements are automatically created based on the dynamic properties definitions.
There is a button to toggle whether the simulation is rendered, but it would be preferable to put this functionality on a slider that controlled the number of updates in between renders. If the simulation were running faster than real-time (next issue) then the user could use this slider to accelerate through until results of interest were becoming visible.
Add ability to define dynamic options that can be changed by the user without reloading the scene (similar to the robot velocity slider).
Dynamic properties definitions can be passed along with other scene configurations.
UI elements are automatically created based on the dynamic properties definitions.
Make scene globally available so it can be accessed from the developer console.
Possibly, also add a debugging panel where the scene state can be accessed from within the app without the need to access the developer console.
Add option to use simulation to drive actual robots by connecting to an external server and receiving live robot positions, and sending updated robot goals back to server.
When this option is active, disable the internal physics engine as robot positions and interactions will be retrieved from the external server.