AQUATIC SUBGAL by neontropics

YOU ARE AQUATIC SUBGAL
Arrow keys or WASD to move, Space to shoot
The gameplay was very much inspired/stolen from Solar Jetman, but the "Running out of Space" theme added a twist to it (you have to get to level 2 to see it)
GAMEPLAY TIPS: Go light on the gas.
The game was tested running in 16:9 and 16:10 resolutions - going squarer than that will likely cut off some UI.
Do let me know if you reach the end!
WEB BUILD HAS SLIGHTLY WONKY PERFORMANCE ON THE LAST LEVEL, I RECOMMEND DOWNLOADING DESKTOP VERSION IF YOU CAN!
CHANGELOG:
v1.01: 3 line fix to make explosion sounds only play when in view, makes later stages sound much nicer to play (WEB version defaults to this but has 1.00 available as well)
v1.00: Initial Compo version
Tools used:
Engine: Unity
Graphics: PyxelEdit
Audio: bfxr, elektron octatrack, elektron digitone, audacity
Editor: VS Code
I looked at the code of some of my previous entries to do the Title/Ending screens and level loading.
Source code available at https://github.com/catigator/ld42 (it is uh not my best work)
Ratings
| Overall | 317th | 3.447⭐ | 21🧑⚖️ |
| Fun | 341th | 3.289⭐ | 21🧑⚖️ |
| Innovation | 477th | 2.974⭐ | 21🧑⚖️ |
| Theme | 477th | 3.289⭐ | 21🧑⚖️ |
| Graphics | 309th | 3.368⭐ | 21🧑⚖️ |
| Audio | 252th | 3.184⭐ | 21🧑⚖️ |
| Mood | 161th | 3.389⭐ | 20🧑⚖️ |
| Given | 5🗳️ | 6🗨️ |
when your ship is waaaaaay to fast and you just know your doomed x-D
but is there any reason not to shoot all the time? because at the beginning I barely shot and then I just kept the Spacebar pressed ^^
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<MenuController>();
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<int, TileEnum> ();
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!
@stames: main reason to not shoot would be when you want to aim precisely and might not hit correctly because of the interval between bullets. That said, yes mostly the best strategy is just to hold spacebar.
@ranjan: kamikaze mad rush to the finish is The Way of the Submariner.
@huvaakoodia: Thanks for the detailed response!! Glad you found it fun. Yeah especially the turret sound effect/explosion *really* should have just played when in view. It was a small 3 line fix - I've added it as an optional v1.01 now. Also especially the last level I just did not have time to place the tiles properly together so it looks a bit glitchy at times.
WebGL performance does seem sometimes bad on the last level - I've added a Linux build now as well.
re code:
1. Yeah this looks much better, I haven't messed with Singletons in Unity so should do this!
2. Hmm currently I need the '-1's in there because that's what you get from the Tiled map .csv when not specifying a tile. The Dictionary format also allows me to skip some tiles (I didn't put anything in spot 5 in my spritesheet for example).
3. I should check this out more! I still have some needs to be able to query a matrix of the TileEnums when doing the Algae growing etc, and I would need it to spawn actual GameObjects etc,. so I didn't dare to jump into it during the compo, but I'll mess around with this before the next Ludum Dare.
2\.
You could use *0* to denote *nothing* in the csv, or use index+1 when querying the array.
Memory is cheap so having a few unused slots in the array is not going to sink your ship. This type of optimization is all about exchanging memory for runtime performance. In practice the read speed difference between dictionaries and arrays is very small, but it counts in principle (and in large amounts :wink:)
Have fun out there!
Try our game too, maybe you'll like it)