Holidays are a timesink.
Gave no craps about just plopping the boss in. Prototype sprites are prototypes.
Frontend update notes:
Enemies mostly have fixed collision. Player can pass through them, and they can pass through each other. Minor glitch with hitboxes "bumping" into a player, but I actually like it that way since I can add an effect to let the player know where they were hit.
Enemy corpse impact affects other enemies now - chain reactions possible.
"Jumping mall ninja" coded. Unlike the other one, this one actually has an attack.
First boss has primitive pattern - occasionally fires at the player (the exact time delay is determined by the distance check). Fires one during phase 1, three for phase 2, and four for phase 3. Phase 3 ("pitch") is impossible to access at the current health - functionality is added for potential rematch. Skips phase 2 in this gif because of a glitch (see below). At set intervals, she'll warp to one of three locations to shake things up a bit.
Behind the scenes updates:
First part of cleanup underway as the game's identity is forming.
Really doesn't seem like a lot, but the .vs folder autocreated is taking up 296 KB (303,328 bytes) (Disk:) 304 KB (311,296 bytes), and this was just cleaning up a lot of debug code that I'm finished with. I'll take the, what, 15% reduction. Small victories.
The other main thing here is that throwables and grabables are pretty stable, and an expansion of globals is letting me make a f#(\<ing hurtbox without causing all of my project to somehow break.
To-Do:
Left boundary - Player should have an arrow appear over them when they cross the left border, along with a countdown timer spawning. When that timer reaches zero, the player dies.
Timer revisions - This one is going to be a doozy. One of the most rudimentary classes I coded is called "lockTimer." It stores a token, and a comparison value to be checked against the Unity's deltaTimer. Deceptively simple. The problem is that it inherits from monobehavior. In other words, for every timer, I have a bunch of Update functions everywhere. In my player and wingfist classes combined, I have 11 of those things. A lot of my prior headaches also came from these timers also being somehow called before they had everything set (which beat the purpose of me deriving them from monobehavior in the first place). There's no reason why I can't have lockTimer instead keep an enumeration of possible values (with appropriate labels) to save update functions and better manage null references. For my player/wingfist, I can turn that 11 into 2! Probably will end up saving, like, 1fps after setting everything (some of the jitter comes from gifcam, but then again I did say 30fps was good enough so it's mostly my fault lol), and I'm still not going to be anal about optimizing performance yet, but this will probably save me a lot of headaches later. I spend a lot of time discussing this because this rewrite is where a bulk of my focus is going to be.
Repeat-strike glitch - Under certain circumstances, the thrown enemy does not disappear after hitting another. This makes it possible to kill bosses with a single attack. Fix this!
Cleanup part 2 - Remove defunct class types, and physically map out each function/prefab. Consider cutting single-use 1-line functions.
Increase thrown enemy speed - Too slow right now.
Fix swarm spawning to space enemies out - previously used the natural collision to shove everything around. Can't do that anymore.
Boss HP visibility, spawn, despawn, and transition - self-explanatory.
Glint - Add in an effect whenever an enemy/thrownenemy hits something to signal feedback to the player
Fix audio manager
Add in a first-draft sprite for both wingfists - I'm sick of looking at a white circle!
ENDGOAL:
Have level 1 in a playable state from start to finish.
Sidenote: I think I like this frontend/backend/todo/endgoal format. Probably going to stick to it in the future. Also, since this is starting to turn into a bit of a necroposting thread, I'll look into getting something more proper set up in the developer logs. I just want to actually have a game to devlog about first.