Posts

Showing posts from July, 2023

Synzza Star - A Practical Application of Dot Product

This is going to be a shorter post. I'll discuss a practical application of dot product seen in Synzza Star's battler AI. This certainly is not breaking new ground by any means, but you never know who will be helped by discussing these kinds of mathematical tricks.

Synzza Star - Automatic Battle Pause

Image
I discussed in a previous post how I planned to work with Unity at a TimeScale of 0. Let's discuss how my implementation went. When To Pause? A key question when implementing this feature is: when should the game pause to let the player input? In my system, this is handled through events, and the events are dependent on a battler's "status state". Status States Battlers in Synzza Star have a component that tracks a status state. The values and meaning for these states are: OK The battler is not involved with executing a skill in any way and is not under duress. SkillWindUp The battler is preparing to perform a skill. SkillEffect The battler is performing a skill. SkillWindDown The battler is winding down from using a skill. Staggered The battler is in a stunned state, either from being hit with a skill or because a skill they used was blocked by their target. Blocking Self-explanitory. A battler operating under normal conditions will have a skill it intends to use and...

Synzza Star - Designing for Portability

Image
My work on Synzza Star so far as been quite tightly coupled with Unity Engine (To those completely unfamiliar with the terms "tight coupling" and "loose coupling", I'll refer you to  this excellent plain-language write-up by Ben Koshy ). Perhaps that seems like an obvious statement, but in fact many of the action RPG elements I've been designing don't fundamentally need dependencies on the `UnityEngine` scripting API to work. With the project being in such an early state, I thought it pertinent to do some refactoring work now - to separate the Unity systems from the action RPG systems using abstractions - rather than wait until later when such uncoupling would be more cumbersome. The Goal The game project currently has families of systems which are linked in a way borne more out of short-term convenience than long-term planning. This kind of structure occurs commonly when creating a rapid prototype, where code is simply placed wherever it needs to be to...

Reflecting on Early Refinement

I'll begin today by addressing an issue which may or may not convey well in these heavily-curated blog posts I write: this project I'm working on is quite ambitious, especially considering the circumstances I find myself in. Right now, I am a solo developer on Synzza Star. At the moment I am only focused on the battle system, and even then from just a pure functionality standpoint (as should be somewhat obvious from the bare-bones programmer-art GIFs I've been making) - but even then, Synzza Star is not my only engagement, and the system I have endeavored to create is unique enough that I can't exactly leverage many existing designs without at some point modifying them to better suit my needs. To be sure, there are may smaller technical problems along the way which do already have answers, and I'm not unwise enough to ignore existing literature that can help me from that angle. Even so, the task of figuring out how to coordinate all of the potential technical aspect...