Skip to main content

On Sale: GamesAssetsToolsTabletopComics
Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines
(5 edits) (+1)

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.

(3 edits)

Important aside: Reflecting on playtesting so far, there’s a glaring problem in that there’s no penalty for dying. A lot of people view lives as outdated, but not having a hard reset point means that the short length of this game will be glaring, since players would just brute force the game.

Thus, the working solution for now is a credit system. Copypasted from my code comments: (This also means I’m implementing a score system)

This works as a happy medium between the two; players that endlessly die are punished, but not barred from continuing play, just the final level (think something like how Touhou manages continues).

Besides solving the player-punishment problem, this allows me to introduce a “speed up” ability that I was originally planning on as a stage gimmick, except as a dedicated unlockable mechanic to both reward riskier play and make repeated playthroughs quicker (plus if they mastered the later levels, they can just p***take the earlier ones, since credits don’t dip into the negatives).

Most importantly, in order to mitigate scope creep and make scaling credit spending feasible, this decision gives me a definitive stage quantity. I can now roadmap updates based on some definitive theme/goal (similar to how this one is the “stage 1 playable” goal, next one can be the “UI feedback” update or similar). I have a rough roadmap for this planned, but I won’t dump it until the next post.

Unfortunately, I can’t fully implement this system yet until level transitions are finalized, but I can start doing things like adding in distance-based and boss-credits.

Note to self for later: 1 2 3 4 5 6 2 2 3 4 5 6 6 3 3 3 5 5 5