Rapidity
Only one day of delay? Unheard of!I had what turned out to be overly ambitious plans for this year. They all looked achievable, but I’ve underestimated how much actually uninteresting work would be involved and how big of an obstruction that would be. I’ve technically started tossing around the idea for Spacewar over two years ago already, but only recently has the game started taking some sort of a recognizable shape. At some point, with most of the engaging stuff done (mostly things related to networking), it dawned on me how much has yet to be done (UI, VFS, assets, effects, etc.). The realization of the sheer amount of work I have no expertise or outstanding interest in caused my heart to almost give up on it entirely. I feel sort of ashamed of myself because of that, at the same time hoping that this feeling will somehow get me to finish the project. However, before that, as is usual with ADHD, procrastination took hold of me and thus, my first “game” actually got done!
If you played Enemy territory circa 2003-2008, this picture probably looks faintly familiar. Raziel recommended Reflex, a small Win32 game by Interlore, as an aim training program way back when he was a self-proclaimed aiming expert in Enemy Territory, writing guides for all of the enthusiasts to start peering into what it took to become and remain consistent. The program was a regular guest on my desktop, at least when I was still committed to competing in FPSes, which coincidentally was also before aim trainers were a thing at all. Since then, at least two different machines passed through my desk and with them, my memory of Reflex faded. I remembered about it recently; not sure what prompted me to think of it at all, but I do remember fearing it was lost to time. The original server it was hosted on was gone and while some remarks about it popped up in a web search, the actual executable was nowhere to be found. It took me a good moment to remember that web.archive.org exists; it turned out that the developer’s website is indeed archived, along with the program itself! And when I say a good moment, I mean it - I managed to prototype the entirety of gameplay before realizing that what I’m doing is rather redundant.
As a side note, I reckon these kinds of doubts are probably something that a lot of aspiring game developers feel at one point or another. I personally struggle with understanding how something can be created without a purpose or a use in mind. Art can be created for the sake of expression itself, not even for anyone to be impressed by it, but this concept is also very foreign to me. As such, from time to time, I get infested with thoughts to the tune of “who even cares”, or “this exists already”, or “no way this can be better than something else”. Those doubts are project killers. I cannot with a straight face say that no project ought to be cancelled before the finish line; sometimes the passion just runs out. However, I do have to say, if said passion was enough to push someone through months or years of gruelling work, it is very likely worth it to remain cognizant of it at all times and to keep it stoked as long as possible. Another way to say this is probably: do not let your dreams shatter by measuring them against reality. They are worth pursuing regardless of the environment in which they dwell and develop, purely by the virtue of driving you towards bigger things.
The original Reflex already existed and when it became clear it is not “lost media”, my recreation of it lost its “obvious” purpose. At that point it still required some work that I found confusing, complicated and uninteresting, primarly related to UI (which resulted in the infamous three months of doing nothing at all while pondering what exactly is text). The forcefulness of my unwillingness to complete it eventually steered me towards just abandoning it for the time being, leaving it as an unfinished demo on the shelf, to be revisited at some later point in time. Spacewar work began, with integrating GNS and everything, and that was that. Until two weeks ago.
With networking and lighting work mostly done, at least for the time being (the engine can now support point lights!), I started marinating on what it will take to finish Spacewar. I really wanted to get something out the door already; Reflex looked much easier to polish up to a releasable state. After all, it is supposed to be a demo and keeping the scope narrow is not that big a challenge (I mean, what do you really need from a point-and-click?). Over the last two weeks, despite the Christmas break and some familial complications, I’ve managed to bang out a crude scene switching mechanism, a line input widget, fix up a ton of small bugs, find out that on my PC (and I mean PC specifically!) Vulkan straight up ignores descriptor limits in a pool and will let you allocate sets with arbitrary numbers of descriptors, and ultimately, create an itch.io website and upload the complete game, with Windows and Linux versions. The link is https://yakcyll.itch.io/reflex.
I will release the source code of it and the engine at some point too; there are some outstanding major issues that need closing, the attributions need to be compiled in full and I have to make sure the licensing makes sense. There’s some more work that could go into the game itself too: there are very likely unhandled edge cases with text input; the binary is way too large for how simple gameplay is; it still requires distributing the C++ standard library with it, despite asking meson to link it statically. Then again, all projects can become bottomless pits of effort if we let them. I have to keep my eyes on the real prize, so to speak. It fills my mind with a bit of horror and dread, because I’m entering those early stages where very vague ideas and vibes have to materialize a little, become a bit more specific, possible to verbalize and be scrutinized by another human being. I have a long list of TODOs for Spacewar and a rough design document for Hostile Perimiter, so at least with some semblance of guidance I should be able to keep moving forward.
Actually, I just want to get back to work.