The game is a lot of fun, even though it's really difficult.
I think my main gripe is just that – the enemies are too good. Sometimes you find yourself in such a position that you simply lose, usually when several of them spawn simultaneously and ambush you. And then the slightest touch, and it's over.
I probably wouldn't change the speed or AI of the enemies, but I would consider adding something to help the player evade ambushes. Like:
– dash (skip through enemies, with some cooldown)
– 3 lives, temporary invincibility
– powerups (e.g. "shield" which breaks when you're hit, dual colour…)
Probably the first suggestion is the most in-line with the spirit of the game.
As for other things:
– Sometimes the enemies stopped moving when several of them bumped into each other, even when I was a different colour. But it was temporary since other reinforcements came and made me move.
– When a game is played entirely on keyboard, it would be nice to be able to restart it with keyboard as well. This is a game you replay A LOT, and you have to grab the mouse every ten seconds just to click a button.
– If you use the bottom bar (Unity standard WebGL template), you need to add 38 to the project's resolution in the Newgrounds Project Settings, or the game ends up being slightly cut off.
– Thanks for adding the medals and scoreboards!
– And I certainly like the tactical element of deciding whether you want allies around or not or kill them to gain points.
And by the way, it's really cool that you open-sourced the game, too!
It's interesting to see how others code logic in their games, and I wanted to check what the enemies are told to do. Amazing how something can seem like a pretty clever AI when it's just "go directly to the player and jump randomly". :)
Also about the code, if I may offer advice:
– If you used Input.GetAxis (and Input.GetButtonDown for jumping), you'd instantly have arrow keys, WASD and gameplay support in your game.
Or use the new input system, although it's slightly more difficult to set up.
– I'm not sure why you're dealing with parsing Hex strings, you can have Color variables directly. And initialize them with hexadecimal numbers, too.
Color playerColour = new Color32(0xEA, 0xBA, 0x6B, 0xFF);