*Solar Jetman*, you can't go wrong with such a *rare* inspiration.
The growing walls mechanic is (hazarding a guess this being my first comment in LD42) often used, yet thematic. My initial idea was something along the same lines and as the saying goes: *you should toss the first idea!*
While lacking in originality the challenge is certainly enjoyable. The underwater "low gravity" environment is a fresh take on the tricky flying controls. Constantly rotating around to both aim the harpoons and thrust with the engine is a solid mix.
The first 4 levels pose little difficulty. The last one has a healthy balance of rushing and shooting. Try to take out all of the turrets and, *surprise*, the algae has already taken over the whole level!
My only technical complaints, unfortunately, concern the last level. The WebGL build, running on Linux here, starts to buckle under the pressure with so many object. A much more annoying issue comes with the turrets. Their shoot sound effect is played even when they are outside of the view. What a cacophony!
The music is ok; sound effects are low-quality, Sfxr-tat, never been a fan of them beeps. On the graphics front the tiles often times don't match that well, which is an eye-sore. Audio-visuals are secondary, especially in a jam, so not a big deal.
Solid work in all.
Overall: *Above average (3.5)* Fun: *Good (4.0)* Innovation: *Below average (2.5)* Theme: *Average (3.0)* Graphics: *Average (3.0)* Audio: *Below average (2.5)* Humor: *Above average (3.5) (I like the fish!)* Mood: *Above average (3.5)*
**PS.** Looking at the code (I know, not your best work) I spotted a few patterns worth improving: #### 1. Controllers should be singletons.
There is an alternative to this type of code everywhere:
mc = GameObject.Find("MenuController").GetComponent(); mc.DoStuff();
A singleton allows for direct access of its members via a public static reference to itself. In MenuController class:
public static MenuController singleton; void Awake() {singleton = this;}
Anywhere else:
MenuController.singleton.DoStuff();
#### 2. int to X database dictionaries
These dictionaries, which never change contents or size:
tileDictionary = new Dictionary (); tileDictionary [-1] = TileEnum.None; tileDictionary [0] = TileEnum.Ground; tileDictionary [1] = TileEnum.Ground; etc...
Should be arrays instead:
tileArray = new TileEnum[]; tileArray [0] = TileEnum.None; tileArray [1] = TileEnum.Ground; tileArray [2] = TileEnum.Ground; etc...
Faster and less verbose, enough said.
#### 3. Using objects as tiles, instead of the tilemap system
Unity has a [tilemap system](https://docs.unity3d.com/Manual/Tilemap.html) now-a-days. Should do wonders for the performance and it even supports animations (by the looks of it, haven't actually tried that bit myself.)
#### 4. I'm going to stop now...
Cheers!