Tech Blog 0 - Introduction
·Hey! Time flies; it’s been almost a month since we last posted any updates. We are still figuring out the process and the silver bullet between doing things and sharing things about what we are doing.
This will be an attempt to start blog posts with tech direction and simple status updates. Purely software-related topics, tech art as well? May be.
For the past month, I have been tackling several technical topics that needed to be addressed, including tech debt. It seemed a visual prototype was done, and we were ready to move on to the vertical slice but mate mateee…
Two ideas stand behind the decision to focus on technical matters before moving on to the vertical slice:
- I’d like to avoid, as much as possible, having to rework something on an architectural level once we are too deep into it
- I’d like to iterate over gameplay changes as fast as possible. When there’s tech debt, it slows you down and, worse, adds even more tech debt. Accumulating tech debt is always an issue though.
I knew when I got my hands dirty that the next update I'd try would be a tech one, since, well… all I did was tech. But I thought, well, let me fix things first, figure out solutions, and then write a blog post about it. I dived too deep and ended up fixing several things before remembering to post any updates about it. Maybe sometimes it’s the right decision, maybe not. I’d like to reduce the update frequency even further though, and in retrospect, I'd say it’s possible.
Before diving into anything specific, here is the high level architectural overview of the game we are making in Unity:
These are the layers into which the Unity application is divided:
- Persistence: This layer stores all player-related progress data and game content.
- Engine: The game actually runs on this layer; all the logic and state changes happen independently of Unity, as if Unity doesn’t exist.
- Presentation: All the Unity-related code lives here.
Each layer has access to the previous ones. When changes occur at the Engine level, events are raised and the Presentation layer reacts to those changes. The Presentation layer can also issue Engine-level events, since it's where the user provides input. Showcasing via diagram how Character A attacking B looks like:
Below are concrete tech topics I extracted as separate blog posts to avoid having a huge post that even I don't want to re-read for grammar proof. All future tech blog posts will be less well-written (at least I try), and more tech gibberish, so proceed with caution: