This game was really enjoyable. I kind of wish the controls were a bit refactored; I don't think using the ability needs a dedicated button, you can just reuse the spacebar to trigger it since space doesn't do anything while they're moving about. I also think you should spend time making a mouse-only version of the control scheme as this would be a fun single-hand game.
I'd take another stab at the metrics/sizing of the game elements, I felt all the levels were too cramped and because of the solid walls there were only ever two or three places you could aim the cannon towards to do anything meaningful. Also stuff like spikes just take up too much space too, spikes are basically solid walls as well.
This brings me to my last point, spikes never did any damage on my characters, I wasn't really sure how the damage calculations worked either. I'd get rid of dodges entirely as well, it should feel more like pinball where you hit something and you do the thing, put the focus more on doing tight moves. I think moving elements in the level could add a layer of timing to the canon shooting, as it feels really static now. I do appreciate that the red line predictor is always 100% accurate though.
There's no real sense of danger, I didn't even feel like I had a limit on shots or that I was going to die so I could just spam shooting and win every time. The healer also never healed my dudes when she bumped into them, it also feels bad to push one of your dudes into spikes, even if the spikes don't do any damage. And the mushroom clouds didn't seem to do anything but they took up a lot of game space and the smoke obscured too many tiles behind them I think.
It's also unclear why, when I run out of balls, they all return to the queue. The level should be failed I think, starting over would let you try other strategies and make you focus more. It would also help you in designing levels to be more focused on what idea you want to convey to the player in each level.
It's a really fun and neat concept, DnD party of heros fighting with marbles, I think if you make the stats more readable and udnerstandable, and stackable/multiplicative, it'd be cool. I think the game essence is strategizing and getting all your marbles in the right spots then causing/seeing unexpected chain reactions. The lack of controlling the order of your characters is a detriment to this, as it makes every level feel the same, maybe try randomizing them. Character customization and upgrading between levels could be a lot of fun too, add build variety to each run. It could also be worth putting in a power meter for the canon so you can control more precisely where they land, like a golfing mini-game (again, adds more sense of timing and urgency). It might neat to have treasure in a cage at the top of the level, so you see what you win, maybe even sometimes character are caged and you get a new party member you get to upgrade. Think of your party as a bag of marbles, or a deck, and you only get to bring like 4 into each level. You could even "peak" at the level to decide who to bring and strategize.
EDIT: I got another idea reading your stamina idea. What if you get rid of the canon entirely and you flick each hero until their stamina runs out? So it's like a game of marbles with turns. Once all the stamina is out on all the heros, the enemies go. Kind of like Baldur's Gate/X-Com turn-based, but physics and more fun. So each character would be their own canon from their current position.