Procrastination
Or how I learned to stop being scared and embrace uncertaintyI’m not exactly into MMORPGs - in my eyes they are pretty repetitive, content-driven slogs. I like dabbling in World of Warcraft every now and then to chill out - it’s one of my favorite games to meditate to - but I consider MMOs more as experiences than games per se. The distinction is purely semantic. All that said, I like and appreciate Josh Hayes.
The social experiment
Josh Strife Hayes is a content creator focusing on MMORPGs of various kinds. His environment and choises lended him what I consider great wisdom for his age. He’s also a very grounded and patient individual, which I find worth noting considering his current occupation. One of his materials recently pulled my attention; it was a short essay outlining reasons for which there have been no new successful titles in the genre in many years. He was inclined to talk about it after the predictable fiasco of Ashes of Creation, a Kickstarter title that technically delivered a half-baked product for launch and promptly shut down, barely after a month - that was however enough to consider it a finished product, so legally they were in the clear to keep the money.
He went on to discuss the phenomenon of projects popping up on the Internet every now and then, almost always ending in a similar fashion, and yet still finding support of many people. According to Hayes, what people seek in those fundraising campaigns, and those games in general, and why they are so protective about them is the social experiences. Entering an established world, with its own hierarchies and conventions, and trying to make a name for yourself takes a lot more effort than showing up on day one and simply asserting yourself as a part of the in-group.
This resonated with me very strongly, because, you see, in that moment I realized that what drove me to begin and sustain the work on the game and the engine was a promise, or more of a dream, of a community built around them. A community that I’d organically become a part of from day zero. Even as I claim that I’m making a title for a very specific group of people (interested in old-school competitive team shooters), thus focusing on avoiding and potentially alienating others, those I do plan on engaging with, I explicitly want to engage with. At that point I also realized that I’ve been a massive fool for starting work on a new engine, because nobody really cares about that stuff - it’s not the badge of honour I thought and still somewhat feel it is.
Taking responsibility
There’s another side to this medal. Listening to a lot of episodes of the Wookash Podcast imbued me a sense of what it is like to be working on games. Different guests, from different environments, share very unique perspectives on the process there. The scope of work on my dream title became a little bit clearer to me with time. This helped me make an honest realization that I’ve been literally procrastinating on starting work directly related to Hostile Perimeter, primarily because I know jack shit about making games and I’m worried I will blow it. All these tech quests, demos, side-games I was planning to make - all this was to prepare myself for the real challenge, to hit the ground running, so to speak.
Let me be real for a moment, all this fluff is boring. Spacewar has a bunch of technical design issues that I don’t really know how to iron out or care about that much (the primary one being that the gameplay in the original made sense when there was only one screen involved, with one possible aspect ratio, but the whole concept, including ‘wrapping’ around the edges of the battlefield, breaks down when you allow for players to run the game at different resolutions). I think I’d rather start on the hard parts of Hosper already and do things that interest me for a while. I’m going to shelve side projects for a while, until I get a solid understanding of what I actually want to achieve with Hosper and how much do I have to learn in order to finish it. Even for as simple of a game as Spacewar would be, I can already see there is a lot of work involved in that; Hosper is multiple orders of magnitude more complicated and requires proportionally more effort. But, at the end of the day, it is what interests me. I’m not a game developer or a game designer. I don’t want to be one, either. I just want to make this one good game; let’s focus on that.
Yapping aside, some work has indeed been done since the last update.
Progress report
In no particular order:
- Networking: fakelag and fakeloss, client-side prediction, a replicated game event bus, real-time clock adjustment based on lag, support for specifying the update rate, sending client info on connect, cvar replication, lots of refactoring.
- Rendering: forward+, light clustering, point lights, frustum culling, light culling, borderless fullscreen support.
- Journaling - recording of engine events, deterministic playback.
- Physics: separation of collision detection and resolution, collision/resolution layers, constraint resolution.
- Bot support.
- UI: eliminated DearImGui, implemented a custom UI layout engine based on the algorithm from Clay.
- Virtual file system - a mechanism to ‘mount’ directories and archives as overlays in a virtual hierarchy, facilitating modding and resource isolation.
- GPU text rendering (yeah, that one) - vector-based text rendering shaders based on work by Sebastian Lague.
Each of these points probably deserves a post, or at least a paragraph, of its own. However, I am not a content creator, nor am I a good teacher - this blog is mostly an outlet for my rambling whenever I feel the need to do that. I will instead focus on the game and pray to the heavens I won’t lose the plot along the way.
I recently started a .plan to report on smaller things more often: https://yakcyll.dev/.plan.html . I hope to remember to update it regularly.