Skip to content
Programming Updates

icon picker
#1 The Dump (Coding ver.)

5/18/2023

“What’s new with you?”

mooood.PNG
A that I recently made that fits my mood these days

Whenever people ask me “so, what’s new with you?”, I usually end up circling around the topic of my game. And every time, I’d ramble about it, meandering through different aspects of the game until their eyes glazed over. After a few of those interactions, I realized I wanted a place that had my thoughts and progress in a more organized manner that people could opt in and out of, so here we are.
Every time I think about this project, a million thoughts cross each other, and it’s hard to keep things... confined. To start off, do I think this project will ever be completed? Surprisingly, I say the chances are decent. I see light at the end of the tunnel, but admittedly, it’s still distant. This is probably the closest I’ve been to finishing a project in the Hard Knock Life universe (working title), and I would love to see this through to the end. If this project pans out even a little, that would be encouraging enough to jump more confidently into the Hard Knock Life universe my sister and I have been dreaming about since our college days.
aithings.PNG
Let’s start with my least favorite aspect of the project: programming. I believe the critical reason for this project’s decent progress is my heavy usage of ChatGPT. My roommate was playing around with it one day and we took note of its potential to help me out with writing code. So I took full advantage and signed up for the monthly $20 subscription that included the more advanced 4.0 version that was apparently better suited for more complex and creative tasks. And boy, am I glad I did. Not just because it has been able to literally code things for me quickly and answer all my questions with near perfect accuracy, but also because not too long after, I think they (temporarily) halted subscriptions for the 4.0 version due to high demand.
I’ve provided a screenshot that shows a typical interaction I have with ChatGPT-4. Don’t judge the ineptitude of my Unity experience, thanks.
Obviously, I still need to wrangle with the code it generates to get it to do exactly what I want, but ChatGPT has generally delivered strong results for whatever I ask of it coding-wise. The main thing I value from ChatGPT is the amount of time I save with setting up foundations and providing answers promptly. Usually, I’d have to sift through numerous YouTube tutorials or online forums to get simple answers, and it could take several days of searching to find what I want.

So... What Do I Have Now?

I haven’t touched the art aspect of this game much at all, so I’m using a bunch of stand-in art for now. It looks... pretty terrible, so it’s pretty embarrassing to show people when they ask “oh, what do you have so far?”. But alas, I have to make do with a bunch of squares and mouse-drawn scribbles to test my mechanics on screen.
The main features that I’ve generally finished coding for now include the following:
Basic Movement
Basic Melee Combos
Dodging
Buffs and Debuffs
Blocking (Removed)
Finishers
For this update, I won’t go into in-depth detail about how I’ve implemented each of these since there’s just too much stuff. For future coding updates, I may do more of a deep dive on what I’m currently on.

Basic Movement

I don’t think there is much to be said about basic movement for now. The main character, named Love, is able to move in 8 directions, and the animations change according to the direction that is detected. For now, diagonal movement animations haven’t been implemented yet, but I firmly believe that it will not take up too much time since it mostly just involves adding the diagonal nodes to the blend tree that I’ve set up for movement in the animator.

Basic Melee Combo

The basic melee combo allows Love to swing her vessel three times, each swing moving her forward in the direction that she was facing at the time of the attack input. Each hit will provide a basic hitstun debuff against enemies that do not have a super armor buff (which would make them resistant to basic hitstun). The hits also contribute to gradually filling up a finisher resource bar that Love can deplete for her benefit (this will be explained in the Finisher section). The combo cannot be interrupted until the end of one of her swings.

Dodging

I’ve seen many action games allow for liberal usage of dodges. While I didn’t necessarily want to punish players for using the dodge mechanic frequently, I did feel that players leaned too much on dodging as a “get out of jail free” card. For my game, players should use dodges as a common tool to counter enemy attacks, but mindfully. With that in mind, I took cues from Lost Ark, where players will generally treasure their dodge for critical moments since the dodge cooldown was very long. I have no idea if this is will work well in this game.
In terms of how the dodge actually worked, I took inspiration from the recent God of War games. The player is able to perform a short dodge to move out of the way of incoming attacks. After a short time, she will be able to short dodge again. If she attempts to dodge again immediately after a sidestep, however, she will perform a longer dodge roll. In this case, the long dodge roll will set a long cooldown before she is able to sidestep or dodge again. In addition, the longer dodge roll will also deduct from player’s essence bar, which is effectively the “mana” resource in this game.

Buffs and Debuffs

Love and enemies have their own buff and debuff handlers, but they more or less act the same. There is a buff/debuff class that houses all of the properties of the buffs and debuffs. This included properties like the type, magnitude, duration, etc. These buffs or debuffs can be added to player or enemy “active buffs” or “active debuffs” lists. The buff and debuff handler will iterate through these lists and apply the effects then remove them from the list upon completion.

Blocking (Removed)

At some point, I wanted to provide the player with the ability to block attacks as an alternative to dodging. In Kingdom Hearts, it felt satisfying to be able to nail the timing of blocks to perfectly nullify an enemy’s combos. In a similar fashion, getting counters against foes in Super Smash games also felt satisfying.
I did code up the mechanics required for this. The way it worked was that it was the same input as the “dodge” input. The block would be executed if the player pressed the “block/dodge” input without ANY directional input. If the player provided directional input while inputting “block/dodge”, they’d perform a dodge in the inputted direction instead.
The implementation was more difficult than I realized. The problem was consistency. There were plenty of moments where I wanted to block, but I ended up dodging, and vice-versa. In the end, I figured that this mechanic wasn’t essential, and I could find other ways to bring that satisfying counter-play feeling. So after much thought, I pulled it from the game.

Finishers

This is vaguely inspired by Kingdom Hearts 2 mechanics, with the idea that finishers deal massive damage to their targets and are one of the few actions that can actually finish off a boss-type enemy. In Kingdom Hearts, these finishers were called automatically at the end of Sora’s combos. In my game, it works a little differently. As the player attacks targets, they will fill up a finisher gauge. The gauge is divided into parts, with each part representing a different “tier” of finishers. The higher the tier, the more powerful the resulting finisher. With this, the player has to make choices about whether they want to hoard their finisher to evolve into a more powerful finisher or cash in early and utilize the finisher they already have at their disposal.
I plan to have finishers also deal some debuffs to enemies, such as a simple knock back or maybe a stun.
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.